亚马逊AWS官方博客
AWS 如何帮助实现未来机器人技术的开源化
如果说机器人要统治地球也许没那么快,但如果它们确实做到这一点,那么它们很可能会运行 ROS。ROS 是机器人操作系统的缩写,距今已经有十多年的历史,正如 ROS 项目页面所描述,其目的是为了统一开发人员构建“一系列工具、库和规范,从而简化任务,跨广泛的机器人平台创建复杂且稳健的机器人行为”。为确保成功,ROS 需要整个机器人开发者社区的深入协作,包括 Thomas Moulard 和 Miaofei Mei 等 AWS 工程师最近的重要参与。
跟随客户对面向机器人的稳健操作系统的需求,AWS 对 ROS 社区的兴趣和参与也在不断发展和深化。
Dōmo arigatō、Misutā Robotto
过去 10 年来,ROS 已经成为行业内最流行的机器人软件开发框架。根据 ABI 研究的数据,到 2024 年,全世界大约 55% 的机器人都将包含 ROS 包。但实现目标的进程从未也将不会一帆风顺。
ROS 背后的理念于 2000 年代中期在斯坦福大学提出,是 Keenan Wyrobek 和 Eric Berger 这两位学生研究员的智慧结晶。他们的目标? 让机器人工程师不再需要像过去一样重新发明机器人,因为“在重新实现构建复杂机器人算法所需的软件基础架构上投入了太多时间…[而]在实际构建智能的机器人程序上投入的时间太少。”2007 年末/2008 年初,他们加入了 Scott Hassan 的机器人技术孵化公司 Willow Garage,该公司通过其个人机器人计划为他们的机器人研究工作筹集资金。
机器人操作系统 (ROS) 由此诞生。
由于它起源于学术界,因此也许令人不觉意外的是,最初的 ROS (ROS 1) 受学术和兴趣社区的影响最大。该社区现已成长为数万开发者的规模。虽然已经有大型工业自动化系统在运行 ROS,但 ROS 1 并未形成许多客户需要的工业级基础。尽管数以千计的附加模块以创造性的方式扩展了 ROS 1,但它缺乏基本的安全措施和实时通信功能,并且仅支持 Linux。由于缺乏替代选择,尽管为了满足他们的目的而对 ROS 1 进行发展需要大量的投入,企业仍继续利用 ROS 1 来建设大型机器人企业。
到 2010 年代晚期,正如 ROS 开发者 Brian Gerkey 在 Why ROS 2? 一文中写道,随着 ROS 的应用远远超出了它最初设想的应用范围,这些工业级的需求开始制约 ROS 1 的发展。 为将 ROS 发展成为一个更商业级的应用程序,负责 ROS 开发的 Open Robotics 基金会启动了 ROS 2 项目,这是 ROS 1 的一次重大升级,提供多平台支持、实时通信、多机器人通信、小型嵌入式设备能力等功能。
Gerkey 指出,Open Robotics 选择不在 ROS 1 中构建这些功能,是因为“由于实现我们当时所追求效益需要的更改的侵入性,更改许多人依赖的现行 ROS 系统涉及的风险太大。” 因此,改用 ROS 2 将打破 ROS 开发者社区所依赖的 API,让 ROS 社区不得不开始从头构建模块生态系统来扩展 ROS 2,同时提高它的稳定性,解决一个又一个的漏洞。
正是在这个时候,AWS 工程师以及许多其他的协作者开始介入。
尽管 Amazon 的许多团队都已经拥有使用 ROS 的经历,但在客户对 ROS 的兴趣推动下,我们参与 ROS 的力度进入了一个新阶段。由于 ROS 2 对我们客户的成功无比重要,AWS 机器人团队开始着手改进 ROS。AWS 工程师 Miaofei Mei 是 ROS 2 的积极贡献者,他说这意味着我们开始迫切希望为 ROS 2 贡献功能、漏洞修复以及易用性改进。
如今,AWS 机器人团队积极为 ROS 2 做贡献,参加了 ROS 2 技术协调委员会。AWS 机器人团队向 rosdistro 和 ros2 提出了超过 250 条合并 Pull 请求,他们的贡献广度和深度兼具,不局限于最近的 ROS 2 (Dashing) 发行版。在 Dashing 发行版中,我们有幸贡献了两个主要的功能:rclcpp 和 rclpy 中的服务质量 (QoS) 回调新概念,以及有关期限 (Deadline)、寿命 (Lifespan) 和活性 (Liveliness) 策略的新 QoS 功能。此外, 我们在日志记录方面也提出了改进(例如实施 rosout 以及能够集成 log4cxx 或 spdlog 等第三方日志记录解决方案),增加了运行时分析工具 (ROS2 Sanitizer Report and Analysis),此外还贡献了 Secure-ROS2 (SROS 2) 改进(例如生成保护节点的策略)等等。
帮助客户,一次一台机器人
AWS 在积极为 ROS 2 做贡献的同时,我们也受益于其他人的贡献。事实上,拥抱 ROS 的初衷完全来源于社区。AWS RoboMaker 产品经理 Ray Zhu 回忆:“ROS 的出现已经超过 10 年左右,有数以万计的开发者依托它构建开发包。如果要求我们跟上步伐,从头开发类似的东西,将需要许多年的开发工作。” 此外,AWS 客户也在不断要求 AWS 帮助他们解决机器人应用程序问题,他们希望建立一个开放的行业标准。
为了响应客户的请求,我们在 re:Invent 2018 大会上推出了 AWS RoboMaker。正如 AWS 首席宣传官 Jeff Barr 在 RoboMaker 发布时写道,它的宗旨是方便“在基于云的开发环境中开发…代码,在 Gazebo 模拟中进行测试,然后将…完成的代码部署到一个或多个机器人组成的队列中”。AWS RoboMaker 为 ROS 2 扩展了云服务,更加方便开发者通过 Amazon Lex 或 Amazon Kinesis 等 AWS 服务来扩展他们的机器人应用程序。
以AWS RoboMaker 的客户 Robot Care Systems (RCS) 为例,这家公司“使用机器人来帮助老年人、帕金森氏病患者以及残疾人更加独立地行动”,最终选择通过 AWS RoboMaker 来扩展它的 Lea 机器人。该公司想要实现许多想法(例如能够收集并与患者的医生共享行动和行为数据),但不知道如何连接到云。RCS 控制与机器人科学家 Gabriel Lopes 表示:“使用 RoboMaker ,只需配置一些脚本即可轻松实现云连接,真正令人惊叹。”
此外,为了代表 AWS 客户帮助加速 ROS 2 中分析和验证工具的开发,AWS RoboMaker 团队委托了 PickNik 等著名的 ROS 社区开发者,协助使用 ROS 2 的增强来移植 RQT,详见 PickNick 联合创始人 Michael Lautman 的详细描述。
为我们的机器人贡献力量
这种开源协作在 AWS 不是新事物,但随着我们不断追求改进服务客户的方式,它正在变得越来越重要。通过 Open Robotics 合作意味着我们无法始终按我们(或我们客户)期望的速度前行。通过 ROS 2 社区协作,我们努力确保客户始终牢牢立足开源软件的公共资源,让他们能够受益于许多贡献者的集体创新。用 AWS 工程师(也是 ROS 的贡献者)Thomas Moulard 的话说,“告诉客户信任我们并且只选择我们,是对客户的强行推销。相反,我们告诉他们要拥抱最广泛的机器人中间件开源社区。这不仅有利于客户建立对我们的信任,也有利于建立对未来的信心。
AWS 在 ROS 社区提出了多项举措,包括 Moulard 和其他 AWS 机器人团队成员主导的 ROS 2 工具工作组 (WG)。AWS 希望通过这些举措吸引更多合作伙伴、客户、甚至竞争对手加入我们的队伍,共同发展开源之路。虽然仍有许多 Amazon 团队单纯作为客户使用 ROS,但目前我们的许多使用正在促进重要的 ROS 2 上游贡献数量持续增加。
为什么? 正如我们提到,我们的回馈为客户带来了巨大的效益。但更重要的是:这对 AWS 员工也有益。正如 Mei 所说:“成为社区的一份子,而不仅仅是公司的一员,感觉真的很好。”