Topic理解

Topic通讯概念

ROS要解决的问题

  • ros整个框架下,我们开发大量的节点
  • 节点间需要有数据的交互
  • 数据该如何交互,这个是ROS要解决的问题,也是核心问题。

一些思考

ROS整个工程启动后的一个结构现状如图:

多个Node节点都需要到ROS Master进行注册。

每个Node完成自己的功能逻辑。有的时候Node和Node间需要有数据的传递,这个时候ROS提供了一种数据通讯机制。

通讯原理图

ROS 在设计Node间通讯机制的时候,考虑的还是比较周详的,设计了Topic通讯机制,如下图:

Node间进行通讯,其中发送消息的一方,ROS将其定义为 Publisher(发布者) ,将接收消息的一方定义为 Subscriber(订阅者)

考虑到消息需要广泛传播,ROS没有将其设计为点对点的单一传递,而是由 Publisher 将信息发布到 Topic(主题) 中,想要获得消息的任何一方都可以到这个 Topic 中去取数据。

理解

我们可以将这种通讯方式用现实中的例子做类比。

例如: 广播站和收音机。

  • 广播站好比是 publisher
  • 收音机好比是 subscriber
  • 收听频段好比是 topic主题
  • 广播站不停的往外广播消息,不关心是否有谁去接收
  • 多个收音机可以去 同一个频段收听广播,收听到的内容是相同的