ROS 2 用在汽车操作系统的可能性?

ROS(Robot Operating System)指的是机器人操作系统,是一套开源的软件框架和工具集,用来帮助开发人员建立机器人应用程序,它提供了硬件抽象、设备驱动、函数库、可视化工具、消息传递和软件包管理等诸多功能。

image

ROS 系统是起源于 2007 年斯坦福大学人工智能实验室的STAIR 项目与机器人技术公司 Willow Garage 的个人机器人项目(Personal Robots Program)之间的合作,2008 年之后就由 Willow Garage 来进行推。ROS 项目的初衷是为了给科研机器人Willow Garage PR2 提供一个开发环境和相应的工具。为了让这套软件在更多的机器人上运行,ROS 为机器人开发提供了一套相对完善的中间层、工具、软件乃至通用的接口和标准,机器人工业领域的开发者因此能快速开发系统原型并进行测试和验证。

可以说,ROS 1 几乎不可能用在汽车上,但是 ROS 2 就不一样了。

ROS 2 对 ROS 1 的部分缺陷实现了改进和提升,产品环境适用度更广。ROS 推出以后被大量地应用于工业领域,包括科研机器人、工业机器人、轮式机器人、自动驾驶汽车乃至航天无人驾驶设备,其原来的功能设计已经不能满足海量应用对于某些性能(如实时性、安全性、嵌入式移植等)的需求,ROS 2 即在这样的背景下被设计和开发。ROS2 与 ROS1 的主要区别包括:

  1. ROS 1 主要构建于 Linux 系统之上,主要支持 Ubuntu;ROS 2 采用全新的架构,底层基于DDS(Data Distribution Service,是一种专门为实时系统设计的数据分发/订阅标准)通信机制,支持实时性、嵌入式、分布式、多操作系统,ROS 2 支持的系统包括 Linux、windows、Mac、RTOS,甚至是单片机等没有操作系统的裸机。

  2. ROS 1 的通讯系统基于 TCPROS/UDPROS,强依赖于 master 节点的处理;ROS 2 的通讯系统是基于 DDS,取消了 master,同时在内部提供了 DDS 的抽象层实现。有了这个抽象层,用户就可以不去关注底层的 DDS 使用了哪个商家的 API,可以让开发者并行开发低耦合的功能模块,并且便于进行二次复用。

  3. ROS 1 运行时要依赖 roscore,一旦 roscore 出现问题就会造成较大的系统灾难,同时由于安装与运行体积较大,对很多低资源系统会造成负担;ROS 2 基于 DDS 进行数据传输,而DDS 基于 RTPS 的去中心化的通信框架,这就去除了对 roscore 的依赖,系统的稳定性强,对资源的消耗也得到了降低。

  4. ROS 2 新增了 QoS(Quality of Service,质量服务原则),主要对通信的实时性、完整性、历史追溯等方面形成了支持。这大幅加强了框架功能,避免了高速系统难以适用等问题。ROS 1 缺少 QoS 机,Topic 的稳定性与质量难以保证。

ROS 2 不是根据 ASIL 的标准设计的,ROS 2实现功能安全的解决方案是要把底层换为满足ASIL要求的RTOS和商用工具链(编译器)。把 ROS 2 用在汽车已经有不少团队在尝试了,例如Apex.AI 基于 ROS 2 定制开发的 Apex.OS 就已经通过了最高等级的 ASIL-D 认证,这实际上是基于 ROS 2 的架构去实现一套 AUTOSAR AP 规范。

image

目前没有看到国内团队将 ROS 2 用在汽车上,但是估计一定会有。