导航

    蓝鲸ROS机器人论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 热门
    ROS交流群
    ROS Group
    产品服务
    Product Service
    开源代码库
    Github
    官网
    Official website
    技术交流
    Technological exchanges
    激光雷达
    LIDAR
    ROS教程
    ROS Tourials
    深度学习
    Deep Learning
    机器视觉
    Computer Vision

    如何不设置HOST通过ROS远程连接

    ROS教程
    远程通信 robotupstart ros教程
    1
    1
    2187
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • weijiz
      weijiz 最后由 weijiz 编辑

      在有些情况下我们想要连接远程的master节点是没办法设置hosts文件的。比如在Android上运行rosjava时。这样就导致我们能够发布消息到远程节点,但是却无法订阅远程消息。问题在于默认的ROS_MASTER_URI是http://computer-name:11311。而我们连接的时候是通过IP连接的,这样导致本地节点订阅的是http://xxx.xxx.xxx.xxx:11311,其中xxx.xxx.xxx.xxx是远程机器的IP。这两个不一致,导致无法订阅消息。

      解决方法是把远程的ROS_MASTER_URI也设置成IP的形式。这个可以通过设置ROS_IP变量实现。比如在launch文件内添加

      <env name="ROS_IP" value="xxx.xxx.xxx.xxx" />
      

      但是实际使用的时候远程节点IP可能并不是固定的。这样设置之后一旦IP发生变化,程序就没办法继续运行了。下面介绍一个更好的方法。使用robot_upstart软件包

      安装robot_upstart软件包

      sudo apt-get install ros-kinetic-robot-upstart
      

      安装自启动服务

      rosrun robot_upstart install --interface enp2s0 startup/launch/startup.launch
      

      需要注意的是这里的 --interface参数。这个参数指定网络设备,在程序启动的时候会自动获取这个网络设备的IP然后设置到ROS_IP环境变量。这样ROS_MASTER_URI就会和当前的IP一致。

      1 条回复 最后回复 回复 引用 0
      • 1 / 1
      • First post
        Last post
      Copyright © 2015-2023 BlueWhale community