LeRobot 文件
SO-101
並獲得增強的文件體驗
開始使用
SO-101

在以下步驟中,我們將說明如何組裝我們的旗艦機器人 SO-101。
取得零件
請遵循此 README。其中包含物料清單(附有零件來源連結)以及 3D 列印零件的說明。如果您是第一次進行列印,或者您沒有 3D 印表機,請務必詳閱相關建議。
安裝 LeRobot 🤗
若要安裝 LeRobot,請遵循我們的 安裝指南
除了這些說明外,您還需要安裝 Feetech SDK。
pip install -e ".[feetech]"逐步組裝說明
從動手臂(follower arm)使用 6 個 1/345 齒輪比的 STS3215 馬達。然而,主動手臂(leader arm)則使用了三種不同齒輪比的馬達,以確保它既能支撐自身重量,又能在不需過大外力的情況下移動。各個關節所需的馬達詳見下表。
| 主動手臂軸向 | 馬達 | 齒輪比 |
|---|---|---|
| 底座 / 肩部水平旋轉 (Shoulder Pan) | 1 | 1 / 191 |
| 肩部抬升 (Shoulder Lift) | 2 | 1 / 345 |
| 肘部彎曲 (Elbow Flex) | 3 | 1 / 191 |
| 腕部彎曲 (Wrist Flex) | 4 | 1 / 147 |
| 腕部旋轉 (Wrist Roll) | 5 | 1 / 147 |
| 夾爪 (Gripper) | 6 | 1 / 147 |
配置馬達
1. 找出與每支手臂相關聯的 USB 連接埠
若要找到每個匯流排伺服轉接器的連接埠,請透過 USB 與電源將 MotorBus 連接至您的電腦。執行以下腳本,並在提示時斷開 MotorBus 的連接。
lerobot-find-port
輸出範例
Finding all available ports for the MotorBus.
['/dev/tty.usbmodem575E0032081', '/dev/tty.usbmodem575E0031751']
Remove the USB cable from your MotorsBus and press Enter when done.
[...Disconnect corresponding leader or follower arm and press Enter...]
The port of this MotorsBus is /dev/tty.usbmodem575E0032081
Reconnect the USB cable.其中找到的連接埠為:/dev/tty.usbmodem575E0032081,這對應到您的主控 (leader) 或從屬 (follower) 機械手臂。
2. 設定馬達 ID 和傳輸速率 (Baudrate)
每個馬達在匯流排上都有一個唯一的 ID。全新馬達通常預設 ID 為 1。為了讓馬達與控制器之間能正常通訊,我們首先需要為每個馬達設定一個唯一且不同的 ID。此外,資料在匯流排上的傳輸速度由鮑率決定。為了互相溝通,控制器和所有馬達必須配置為相同的鮑率。
為此,我們首先需要透過控制器單獨連接到每個馬達以進行設定。由於我們將把這些參數寫入馬達內部記憶體 (EEPROM) 的非揮發性區域,因此我們只需執行此操作一次。
如果您是從其他機器人上拆卸並重新利用馬達,您可能也需要執行此步驟,因為識別碼 (id) 和鮑率 (baudrate) 很可能不符。
下方的影片展示了設定馬達識別碼的步驟順序。
設定馬達教學影片
從屬 (Follower)
將 USB 線從電腦連接至從動手臂的控制器板,並接上電源。接著,執行以下指令,或是使用在上一個步驟中取得的連接埠來執行 API 範例。您還需要使用 id 參數為您的主動手臂命名。
lerobot-setup-motors \
--robot.type=so101_follower \
--robot.port=/dev/tty.usbmodem585A0076841 # <- paste here the port found at previous step您應該會看到以下指示。
Connect the controller board to the 'gripper' motor only and press enter.依照指示,插入夾爪馬達。請確保它是唯一連接到控制器板的馬達,並且馬達本身尚未與任何其他馬達菊花鏈 (daisy-chained) 連接。當您按下 [Enter] 時,腳本會自動為該馬達設定 ID 和鮑率。
疑難排解
如果在該點發生錯誤,請檢查您的線材,確保它們已正確插好
- 電源
- 電腦與控制器板之間的 USB 線
- 從控制器板到馬達的 3 針腳線材
如果您使用的是 Waveshare 控制器板,請確保兩個跳線 (jumper) 都設定在 B 通道 (USB)。
接著您應該會看到以下訊息
'gripper' motor id set to 6隨後是下一條說明
Connect the controller board to the 'wrist_roll' motor only and press enter.您可以從控制器板上拔掉 3 針排線,但另一端連接著夾爪馬達的線可以保留,因為它已經位於正確的位置。現在,將另一條 3 針排線插入腕部旋轉馬達,並將其連接到控制器板。與上一個馬達一樣,請確保該馬達是唯一連接到控制器板的馬達,且馬達本身未連接到任何其他馬達。
依照指示對每個馬達重複上述操作。
在按下 Enter 鍵前,請在每個步驟檢查您的接線。例如,當您操作控制板時,電源線可能會斷開。
完成後,腳本將會結束,此時馬達已準備就緒。現在您可以將每個馬達的 3 針腳線材串聯起來,並將第一個馬達(ID=1 的「肩部水平旋轉」馬達)的線材連接到控制器板,該控制器板現在可以安裝在手臂基座上。
主控 (Leader)
對主動手臂執行相同的步驟。
lerobot-setup-motors \
--teleop.type=so101_leader \
--teleop.port=/dev/tty.usbmodem575E0031751 # <- paste here the port found at previous step清理零件
清除 3D 列印零件上的所有支撐材。最簡單的方法是使用小型螺絲起子深入支撐材下方將其撬開。
建議在安裝馬達後,於繼續組裝前先安裝好一條 3 針排線。
關節 1
- 安裝兩個馬達轉接頭 (motor horns)。使用 M3x6mm 螺絲固定頂部轉接頭。底部轉接頭不需要螺絲。
- 將第一個馬達放入底座中。
- 使用 4 顆 M2x6mm 螺絲(最小的螺絲)固定馬達。頂部兩顆,底部兩顆。
- 滑入第一個馬達支架,並使用兩顆 M2x6mm 螺絲(兩側各一顆)固定。
- 安裝肩部零件。
- 使用 4 顆 M3x6mm 螺絲固定肩部頂端,並使用 4 顆 M3x6mm 螺絲固定底端。
- 安裝肩部馬達支架。
關節 2
- 安裝兩個馬達轉接頭 (motor horns)。使用 M3x6mm 螺絲固定頂部轉接頭。底部轉接頭不需要螺絲。
- 從頂部滑入第二個馬達。
- 使用 4 顆 M2x6mm 螺絲固定第二個馬達。
- 安裝上臂,兩側各使用 4 顆 M3x6mm 螺絲。
關節 3
- 安裝兩個馬達轉接頭 (motor horns)。使用 M3x6mm 螺絲固定頂部轉接頭。底部轉接頭不需要螺絲。
- 放入馬達 3 並使用 4 顆 M2x6mm 螺絲固定。
- 將前臂連接到馬達 3,兩側各使用 4 顆 M3x6mm 螺絲。
關節 4
- 安裝兩個馬達轉接頭 (motor horns)。使用 M3x6mm 螺絲固定頂部轉接頭。底部轉接頭不需要螺絲。
- 滑入馬達支架 4。
- 滑入馬達 4。
- 使用 4 顆 M2x6mm 螺絲固定馬達 4。
關節 5
- 將馬達 5 放入腕部支架中,並用 2 顆前方 M2x6mm 螺絲固定。
- 僅在腕部馬達上安裝一個馬達轉接頭,並使用 M3x6mm 轉接頭螺絲固定。
- 將腕部連接到馬達 4,兩側各使用 4 顆 M3x6mm 螺絲固定。
夾爪 / 把手
- 將夾爪連接至馬達 5,並使用 4 顆 M3x6mm 螺絲將其固定至腕部的馬達轉接頭上。
- 放入夾爪馬達,並在兩側各使用 2 顆 M2x6mm 螺絲固定。
- 在夾爪馬達上安裝兩個馬達轉接頭。使用 M3x6mm 螺絲固定頂部轉接頭;底部轉接頭不需要螺絲。
- 安裝夾爪鉗並在兩側各使用 4 顆 M3x6mm 螺絲固定。
校正
接下來,您需要校正您的機器人,以確保主控和從屬手臂在相同物理位置時具有相同的位置數值。校正過程非常重要,因為它能讓在一個機器人上訓練的神經網路在另一個機器人上運作。
從屬 (Follower)
執行以下指令或 API 範例來校正從屬手臂
lerobot-calibrate \
--robot.type=so101_follower \
--robot.port=/dev/tty.usbmodem58760431551 \ # <- The port of your robot
--robot.id=my_awesome_follower_arm # <- Give the robot a unique name下方的影片展示了如何進行校正。首先,您需要將機器人移至所有關節均處於活動範圍中間的位置。接著,按下 Enter 鍵後,您必須讓每個關節完成全範圍的運動。
校正影片
主控 (Leader)
對主控手臂執行相同的校正步驟,執行以下指令或 API 範例
lerobot-calibrate \
--teleop.type=so101_leader \
--teleop.port=/dev/tty.usbmodem58760431551 \ # <- The port of your robot
--teleop.id=my_awesome_leader_arm # <- Give the robot a unique name恭喜 🎉,您的機器人已準備就緒,可以自行學習任務了。請依照此教學開始訓練它:開始使用真實世界機器人
在 GitHub 上更新如果您有任何問題或需要協助,請在 Discord 上聯繫我們。