2.ROS的多机通讯的配置

配置准备

为了方便我们观察配置结果,我们在树莓派和PC端安装turtlesim测试包

sudo apt-get install ros-kinetic-turtlesim

分别在树莓派和PC上输入下面指令,即可各自控制

roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key

想在PC上直接按键控制树莓派上的乌龟运动,要如何操作呢?
主机与树莓派信息如下:
| Item| IP | Hostname |
| ------------- |:-------------:| -----:|
| PC |192.168.31.111 | pibot-dekstop |
| 树莓派 | 192.168.31.107 | pibot |

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

  • 在树莓派上运行roscore和启动turtlesim_node
  • PC上想要与之通讯首先必须设置ROS_MASTER_URIexport ROS_MASTER_URI='http:192.168.31.107:11311'即可,在PC中断输入rostopic list即可看到当前的所有topic列表,说明PC已经可以与ROS_MASTER建立通讯了
    1240
  • 这时PC端启动rosrun turtlesim turtle_teleop_key无法控制乌龟运动,为什么呢?这里明明rostopic明明可以看到/turtle/cmd_vel。 键入rostopic info /turtle/cmd_vel 显示如下
    1240
  • 这就明显了,主机从master里面取到的node发送/订阅的topic信息,node地址为http://pibot:46395, PC根本不认识pibot为何物,自然无法发送数据。
  • 有2个方法:
    • 这个我不认识换个我认识的来,修改树莓派端的ROS_IP环境变量 export ROS_IP=192.168.31.107
      再次查看topic信息,现在就认识了,启动rosrun turtlesim turtle_teleop_key节点,发现仍然无法控制。问题是我认识你,可是你不认我啊,所有本地PC也需要export ROS_IP=192.168.31.111,现在就正常了
      1240
    • 这个不认识,现在认识下不就行了,PC端修改/etc/hosts 添加一个192.168.31.107 pibot-desktop,同时树莓派端一样修改/etc/hosts 添加 192.168.31.111 pibot

      多机通讯总结

      多机通讯只能有一个master存在,所有都设置ROS_MASTER_URI为http://MASTER_IP:11311, 各个终端要能相互通讯就必须设置自己的ROS_IP。

转载于:https://www.cnblogs.com/pibot/articles/8021716.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值