您正在阅读开发版本的文档。 有关最新发布的版本,请查看 Iron。
改进的动态发现
目标:本教程将介绍如何使用改进的动态发现配置。
教程级别:高深
时间:15分钟
概述
默认情况下,ROS 2 将尝试自动查找同一子网上所有主机上的所有节点。 但是,以下选项可用于控制 ROS 2 发现范围。
配置参数
-
ROS_AUTOMATIC_DISCOVERY_RANGE
:控制 ROS 节点尝试发现彼此的距离。有效选项包括:
-
SUBNET
是默认值,对于基于 DDS 的中间件,这意味着它将发现可通过多播访问的任何节点。 -
LOCALHOST
表示节点将仅尝试发现同一台计算机上的其他节点。 -
OFF
意味着节点不会发现任何其他节点,即使在同一台计算机上也是如此。 -
SYSTEM_DEFAULT
表示“不更改任何发现设置”。
-
-
ROS_STATIC_PEERS
:是 ROS 应尝试发现节点的分号 () 分隔的地址列表。 这允许连接到特定计算机上的节点(只要其发现范围未设置为 )。;
OFF
本地和远程节点的这两个环境变量的组合将启用和控制 ROS 2 通信发现范围。 下表突出显示了可能组合的发现范围行为。
A 表示节点 A 和 B 不会发现彼此并进行通信。 A 表示节点 A 和 B 将相互发现并通信。X
O
同一主机 | 节点 B 设置 | |||||||
---|---|---|---|---|---|---|---|---|
无静态对等体 | 使用静态对等体 | |||||||
关闭 | 本地主机 | 子 | 关闭 | 本地主机 | 子 | |||
节点 A 设置 | 无静态对等体 | 关闭 |
|
|
|
|
|
|
本地主机 |
|
|
|
|
|
| ||
子 |
|
|
|
|
|
| ||
使用静态对等体 | 关闭 |
|
|
|
|
|
| |
本地主机 |
|
|
|
|
|
| ||
子 |
|
|
|
|
|
|
不同的主机 | 节点 B 设置 | |||||||
---|---|---|---|---|---|---|---|---|
无静态对等体 | 使用静态对等体 | |||||||
关闭 | 本地主机 | 子 | 关闭 | 本地主机 | 子 | |||
节点 A 设置 | 无静态对等体 | 关闭 |
|
|
|
|
|
|
本地主机 |
|
|
|
|
|
| ||
子 |
|
|
|
|
|
| ||
使用静态对等体 | 关闭 |
|
|
|
|
|
| |
本地主机 |
|
|
|
|
|
| ||
子 |
|
|
|
|
|
|
例子
例如,以下命令将限制 ROS 2 仅与本地主机和特定对等方的通信:
export ROS_AUTOMATIC_DISCOVERY_RANGE=LOCALHOST
export ROS_STATIC_PEERS=192.168.0.1;remote.com
要在 shell 会话之间维护此设置,可以将命令添加到 shell 启动脚本中:
echo "export ROS_AUTOMATIC_DISCOVERY_RANGE=LOCALHOST" >> ~/.bashrc
echo "export ROS_STATIC_PEERS=192.168.0.1;remote.com" >> ~/.bashrc