发现(Discovery)¶
节点的发现通过 ROS 2 底层中间件自动完成,可概括如下:
当一个节点启动时,它会向网络中相同 ROS 域(通过 ROS_DOMAIN_ID 环境变量设置)的其他节点广播自己的存在。其他节点会响应此广播,并提供自身信息,以便建立适当的连接并实现通信。
节点会定期广播其存在,以便在初始发现阶段之后仍能与新加入的实体建立连接。
当节点离线时,也会向其他节点广播这一状态。
只有当两个节点的服务质量(Quality of Service, QoS)设置兼容时,才会建立连接。
以 talker-listener 示例为例:在一个终端中运行 C++ 的 talker 节点,它会在某个话题上发布消息;在另一个终端中运行 Python 的 listener 节点,它会订阅同一话题上的消息。
您会看到这些节点自动发现彼此,并开始交换消息。