• ROS2——分布式通信(十二)


    ROS2机器人操作系统


    前言

    什么叫分布式?

    之前我们也讲过,在ROS系统中,机器人功能是由各种节点组成的,这些节点可能位于不同的计算机中,这种结构可以将原本资源消耗较多的任务,分配到不同的平台上,减轻计算压力,这就是分布式通信框架的典型应用之一。
    在这里插入图片描述
    机器人体积比较小,不适合放一个笔记本电脑在上边,于是采用树莓派作为控制器,主要实现传感器驱动和电机控制等功能,不过视觉处理和应用功能就不适合在树莓派里运行了,我们放在另外一个性能更强的笔记本电脑中,此外我们还需要在电脑上监控机器人的传感器信息,并且远程控制机器人运动。

    两个电脑之间的通信,看上去还有点复杂,毕竟相互传输的数据还挺多的,不过ROS系统都已经为我们设计好了,我们只需要在每一个电脑上配置好ROS环境,功能开发上完全不需要做任何变化,实现非常方便。

    一、树莓派ROS2的配置

    可以去古月的图文教程里看

    二、分布式通信

    1.分布式数据传输

    树莓派配置完成后,确保已经和你所使用的电脑连接到了同一个局域网络中。
    在这里插入图片描述
    首先要先将代码下载在树莓派里,并且编译完成。然后SSH远程登录树莓派
    在树莓派端,使用如下命令启动一个发布者节点:

    $ ros2 run demo_nodes_cpp talker  #树莓派端
    
    • 1

    在这里插入图片描述
    接下来在电脑端,使用如下命令启动一个订阅者节点:

    $ ros2 run demo_nodes_py listener #PC端
    
    • 1

    在这里插入图片描述
    只要两个计算机安装好ROS2,并且处于同一网络中,他们就可以实现之前讲过的话题、服务、动作等通信了,感觉就像在一个电脑里一样。

    不过这也会带来一个问题,如果一个网络中有很多个计算机,我们并不希望他们都可以互通互联,而是可以分组通信,小组之间是无法实现通信的。

    2.分布式网络分组

    ROS2提供了一个DOMAIN的机制,就类似分组一样,处于同一个DOMAIN中的计算机才能通信,我们可以在电脑和树莓派端的.bashrc中加入这样一句配置,即可将两者分配到一个小组中:

     export ROS_DOMAIN_ID=<your_domain_id>
    
    • 1

    在这里插入图片描述
    如果分配的ID不同,则两者无法实现通信。

    三、使用案例

    1.小海龟分布式控制

    我们可以在电脑端启动小海龟仿真器,树莓派上启动键盘控制节点,或者反过来也可以,依然可以流畅的控制小海龟运动:

    $ ros2 run turtlesim turtlesim_node      # PC端
    $ ros2 run turtlesim turtle_teleop_key   # 树莓派端
    
    • 1
    • 2

    在这里插入图片描述

    2.话题分布式通信

    在这里插入图片描述

    3.服务分布式通信

    在这里插入图片描述
    我们电脑端运行服务器程序,树莓派端运行客户端程序,还是可以顺利实现加法求和功能:

    $ ros2 run learning_service service_adder_server        # PC端
    $ ros2 run learning_service service_adder_client 2 3    # 树莓派端
    
    • 1
    • 2

    在这里插入图片描述

    总结

    在实际的机器人开发中,类似的方法会频繁用到,ROS为分布式网络的搭建提供了非常友好的支持,我们几乎不需要任何配置,代码也不需要做任何修改,只要使用ROS系统,一切都会变得如此轻松。

  • 相关阅读:
    目标检测 YOLOv3 基本思想
    2023年【陕西省安全员B证】最新解析及陕西省安全员B证操作证考试
    视频图像处理算法opencv在esp32及esp32s3上面的移植,也可以移植openmv
    Mask R-CNN训练自己的数据集
    可升级合约的原理-DelegateCall
    Spring篇---第五篇
    大数据技术——Flume简介&安装配置&使用案例
    grafana 使用指南 —— geomap 地图组件
    100万级连接,石墨文档WebSocket网关如何架构?
    “2024成都国际电子信息产业展览会”新西部、新重构、新机遇
  • 原文地址:https://blog.csdn.net/qq_51963216/article/details/125621243