跳转至

发现(Discovery)

节点的发现通过 ROS 2 底层中间件自动完成,可概括如下:

当一个节点启动时,它会向网络中相同 ROS 域(通过 ROS_DOMAIN_ID 环境变量设置)的其他节点广播自己的存在。其他节点会响应此广播,并提供自身信息,以便建立适当的连接并实现通信。

节点会定期广播其存在,以便在初始发现阶段之后仍能与新加入的实体建立连接。

当节点离线时,也会向其他节点广播这一状态。

只有当两个节点的服务质量(Quality of Service, QoS)设置兼容时,才会建立连接。

以 talker-listener 示例为例:在一个终端中运行 C++ 的 talker 节点,它会在某个话题上发布消息;在另一个终端中运行 Python 的 listener 节点,它会订阅同一话题上的消息。

您会看到这些节点自动发现彼此,并开始交换消息。