一、先看有哪些 Action(确认名字)
bash
运行
ros2 action list你会看到:
plaintext
/arm_controller/follow_joint_trajectory二、查看这个 Action 的消息结构(goal/feedback/result 长什么样)
bash
运行
ros2 action show /arm_controller/follow_joint_trajectory你会看到三大部分:
- Goal:客户端发过来的轨迹目标(关节名、点位、时间)
- Feedback:服务端实时返回的执行进度
- Result:最后返回的执行结果
这就是你问的 “action 中的内容”。
三、实时查看 Action 里的真实数据(最实用)
打开3 个终端,分别看:目标、反馈、结果。
1. 查看【客户端发过来的轨迹目标】
bash
运行
ros2 topic echo /arm_controller/follow_joint_trajectory/goal这里能看到:
- 哪些关节
- 每个关节要走到的角度
- 每个点的时间
2. 查看【实时执行反馈】(运动过程中一直在发)
bash
运行
ros2 topic echo /arm_controller/follow_joint_trajectory/feedback这里能看到:
- 当前关节位置
- 执行进度
- 还差多少完成
3. 查看【最终执行结果】
bash
运行
ros2 topic echo /arm_controller/follow_joint_trajectory/result四、一条命令直接监听整个 Action(最简单)
bash
运行
ros2 action monitor /arm_controller/follow_joint_trajectory它会自动打印:
- 收到 Goal
- 发送 Feedback
- 返回 Result非常适合调试。
五、你代码里的三部分对应关系(一眼看懂)
你写的:
cpp
运行
handle_goal → 对应 /.../goal 客户端发的轨迹 handle_cancel → 对应 /.../cancel handle_accepted → 开始执行,发 feedback你在终端看到的内容,就是你代码里收到和发送的数据。
总结
- 用
ros2 action show看消息结构 - 用
ros2 action monitor看实时数据流 - 用
topic echo分别看 goal/feedback/result - 你这个 Action 里的内容 =机械臂轨迹 + 执行进度 + 结果