【ROS2】为什么要使用ROS2?《ROS2系统特性介绍》

文章目录

  • 一、为什么要推出ROS2?
    • (一)ROS1的诞生
    • (二)ROS1存在的问题
      • (1)PR2特点
      • (2)ROS1存在问题
    • (三)ROS2设计思路
      • (1)ROS2针对场景
      • (2)设计思路
  • 二、ROS2系统特性
    • (一)系统架构
    • (二)通信架构

一、为什么要推出ROS2?

2010年,ROS1首次发布正式版本,其研发的初衷是为设计PR2(个人服务型机器人)共用的软件架构。但随着ROS1技术的普及,ROS1开始广泛融入各领域无人系统的研发,陆续暴露了系统的诸多问题。为了适应新时代机器人研发的需要,2022年5月,ROS开发者团队推出新版本ROS2。

(一)ROS1的诞生

2007年,斯坦福大学学生为开发PR2(个人服务型机器人)共用的软件架构,设计ROS的原型。2010年,Willow Garage公司推出ROS1的首个发行版。

(二)ROS1存在的问题

ROS1最早的设计目标:针对家庭服务机器人PR2,设计一款共用开发的软件架构。

(1)PR2特点

  • 体积大,算力充足:它搭载了工作站级别的计算平台和各种先进的通信设备,不用担忧算力不够,有足够的实力支持各种复杂的实时运算和处理;
  • 通讯可靠:由于是单兵作战,通信绝大部分都自己内部完成,那就可以用有线连接,保证了良好的网络连接,没有丢数据或者黑客入侵的风险;
  • 实验室产品,没有工程应用:这台机器人最终虽然小批量生产,但是由于高昂的成本和售价,也只能用于学术研究。
    【ROS2】为什么要使用ROS2?《ROS2系统特性介绍》_第1张图片

(2)ROS1存在问题

随着ROS1技术的普及,ROS1融入各领域无人系统的研发。原本仅针对PR2设计的软件架构,就出现诸多问题:

  • 资源需求大:需要在资源有限的嵌入式系统中运行;
  • 系统抗干扰差:要在有干扰的地方保证通信的可靠性;
  • 产品应用差:要做成产品走向市场,甚至用在自动驾驶汽车和航天机器人上。

(三)ROS2设计思路

(1)ROS2针对场景

  • 多机器人系统:ROS2为多机器人系统的应用提供了标准方法和通信机制。
  • 跨平台:机器人应用场景不同,使用的控制平台也会有很大差异,为了让所有机器人都可以运行ROS2,ROS2可以跨平台运行于Linux、Windows、MacOS、RTOS,甚至是没有任何系统的微控制器(MCU)上。
  • 实时性:机器人运动控制和很多行为策略要求机器人具备实时性,比如机器人要可靠得在100ms内发现前方的行人,或者稳定的在1ms周期内完成运动学、动力学的解算,ROS2为类似这样的实时性需求提供了基本保障。
  • 网络连接:无论在怎样的网络环境下,ROS2都可以尽量保障机器人大量数据的完整性和安全性,比如在wifi信号不好的时候数据也要尽力发送过去,在有黑客入侵风险的场景下要对数据进行加密解密。
  • 产品化:大量机器人已经走向我们的生活,未来还会越来越多,ROS2不仅可以用于机器人研发阶段,还可以直接搭载在产品中,走向消费市场,这对ROS2的稳定性、强壮性也提除了巨大挑战。
  • 项目管理:机器人开发是一个复杂的系统工程,设计、开发、调试、测试、部署等全流程的项目管理工具和机制,也会在ROS2中体现,更方便我们去开发一款机器人。

(2)设计思路

ROS开发团队从长远角度考虑,选择推翻ROS1的软件架构,设计全新的ROS2操作系统。对系统架构、软件代码、系统编译均做出全面升级。

  • 系统架构:借助DDS通信架构,实现系统分布式
  • 软件接口:ROS2结合C++和Python3的最新标准,重新设计API接口
  • 系统编译:对大工程和python工程,更加友好。
    【ROS2】为什么要使用ROS2?《ROS2系统特性介绍》_第2张图片

二、ROS2系统特性

(一)系统架构

【ROS2】为什么要使用ROS2?《ROS2系统特性介绍》_第3张图片

  • 进程管理:在ROS1中,需要开启中央节点管理器Master,统一管理所有节点。如果Master节点出现故障,将严重影响ROS系统功能。在ROS2中,系统引入节点自发现机制,可有效提高系统鲁棒性。
  • 进程内通信:进程内部进行通信,ROS1和ROS2均采用共享内存的方式。
  • 进程间通信:在ROS1中,进程间进行通信主要依赖于底层的TCP\UDP协议,但是在ROS2中,引入复杂的DDS系统。

(二)通信架构

【ROS2】为什么要使用ROS2?《ROS2系统特性介绍》_第4张图片

ROS1是基于TCP/UDP通信系统,具有高延迟、丢数据、无法加密等特点。而ROS2在通信层面使用DDS通信协议。
DDS是物联网中一种通信协议,具有多个版本,DDS是一个国际标准,能够实现该标准的软件系统并不是唯一的。多个厂家可以提供的DDS系统,比如OpenSplice、FastRTPS等,每一家的性能不同,适用的场景也不同。
每一个厂家的软件接口是不同的,为了解决这个问题,ROS2设计了一个ROS Middleware,简称RMW,也就是指定一个标准的接口。比如如何发数据,如何收数据,数据的各种属性如何配置,都定义好了,如果厂家想要接入ROS社区,就得按照这个标准写一个适配的接口,把自家的DDS给移植过来,这样就把问题交给了最熟悉自家DDS的厂商。对于我们这些用户来讲,某一个DDS用的不爽,只要安装另一个,然后做一个简单的配置,程序一行的都不用改,轻松更换底层的通信系统。
对于开发者,在产品研发阶段,可以使用开源的DDS满足产品基本需求,在部署交付阶段,可以更换到更加稳定的DDS版本,以减小开发成本。
(三)核心概念
为了ROS开发者开发的延续性,ROS2保留了ROS1的基本概念。
【ROS2】为什么要使用ROS2?《ROS2系统特性介绍》_第5张图片

ROS2系统学习,可参考:古月居ROS2入门21讲

你可能感兴趣的:(ROS,人工智能,自动驾驶,ROS,ROS2)