告別ROS的繁瑣,易用易學的機器人學習系統:華為諾亞面向機器人學習的開源Python框架
近年來,機器人技術在硬件領域取得了顯著突破 —— 無論是 DARPA 機器人挑戰賽,還是首屆人形機器人自由搏擊表演,都展示了令人矚目的進展。然而,機器人的自主能力仍明顯落后于機器學習的發展步伐。
造成這一差距的關鍵瓶頸在于軟件層面:現有的機器人技術棧學習門檻較高,仍大量依賴 C/C++ 進行底層開發,工具鏈分散且硬件集成復雜。相比之下,推動現代人工智能發展的生態系統以 Python 為核心,文檔完善、易于使用 —— 兩者形成了鮮明對比。
為應對這些挑戰,來自華為諾亞方舟實驗室,德國達姆施塔特工業大學,英國倫敦大學學院,帝國理工學院和牛津大學的研究者們聯合推出了 Ark —— 一個基于 Python 的機器人開發框架,支持快速原型構建,并可便捷地在仿真和真實機器人系統上部署新算法。
Ark 與主流機器學習工作流深度兼容,能夠從仿真環境或實際機器人中采集和預處理數據,并支持使用如 ACT、Diffusion Policy 等前沿模仿學習方法進行策略訓練。該框架采用類似 OpenAI Gym 風格的主接口設計,極大降低了機器學習研究者的上手門檻,便于集成與實驗。在架構層面,Ark 使用基于網絡的 Python 節點實現發布 / 訂閱通信機制,同時也提供 C/C++ 工具以兼容高性能需求場景。框架還內置了對 ROS 的原生支持,包含底層控制、數據工具、可視化、系統辨識、移動底盤導航等多個核心模塊,并配備完整的文檔與實用示例。

圖 1: Ark 的整體框架

- 論文鏈接:https://arxiv.org/pdf/2506.21628
- 代碼鏈接:https://github.com/Robotics-Ark
- 教程鏈接:https://arkrobotics.notion.site/Ark-Home-22be053d9c6f8096bcdbefd6276aba61

圖 2: Ark 目前的下載量
Ark 框架概述
為推進具身智能研究的發展,Ark 應運而生。該框架致力于與典型機器學習工作流深度整合,使用戶能夠快速構建原型并將其部署至物理機器人。其設計秉持三大理念:
(D1)兼容主流機器學習生態
Ark 提供與廣泛使用的機器學習庫一致的用戶接口,降低機器學習背景研究者參與機器人開發的門檻,彌補機器人學習系統在成熟度與標準化方面的不足。
(D2)支持仿真 - 實機無縫切換
Ark 著力打通模擬環境與真實系統之間的壁壘,既保障開發階段的安全性,也顯著降低從仿真遷移到實機過程中的復雜度和錯誤率。
(D3)以 Python 為中心,兼顧高性能需求
Ark 以 Python 作為核心開發語言,依托其豐富的生態系統支持快速迭代與實驗。同時,針對高頻任務(如底層運動控制),也提供了便捷的 C/C++ 接口擴展能力,確保關鍵模塊的執行效率。
下文將具體介紹 Ark 的核心功能與實現特點。
Ark 網絡
模塊化是機器人軟件系統設計的一項基本原則:通過將系統拆分為數據采集、狀態估計、任務規劃與控制等獨立模塊,可有效提升可維護性和擴展性。Ark 框架將每個模塊實現為獨立的 Python 進程(稱為 “節點”),節點之間通過異步消息通道進行通信,采用靈活的發布 / 訂閱機制實現數據交換。用戶可通過形如 NODE_NAME/CHANNEL_NAME 的命名方式定義通道,并動態創建發布端和訂閱端。我們遵循 LCM 類型規范語言定義消息類型,每個消息通道通過名稱和消息類型標識。Ark 提供名為 ark_types 的消息類型庫,包含多種機器常用類型(如 joint_state_t 或 transform_t)。
當前版本中,Ark 使用 LCM 作為底層通信后端,其輕量化架構和豐富的配套工具(如日志記錄、調試和內省支持)特別適用于機器人系統中的數據記錄與開發調試。同時,網絡層被設計為可插拔結構,便于未來擴展如分布式訓練與推理等復雜機器學習工作流。
使用 LCM 的另一優勢是易于集成 C/C++/Java 等底層語言。由于 Ark 節點通過 LCM 消息通道通信,其他語言編寫的腳本也可利用標準 LCM 接口進行網絡通信。這對于僅支持廠商提供的 C/C++/Java API 的硬件設備(如力反饋接口)非常有用。用戶可通過實現相應的 LCM 發布 / 訂閱接口將設備接入 Ark。然而,基于 Ark 在仿真與真實環境間協調的架構設計(后文討論),以 LCM 作為其他語言與 Python 之間的橋梁并非總是最佳選擇。為此,Ark 提供一系列工具和輔助函數 / 類,幫助用戶直接將 C/C++ 功能封裝到 Python。
Ark 還提供以下功能:
- Services:為需明確請求 - 響應的操作(如機械臂標定觸發)提供支持,基于 LCM 類型系統定義請求與響應結構;
- Registry:作為輕量級的網絡協調與服務發現樞紐,支持運行時可視化與故障隔離;
- Launcher:允許用戶在單一 YAML 格式配置文件中定義整個網絡,通過一次終端執行自動啟動所有指定子進程。
觀測與動作通道
Ark 采用 Gymnasium(OpenAI Gym)風格的接口設計:reset () 方法返回初始觀測值和環境信息;step () 方法則返回下一步的觀測值、獎勵、終止 / 截斷標志以及信息字典。每個環境在初始化時通過一個字典結構分別定義其觀測空間與動作空間所依賴的消息通道:觀測空間通過訂閱多個消息通道獲取數據,動作空間則通過向指定通道發布指令來控制機器人。不同觀測通道可支持不同的采樣頻率,環境在每一步執行時自動返回各通道最新的一條消息。這種設計使研究者能夠快速原型化不同的策略輸入輸出組合,靈活適配多種算法與任務結構。
真實世界與物理仿真
Ark 的一大能力是通過單個配置開關在仿真與真實機器人之間切換(sim = True/False)。Ark 以分布式節點架構把機器人與傳感器(無論真實還是仿真)都實現為獨立節點;仿真端由一份 YAML 配置驅動,使仿真與真實系統接口的節點保持一致,從而可以在仿真模擬和現實部署中輕松切換。
在仿真后端上,Ark 并不是綁定單一模擬器,而是提供后端抽象層以便按需對接。當前 Ark 已支持 PyBullet 與 MuJoCo,后續計劃集成 Isaac Sim 等;仿真 / 現實的切換和后端選擇全部通過 YAML 配置完成,Ark 自動初始化相應驅動,保證消息模式、通道命名與執行流程保持一致。

圖 2: Ark 使用統一配置文件來實例化反映真實世界部署的分布式模擬系統
機器人與傳感器驅動
Ark 雖然在用戶接口層面(如類 Gym 的交互方式)提供了標準化的設計,但整個框架在架構上保持了高度的可擴展性。自設計之初,我們就以廣泛的機器人及傳感器兼容性為目標,致力于支持多樣化的硬件生態。與近年出現的某些僅針對特定機型(如 LeRobot、PyRobot)的框架不同,Ark 旨在支持更多的硬件,并通過多種靈活的對接機制實現通用化集成。
Python 驅動接口:
Ark 提供了抽象基類 ComponentDriver,用于統一硬件組件與框架的集成方式。用戶在實現具體驅動時,只需繼承該類并重寫標準抽象方法,例如傳感器的 get_data 或機器人的 send_command。每個驅動均可與 Ark 的 “仿真 - 現實” 開關無縫集成,系統會根據全局配置自動將消息路由到真實硬件或對應的仿真節點。
C++ 驅動支持:
在很多實際場景中,仍然需要依賴 C/C++ 實現底層驅動,例如某些設備僅提供原生 C/C++ 接口,或需要高采樣率以滿足實時控制需求(如足式機器人的步行控制)。為此,Ark 提供基于 pybind11 的 C++ 封裝工具,使得僅具備 C++ 接口的硬件也能夠以與 Python 驅動一致的方式接入 Ark,在保持性能的同時實現系統一體化。
ROS–Ark 橋接:
目前 ROS 仍是機器人領域應用最廣泛的中間件體系,部分機器人(如 ViperX 機械臂)僅提供基于 ROS 的官方接口。為兼容此類系統,Ark 提供專用的 ROS–Ark 橋接驅動,可實現 ROS topic 與 Ark 消息通道之間的雙向通信。用戶可在不改動原有 ROS 代碼的前提下,實現 ROS 與 Ark 的混合運行,這也為從 ROS 逐步遷移至 Ark 提供了平滑過渡路徑。根據我們與多家機器人實驗室的實際使用反饋,目前橋接器主要支持 ROS 1;對 ROS 2 的支持將根據社區需求進一步評估和推進。
內省與調試工具
機器人系統通常由多個進程構成,模塊間耦合復雜,因此一套完善的可視化與調試工具對快速定位和解決問題至關重要。Ark 為此提供了以下核心工具:
- Ark Graph:實時顯示系統中所有活躍節點、它們發布與訂閱的消息通道以及當前可用的服務,幫助用戶快速理解系統拓撲和通信關系。
- Ark Plot:支持對任意數值型消息通道進行實時繪圖,可用于觀察變量隨時間的變化趨勢,例如整定控制參數或診斷傳感器數據行為。
- Ark Viewer:實時可視化任意基于 LCM 傳輸的圖像消息通道,適用于相機標定、運行監控和圖像算法調試。
此外,Ark 選擇 LCM 作為通信中間件的另一個重要原因,在于其原生提供的調試與內省工具套件。例如 lcm-spy 能夠以圖形化方式查看網絡中流通的消息,提供類似于 Wireshark 或 tcpdump 的抓包分析體驗,用戶可以查看各通道的詳細統計信息,包括接收消息數量、消息頻率(Hz)、網絡抖動(ms)等關鍵指標,極大增強了系統的可觀測性與調試效率。

圖 3: Ark 可視化調試工具
用例
本節將通過一系列典型用例,展示如何使用 Ark 快速構建常見的機器人學習工作流。所有示例均提供完整代碼,以便讀者復現和實踐。
在仿真與現實之間切換
將訓練好的策略部署至真實機器人往往伴隨顯著的安全與工程化挑戰,而許多現有框架缺乏端到端的一體化流程,導致解決方案分散、難以系統化和泛化。Ark 通過一層高度可配置的抽象機制,基于統一的 Python/C++ 驅動架構,實現了從仿真到真實系統的無縫部署。用戶只需在完成環境(包括機器人、傳感器、物體等)的統一定義后,于配置文件中切換 sim=True/False,即可切換至目標運行環境。
我們在 ViperX 300s 固定基座機械臂上進行了抓取 - 放置任務的實例驗證。整個環境通過一份 YAML 配置文件統一指定,包括物體的初始位置、相機與機器人的位姿以及物理參數。觀測值為當前關節位置指令,動作為目標關節速度。仿真和真實環境均使用同一人工編寫的專家策略進行控制。在向真實機器人遷移時,僅需修改一個配置變量 sim,Ark 便在內部自動將消息通道從仿真驅動程序切換至物理硬件驅動,其余所有代碼及數據結構均無需變更。

圖 4: 基于統一配置的 Ark 分布式仿真系統架構,通過 YAML 文件定義機器人、傳感器及組網參數,實現與真實部署一致的多節點仿真,支持策略無縫遷移
模仿學習的數據采集
模仿學習通常需要大規模的高質量演示數據,目前常見的采集方式主要包括以下兩種:
- 徒手示教(Kinesthetic Teaching):操作者直接通過物理引導機械臂完成動作任務。這種方式直觀自然,但存在設備安全與人員操作風險;
- 遙操作(Teleoperation):通過 VR 頭顯與手柄、游戲手柄等設備,在安全距離外對機器人進行控制。該方法避免了直接接觸,但可能受限于視覺反饋質量和運動映射準確性,對操作者技能有一定要求。
得益于 Ark 高度模塊化的架構和強類型消息通道機制,用戶可以靈活接入不同類型的示教接口。我們利用 LCM 提供的 lcm-logger 工具實時記錄所有通道的數據至日志文件。Ark 內置從日志中提取數據并轉換為 CSV 格式的工具,并支持沿用環境中已定義的觀測與動作通道配置,從而確保數據格式在采集、訓練與最終部署階段完全一致。
徒手示教:
以 ViperX 300s 機械臂為例,操作者可直接牽引機械臂完成目標任務,LCM 同步記錄完整的關節軌跡與系統狀態。盡管在該示例中相機未參與控制回路,但仍可用于錄制視覺數據以供后續分析。演示結束后,記錄的數據既可用于策略訓練,也可通過 lcm-logplayer 進行逐幀回放,這對于處理包含人體影像(可能引入視覺偏置)或復雜物理交互的任務尤為有用。Ark 還提供了一鍵重置服務,例如將 “重置” 操作綁定至鍵盤按鍵,極大方便了連續多次示教與系統評估。
遙操作:
Ark 支持多種輸入設備,如 VR 控制器與游戲手柄(如 PS4 手柄)。在一種典型配置中,用戶通過 VR 控制器實時發送 6 自由度位姿指令,系統通過逆運動學(IK)節點將其轉化為關節速度目標;另一種配置則使用手柄直接控制機械臂末端位姿。整個數據采集流程由一系列可復用的 Ark 節點協同完成,包括手柄控制節點、環境轉換節點(將手柄信號轉為末端目標)、IK 解算節點(將位姿轉為關節指令),以及用于發布圖像和關節狀態的傳感器節點。憑借 LCM 強類型和通道隔離的特性,更換相機或控制器時無需修改其他模塊。采集完成后,用戶可使用相同的通道配置從日志中提取標準化數據,直接用于訓練。操作者還可通過手柄的 “X” 鍵快捷保存當前軌跡并觸發機械臂復位至中立姿態。

圖 5: lcm-logger 通過記錄來自多種控制接口的演示實現高效的數據采集
模仿學習
在本節中,我們展示了若干實現模仿學習的應用案例,重點介紹如何使用 Ark 進行數據采集、訓練和策略部署。我們將展示了兩種模仿學習方法:(i)Diffusion Policy,(ii)ACT,Ark 作為核心基礎設施,提供模塊化組件、標準化接口和實時通信機制,顯著簡化了從數據收集到策略部署的整個流程。
Diffusion Policy 實現與部署示例:
我們在 ViperX 300s 機械臂與 Intel RealSense RGB 相機上完成了推動任務(pushing)Diffusion Policy 實驗。該任務的觀測空間包括機器人關節位置及連續的 RGB 圖像流,動作空間為關節位置指令。在部署階段,系統完全復用了數據采集時的架構:僅將原本的 “手柄控制節點” 替換為 “策略節點”。該策略節點從觀測通道讀取圖像和關節狀態,并通過同一動作通道發布目標末端位姿。由于執行通路與采集階段保持一致,用戶無需修改任何底層基礎設施即可直接驗證學習到的策略。

圖 6: Viper X 300s 機械臂執行擴散策略的連續動作序列
ACT 實現與部署示例:
除擴散策略外,我們還基于 OpenPyro-A1 人形機器人平臺實現了 ACT 方法的示例。通過 VR 設備進行遙操作,收集了包括 “衣服整理” 與 “物體接力” 在內的多類任務數據。通過訓練得到的策略能夠生成精細且包含豐富接觸交互的操作行為,展現出較強的泛化與實物操作能力。

圖 7: OpenPyro 使用 ACT 策略執行衣服整理和物體接力任務
移動機器人
許多現實任務(如設備巡檢)要求機器人能夠在環境中自主移動至多個目標點。實現該能力需同時解決兩個問題:構建環境地圖(建圖)并在地圖中實時定位自身(定位),這一過程合稱為同步定位與建圖(SLAM)。當地圖構建完成且定位穩定可靠后,機器人即可通過路徑規劃算法實現導航。
我們在 Ark 中實現了一套完整的移動機器人導航流程:首先通過遙操作控制機器人運動,并利用機載 LiDAR 數據構建地圖;建圖完成后,使用 A* 算法進行全局路徑規劃,并結合距離變換技術確保與障礙物保持安全距離;最后通過 PD 控制器跟蹤路徑點,生成差速驅動所需的輪速指令。
建圖:
為實現建圖與定位,Ark 提供了一套 “遙操作輔助 SLAM” 流程,包含兩個核心節點:遙操作控制器與概率 SLAM 模塊,兩者通過消息通道通信。用戶通過遙操作節點發送線速度和角速度指令,這些指令經 Ark 動作通道發送至底層控制器,轉換為左右輪速。同時,LiDAR 數據與控制指令被實時發送至 SLAM 節點,用于融合估計機器人位姿并構建地圖。我們采用基于 Rao–Blackwellized 粒子濾波的 FastSLAM 方法:每個粒子同時維護位姿估計和一個占據柵格地圖,柵格概率取值從 0(空閑)到 1(占據)。系統結構如圖 8 所示。

圖 8:Husky 機器人在 Ark 工具支持下于廚房環境實現 SLAM 建圖與導航
導航:
在已知地圖且能可靠定位的基礎上,機器人可進行運動規劃。我們集成 A* 算法作為全局規劃器。規劃器接收目標點位置和 SLAM 生成的占據柵格地圖。首先通過閾值將地圖二值化,再計算距離變換圖以獲取每個柵格到最近障礙物的距離,確保路徑滿足 “半車寬 + 安全裕量” 的避障要求。A* 輸出一條平滑的避障路徑,表示為一系列笛卡爾路標點 (x,y),并按設定分辨率進行下采樣以提高執行效率。控制子系統根據實時位姿和路徑點序列逐點跟蹤:先調整機器人朝向,再沿直線移動至當前路標,進入容差范圍后自動切換下一目標。最終輸出線速度和角速度,并轉換為差速驅動的輪速指令。
具身智能
大語言模型(LLM)與視覺 - 語言模型(VLM)顯著提升了機器人的高層推理能力。Ark 憑借其模塊化設計與 Python 優先的架構,天然適合將 LLM/VLM 作為高層策略選擇器集成到機器人控制回路中。
我們在 Viper 機械臂上構建了一個基于 LLM 的智能體系統(圖 9),采用 DeepSeek-R1 作為底層模型,遵循 “代碼即策略(code-as-policy)” 范式:將 “抓取”“按位置放置”“移除物體” 等操作封裝為可參數化的策略函數。這些函數組成策略庫供 LLM 調用,模型根據任務上下文從庫中選擇合適技能并生成代碼執行。
Ark 將整個系統解耦為感知、語言推理與運動執行等多個獨立節點。DeepSeek 被封裝為一個服務節點,接收結構化提示詞(包含場景觀測、可用函數和任務描述)并返回推理結果。每一步決策中,感知節點將棋盤狀態、圖像等觀測數據發布到消息通道,經整理后通過服務調用發送至 LLM 節點,觸發一次策略生成。

圖 9:Ark 框架通過集成 DeepSeek 大模型賦予 Viper 機械臂國際象棋對弈能力
未來工作和總結
展望未來,Ark 計劃重點發展兩大方向:一是強化強化學習(RL)基礎設施,通過原生集成 Stable Baselines3 和 RLlib 等主流框架,支持并行環境執行,并提供統一的環境抽象接口,實現在仿真與真實機器人之間高效訓練、評估和部署 RL 策略;二是提升高保真仿真能力,在現有 PyBullet 和 MuJoCo 支持的基礎上,進一步引入域隨機化、可微物理等關鍵特性,增強策略的魯棒性和仿真到現實的遷移效果,同時與高性能仿真后端深度集成,構建更精確、可擴展且功能豐富的模擬環境。
Ark 以現代化、模塊化和用戶友好的架構,致力于在機器人學與機器學習之間建立高效橋梁:既大幅降低了真實機器人部署的技術門檻,又保持了面向前沿研究的靈活性與擴展性。隨著仿真性能的提升、RL 生態融合的深化以及工具鏈的持續完善,Ark 有望發展成為支撐具身智能研究的重要通用平臺,推動機器人學習社區不斷向前邁進。

表 1:Ark 與同類框架的功能對比,紅色圓圈表示該框架不支持該特性































