如果机器人故障时能像看录像带一样“倒带”?MIT博士打造的下一代机器人操作系统“Cerulion”

展示机器人运行时Cerulion革新多进程通信与可复现性的概念插图
AI Summary

由MIT机器人学博士开发开源机器人运行时“Cerulion”通过零拷贝共享内存与确定性重放,将机器人开发时间缩短高达10倍。

对于机器人工程师来说,最恶梦的瞬间是什么时候?莫过于高价的自动驾驶机器人在工厂或实验室中央突然停滞,或者向诡异的方向猛冲。虽然赶到现场让机器人停下并翻找日志,但想要重新复现完全相同的场景比登天还难。这就如同电影里的场景一般,在找不到原因的情况下,往往只能将其归咎于“偶发性Bug(Heisenbug,一经观察就会消失或无法复现的诡异Bug)”而草草了事 [Source 1]。

正面的迎击机器人软件开发这一长期痛点的开源项目诞生了 [Source 4, Source 9]。由MIT机器人学博士出身的工程师们开发的 Cerulion(一个管理和协调机器人软件执行的运行时)正是其主角 [Source 1, Source 4, Source 9]。它在完美保留传统机器人标准中间件 ROS 2(Robot Operating System 2,广泛用于机器人软件开发的标准中间件)优势的同时,大幅提升了通信速度,并具备了完美回溯并分析故障瞬间的功能,正受到全球开发者社区的热烈关注 [Source 1, Source 2, Source 11]。


为什么这很重要?

试想一下。你是一名正在开发价值数亿元的物流机器人或越野自动驾驶车辆的工程师。机器人的身上装备了无数的传感器——例如2个激光雷达(Lidar,利用激光感知周边地形和物体的传感器)和6个摄像头——在每个瞬间倾泻海量的数据 [Source 1]。

这些数据必须在机器人内部的各个程序(进程)之间相互传递,但在传统系统中,这个过程常常遭遇延迟(Delay)或者受制于标准化的数据格式限制 [Source 1]。结果,开发者们别无选择,只能采用将所有程序强行塞进一个庞大进程中的不稳定方式,而这正是将调试(Debugging,查找并修正软件错误的过程)变成人间炼狱的元凶 [Source 1]。

Cerulion解决了物理AI(Physical AI,数字智能与实体机器人机身结合运作的技术)时代的这一根本性基础设施问题 [Source 4, Source 9]。它降低了机器人开发的复杂性,帮助将整体开发时间缩短高达10倍 [Source 4]。这不仅仅是减少了开发者的加班,更是大幅加速自动驾驶汽车和物流机器人的安全性和商业化步伐的重要转折点。


轻松理解:大型白板与飞机黑匣子

让我们用更通俗的方式来看看这项技术的原理。Cerulion的核心优势——“快速通信”与“完美回放”,可以用日常的比喻轻松理解。

1. 用大型白板代替复印机(零拷贝共享内存)

在传统的机器人系统中,多个部门(进程)收发数据的过程,就像是把重要文件复印后逐一分发给各部门。随着部门增多以及文件(如高分辨率图像或点云数据)变得庞大,光是复印和传递就需要花费巨量时间 [Source 1]。特别是由于强制仅使用标准化规范(POD,Plain Old Data),在处理通用图像或传感器数据时,系统往往会陷入严重堵塞 [Source 1]。

相反,Cerulion采用的零拷贝共享内存(Zero-copy Shared Memory,不物理复制数据,多个程序直接共享内存空间以最大化传输速度的技术),就像是在办公室正中央摆放了一块巨大的公共白板 [Source 2]。无需复印并传递数据,任何人都可以即时读写写在上面的最新信息,因此通信延迟骤降至仅仅 4.98微秒(µs,1秒的百万分之一)的水平 [Source 2]。

2. 毫厘不差的飞机黑匣子(确定性重放)

假设机器人行驶途中发生了撞墙事故。在过去,很难准确还原事故瞬间的情况,只能凭直觉修改代码 [Source 1]。

Cerulion会在机器人运行期间,将输入的所有传感器数据以及内部调度器的运行顺序仔细记录在标准的 MCAP(ROS 2等用于记录机器人传感器数据和日志的标准文件格式)文件中 [Source 1, Source 8]。随后,当你在办公室电脑中修改代码并执行确定性重放(Deterministic Replay,在电脑中以毫厘不差的精度重新复现过去机器人执行时准确的输入和顺序的技术)时,就能完美还原发生事故那一瞬间的情景 [Source 1, Source 10]。由于可以按字节精确对比验证代码是否正常运作、偏差发生在何处,使得“捉鬼式调试”成为可能 [Source 1, Source 10]。


当前现状:以Rust武装的实战型中间件

Cerulion并非纸上谈兵的实验室项目。两位联合创始人Lakshay和Raveen曾亲身在MIT进行越野自动驾驶研究,他们基于在实地遭遇的惨痛经验,从零开始直接进行了设计 [Source 1, Source 4]。

他们选择了能够同时提供内存安全与极致性能的编程语言——Rust(专为系统编程打造、在根除内存错误的同时具备C++级速度的语言)来构建运行时 [Source 1]。

特别值得一提的是,它处处为一线工程师着想。无需对目前已广泛使用的ROS 2生态系统中的节点(Node,机器人内部独立运行的程序单元)或启动文件(Launch file,一次性运行多个程序的配置文件)进行全面修改,便能直接与Cerulion环境一同运行 [Source 1]。此外,它还允许自由混用原生Rust和Python代码,降低了与现有系统对接的门槛 [Source 1]。它能够轻松对接Linux环境下的ROS 2 Jazzy版本节点,详细的命令和快速入门指南已通过官方文档和GitHub仓库提供 [Source 5, Source 8]。


未来将走向何方?

物理AI与自动驾驶机器人市场已经超越了玩具或原型机阶段,正深入到实际的产业现场和城市街头。然而,硬件成本高昂以及软件调试棘手,依然是其普及的一大阻碍 [Source 1, Source 4]。

像Cerulion这样能够极度压缩通信延迟、完美复现过去错误并快速提升代码质量的工具链(Tooling,辅助开发的工具集),未来极有可能确立为机器人行业的标准基础设施 [Source 1, Source 4, Source 11]。得益于现有ROS 2开发者无需付出巨大迁移成本即可直接引入的实用性,预计未来会有更多物流机器人、无人机和人形机器人开发团队采用基于Cerulion的高速多进程架构 [Source 1]。


AI的视点

从系统层面解决机器人开发中长期存在的通信延迟与可复现性难题,Cerulion将成为加速物理AI时代到来的核心基础设施。


参考资料

  1. Show HN: Cerulion – ROS 2-compatible robotics runtime with multi-process replay
  2. Cerulion — Robot middleware that just works
  3. [Cerulion: Open source operating system for robots Y Combinator](https://www.ycombinator.com/companies/cerulion)
  4. cerulion_cli 1.0.0 - Docs.rs
  5. MCAP recordings, ROS 2 and Rust support · Cerulion
  6. Cerulion - Cerulion Docs
  7. cerulion/docs/ros2_replay.md at main · cerulion-inc/cerulion …
  8. Why Cerulion - Cerulion Docs
AD
测试你的理解
Q1. Cerulion主要是用什么语言编写的机器人运行时?
  • Python
  • Rust
  • C++
Cerulion是MIT机器人学博士使用Rust语言开发的兼容ROS 2的机器人运行时。
Q2. Cerulion在多进程通信中为减小延迟所使用的核心技术是什么?
  • 单进程权衡
  • 零拷贝共享内存(Zero-copy Shared Memory)
  • 云端流式传输
Cerulion通过零拷贝共享内存,在不妥协单进程的前提下实现了极快的IPC传输延迟。
Q3. Cerulion的可复现性功能如何处理机器人故障数据?
  • 通过标准MCAP记录进行确定性重放与验证
  • 自动删除数据
  • 仅云端备份存储
Cerulion通过标准MCAP记录输入读取和调度器轨迹,以执行确定性重放和验证。