zoukankan      html  css  js  c++  java
  • ROS机器人系统学习——踩坑之路

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

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

    rostopic list

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

    下面开始搬砖了

    多机通讯

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

    ItemIPHostname
    PC 192.168.31.111 robot-dekstop
    树莓派 192.168.31.107 pi-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建立通讯了

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

     

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

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

    • 这个我不认识换个我认识的来,修改树莓派端的ROS_IP环境变量 export ROS_IP=192.168.31.107
      再次查看topic信息,
    • 现在就认识了,启动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

  • 相关阅读:
    《JSP2.0 技术手册》读书笔记六JSP语法与EL
    《Spring 2.0技术手册》读书笔记一Spring与eclipse的结合
    二元查找树转为双向链表
    《Jsp2.0技术手册》读书笔记补充web.xml详解及listener,filter,servlet加载顺序
    《JSP2.0技术手册》读书笔记三Filter
    《Spring2.0技术手册》读书笔记二理念
    Swift构造器链
    Swift函数_外部参数名,
    Swift数据类型_整型和浮点型
    Swift函数_默认参数
  • 原文地址:https://www.cnblogs.com/little-kwy/p/10776256.html
Copyright © 2011-2022 走看看