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
 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部