跳到主要内容LeRobot 框架架构、支持策略、仿真平台与数据格式详解 | 极客日志PythonAI算法
LeRobot 框架架构、支持策略、仿真平台与数据格式详解
综述由AI生成深入剖析 LeRobot 机器人学习框架。内容涵盖框架整体架构、核心组件(策略系统、数据集管理、环境接口、机器人控制)、支持的多种策略(如 ACT、Diffusion、TDMPC 等)、兼容的仿真环境与物理硬件(如 SO100、XArm)。此外,详细说明了遥操作与数据记录模式的使用方法及 LeRobotDataset 统一数据格式的结构。旨在帮助开发者快速理解并上手 LeRobot 进行机器人应用开发。
星云31 浏览 LeRobot 框架架构、支持策略、仿真平台与数据格式详解
引言

LeRobot 框架架构
1.1 框架概述
LeRobot 是一个专注于实际机器人应用的机器人学习框架,它提供了一系列预训练模型、数据集和工具,特别关注模仿学习和强化学习方法。框架的目标是降低机器人技术的入门门槛,使研究人员和开发者能够更容易地开发和部署机器人应用。
1.2 系统架构
LeRobot 的系统架构由几个相互连接的子系统组成,这些子系统协同工作,支持机器人学习。核心基础设施支持机器人学习算法的策略系统、训练数据的数据集管理、模拟的环境接口以及物理硬件交互的机器人控制。示例目录展示了这些系统如何一起使用。

lerobot 系统架构
1.3 代码架构
LeRobot 的代码结构清晰,便于开发者理解和扩展:
.
├── examples
│ └── advanced
├── lerobot
│ ├── configs
│ ├── common
│ │ ├── datasets
│ │ ├── envs
│ │ ├── policies
│ │ ├── robot_devices
│ │ └── utils
│ └── scripts
│ ├── eval.py
│ ├── train.py
│ ├── control_robot.py
│ ├── push*dataset*to_hub.py
│ └── visualize_dataset.py
├── outputs
└── tests
这种结构使得开发者可以轻松地找到所需的组件,并理解它们之间的关系。
1.4 主要组件
1.4.1 策略系统
LeRobot 通过统一的工厂接口实现多种最先进的策略架构。make_policy() 工厂函数为创建不同类型的策略提供了统一的接口。训练(train.py)和评估(eval.py)脚本通过这个工厂与策略交互。所有策略都实现了 PreTrainedPolicy 接口,其中包括动作选择和模型训练的方法。
1.4.2 数据集管理
数据集系统处理机器人数据集的加载、处理和可视化,重点关注多模态数据。LeRobotDataset 类是核心组件,提供了加载和管理机器人数据集的功能。数据集可以从 Hugging Face Hub 或本地存储访问。make_dataset() 工厂根据配置创建数据集实例。该系统处理片段、视频处理和图像转换,通过 Rerun 或 HTML/Flask 接口进行可视化。
1.4.3 环境接口
LeRobot 基于 Gymnasium API 为多个模拟环境提供了一致的接口。make_env() 工厂根据配置创建不同的环境类型(Aloha、PushT、XArm)。该系统包括用于预处理观察(preprocess_observation())和将环境特征转换为策略特征(env_to_policy_features())的工具。工厂生成 Gymnasium 向量环境,实现并行模拟。
1.4.4 机器人控制
机器人控制系统提供了与物理机器人交互的接口,支持不同的控制模式和硬件类型。control_robot.py 脚本是机器人控制系统的核心组件,支持不同的控制模式(远程操作、记录、回放、校准)和机器人类型(操作器、移动)。该系统通过电机(Dynamixel、Feetech)和相机(OpenCV、RealSense)的抽象与硬件接口。记录模式与 LeRobotDataset 系统集成,用于数据收集。
LeRobot 支持的策略
LeRobot 实现了几种最先进的策略架构,以下是对这些策略的详细介绍:
| 策略类型 | 描述 | 使用场景 | 优点 | 缺点 |
|---|
| ACT (Action Chunking Transformer) | 基于 Transformer 的动作分块策略,专为双手操作设计 | 需要精确协调的双手操作任务,如组装、操作复杂物体 | 能够学习长期依赖关系,处理复杂序列任务,对时间步长不敏感 | 训练成本高,需要大量数据,推理速度可能较慢 |
| Diffusion (Denoising Diffusion) | 基于扩散模型的视觉运动控制策略 | 需要精确控制的视觉引导任务,如精确抓取和放置 | 生成高质量、多样化的动作,对不确定性有良好建模 | 推理速度较慢,训练过程复杂 |
| TDMPC (Temporal Difference MPC) | 时间差分模型预测控制 | 需要预测性控制的任务,如动态环境中的导航和操作 | 结合了模型预测控制的规划能力和强化学习的自适应性 | 对模型精度要求高,计算成本较大 |
| VQBeT (Vector Quantized Behavior) | 向量量化行为 Transformer | 需要从多样化演示中学习的任务,如多模态行为学习 | 能够从多样化数据中提取离散行为原语,泛化能力强 | 离散表示可能限制某些连续控制任务的精度 |
| PI0 (Vision-Language-Action) | 视觉 - 语言 - 动作策略 | 需要语言指导的任务,如遵循自然语言指令的机器人操作 | 能够理解和执行自然语言指令,多模态融合能力强 | 对语言理解的准确性依赖高,需要配对的语言 - 动作数据 |
| PI0FAST (Fast Action Tokenization) | 快速动作标记化策略 | 需要实时响应的语言引导任务 | 比 PI0 更快的推理速度,保持语言理解能力 | 可能在复杂指令上精度略低于 PI0 |
这些策略可以通过统一的 make_policy() 工厂函数创建,使得在不同任务和环境中切换策略变得简单。
LeRobot 支持的仿真平台和硬件
3.1 支持的仿真环境
LeRobot 通过 Gymnasium 接口支持多个模拟环境:
| 环境 | 描述 | 特点 |
|---|
| Aloha | 双手机器人操作任务 | 专注于双手协调操作,如倒咖啡、开瓶盖等 |
| PushT | 物体推动操作任务 | 专注于推动物体到目标位置的任务 |
| XArm | XArm 机器人操作任务 | 基于现实世界 XArm 机器人的模拟环境 |
pip install -e ".aloha, pusht"
3.2 硬件支持
LeRobot 支持多种物理机器人硬件,特别是专注于经济实惠且功能强大的机器人平台。以下是主要支持的硬件类型:
(1) 操作器机器人:
SO100(基于 Koch 设计的双臂机器人)
XArm(单臂机器人)
(2) 移动机器人:
LeKiwi(移动机器人平台)
(3) 传感器和执行器:
相机:OpenCV 兼容相机、Intel RealSense 深度相机
电机:Dynamixel 伺服电机、Feetech 伺服电机
3.3 SO100 机器人案例分析
SO100 是 LeRobot 框架中重点支持的一种双臂机器人,基于 Koch 设计。它是一个经济实惠的双臂机器人平台,特别适合研究和教育用途。
3.3.1 SO100 硬件架构
SO100 机器人由以下主要组件组成:
两个机械臂,每个臂有多个自由度
Dynamixel 伺服电机作为关节驱动
一个或多个相机用于视觉感知
控制电路和电源系统
3.3.2 SO100 控制流程
使用 LeRobot 进行遥操作和数据采集
4.1 遥操作模式
遥操作模式允许用户直接手动控制机器人。这种模式对于测试机器人硬件、实验动作或准备记录会话非常有用。
4.1.1 遥操作流程
4.1.2 遥操作配置
遥操作可以通过 TeleoperateControlConfig 类进行配置,该类提供以下选项:
| 参数 | 类型 | 描述 |
|---|
| fps | int 或 None | 限制最大帧率。默认无限制。 |
| teleop_time_s | float 或 None | 遥操作持续时间。默认无限。 |
| display_data | bool | 是否显示相机馈送和数据可视化。 |
4.1.3 遥操作命令示例
python lerobot/scripts/control_robot.py \
--robot.type=so100 \
--control.type=teleoperate
python lerobot/scripts/control_robot.py \
--robot.type=so100 \
--control.type=teleoperate \
--control.fps=30
4.2 数据记录模式
记录模式将机器人的观察和动作捕获到结构化数据集中。这种模式对于收集用于机器人学习策略的训练数据至关重要。
4.2.1 记录流程
4.2.2 使用策略记录
记录可以使用预训练策略控制机器人进行,这对于评估策略性能很有用。使用策略记录时,遥操作被禁用,策略根据观察生成动作。
4.2.3 记录配置
记录通过 RecordControlConfig 类配置,具有以下关键参数:
| 参数 | 类型 | 描述 |
|---|
| repo_id | str | 数据集标识符(例如,'username/dataset_name') |
| single_task | str | 记录期间执行的任务描述 |
| fps | int 或 None | 记录的帧率 |
| warmup_time_s | int 或 float | 开始数据收集前的预热秒数 |
| episode_time_s | int 或 float | 每个片段的数据记录秒数 |
| reset_time_s | int 或 float | 每个片段后重置环境的秒数 |
| num_episodes | int | 要记录的片段数量 |
| video | bool | 是否将帧编码为数据集中的视频 |
| push_to_hub | bool | 是否将数据集上传到 Hugging Face Hub |
| policy | PreTrainedConfig 或 None | 用于评估记录的可选策略配置 |
| resume | bool | 是否在现有数据集上继续记录 |
| num_image_writer_processes | int | 处理帧保存为 PNG 的子进程数 |
| num_image_writer_threads_per_camera | int | 每个相机写入 PNG 图像的线程数 |
4.2.4 记录命令示例
python lerobot/scripts/control_robot.py \
--robot.type=so100 \
--control.type=record \
--control.fps=30\
--control.single_task="抓取乐高积木并将其放入箱中。"\
--control.repo_id=username/test_dataset \
--control.num_episodes=1\
--control.push_to_hub=True
python lerobot/scripts/control_robot.py \
--robot.type=so100 \
--control.type=record \
--control.fps=30\
--control.repo_id=username/training_dataset \
--control.num_episodes=50\
--control.warmup_time_s=2\
--control.episode_time_s=30\
--control.reset_time_s=10
4.3 模拟环境中的数据采集
除了在实际机器人上收集数据外,LeRobot 还支持在模拟环境中收集数据,这对于初始开发和测试非常有用。
python lerobot/scripts/control_sim_robot.py record \
--robot-path lerobot/configs/robot/your_robot_config.yaml \
--sim-config lerobot/configs/env/your_sim_config.yaml \
--fps 30\
--repo-id $USER/robot_sim_test \
--num-episodes 50\
--episode-time-s 30
LeRobot 数据格式
5.1 LeRobotDataset 格式概述
LeRobot 使用一种称为 LeRobotDataset 的统一数据格式,它设计用于存储和管理机器人学习所需的多模态数据。这种格式可以轻松地从 Hugging Face Hub 或本地文件夹加载。
5.2 数据集结构
LeRobotDataset 的文件结构组织如下:
data
├── chunk-000
│ ├── episode_000000.parquet
│ ├── episode_000001.parquet
│ └── ...
├── chunk-001
│ ├── episode_001000.parquet
└── ...
meta
├── episodes.jsonl
├── info.json
├── stats.json
└── tasks.jsonl
videos
├── chunk-000
│ ├── observation.images.camera1 # 'camera1' 是示例名称
│ │ ├── episode_000000.mp4
│ ├── observation.images.camera2
├── chunk-001
└── ...
5.3 数据集组件
(1) HF Dataset:基于 Arrow/Parquet 的数据集,包含以下特征:
观察图像(VideoFrame 格式或路径)
状态观察(例如关节位置)
动作(例如关节目标位置)
片段索引和帧索引
时间戳
任务描述
(2) 元数据 (meta):
episodes.jsonl: 包含每个片段的元信息,如起始/结束帧索引、在哪个 chunk 等。
info.json: 数据集的整体信息,包括特征、fps、机器人信息等。
stats.json: 数据集中每个数值特征的统计信息(最大值、均值、最小值、标准差)。
tasks.jsonl: 如果数据集包含多个任务,这里会列出任务描述和对应的片段。
(3) 视频 (videos) (可选):如果 info.json 中指定使用视频存储图像,则原始视频文件存储在此处,按 chunk 和相机名称组织。
结论
LeRobot 框架通过其模块化的设计、丰富的预训练模型和数据集支持,以及对真实世界机器人应用的关注,显著降低了机器人学习的门槛。无论是进行学术研究还是开发实际应用,LeRobot 都提供了一个强大而灵活的平台。希望本篇深度剖析能帮助您快速上手并有效利用 LeRobot 进行机器人学习的探索与创新。
相关免费在线工具
- 加密/解密文本
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
- RSA密钥对生成器
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
- Mermaid 预览与可视化编辑
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
- 随机西班牙地址生成器
随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online
- Gemini 图片去水印
基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online
- curl 转代码
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online