亚马逊AWS官方博客

开源机器人操作系统 (ROS) 与 AWS RoboMaker

 

“在机器人社区,一些问题目前已经得到了充分的解决,以致于每个人都了解并且或多或少也承认这是解决该问题的最佳方法。因此在 ROS 社区,只要有可能,我们都会采用这些算法,在开源库中实施后再提供,从而确保每个人都可以利用。”

~ Brian Gerkey,Open Robotics 首席执行官兼联合创始人

Brian Gerkey,Open Robotics

Brian Gerkey 和他的同事早在十年前就立志要解决重复做无用功的问题。他们认识到研究生在学术研究实验室里从头构建机器人花费了太多时间和精力。

如果可以开发一种机器人编程框架,囊括已经证明有效的最佳实践,让学生可以直接开始构建机器人应用程序,结果会怎样? 如果采用开源又会怎样?

这正是他们所做的工作。

如果您需要机器人或开源,那么您就来对了地方。AWS 云架构策略副总裁 Adrian Cockcroft 最近与 Brian Gerkey 讨论了机器人操作系统 (ROS) 项目以及 AWS 最近有关 AWS RoboMaker 的发布将为 ROS 社区和 AWS 客户带来的好处。

Brian,请介绍以下您自己并给我们讲讲 ROS 项目。

我是 Brian Gerkey,是 Open Robotics 的首席执行官和联合创始人,我们开发用于机器人的开源软件。我们有两个主要产品,一个是 ROS,另一个是 GazeboROS 是机器人操作系统的意思,但它其实并不是一个操作系统。它更像一个可以用于开发机器人应用程序的软件开发工具包 (SDK):它为您提供了开发、调试、测试和最终部署机器人应用程序所需的软件、库和工具。

除 ROS 外,Gazebo 是一个基于物理学的 3D 机器人应用程序模拟器,可以在复杂的室内和室外环境中模拟机器人。这些机器人应用程序可以使用 ROS 开发,也可以不使用 ROS 开发,但大多数都是使用 ROS 开发的。

使用 ROS 和 Gazebo 构建机器人应用程序与 Android 或 iOS 等移动开发环境类似,开发人员可以使用多种工具和库,这些工具和库提供了构建元素、抽象层、通用 UI 元素以及用于在将应用程序部署到硬件前进行测试的模拟环境。

ROS 是什么时候面世的? 能否介绍一下它的历史沿革?

到本月我们已经满 11 年了。2007 年,我们第一次参加了 SourceForge,这是 ROS 最初的家。

ROS 的历史要追溯到斯坦福大学和机器人孵化企业 Willow Garage 的一次合作,他们合作设计了一个新的开源机器人编程框架。项目的初衷主要是为学术研究是实验室的研究人员提供进行机器人科学研究所需的工具。从那以后,ROS 逐渐作出实验室,发展成为一个被行业广泛使用的工具。

如果再往前溯源,ROS 的历史还可以追溯至 20 世纪 90 年代晚期我和一些同事在南加州大学开发的一个叫做 Player 的项目。Player 项目的许多部分都已包含在 ROS 中。

说到“机器人”一词,它的含义有很多,从机械臂到 R2D2 等等。我们所说的机器人包含哪些范畴? 它们通常用于哪些目的?

我很高兴您提到这个问题,而不是直接要我给机器人下定义! ROS 用处最大的地方是您将传感器和执行机构组合起来与现实世界交互的系统。换句话说,您有一个东西在摄入需要进行分析的数据,从而可以作出决策和采取行动。行动将以命令的形式出现,例如向电机发出命令。

ROS 最典型的一个使用案例是在工厂或仓库转移材料的机器人。这就是机器人,一种运输一些有用物体或材料的轮式装置。它会感应周围的环境,跟踪它当前的位置、需要达到的位置,并确定如何到达,更不要说路途中的障碍。

当然还有更广泛的例子,不仅仅是轮式机器人。它可以是从世界上摄入数据,对数据进行处理,然后决定如何在世界上行动的任何事物。这也是 ROS 的真正用武之地。

说白一点,我们所说的机器人,将包括电池驱动的小型设备到各种巨型机械,对不对?

对,完全正确。我想绝大多数基于 ROS 的机器人都将是电池驱动的,因为它们需要保持移动性。但这并不代表它们有资源限制。

例如,2010 年我们在 Willow Garage 构建的 PR2 机器人就采用电池驱动。这正是我们当初要为其设计 ROS 的机器人,其目的也正是供研究人员在他们的验室使用。事实上,这是同类实验室中最强大的计算系统。它是位于机器人中的一个非常先进的计算系统。

因此对于机器人,它可以是仓库环境中有无限动力的固定作业系统这样的庞然大物,也可以是非常小的嵌入式系统。

似乎 ROS 有许多插件针对不同类型的传入传感器,还有许多插件针对不同类型的执行机构。这是否就是 ROS 的架构方式,在中央有一个核心来决定下一步的动作?

是的。实际上,ROS 有时也被称为中间件,因为它的作用是提供一个管道系统,以确保消息在处理消息的传感器和算法之间的路由,以及从传感器处理步骤摄入数据并将数据路由至执行机构的算法之间的路由。最终您得到的是同类最佳的驱动程序、算法和工具。

随着机器人从学术研究走向真实的生产应用,我们也升级到了 ROS 2。原来的 ROS 缺失了哪些东西,ROS 2 中又增加了哪些东西以使它在商业上更有用?

我首先从技术角度来谈谈 ROS 1 缺失的东西。我们以自定义的方式开发了该中间件系统。消息的定义方式、将消息从一个机器发送到其他网络的序列化方式、以及实际的通信方式,都是我们所开发的定制系统的一部分。

它的运行十分理想,但它缺乏一些功能,例如可让您区分不同数据流,确定此数据流要比另一个数据流更重要的服务质量功能。此外也没有考虑实时计算的问题。这些是 ROS 1 中缺失并且完美已经在 ROS 2 中明确解决的问题。

在 ROS 2 中,我们采用一种被称为数据分发服务 (DDS) 的开放行业标准来进行构建。我们支持在表面之下多重实施 DDS 标准,包括开源和闭源。然后在此基础上进行构建,从而为您提供高效开发机器人应用程序所需的一切工具。

ROS 1 缺失的另一个方面是安全性。ROS 1 并没有内置任何计算机或网络安全功能。只要您加入 ROS 1 网络,您就可以访问所有数据流。这是设计的本意,而不是疏忽。这是因为我们主要面向的一个研究环境,这种类型的灵活性是对该环境最为重要。而在 ROS 2 中,我们借助了 DDS 安全规范的优势,从而让我们可以提供身份验证、加密和访问控制等功能。

这些是技术方面的一些例子。下面来看通信和设计方面。我们认为 ROS 1 背负着一些血统的包袱,因为它是从研究社区成长起来的,这使它非常灵活。因此它得到了非常广泛的采用,参与的人很多,但这导致大企业的一些产品经理望而却步,他们说:“等一下。我知道你们构建了什么,但你们告诉它是为研究生和实验室使用而设计的? 或许我不想在产品中放入 ROS。”

因此我们作出了十分痛苦、代价高昂的决定,决定全新重写系统,而不是在原有的基础上迭代。现在我们可以告诉这些人我们已经考虑他们的所有反馈,使用与系统构建同样的总体原理从头开始。现在我们的目标是将 ROS 用于生产使用案例。我们正在调整开发流程以更加适应我们希望能够通过 ROS 2 来满足的用户社区需求。

对于贡献,你们成立了一个技术协调委员会,包括 Amazon 在内的许多人都已经参加了。对于 ROS,我们将它看作一个拥有多个不同组件的相对较大的项目。开源的主要贡献领域有哪些 — 输入/输出设备、算法或核心系统调试? 我知道 Amazon 已经贡献了一些迁移工具。您认为需求最大的地方是什么?

Amazon 和许多其他大公司都加入了 ROS 2 技术协调委员会。参加的门槛是至少投入一名工程类等效全职员工 (FTE),以便为 ROS 2 的内核贡献开源。这不属于筹资。我们其实在努力吸引大企业为 ROS 2 贡献工程力量。

我们认为核心的 ROS 2 贡献在于两个关键领域。正如您所提到,第一个领域是迁移,例如从现有的 ROS 1 软件包前后一道 ROS 2,以及生成迁移工具等。Amazon 在此方面提供帮助。英特尔在 ROS 导航堆栈方面发挥了带头作用。我们负责决定方向,但他们主要独立于我们的团队工作 — 这非常棒!

另一个领域是 ROS 1 现在还不具备的功能和工具方面,因为底层工具还不具备。正如我前面提到,一个典型例子是安全性。由于 ROS 1 不支持安全性,因此没有办法管理密钥。对于 ROS 2,ARM 在贡献底层库,以在他们处理器的信任区生成和存储密钥。

ROS 是基于 Linux 还是实时操作系统 (RTOS) 构建?

过去,ROS 几乎完全在 Linux 上使用。这也是我们在开发上所做最多的地方。从 ROS 2 开始,我们明确要支持 Linux、MacOS 和 Windows,我们已经看到开发人员和用户受益于我们对这些平台的支持。

此外,我们对于在多种嵌入式系统上部署 ROS 2 也越来越感兴趣,从运行 Linux 或 QNX 等实时环境的单片机到没有完整操作系统的微控制器等。对于后一个类别,Renesas 最近宣布了他们支持智能传感器和执行机构的工作,可以直接使用低功率微控制器与 ROS 2 “对话”。

如果有人说:“嗨,我喜欢机器人”并且希望提供帮助,他们需要知道哪些东西以为 ROS 2 做些贡献?

与 ROS 1 一样,ROS 2 是一个多语言系统,主要基于 C++ 和 Python。这两种语言往往是机器人应用程序中使用最多的语言,获得的关注最多,涉及如何编写许多核心组件。

因此,您最好熟练掌握其中一种语言或两种都掌握,并且对机器人感兴趣。当然您不需要是机器人专家。坦白地说,我们所做的许多工作并非特别针对机器人的。

作为一个 GitHub 项目,ROS 在嵌入到某个东西以前,是否要进行分叉,还是你们鼓励开发人员回馈主流版本?

我们始终鼓励人们贡献可以回馈上游的任何事物。从实践上看,如果您要拿出代码并放入生产,就像您从外部收到的任何事物一样,那么您也许会对其分叉,仅在部署前将其冻结在某个特定的版本。我知道不是所有的东西都会回馈,这很正常,但我们将努力获得尽可能多的回馈。

请介绍以下您有关 ROS 1 长期支持 (LTS) 版本的计划。

如之前我所提到,今年 ROS 已经满 11 年了。此项目在全世界拥有许多用户;我们估计有数十万用户。我们每年发布一个 LTS 版本。我们最新的版本于今年五月份发布。下一个 ROS 1 LTS 版本将于 2020 年发布。

在 Open Robotics,我们主要的工作重心是 ROS 2,我们希望社区有尽可能多的人利用合适的时间,为 ROS 2 的开发作出贡献。当然,我们也知道大量已经部署的代码库依赖 ROS 1。我们需要尽可能方便人们完成 ROS 2 的过渡。

我们相信随着新的 ROS 1 LTS 发布,根据 ROS 2 的发展速度,大部分用户将最晚可以在 2020 年以前完成向 ROS 2 的过渡。迁移工具、shim 库、迁移指南以及其他文档可为过渡提供进一步的方便。

你们希望人们在哪些领域作出更多贡献? 你们是如何围绕这一点建设开源社区的?

作为一个开源项目,我们会开展所有正常的工作。社区内部的沟通通过问题跟踪器、Pull 请求、评论、代码审查等等来完成。代码大部分在 GitHub 上托管。我们使用类似于邮寄列表的讨论论坛 Discourse,此外我们还托管了一个 Askbot 实例,这是一个与 Stack Overflow 类似的问答论坛。

在会议方面,过去七年来我们至少每年举行一词开发人员大会,称为 ROSCon。今年的会议在马德里举行,参会名额连续四年销售一空,500 多人参加,拥有 47 家赞助企业。将社区的人聚集起来,与人们面对面交流是一件其乐无穷的事情。

今年我们也尝试了一些新的东西:我们推出了首个本地化版本的 日本 ROSCon。这次会议同样爆满,近 200 人参加。我不会说日语,但我还是能够发表演讲,内容将翻译给观众听。

ROSCon 上有多少机器人?

索尼公司在日本 ROSCon 上成功展示了他们的机器狗 Aibo,但这是一个特例。到现在我已经用过了不少机器人,我非常了解制作现场展示作品的困难。将更多的机器人带到展台确实非常棒,我们在展览区也有大量的机器人。是否携带机器人取决于参展商。

AWS RoboMaker 对 ROS 社区有哪些好处?

我们已经提到 Amazon 安排了全职工程师来为 ROS 2 做贡献,并且已经发布了一些开源工具以帮助完成从 ROS 1 到 ROS 2 的迁移。但对于许多 ROS 和 Gazebo 用户而言,一个重要的准入壁垒一直是确保开发环境的正常并在本地机器上运行。到目前为止,它在配备特定类型的显卡并安装了正确驱动程序的特定类型的 Linux 计算机上表现最佳。正确设置并保持更新的成本高昂,需要大量的工作。

通过 AWS RoboMaker,Amazon 打通了准入路径,从而能够以极低的成本从任何平台开发和测试机器人软件,具有完全的模拟能力,此外还提供了免费套餐以进行试用。AWS RoboMaker 负责软件模拟和部署,并向单独的机器人和机器人队列发布更新。

Amazon 通过此新服务作出的贡献,兑现了让机器人应用程序的开发变得远远更为简单的承诺。所有依赖项和安装问题都交给云端处理,从而方便 ROS 用户无需任何本地安装即可获得所有同样的工具和库。


令人振奋的时刻来临! 与一年前我们发布 AWS SageMaker,对所有开发人员开放高级人工智能算法并方便部署一样,AWS RoboMaker 也让机器人对更广大的受众变得触手可及。AWS SageMaker 和 AWS RoboMaker 甚至可以组合使用,以将人工智能模型部署到机器人队列中。

如果您需要了解更多有关 AWS RoboMaker 的信息,请参阅 Jeff Barr 的博客文章 – AWS RoboMaker – 开发、测试、部署和管理智能机器人应用程序