当前位置: 首页 > news >正文

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()的数据流:

http://www.jsqmd.com/news/1139131/

相关文章:

  • 基于SpringBoot的环保知识普及平台的设计与实现毕业设计任务书
  • 上班族备战 10 月成人高考怎么高效备考?
  • python-LangGraph框架(3-29-LangGraph 「覆盖式状态」的原理与实践)
  • HappyHorse AI 视频提示词完全指南:4步引导 + 五要素公式 + 常见坑解法
  • 【Java课程设计/毕业设计】基于 SpringBoot 的家政服务分类管理系统的设计与实现 基于前后端分离的智能化便民家政运维系统【附源码、数据库、万字文档】
  • 代码复杂度的代价远比你想象的大!
  • 字典列表导出为 Excel
  • FreeLLMAPI安装(WSL版)
  • 【HackMyVM】latestWasALie
  • 如何一键获取国家中小学智慧教育平台电子课本?这个免费工具帮你解决备课难题
  • 为什么“双触发器”不够用?
  • 国际eSIM物联卡如何远程写号切换运营商?深度适配多国物流场景解析
  • 常德本地环保装修哪家技术强
  • 2026最新实操:小白也能用游戏护航小程序,快速搭建校园电竞服务SaaS系统
  • 终极GTA5安全防护菜单:YimMenu完全使用指南
  • 一站式可观测新选择:OpenObserve 深度对标 ELK / Grafana+Prometheus / Netdata,附Docker一键部署实战
  • Python 获取 A 股 K 线、实时行情和五档盘口:QuantDash API 示例
  • ubuntu使用很久之后网络突然连不上解决方法
  • WebAssembly AI 插件热加载:运行时替换模块而不丢会话状态
  • 有什么针对新闻媒体行业的安全解决方案
  • 蔡司三坐标能否检测齿轮?完整检测方案详解
  • Copilot上下文感知提醒:基于Graph API的工作流驱动机制
  • 使用vivado开发FPGA完整流程
  • Rust 智能指针选型:Box、Rc、Arc 什么时候该用哪一个
  • OpenClaw智能体工作流中枢:轻量级AI技能编排引擎实战指南
  • 潮汛网快讯:英国GEO公司geoSurge完成1200万美元种子轮融资
  • Lifecycle中出现的监听器
  • ClaudeAgent】并发-后台任务
  • 科辉荣盛小程序定制开发,多重保障安心数字化
  • 佳木斯装修交叉施工多?轻质抹灰石膏减少墙面破损返工