阅读量:0
目标:本教程将展示如何使用改进的动态发现配置。
教程级别:高级
时间:15 分钟
目录
概述
配置参数
示例
概述
默认情况下,ROS 2 将尝试自动查找同一子网上所有主机上的所有节点。但是,可以使用以下选项来控制 ROS 2 的发现范围。
配置参数
ROS_AUTOMATIC_DISCOVERY_RANGE
:控制 ROS 节点尝试相互发现的距离。有效选项是:
SUBNET
是默认值,对于基于 DDS 的中间件,它意味着它将发现任何通过多播可访问的节点。LOCALHOST
表示节点将只尝试发现同一台机器上的其他节点。OFF
表示该节点不会发现任何其他节点,即使在同一台机器上也是如此。SYSTEM_DEFAULT
意味着“不要更改任何发现设置”。
ROS_STATIC_PEERS
: 是一个由分号 (;
) 分隔的地址列表,ROS 应该尝试在这些地址上发现节点。这允许连接到特定机器上的节点(只要它们的发现范围未设置为OFF
)。
这两个环境变量的组合将启用和控制本地和远程节点的 ROS 2 通信发现范围。下表突出显示了可能组合的发现范围行为。
A X
表示节点 A 和 B 将不会相互发现和通信。A O
表示节点 A 和 B 将相互发现和通信。
节点 A 和 B 在同一主机上运行
相同主机 | 节点 B 设置 | |||||||
---|---|---|---|---|---|---|---|---|
没有静态对等体 | 与静态对等体 | |||||||
关 | 本地主机 | 子网 | 关 | 本地主机 | 子网 | |||
节点 A 设置 | 没有静态对等体 | 关 | X | X | X | X | X | X |
本地主机 | X | O | O | X | O | O | ||
子网 | X | O | O | X | O | O | ||
与静态对等体 | 关 | X | X | X | X | X | X | |
本地主机 | X | O | O | X | O | O | ||
子网 | X | O | O | X | O | O |
节点 A 和 B 在不同的主机上运行
不同的主机 | 节点 B 设置 | |||||||
---|---|---|---|---|---|---|---|---|
没有静态对等体 | 与静态对等体 | |||||||
关 | 本地主机 | 子网 | 关 | 本地主机 | 子网 | |||
节点 A 设置 | 没有静态对等体 | 关 | X | X | X | X | X | X |
本地主机 | X | X | X | X | O | O | ||
子网 | X | X | O | X | O | O | ||
与静态对等体 | 关 | X | X | X | X | X | X | |
本地主机 | X | O | O | X | O | O | ||
子网 | X | O | O | X | O | O |
示例
例如,以下命令将仅限制 ROS 2 与本地主机和特定对等方的通信:
Linux:
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
Windows:
set ROS_AUTOMATIC_DISCOVERY_RANGE=LOCALHOST set ROS_STATIC_PEERS=192.168.0.1;remote.com
如果你想在 shell 会话之间使其永久化,还需要运行:
setx ROS_AUTOMATIC_DISCOVERY_RANGE LOCALHOST setx ROS_STATIC_PEERS 192.168.0.1;remote.com