Skip to content

三大通讯机制

ROS 最强大的地方在于节点间的高效通讯。主要有三种方式,分别适用于不同的场景。

  • 模式: 发布 / 订阅 (Publish / Subscribe) 模型。
  • 特点:
    • 单向: 发送者只管发,不关心谁在听;接收者只管听,不关心谁在发。
    • 多对多: 一个话题可以有多个发布者和多个订阅者。
    • 适用场景: 持续不断的数据流,如雷达数据、摄像头图像、里程计信息。
  • 关键命令:
    • rostopic list: 列出活跃的话题。
    • rostopic echo [话题名]: 打印话题的实时数据(调试神器)。
    • rostopic hz [话题名]: 查看数据发送频率。
  • 模式: 请求 / 响应 (Request / Response) 模型。
  • 特点:
    • 双向: 客户端发送请求,服务器处理并返回结果。
    • 阻塞: 客户端在等待结果时会暂停,直到收到回复。
    • 适用场景: 偶尔发生的逻辑判断,如“开关灯”、“设置参数”、“询问当前位置”。
  • 关键命令:
    • rosservice list: 列出活跃的服务。
    • rosservice call [服务名] [参数]: 手动调用服务。
  • 模式: 目标 / 反馈 / 结果 (Goal / Feedback / Result)
  • 特点: 类似服务,但带有进度反馈中断机制
  • 适用场景: 耗时较长的任务。例如:“导航到 A 点”。
    • 发送目标:去 A 点。
    • 反馈:当前走了 10%,20%…
    • 结果:到达目的地。
    • (中途可以发送 Cancel 指令取消任务)。