- ROS机器人项目开发11例(原书第2版)
- (印)拉姆库玛·甘地那坦 郎坦·约瑟夫
- 556字
- 2021-01-26 17:17:24
1.3.4 ROS中的通信
下面介绍ROS中两个节点如何使用ROS话题相互通信。图1.8展示了节点间通过话题进行通信的过程。
如图1.8所示,有两个节点分别名为talker和listener。talker节点将名为Hello World的字符串消息发布到名为/talker的话题中,而listener节点订阅此话题。整个过程包含了三个阶段,在图中分别标记为(1)、(2)和(3),让我们看看每个阶段发生了什么:
(1):在运行ROS中的任何节点之前,我们首先启动master。启动后,它将等待其他节点。当talker节点(发布者)开始运行时,它将连接到master,并与master交换其所要发布话题的详细信息,包括话题名称、消息类型和发布节点URI。master的URI是一个全局值,所有节点都可以连接到它。master通过列表维护与其连接的发布者。每当发布者的详细信息发生更改时,列表将自动更新。
(2):当我们启动listener节点(订阅者)时,它将连接到master并交换节点的详细信息,例如要订阅的话题、其消息类型和节点URI。与发布者类似,master也维护一个订阅者列表。
图1.8 ROS节点通过话题进行通信的过程
(3):每当出现针对同一话题的订阅者和发布者时,master将进行订阅者和发布者URI的交换,帮助两个节点建立连接和交换数据。订阅者和发布者建立连接后,就不需要master的角色了。数据并不流经master,而是直接在相互连接的节点间交换消息。
有关节点、名称空间和用法的更多信息,请访问http://wiki.ros.org/Nodes。
现在我们已经了解了ROS通信的基本原理,接下来介绍几个ROS客户端库。