Skip to content

第一章 ROS与ROS2介绍

机器人操作系统分为两个版本,第一代版本即ROS1通常称为ROS,而新一代的机器人操作系统称为ROS2,本文章是个人的学习笔记,用的是ROS2-Humble版本,结合各大知名教程总结学习而成,并加入个人的学习经验和对ROS2的一些看法。

参考资料来源:赵虚左老师的B站视频 微信ROS2文档 鱼香ROS社区

ROS是机器人操作系统(Robot Operating System)的英文缩写,是用于构建机器人应用程序的软件开发工具包。自ROS诞生以来,由于其集开源、免费、易用、低耦合、生态丰富......诸多优点于一身,迅速成为机器人行业内最受欢迎的开发框架之一,在学术、民用、商业、军事、航空航天等领域有着广泛的应用,并且随着ROS2对ROS1的全面迭代升级,也使得ROS日趋于完善,可预见的,未来很长一段时间,ROS仍将是机器人开发的中坚力量,而对于ROS自身而言,ROS1会慢慢退出,ROS2则冉冉升起。

1.1 ROS简介

ROS的出现场景

机器人是一种高度复杂的系统性实现,机器人设计包含了机械结构设计、机械加工、硬件设计、嵌入式软件设计、上层软件设计等诸多模块,是各种硬件与软件的有机结合,甚至可以说机器人系统是当今工业体系的集大成者。机器人体系是相当庞大的,其复杂度之高,以至于没有任何个人、组织甚至公司能够独立完成系统性的机器人研发生产任务。

那么问题随之而来:既然机器人实现如此困难,那么我们应该如何开展相关工作呢?

一种合适的策略是——合作。让机器人研发者专注于自己擅长的领域,其他模块则直接复用相关领域更专业研发团队的实现,当然自身的研究也可以被他人继续复用。这种基于“复用”的分工协作,遵循了 不重复发明轮子 的原则,显然是可以大大提高机器人的研发效率的,尤其是随着机器人硬件越来越丰富,软件库越来越庞大,这种复用性和模块化开发需求也愈发强烈。

在此大背景下,便诞生了ROS。ROS是一套机器人通用软件框架,可以提升功能模块的复用性,并且随着ROS2的推出,ROS日臻完善,是机器人软件开发的不二之选。

1.2 ROS发展历程

1.2.1 起源

2007 年,一家名为 柳树车库(Willow Garage) 的机器人公司发布了ROS,ROS集开源、免费、高复用、低耦合、工具丰富等等诸多优势于一身,一经推出便迅速吸引了大量的开发者、科研人员、硬件供应商的加入,形成了稳定且多样的机器人生态,水到渠成的ROS也成为了机器人领域的主流软件框架并流行至今。

但是自ROS诞生的十几年来,不管是机器人相关软件、硬件还是ROS社区都发生了天翻地覆的变化,加之ROS1存在一些设计上的先天性缺陷,各种内外因素叠加下,导致ROS1在许多应用场景下都已经显得力不从心了。此背景下,官方于2017正式推出了新一代机器人操作系统——ROS2,ROS2基于全新的设计框架,保留了ROS1的优点并改进其缺陷,ROS2的目标是适应新时代的新需求。

1.2.2 发行版本

ROS发行版是一组版本化的ROS功能包,它类似于Linux发行版(例如 Ubuntu)。ROS发行版的目的是让开发人员可以在一个相对稳定的代码库上工作,直到新的发行版推出。

以下列表为ROS2各不同发布版本的简单说明。

发行版 发布日期 标识 停止维护日期
Iron Irwini 2023 年 5 月 23 日 待定 2024 年 11 月
Humble Hawksbill 2022 年 5 月 23 日 2027 年 5 月
Galactic Geochelone 2021 年 5 月 23 日 2022 年 11 月
Foxy Fitzroy 2020 年 6 月 5 日 2023 年 5 月
Eloquent Elusor 2019 年 11 月 22 日 2020 年 11 月
Dashing Diademata 2019 年 5 月 31 日 2021 年 5 月
Crystal Clemmys 2018 年 12 月 14 日 2019 年 12 月
Bouncy Bolson 2018 年 7 月 2 日 2019 年 7 月
Ardent Apalone 2017 年 12 月 8 日 2018 年 12 月
beta3 2017 年 9 月 13 日 2017 年 12 月
beta2 2017 年 7 月 5 日 2017 年 9 月
beta1 2016 年 12 月 19 日 2017 年 7 月
alpha1 - alpha8 2015 年 8 月 31 日 2016 年 12 月

ROS2版本发布特点:

  • 发布版本与Ubuntu版本对应,生命周期也有Ubuntu保持一致,正常情况下偶数年份发布长支持版(5年),奇数年份发布短支持版(2年);
  • 版本名称由形容词+名词的格式组成,这一点与Ubuntu版本名称规则一致;
  • 正常情况下,每年的5月23日,世界海龟日发布新版本。

需要另外说明的是:

官方于2020年发布了ROS1的最终版本,并将于2025年终止ROS1的维护。而早在2017年就已经推出了ROS2的第一个正式版本,并且随着ROS2的不断完善,于2022年又推出ROS2的第一个5年长支持版(Foxy版本)。对于ROS而言,这是一个里程碑式的事件,这意味着自此开始,ROS2将全面取代ROS1