進行中 Robotics Hardware SO-101 XLeRobot

Anvil:以 XLeRobot 為藍本的雙臂機器人

以開源的 XLeRobot 為藍本、從零件開始自己組的雙臂移動機器人。3D 列印、機構組裝、馬達設定到遙操作都自己完成,四支 SO-ARM101 手臂已能遙操作,正在往可移動的完整機器人推進。

XLeRobot 的目標樣貌:白色雙臂機器人裝在推車上,頂部有相機,正在夾取糖果

XLeRobot 的樣子,也是 Anvil 想做成的目標(圖片來源:網路)。

Anvil 是我以開源專案 XLeRobot 為藍本、從一顆顆馬達和列印件開始自己組起來的雙臂移動機器人。3D 列印、機構組裝、馬達設定、Linux 環境到遙操作,每一段都是自己動手完成的。目前四支手臂都已組好並能遙操作,下一步是讓它真的動起來。

用大約兩分鐘看完組裝過程和遇到的困難。畫面裡的照片和影片都是我自己拍的實拍(第一張是網路上的 XLeRobot 目標照,倒數第二段是 XLeRobot 官方示範影片,Vector-Wangel/XLeRobot,Apache-2.0);旁白是 AI 語音(Gemini TTS)。

系統架構#

完整的 Anvil 會有三個部分:

  • 雙臂:兩支 SO-ARM101 follower 臂,由另外兩支 leader 臂遙控;遙操作的資料之後可以拿來訓練自主操作的策略。
  • 移動底盤:LeKiwi 三輪全向底盤,讓整台機器人能在室內移動。
  • 頭部相機:提供視覺,用來錄資料和做自主操作。

手臂末端現在是夾爪,之後想換成我另外在做的靈巧手 AmazingHand。

下面是 XLeRobot 整台的 3D 模型,點一下載入後就能拖曳旋轉:

XLeRobot 3D 模型,由官方的 ManiSkill 模擬檔轉成網頁格式(來源:Vector-Wangel/XLeRobot,Apache-2.0)。

第一對手臂:從零件到成形#

一月初看到 XLeRobot,我很快就決定動手:訂了 SO-ARM101 的馬達套件和 Feetech 伺服馬達,結構件全部自己用 3D 印表機印。

SO-ARM101 馬達套件的包裝盒 一疊 Feetech 伺服馬達的小盒子

SO-ARM101 套件和一疊 Feetech 伺服馬達。

列印時一度印成舊版 SO-ARM100 的零件,我把整批重印成 SO-ARM101,之後每次開印前都先核對版本。一月下旬,第一對手臂組裝完成。

3D 印表機的列印板上排滿 SO-101 手臂零件 組裝好、收折狀態的 SO-101 手臂

自己印的 SO-101 結構件,以及組好後收折的手臂。

組裝完成、伸展開來的 SO-101 手臂 第一對 leader 與 follower 手臂擺在紙箱上

伸展開的手臂,以及一月底完成的第一對 leader/follower。

讓馬達動起來#

組好之後,接著是讓 12 顆 STS3215 馬達真的聽話。春天我重新規劃接線,讓每顆馬達都能單獨寫入 ID;在 Raspberry Pi 5 上裝好系統、SSH 和 LeRobot,序列埠改用固定的 by-id 路徑,也寫了自己的校正腳本。最後 12 顆馬達全部綁定 ID,匯流排掃描每一顆都有回應。

五月中,第一次遙操作成功:我手上拿著 leader 臂,follower 就即時跟著動。

五月中的遙操作:follower 即時跟著 leader 的動作走。點影片可以放大、拖時間軸。

第二對 leader/follower:XLeRobot 的雛形#

XLeRobot 的雙臂,本質上就是兩組 leader/follower:人拿著 leader 臂操作,裝在機器人上的 follower 臂跟著動。五月底我又添了第二組 SO-ARM101、LeKiwi 底盤套件和一台 16GB 的 Pi。有了第一對的經驗,第二對組得快很多;六月底,兩對 leader/follower 全部組好並完成校正,雙臂也先上了推車,XLeRobot 的雛形就出來了。

正面:桌上兩支手臂,推車上另外兩支手臂 從側面看桌上的 leader 與 follower 手臂

六月的雛形:兩對 leader/follower,正面與側面。

除錯:把問題一個一個拆開#

兩對手臂一起上線後,問題也一起出現。我的做法是分段隔離、一次只改一個變數:

  • 匯流排掃描時有時無:用 scan_port 分段排查,找出一顆馬達接頭的針腳歪了,加上一條可能接反的延長線;修正後恢復穩定,再用限制最大位移的慢速 demo 安全驗證動作。
  • Input voltage error:一組二手控制板和馬達回報電壓錯誤,換掉電源後連續掃描都乾淨,並把舊 ID 全部覆寫。
  • leader 臂掃不到:檢查 5V 電源和接頭後解決,也釐清關鍵規格:leader 臂的馬達是 7.4V、接 5V,絕不能接 12V;各關節的齒輪比也不同。
  • 關節卡在固定值、手感不一:重新校正手肘;比較各組 leader→follower 的跟隨手感並調整 max_relative_target;偶發的封包錯誤用重試和錯開馬達啟動時間處理。
從另一個角度看桌上與推車上的四支手臂 推車上層放著兩支手臂,下層是線材與電源

另一個角度,以及推車上的雙臂和下層的電源線材。

目前進度#

九月,我把整套 3D 模型檔整理備份,推車上層也裝上用 MakerMods 檔案印的頸座。接下來:

  • 組裝 LeKiwi 移動底盤。
  • 整理整台機器人的供電。
  • 把雙臂裝到推車和底盤上,讓 Anvil 成為一台能移動的雙臂機器人。
從上方看推車上層:雙臂和白色 3D 列印頸座 手上拿著一顆黑色全向輪

推車上層和列印頸座;右邊是接下來要組的 LeKiwi 全向輪。

未來方向#

XLeRobot 官方已經示範了這個平台在真實家裡能做的事:遙操作清潔浴室,以及用強化學習自動從冰箱拿飲料、裝冰塊。這就是我希望 Anvil 最後能做到的樣子。

XLeRobot 官方示範影片(來源:Vector-Wangel/XLeRobot,Apache-2.0)。

改良版的 XLeRobot 也已經走出實驗室:進了學校教室,也上了 Physical AI 黑客松,讓學生和參賽者直接拿來遙操作、錄資料。這正是我想讓 Anvil 做到的事:一台能被人實際拿來用的機器人。

以下三段影片取自 MakerMods 的 XLeRobot 產品頁「See it in action」區塊,拍的是 MakerMods 改良版,不是 XLeRobot 原作者的官方影片。

左:Alpha School 的教室部署;右:舊金山 Founders Inc 的 Physical AI 黑客松(來源:MakerMods XLeRobot 產品頁)。

實驗室示範:夾取物件放進收納盒(來源:MakerMods XLeRobot 產品頁)。

除了實機,XLeRobot 也有能直接在瀏覽器裡操作的網頁模擬器(MuJoCo 加上 3D Gaussian Splatting 場景)。我想先在模擬裡練任務、錄資料,再搬到實機上,往強化學習和 VLA 自主操作前進。

XLeRobot 網頁模擬器的畫面:模擬的雙臂機器人在重建的室內場景中

XLeRobot 網頁模擬器(來源:XLeRobot 官方)。

MakerMods 改良版組好的樣子,則是 Anvil 在機構上的目標:雙臂、頸部相機、底盤和各種快拆座都整合在推車上。

MakerMods 改良版 XLeRobot:白色雙臂和頸部相機裝在推車上,正在夾取糖果

MakerMods 改良版 XLeRobot(來源:MakerMods)。

參考專案#

Vector-Wangel
/
XLeRobot
XLeRobot: Practical Dual-Arm Mobile Home Robot for $660
5.5K
613
Apache-2.0

由 Rice University 的 Gaotian (Vector) Wang 發起的開源家用雙臂移動機器人。兩支 SO-100/SO-101 手臂裝在 IKEA 推車和 LeKiwi 式全向底盤上,零件成本約 660 美元,支援鍵盤、手把、Joy-Con 和 VR 遙控,也提供 ManiSkill/MuJoCo 模擬環境。

makermods-robotics
/
MakerMods-XLeRobot
all the CAD, .step files for upgraded version of XLeRobot
73
9
MIT

MakerMods 在 XLeRobot 上做的機構改良版,包括兩段式頸部、新的手臂固定座、獨立的輪子模組,以及 USB Hub、驅動板和行動電源的快拆座。Anvil 的列印件都是用這個版本的檔案。

MakerMods XLeRobot 產品頁
makermods.ai/xlerobot
tnkr.ai 上的 XLeRobot 組裝說明
tnkr.ai/ryans-workspace/xlerobot

MakerMods 的產品頁和 tnkr.ai 上的組裝說明,是我組裝時主要對照的文件。