AcmeROS-2-ROS2架构

在前面的分享中,我们讲了

在嵌入式设备中运行ROS2

AcmeIot-3-在嵌入式设备中运行ROS2

PX4中的ROS2桥接应用

PX4-16-ROS2Bridge

在AcmeGCS中支持ROS2

AcmeGCS-18-支持ROS2

我们在嵌入式设备、飞控与地面站软件中都应用ROS2作为通信框架,如图所示:

AcmeROS-2-ROS2架构_第1张图片

在之后的分享中我们将分享一些关于ROS2的内容,在深入了解ROS2的细节或者开始使用ROS2前,大致了解它的框架有助于对ROS2有一个更清晰的了解。

ROS从ROS1升级到ROS2对框架进行了彻底的重构,框架对比如图所示:

AcmeROS-2-ROS2架构_第2张图片

上图所示是ROS2与ROS1整体架构的对比:

  • ROS1主要构建于Linux系统之上,但是ROS2带来了改变,支持构建的系统包括Linux、windows、Mac、RTOS,甚至没有操作系统的裸机。

  • ROS1的通讯系统基于ROS团队自己开发的TCPROS/UDPROS,强依赖于master节点的处理,可以想像master一挂,整个系统会面临如何的窘境。但是从右边ROS2的架构中我们可以发现,ROS2的通讯系统是基于工业的通信标准DDS,ROS2内部提供了DDS的抽象层实现,可以使用多种DDS的实现,如Fast-DDS、Cyclone-DDS。

  • ROS中最重要的一个概念就是“节点”,基于发布/订阅模型的节点使用,可以让开发者并行开发低耦合的功能模块,并且便于进行二次复用。得益于DDS的加入,ROS2的发布/订阅模型也发生改变。

  • ROS1和ROS2中两个很重要的独立模块,那就是“Nodelet”和“Intra-process”。在ROS1的架构中Nodelet和TCPROS/UDPROS是并列的层次,当然也是负责通讯的,实际上Nodelet是为同一个进程中的多个节点提供一种更优化的数据传输方式。ROS2中也保留了这种数据传输方式,只不过换了一个名字,叫“Intra-process”,同样也是独立于DDS。

我们通过两张图大致了解一下ROS1和ROS2的通信机制:

ROS1的通信机制图:

AcmeROS-2-ROS2架构_第3张图片

我们不深入展开这张图的细节,可以发现ROS1对master节点的依赖。

ROS2的通信机制图:

AcmeROS-2-ROS2架构_第4张图片

在这个图中,有一些DDS的概念:

  • 参与者(Participant)

    在 DDS 中,每一个发布者或者订阅者都成为参与者,对应于一个使用 DDS 的用户,可以使用某种定义好的数据类型来 读/写 全局数据空间。

  • 发布者(Publisher)

    数据发布的执行者,支持多种数据类型的发布,可以与多个数据写入器(DataWriter)相联,发布一种或多种主题(Topic)的消息。

  • 订阅者(Subscriber)

    数据订阅的执行者,支持多种数据类型的订阅,可以与多个数据读取器(DataReader)相联,订阅一种或多种主题(Topic)的消息。

  • 数据写入器(DataWriter)

    上层应用向发布者更新数据的对象,每个数据写入器对应一个特定的Topic,类似于ROS 1中的一个消息发布者。

  • 数据读取器(DataReader)

    上层应用从订阅者读取数据的对象,每个数据读取器对应一个特定的Topic,类似于ROS 1中的一个消息订阅者。

  • 话题(Topic)

    和 ROS 1 中的概念类似,话题需要定义一个名称和一种数据结构,但 ROS 2 中的每个话题都是一个实例,可以存储该话题中的历史消息数据。

  • 质量服务原则(Quality of Service)

    简称 QoS Policy,这是 ROS 2 中新增的、也是非常重要的一个概念,控制各方面与底层的通信机制,主要从时间限制、可靠性、持续性、历史记录这几个方面,满足用户针对不同场景的数据需求。

下图是ROS2的API框架:

AcmeROS-2-ROS2架构_第5张图片

通过这个框架图,我们可以发现在ROS2编程中常常接触的包的关系:

  • ROS2客户端库:rclcpp、rclpy、rcljava、rcl

  • ROS2 DDS抽象层:rmw

  • DDS层:Fast-DDS、Cyclone-DDS等

本文参考了ROS2的官方文档以及一些网友的blog,同学们也可以阅读一下。

ROS2官方文档:https://docs.ros.org/en/humble/index.html

网友的blog:https://blog.csdn.net/qq_28087491/article/details/119053810

往期分享:

Byaero-招贤纳士!

AcmeGCS-19-高空消防指控应用

AcmeGCS-17-飞行器模型与轨迹显示优化

这里会不定期更新一些我整理的无人机相关知识,如果对您有帮助,欢迎加关注转发分享。

你可能感兴趣的:(Uav,自动驾驶)