10.2 MoveIt架构
10.1.1 运动组(move_group)
move_group是MoveIt! 的核心节点, 可以综合其他独立的功能组件为用户提供ROS中的动作指令和服务, 如图10-2所示。
1)用户接口
MoveIt! 提供三种可供调用的接口:
C++: 使用move_group_interface包提供的API。
Python: 使用moveit_commander包提供的API。
GUI: 使用MoveIt! 的rviz插件。
2) ROS参数服务器
ROS的参数服务器需要为move_group提供三种信息:
URDF: 从ROS参数服务器中查找robot_description参数, 获取机器人模型的描述信息。
SRDF: 从ROS参数服务器中查找robot_description_semantic参数,
获取机器人模型的一些配置信息, 这些配置信息通过配置工具MoveIt!
Setup Assistant生成。Config: 机器人的其他配置信息, 例如关节限位、 运动学插件、 运
动规划插件等
(3) 机器人
move_group和机器人之间通过Topic和Action通信。 机器人传感器和机器人状态发布者将机器人的关节信息和坐标变换关系发送给move_group。
如果需要加入机器人外部感知能力, 还需要通过机器人3D传感器发布点云数据。
另外还有一个很重要的模块——机器人控制器, 通过Action的形式接收move_group的规划结果, 并且将执行情况反馈给move_group。
10.1.2 运动规划器(motion_planner)
10.2 如何使用MoveIt!
1) 组装: 创建机器人URDF模型。
2) 配置: 使用MoveIt! Setup Assistant工具生成配置文件。
3) 驱动: 添加机器人控制器(真实机器人) 或控制器插件(仿真 机器人) 。
4) 控制: 使用MoveIt! 控制机器人运动(算法仿真、 物理仿真) 。