1. MoveIt Servo 与 FollowJointTrajectoryControllerHandle 的交互机制解析
在机器人运动控制领域,MoveIt Servo 提供了一种实时伺服控制能力,而 FollowJointTrajectoryControllerHandle 则是 ROS 中用于执行轨迹跟踪的标准接口。两者的协同工作构成了机器人高精度运动控制的基础架构。
1.1 核心通信架构设计
MoveIt Servo 与 FollowJointTrajectoryControllerHandle 的通信采用 ROS Action 机制,这种设计结合了话题的异步特性和服务的请求-响应模式。具体通信流程包含三个关键组件:
-
Action Client(MoveIt Servo 侧):
- 位于 moveit_ros_control_interface 包中
- 通过 SimpleActionClient 模板类实现
- 默认超时设置为 5 秒(可配置)
-
Action Server(Controller Manager 侧):
- 由 ros_control 框架提供
- 实现于 FollowJointTrajectoryController 类
- 支持多线程回调处理
-
通信协议:
- 使用 control_msgs/FollowJointTrajectoryAction 消息类型
- 轨迹点采样率通常设置为 125Hz(8ms周期)
- 支持实时重规划和中止命令
关键提示:在实际部署时,建议将 action server 的命名空间配置为
/joint_trajectory_action,这是 ROS-Industrial 标准推荐的默认值。
1.2 消息数据结构详解
FollowJointTrajectoryActionGoal 消息包含以下核心字段:
yaml复制trajectory:
header:
seq: 1123 # 消息序列号
stamp: 1689321600 # ROS 时间戳
frame_id: "base_link"
joint_names
