ROS节点、消息、服务、主题的关系

1.ROS计算图级

ROS 会创建一个连接到所有进程的网络。在系统中的任何节点都可以访问此网络,并通过该网络与其他节点交互,获取其他节点发布的信息,并将自身数据发布到网络上。
如图
在这一层级中最基本的概念包括节点、节点管理器、参数服务器、消息、服务、主题和消息记录包,这些概念都以不同的方式向计算图级提供数据:
节点(Node) 节点是主要的计算执行进程。如果你想要有一个可以与其他节点进行交互的进程,那么你需要创建一个节点,并将此节点连接到ROS 网络。
消息(Message) 节点通过消息完成彼此的沟通。消息包含一个节点发送到其他节点的数据信息。ROS 中包含很多种标准类型的消息,同时你也可以基于标准消息开发自定义类型的消息。
主题(Topic) 主题是由 ROS 网络对消息进行路由和消息管理的数据总线。每一条消息都要发布到相应的主题。当一个节点发送数据时,我们就说该节点正在向主题发布消息。节点可以通过订阅某个主题,接收来自其他节点的消息。一个节点可以订阅一个主题,而并不需要该节点同时发布该主题。这就保证了消息的发布者和订阅者之间相互解耦,完全无需知晓对方的存在。主题的名称必须是独一无二的,否则在同名主
题之间的消息路由就会发生错误。
服务(Service) 在发布主题时,正在发送的数据能够以多对多的方式交互。但当你需要从某个节点获得一个请求或应答时,就不能通过主题来实现了。在这种情况下,服务能够允许我们直接与某个节点进行交互。此外,服务必须有一个唯一的名称。当一个节点提供某个服务时,所有的节点都可以通过使用ROS 客户端库所编写的代码与它通信。

总之,ROS对所有的节点进行统一管理。节点与节点通过消息来通信。节点与节点之间使用服务之间直接通信,使用主题进行间接通信。服务是多对一,主题是多对多的关系。
使用rxgraph可以查看各个节点之间的关系。

参考文献
《ROS机器人程序设计》


本文来自 沧海飞帆 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/ktigerhero3/article/details/65936480?utm_source=copy

猜你喜欢

转载自blog.csdn.net/zhanshen112/article/details/82938977