ROS通信机制一---话题通信
Posted loongembedded
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ROS通信机制一---话题通信相关的知识,希望对你有一定的参考价值。
文章目录
总述
ROS的核心——分布式通信机制
ROS是一个分布式框架,为用户提供多节点(进程)之间的通信服务,所有软件功能和工具都建立在这种分布式通信机制上,所以ROS的通信机制是最底层也是最核心的技术。
1. 话题通信模型
话题通信实现模型是比较复杂的,该模型如下图所示,该模型中涉及到三个角色:
●ROS Master (管理者)
●Talker (发布者)
●Listener (订阅者)
ROS Master 负责保管 Talker 和 Listener 注册的信息,并匹配话题相同的 Talker 与 Listener,帮助 Talker 与 Listener 建立连接,连接建立后,Talker 可以发布消息,且发布的消息会被 Listener 订阅。
(1) Talker注册
Talker启动,通过1234端口使用RPC向ROS Master注册发布者的信息,包含所发布消息的话题名;ROS Master会将节点的注册信息加入注册列表中。
(2) Listener注册
Listener启动,同样通过RPC向ROS Master注册订阅者的信息,包含需要订阅的话题名。
(3) ROS Master进行信息匹配
Master根据Listener的订阅信息从注册列表中进行查找,如果没有找到匹配的发布者,则等待发布者的加入:如果找到匹配的发布者信息,则通过RPC向Listener发送Talker的RPC地址信息。
(4) Listener发送连接请求
Listener接收到Master发回的Talker地址信息,尝试通过RPC向Talker发送连接请求,传输订阅的话题名、消息类型以及通信协议(TCP/UDP)
(5) Talker确认连接请求
Talker接收到Listener发送的连接请求后,继续通过RPC向Listener确认连接信息,其中包含自身的TCP地址信息。
(6) Listener尝试与Talker建立网络连接
Listener接收到确认信息后,使用TCP尝试与Talker建立网络连接。
(7) Talker向Listener发布数据
成功建立连接后,Talker开始向Listener发送话题消息数据。
ROS Master在节点建立连接的过程中起到了重要作用,但是并不参与节点之间最终的数据传输。
注意1:上述实现流程中,前五步使用的 RPC协议,最后两步使用的是 TCP 协议
注意2: Talker 与 Listener 的启动无先后顺序要求
注意3: Talker 与 Listener 都可以有多个
注意4: Talker 与 Listener 连接建立后,不再需要 ROS Master。也即,即便关闭ROS Master,Talker 与 Listern 照常通信。
2. 话题通信实现示例
示例需求:
编写发布订阅实现,要求发布方以1HZ(每秒1次)的频率发布文本消息,订阅方订阅消息并将消息内容打印输出。
2.1 发布方
以上是关于ROS通信机制一---话题通信的主要内容,如果未能解决你的问题,请参考以下文章