§ 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!