ROS分布式通讯

折腾了2个晚上,终于搞通了ros主从机通讯,说下需要注意的地方。

首先确保主机和从机在一个网段,互相之间能ping通,这个不用多说。

配置主机名和从机名

配置主机名和从机名犯了个低级错误,后果很严重,需特别留意,比如我的命令行是这样

redrose007@redrose007-desktop:~$

我就想当然的以为主机名为redrose007,之后一直用这个进行配置,虽然两个机器能ping通,但无法使用ROS互相通讯。

正确做法是通过hostname命令,查看主机名为redrose007-desktop,用这个进行配置才能保证通讯。

主机配置

/etc/hosts配置,配置后能ping通从机

192.168.3.110 redrose007-desktop           #从机
192.168.3.111 ros01-virtual-machine        #主机

ping redrose007-desktop                    #畅通

从机配置

/etc/hosts配置,配置后能ping通主机

192.168.3.110 redrose007-desktop           #从机
192.168.3.111 ros01-virtual-machine        #主机

ping ros01-virtual-machine                 #畅通

配置系统环境变量

主机配置

~/.bash配置

export ROS_HOSTNAME=ros01-virtual-machine
export ROS_MASTER_URI=http://192.168.3.111:11311
export ROS_IP=192.168.3.110

从机配置

~/.bash配置

export ROS_HOSTNAME=redrose007-desktop
export ROS_MASTER_URI=http://192.168.3.111:11311

关闭防火墙

ubuntu系统默认关闭防火墙,但还是确保两个机器防火墙都关闭了。

检查防火墙状态,如果是inactive表示防火墙关闭。

sudo ufw status verbose

若防火墙未关闭,使用下面的命令关闭。

sudo ufw disable

验证

配置后,主机启动talker程序,注意beginner_tutorials包需要使用github里的源码进行安装,具体安装步骤参考github工程下的readme。

rosrun beginner_tutorials talker

从机可以收到消息

redrose007@redrose007-desktop:~$ rostopic list
/chatter
/rosout
/rosout_agg
redrose007@redrose007-desktop:~$ rostopic echo /chatter
data: "Hi! Default Message! :\t20"

从机启动talker程序,主机也能收到消息,主从机配置完成。

猜你喜欢

转载自www.cnblogs.com/weiweiting/p/12578070.html