• 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、多机通信无法查看/订阅本地不存在的消息数据类型定义的话题

  • 相关阅读:
    软件测试面试题:目前主要的测试用例设计方法是什么?
    OpenCV4-图像像素操作处理
    基本数据结构与算法实现JavaAPI【2】-----排序篇
    黑马Java热门面试题SpringBoot(七)
    【Python从入门到进阶】35、selenium基本语法学习
    AI读懂中国,文心方可雕龙
    【Python从入门到进阶】39、使用Selenium自动验证滑块登录
    【华为OD机试真题 JS】火星文计算
    C语言求 3*3 矩阵对角线之和
    [附源码]java毕业设计在线课程网站
  • 原文地址:https://blog.csdn.net/weixin_42915934/article/details/125534523