推荐学习教程:深蓝学院 机器人操作系统ROS理论与实践学习

在学习到第2讲ROS基础的分布式通信时,一直卡在这里,主机开启小海龟后,从机虽然可以通过

rostopic list

列出当前的所有topic列表,但是订阅不成功,后来经过一天的各种找资料,找到一篇博文(ROS多机的通讯配置:https://www.jianshu.com/p/69815d79d37f),终于找到问题所在,和ROS_IP的配置有关系,特此记录下!!!

下面开始搬砖了

多机通讯

想在PC上直接按键控制树莓派上的乌龟运动,要如何操作呢?
主机与树莓派信息如下:

PC192.168.31.111robot-dekstop
树莓派192.168.31.107pi-desktop

相互ip可以通,因为未添加hostname ip映射,相互无法通过hostname联系

1.在树莓派上运行roscore和启动turtlesim_node

2.PC上想要与之通讯首先必须设置ROS_MASTER_URI,export ROS_MASTER_URI='http:192.168.31.107:11311'即可,在PC中断输入rostopic
list即可看到当前的所有topic列表,说明PC已经可以与ROS_MASTER建立通讯了

ROS机器人系统学习——踩坑之路-LMLPHP

3.这时PC端启动rosrun turtlesim turtle_teleop_key无法控制乌龟运动,为什么呢?这里明明rostopic明明可以看到/turtle/cmd_vel。 键入rostopic info /turtle/cmd_vel 显示如下

ROS机器人系统学习——踩坑之路-LMLPHP

这就明显了,主机从master里面取到的node发送/订阅的topic信息,node地址为http://pi-desktop:46395, PC根本不认识pi-desktop为何物,自然无法发送数据。

4.如何修改?自然有2个方法:

  • 这个我不认识换个我认识的来,修改树莓派端的ROS_IP环境变量 export ROS_IP=192.168.31.107
    再次查看topic信息,

ROS机器人系统学习——踩坑之路-LMLPHP

  • 现在就认识了,启动rosrun turtlesim turtle_teleop_key节点,发现仍然无法控制。问题是我认识你,可是你不认我啊,所有本地PC也需要export ROS_IP=192.168.31.111,现在就正常了
  • 这个我不认识,我现在认识下不就行了,PC端修改/etc/hosts 添加一个192.168.31.107 pi-desktop,同时树莓派端一样修改/etc/hosts 添加 192.168.31.111 robot-desktop
05-28 01:30