近年來(lái),機(jī)器人技術(shù)在硬件領(lǐng)域取得了顯著突破 —— 無(wú)論是 DARPA 機(jī)器人挑戰(zhàn)賽,還是首屆人形機(jī)器人自由搏擊表演,都展示了令人矚目的進(jìn)展。然而,機(jī)器人的自主能力仍明顯落后于機(jī)器學(xué)習(xí)的發(fā)展步伐。
造成這一差距的關(guān)鍵瓶頸在于軟件層面:現(xiàn)有的機(jī)器人技術(shù)棧學(xué)習(xí)門(mén)檻較高,仍大量依賴(lài) C/C++ 進(jìn)行底層開(kāi)發(fā),工具鏈分散且硬件集成復(fù)雜。相比之下,推動(dòng)現(xiàn)代人工智能發(fā)展的生態(tài)系統(tǒng)以 Python 為核心,文檔完善、易于使用 —— 兩者形成了鮮明對(duì)比。
為應(yīng)對(duì)這些挑戰(zhàn),來(lái)自華為諾亞方舟實(shí)驗(yàn)室,德國(guó)達(dá)姆施塔特工業(yè)大學(xué),英國(guó)倫敦大學(xué)學(xué)院,帝國(guó)理工學(xué)院和牛津大學(xué)的研究者們聯(lián)合推出了Ark —— 一個(gè)基于 Python 的機(jī)器人開(kāi)發(fā)框架,支持快速原型構(gòu)建,并可便捷地在仿真和真實(shí)機(jī)器人系統(tǒng)上部署新算法
Ark 與主流機(jī)器學(xué)習(xí)工作流深度兼容,能夠從仿真環(huán)境或?qū)嶋H機(jī)器人中采集和預(yù)處理數(shù)據(jù),并支持使用如 ACT、Diffusion Policy 等前沿模仿學(xué)習(xí)方法進(jìn)行策略訓(xùn)練。該框架采用類(lèi)似 OpenAI Gym 風(fēng)格的主接口設(shè)計(jì),極大降低了機(jī)器學(xué)習(xí)研究者的上手門(mén)檻,便于集成與實(shí)驗(yàn)。在架構(gòu)層面,Ark 使用基于網(wǎng)絡(luò)的 Python 節(jié)點(diǎn)實(shí)現(xiàn)發(fā)布 / 訂閱通信機(jī)制,同時(shí)也提供 C/C++ 工具以兼容高性能需求場(chǎng)景??蚣苓€內(nèi)置了對(duì) ROS 的原生支持,包含底層控制、數(shù)據(jù)工具、可視化、系統(tǒng)辨識(shí)、移動(dòng)底盤(pán)導(dǎo)航等多個(gè)核心模塊,并配備完整的文檔與實(shí)用示例。
圖 1: Ark 的整體框架
論文鏈接:https://arxiv.org/pdf/2506.21628代碼鏈接:https://github.com/Robotics-Ark教程鏈接:https://arkrobotics.notion.site/Ark-Home-22be053d9c6f8096bcdbefd6276aba61
圖 2: Ark 目前的下載量
Ark 框架概述
為推進(jìn)具身智能研究的發(fā)展,Ark 應(yīng)運(yùn)而生。該框架致力于與典型機(jī)器學(xué)習(xí)工作流深度整合,使用戶能夠快速構(gòu)建原型并將其部署至物理機(jī)器人。其設(shè)計(jì)秉持三大理念:
(D1)兼容主流機(jī)器學(xué)習(xí)生態(tài)
Ark 提供與廣泛使用的機(jī)器學(xué)習(xí)庫(kù)一致的用戶接口,降低機(jī)器學(xué)習(xí)背景研究者參與機(jī)器人開(kāi)發(fā)的門(mén)檻,彌補(bǔ)機(jī)器人學(xué)習(xí)系統(tǒng)在成熟度與標(biāo)準(zhǔn)化方面的不足。
(D2)支持仿真 - 實(shí)機(jī)無(wú)縫切換
Ark 著力打通模擬環(huán)境與真實(shí)系統(tǒng)之間的壁壘,既保障開(kāi)發(fā)階段的安全性,也顯著降低從仿真遷移到實(shí)機(jī)過(guò)程中的復(fù)雜度和錯(cuò)誤率。
(D3)以 Python 為中心,兼顧高性能需求
Ark 以 Python 作為核心開(kāi)發(fā)語(yǔ)言,依托其豐富的生態(tài)系統(tǒng)支持快速迭代與實(shí)驗(yàn)。同時(shí),針對(duì)高頻任務(wù)(如底層運(yùn)動(dòng)控制),也提供了便捷的 C/C++ 接口擴(kuò)展能力,確保關(guān)鍵模塊的執(zhí)行效率。
下文將具體介紹 Ark 的核心功能與實(shí)現(xiàn)特點(diǎn)。
Ark 網(wǎng)絡(luò)
模塊化是機(jī)器人軟件系統(tǒng)設(shè)計(jì)的一項(xiàng)基本原則:通過(guò)將系統(tǒng)拆分為數(shù)據(jù)采集、狀態(tài)估計(jì)、任務(wù)規(guī)劃與控制等獨(dú)立模塊,可有效提升可維護(hù)性和擴(kuò)展性。Ark 框架將每個(gè)模塊實(shí)現(xiàn)為獨(dú)立的 Python 進(jìn)程(稱(chēng)為 “節(jié)點(diǎn)”),節(jié)點(diǎn)之間通過(guò)異步消息通道進(jìn)行通信,采用靈活的發(fā)布 / 訂閱機(jī)制實(shí)現(xiàn)數(shù)據(jù)交換。用戶可通過(guò)形如 NODE_NAME/CHANNEL_NAME 的命名方式定義通道,并動(dòng)態(tài)創(chuàng)建發(fā)布端和訂閱端。我們遵循 LCM 類(lèi)型規(guī)范語(yǔ)言定義消息類(lèi)型,每個(gè)消息通道通過(guò)名稱(chēng)和消息類(lèi)型標(biāo)識(shí)。Ark 提供名為 ark_types 的消息類(lèi)型庫(kù),包含多種機(jī)器常用類(lèi)型(如 joint_state_t 或 transform_t)。
當(dāng)前版本中,Ark 使用 LCM 作為底層通信后端,其輕量化架構(gòu)和豐富的配套工具(如日志記錄、調(diào)試和內(nèi)省支持)特別適用于機(jī)器人系統(tǒng)中的數(shù)據(jù)記錄與開(kāi)發(fā)調(diào)試。同時(shí),網(wǎng)絡(luò)層被設(shè)計(jì)為可插拔結(jié)構(gòu),便于未來(lái)擴(kuò)展如分布式訓(xùn)練與推理等復(fù)雜機(jī)器學(xué)習(xí)工作流。
使用 LCM 的另一優(yōu)勢(shì)是易于集成 C/C++/Java 等底層語(yǔ)言。由于 Ark 節(jié)點(diǎn)通過(guò) LCM 消息通道通信,其他語(yǔ)言編寫(xiě)的腳本也可利用標(biāo)準(zhǔn) LCM 接口進(jìn)行網(wǎng)絡(luò)通信。這對(duì)于僅支持廠商提供的 C/C++/Java API 的硬件設(shè)備(如力反饋接口)非常有用。用戶可通過(guò)實(shí)現(xiàn)相應(yīng)的 LCM 發(fā)布 / 訂閱接口將設(shè)備接入 Ark。然而,基于 Ark 在仿真與真實(shí)環(huán)境間協(xié)調(diào)的架構(gòu)設(shè)計(jì)(后文討論),以 LCM 作為其他語(yǔ)言與 Python 之間的橋梁并非總是最佳選擇。為此,Ark 提供一系列工具和輔助函數(shù) / 類(lèi),幫助用戶直接將 C/C++ 功能封裝到 Python。
Ark 還提供以下功能:
Services:為需明確請(qǐng)求 - 響應(yīng)的操作(如機(jī)械臂標(biāo)定觸發(fā))提供支持,基于 LCM 類(lèi)型系統(tǒng)定義請(qǐng)求與響應(yīng)結(jié)構(gòu);Registry:作為輕量級(jí)的網(wǎng)絡(luò)協(xié)調(diào)與服務(wù)發(fā)現(xiàn)樞紐,支持運(yùn)行時(shí)可視化與故障隔離;Launcher:允許用戶在單一 YAML 格式配置文件中定義整個(gè)網(wǎng)絡(luò),通過(guò)一次終端執(zhí)行自動(dòng)啟動(dòng)所有指定子進(jìn)程。
觀測(cè)與動(dòng)作通道
Ark 采用 Gymnasium(OpenAI Gym)風(fēng)格的接口設(shè)計(jì):reset () 方法返回初始觀測(cè)值和環(huán)境信息;step () 方法則返回下一步的觀測(cè)值、獎(jiǎng)勵(lì)、終止 / 截?cái)鄻?biāo)志以及信息字典。每個(gè)環(huán)境在初始化時(shí)通過(guò)一個(gè)字典結(jié)構(gòu)分別定義其觀測(cè)空間與動(dòng)作空間所依賴(lài)的消息通道:觀測(cè)空間通過(guò)訂閱多個(gè)消息通道獲取數(shù)據(jù),動(dòng)作空間則通過(guò)向指定通道發(fā)布指令來(lái)控制機(jī)器人。不同觀測(cè)通道可支持不同的采樣頻率,環(huán)境在每一步執(zhí)行時(shí)自動(dòng)返回各通道最新的一條消息。這種設(shè)計(jì)使研究者能夠快速原型化不同的策略輸入輸出組合,靈活適配多種算法與任務(wù)結(jié)構(gòu)。
真實(shí)世界與物理仿真
Ark 的一大能力是通過(guò)單個(gè)配置開(kāi)關(guān)在仿真與真實(shí)機(jī)器人之間切換(sim = True/False)。Ark 以分布式節(jié)點(diǎn)架構(gòu)把機(jī)器人與傳感器(無(wú)論真實(shí)還是仿真)都實(shí)現(xiàn)為獨(dú)立節(jié)點(diǎn);仿真端由一份 YAML 配置驅(qū)動(dòng),使仿真與真實(shí)系統(tǒng)接口的節(jié)點(diǎn)保持一致,從而可以在仿真模擬和現(xiàn)實(shí)部署中輕松切換。
在仿真后端上,Ark 并不是綁定單一模擬器,而是提供后端抽象層以便按需對(duì)接。當(dāng)前 Ark 已支持 PyBullet 與 MuJoCo,后續(xù)計(jì)劃集成 Isaac Sim 等;仿真 / 現(xiàn)實(shí)的切換和后端選擇全部通過(guò) YAML 配置完成,Ark 自動(dòng)初始化相應(yīng)驅(qū)動(dòng),保證消息模式、通道命名與執(zhí)行流程保持一致。
圖 2: Ark 使用統(tǒng)一配置文件來(lái)實(shí)例化反映真實(shí)世界部署的分布式模擬系統(tǒng)
機(jī)器人與傳感器驅(qū)動(dòng)
Ark 雖然在用戶接口層面(如類(lèi) Gym 的交互方式)提供了標(biāo)準(zhǔn)化的設(shè)計(jì),但整個(gè)框架在架構(gòu)上保持了高度的可擴(kuò)展性。自設(shè)計(jì)之初,我們就以廣泛的機(jī)器人及傳感器兼容性為目標(biāo),致力于支持多樣化的硬件生態(tài)。與近年出現(xiàn)的某些僅針對(duì)特定機(jī)型(如 LeRobot、PyRobot)的框架不同,Ark 旨在支持更多的硬件,并通過(guò)多種靈活的對(duì)接機(jī)制實(shí)現(xiàn)通用化集成。
Python 驅(qū)動(dòng)接口:
Ark 提供了抽象基類(lèi) ComponentDriver,用于統(tǒng)一硬件組件與框架的集成方式。用戶在實(shí)現(xiàn)具體驅(qū)動(dòng)時(shí),只需繼承該類(lèi)并重寫(xiě)標(biāo)準(zhǔn)抽象方法,例如傳感器的 get_data 或機(jī)器人的 send_command。每個(gè)驅(qū)動(dòng)均可與 Ark 的 “仿真 - 現(xiàn)實(shí)” 開(kāi)關(guān)無(wú)縫集成,系統(tǒng)會(huì)根據(jù)全局配置自動(dòng)將消息路由到真實(shí)硬件或?qū)?yīng)的仿真節(jié)點(diǎn)。
C++ 驅(qū)動(dòng)支持:
在很多實(shí)際場(chǎng)景中,仍然需要依賴(lài) C/C++ 實(shí)現(xiàn)底層驅(qū)動(dòng),例如某些設(shè)備僅提供原生 C/C++ 接口,或需要高采樣率以滿足實(shí)時(shí)控制需求(如足式機(jī)器人的步行控制)。為此,Ark 提供基于 pybind11 的 C++ 封裝工具,使得僅具備 C++ 接口的硬件也能夠以與 Python 驅(qū)動(dòng)一致的方式接入 Ark,在保持性能的同時(shí)實(shí)現(xiàn)系統(tǒng)一體化。
ROS–Ark 橋接:
目前 ROS 仍是機(jī)器人領(lǐng)域應(yīng)用最廣泛的中間件體系,部分機(jī)器人(如 ViperX 機(jī)械臂)僅提供基于 ROS 的官方接口。為兼容此類(lèi)系統(tǒng),Ark 提供專(zhuān)用的 ROS–Ark 橋接驅(qū)動(dòng),可實(shí)現(xiàn) ROS topic 與 Ark 消息通道之間的雙向通信。用戶可在不改動(dòng)原有 ROS 代碼的前提下,實(shí)現(xiàn) ROS 與 Ark 的混合運(yùn)行,這也為從 ROS 逐步遷移至 Ark 提供了平滑過(guò)渡路徑。根據(jù)我們與多家機(jī)器人實(shí)驗(yàn)室的實(shí)際使用反饋,目前橋接器主要支持 ROS 1;對(duì) ROS 2 的支持將根據(jù)社區(qū)需求進(jìn)一步評(píng)估和推進(jìn)。
內(nèi)省與調(diào)試工具
機(jī)器人系統(tǒng)通常由多個(gè)進(jìn)程構(gòu)成,模塊間耦合復(fù)雜,因此一套完善的可視化與調(diào)試工具對(duì)快速定位和解決問(wèn)題至關(guān)重要。Ark 為此提供了以下核心工具:
Ark Graph:實(shí)時(shí)顯示系統(tǒng)中所有活躍節(jié)點(diǎn)、它們發(fā)布與訂閱的消息通道以及當(dāng)前可用的服務(wù),幫助用戶快速理解系統(tǒng)拓?fù)浜屯ㄐ抨P(guān)系。Ark Plot:支持對(duì)任意數(shù)值型消息通道進(jìn)行實(shí)時(shí)繪圖,可用于觀察變量隨時(shí)間的變化趨勢(shì),例如整定控制參數(shù)或診斷傳感器數(shù)據(jù)行為。Ark Viewer:實(shí)時(shí)可視化任意基于 LCM 傳輸?shù)膱D像消息通道,適用于相機(jī)標(biāo)定、運(yùn)行監(jiān)控和圖像算法調(diào)試。
此外,Ark 選擇 LCM 作為通信中間件的另一個(gè)重要原因,在于其原生提供的調(diào)試與內(nèi)省工具套件。例如 lcm-spy 能夠以圖形化方式查看網(wǎng)絡(luò)中流通的消息,提供類(lèi)似于 Wireshark 或 tcpdump 的抓包分析體驗(yàn),用戶可以查看各通道的詳細(xì)統(tǒng)計(jì)信息,包括接收消息數(shù)量、消息頻率(Hz)、網(wǎng)絡(luò)抖動(dòng)(ms)等關(guān)鍵指標(biāo),極大增強(qiáng)了系統(tǒng)的可觀測(cè)性與調(diào)試效率。
圖 3: Ark 可視化調(diào)試工具
用例
本節(jié)將通過(guò)一系列典型用例,展示如何使用 Ark 快速構(gòu)建常見(jiàn)的機(jī)器人學(xué)習(xí)工作流。所有示例均提供完整代碼,以便讀者復(fù)現(xiàn)和實(shí)踐。
在仿真與現(xiàn)實(shí)之間切換
將訓(xùn)練好的策略部署至真實(shí)機(jī)器人往往伴隨顯著的安全與工程化挑戰(zhàn),而許多現(xiàn)有框架缺乏端到端的一體化流程,導(dǎo)致解決方案分散、難以系統(tǒng)化和泛化。Ark 通過(guò)一層高度可配置的抽象機(jī)制,基于統(tǒng)一的 Python/C++ 驅(qū)動(dòng)架構(gòu),實(shí)現(xiàn)了從仿真到真實(shí)系統(tǒng)的無(wú)縫部署。用戶只需在完成環(huán)境(包括機(jī)器人、傳感器、物體等)的統(tǒng)一定義后,于配置文件中切換 sim=True/False,即可切換至目標(biāo)運(yùn)行環(huán)境。
我們?cè)?ViperX 300s 固定基座機(jī)械臂上進(jìn)行了抓取 - 放置任務(wù)的實(shí)例驗(yàn)證。整個(gè)環(huán)境通過(guò)一份 YAML 配置文件統(tǒng)一指定,包括物體的初始位置、相機(jī)與機(jī)器人的位姿以及物理參數(shù)。觀測(cè)值為當(dāng)前關(guān)節(jié)位置指令,動(dòng)作為目標(biāo)關(guān)節(jié)速度。仿真和真實(shí)環(huán)境均使用同一人工編寫(xiě)的專(zhuān)家策略進(jìn)行控制。在向真實(shí)機(jī)器人遷移時(shí),僅需修改一個(gè)配置變量 sim,Ark 便在內(nèi)部自動(dòng)將消息通道從仿真驅(qū)動(dòng)程序切換至物理硬件驅(qū)動(dòng),其余所有代碼及數(shù)據(jù)結(jié)構(gòu)均無(wú)需變更。
圖 4: 基于統(tǒng)一配置的 Ark 分布式仿真系統(tǒng)架構(gòu),通過(guò) YAML 文件定義機(jī)器人、傳感器及組網(wǎng)參數(shù),實(shí)現(xiàn)與真實(shí)部署一致的多節(jié)點(diǎn)仿真,支持策略無(wú)縫遷移
模仿學(xué)習(xí)的數(shù)據(jù)采集
模仿學(xué)習(xí)通常需要大規(guī)模的高質(zhì)量演示數(shù)據(jù),目前常見(jiàn)的采集方式主要包括以下兩種:
徒手示教(Kinesthetic Teaching):操作者直接通過(guò)物理引導(dǎo)機(jī)械臂完成動(dòng)作任務(wù)。這種方式直觀自然,但存在設(shè)備安全與人員操作風(fēng)險(xiǎn);遙操作(Teleoperation):通過(guò) VR 頭顯與手柄、游戲手柄等設(shè)備,在安全距離外對(duì)機(jī)器人進(jìn)行控制。該方法避免了直接接觸,但可能受限于視覺(jué)反饋質(zhì)量和運(yùn)動(dòng)映射準(zhǔn)確性,對(duì)操作者技能有一定要求。
得益于 Ark 高度模塊化的架構(gòu)和強(qiáng)類(lèi)型消息通道機(jī)制,用戶可以靈活接入不同類(lèi)型的示教接口。我們利用 LCM 提供的 lcm-logger 工具實(shí)時(shí)記錄所有通道的數(shù)據(jù)至日志文件。Ark 內(nèi)置從日志中提取數(shù)據(jù)并轉(zhuǎn)換為 CSV 格式的工具,并支持沿用環(huán)境中已定義的觀測(cè)與動(dòng)作通道配置,從而確保數(shù)據(jù)格式在采集、訓(xùn)練與最終部署階段完全一致。
徒手示教:
以 ViperX 300s 機(jī)械臂為例,操作者可直接牽引機(jī)械臂完成目標(biāo)任務(wù),LCM 同步記錄完整的關(guān)節(jié)軌跡與系統(tǒng)狀態(tài)。盡管在該示例中相機(jī)未參與控制回路,但仍可用于錄制視覺(jué)數(shù)據(jù)以供后續(xù)分析。演示結(jié)束后,記錄的數(shù)據(jù)既可用于策略訓(xùn)練,也可通過(guò) lcm-logplayer 進(jìn)行逐幀回放,這對(duì)于處理包含人體影像(可能引入視覺(jué)偏置)或復(fù)雜物理交互的任務(wù)尤為有用。Ark 還提供了一鍵重置服務(wù),例如將 “重置” 操作綁定至鍵盤(pán)按鍵,極大方便了連續(xù)多次示教與系統(tǒng)評(píng)估。
遙操作:
Ark 支持多種輸入設(shè)備,如 VR 控制器與游戲手柄(如 PS4 手柄)。在一種典型配置中,用戶通過(guò) VR 控制器實(shí)時(shí)發(fā)送 6 自由度位姿指令,系統(tǒng)通過(guò)逆運(yùn)動(dòng)學(xué)(IK)節(jié)點(diǎn)將其轉(zhuǎn)化為關(guān)節(jié)速度目標(biāo);另一種配置則使用手柄直接控制機(jī)械臂末端位姿。整個(gè)數(shù)據(jù)采集流程由一系列可復(fù)用的 Ark 節(jié)點(diǎn)協(xié)同完成,包括手柄控制節(jié)點(diǎn)、環(huán)境轉(zhuǎn)換節(jié)點(diǎn)(將手柄信號(hào)轉(zhuǎn)為末端目標(biāo))、IK 解算節(jié)點(diǎn)(將位姿轉(zhuǎn)為關(guān)節(jié)指令),以及用于發(fā)布圖像和關(guān)節(jié)狀態(tài)的傳感器節(jié)點(diǎn)。憑借 LCM 強(qiáng)類(lèi)型和通道隔離的特性,更換相機(jī)或控制器時(shí)無(wú)需修改其他模塊。采集完成后,用戶可使用相同的通道配置從日志中提取標(biāo)準(zhǔn)化數(shù)據(jù),直接用于訓(xùn)練。操作者還可通過(guò)手柄的 “X” 鍵快捷保存當(dāng)前軌跡并觸發(fā)機(jī)械臂復(fù)位至中立姿態(tài)。
圖 5: lcm-logger 通過(guò)記錄來(lái)自多種控制接口的演示實(shí)現(xiàn)高效的數(shù)據(jù)采集
模仿學(xué)習(xí)
在本節(jié)中,我們展示了若干實(shí)現(xiàn)模仿學(xué)習(xí)的應(yīng)用案例,重點(diǎn)介紹如何使用 Ark 進(jìn)行數(shù)據(jù)采集、訓(xùn)練和策略部署。我們將展示了兩種模仿學(xué)習(xí)方法:(i)Diffusion Policy,(ii)ACT,Ark 作為核心基礎(chǔ)設(shè)施,提供模塊化組件、標(biāo)準(zhǔn)化接口和實(shí)時(shí)通信機(jī)制,顯著簡(jiǎn)化了從數(shù)據(jù)收集到策略部署的整個(gè)流程。
Diffusion Policy 實(shí)現(xiàn)與部署示例:
我們?cè)?ViperX 300s 機(jī)械臂與 Intel RealSense RGB 相機(jī)上完成了推動(dòng)任務(wù)(pushing)Diffusion Policy 實(shí)驗(yàn)。該任務(wù)的觀測(cè)空間包括機(jī)器人關(guān)節(jié)位置及連續(xù)的 RGB 圖像流,動(dòng)作空間為關(guān)節(jié)位置指令。在部署階段,系統(tǒng)完全復(fù)用了數(shù)據(jù)采集時(shí)的架構(gòu):僅將原本的 “手柄控制節(jié)點(diǎn)” 替換為 “策略節(jié)點(diǎn)”。該策略節(jié)點(diǎn)從觀測(cè)通道讀取圖像和關(guān)節(jié)狀態(tài),并通過(guò)同一動(dòng)作通道發(fā)布目標(biāo)末端位姿。由于執(zhí)行通路與采集階段保持一致,用戶無(wú)需修改任何底層基礎(chǔ)設(shè)施即可直接驗(yàn)證學(xué)習(xí)到的策略。
圖 6: Viper X 300s 機(jī)械臂執(zhí)行擴(kuò)散策略的連續(xù)動(dòng)作序列
ACT 實(shí)現(xiàn)與部署示例:
除擴(kuò)散策略外,我們還基于 OpenPyro-A1 人形機(jī)器人平臺(tái)實(shí)現(xiàn)了 ACT 方法的示例。通過(guò) VR 設(shè)備進(jìn)行遙操作,收集了包括 “衣服整理” 與 “物體接力” 在內(nèi)的多類(lèi)任務(wù)數(shù)據(jù)。通過(guò)訓(xùn)練得到的策略能夠生成精細(xì)且包含豐富接觸交互的操作行為,展現(xiàn)出較強(qiáng)的泛化與實(shí)物操作能力。
圖 7: OpenPyro 使用 ACT 策略執(zhí)行衣服整理和物體接力任務(wù)
移動(dòng)機(jī)器人
許多現(xiàn)實(shí)任務(wù)(如設(shè)備巡檢)要求機(jī)器人能夠在環(huán)境中自主移動(dòng)至多個(gè)目標(biāo)點(diǎn)。實(shí)現(xiàn)該能力需同時(shí)解決兩個(gè)問(wèn)題:構(gòu)建環(huán)境地圖(建圖)并在地圖中實(shí)時(shí)定位自身(定位),這一過(guò)程合稱(chēng)為同步定位與建圖(SLAM)。當(dāng)?shù)貓D構(gòu)建完成且定位穩(wěn)定可靠后,機(jī)器人即可通過(guò)路徑規(guī)劃算法實(shí)現(xiàn)導(dǎo)航。
我們?cè)?Ark 中實(shí)現(xiàn)了一套完整的移動(dòng)機(jī)器人導(dǎo)航流程:首先通過(guò)遙操作控制機(jī)器人運(yùn)動(dòng),并利用機(jī)載 LiDAR 數(shù)據(jù)構(gòu)建地圖;建圖完成后,使用 A* 算法進(jìn)行全局路徑規(guī)劃,并結(jié)合距離變換技術(shù)確保與障礙物保持安全距離;最后通過(guò) PD 控制器跟蹤路徑點(diǎn),生成差速驅(qū)動(dòng)所需的輪速指令。
建圖:
為實(shí)現(xiàn)建圖與定位,Ark 提供了一套 “遙操作輔助 SLAM” 流程,包含兩個(gè)核心節(jié)點(diǎn):遙操作控制器與概率 SLAM 模塊,兩者通過(guò)消息通道通信。用戶通過(guò)遙操作節(jié)點(diǎn)發(fā)送線速度和角速度指令,這些指令經(jīng) Ark 動(dòng)作通道發(fā)送至底層控制器,轉(zhuǎn)換為左右輪速。同時(shí),LiDAR 數(shù)據(jù)與控制指令被實(shí)時(shí)發(fā)送至 SLAM 節(jié)點(diǎn),用于融合估計(jì)機(jī)器人位姿并構(gòu)建地圖。我們采用基于 Rao–Blackwellized 粒子濾波的 FastSLAM 方法:每個(gè)粒子同時(shí)維護(hù)位姿估計(jì)和一個(gè)占據(jù)柵格地圖,柵格概率取值從 0(空閑)到 1(占據(jù))。系統(tǒng)結(jié)構(gòu)如圖 8 所示。
圖 8:Husky 機(jī)器人在 Ark 工具支持下于廚房環(huán)境實(shí)現(xiàn) SLAM 建圖與導(dǎo)航
導(dǎo)航:
在已知地圖且能可靠定位的基礎(chǔ)上,機(jī)器人可進(jìn)行運(yùn)動(dòng)規(guī)劃。我們集成 A* 算法作為全局規(guī)劃器。規(guī)劃器接收目標(biāo)點(diǎn)位置和 SLAM 生成的占據(jù)柵格地圖。首先通過(guò)閾值將地圖二值化,再計(jì)算距離變換圖以獲取每個(gè)柵格到最近障礙物的距離,確保路徑滿足 “半車(chē)寬 + 安全裕量” 的避障要求。A* 輸出一條平滑的避障路徑,表示為一系列笛卡爾路標(biāo)點(diǎn) (x,y),并按設(shè)定分辨率進(jìn)行下采樣以提高執(zhí)行效率??刂谱酉到y(tǒng)根據(jù)實(shí)時(shí)位姿和路徑點(diǎn)序列逐點(diǎn)跟蹤:先調(diào)整機(jī)器人朝向,再沿直線移動(dòng)至當(dāng)前路標(biāo),進(jìn)入容差范圍后自動(dòng)切換下一目標(biāo)。最終輸出線速度和角速度,并轉(zhuǎn)換為差速驅(qū)動(dòng)的輪速指令。
具身智能
大語(yǔ)言模型(LLM)與視覺(jué) - 語(yǔ)言模型(VLM)顯著提升了機(jī)器人的高層推理能力。Ark 憑借其模塊化設(shè)計(jì)與 Python 優(yōu)先的架構(gòu),天然適合將 LLM/VLM 作為高層策略選擇器集成到機(jī)器人控制回路中。
我們?cè)?Viper 機(jī)械臂上構(gòu)建了一個(gè)基于 LLM 的智能體系統(tǒng)(圖 9),采用 DeepSeek-R1 作為底層模型,遵循 “代碼即策略(code-as-policy)” 范式:將 “抓取”“按位置放置”“移除物體” 等操作封裝為可參數(shù)化的策略函數(shù)。這些函數(shù)組成策略庫(kù)供 LLM 調(diào)用,模型根據(jù)任務(wù)上下文從庫(kù)中選擇合適技能并生成代碼執(zhí)行。
Ark 將整個(gè)系統(tǒng)解耦為感知、語(yǔ)言推理與運(yùn)動(dòng)執(zhí)行等多個(gè)獨(dú)立節(jié)點(diǎn)。DeepSeek 被封裝為一個(gè)服務(wù)節(jié)點(diǎn),接收結(jié)構(gòu)化提示詞(包含場(chǎng)景觀測(cè)、可用函數(shù)和任務(wù)描述)并返回推理結(jié)果。每一步?jīng)Q策中,感知節(jié)點(diǎn)將棋盤(pán)狀態(tài)、圖像等觀測(cè)數(shù)據(jù)發(fā)布到消息通道,經(jīng)整理后通過(guò)服務(wù)調(diào)用發(fā)送至 LLM 節(jié)點(diǎn),觸發(fā)一次策略生成。
圖 9:Ark 框架通過(guò)集成 DeepSeek 大模型賦予 Viper 機(jī)械臂國(guó)際象棋對(duì)弈能力
未來(lái)工作和總結(jié)
展望未來(lái),Ark 計(jì)劃重點(diǎn)發(fā)展兩大方向:一是強(qiáng)化強(qiáng)化學(xué)習(xí)(RL)基礎(chǔ)設(shè)施,通過(guò)原生集成 Stable Baselines3 和 RLlib 等主流框架,支持并行環(huán)境執(zhí)行,并提供統(tǒng)一的環(huán)境抽象接口,實(shí)現(xiàn)在仿真與真實(shí)機(jī)器人之間高效訓(xùn)練、評(píng)估和部署 RL 策略;二是提升高保真仿真能力,在現(xiàn)有 PyBullet 和 MuJoCo 支持的基礎(chǔ)上,進(jìn)一步引入域隨機(jī)化、可微物理等關(guān)鍵特性,增強(qiáng)策略的魯棒性和仿真到現(xiàn)實(shí)的遷移效果,同時(shí)與高性能仿真后端深度集成,構(gòu)建更精確、可擴(kuò)展且功能豐富的模擬環(huán)境。
Ark 以現(xiàn)代化、模塊化和用戶友好的架構(gòu),致力于在機(jī)器人學(xué)與機(jī)器學(xué)習(xí)之間建立高效橋梁:既大幅降低了真實(shí)機(jī)器人部署的技術(shù)門(mén)檻,又保持了面向前沿研究的靈活性與擴(kuò)展性。隨著仿真性能的提升、RL 生態(tài)融合的深化以及工具鏈的持續(xù)完善,Ark 有望發(fā)展成為支撐具身智能研究的重要通用平臺(tái),推動(dòng)機(jī)器人學(xué)習(xí)社區(qū)不斷向前邁進(jìn)。
表 1:Ark 與同類(lèi)框架的功能對(duì)比,紅色圓圈表示該框架不支持該特性
關(guān)于我們|版權(quán)聲明| 違法和不良信息舉報(bào)電話:010-84151598 | 網(wǎng)絡(luò)敲詐和有償刪帖舉報(bào)電話:010-84151598
Copyright ? 2008-2024 by {當(dāng)前域名}. all rights reserved