前言
利用ROS的性能,能实现两台机器之间的网络通信,并且具有跨系统性(可以在不同的ros版本版本之间通信)
- 需要两台机器在同一个局域网内
- 这里默认已经装好ROS(可以为不同版本)
一、两台电脑通信前的准备工作
1、查看两台电脑各自的用户名和IP信息
在终端输入
who
能查看用户名,输入ifconfig
能查看IP信息
如:我这里的两台服务器的用户名和IP分别是
- cug_local,192.168.1.57
- cug_master,192.168.1.58
2、修改/etc文件夹下的hosts文件
修改的目的是将两台电脑的ip和用户名绑定,这样在ping对方用户名时,可以解析成功
(1)修改权限
1 | sudo chmod a+w /etc/hosts |
(2)在/etc/hosts最后两行添加代码
1 | sudo gedit /etc/hosts |
添加的第一行是本机的IP和用户名
添加的第二行是另一台机器的IP和用户名
(3)重启网络
1 | sudo /etc/init.d/networking restart |
如果无法重启网络,可以参考该网址
两台电脑都做上面三个步骤操作
二、两台电脑间通信测试
1、安装chrony
两台电脑上都安装chrony包,用于实现同步
1 | sudo apt-get install chrony |
2、安装ssh服务端
两台电脑上都安装ssh服务端(默认ubuntu系统自带ssh客户端)
1 | sudo apt-get install openssh-server |
服务端启动测试
1 | ps -e |grep ssh |
如果看到了sshd,说明ssh-server已经启动成功
3、ping测试
(1)cug_local机器ping 机器cug_master
1 | ssh cug_local |
如果出现如下信息,则通信正常
(2)反向测试,cug_master机器ping机器cug_local
1 | ssh cug_master |
三、~/.bashrc配置
说明:假设将cug_master机器当做主机master
(1)在cug_local机器的~/.bashrc文件中添加如下两行代码
1 | export ROS_HOSTNAME=cug_local |
添加完后,需要source一下
1 | source ~/.bashrc |
(2)在cug_master机器的~/.bashrc文件中添加如下两行代码
1 | export ROS_HOSTNAME=cug_master |
添加完后,需要source一下
1 | source ~/.bashrc |
四、ros通信
说明:假设将cug_master机器当做主机master
1、在cug_master机器上执行如下命令
(1)打开一个新终端,输入roscore
(2)打开另一个新终端,输入如下命令
1 | rosrun rospy_tutorials listener.py |
2、在cug_local机器上执行如下命令
打开一个新终端,输入如下命令
1 | rosrun rospy_tutorials talker.py |
3、结果显示
(1)cug_master机器上显示(rosrun的终端上)
(2)cug_local机器上显示(rosrun的终端上)
如上两图显示,则整个配置成功