由 MIT 機械人學博士創立並開發的開源機器人執行環境「Cerulion」,透過零拷貝共享記憶體與確定性回放,將機器人開發時間縮短高達 10 倍。
對機器人工程師來說,最噩夢的時刻是什麼時候?就是在工廠或實驗室中央,高價值的自主機器人突然停擺或朝奇怪的方向衝撞。在現場讓機器人停下來並查看日誌,但要再次重現完全相同的狀況簡直比登天還難。就像電影情節一樣,找不到原因只好將其歸咎於「偶發性臭蟲(Heisenbug,一種觀察時就會消失或無法重現的詭異臭蟲)」並不了了之 [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,百萬分之一秒) 的水準 [Source 2]。
2. 毫厘不差的飛機黑盒子(確定性回放)
假設機器人在行駛途中撞到牆壁。過去很難精準重構事故當下的情況,只能憑感覺修改程式碼 [Source 1]。
Cerulion 在機器人運行期間,會將所有輸入的感測器數據與內部排程器的運作順序仔細記錄在標準 MCAP(ROS 2 等用於記錄機器人感測器數據與日誌的標準檔案格式) 檔案中 [Source 1, Source 8]。日後在辦公室電腦修改程式碼並執行 確定性回放(Deterministic Replay,在電腦中毫厘不差地再次重現過去機器人運行時的準確輸入與順序的技術) 時,就能完美重現發生事故當下的狀況 [Source 1, Source 10]。由於能夠以位元(Byte)為單位精確比較與驗證程式碼是否正常運作、在哪裡出現偏差,使得「抓鬼除錯」成為可能 [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 時代的核心基礎設施。
參考資料
- Show HN: Cerulion – ROS 2-compatible robotics runtime with multi-process replay
- Cerulion — Robot middleware that just works
-
[Cerulion: Open source operating system for robots Y Combinator](https://www.ycombinator.com/companies/cerulion) - cerulion_cli 1.0.0 - Docs.rs
- MCAP recordings, ROS 2 and Rust support · Cerulion
- Cerulion - Cerulion Docs
- cerulion/docs/ros2_replay.md at main · cerulion-inc/cerulion …
- Why Cerulion - Cerulion Docs
- Python
- Rust
- C++
- 單進程取捨
- 零拷貝共享記憶體(Zero-copy Shared Memory)
- 雲端串流
- 透過標準 MCAP 記錄進行確定性回放與驗證
- 自動刪除數據
- 專用雲端備份儲存