ROS2 动作通信
2026/7/27...大约 1 分钟
ROS2 动作通信 (Action Communication)
动作通信是 ROS2 用于长期任务的通信方式:客户端发起目标、服务端持续反馈进度、客户端可中途取消、最终返回结果。
与话题/服务通信的对比
| 维度 | 话题 (Topic) | 服务 (Service) | 动作 (Action) |
|---|---|---|---|
| 模式 | 发布/订阅 | 请求/应答 | 目标 + 反馈 + 结果 |
| 取消 | 不支持 | 不支持 | 支持 |
| 进度反馈 | 无 | 无 | 持续 |
| 时长 | 持续 | 短(同步) | 长(异步) |
| 适用 | 数据流 | 一次性 RPC | 导航、规划等长任务 |
接口定义
.action文件:包含 Goal(目标)、Result(最终结果)、Feedback(中间反馈)三部分
典型应用
- 机器人导航("走到点 (5, 3)"——可中途取消、持续反馈"已走 60%")
- 机械臂轨迹执行
- 长时间机械装配任务
- 不适合毫秒级高频数据(用 Topic)
注意事项
- 比 Service 复杂:客户端、服务端、反馈通道三件套
- 适合"几秒到几分钟"的任务;超长任务需要断点续传机制
- 取消语义依赖服务端实现(有些动作不支持中途取消)
相关
- [[../concepts/话题通信.md]]
- [[../concepts/服务通信.md]]
- [[../entities/ROS2.md]]
