亚马逊AWS官方博客

2020 年开源机器人操作系统的新功能

并没有很多人可以说自己的工作是围绕机器人技术和社区展开的,但 Katherine Scott 却是其中一位。Kat Scott, Open Robotics DA

Katherine Scott 团队成员叫她KatOpen Robotics 的一名 Developer Advocate。该组织旨在开发用于机器人技术的开源软件。帮助开发人员专注于开发,并为 机器人操作系统 (ROS) 提供支持是她工作内容的一部分。这意味着她需要去拜访潜在的和活跃的 ROS 用户社区,并与他们探讨 ROS 和机器人模拟工具 Gazebo 所具有的功能。

本次访谈中,Kat 讲了 Open Robotic 的两个产品 ROS 和 Gazebo 的相关背景知识,还说明了 2020 年按计划即将对 ROS 文档和网站进行哪些更改。

尽管 ROS 的意思是机器人操作系统,但它实际上是一个用于开发机器人应用程序的软件开发工具包 (SDK):它为用户提供了开发、调试、测试和最终部署机器人应用程序所需的软件、库和工具。Gazebo 是一个基于物理学的 3D 机器人应用程序模拟器,可以在复杂的室内和室外环境中模拟机器人。

与 ROS 社区合作只是 Kat 职责的一个方面。她还花了几乎同样多的时间来为 ROS 网站属性创建内容,为 ROS 社区寻找机会,以及管理和改进其当前的 Web 属性。Open Robotics 是一个小型组织,因此它的运作方式有点像一家初创公司,但 Kat 并未将重点放在利润上,而是更关注人员组织及其对 ROS 有哪些需求。

ROS 2 为何重要? 与 ROS 1 有哪些不同?

ROS 1 和 ROS 2 之间的最大区别之一是 ROS 2 具备 ROS 1 并不具备的模拟功能。ROS 1 中有 Gazebo,并且也具备一些模拟功能,但是 ROS 集成很困难,而且 Gazebo 本身相当单一。借助 Ignition Gazebo 和 ROS 2,您可以在非常动态的环境中构建功能齐全且“五脏俱全”的机器人。我们已经看到这种模式在竞赛中大获成功,例如 DARPA SubT 挑战赛 [DARPA Subterranean Challenge], RobotX Challenge,以及最近的 AWS JPL Open Source Rover Challenge

所有这些挑战赛都很酷,因为如果您想要了解机器人技术,不再需要非得拥有一个真正的机器人才行。您可以创建一个模拟机器人。基本上都是在电子游戏中构建一个模拟机器人,而无需真正动手创建一个。

我认为令人兴奋的是,在过去,我学习机器人技术和教授机器人技术的方式是,您得拥有一个机器人,并且有自己的代码,而有一半的时间都不知道是机器人出现问题还是代码有问题。在模拟环境中运行机器人,您可以认定硬件没问题,只需担心软件组件是否正常。此外,通过模拟,您可以在所需的任何环境中测试机器人,这使得您可以专注于开发行为。我认为,这些变化是对机器人技术学习和教授方式的变革。

ROS 问世已有十多年了。ROS 刚问世时,我们还没有容器,甚至连虚拟机都没有。现在,我们可以将使用 ROS 构建系统过程中的所有棘手部分整齐地填充到一个容器中,然后将该容器提供给学生、协作者或同事。它真正改变了游戏规则:您不必非得拥有一台真正的机器人才能研究这台机器人所用的软件。我认为这将使人们能够更加有效地学习机器人技术和为特定应用开发机器人。

您能告诉我们有关 Gazebo 用途的更多信息吗?

Gazebo 的当前版本是 Ignition Citadel。我喜欢将 Gazebo 视为一款可以对真实世界进行模拟的视频游戏。您可以模拟物理特性、环境限制以及甚至传感器。例如,如果您想创建一个可以拖地的机器人,那么在将该产品推向市场之前,您需要搞清楚您的机器人是否能够在非常混乱的环境中顺利穿行。就在几年前,您还只能亲自创建一个混乱的环境,然后在那个环境中对您的机器人进行数百次测试。借助 Gazebo,您可以创建相当复杂的模拟环境,然后在模拟环境中对您的机器人进行测试。

其非凡之处在于,它具有 ROS 的所有元素。因此,如果您的模拟环境中有虚拟摄像机和虚拟 LIDAR(光检测和测距),它们返回的数字会与真实世界中的非常相似。因此,您不仅是在模拟环境和机器人,而且还会模拟传感器如何响应该环境。我的背景更多的是感知和计算机视觉。真正酷的是,如果您想要在现实世界中创建一个真正的机器人,并且想进行某种感知,则必须标记许多训练数据,这些数据着实很昂贵,而且很耗时。在模拟环境中,您可以采取一些步骤来使该过程自动化。

JPL NASA Open Source Mars Rover

Gazebo 模拟世界中的火星漫游者 (Mars Rover)。

您能讲讲 ROS Web 属性即将发生的变化吗?

我们的 Web 属性不只是 一个网站,而是一系列网站。其中一些是静态的,另一些则是动态的。

Web 属性不仅有文档和教程,还有其他内容。至于文档,我们已经从 ROS 1 过渡到 ROS 2。ROS 1 就要开始退出历史舞台。ROS 1 还会存在一段时间,但我们正努力使人们把注意力集中在 ROS 2 的新项目上。我们已经将当前的文档与 ROS 1 一并迁移出,然后说:“好吧,它自然与 ROS 2 类似,那我们就继续来移植吧,以确保一切都有用。” 它至少为人们提供了敲门砖,但是我们需要开始整理文档,以切实帮助 ROS 社区中的众多不同群体了解 ROS 2 及如何有效利用它。我们不能理所当然地认为每个人都知道如何使用 ROS 进行编码。

Launching a ROS node

ROS 项目和 ROS 代码的示例。

要出更多 ROS 2 教程的话,您会去哪里寻找可以提出更多建议的人? 您是如何围绕这一点打造开源社区的?

几乎每个人都想做一些有教育意义的事情并分享他们的知识。大多数 ROS 社区就是这样,从某种意义上讲,ROS 社区就是一级又一级的人说:“我创建了一个项目,它就在这里。” 为了支持这样的社区建言献策,我们构建了ROS Discourse,它为我们提供了一个可以讨论项目并发表声明的社区论坛。

有了 ROS Discourse,人们就不会遍地开花,而是会集中在一个地方,说:“这就是我的项目。以下是我正在做的事情:我所有项目都放在这儿。” 然后其他人便可以了解该项目并提出问题。我们在中国、日本、墨西哥或欧洲都有 ROS 开发人员,但他们都倾向于独立运作,我认为 ROS Discourse 起码是一个开端,这些开发人员可以聚在一起说:“这就是我感兴趣的事情,这就是我正在做的项目。”

读者应注意哪些重要的文档链接?

我们刚刚发布了大量 ROS 2 文档。我们正着手制定一项计划,不仅发布同等的ROS 2 文档,而且还要发布更多教程,这些教程将在今年推出。除了文档之外,我认为非常重要的是要知道该从哪里获得帮助,在刚起步的时候这一点尤其重要。

机器人技术很难,没有人什么都懂,我们想告诉大家:我们有 Answers.ros.org这个网站,它与 Stack Overflow 类似,但具体关注的是 ROS。还有 ROS wiki,在这里可以看到有关 ROS 1 的旧内容的大量文档。还有robots.ros.org,上面列有您可以购买的所有与ROS兼容的机器人。

内容的任务

Kat 正在为 ROS 2 的文档内容做最后的敲定并刷新 ROS.org 网站,他们希望 ROS 社区能够参与其中。他们想知道人们认为哪种类型的教程和内容对于顺利过渡到 ROS 2 最有用。

要向 Kat 提出您的反馈, 请访问 ROS Discourse 页

读者也许也会喜欢

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