LeRobot 手把手完全指南:三步让机械臂学会模仿学习,跑通端到端控制
【免费下载链接】lerobot🤗 LeRobot: Making AI for Robotics more accessible with end-to-end learning项目地址: https://gitcode.com/GitHub_Trending/le/lerobot
LeRobot 是一个基于 PyTorch 的开源机器人学习框架:你用手给机械臂演示一遍任务,它自己学出策略,再让机械臂独立完成操作,全程走端到端控制。这篇指南带你从装好环境、收第一批演示数据,到把训练好的模型跑上真机——不需要机器人背景,所有术语讲到哪解释到哪。
它解决了什么麻烦
这节先回答一个问题:为什么你自己搭一遍"采集-训练-部署"这么累。做机器人学习的人通常被三件事卡住:
- 数据各搞各的。每个团队的遥操作数据格式不同,别人攒了上万条的抓取数据,你一行都用不上。LeRobot 用统一的 LeRobotDataset V3 格式(视频存 MP4、关节与动作存 Parquet)把数据标准化,Hub 上现成数据集直接一行代码加载,格式定义在
src/lerobot/datasets/。 - 硬件写一套、再写一套。SO100、Reachy2、Unitree G1……每种机器人的串口、电机、相机驱动都不一样。框架用统一的 Robot 接口把这些差异挡在
src/lerobot/robots/里,你的策略代码不用关心底下是什么硬件。 - 论文到真机隔着一段路。ACT、Diffusion、Pi0、GR00T 这些算法以前散落在各种仓库里,环境难装、接口难对。这里全部用纯 PyTorch 重写在
src/lerobot/policies/,训练和推理都是同一套 CLI 命令。
适合人群:会一点 Python 和 PyTorch、手里有一台 SO100 级别机械臂(或打算买一台)的研究者和爱好者。一句话小结:它卖的不是单个算法,是"数据到真机"这条完整流水线的最低门槛。
三步跑通:安装、最小示例、验证成功
这节目标只有一个:十分钟内让你确认"这套东西在我电脑上能跑"。
第一步,装。要求 Python ≥ 3.12。先建一个虚拟环境(conda、uv、venv 都行),然后从仓库装:
git clone https://gitcode.com/GitHub_Trending/le/lerobot cd lerobot && pip install -e ".[training]" lerobot-info.[training]这个后缀装的是训练策略需要的依赖;如果还要驱动真机,换.[core_scripts];全都要就装.[all]。另外读视频帧依赖 ffmpeg,装环境时顺手装一个(conda install ffmpeg -c conda-forge),后面加载数据集才顺畅。
第二步,最小示例。上面第三条命令lerobot-info就是最小示例——它会把版本号和你的 PyTorch/CUDA 环境打出来。
第三步,验证成功。看到终端打印出版本信息、且没有 import 报错,环境就通了。接下来一节的"加载公开数据集打印第一个动作",就是你的 Hello World。
拆开看:一帧画面如何变成关节动作
这节把框架的工作流程拆开,讲清楚数据是怎么一路变成动作的,全程用类比,不用背术语。
先看大架构图(以 GR00T 类 VLA 模型为例):
数据走五个"站",一站一跳:
- 输入站:相机画面 + 一句语言指令 + 当前关节角度。相当于告诉模型"你看到什么、主人要你干什么、你的手臂现在摆在哪"。
- 视觉-语言骨干:这是一个在海量图文数据上预先训练好的"常识底座",把图像和文字编码到同一个语义空间里。模型一出生就认识桌子、杯子、方块,不需要你从零教它。
- 动作解码头:骨干给出的语义特征,要经过一个 DiT 式的动作头迭代"去噪",才变成一个具体的关节动作序列。类比画家:先有草稿,再反复描一遍、磨一遍,最后成稿。
- 处理器流水线(
src/lerobot/processor/):模型输入输出之间的"标准翻译层"。进来先归一化、出去再反归一化。记住一句话:训练时用的归一化统计量,推理时必须原样复用,错开一步动作就飘了。 - 机器人接口:
send_action把动作发给电机,闭环完成。
整条链就是obs → processor → policy → action → robot。看完这张图,后面所有命令你都能对号入座:lerobot-train走 3、4 两站,lerobot-rollout走第 5 站。
它能替你做的事:五类典型任务
这节把"算法清单"翻译成"任务清单",你照场景对号入座就行。
- 采遥操作演示数据:
lerobot-record。SO100 主从臂、手机、手柄都能当"遥控器"。采集中按右方向键保存一条轨迹、左方向键重采、ESC 停止并上传——30 条轨迹通常半小时以内收完。
- 训模仿学习策略:ACT、Diffusion 这类"看人做事"的算法,
lerobot-train --policy.type=act加一个数据集 id 就能起训,单机几小时量级。 - 微调 VLA 大模型:Pi0 / Pi0.5 / SmolVLA / GR00T N1.7 这条线适合"一个模型干很多任务",语言指令鲁棒性更好。可以直接指向 Hub 上的预训练权重微调,不用从头训。
- 真机 rollout:
lerobot-rollout把策略跑到机器人上,按秒计时或无限跑。注意相机配置要和采集时完全一致,否则模型等于"色盲"。
- 仿真评估与奖励建模:没有真机也不怕,LIBERO、MetaWorld 等仿真基准可直接跑评估(见
docs/source/libero.mdx);另有 SARM / TOPReward / Robometer 三个奖励模型,给强化学习和数据筛选打分用。
下一步动作:先想清楚你属于第几类任务,再回去翻对应文档,别一上来就全装。
数据从采集到训练的一条链
这节讲数据侧的两个关键点:格式为什么这样设计、训练时有哪几件事必须盯住。
格式:LeRobotDataset V3 把"看"和"算"分开存——画面进 MP4(视频压缩,省磁盘、省 IO),关节角、动作、时间戳进 Parquet(表格化,随机访问快)。加载时你只写几行 Python,视频解码透明完成:
from lerobot.datasets import LeRobotDataset dataset = LeRobotDataset("lerobot/aloha_mobile_cabinet") print(dataset[0]["action"].shape)能打印出动作向量形状,说明"下载、解码、取帧"整条链通了——这就是前面说的 Hello World。
训练要点,盯住四个开关就够:
- 策略与数据:
--policy.type+--dataset.repo_id,两个 id 定全局; - 步数与设备:
--steps、--policy.device=cuda(Apple 芯片用mps); - 断点续训:
--config_path指向 checkpoint 再加--resume=true,掉线不用从零开始; - 没有本地 GPU:命令后加
--job.target就能把训练甩到云端跑,模型训完自动推回 Hub。
数据集的日常手术(删轨迹、切分、合并、加特征)都走src/lerobot/datasets/dataset_tools.py背后的 CLI,不用手写脚本。
上真机最容易翻车的四处
这节浓缩了几类最常见的真机事故,每条给一个对策,照着排查能省很多小时。
- 跳过校准。不同手臂的关节"零位"完全不一样,出厂角度不能当通用语言。上机先
lerobot-calibrate每台臂做一次,之后所有命令里的--robot.id必须和校准时用的 id 一致——框架靠它找校准文件,对不上就是"不认识你的手臂"。 - 串口和相机编号漂移。机器人挪个位置、换个 USB 口,设备号可能就变了。动真机前先用
lerobot-find-port和lerobot-find-cameras各验证一遍,后者还会把每个相机的测试帧存到lerobot/outputs/captured_images,肉眼看一眼最保险。 - 控制频率跟不上模型。模型几百毫秒才产出一个动作,而电机每 33 毫秒要一次指令,中间靠插值填满。动作抖、卡顿,优先上 RTC(实时动作插值)或
src/lerobot/async_inference/的异步推理,把"思考"和"执行"解耦开。 - 仿真里能跑 ≠ 真机能跑。仿真没有传感器噪声、没有摩擦、没有通信延迟。正确姿势:先在仿真基准上验证策略逻辑,再用少量真机数据微调,并确保训练与推理用同一套 processor 归一化统计量。
一句话小结:真机问题八成都出在"校准、端口、频率、域差"这四个词上,对号入座比瞎查快得多。
报错别慌:对照自查
这节给你一张高频问题的排查表,先对照症状再动手。
| 症状 | 先查什么 | 去哪里找答案 |
|---|---|---|
| 电机没反应、串口打不开 | USB 是否松动、端口号对不对、WSL 下是否装了 evdev | lerobot-find-port一步步引导你插拔识别 |
| 相机找不到或画面全黑 | 相机 index、分辨率设置、ffmpeg 是否在 | lerobot-find-cameras打印设备信息并存测试帧 |
| 训练 loss 变 NaN 或发散 | 数据归一化统计量、混合精度、batch 大小 | src/lerobot/processor/normalize_processor.py的统计量来源 |
| 推理时机器人卡顿、抖 | 是否--policy.device=cuda、动作插值是否开启 | src/lerobot/async_inference/与 RTC 相关文档 |
排查顺序建议固定为:端口/相机 → 数据 → 设备/频率 → 模型。大多数情况走到第二步就能定位。
什么情况选它、什么情况别选
这节泼点冷水,帮你把预算花在刀刃上。
适合选:
- 你要的是"数据 → 策略 → 真机"全链路,而不是只训一个模型;
- 硬件在支持列表内(SO100/SO101、Reachy2、LeKiwi、Koch、HopeJR、OMX、Unitree G1、reBot B601 等),或愿意按接口规范补驱动;
- 想直接复用公开数据集和预训练模型,省掉攒数据的几个月;
- 团队偏 ML、不熟悉机器人底层,需要一个把硬件脏活包好的框架。
不适合选:
- 需要工业级硬实时和安全认证的控制栈——它是研究与教学框架,不是安全层;
- 纯自研硬件且完全不想写驱动,那统一接口帮不到你;
- 只做仿真算法竞赛、已有成熟训练框架,只需单个模型的话,直接用自己的流水线更省事。
客观一句:LeRobot 的价值在"链路完整 + 资产可复用",不在单点性能天花板。
学完往哪走
这节给一条最短学习路线和贡献入口。
- 路线:先过一遍
examples/notebooks/quickstart.ipynb(官方完整走查),再背熟docs/source/cheat-sheet.mdx里的命令速查,最后按docs/source/hardware_guide.mdx对照你的 GPU 选策略——每个策略的显存和训练时长都有数。 - 贡献入口:写新策略看
docs/source/bring_your_own_policies.mdx,成品放src/lerobot/policies/;接新硬件遵循src/lerobot/robots/的接口;攒好的数据按 V3 格式传上 Hub 就是社区贡献。流程细节在CONTRIBUTING.md。
这周就能落地的下一步:拿一台 SO100 收 30 条演示轨迹,训一个 ACT,用它验证"采集-训练-真机"全链路跑通——剩下的,都是在这条链上换更难的策略和更复杂的任务。
【免费下载链接】lerobot🤗 LeRobot: Making AI for Robotics more accessible with end-to-end learning项目地址: https://gitcode.com/GitHub_Trending/le/lerobot
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考