折腾了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程序,主机也能收到消息,主从机配置完成。
原文:https://www.cnblogs.com/weiweiting/p/12578070.html