主题 [17263]
主题是ROS 2提供的三种主要接口样式之一。主题应该用于连续的数据流,如传感器数据、机器人状态等。 [17264]
如前所述,ROS 2是一个强类型的匿名发布/订阅系统。让我们分解这句话并对其进行更详细的解释。 [17265]
发布/订阅 [17266]
发布/订阅系统是一种数据生产者(发布者)和数据消费者(订阅者)共存的系统。发布者和订阅者通过"主题"的概念知道如何联系彼此,主题是一个共同的名称,以便实体能够找到彼此。例如,当您创建一个发布者时,必须为它提供一个主题名称的字符串;订阅者也是如此。在任何特定主题上可能有零个或多个发布者和零个或多个订阅者。当任何一个发布者向主题发布数据时,系统中的所有订阅者都会接收到数据。这个系统也被称为"总线",因为它在某种程度上类似于电气工程中的设备总线。总线的概念是ROS 2成为一个强大而灵活的系统的一部分。发布者和订阅者可以根据需要添加或移除,这意味着调试和内省是系统的自然扩展。例如,如果您想要记录数据,可以使用``ros2 bag record``命令。在内部,``ros2 bag record``会创建一个新的订阅者来订阅您告诉它的任何主题,而不会中断数据流向系统的其他部分。 [17267]
匿名 [17268]
介绍中提到的另一个事实是ROS 2是"匿名"的。这意味着当订阅者获取一段数据时,通常不知道或不关心最初是哪个发布者发送的(尽管如果需要,可以找出)。这种架构的好处是可以随时更换发布者和订阅者,而不会影响系统的其余部分。 [17269]