ROS主从机配置

与伙伴之间的工作配合可能涉及到ROS功能之间的调试,这时采用主从机的方式比较方便。

配置虚拟机网络适配器

虚拟机网络设置为桥接模式

查看主机和从机IP

打开终端输入

1
ifconfig

如果报错请相应安装相关软件

设置IP地址

首先需要确定ROS多机系统中的所有计算机处于同一网络,同一网段,例如我的主机IP为192.168.21.228,从机IP为192.168.21.17
分别在两台计算机系统的/etc/hosts文件中加入对方的IP地址和对应的计算机名:

主机hosts设置

主机设置的是从机的IP和计算机名

1
sudo gedit /etc/hosts

从机hosts设置

从机设置的是主机的IP和计算机名
从机打开终端

1
sudo gedit /etc/hosts


这里因为我的主机和从机计算机名相同,所以在这里不要困惑

主机环境变量设置

这里两种方式可选择1、打开新终端设置环境变量2、在~/.bashrc文件末尾添加,两种方式都填入如下内容

1
2
3
export ROS_HOSTNAME=192.168.21.228 #主机IP地址  
export ROS_MASTER_URI=http://192.168.21.228:11311 #主机IP地址:11311
export ROS_IP=190.168.21.228 #主机IP地址

从机环境变量设置

这里同样有两种方式可选择1、打开新终端设置环境变量2、在~/.bashrc文件末尾添加,两种方式都填入如下内容

1
2
3
export ROS_HOSTNAME=192.168.21.17 #从机IP地址  
export ROS_MASTER_URI=http://192.168.21.228:11311 #主机IP地址:11311
export ROS_IP=190.168.21.228 #主机IP地址

下载包和解决报错

两台电脑都要下载以下两个包
第一个是下载同步包;第二个是下载ssh服务器

1
sudo apt-get install chrony

1
sudo apt-get install openssh-server

重启ssh-server
1
sudo /etc/init.d/ssh restart

检测通信

设置完成后,在两台电脑上分别使用ping命令测试网络是否联通。其中ping是用来检测本机与网络中另一主机之间网络是否联通的命令,如果两台主机之间ping不通,则表明这两台主机不能建立起连接。

主机ping从机

1
ping 192.168.21.17

从机ping主机

1
ping 192.168.21.228

两台电脑上都出现了ping接收到了数据,说明双向网络能正常联通,底层网络的通信就可以实现。
当然,如果碰到输入ping IP而一直无法响应时,说明没有ping通,检查一下该计算机对应的ip地址是否变动了

验证配置

配置完毕,接下来就要验证是否配置成功。但是运行前先要把之前的终端关掉,不然还是之前的配置
运行一个小海龟来验证一下,主机中输入:

1
roscore

1
rosrun turtlesim turtlesim_node


在从机器中用键盘进行控制,从机中运行:
1
rosrun turtlesim turtle_teleop_key

参考

http://wiki.ros.org/ROS/Tutorials/MultipleMachines
https://www.guyuehome.com/25106
https://blog.csdn.net/weixin_51244852/article/details/115738730
https://blog.csdn.net/GeForeverr/article/details/102465763
https://www.guyuehome.com/40852


ROS主从机配置
https://qiangsun89.github.io/2023/04/03/ROS主从机配置/
作者
Qiang Sun
发布于
2023年4月3日
许可协议