• ROS小车2_ROS多机通信


    1、背景

    • 本ROS小车上的机载电脑为树莓派4B,在上面运行图形界面、使用rviz等图形软件会很占用树莓派的资源
    • 在运动的小车上放一套键盘、鼠标、显示器,使用起来也不方便
    • 在PC上运行rviz等软件比树莓派流畅
    • 优点总结如下:
         远程输入控制信息
         远程查看效果
         节约ROS主控资源

    2、实现多机通信需要两步

    ① 多机通信需要所有的ROS主控都处于同一个网络下

    所有ROS主控都处于同一个网络的方法很简单,让他们都连同一个网络就好了,有如下两种网络连接方案

     网络提供者ROS主机ROS从机1ROS从机2
    方案1ROS主机发出WiFi连接WiFi连接WiFi
    方案2第三方路由器连接WiFi连接WiFi连接WiFi

    本ROS小车采用方案1,网络连接模型如下:

    ROS小车开机会发射WiFi信号,使用宿主机连接ROS小车发射的WiFi即可,虚拟机设置为桥接模式

    ② 在.bashrc文件里设置多机通信的环境

    ROS 主机的.bashrc文件:

    export  ROS_MASTER_URI=http://192.168.0.100:11311
    export  ROS_HOSTNAME=192.168.0.100
    
    • 1
    • 2

    ROS 从机的.bashrc文件:

    export  ROS_MASTER_URI=http://192.168.0.100:11311
    export  ROS_HOSTNAME=192.168.0.140
    
    • 1
    • 2

    注:
    ①ROS_MASTER_URI   ros主机的 IP 地址
    ②ROS_HOSTNAME    当前虚拟机的 IP 地址,需要查询本机IP地址后再来填写
    ③小车的IP已设置为静态IP
    .bashrc文件里是没有这两句的,需要手动在文件尾添加这两句

    3、注意事项

    1、ros从机程序的运行依赖于ros主机的rosmaster(多机通信的时候,同样只需要一个rosmaster,这个rosmaster必须是由ros主机提供的)
    2、ROS_MASTER_URI和ROS_HOSTNAME两个IP地址需要同网段,同网段是指IP地址的前三个数段相同
    3、不建议使用localhost,建议使用具体的IP地址(指export ROS_HOSTNAME=192.168.0.140这句不要写成export ROS_HOSTNAME=hn,理论上可行,但具体操作会出bug)
    4、从机的本机IP地址没设置对,依然可以访问到rosmaster,但不能输入控制信息
    5、如果是虚拟机,网络模式需要设置为桥接模式
    6、多机通信无法查看/订阅本地不存在的消息数据类型定义的话题

  • 相关阅读:
    CinemachineVirtualCamera实现自由相机
    盘点一个Python列表的基础题目
    自定义Dynamics 365实施和发布业务解决方案 - 8. Dynamics 365门户简介
    【23届秋招】0828-文远知行C++测试开发工程师笔试
    Vue3 - 异步组件(写法及详细示例)
    白天建筑师,晚上CG艺术家,他将建筑的华丽发挥极致
    通过 http-server 运行刚打包出来的脚手架项目
    【内网穿透】公网远程访问本地硬盘文件
    03黑马店评-添加商户缓存和商户类型的缓存到Redis
    Open3D(C++) 最小二乘拟合平面(直接求解法)
  • 原文地址:https://blog.csdn.net/weixin_42915934/article/details/125534523