Gazebo加载2个自定义控制器失败问题求助
ROS多控制器插件加载失败求助
我之前成功实现过单个控制器,现在要做两个可选控制器,但启动力控制器时一直报错,翻了很多相关问题没找到解决办法。反复核对宏定义和插件命名,没发现问题,怀疑是漏掉了某些配置。
启动时报错日志:
[ERROR] [1675151078.128963342, 4.702000000]: Could not load class 'my_position_controller/MyEffortPositionController': Failed to load library /home/mikel/twodofrobot/devel/lib//libmy_position_controller_lib.so. Make sure that you are calling the PLUGINLIB_EXPORT_CLASS macro in the library code, and that names are consistent between this macro and your XML. Error string: Could not load library (Poco exception = /home/mikel/twodofrobot/devel/lib//libmy_position_controller_lib.so: undefined symbol: _ZN22my_position_controller26MyEffortPositionController8stoppingERKN3ros4TimeE) [ERROR] [1675151078.129065115, 4.702000000]: Could not load controller 'joint_effort_position_controller' because controller type 'my_position_controller/MyEffortPositionController' does not exist. [ERROR] [1675151078.129110615, 4.702000000]: Use 'rosservice call controller_manager/list_controller_types' to get the available types
以下是相关配置代码:
控制器宏定义
PLUGINLIB_EXPORT_CLASS(my_position_controller::MyEffortPositionController,controller_interface::ControllerBase) PLUGINLIB_EXPORT_CLASS(my_position_controller::MyJointPositionController, controller_interface::ControllerBase)
package.xml导出配置
<export> <!-- Other tools can request additional information be placed here --> <controller_interface plugin="${prefix}/my_position_controller_plugin.xml"/> </export>
plugin.xml配置
<library path="lib/libmy_position_controller_lib"> <class name="my_position_controller/MyEffortPositionController" type="my_position_controller::MyEffortPositionController" base_class_type="controller_interface::ControllerBase"> <description> a PID simple controller with effort </description> </class> <class name="my_position_controller/MyJointPositionController" type="my_position_controller::MyJointPositionController" base_class_type="controller_interface::ControllerBase"> <description> a PID simple controller </description> </class> </library>
CMakeLists.txt配置
add_compile_options(-std=c++11) add_library(my_position_controller_lib src/my_effort_position_controller.cpp src/my_joint_position_controller.cpp) target_link_libraries(my_position_controller_lib ${catkin_LIBRARIES})
控制器配置文件
rrbot: joint_state_controller: type: joint_state_controller/JointStateController publish_rate: 50 joint_effort_position_controller: type: my_position_controller/MyEffortPositionController joint: - joint1 - joint2 kp: - 10 - 10 kd: - 1 - 1 ki: - 0.1 - 0.1
注意到日志里的库路径有双斜杠/home/mikel/twodofrobot/devel/lib//libmy_position_controller_lib.so,不确定是否影响。试过修改库名、命名空间和类名,都没用,求帮忙解决。
内容的提问来源于stack exchange,提问作者MIKEL LASS
相关产品推荐
相关产品推荐

