跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

LeRobot 框架架构、策略、仿真平台与数据采集详解

LeRobot 是一个专注于实际机器人应用的开源框架,提供预训练模型、数据集及工具。剖析其系统架构,涵盖策略系统、数据集管理、环境接口及机器人控制模块。介绍了 ACT、Diffusion、TDMPC 等主流策略及其适用场景,支持 Aloha、PushT 等仿真环境与 SO100、XArm 等硬件。详细说明了遥操作与数据记录模式的使用方法及 LeRobotDataset 统一数据格式,助力开发者快速上手机器人学习。

栈溢出发布于 2026/4/7更新于 2026/7/2335 浏览

LeRobot 框架架构

1.1 框架概述

LeRobot 是一个专注于实际机器人应用的机器人学习框架,它提供了一系列预训练模型、数据集和工具,特别关注模仿学习和强化学习方法。框架的目标是降低机器人技术的入门门槛,使研究人员和开发者能够更容易地开发和部署机器人应用。

(README.md:55-59)

1.2 系统架构

LeRobot 的系统架构由几个相互连接的子系统组成,这些子系统协同工作,支持机器人学习。核心基础设施支持机器人学习算法的策略系统、训练数据的数据集管理、模拟的环境接口以及物理硬件交互的机器人控制。示例目录展示了这些系统如何一起使用。

图片

lerobot 系统架构

1.3 代码架构

LeRobot 的代码结构清晰,便于开发者理解和扩展:

.
├── examples             # 示例和教程,从这里开始学习 LeRobot
│   └── advanced         # 包含更高级的示例
├── lerobot
│   ├── configs          # 包含可以在命令行中覆盖的所有选项的配置类
│   ├── common           # 包含核心功能类和工具
│   │   ├── datasets     # 各种人类演示数据集:aloha, pusht, xarm
│   │   ├── envs         # 各种模拟环境:aloha, pusht, xarm
│   │   ├── policies     # 各种策略实现:act, diffusion, tdmpc 等
│   │   ├── robot_devices # 硬件接口:dynamixel 电机,opencv 相机,koch 机器人
│   │   └── utils        # 各种工具函数
│   └── scripts          # 包含通过命令行执行的函数
│       ├── eval.py      # 加载策略并在环境中评估
│       ├── train.py     # 通过模仿学习和/或强化学习训练策略
│       ├── control_robot.py # 远程操作真实机器人,记录数据,运行策略
│       ├── push*dataset*to_hub.py # 将数据集转换为 LeRobot 数据集格式并上传到 Hugging Face hub
│       └── visualize_dataset.py # 加载数据集并渲染其演示
├── outputs              # 包含脚本执行结果:日志、视频、模型检查点
└── tests                # 包含用于持续集成的 pytest 工具

(README.md:142-159)

这种结构使得开发者可以轻松地找到所需的组件,并理解它们之间的关系。

1.4 主要组件

1.4.1 策略系统

LeRobot 通过统一的工厂接口实现多种最先进的策略架构。make_policy() 工厂函数为创建不同类型的策略提供了统一的接口。训练(train.py)和评估(eval.py)脚本通过这个工厂与策略交互。所有策略都实现了 PreTrainedPolicy 接口,其中包括动作选择和模型训练的方法。

lerobot 策略系统

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 系统集成,用于数据收集。

图片

robot control 模块

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物体推动操作任务专注于推动物体到目标位置的任务
XArmXArm 机器人操作任务基于现实世界 XArm 机器人的模拟环境

这些环境可以作为额外依赖项安装:

pip install -e ".aloha, pusht"

(README.md:122-129)

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 控制流程

控制 SO100 机器人的典型流程如下:

图片

使用 LeRobot 进行遥操作和数据采集

4.1 遥操作模式

遥操作模式允许用户直接手动控制机器人。这种模式对于测试机器人硬件、实验动作或准备记录会话非常有用。

4.1.1 遥操作流程

(参考 control_robot.py:233-242)

图片

4.1.2 遥操作配置

遥操作可以通过 TeleoperateControlConfig 类进行配置,该类提供以下选项:

参数类型描述
fpsint 或 None限制最大帧率。默认无限制。
teleop_time_sfloat 或 None遥操作持续时间。默认无限。
display_databool是否显示相机馈送和数据可视化。
4.1.3 遥操作命令示例

基本的无限频率遥操作:

python lerobot/scripts/control_robot.py \
    --robot.type=so100 \
    --control.type=teleoperate

(control_robot.py:29-39)

限制频率的遥操作,模拟记录:

python lerobot/scripts/control_robot.py \
    --robot.type=so100 \
    --control.type=teleoperate \
    --control.fps=30

(control_robot.py:42-48)

4.2 数据记录模式

记录模式将机器人的观察和动作捕获到结构化数据集中。这种模式对于收集用于机器人学习策略的训练数据至关重要。

4.2.1 记录流程

(参考 control_robot.py:246-340)

图片

4.2.2 使用策略记录

记录可以使用预训练策略控制机器人进行,这对于评估策略性能很有用。使用策略记录时,遥操作被禁用,策略根据观察生成动作。

(control_utils.py:213-288)

4.2.3 记录配置

记录通过 RecordControlConfig 类配置,具有以下关键参数:

参数类型描述
repo_idstr数据集标识符(例如,'username/dataset_name')
single_taskstr记录期间执行的任务描述
fpsint 或 None记录的帧率
warmup_time_sint 或 float开始数据收集前的预热秒数
episode_time_sint 或 float每个片段的数据记录秒数
reset_time_sint 或 float每个片段后重置环境的秒数
num_episodesint要记录的片段数量
videobool是否将帧编码为数据集中的视频
push_to_hubbool是否将数据集上传到 Hugging Face Hub
policyPreTrainedConfig 或 None用于评估记录的可选策略配置
resumebool是否在现有数据集上继续记录
num_image_writer_processesint处理帧保存为 PNG 的子进程数
num_image_writer_threads_per_cameraint每个相机写入 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

(control_robot.py:50-59)

记录用于训练的完整数据集:

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

(control_robot.py:82-91)

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

(control_sim_robot.py:65-72)

LeRobot 数据格式

5.1 LeRobotDataset 格式概述

LeRobot 使用一种称为 LeRobotDataset 的统一数据格式,它设计用于存储和管理机器人学习所需的多模态数据。这种格式可以轻松地从 Hugging Face Hub 或本地文件夹加载。

图片

lerobot 数据格式

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
└── ...

(lerobot_dataset.py:400-438)

5.3 数据集组件

LeRobotDataset 包含以下主要组件:

  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 进行机器人学习的探索与创新。

目录

  1. LeRobot 框架架构
  2. 1.1 框架概述
  3. 1.2 系统架构
  4. 1.3 代码架构
  5. 1.4 主要组件
  6. 1.4.1 策略系统
  7. 1.4.2 数据集管理
  8. 1.4.3 环境接口
  9. 1.4.4 机器人控制
  10. LeRobot 支持的策略
  11. LeRobot 支持的仿真平台和硬件
  12. 3.1 支持的仿真环境
  13. 3.2 硬件支持
  14. 3.3 SO100 机器人案例分析
  15. 3.3.1 SO100 硬件架构
  16. 3.3.2 SO100 控制流程
  17. 使用 LeRobot 进行遥操作和数据采集
  18. 4.1 遥操作模式
  19. 4.1.1 遥操作流程
  20. 4.1.2 遥操作配置
  21. 4.1.3 遥操作命令示例
  22. 4.2 数据记录模式
  23. 4.2.1 记录流程
  24. 4.2.2 使用策略记录
  25. 4.2.3 记录配置
  26. 4.2.4 记录命令示例
  27. 4.3 模拟环境中的数据采集
  28. LeRobot 数据格式
  29. 5.1 LeRobotDataset 格式概述
  30. 5.2 数据集结构
  31. 5.3 数据集组件
  32. 结论
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Gitee 轻量级 PR:降低开源贡献门槛的便捷方式
  • AI 绘画报错修复:CheckpointLoaderSimple 模型缺失处理
  • C++核心特性解析:函数重载、引用、内联函数、auto 与 nullptr
  • SpringBoot + Vue 构建 Python 在线调试器方案
  • Unitree SDK2 Python 完整配置与使用指南
  • AgentDoG: 面向 AI 智能体安全与防护的诊断护栏框架
  • C++ 二叉搜索树简单实现:增删查改全攻略
  • JNI 开发:C++ Debug 正常 Release 返回 NaN 原因解析
  • GitHub Copilot Pro 学生免费权益获取与 VS Code 配置指南
  • OpenCode 开源 AI 编程助手:从入门到精通
  • Logseq 本地部署与 cpolar 远程访问配置指南
  • 基于 YOLO 与 LLM 的 Web 目标检测与智能分析系统
  • Web 团队开发 App:是否应该选择 Capacitor
  • Whisper.cpp 离线语音识别快速入门
  • Linux 进程控制详解
  • OpenClaw 龙虾机器人 Windows 系统部署指南
  • BR8654 蓝牙 6.0 SOC 芯片技术规格与特性
  • 文心一言 4.0 调用性能优化实战
  • ClawX 可视化 AI 智能体使用指南
  • Claude Code 跨平台安装与配置指南(Win/Linux/Mac)

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如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