LeRobot 仿真训练指南:不碰真机,先把策略跑通
2026/9/14 2:38:44 网站建设 项目流程

LeRobot 仿真训练指南:不碰真机,先把策略跑通

【免费下载链接】lerobot🤗 LeRobot: Making AI for Robotics more accessible with end-to-end learning项目地址: https://gitcode.com/GitHub_Trending/le/lerobot

如果你的机械臂每试一次策略都要冒着烧关节的风险,你会先做什么?大概率是先把所有迭代挪进仿真。LeRobot 做的事正是这个:用 PyTorch 把数据集、策略训练和仿真评估串成一条流水线,训练在真实遥操作数据上做,评估直接放进仿真环境,全程不需要让真机去"试错"。

仿真到底替你省了什么

仿真训练解决的核心问题只有一个:让"改参数 → 看效果"这个循环的边际成本降到零。数据在真机上采一次,之后反复调参、换策略、跑评估,全部发生在虚拟世界里,硬件一次都不用碰。

这条链路里,只有 A 需要你站在机器人旁边,其余都在 GPU 上。

开训前先定好环境、策略和数据量

三个决策定了,后面就不会来回返工。

选仿真环境:按迭代速度选

LeRobot 内置了几套开箱即用的环境,配置在src/lerobot/envs/configs.py。我选 PushT 起步,因为它动作空间只有 2 维、CPU 就能跑,一个训练周期几分钟出结果,适合先把流水线跑顺:

环境(--env.type)动作维度我选它的理由
pusht2迭代最快,先验证流水线
aloha14双臂+视觉,贴近真实操作任务
libero7标准基准,方便横向对比

选策略:按推理速度和数据量选

三种 IL/RL 策略性格差异明显(策略源码在src/lerobot/policies/下,每个策略一个目录)。我选 ACT,因为单卡几分钟就能训完一轮,推理快,适合边录边训的迭代节奏:

策略(--policy.type)特点适合场景
act快、省显存实时控制、快速迭代
diffusion稳重,多模态动作分布下更鲁棒动作歧义大的任务
tdmpc基于模型、样本效率高数据量小的任务

定数据量:覆盖度比数量重要

我的经验值:单一任务 50 个 episode 起步,双臂任务翻一倍。但真正决定成败的是动作分布覆盖——50 个 episode 如果全是同一种初始位姿,模型只学会了一条路。录完先检查再开训,比录到 500 个再发现缺工况要省事得多。

跑通第一个 episode:安装与验证

安装只需要四步,中间一堆依赖(gymnasium、torch、视频编解码)由 pip 自己解析,不用手动操心:

git clone https://gitcode.com/GitHub_Trending/le/lerobot cd lerobot conda create -y -n lerobot python=3.12 && conda activate lerobot # 按顺序装:核心+训练、数据集读写、仿真环境、扩散策略 pip install -e ".[training]" -e ".[pusht]" -e ".[diffusion]"

[!IMPORTANT] LeRobot 要求 Python ≥ 3.12,比多数教程里的 3.10 高一截,环境别用旧的。

装完跑一条 import 命令确认环境就绪:python -c "import lerobot, gymnasium; print(lerobot.__version__)"。再确认数据集工具可用——lerobot-dataset-viz能把你录的数据渲染成网页,是后面质检的主力:

lerobot-dataset-viz \ --repo_id=<你的数据集> \ --output_dir ./dataset_vis

打开生成的 HTML,检查图像和动作序列是否同步、episode 里有没有明显废动作。

录够 50 个 episode 再开训

这节回答"数据从哪来、录多少"。50 个 episode 是起步线,不够会怎样:模型只能学会数据里出现过的那几条轨迹,换个物体摆放就直接趴下。所以宁可少录几个,也要保证初始条件和物体位置有变化。

真机录制用lerobot-record,遥操设备选 gamepad 或 keyboard(遥操代码在src/lerobot/teleoperators/下,gamepad 支持 pygame 和 hidapi 两种读取方式):

lerobot-record \ --robot.type=<robot_name> \ --teleop.type=gamepad \ --dataset.repo_id=<你的用户名>/my_pick_dataset
遥操输入功能说明
左摇杆末端位置X/Y 平面移动
右摇杆末端姿态旋转调整
L 扳机夹爪闭合抓取
R 扳机夹爪打开释放
组合键保存/放弃 episode录废的及时丢弃

如果你只想先跑通流程,可以直接用官方现成数据集(比如 aloha 任务对应的lerobot/aloha_mobile_cabinet),跳过录制环节。仿真环境本身不产生训练数据——PushT、LIBERO 这类环境的角色是"考场",不是"数据源"。

三种策略,三种性格

这节回答"同一个数据集上,三种策略各是什么脾气"。

ACT 是急性子的快枪手。Transformer 骨干,训练快、推理快,适合先冲一个基线出来:

lerobot-train \ --policy.type=act \ --dataset.repo_id=<你的数据集> \ --batch_size=32 \ --steps=100000

Diffusion 是稳重的老法师。基于扩散过程生成动作(可以理解为反复去噪逼近专家动作),对多模态动作分布——同一个画面下专家有时抓左有时抓右——处理得最从容,代价是推理慢一档:

lerobot-train \ --policy.type=diffusion \ --dataset.repo_id=<你的数据集> \ --batch_size=16 \ --steps=100000

TDMPC 是小数据量场景的性价比之选。它带了自己的动力学模型(model-based RL),样本效率高,数据只有一两百个 episode 的时候往往压过前两者。

训练调优就三条:如果 loss 出现 NaN,把学习率降一个数量级并确认开了梯度裁剪;如果评估集比训练集差得远,说明过拟合,补录覆盖缺口的数据比调参有效;如果推理跟不上控制频率,缩短 ACT/Diffusion 的动作 chunk 长度。

评估:别只盯成功率

这节指出三个容易漏掉的评估维度。成功率是门槛指标,但只看它会漏掉真问题:

  • 完成步数:一个 90 步成功、一个 300 步擦线成功的策略,工程价值完全不同,对比实验要一起记平均步数;
  • 动作平滑度:关节抖动大的策略上真机就是磨损,看动作序列的一阶差分就能暴露;
  • 失败模式:失败的 episode 视频比数字更有信息量——是够不到、抓空还是放偏,决定了你下一步补什么数据。

评估直接用统一入口,把策略丢进仿真环境跑 N 个 episode:

lerobot-eval \ --policy.path=<你的checkpoint> \ --env.type=libero \ --env.task=libero_object \ --eval.n_episodes=10

多策略对比不用写脚本:对每个策略各跑一遍上面的命令,把成功率和平均步数记进一张表,再各抽 3 个失败 episode 看视频,结论基本就出来了。

四道坎:仿真到真机

这节回答"为什么仿真里 90% 的策略上了真机只剩 60%"。四道坎,每道一行"问题 → 解法":

动力学差→ 仿真里的摩擦、惯性是理想值,解法是在采集阶段就制造随机性:遥操作时故意带点抖动、不同物体重复执行,让数据集本身就含动力学噪声。

视觉差→ 仿真渲染没有真机镜头的光照和色差,解法是训练时加图像增强,把颜色、亮度、裁剪随机化:

# 数据加载时叠加的增强管线(最小可用示例) import torch.nn.functional as F def augment(image): # image: [C, H, W] image = F.gaussian_blur(image, kernel_size=3, sigma=0.8) # 模糊,模拟镜头差异 return image * torch.randn_like(image) * 0.05 + 1.0 # 高斯噪声,模拟传感器噪声

噪声→ 仿真观测太干净,真机摄像头有压缩和传感器噪声,解法同上,把噪声加在数据侧而不是模型侧。

延迟→ 真机执行链路有几十毫秒延迟,解法是训练数据的时间戳(delta_timestamps)按真机实际帧率标定,别让策略按仿真的 50Hz 规划、按真机的 30Hz 执行。

数据量过百小时之后

数据规模上来后,单机训练先卡在数据 IO 而不是 GPU:把 dataloader 的 worker 数拉高、给视频解码留足内存缓存。仓库已集成 Accelerate,torchrun起多卡做数据并行即可,不用自己写分布式逻辑。如果想在 CI 上做回归,把lerobot-eval跑 10 个 episode 当冒烟测试挂在每次提交上,比全量重训便宜得多。

下一步:把 episode 数补到 100 看成功率天花板;换 PushT 以外的环境验证泛化;指标稳了就排真机部署。做完这一步,你的仿真流水线就跑通了,剩下的事下篇文章再聊。

仓库地址:git clone https://gitcode.com/GitHub_Trending/le/lerobot

【免费下载链接】lerobot🤗 LeRobot: Making AI for Robotics more accessible with end-to-end learning项目地址: https://gitcode.com/GitHub_Trending/le/lerobot

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询