多台计算机之间的ROS通信
一、两台电脑通信前的准备工作
1.实现两台电脑的物理连接
(1)将两台电脑通过网线直连,也可通过路由器组成局域网,两台电脑连接同一个wifi也可以。
(2)将两台电脑的IP地址配置成一个网段。
2.查看两台电脑的ip信息和主机名hostname
(1)查看IP:使用命令 ifconfig,或者直接查看网络的连接信息。
(2)查看主机名hostname:使用命令 hostname。
二、修改配置文件
3.修改/etc文件夹下的hosts文件
修改hosts文件的目的是将两电脑的ip和主机名绑定,两台电脑之间通过hostname就能找到对方。没有这一步的时候,你直接去ping 对方主机名时,结果是无法解析对方主机名。
一般使用gksu进行修改:使用命令 gksu gedit /etc/hosts,打开并编辑hosts文件。
打开hosts后,你看到hosts文件内开头已经有了两行,我们从第三行开始插入你刚刚查到的两台电脑的ip地址和主机名hostname,形式如下:
your_ip your_hostname
中间用tab键隔开,不是空格。
例如:电脑A的hostname是userA,IP是192.168.6.1;电脑B的hostname是userB,IP是192.168.6.2,则写入的内容为:
userA 192.168.6.1
userB 192.168.6.2
修改保存完之后,可关闭hosts文件,并重启网络:
sudo /etc/init.d/networking restart
4.修改.bashrc文件
假设用电脑A作为两台电脑的主机。
电脑A:
export ROS_HOSTNAME=userA
export ROS_MASTER_URI=http://userB:11311
电脑B:
export ROS_HOSTNAME=userB
export ROS_MASTER_URI=http://userB:11311
三、通信测试
5.实现两台电脑间通信
(1)在两台电脑上装上chrony包,用于实现同步:
sudo apt-get install chrony
(2)在两台电脑上都进行ssh服务器的安装:
sudo apt-get install openssh-server
6.正式开始通信
(1)互ping,测试连通:
电脑A:ping 192.168.2.2或ping userB。
电脑B:ping 192.168.2.1或ping userA。
(2)实现电脑B操控电脑A上的小乌龟:
电脑A:运行roscore;运行rosrun turtlesim turtlesim_node,出现小乌龟的窗口。
电脑B:运行rosrun turtlesim turtle_teleop_key,启动小乌龟控制节点。
此时就可以通过电脑B的键盘的四个方向键控制电脑A的小乌龟移动了。