LeRobot 是一个近年来在机器人学习圈子里很受关注的项目,主打目标是:
🦾 让多种机器人平台之间的模仿学习和泛化变得更简单、更标准、更可复现。
下面我给你分点讲清楚 LeRobot 是什么、它解决了什么问题、适合谁用 👇
🤖 LeRobot 是什么?
LeRobot 是一个用于机器人行为学习(模仿学习、强化学习)的通用框架,由 UC Berkeley 的 RoboNet、VIL 等实验室开发。它最早用于 RT-1、RT-2 等大模型机器人项目中。
🧠 它解决了什么问题?
✅ 1. 各种平台的差异太大
- 不同机械臂、不同抓取器、不同控制频率都让训练过程难以复用;
- LeRobot 提供了一个标准化接口来抽象和统一不同机器人的硬件/控制接口。
✅ 2. 数据集太分散
- 每个实验室都搞自己的 dataset(DClaw、Franka、WidowX、Bimanual…);
- LeRobot 提供了一个统一的 dataset 加载 & 回放接口,可以直接读取常用模仿学习数据格式(HDF5、npz等)。
✅ 3. 学习模型训练流程杂乱
- LeRobot 提供标准的数据预处理(视觉、动作)、模型定义、训练 loop;
- 你可以 plug in 自己的模型(VLA、Transformer、RNN),用标准 pipeline 训练行为策略。
🔧 它的功能结构(你可以想象是 PyTorch + Gym + 数据工具的组合):
模块 | 功能 |
---|---|
lerobot.envs | 模拟器或真实机器人环境封装 |
lerobot.data | 数据集加载器(支持桥式数据、多相机、多机器人) |
lerobot.models | 视觉-动作模型结构,如 transformer policies |
lerobot.training | 训练器(BC、BCQ、RL) |
lerobot.utils | 视觉预处理、控制接口转换、路径采样等 |
🚀 和 RoboNet / RT 系列的关系?
LeRobot 最早是为了支持 RoboNet/BridgeData 项目统一不同平台行为数据。
你可以理解为:
- RT-1 / RT-2 是上层大模型应用;
- LeRobot 是底层训练 & 数据工具基础设施。
🧪 适合什么人用?
- 想在多个机器人平台上训练通用策略;
- 想统一处理大量 mimicking / teleop / demo 数据;
- 想搞自监督预训练 + policy learning 的机器人视觉研究;
- 想复现 RT-1 / BC-Z / BridgeData 等论文中的数据加载和行为训练方式。
🗂️ 官方资源 & 项目入口
- GitHub 地址:https://github.com/rail-berkeley/lerobot
- 配套项目:
- BridgeData V2:https://github.com/rail-berkeley/bridgedata
- RT-X 系列:https://github.com/google-research/robotics_transformer_x
✅ 总结一句话
LeRobot 是一个为了实现“多机器人平台共享行为数据 + 模仿学习训练”的标准框架,适合做多模态模仿学习、桥式数据预训练、多任务控制等研究。
你要学 LeRobot 的代码架构是一个非常正确的切入方式 —— 它不只是工具库,更像是一个可扩展的机器人模仿学习研究平台。我来带你从宏观和实战两个角度,一步步了解它的整体结构。
🧠 先说总体印象:LeRobot 像什么?
LeRobot 和 PyTorch Lightning 或 Stable-Baselines 类似,围绕以下几件事组织代码:
- 环境封装(Env Wrappers)
- 数据加载和表示(Dataset / Episode / Sequence)
- 模型结构(Policy / Encoder / Decoder)
- 训练与评估脚本(Trainer / Runner)
- 配置 & 运行接口(YAML / CLI / Hydra)
你可以想象整个框架像一台工厂流水线:数据 → 模型 → 训练器 → 策略输出。
📁 LeRobot 的代码结构解读
我们以 GitHub 的主 repo https://github.com/rail-berkeley/lerobot 为例。
lerobot/
├── data/ # 数据加载器 & 轨迹预处理
├── envs/ # 环境封装(仿真 + 真实机器人)
├── models/ # 模型结构:Encoder, Policy 等
├── training/ # BC, RL, evaluation 等训练器
├── utils/ # 工具函数、camera warp、logger 等
├── configs/ # Hydra 配置文件(YAML)
├── scripts/ # 训练 / 评估脚本
└── assets/ # 默认模型权重、相机参数等
🧩 各模块功能详解
🟩 1.
data/
– 数据处理模块
- 核心文件:
- episode_dataset.py:用于加载一个轨迹(episode);
- hdf5_dataset.py:HDF5 文件解析器;
- sequence_dataset.py:将轨迹划分成模型训练需要的 windowed sequences;
- 通常你会通过:
from lerobot.data import SequenceDataset
- 得到一个标准的 PyTorch Dataset,可以直接喂给 DataLoader。
🟦 2.
envs/
– 环境抽象层
- 支持多种机器人平台封装:Franka、WidowX、DClaw 等;
- 可以封装真实机器人、仿真器(PyBullet、Isaac Gym);
- 所有 env 都会实现一个标准 API:
obs = env.reset()
obs, reward, done, info = env.step(action)
- 有时你可以用 env.wrapped_env 访问底层原始 API。
🟨 3.
models/
– 模型模块
-
每个模型是一个 PyTorch Module,负责:
- 编码视觉输入(例如 ResNet / Transformer);
- 输出动作或动作分布;
-
例如:
- ImageEncoder
- TransformerPolicy
- MLPPolicy
你可以继承它们快速搭出自己的策略网络。
🟧 4.
training/
– 训练与策略更新逻辑
- 比如:
- behavior_cloning_trainer.py
- reward_weighted_regression.py
- 通常封装了整个训练 loop 和评估逻辑;
- 支持 logging、checkpoint、loss 输出等。
🛠️ 5.
utils/
– 工具模块
-
相机标定、图像转换、渲染、normalization、配置解析等都在这里;
-
比如:
- camera_utils.py
- vis_utils.py
- traj_utils.py
🧪 实战路径推荐:想读懂 LeRobot,可以这样入手
阶段 | 重点 |
---|---|
✅ 阶段 1 | 跑通 scripts/train_behavior_cloning.py,理解 config、数据、模型、trainer 如何联动 |
✅ 阶段 2 | 读 models/transformer_policy.py,弄懂视觉 + transformer policy 的 forward 过程 |
✅ 阶段 3 | 读 data/sequence_dataset.py 和 episode_dataset.py,理解如何从原始数据构造训练输入 |
✅ 阶段 4 | 自己改一个模型,或者改数据预处理 pipeline,比如改输入图像尺寸或加入 attention mask |
✅ 阶段 5 | 尝试写自己的 env wrapper 或 dataset class,让 LeRobot 跑你自己的数据(如 VR 控制采集的 demo) |
✅ 总结一句话
LeRobot 是一个面向机器人模仿学习的大框架,结构清晰,每个模块职责单一,非常适合边学边改;你可以从数据加载、模型结构或训练脚本三个入口点入手阅读代码。
如果你告诉我你对哪块更感兴趣(比如你想看它的 transformer policy 是怎么做视觉编码的?或者它的数据预处理怎么做序列切分?),我可以直接带你一行一行读源码,也可以直接改出你自己的版本。你想从哪个模块开始?