LeRobot 项目部署运行逻辑(二)—— Mobile Aloha 真机部署
LeRobot 在开源项目中详细说明了部署流程,所以首先看一下开源的内容,然后再逐步拆解
首先,LeRobot 开源的硬件是配全部在 examples 文件夹中
包括了 Stretch 3、Aloha and Aloha 2 stationary、SO-100、LeKiwi、Moss v1 等机器人
恰好实验室有一套 mobile aloha,对于其他的硬件部署,基本原理流程是一样的
由于实验室中的 mobile aloha 硬件配置不太一样,所以分多篇逐步梳理
本教程首先综述如何基于 LeRobot 使用 Aloha and Aloha 2 stationary
目录
1 硬件配置
2 环境安装
3 遥操作
4 数据采集
5 数据集可视化
6 动作回放
7 策略训练
8 策略评估
9 进阶指导
1 硬件配置
按照 documentation from Trossen Robotics 官方文档完成硬件组装,并将4个机械臂与4个摄像头连接至计算机
2 环境安装
在计算机上执行以下步骤:
1. Install Miniconda:
mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm ~/miniconda3/miniconda.sh
~/miniconda3/bin/conda init bash
2. 重启终端或执行 source ~/.bashrc
3. 创建并激活 Lerobot 专用 conda 环境:
conda create -y -n lerobot python=3.10 && conda activate lerobot
4. 克隆LeRobot仓库:
git clone https://github.com/huggingface/lerobot.git ~/lerobot
5. 安装FFmpeg(Miniconda 环境):
conda install ffmpeg -c conda-forge
6. 安装 LeRobot 及 ALOHA 依赖(Dynamixel 电机 + Intel RealSense 摄像头):
cd ~/lerobot && pip install -e ".[dynamixel, intelrealsense]"
3 遥操作
*/!\ 安全须知 /!* 遥操作是通过手动操作主臂来控制从臂运动,请注意:
-
确保主从臂初始位置一致,避免从臂运动过快
-
代码默认使用预设校准文件(位于.cache/calibration/aloha_default)。更换电机时请严格遵循Trossen Robotics 的校准流程
执行以下命令开始安全模式操控:
python lerobot/scripts/control_robot.py \--robot.type=aloha \--robot.max_relative_target=5 \--control.type=teleoperate
NOTE:--control.display_data=true 可启用 rerun 实时数据可视化
参数 --robot.max_relative_target=5 通过限制运动幅度提升安全性(但会降低操作流畅度)。熟练后可通过 -robot.max_relative_target=null 取消限制:
python lerobot/scripts/control_robot.py \--robot.type=aloha \--robot.max_relative_target=null \--control.type=teleoperate
4 数据采集
熟悉操控后,可开始录制 Aloha 数据集:
若使用 Hugging Face Hub 上传数据集的功能,需配置写入权限,可从 Hugging Face settings 生成:
huggingface-cli login --token ${HUGGINGFACE_TOKEN} --add-to-git-credential
将 Hugging Face 仓库名称存储到一个变量中,以便运行下面的命令:
HF_USER=$(huggingface-cli whoami | head -n 1)
echo $HF_USER
录制2个 episode 片段并上传:
python lerobot/scripts/control_robot.py \--robot.type=aloha \--robot.max_relative_target=null \--control.type=record \--control.fps=30 \--control.single_task="Grasp a lego block and put it in the bin." \--control.repo_id=${HF_USER}/aloha_test \--control.tags='["tutorial"]' \--control.warmup_time_s=5 \--control.episode_time_s=30 \--control.reset_time_s=30 \--control.num_episodes=2 \--control.push_to_hub=true
5 数据集可视化
通过 --control.push_to_hub=true 可以上传数据集,并通过仓库 id visualize your dataset online:
echo ${HF_USER}/aloha_test
即使没有上传(--control.push_to_hub=false),也可以本地数据集可视化:
python lerobot/scripts/visualize_dataset_html.py \--repo-id ${HF_USER}/aloha_test
6 动作回放
*/!\ 安全须知 /!*
回放功能将自动执行给定数据集 episode 中记录的一系列动作(例如电机的目标位置),请确保:
-
机械臂初始位置与录制时相近
-
建议首次添加 --robot.max_relative_target=5 限制运动幅度,以免使跟随机械臂移动过快而超过预期目标位置
回放第一个 episode:
python lerobot/scripts/control_robot.py \--robot.type=aloha \--robot.max_relative_target=null \--control.type=replay \--control.fps=30 \--control.repo_id=${HF_USER}/aloha_test \--control.episode=0
7 策略训练
要训练一个用于控制机器人行为的策略,使用脚本 python lerobot/scripts/train.py。该脚本需要传入几个参数。使用以下命令训练控制策略(关键参数说明):
python lerobot/scripts/train.py \--dataset.repo_id=${HF_USER}/aloha_test \--policy.type=act \--output_dir=outputs/train/act_aloha_test \--job_name=act_aloha_test \--policy.device=cuda \--wandb.enable=true
参数说明:
-
通过 --dataset.repo_id=${HF_USER}/aloha_test 指定数据集
-
通过 policy.type=act 指定策略类型,此选项将加载 configuration_act.py 中的配置。该策略会自动适应数据集中保存的机器人各电机状态、动作以及摄像头数量(e.g. 笔记本和手机)
-
使用 policy.device=cuda 使用 Nvidia GPU 进行训练;如果在 Apple Silicon 平台上训练,可以使用 policy.device=mps
-
参数 wandb.enable=true 用于启用 Weights and Biases 进行训练日志的可视化(请确保已执行 wandb login)
更多 train 信息请参考之前的教程:examples/4_train_policy_with_script.md
训练过程可能需要几个小时,生成的检查点会保存在 outputs/train/act_aloha_test/checkpoints
8 策略评估
你可以使用 lerobot/scripts/control_robot.py 中的 record 功能,不过需要指定一个 policy checkpoint 作为输入。示例录制10个评估 episodes:
python lerobot/scripts/control_robot.py \--robot.type=aloha \--control.type=record \--control.fps=30 \--control.single_task="Grasp a lego block and put it in the bin." \--control.repo_id=${HF_USER}/eval_act_aloha_test \--control.tags='["tutorial"]' \--control.warmup_time_s=5 \--control.episode_time_s=30 \--control.reset_time_s=30 \--control.num_episodes=10 \--control.push_to_hub=true \--control.policy.path=outputs/train/act_aloha_test/checkpoints/last/pretrained_model \--control.num_image_writer_processes=1
和之前记录训练数据集时的命令几乎相同,主要有两处不同:
-
新增加了参数 --control.policy.path,该参数指定了 policy checkpoint 路径(例如 outputs/train/eval_act_aloha_test/checkpoints/last/pretrained_model)。如果已将模型检查点上传到 Hub,也可以直接使用模型仓库路径(如 ${HF_USER}/act_aloha_test)。
-
数据集的仓库名称变成了以 eval 开头(e.g. ${HF_USER}/eval_act_aloha_test),表示在进行推理或评估操作
-
参数 --control.num_image_writer_processes=1 表示使用专门的进程写入来自 4 个摄像头的图像到磁盘,可以达到稳定的 30 fps 评估速率。可以根据需求调整该值 --control.num_image_writer_processes
9 进阶指导
更详细说明可以参考 previous tutorial
更多帮助,可以登陆 Discord in the channel #aloha-arm