今天給大家分享一下 LeRobot 具身智能機械臂 SO-ARM100 的完整使用流程,包括設備組裝、環境配置、遠程控制、數據錄制到模型訓練的全過程。適合剛入門具身智能的小伙伴參考學習。
一、前期準備與資源獲取
在開始之前,我們需要準備好相關的資源和工具:
-
官方資源:
- LeRobot 開源項目學習社區:http://wiki.wowrobo.com/zh/koch-001
- GitHub 倉庫:https://github.com/huggingface/lerobot
- 入門視頻教程:LeRobot具身智能機械臂實操入門課程-02:相機選型、接線與代碼調試_嗶哩嗶哩_bilibili
-
必要設備:
- 主機械臂(扶手)12V/5A
- 從機械臂(抓手)12V/10A
- 雙端 Type-C 線
- 電腦拓展塢或兩個 Type-C 轉 USB 轉接頭
- 攝像頭(2K USB Camera 和 1080P USB Camera)
二、設備組裝與接線
1. 硬件連接要點
- 主機械臂和從機械臂通過雙端 Type-C 連接電腦拓展塢,或使用兩個 Type-C 轉 USB 轉接頭連接電腦
- 特別注意:相機需要直接連接電腦,不能接拓展塢!
- 確保電源適配正確:主機械臂 12V/5A,從機械臂 12V/10A
2. 組裝檢查
組裝完成后,建議參考官方視頻教程中的標準示意圖進行檢查,確保每個部件安裝到位,接線正確。
三、環境配置
1. 項目下載
首先克隆 LeRobot 項目到本地:
git clone https://github.com/huggingface/lerobot.git
或者直接下載 ZIP 壓縮包:https://github.com/huggingface/lerobot
2. 創建并激活虛擬環境
使用 conda 創建專門的虛擬環境:
conda create -n lerobot python=3.10
conda activate lerobot
3. 安裝依賴
進入項目目錄并安裝所需依賴:
cd lerobot
pip install -e ".[feetech]" -i https://pypi.tuna.tsinghua.edu.cn/simple
對于 Linux 系統,還需要安裝 ffmpeg:
conda install -y -c conda-forge ffmpeg
pip uninstall -y opencv-python
conda install -y -c conda-forge "opencv>=4.10.0"
四、機械臂端口檢測與配置
1. 查找端口號
運行以下腳本檢測機械臂對應的端口號:
python lerobot/scripts/find_motors_bus_port.py
操作步驟:
- 運行腳本,記錄當前可用端口
- 拔下機械臂 USB 線,按回車
- 對比前后端口變化,確定機械臂對應的端口號
2. 修改配置文件
找到配置文件:lerobot/common/robot_devices/robots/configs.py
修改So100RobotConfig
類中的端口設置,將檢測到的端口號填入:
@RobotConfig.register_subclass("so100")
@dataclass
class So100RobotConfig(ManipulatorRobotConfig):calibration_dir: str = ".cache/calibration/so100"max_relative_target: int | None = Noneleader_arms: dict[str, MotorsBusConfig] = field(default_factory=lambda: {"main": FeetechMotorsBusConfig(port="COM5", # 主機械臂端口motors={"shoulder_pan": [1, "sts3215"],"shoulder_lift": [2, "sts3215"],"elbow_flex": [3, "sts3215"],"wrist_flex": [4, "sts3215"],"wrist_roll": [5, "sts3215"],"gripper": [6, "sts3215"],},),})follower_arms: dict[str, MotorsBusConfig] = field(default_factory=lambda: {"main": FeetechMotorsBusConfig(port="COM4", # 從機械臂端口motors={# 電機配置與主機械臂相同"shoulder_pan": [1, "sts3215"],"shoulder_lift": [2, "sts3215"],"elbow_flex": [3, "sts3215"],"wrist_flex": [4, "sts3215"],"wrist_roll": [5, "sts3215"],"gripper": [6, "sts3215"],},),})
五、相機配置
1. 相機連接測試
確保相機直接連接電腦,然后通過系統的相機應用檢查相機是否工作正常。
2. 確定相機索引
運行以下腳本測試相機并生成圖像:
python lerobot/common/robot_devices/cameras/opencv.py --images-dir outputs/images_from_opencv_cameras
查看生成的圖像,確定每個相機對應的索引。
3. 配置相機參數
修改configs.py
文件中的相機配置,設置正確的相機索引:
cameras: dict[str, CameraConfig] = field(default_factory=lambda: {"laptop": OpenCVCameraConfig(camera_index=0, # 側面桌面相機fps=30,width=640,height=480,),"phone": OpenCVCameraConfig(camera_index=2, # 頂部相機fps=30,width=640,height=480,),}
)
六、遠程操作測試
完成上述配置后,可以進行第一次遠程操作測試:
python lerobot/scripts/control_robot.py --robot.type=so100 --control.type=teleoperate
如果一切正常,此時應該可以通過主機械臂控制從機械臂,實現主從一致操作,同時會顯示相機畫面。
七、數據集錄制
1. 準備工作
- 確保相機角度和畫面符合要求
- 準備好要抓取的目標物體(如紅色方塊)和放置容器
- 建議至少錄制 50 組數據,涵蓋 5 個不同位置,每個位置重復 10 次
2. 錄制命令
使用以下命令開始錄制數據集:
python lerobot/scripts/control_robot.py --robot.type=so100 --control.type=record --control.fps=30 --control.single_task="Grasp a lego block and put it in the bin." --control.repo_id=D:/so100_test --control.warmup_time_s=5 --control.episode_time_s=30 --control.reset_time_s=30 --control.num_episodes=2 --control.push_to_hub=false
參數說明:
warmup_time_s
:初始化時間episode_time_s
:每次收集數據的時間reset_time_s
:每次數據收集之間的準備時間num_episodes
:預期收集的數據集數量push_to_hub
:是否將數據上傳到 HuggingFace Hubrepo_id
:數據集存儲路徑
3. 解決錄制問題
問題 1:control.tags 參數問題
修改lerobot/scripts/control_robot.py
文件,在control_robot
函數中添加以下代碼:
@parser.wrap()
def control_robot(cfg: ControlPipelineConfig):init_logging()logging.info(pformat(asdict(cfg)))# 新增兩行if isinstance(cfg.control, RecordControlConfig):cfg.control.tags = ["so100", "tutorial"]robot = make_robot_from_config(cfg.robot)# ...
問題 2:Unknown encoder 'libsvtav1'
修改lerobot/common/datasets/video_utils.py
文件,將編碼器改為 libx264:
vcodec: str = "libx264"
或者按照官方建議,在 Linux 上重新安裝 ffmpeg:
conda install -c conda-forge ffmpeg
八、Hugging Face 配置
1. 登錄 Hugging Face
首先需要在 Hugging Face 上注冊賬號,然后在終端中登錄:
huggingface-cli login --token 你的令牌 --add-to-git-credential
將你的令牌替換上述命令中的 "你的令牌",令牌可以在 Hugging Face 個人設置中獲取。
2. 設置用戶名
$env:HF_USER = "你的用戶名"
九、數據集可視化
可以通過 Hugging Face 的在線工具可視化數據集:
- 訪問:Visualize Dataset
- 輸入你的數據集路徑(如:
acssdsd/so100_test
) - 即可查看數據集中的樣本、 episodes 和語言指令
十、機器人重播
可以讓機器人自動復現錄制的動作:
python lerobot/scripts/control_robot.py --robot.type=so100 --control.type=replay --control.fps=30 --control.repo_id=你的用戶名/so100_test --control.episode=0
十一、模型訓練
1. 安裝 CUDA 和 PyTorch
確保安裝了支持 CUDA 的 PyTorch 版本,LeRobot 需要 torch>=2.2.1。
根據你的 CUDA 版本從PyTorch 官網或下載頁面選擇合適的版本安裝。
例如,對于 CUDA 12.1 和 Python 3.10:
pip install torch-2.2.1+cu121-cp310-cp310-win_amd64.whl
2. 開始訓練
python lerobot/scripts/train.py --dataset.repo_id=你的用戶名/so100_test --policy.type=act --output_dir=outputs/train/act_so100_test --job_name=act_so100_test --device=cuda --wandb.enable=true
如果不需要使用 Weights and Biases 進行可視化,可以先禁用:
wandb disabled
訓練過程可能需要幾個小時,具體取決于數據集大小和硬件性能。訓練完成后,檢查點將保存在outputs/train/act_so100_test/checkpoints
目錄下。
總結
本文詳細介紹了 LeRobot 具身智能機械臂 SO-ARM100 從硬件組裝、環境配置到模型訓練的完整流程。通過這些步驟,你可以搭建起一個完整的具身智能系統,實現自定義抓取任務。
實際操作中,可能會遇到各種問題,建議參考官方文檔和社區資源進行排查。希望這篇指南能幫助你順利入門具身智能機器人開發!
如果有任何問題或建議,歡迎在評論區留言討論。
參考資料:
- LeRobot 官方文檔
- WowRobo Wiki
- Seeed Studio 文檔