moveit Exception while loading controller manager ‘simple‘: According to the loaded plugin descripti

文章讲述了在遇到ROSMoveIt!控制器管理器加载错误时,如何通过修改由MoveIt助手生成的launch文件中的XML配置解决。具体解决方案是移除`trajectory_execution.launch.xml`中包含文件标签的`pass_all_args=true`属性,从而成功启动控制器管理器。
[FATAL] [1683634108.766790367, 2.736000000]: Exception while loading controller manager 'simple': According to the loaded plugin descriptions the class simple with base class type moveit_controller_manager::MoveItControllerManager does not exist. Declared types are  moveit_fake_controller_manager/MoveItFakeControllerManager moveit_ros_control_interface::MoveItControllerManager moveit_ros_control_interface::MoveItMultiControllerManager moveit_simple_controller_manager/MoveItSimpleControllerManager

在csdn上对于这个错误的大多数解释都是重新安装moveit!
但是在我这不管用,找了老长时间才找到怎么解决:
这个定位到moveit助手生成的launch文件夹的一个文件:

/home/yzxie/桌面/Autobot_ws/src/it_move_config/launch/trajectory_execution.launch.xml

请添加图片描述最后一行:

  <include file="$(dirname)/$(arg moveit_controller_manager)_moveit_controller_manager.launch.xml" pass_all_args="true" />

把 pass_all_args=“true” 去掉,成功解决!

  <include file="$(dirname)/$(arg moveit_controller_manager)_moveit_controller_manager.launch.xml"  />
<think>嗯,用户遇到了MoveIt加载控制器管理器'multi_robot'时的异常问题,提示找不到对应的插件类。我需要先理解错误的原因。根据用户提供的引用信息,之前的类似错误是因为缺少相关的MoveIt插件包,比如没有安装ros-kinetic-moveit。用户现在的问题可能也是类似的,即系统没有正确安装或配置所需的控制器管理器插件。 首先,错误信息中提到控制器管理器插件'multi_robot'未找到,而声明的类型包括fake、ros_control接口和simple控制器管理器。这说明用户可能尝试使用一个自定义的或多机器人控制器管理器,但系统未正确识别。可能的原因包括插件未安装、包未正确编译或环境变量未设置。 根据引用3中的解决方案,安装对应的MoveIt包可能解决问题。但用户的问题可能涉及到多机器人场景,可能需要额外的插件支持。因此,我需要建议用户检查是否安装了相关的ROS包,如ros-kinetic-moveit-ros-control或ros-kinetic-moveit-simple-controller-manager。如果用户使用的是自定义控制器管理器,需要确保其正确编译并被ROS插件系统识别。 另外,环境变量的设置也很重要,比如检查ROS_PACKAGE_PATH是否包含相关包的路径。还有,确认插件的XML描述文件是否正确注册了控制器管理器类。如果用户是自己开发的插件,可能需要检查代码中的基类继承是否正确,以及导出插件的宏是否正确定义。 总结下来,解决步骤可能包括:安装缺失的ROS包、重新编译工作区、检查插件声明、验证环境变量。此外,如果是多机器人配置,可能需要特定的配置文件和启动参数,确保控制器名称与配置文件中的一致。如果用户按照这些步骤操作仍无法解决,可能需要进一步查看编译日志或调试插件加载过程。</think>### 解决控制器管理器'multi_robot'加载异常的步骤 #### 1. **确认插件包安装** 错误提示表明系统未找到名为`multi_robot`的控制器管理器插件。根据引用[^3],首先需确保已安装与ROS版本(如Kinetic)对应的MoveIt核心包: ```bash sudo apt-get install ros-kinetic-moveit ros-kinetic-moveit-ros-control ``` 若涉及多机器人场景,可能需要额外插件支持,例如`ros-kinetic-moveit-multi-robot-controller`(假设存在)。 #### 2. **验证插件注册** MoveIt通过插件描述文件(`.plugin.xml`)声明控制器管理器类型。检查`multi_robot`插件的XML文件中是否正确定义了基类`moveit_controller_manager::MoveItControllerManager`,例如: ```xml <class name="multi_robot/MoveItMultiRobotControllerManager" type="moveit_controller_manager::MoveItControllerManager" base_class_type="moveit_controller_manager::MoveItControllerManager"> <description>Multi-robot controller manager plugin</description> </class> ``` 若未定义,需修改代码并重新编译[^1][^2]。 #### 3. **环境变量配置** 确保ROS能正确加载插件路径。在`~/.bashrc`中添加: ```bash export ROS_PACKAGE_PATH=/path/to/your/workspace:$ROS_PACKAGE_PATH source /opt/ros/kinetic/setup.bash source /path/to/your/workspace/devel/setup.bash ``` 执行后重启终端或运行`source ~/.bashrc`[^3]。 #### 4. **检查MoveIt配置文件** 在`moveit_controllers.yaml`中确认控制器管理器名称与插件声明一致: ```yaml controller_manager_ns: multi_robot controller_manager_name: moveit_simple_controller_manager/MoveItSimpleControllerManager ``` 若名称不匹配,修改为`multi_robot/MoveItMultiRobotControllerManager`。 #### 5. **重新编译与测试** 清理并重新编译工作区: ```bash cd /path/to/your/workspace catkin clean catkin build ``` 完成后通过`roslaunch`启动测试节点,观察是否仍报错。 --- ###
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

anthony-36

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值