LeRobot 核心概念
本页面解释 LeRobot 实现端到端机器人学习的四大基石:Robot 抽象、LeRobotDataset 格式、策略框架和处理器系统。理解这些概念对于有效使用 LeRobot 至关重要。
LeRobot 四大支柱
LeRobot 围绕四个核心抽象构建,共同实现从数据采集到策略部署的统一工作流:
| 支柱 | 目的 | 关键优势 |
|---|---|---|
| Robot 抽象 | 硬件无关的机器人控制接口 | 一次编写,在任何支持的机器人上运行 |
| LeRobotDataset | 标准化的机器人数据格式 | 高效存储、流式传输和共享 |
| 策略框架 | IL、RL 和 VLA 模型的统一接口 | 轻松实验不同算法 |
| 处理器系统 | 通用数据转换和归一化 | 传感器、模型和执行器之间的无缝数据流 |
1. Robot 抽象
目的
Robot 抽象提供统一的 Python 接口用于控制多样化的机器人硬件。这种抽象将控制逻辑与硬件特定细节解耦,使同一代码能在不同平台上工作。
关键类和接口
系统建立在抽象基类之上,定义了物理交互的严格契约。子类实现 getobservation 等方法以在生态系统中使用。
和 sendaction
LeRobot 原生支持广泛的平台,从低成本机械臂如 SO100 到人形机器人如 Unitree G1。遥操作通过引导臂、游戏手柄和移动设备支持。
2. LeRobotDataset
目的
LeRobotDataset 是存储和共享机器人学习数据的标准化格式。它使用 Apache Parquet 存储表格数据(状态、动作、奖励)和 MP4 视频(或图像)存储视觉观测,以确保可扩展性和 Hub 集成。
文件结构
数据集组织为 meta/ 目录(存储全局信息)和 data/ 或 videos/ 目录(存储实际样本)。数据被分块到文件中以提高存储效率和加载性能。
数据访问和元数据
LeRobotDataset 类继承自 torch.utils.data.Dataset,封装了以下组件:
- 元数据:由
LeRobotDatasetMetadata管理,处理info.json、stats.json和tasks.parquet - 读取器:
DatasetReader处理从 Parquet 加载数据和通过torchcodec或pyav等后端解码视频帧 - 写入器:
DatasetWriter处理顺序录制,包括 episode 缓冲区和视频编码
3. 策略框架
目的
策略框架为不同的机器人学习算法提供统一接口。这使得在模仿学习(IL)、强化学习(RL)和视觉-语言-动作(VLA)模型之间切换只需最小限度的代码更改。
策略类别
| 类别 | 示例 | 目的 |
|---|---|---|
| 模仿学习 | ACT, Diffusion, VQ-BeT | 从专家演示中学习 |
| 强化学习 | HIL-SERL, TDMPC | 通过与环境的交互学习 |
| VLA 模型 | Pi0, SmolVLA, GR00T | 大规模多模态推理 |
策略设计为可在 Hugging Face Hub 上共享,训练逻辑通过 lerobot-train CLI 触发。
4. 数据处理流水线
目的
处理器充当原始硬件信号和策略就绪张量之间的桥梁。该系统确保数据在到达模型之前被正确转换、归一化和整形。
归一化和统计
LeRobot 使用数据集中的 stats.json 文件存储不同模态的统计信息(均值、标准差、最小值、最大值)。预处理器使用这些统计信息对输入观测进行归一化,后处理器用于反归一化预测的动作。
实现逻辑
处理逻辑通常分为:
- 预处理器:处理图像大小调整、颜色增强和状态归一化
- 后处理器:将模型输出(例如归一化增量)转换回原始电机指令
评论