自2015年底首次踏入ROS(Robot Operating System)的世界以来,我在机器人领域的旅程已近九年。这段历程始于团队几位志同道合的朋友在业余时间的自发学习,逐渐演变成成立了一个致力于英特尔硬件平台与ROS框架集成优化的专业团队,最终发展到为商业客户提供基于ROS和英特尔平台的产品设计支持。这一路走来,经历了无数的挑战与成长。为了纪念这一段充满成长与探索的旅程,我计划整理一下积累的知识与经验为一系列的学习性文章,与同样醉心于ROS世界的朋友们分享,希望我们能够一同学习,共同进步。在这份知识的传递与分享中,不仅是对过往岁月的回顾,也是对未来探索的一份期许。
ROS是什么
ROS(机器人操作系统)是一个开源机器人中间件套件。虽然ROS不是一个操作系统(OS),而是一套用于机器人软件开发的软件框架,但它提供了为异构计算机集群设计的服务,例如硬件抽象、低级设备控制、常用功能的实现、进程之间的消息传递,以及包管理。正在运行的基于 ROS 的进程集以图形架构表示,其中处理发生在可以接收、发布和复用传感器数据、控制、状态、规划、执行器和其他消息的节点中。尽管反应性和低延迟在机器人控制中很重要,但 ROS并不是实时操作系统( RTOS)。然而,可以将 ROS 与实时计算代码集成。ROS 2 的创建已解决了对实时系统支持的缺乏,ROS API 的重大修订,它将利用核心 ROS 的现代库和技术功能并添加对实时代码和嵌入式系统硬件的支持。
ROS生态系统中的软件可以分为三组:
- 用于构建和分发基于 ROS 的软件的独立于语言和平台的工具;
- ROS 客户端库实现,例如 roscpp、rospy、和 roslisp;
- 包含使用一个或多个 ROS 客户端库的应用程序相关代码的软件包。
ROS的发展历史
斯坦福大学的早期经历(2007年及更早)
2007 左右,最终成为 ROS 的第一批组件开始在斯坦福大学开发。Eric Berger和Keenan Wyrobek是斯坦福大学Kenneth Salisbury机器人实验室的博士生,他们领导着个人机器人(Personal Robotics)项目。在研究机器人在人类环境中执行操作任务时,他们注意到,他们的许多同事都因机器人技术的多样性而受阻:优秀的软件开发人员可能不具备所需的硬件知识,而开发路径规划的人可能不知道如何进行所需的计算机视觉。为了纠正这种情况,他们着手建立一个系统,为学术界其他人提供一个可以借鉴的起点。用Eric Berger的话来说,“在所有这些不同的维度上,这都是不糟糕的东西”。
在迈向这个统一系统的第一步中,两人构建了PR1作为硬件原型,并开始利用它开发软件,借鉴了其他早期开源机器人软件框架的最佳实践,特别是摩根·奎格利 (Morgan Quigley) 开发的 switchyard 系统,另一位斯坦福大学博士生,一直致力于支持斯坦福人工智能实验室的斯坦福人工智能机器人(STAIR)。Joanna Hoffman和Alain Rossmann提供了 50,000 美元的早期资金,支持 PR1 的开发。在寻求进一步开发的资金时,Eric Berger 和 Keenan Wyrobek 遇到了Willow Garage的创始人 Scott Hassan。 Willow Garage 是一家技术孵化器,致力于开发自动驾驶 SUV 和太阳能自动驾驶船。Hassan 分享了 Berger 和 Wyrobek 的“机器人 Linux”愿景,并邀请他们来 Willow Garage 工作。Willow Garage 于 2007 年 1 月启动,并于 2007 年 11 月 7 日向 SourceForge 首次提交 ROS 代码。
Willow Garage时期 (2007–2013)
Willow Garage开始开发 PR2 机器人作为 PR1 的后续产品,并开发 ROS 作为运行它的软件。来自二十多个机构的团体为 ROS 做出了贡献,包括核心软件以及与 ROS 一起形成更大软件生态系统的越来越多的软件包。Willow Garage 之外的人为 ROS 做出了贡献(特别是来自斯坦福大学的 STAIR 项目),这意味着 ROS 从一开始就是一个多机器人平台。虽然 Willow Garage 最初还有其他项目正在进行中,但它们被取消了,取而代之的是个人机器人计划:专注于生产 PR2 作为学术界的研究平台和 ROS 作为开源机器人堆栈,支撑学术研究和技术初创公司,就像LAMP 堆栈为基于网络的初创公司所做的那样。
2008 年 12 月,Willow Garage 实现了三个内部里程碑中的第一个:PR2 在两天内连续导航,距离 pi 公里。不久之后,ROS 的早期版本(0.4 Mango Tango)发布,随后发布了第一个 RVIZ 文档和第一篇关于 ROS 的论文。初夏,实现了第二个内部里程碑:让 PR2 在办公室中导航、打开门并自行插入电源。随后,ROS.org 网站于 8 月启动。ROS 的早期教程于 12 月发布,为 2010 年 1 月发布 ROS 1.0 做准备。这是里程碑 3:为 Willow Garage 工程师拥有的巨大能力制作大量文档和教程过去3年的发展。
2011 年对于 ROS 来说是辉煌的一年,2 月 15 日推出了 ROS Answers(一个针对 ROS 用户的问答论坛);4月18日推出非常成功的TurtleBot机器人套件;ROS repository总数在 5 月 5 日突破 100。Willow Garage 于 2012 年 4 月创建了开源机器人基金会(OSRF) 。OSRF 立即获得了国防高级研究计划局(DARPA) 的软件合同。同年晚些时候,第一届 ROSCon 在明尼苏达州圣保罗举行,第一本关于 ROS 的书《ROS By Examples》出版,第一个运行 ROS 的商业机器人Baxter由Rethink Robotics宣布。
2013 年 2 月,OSRF 成为 ROS 的主要软件维护者,此时,ROS已经发布了7个主要版本(一直到ROS Groovy),并且用户遍布全球。Clearpath Robotics于 2014 年初接管 PR2 的支持职责,标志着Willow Garage时期的结束。
OSRF 和Open Robotics时期(2013 年至今)
自从 OSRF 接管 ROS 的主要开发以来,每年都会发布一个新版本,同时人们对 ROS 的兴趣也在不断增长。自 2012 年以来,ROSCon 每年都会举办,与两个旗舰机器人会议ICRA或IROS同期举办。ROS 开发者聚会已在多个国家组织,出版了许多 ROS 书籍,并启动了许多教育计划。2014年9月1日,NASA在国际空间站上宣布了第一个在太空中运行ROS的机器人:Robotnaut 2。2017年,OSRF更名为Open Robotics。科技巨头亚马逊和微软在此期间开始对 ROS 产生兴趣,微软于 2018 年 9 月将核心 ROS 移植到 Windows,随后亚马逊网络服务于 2018 年 11 月发布 RoboMaker。
迄今为止,OSRF/开放机器人技术最重要的发展(不排除开始支持 ROS 的机器人平台的爆炸式增长或每个 ROS 版本的巨大改进)是 ROS 2 的提议,这是对 ROS API 的重大更改旨在支持实时编程、更广泛的计算环境和更现代的技术。ROS 2 在 ROSCon 2014 上宣布,2015 年 2 月首次提交到 ros2 repository,随后于 2015 年 8 月发布 alpha 版本。 ROS 2 的第一个发行版 Ardent Apalone 于于2017年12月8日发布,开创了下一代ROS开发的新时代。英特尔也在此阶段对ROS 2社区做出巨大贡献,包括ROS 2核心代码质量和安全性提高,性能优化,在ROS 2上支持Realsense, NCS (Neuron Compute Stick),OpenVINO,发布一系列支持ROS 2的软件组件,并移植和重新设计ROS 2导航软件框架navigation2。
未来发展
目前,Open Robotics已经被Google的孵化器Intrinsic收购:Alphabet’s Intrinsic Acquires Majority of Open Robotics - IEEE Spectrum。大部分的开发人员已经进入Intrinsic,核心的开发人员和开源的ROS,Gazebo,RMF和Infrastrucutre保持中立的开源项目。社区也在酝酿着一些变化(开源项目的governance,经费支持等),让我们期待ROS的未来更加美好。
版本和发布
ROS 1版本发布
ROS 2版本发布
ROS-Industrial
ROS-Induscial 是一个开源项目(BSD(传统)/Apache 2.0(首选)许可证),它将 ROS 的高级功能扩展到制造自动化和机器人技术。在工业环境中,有两种不同的方法对机器人进行编程:要么通过外部专有控制器(通常使用 ROS 实现),要么通过机器人各自的本机编程语言。因此,ROS 可以被视为基于软件的工业机器人编程方法,而不是传统的基于机器人控制器的方法。
ROS-Industrial repository包括常见工业机械手、夹具、传感器和设备网络的接口。它还提供用于自动 2D/3D 传感器校准、工艺路径/运动规划、Scan-N-Plan 等应用程序、Qt Creator ROS 插件等开发人员工具以及针对制造商需求的培训课程的软件库。ROS-Industrial 得到了一个由行业和研究成员组成的国际联盟的支持。该项目最初是 Yaskawa Motoman Robotics、西南研究所和 Willow Garage 之间的合作项目,旨在支持 ROS 在制造自动化中的使用,GitHub repository由 Shaun Edwards (SwRI) 于 2012 年 1 月创建。目前,该联盟分为三个组;ROS 工业联盟美洲(由 SwRI 领导,位于德克萨斯州圣安东尼奥)、ROS 工业联盟欧洲(由 Fraunhofer IPA 领导,位于德国斯图加特)和 ROS 工业联盟亚太地区(由 Advanced Remanufacturing 领导)和技术中心(ARTC)和南洋理工大学(NTU),位于新加坡)。
该联盟通过开展 ROS-I 培训、提供技术支持和制定 ROS-I 未来路线图,以及开展竞争前联合行业项目来开发新的 ROS-I 能力,为全球 ROS-Industrial提供支持。
作者Blog原文:ROS 2的前世今生 | ROS 2学习笔记 - HY's Blog