LeRobot 仿真实战:如何 30 分钟跑通策略训练并落到真机
【免费下载链接】lerobot🤗 LeRobot: Making AI for Robotics more accessible with end-to-end learning项目地址: https://gitcode.com/GitHub_Trending/le/lerobot
面向能跑 bash 的读者:在仿真环境里完成 LeRobot 策略训练完整闭环——录演示数据、训 ACT 策略、仿真评估、真机部署。前提:Python 3.12+,Linux/macOS,50GB 磁盘。
整体流水线速览:录数据、训练、评估、部署一张图
闭环共四步,评估指标不达标时回到数据环节改造再训:
| 命令 | 职责 |
|---|---|
lerobot-record | 遥操作机器人录出演示 episode,存成 LeRobot 数据集 |
lerobot-train | 用数据集微调策略,输出 checkpoint 权重 |
lerobot-eval | 让策略在仿真环境中自主跑若干集,输出成功率指标 |
问题一:LeRobot 仿真环境怎么搭(10 分钟装好并验证)
环境要求不高:Python 3.12+、Linux 或 macOS、16GB 内存、约 50GB 磁盘(装依赖与缓存数据集)。NVIDIA GPU 可明显提速;没有也能用 CPU 跑,只是数据量大时慢一些。
git clone https://gitcode.com/GitHub_Trending/le/lerobot cd lerobot conda create -y -n lerobot python=3.12 && conda activate lerobot conda install ffmpeg -c conda-forge # 视频解码依赖 pip install -e ".[aloha,pusht,training]" # 两个仿真环境 + 训练依赖安装后用一行命令验证环境可用:
python -c "import gym_aloha, gym_pusht, lerobot; print(lerobot.__version__)"打印出版本号,依赖即齐了,后续所有命令都在这个环境内执行。
避坑:首次安装要下载大量依赖,速度取决于网络,中途失败就重跑同一条pip install,不要手动删环境。
问题二:模仿学习数据录制从哪来(遥操作录制与质量自查)
遥操作(teleop)即人手动驱动机器人完成任务的过程:你用手推主臂(leader),从臂(follower)跟随,lerobot-record同步存下每帧画面、关节角与动作指令。一个 episode 指从开始到结束完整做完一次任务。
录制组参数,需要改的只有五个:
--robot.type/--robot.port:从臂型号与串口--teleop.type:遥操设备(主臂型号)--dataset.repo_id:数据集 ID,形如“用户名/数据集名”,<你>替换为你的值--dataset.num_episodes:录制集数,建议 50 集起步--dataset.single_task:一句话任务描述,如 "Grab the cube"
lerobot-record \ --robot.type=so100_follower --robot.port=/dev/ttyACM0 \ --teleop.type=so100_leader \ --dataset.repo_id=<你>/pick_cube \ --dataset.num_episodes=50 \ --dataset.single_task="Grab the cube"没有真机也可以起步:直接用 Hub 上的公开数据集(如lerobot/aloha_insertion)替换--dataset.repo_id,跳过录制。
录完做两步自查:
- 每集录完,程序提示 "Reset the environment",把物体摆回初始位姿后下一集才开始。
lerobot-dataset-viz --repo_id <你>/pick_cube打开可视化页,抽查几集:视频帧与动作曲线要对得上,动作忽大忽小的坏集用lerobot-edit-dataset移除。
避坑:录制起不来的最常见原因是串口被占用,上一轮录制残留进程或别的终端占着端口时,先关掉旧进程再试。
问题三:ACT 策略怎么选型与训练
策略选型取决于数据量,按下表对号入座:
| 策略 | 数据量需求 | 推理速度 | 适合场景 |
|---|---|---|---|
| Diffusion | 100+ 集 | 较慢 | 动作分布多模态、精细抓取 |
| ACT | 约 50 集 | 快 | 新手首选,单臂/双臂操作 |
| TDMPC | 20~50 集 | 快 | 低维状态观测、无相机的小任务 |
新手选 ACT:50 集通常出效果,单卡 GPU 训练 10 万步几小时完成,默认超参不用动,源码见 src/lerobot/policies/act/。
训练组参数,最小可跑版命令:
lerobot-train \ --dataset.repo_id=<你>/pick_cube \ --policy.type=act \ --policy.device=cuda \ --output_dir=outputs/train/act_pick \ --wandb.enable=true逐行说明:
--dataset.repo_id:要训练的数据集,替换为你的数据集 ID--policy.type:策略类型,本例为 ACT--policy.device:训练设备,有 GPU 用cuda,否则cpu--output_dir:checkpoint 与日志输出目录--wandb.enable:开启 wandb 记录,实时盯loss曲线
loss稳定下降即在学习。训练结束后,从outputs/train/act_pick/checkpoints/目录取最新权重,就是最终产物。
避坑:无 GPU 的机器也能用 CPU 训练,但同等步数耗时数倍,先跑几百步的短程试跑验证流程正确,再上完整训练。
问题四:LeRobot 评估结果怎么看
评估即把训好的策略放回仿真环境自主跑若干集。评估组参数只有三个:
--policy.path:训练好的 checkpoint 路径,<step>替换为你的最新 checkpoint 步数--env.type/--env.task:仿真环境与具体任务--eval.n_episodes:评估集数
lerobot-eval \ --policy.path=outputs/train/act_pick/checkpoints/<step>/pretrained_model \ --env.type=aloha --env.task=AlohaInsertion-v0 \ --eval.n_episodes=20 \ --policy.device=cuda输出目录里的eval_info.json,三个数决定成败:
- pc_success(成功率):核心判据,20 集成功 15 集即 75%
- avg_sum_reward(平均累计奖励):反映完成质量与步数效率,成功率相近时,值更高说明完成得更稳
- eval_ep_s(单集耗时):关联真机实时性,推理太慢的模型上真机会掉帧
指标不达标时,补数据优先于调参:给每集换一种物体初始位姿,场景多样性直接决定泛化能力;之后才轮到--batch_size与学习率。
避坑:判断成败只看 pc_success,成功率拉开差距前不必纠结奖励值的细微波动。
问题五:策略怎么部署到真机
仿真 90% 成功率不等于真机 90%,部署前逐项对齐三处差异:
| 差异 | 对齐方法 | 注意 |
|---|---|---|
| 动作空间维度不同 | 对齐相机数量、关节角/末端位姿表示 | 维度错一位,动作全乱 |
| 控制频率不同 | --fps与训练数据集保持一致 | 真机常见 10~30Hz |
| 观测维度不同 | 用lerobot-info核对数据集特征 | 训练用过的观测项必须都在 |
部署走lerobot-rollout。部署组参数:--strategy.type执行策略、--policy.path权重路径、--robot.type/--robot.port真机型号与串口、--task任务描述(与训练一致)、--duration单次运行秒数。
lerobot-rollout \ --strategy.type=base \ --policy.path=outputs/train/act_pick/checkpoints/<step>/pretrained_model \ --robot.type=so100_follower --robot.port=/dev/ttyACM0 \ --task="Grab the cube" --duration=30两条实操建议:首跑加--display_data=true,在 Rerun 窗口盯动作曲线,确认夹爪与关节平滑;动作卡顿开--use_torch_compile=true提升推理速度。
常见问题速查:四类排障表
| 现象 | 可能原因 | 处理 |
|---|---|---|
| import 验证报缺模块 | ffmpeg 或 extras 未装全 | 重跑conda install ffmpeg -c conda-forge与 extras 安装命令 |
| 录制打不开串口 | 串口被占用或端口名错误 | 核对端口名,关闭占用端口的旧进程后重试 |
| 某几集动作曲线混乱 | 物体未摆回初始位姿 / 录制中碰撞 | lerobot-dataset-viz抽查,lerobot-edit-dataset移除坏集 |
| 评估成功率偏低 | 数据场景多样性不足 | 每集变换物体初始位姿补数据,数据够再调参 |
| 仿真流畅真机卡顿 | 动作维度或控制频率不一致 | 用lerobot-info核对三项对齐,--fps与训练一致 |
| 训练进度过慢 | 使用 CPU 训练 | 切换--policy.device=cuda,无 GPU 先短程试跑 |
下一步去哪:延伸阅读
| 你的方向 | 直达入口 |
|---|---|
| 深入各策略原理与训练配方 | docs/source/api/policies.mdx 与 src/lerobot/policies/ |
| 多卡分布式训练 | docs/source/multi_gpu_training.mdx |
| 结合强化学习继续进化 | docs/source/hilserl.mdx 与 src/lerobot/rl/ |
更多参数说明见 docs/source/,卡住先查文档再动手。
【免费下载链接】lerobot🤗 LeRobot: Making AI for Robotics more accessible with end-to-end learning项目地址: https://gitcode.com/GitHub_Trending/le/lerobot
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考