参考:NetworkSetup,EnvironmentVariables,MultipleMachines
在多机器运行ROS时,只有一个机器可以运行ros master
,该主机称为主机
,其他机器成为从机
。主机地址通过环境变量ROS_MASTER_URI
指定,配置网络设置时应当修改所有机器的ROS_MASTER_URI
为主机的地址。
不同主机上的节点发布的话题是通过主机名:端口号
来标识的,主机名是在本机器上运行hostname
获得的,因此为了不同主机上的节点可以顺利订阅话题,各个机器的主机名必须可以被所有机器解析为IP地址,因此主机名解析十分重要,通常有以下两种方法进行解析:
- 在
/etc/hosts
中添加所有机器的主机名到IP地址的映射
127.0.0.1 localhost
127.0.1.1 wcx-TM1701
192.168.0.15 wika
10.0.0.50 hrg
192.168.31.21 shimao-B365M-D2V
这样在本机器上其他机器的主机名就可以解析为IP地址
2. 当本机器的主机名不能被其他机器解析时,可使用环境变量ROS_IP
代替主机名对本机IP地址进行标识
3. 当本机器无法获得主机名时(如运行hostname
返回localhost
),可使用环境变量ROS_HOSTNAME
手动指定本机器的主机名(该主机名必须可以被其他机器解析)