LeRobot 仿真环境搭建指南:从 50 条遥操作数据到真机部署
【免费下载链接】lerobot🤗 LeRobot: Making AI for Robotics more accessible with end-to-end learning项目地址: https://gitcode.com/GitHub_Trending/le/lerobot
你有一台 ALOHA 双臂机械臂,想让它学会抓取杯子,但没有几百小时人工遥操作数据,也不想让实验台先跑坏一遍硬件。这时机器人仿真训练的价值就体现出来了:在 LeRobot 仿真环境里,遥操作、策略训练、评估回放全部可以在不碰硬件的前提下完成,数据、超参、评估脚本都能低成本反复试错,策略收敛后再上真机,大幅压缩部署周期。
一、流水线全景
整条仿真训练主线只有一条:
选环境时主要看四点:
| 环境 | 物理引擎 | 自由度(动作空间) | 典型任务 | 单帧耗时 |
|---|---|---|---|---|
| gym-aloha | MuJoCo | 14 维(双臂各 6 关节 + 2 夹爪) | 双臂 pick / place、插入 | ~50ms,勉强够实时 |
| gym-pusht | PyMunk(2D 刚体) | 2 维(平面推力) | 平面推块 | ~1ms,适合高频迭代 |
| gym-xarm | PyBullet(第三方 gym 包) | 7 维(6 关节 + 夹爪) | 单臂抓取、运动学验证 | 20~50ms |
gym-aloha 和 gym-pusht 是 LeRobot 的一等公民,通过 extras 直接安装;gym-xarm 属于第三方环境,需要单独安装对应的 gym 包后才能使用。
二、安装验证一条命令 🔧
硬件底线:
- Ubuntu 20.04+ / macOS 12+
- 有 NVIDIA GPU 更好,CPU 也能跑 pusht 级别的轻量环境
- 16GB 内存起步,磁盘留 50GB
克隆仓库并安装:
git clone https://gitcode.com/GitHub_Trending/le/lerobot && cd lerobot conda create -y -n lerobot python=3.10 && conda activate lerobot pip install -e ".[aloha]"验证只跑一条命令:
python -c "from lerobot import envs; print(envs.list_available())"预期输出是当前已注册环境的列表,例如['gym_aloha/AlohaInsertion-v0', ...],说明环境层已就绪。若envs.list_available()返回空列表,优先检查 conda 环境是否处于激活状态,以及pip install -e ".[aloha]"是否真正执行成功。
[!TIP] macOS 用户若用 MuJoCo 相关环境,建议用
mjpython代替python运行脚本,以保证物理引擎加载路径正确。
三、数据从哪来:录制与质量门槛
录制配置里真正决定数据质量的参数只有三个。env.type决定动作维度和观测结构,aloha 对应 14 维动作,pusht 对应 2 维;num_episodes决定数据量,先录 50 条成功 episode 是视觉策略的常规起步量,pusht 这类简单任务 100 条就够;fps必须与环境控制频率对齐——aloha 环境默认 50fps、pusht 默认 10fps,录制频率与环境不一致会导致动作时序错位。
录制入口是lerobot-record命令,指定--env.type、--teleop.type=gamepad和--dataset.repo_id三个参数即可开始。手柄映射如下:
| 按钮 | 功能 |
|---|---|
| 左摇杆 | 末端 XY 平移 |
| 右摇杆 | 末端 Z 向 / 姿态调整 |
| RB | 使能开关,按住才允许动作生效 |
| A / B | 夹爪开 / 合 |
| 十字键上 / 下 | 保存当前 episode / 丢弃重录 |
多少条算够:TDMPC 这类基于模型的方法几十条就能出基线,ACT 和 Diffusion 建议 50 条成功轨迹起步,再多收益递减。哪些 episode 该丢:中途反复修正、轨迹剧烈抖动、目标未达成的直接重录。
[!IMPORTANT] 策略会忠实拟合你录下的全部动作,包括抖动和犹豫。宁缺毋滥,50 条干净的轨迹比 200 条含噪声的更有用。
四、策略选型对比表 ⚡
| 策略 | 架构核心 | 推理延迟量级 | 数据量需求 | 典型成功率区间 | 一句话适用场景 |
|---|---|---|---|---|---|
| Diffusion Policy | 去噪扩散过程生成动作序列 | ~50ms/步,适合离线评估 | 中(50+) | 75~90% | 多模态动作分布、轨迹平滑度要求高 |
| ACT | Transformer 自注意力 + 动作解码头 | ~10ms/步,勉强满足实时控制 | 中(50+) | 80~90% | 实时性优先的通用基线 |
| TDMPC | 隐式动力学模型 + MPC 在线规划 | 单步需采样规划,百 ms 量级,仅离线评估 | 低(10~50) | 70~85%(数据少时) | 数据稀缺、奖励函数可定义 |
以 ACT 为例的训练命令:
lerobot-train \ --dataset.repo_id=username/pusht_dataset \ --env.type=pusht \ --policy.type=act \ --batch_size=32 \ --steps=100000 \ --output_dir=outputs/train/act_pusht \ --wandb.enable=trueDiffusion 的切换点只是--policy.type=diffusion,训练步数通常调到 20 万级;TDMPC 则不需要演示数据量硬堆,靠在线规划弥补泛化不足。
五、怎么判断训练健康:评估与调优 📊
盯三个指标就够。
policy_loss:正常是前几千步从高位单调下降到平台期。若震荡或 NaN,先查学习率和观测归一化的统计量是否正确。action_mse:应逐步逼近 0,反映对专家动作的拟合程度。长期卡在高位,优先核对观测与动作的维度映射是否对齐、时序是否错位。- 成功率:前几条 episode 波动大属正常,20 条之后应单调爬升并逐渐收敛。跑
lerobot-eval做 20 条 episode 基准,成功率低于 40% 时通常意味着配置错误,而不是策略不行。
调优只有三个方向:
- 学习率:从 1e-4 起步,损失不稳就降一个量级。
- 数据增强:随机裁剪与颜色抖动,专治过拟合。
- 推理加速:扩散策略减采样步数,Transformer 策略换小 batch 做在线微调。
六、仿真到现实部署
从仿真到真机,差异集中在四类,应对思路各不相同:
| 差异来源 | 应对思路 | LeRobot 中的配置位置 |
|---|---|---|
| 动力学参数不一致 | 给观测和初始状态加随机化(相当于给仿真环境加滤镜) | 数据增广与采样器(src/lerobot/datasets/) |
| 渲染图像与真实相机观感差距 | 图像级增广:亮度、颜色、模糊 | processor 管线(src/lerobot/processor/) |
| 传感器噪声 | 训练时注入高斯噪声 | 奖励分类器配置(src/lerobot/configs/rewards.py) |
| 执行器延迟 | 实时重规划(RTC),按延迟平滑输出 | RTC 处理器(src/lerobot/processor/) |
下一步:
- 用
lerobot-eval跑通 20 条 episode 的端到端评估,拿到成功率基线。 - 同一数据集换 ACT 重训,对比两种策略的成功率差异。
- 读一遍 src/lerobot/policies/ 源码,确认你的观测与动作空间映射无误。
延伸阅读
- 环境配置默认值(fps、episode_length、obs_type):src/lerobot/envs/configs.py
- 策略实现与配置:src/lerobot/policies/
- 官方文档:docs/
- 录制脚本:src/lerobot/scripts/lerobot_record.py
- 手柄遥操作:src/lerobot/teleoperators/gamepad/
【免费下载链接】lerobot🤗 LeRobot: Making AI for Robotics more accessible with end-to-end learning项目地址: https://gitcode.com/GitHub_Trending/le/lerobot
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考