目标:本教程将展示如何使用改进的动态发现配置。
教程级别:高级
时间: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" >> ~/.bashrcWindows:
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
5484

被折叠的 条评论
为什么被折叠?



