改进的动态发现
目标:本教程将展示如何使用改进的动态发现配置。
教程级别:高级
时间:15 分钟
概述
默认情况下,ROS 2 将尝试自动查找同一子网上所有主机上的所有节点。 但是,可以使用以下选项来控制 ROS 2 发现范围。
配置参数
ROS_AUTOMATIC_DISCOVERY_RANGE
:控制 ROS 节点尝试发现彼此的距离。
有效选项包括:
SUBNET
是默认值,对于基于 DDS 的中间件,它表示它将发现可通过多播访问的任何节点。LOCALHOST
表示节点将仅尝试发现同一台机器上的其他节点。OFF
表示节点不会发现任何其他节点,即使在同一台机器上也是如此。SYSTEM_DEFAULT
表示“不更改任何发现设置”。ROS_STATIC_PEERS
:是分号 (;
) 分隔的地址列表,ROS 应尝试在这些地址上发现节点。
这允许连接到特定机器上的节点(只要它们的发现范围未设置为 OFF
)。
本地和远程节点的这两个环境变量的组合将启用和控制 ROS 2 通信发现范围。 下表重点介绍了可能组合的发现范围行为。
“X”表示节点 A 和 B 不会发现彼此并进行通信。 “O”表示节点 A 和 B 将发现彼此并进行通信。
Same host |
Node B setting |
|||||||
---|---|---|---|---|---|---|---|---|
No static peer |
With static peer |
|||||||
Off |
Localhost |
Subnet |
Off |
Localhost |
Subnet |
|||
Node A setting |
No static peer |
Off |
|
|
|
|
|
|
Localhost |
|
|
|
|
|
|
||
Subnet |
|
|
|
|
|
|
||
With static peer |
Off |
|
|
|
|
|
|
|
Localhost |
|
|
|
|
|
|
||
Subnet |
|
|
|
|
|
|
Different hosts |
Node B setting |
|||||||
---|---|---|---|---|---|---|---|---|
No static peer |
With static peer |
|||||||
Off |
Localhost |
Subnet |
Off |
Localhost |
Subnet |
|||
Node A setting |
No static peer |
Off |
|
|
|
|
|
|
Localhost |
|
|
|
|
|
|
||
Subnet |
|
|
|
|
|
|
||
With static peer |
Off |
|
|
|
|
|
|
|
Localhost |
|
|
|
|
|
|
||
Subnet |
|
|
|
|
|
|
示例
例如,以下命令将限制 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
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" >> ~/.bash_profile
echo "export ROS_STATIC_PEERS=192.168.0.1;remote.com" >> ~/.bash_profile
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