ROS1通信机制的核心是点对点的分布式通信,使用了基于TCP/IP的通信方式,可以实现模块间点对点的松耦连接。有基于异步通信的话题(topic)消息机制,也有基于服务(service)的同步通信。
先介绍几个特别的名词:
节点(node):节点是主要的计算执行过程,也可以理解为是一个可执行的文件。节点之间可以进行交互。
节点管理器(master):用于节点的名称注册和查找等。没有master,就没有节点、服务、消息之间的通信。
消息(message):节点通过消息完成彼此之间的沟通。消息包含一个节点发送到其他节点的消息数据。
上图就是三种常用的通信机制;
1.话题通信机制
通过话题(topic)进行消息路由不需要节点之间直接连接,也就是发布者(talker)和订阅者(listener)之间不需要知道彼此的是否存在,也就是说当消息发布后,甚至不能确定是否有节点订阅了这些消息。一个主题可以有多个订阅者也可以有多个发布者,这个特点意味着他可以是一个一对多和多对一的机制。但无法获得应答,也就是没有反馈。
ROS提供了一个命令行工具rostopic获取关于主题的相关消息:
- rostopic list 查看正在运行的主题列表
- rostopic i