ROS2放弃指南1:ros2入门

参考链接:古月居博客:ROS2探索总结(二) link

ROS2安装及与ROS1对比

  • ROS2安装
    • ROS2版本
  • 与ROS1对比
    • ROS1
    • ROS2新特性
    • ROS2的DDS
    • ROS1跟ROS2的联系

ROS2安装

ROS2版本

版本 发布时间 支持平台
Humble Hawksbill 2022.05 未知
Galactic Geochelone 2021.05 ubuntu20.04;win10(vs2019)
Foxy Fitzroy 2020.06 ubuntu20.04;win10(vs2019);macos 10.14
Eloquent Elusor 2019.11 ubuntu18.04;win10(vs2019);macos 10.14
Dashing Diademata 2019.5 ubuntu18.04;win10(vs2019);macos 10.12
Crystal Clemmys 2018.12 ubuntu18.04;win10;macos 10.12
Bouncy Bolson 2018.7 ubuntu16.04;ubuntu18.04;win10(vs2017);macos 10.12
Ardent Apalone 2017.12 ubuntu16.04;win10;macos 10.12

我的电脑系统是18.04的,所以我选择安装 Eloquent

与ROS1对比

ROS1

ros1是一个通信机制+开发工具+应用功能+生态系统。
ROS1:没有构建多机器人系统的标准方法。无法跨平台跨系统使用,缺少实时性方面的设计,需要良好的网络环境保证数据的完整性,缺乏产品化,无法胜任完整产品周期下项目管理。
ROS1的通讯系统使用的是TCPROS和UDPROS,而ROS2使用的是DDS的通讯系统。

ROS2新特性

Zeroconf: 零配置网络服务规范, 用于自动生成可用IP地址的网络技术,不需要额外的手动配置和专属的配置服务器。
Protocol Buffers: Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面, 它不依赖于语言和平台并且可扩展性极强。
ZeroMQ (and the other MQs): 一个简单好用的传输层,像框架一样的一个socket library,他使得Socket编程更加简单、简洁和性能更高。
Redis: 一个高性能的key-value数据库。
**WebSockets:**HTML5开始提供的一种浏览器与服务器间进行全双工通讯的网络技术。
DDS (Data Distribution Service): 新一代分布式实时通信中间件技术规范,DDS采用发布/订阅体系架构,强调以数据为中心,提供丰富的QoS服务质量策略,能保障数据进行实时、高效、灵活地分发,可满足各种分布式实时通信应用需求。
ROS2放弃指南1:ros2入门_第1张图片

ROS2的DDS

ROS2放弃指南1:ros2入门_第2张图片

  1. 参与者(Domain Participant): 一个参与者Participant就是一个容器,对应于一个使用DDS的用户,任何DDS的用户都必须通过Participant来访问全局数据空间。
  2. 发布者(Publisher): 数据发布的执行者,支持多种数据类型的发布,可以与多个数据写入器(DataWriter)相联,发布一种或多种主题(Topic)的消息。
  3. 订阅者(Subscriber): 数据订阅的执行者,支持多种数据类型的订阅,可以与多个数据读取器(DataReader)相联,订阅一种或多种主题(Topic)的消息。
  4. 数据写入器(DataWriter): 应用向发布者更新数据的对象,每个数据写入器对应一个特定的Topic,类似于ROS1中的一个消息发布者。
  5. 数据读取器(DataReader): 应用从订阅者读取数据的对象,每个数据读取器对应一个特定的Topic,类似于ROS1中的一个消息订阅者。
  6. 主题(Topic): 这个和ROS1中的Topic概念一致,一个Topic包含一个名称和一种数据结构。
  7. QoS Policy: Quality of Service,质量服务原则,这个模块在ROS1中可从没见过,看名称就猜测应该是负责数据质量的。QoS是DDS中非常重要的一环,控制了各方面与底层的通讯机制,主要从时间限制、可靠性、持续性、历史记录几个方面,满足用户针对不同场景的数据应用需求,可以参考下边的图片和表格,看一下这几个原则可以哪些配置。

从上边DDS的几个重要概念中,我们就可以看到ROS2相比于ROS1,在以下方面有所提升:
实时性增强: 数据必须在deadline之前完成更新。
持续性增强: ROS1尽管存在数据队列的概念,但是还有很大的局限,订阅者无法接收到加入网络之前的数据;DDS可以为ROS提供数据历史的服务,就算新加入的节点,也可以获取发布的所有历史数据。
可靠性增强: 通过DDS配置可靠性原则,用户可以根据需求选择性能模式(BEST_EFFORT)或者稳定模式(RELIABLE)。
ROS2放弃指南1:ros2入门_第3张图片ros2使用的时候,会调用第二层ROS的相关库,同时也会使用第三层的ROS middleware interface抽象层,这个抽象层可以帮我们很好的兼容不同品牌的DDS,这样我们在编程的时候,无需关心DDS是那个厂家的,直接使用ROS提供的抽象接口就可以了。同时这些厂家的DDS,也会给我们提供可以直接调用的接口,从用户代码里可以直接调用DDS,跳过中间两层,这样效率更高,但是对DDS的熟悉程度要更高。
ROS2放弃指南1:ros2入门_第4张图片
ROS2放弃指南1:ros2入门_第5张图片ROS2放弃指南1:ros2入门_第6张图片DEADLINE:周期时间点
HISTORY:可以保证得到历史数据
RELIABILITY:可靠性。性能最强和可靠性最强:TCP和UDP类似
DURABILITY:可持续性。
ROS2放弃指南1:ros2入门_第7张图片ROS2放弃指南1:ros2入门_第8张图片ROS2放弃指南1:ros2入门_第9张图片

ROS1跟ROS2的联系

ROS2放弃指南1:ros2入门_第10张图片

你可能感兴趣的:(ROS2放弃指南,c++,人工智能,ros2)