概述
MoveIt!完成运动规划后的输出接口是一个命名为“FollowJointTrajectory”的 action,其中包含了一系列规划好的路径点轨迹,与使用 MoveIt!控制 Gazebo中的机械臂不同的是,虚拟机械臂有 gazebo 的 ros_control 插件自动帮我们获取了follow_joint_trajectory 的动作 action 信息,而现在到真实机器人,需要我们自己编程添加一个 server 订阅这个 action 并处理然后控制真实机器人。
机器人控制器 rm_control
机器人控制器 rm_control 功能包,通过添加一个 server 订阅 MoveIt!完成运动规划后输出的 action 信息,然后将 Moveit 规划的机械臂轨迹,通过三次样条插值细分,按照 20ms 的控制周期发给 rm_driver 节点。具体实现见源码。
机器人驱动功能包 rm_driver
rm_driver 功能包,实现与机械臂通过以太网口建立 socket 连接,订阅和发布机器人的各 topic 信息,将 rm_control 处理后发来的机械臂运行路径点轨迹通过 socket 发送至真实机械臂实现对真实机械臂的控制,同时接收机械臂返回的信息处理后通过 topic 发布至 move_group 完成 rviz 中机器人的同步。具体实现见源码。