🧩 1. MoveIt 本质是什么?
-
MoveIt 不是一个单独的 ROS 节点,而是一个完整的运动规划框架(motion planning framework)。
-
它由多个组件/节点/插件构成,如:
move_group
节点、OMPL
规划器、planning_scene_monitor
、RViz
插件等。
⚙️ 2. 控制 MoveIt 的常见方式有:
-
使用
RViz
图形界面(拖拽、设置目标) -
使用 MoveIt C++ / Python API(如
move_group_interface
) -
发布 ROS Action 或 Topic 控制(如
/execute_trajectory
) -
使用高级接口(如 MoveIt Task Constructor、MoveIt Servo)
📂 3. MoveIt 控制器配置相关文件:
3.1 controllers.yaml
-
定义 MoveIt 所能使用的控制器列表:控制器名称、类型(如
FollowJointTrajectory
)、所控制的 joints。
3.2 trajectory_execution.launch.xml
-
主要功能:加载控制器相关参数与插件。
-
它通过
<include>
包含实际控制器加载文件,例如:
ur5_moveit_controller_manager.launch.xml
3.3 ur5_moveit_controller_manager.launch.xml
-
负责:
-
加载
controllers.yaml
-
指定使用的控制器管理插件(如
moveit_simple_controller_manager
)
-
🧬 4. 控制器的匹配机制
-
controllers.yaml
中的控制器名必须与 SRDF 中的 关节组(group)名称一致。 -
控制器类型通常是
FollowJointTrajectory
(标准 ROS 控制接口)。 -
MoveIt 在执行轨迹前,会将规划结果发送到配置的控制器的对应 Action Server(如
/arm_controller/follow_joint_trajectory
)。
🧠 5. SRDF 的作用(Semantic Robot Description Format)
-
描述机器人的运动学语义,如:
-
哪些 joint 组成一个 arm
-
哪些 link 是 end-effector
-
哪些 joint 是 passive
-
-
SRDF 和 URDF 搭配使用,构成机器人的完整语义模型。
🚀 6. move_group.launch
启动分析
-
启动了 MoveIt 主节点
move_group
-
加载了规划管道
ompl
-
启用了 trajectory_execution,并通过层层 include 最终加载了
controllers.yaml
-
成功启用控制器管理插件
MoveItSimpleControllerManager
✅ 7. 你的配置验证结论
你通过如下结构正确配置并加载了控制器:
plaintext
move_group.launch
└── trajectory_execution.launch.xml
└── ur5_moveit_controller_manager.launch.xml
├── ✅ 加载 controllers.yaml
└── ✅ 设置控制器插件
设置控制器插件
✔️ 完整地完成了 MoveIt 控制器配置加载的标准流程
✔️ 可以通过 rosparam get /move_group/controller_list
验证是否加载成功