动作通信是 ROS2 用于长期任务的通信方式:客户端发起目标、服务端持续反馈进度、客户端可中途取消、最终返回结果。
与话题/服务通信的对比
| 维度 | 话题 (Topic) | 服务 (Service) | 动作 (Action) |
|---|---|---|---|
| 模式 | 发布/订阅 | 请求/应答 | 目标 + 反馈 + 结果 |
| 取消 | 不支持 | 不支持 | 支持 |
| 进度反馈 | 无 | 无 | 持续 |
| 时长 | 持续 | 短(同步) | 长(异步) |
| 适用 | 数据流 | 一次性 RPC | 导航、规划等长任务 |
2026/7/27...大约 1 分钟
动作通信是 ROS2 用于长期任务的通信方式:客户端发起目标、服务端持续反馈进度、客户端可中途取消、最终返回结果。
| 维度 | 话题 (Topic) | 服务 (Service) | 动作 (Action) |
|---|---|---|---|
| 模式 | 发布/订阅 | 请求/应答 | 目标 + 反馈 + 结果 |
| 取消 | 不支持 | 不支持 | 支持 |
| 进度反馈 | 无 | 无 | 持续 |
| 时长 | 持续 | 短(同步) | 长(异步) |
| 适用 | 数据流 | 一次性 RPC | 导航、规划等长任务 |
服务通信是 ROS2 中用于请求/应答模式的通信方式,客户端发送请求、服务端处理后返回响应,一对一同步通信。
| 维度 | 话题通信 (Topic) | 服务通信 (Service) |
|---|---|---|
| 模式 | 发布/订阅 | 请求/应答 |
| 方向 | 单向 | 双向 |
| 关系 | 多对多 | 一对一(一次调用一个服务端响应) |
| 同步 | 异步 | 同步(客户端阻塞等待响应) |
| 适用 | 持续数据流 | 快速查询、控制指令 |
ROS2 (Robot Operating System 2) 是一个用于机器人软件开发的开源中间件框架,基于 DDS(Data Distribution Service)实现分布式通信。
ROS2 基于 DDS(Data Distribution Service)实现分布式通信,同一局域网内的不同主机可以通过配置 ROS_DOMAIN_ID 实现节点发现和数据交互。
ROS_DOMAIN_ID 改变域分布式通信本质上是将话题通信扩展到网络层面,仍然遵循发布/订阅模式。
话题通信是 ROS2 中最常用的通信方式,采用发布/订阅(Publish-Subscribe)模式。
发布方(Publisher) --> 话题(Topic) --> 订阅方(Subscriber)
本目录对应 docs/learningNote/Ros2_Note/,以 ROS2 Jazzy + Ubuntu 24.04 为环境,记录机器人操作系统学习笔记。