多台机器ros局域网通信,试过在ubuntu16.04的机器人和ubuntu20.04下安装不同版本ros通信,测试成功。
首先保证两台机器在同一个局域网内(可以相互ping通)
1.查看ip地址
ifconfig
2.ssh远程登录机器人计算机
$ ssh username@192.168.xx.xx
username为用户名, 192.168.xx.xx为ip地址,输入密码后就可登陆
3.设置环境变量ROS_MASTER_URI和ROS_IP
(1)打开远程连接的terminal,编辑配置文件
$ sudo vim ~/.bashrc
打开配置文件,配置相关参数
#设置ROSMaster为机器人IP
export ROS_MASTER_URI=http://192.168.xx.xx:11311
#设置本机局域网IP(也为机器人IP)
export ROS_IP=192.168.xx.xx
(2)打开本地计算机terminal(快捷键:ctrl+alt+t),编辑配置文件
$ sudo vim ~/.bashrc
将下面加入最后一行
#设置ROSMaster为机器人IP
export ROS_MASTER_URI=http://192.168.xx.xx:11311
#设置本机局域网IP(此处为桌面计算机IP)
export ROS_IP=192.168.xx.xx
4.修改hosts文件
若没有这一步,则在桌面计算机上使用rostopic list命令可以看见master发布的话题列表,但是无法接收话题消息数据。
(1) 首先分别在桌面计算机和机器人计算机的terminal中输入如下命令,查看二者的hostname:
$ hostname
这里,假设查询得到的计算机hostname名称分别为desktop-hostname和robot-hostname。
(2) 使用ssh远程登录ROS master所在计算机后,打开/etc/hosts文件:
$ sudo vim /etc/hosts
添加如下一行桌面计算机的IP和主机名:
192.168.xx.xx desktop-hostname
(3) 同样,在桌面计算机下,打开/etc/hosts文件:
$ sudo vim /etc/hosts
添加如下一行机器人计算机的IP和主机名:
192.168.1.110 robot-hostname
修改完hosts文件后,重启网路即可在桌面计算上读取机器人计算机发布的话题消息了,例如使用rostopic list:
$ rostopic list
参考:局域网下ROS多机通信的网络连接配置