Lerobot repository解析

📅 2026/7/7 4:57:42 👁️ 阅读次数 📝 编程学习
Lerobot repository解析

项目概述

LeRobot是 Hugging Face 开源的机器人学习框架,基于 PyTorch 提供模型、数据集与工具链,覆盖真实机器人从数据采集 → 训练 → 评估 → 部署的完整流程。

核心设计目标:

目标说明
硬件无关统一的Robot/Teleoperator抽象,解耦控制逻辑与具体硬件
数据标准化LeRobotDataset v3(Parquet + MP4)格式,与 Hugging Face Hub 深度集成
策略即插即用模仿学习、强化学习、VLA 等多类 SOTA 策略开箱可用
可扩展自定义机器人、策略、环境、Processor 均可接入同一套工具链

项目目录结构

lerobot/ ├── src/lerobot/ # Python 主包源码 ├── tests/ # 单元与集成测试 ├── docs/ # 文档(含本文件与 HuggingFace doc-builder 源文件) ├── examples/ # 教程与端到端示例 ├── benchmarks/ # 性能基准(视频编解码等) ├── docker/ # Docker 构建文件 ├── media/ # README 图片与视频资源 ├── .github/ # CI/CD 工作流 ├── pyproject.toml # 包定义、可选依赖、CLI 入口 ├── Makefile # 开发快捷命令 └── README.md # 项目总览

各目录功能说明

目录功能
src/lerobot/框架核心实现,所有可导入的 Python 模块均在此
tests/覆盖 policies、datasets、processor、rl、robots、motors 等模块的测试
docs/官方文档源文件(source/.mdx)及本地架构文档
examples/按硬件/策略/场景组织的可运行示例(record、train、eval、teleop)
benchmarks/视频编解码器性能对比等基准脚本
docker/用户版与内部版 Dockerfile
media/项目宣传素材,不参与运行时逻辑

src/lerobot/模块全景

分层架构总览

核心抽象模块

模块路径职责
robotsrobots/物理机器人抽象与具体实现
teleoperatorsteleoperators/遥操作设备(Leader 臂、手柄、键盘、手机等)
policiespolicies/策略模型(IL / RL / VLA)
datasetsdatasets/LeRobotDataset v3 读写、统计、流式、在线 buffer
processorprocessor/观测/动作/策略前后处理 Pipeline
envsenvs/仿真环境工厂(Gymnasium + Hub 远程环境)
configsconfigs/draccus 配置 dataclass 与 CLI 解析
scriptsscripts/官方 CLI 入口脚本

基础设施模块

模块职责
cameras相机抽象:OpenCV、RealSense、Reachy2、ZMQ 远程相机
motors电机总线:Feetech、Dynamixel、Damiao(CAN)
optim优化器与学习率调度器工厂
utils训练工具、Hub 集成、常量、可视化、控制循环辅助
model运动学计算
transportgRPC proto 定义与序列化工具
data_processingSARM 子任务标注等数据处理
templatesHuggingFace Model Card 模板

分布式扩展模块

模块职责
async_inference远程策略推理(Policy Server + Robot Client)
rl分布式 HILSerl(Actor / Learner、ReplayBuffer)

六大核心抽象

Robot(机器人)

文件src/lerobot/robots/robot.py

Robot是所有 LeRobot 兼容机器人的抽象基类,提供硬件无关的标准接口:

  • 特征描述observation_features/action_features(dict,值为float或图像 shape)
  • 生命周期connect()configure()get_observation()/send_action()disconnect()
  • 标定持久化:JSON 文件,路径~/.cache/huggingface/lerobot/calibration/robots/{name}/{id}.json
  • 上下文管理器with Robot(...)自动 connect / disconnect

已支持机器人

子模块机器人
so_followerSO-100 / SO-101 Follower我使用的这个
bi_so_follower双臂 SO Follower
koch_followerKoch v1.1
lekiwiLeKiwi(含 ZMQ 远程 host/client)
hope_jrHope Jr 手臂/手
omx_followerOMX
reachy2Reachy 2
openarm_follower/bi_openarm_followerOpenArm 单/双臂
unitree_g1Unitree G1 人形
earthrover_mini_plusEarth Rover Mini

Teleoperator(遥操作器)

文件src/lerobot/teleoperators/teleoperator.py

Robot对称的遥操作设备接口:

  • get_action()→ 返回RobotAction
  • send_feedback()← 力反馈/状态回传
  • action_features/feedback_features
  • 同样支持标定 JSON 持久化

已支持设备so_leaderbi_so_leaderkoch_leaderomx_leaderopenarm_leaderbi_openarm_leadergamepadkeyboardphonehomunculusreachy2_teleoperatorunitree_g1

Policy(策略)

文件src/lerobot/policies/pretrained.pysrc/lerobot/policies/factory.py

  • 基类PreTrainedPolicy(nn.Module, HubMixin)select_action()forward()from_pretrained()
  • 配置PreTrainedConfig(draccus.ChoiceRegistry)— 特征维度、设备、AMP 等
  • 工厂make_policy(cfg, ds_meta|env_cfg)从数据集元数据或环境推断特征
  • Processor 配对make_pre_post_processors()为每种策略创建 pre/post pipeline

策略分类

类别策略
模仿学习 (IL)ACT、Diffusion、VQ-BeT
强化学习 (RL)SAC、TDMPC、HIL-SERL(含 reward_classifier)
视觉-语言-动作 (VLA)Pi0、Pi0.5、Pi0-FAST、SmolVLA、GR00T N1.5、XVLA、Wall-X
推理辅助RTC(Real-Time Chunking)

Dataset(数据集)

文件src/lerobot/datasets/lerobot_dataset.py

LeRobotDataset v3.0格式:

  • 存储结构:Parquet(状态/动作/元数据)+ MP4 视频(或原始图像)
  • Hub 集成repo_id可从 Hugging Face Hub 下载/上传
  • 核心类
    • LeRobotDatasetMetadata— 元数据、统计、episode 信息
    • LeRobotDataset(torch.utils.data.Dataset)— 训练/录制用,支持delta_timestamps、视频解码、图像增强
  • 编解码:h264 / hevc / libsvtav1

辅助模块

文件用途
factory.pymake_dataset()训练用数据集构建
dataset_tools.py删 episode、合并、拆分、特征编辑
streaming_dataset.py流式训练数据集
online_buffer.py在线 RL buffer
compute_stats.py/aggregate.py归一化统计
video_utils.pyMP4 编解码
transforms.py图像增强
v30/v2.1 → v3.0 迁移工具

Processor(数据处理器)

文件src/lerobot/processor/pipeline.pysrc/lerobot/processor/core.py

通用顺序数据处理框架,将机器人原始数据与策略张量之间的转换标准化:

  • ProcessorStep— 单步变换(注册表ProcessorStepRegistry
  • DataProcessorPipeline— 链式组合,支持 Hub 保存/加载
  • 专用 Pipeline
    • RobotProcessorPipeline— 机器人观测/动作
    • PolicyProcessorPipeline— 策略输入/输出
  • Transition 模型EnvTransitionobservationactionrewarddonetruncatedinfocomplementary_data

关键 Processor 步骤

文件用途
normalize_processor.py归一化/反归一化
policy_robot_bridge.py策略张量 ↔ 机器人 dict
hil_processor.pyHILSerl 干预/奖励/裁剪
env_processor.pyLIBERO / IsaacLab Arena 环境处理
factory.py默认 Processor 组合

Simulation Environment(仿真环境)

我使用Nvidia Issac Sim来做仿真, 通讯方式通过ROS2

文件src/lerobot/envs/factory.pysrc/lerobot/envs/configs.py

  • 配置EnvConfig(draccus.ChoiceRegistry)pushtalohaliberometaworldisaaclab_arena、Hub 远程环境
  • 工厂make_env(cfg, n_envs){suite_name: {task_id: VectorEnv}}
  • Hub 环境:下载远程env.py中的make_env()(需trust_remote_code=True

端到端数据流

主流程:record → dataset → train → eval → deploy

Processor 链在 record 中的位置

lerobot_record.pyrecord_loop()的数据流: