ROS 多机协作
本胖虎想把一台电脑放在机器人上用于控制,一台电脑作为上位机进行数据处理。因而踩入了ROS Networking这个坑。写个博客记录一下,免得换个电脑不会配置。
一、首先查看两台电脑ip地址与主机名
ifconfig -a
输入上述指令,查看当前IP地址。这里我采用的是WiFi局域网络:

当前网络IP为192.168.1.106,下一步输入
hostname
得到电脑主机名

另一台电脑与上述操作相同,查看好 IP地址与主机名后记录下来,准备工作结束。
二、修改/etc/hosts
打开新的终端,终端内输入
sudo gedit /etc/hosts
打开文件后能看到许多信息,第一列为IP地址,第二列为主机名。接下来把之前查看的两台电脑的IP与主机名输入进去并保存。

两台电脑作相应修改后,两台电脑需输入以下指令重启网络。
sudo /etc/init.d/networking restart
三、安装chrony包
1.在两台电脑上打开终端并输入以下指令完成chrony的安装。
sudo apt-get install chrony
2.两台电脑上都需要安装ssh服务器,客户端Ubuntu自带。打开终端并输入:
sudo apt-get install openssh-server
3.安装完后,输入以下指令确认服务器是否启动。
ps -e|grep ssh
注:如果只有ssh-agent,那ssh-server还没有启动,需要/etc/init.d/ssh start,如果看到sshd那说明ssh-server已经启动了。
4.为了保证两台机器可以正常通信,相互ping一下。
首先是cqh电脑 ping kang电脑。打开终端输入
ssh desktop_hostname //这里desktop_hostname是cqh
ping laptop_hostname //这里laptop_hostname是kang
应该会得到以下内容

若没有任何数据或者拥塞说明网络并未连接成功,请检查网络连接,IP地址等网络信息。
反过来从kang ping cqh,保证网络通信正常。
四、为了保证之后节点通信正常,防止出现ROS_HOSTNAME/ROS_IP is set to only allow local connections等错误信息,在.bashrc中添加:
export ROS_IP=192.168.1.106 //本机IP
export ROS_HOSTNAME=$ROS_IP
export ROS_MASTER_URI=http://kang:11311 //另一台电脑ros master
注:上述 export ROS_MASTER_URI=http://kang:11311也可以不进行添加,但需要在新的终端中输入该句命令,之后运行节点或launch
五、终于可以开始测试了!!!
在一台电脑A上启动roscore,之后在新的终端内启动listener:
rosrun rospy_tutorials listener.py
另一台电脑B上启动talker节点,电脑B必须保证ROS_MASTER_URI正确,要不在.bashrc中添加语句,要不在命令行中输入export ROS_MASTER_URI=http://A电脑的名字或IP地址:11311。在同一终端内输入:
rosrun rospy_tutorials talker.py
启动talker,如果A电脑listener开始接受电脑B发布的消息了则通信正常。到这里两台电脑就可以相互收发节点消息啦!
本博客参考:
ROS 教程之 network:多台计算机之间网络通信(1)_知行合一-CSDN博客_ros网络通信
ROS多机通信与SSH远程登录_等你下课-CSDN博客
Two machines one ROS master connection rejected - ROS Answers: Open Source Q&A Forum
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
