参考:
- 不同版本ROS下的多机通信(一台主机、两台及以上从机):https://blog.youkuaiyun.com/qq_38620433/article/details/122083401
- ROS初识(五) ROS分布式多主机通信:https://blog.youkuaiyun.com/qq_40817117/article/details/112315806
网上查到的普遍流程是:
ifconfig
查自身ip地址- 在
/etc/hosts
中加入对方主机的ip地址与主机名 ping
测试通信是否正常- 在
~/.bashrc
中加入ROS主机名地址与自身名 - 测试
其中如果第4步中如果不使用主机名(export ROS_HOSTNAME=本设备命名
),而使用ip地址,其实是不用进行第2步在hosts
中修改的
下面是我的设置过程:
设置过程
-
两台电脑连入同一个局域网,分别查询自身ip地址
# ifconfig前,需要sudo apt install net-tools # 如未安装,可使用 ip add 命令/ ip a 命令 ifconfig
-
两台电脑分别在
~/.bashrc
进行设置sudo gedit ~/.bashrc
主机在
~/.bashrc
文件最后添加:export ROS_IP=http://本机IP地址:11311 export ROS_MASTER_URI=http://主机IP地址:11311 # 如 # export ROS_IP=http://192.168.2.13:11311 # export ROS_MASTER_URI=http://192.168.2.13:11311
从机在
~/.bashrc
文件最后添加:export ROS_IP=http://本机IP地址:11311 export ROS_MASTER_URI=http://主机IP地址:11311 # 如 # export ROS_IP=http://192.168.2.56:11311 # export ROS_MASTER_URI=http://192.168.2.13:11311
也就是:
①所有的ROS_IP
都是本机的IP,
②所有的ROS_MASTER_URI
都是主机的IP需要注意的是,主机地址是
http
,而不是https
!!! -
测试,主机运行
roscore
,主机、从机运行rostopic list
,如果收到ros话题说明连接正常 -
如果连接失败,可以考虑以下几个方法:
①ping 主机ip地址
,测试是否通信正常
②source ~/.bashrc
③ 检查拼写是否有误