§ 1.1 ROS2 简介

1. ROS 简介

ROS机器人操作系统 (Robot Operating System) 严格意义上来讲并不是操作系统,而是构建在操作系统之上的一系列软件工具的合集。

ROS有如下优点:

  • 降低了用户的开发门槛

    ROS集成了很多先进的机器人算法,并提供了完善的文档。可以直接将ROS里提供的工具库应用在自己的机器人系统里。大大降低了开发机器人系统的复杂度,缩短了开发周期。同时也降低了开发机器人的门槛。

  • 提供了抽象的软件服务,容易被不同机器人复用

    用户在进行机器人软件开发时,可以直接使用ROS开源生态里的包或者在这些开源包的基础上进行修改,而不是重复造轮子。同时因为ROS是组件化的,开发者可以根据自己的需求,使用自己所需的ROS的软件包。

  • 用户基数大,广泛应用于科研与生产

    现在国内高校越来越多的要求学生以ROS作为机器人的开发平台,来进行科研实验。

    同时基于ROS的机器人产品,在工业与消费领域被广泛使用,例如制造机器人、农业机器人、物流机器人等。

  • 支持C++与Python两种编程语言

    C++计算效率高,Python简单易用。在ROS里面可以同时使用这两种编程语言进行开发,很多ROS里面的软件服务都提供了C++和Python两种API。并且因为ROS通信架构的设计,使得Python节点与C++节点之间可以进行通信。在一个机器人项目中,可以同时使用C++和Python两种编程语言实现不同的功能。

2. ROS2 的特性

ROS2是ROS的最新版本。ROS2高效稳定,功能也更加丰富,能够满足商业化场景的需求。

ROS2的核心特性如下:

  • 支持多种操作系统

    ROS2是跨平台的,支持:Linux (Ubuntu / Debian / Fedora / ...) 、Windows、Mac OS、RTOS等。

  • Python版本:Python3

    ROS1因为历史遗留原因使用的是Python2,目前Python2已经停止维护。大量的人工智能相关的软件工具都是基于Python3实现的, 以前在ROS1中开发,还需要考虑Python2节点与Python3程序之间通信或移植的问题。ROS2使用的是Python3,不存在兼容问题。

  • 分布式通信架构:DDS规范

    ROS1最初设计时是单机机器人操作系统,使用的是Master-Slave架构,所有的子节点 (Slave) 都直接与主节点 (Master) 建立通信。 当主节点出现问题时,就会导致所有功能不能正常运行。

    ROS2对ROS1中的通信架构做了重大的改进,使用的是分布式多对多的数据交换的DDS规范 (Data Distribution Service) 。DDS最早应用于美国海军,解决舰船复杂网络环境中大量软件升级的兼容性问题,目前已经成为美国国防部的强制标准,同时广泛应用于国防、民航、工业控制等领域,成为分布式实时系统中数据发布/订阅的标准解决方案。

    在ROS2 Humble发行版中默认使用的是Fast DDS。Fast DDS是DDS规范的一个C++语言实现版本,能够为实时系统提供高效可靠的数据分发功能。Fast DDS的底层使用的是实时发布订阅协议RTPS (Real Time Publish Subscribe) 。

    详情查看Fast DDS的官方文档 eProsima Fast DDS Documentation

  • 数据安全

    如果基于ROS2搭建产品,数据安全是很重要的。 DDS-Security 规范是在DDS规范的基础上针对数据安全进行了拓展。在ROS2里面添加了身份验证 (Authentication) 、访问控制 (Access control) 、加密 (Cryptographic) 三个数据安全服务插件接口 (Service Plugin Interface) 。

  • 实时内核

    ROS2加入了Linux实时内核的支持,可以提高机器人控制的时效性。

    详情参见ROS2官方手册: 为ROS2构建实时内核(Building realtime Linux for ROS 2)

ROS2有很多发行版,在ROS文档中可以查看所有的ROS2发行版。 https://docs.ros.org/

使用最新的发行版,容易遇到问题时搜索不到相关的解决办法。建议上手时选择一个稳定的、使用人数多的发行版。另外还有一个非常重要的是,这个版本是不是被长期支持维护的 (LTS: Long Time Support) 。

目前市面上的ROS2课程,大多基于Foxy发行版来做。但是运动规划库MoveIt2并没有对Foxy版本做很好的适配,例如:MoveIt2的初始化助手 (MoveIt2 Setup Assistant) 就没有适配Foxy版本。我们没办法在Foxy版本的基础上,生成自己机械臂的MoveIt包。

这里推荐使用ROS官方推荐的 Humble 发行版。

事实是截至到目前Humble发行版下的MoveIt2 Setup Assistant也还没有开发完成, 还在进行中。

在ROS文档首页点击Humble的图标,可以进入Humble发行版相关的使用文档。 https://docs.ros.org/en/humble/

在这里可以了解关于Humble的最新特性: ROS 2 Humble Hawksbill Release!