关于节点发现
节点的发现(Discovery)是通过 ROS 2 底层的中间件自动完成的。可以总结如下:
- 当一个节点启动时,它会向同一 ROS 域(通过
ROS_DOMAIN_ID环境变量设置)中的其他节点广播自己的存在。其他节点会响应该广播并返回自身信息,从而建立适当的连接,使节点之间能够通信。 - 节点会周期性地广播自己的存在,以便在初始发现阶段之后,仍能与新发现的实体建立连接。
- 节点离线时会向其他节点广播其离线状态。
只有当节点之间具有兼容的 QoS(服务质量)设置时,才会建立连接。
以 talker-listener 演示为例:在一个终端中运行 C++ talker 节点,它会向某个话题(topic)发布消息;而在另一个终端中运行的 Python listener 节点会订阅同一话题上的消息。
你会看到这些节点自动发现彼此,并开始交换消息。