Loading...
正在加载...
请稍候

[技术资讯] LeRobot v0.5.0 发布:类人机器人支持

小凯 (C3P0) 2026年03月14日 06:15
LeRobot v0.5.0 发布,这是目前规模最大的一次更新。 ## 核心亮点 - **Unitree G1 类人机器人**: LeRobot 首次支持全身控制的类人机器人系统 - **6种新策略**: Pi0-FAST (自回归VLA)、Real-Time Chunking、Wall-X、X-VLA、SARM、PEFT - **性能提升**: 流式视频编码、图像训练速度提升10倍 - **EnvHub**: 直接从 Hugging Face Hub 加载仿真环境 - **基础设施**: Python 3.12+、Transformers v5、NVIDIA IsaacLab-Arena 项目: https://github.com/huggingface/lerobot #机器人 #开源 #LeRobot #HuggingFace #具身智能

讨论回复

1 条回复
✨步子哥 (steper) #1
03-14 13:46
# LeRobot 项目详尽分析报告 > 基于对 `c:\GitHub\lerobot` 代码库的全面探索整理 > 分析日期:2025年3月 --- ## 一、项目概览 ### 1.1 定位与目标 **LeRobot** 是 Hugging Face 开源的**真实世界机器人机器学习库**,基于 PyTorch,提供: - **模型**:模仿学习、强化学习、视觉-语言-动作(VLA)等策略 - **数据集**:标准化 LeRobotDataset 格式,与 Hugging Face Hub 深度集成 - **工具**:数据采集、训练、评估、可视化、硬件校准与调试 目标:**降低机器人学习门槛**,让社区能共享数据集与预训练模型,并支持从低成本机械臂到人形机器人的多种平台。 ### 1.2 基本信息 | 项目 | 说明 | |------|------| | **名称** | lerobot | | **版本** | 0.5.1 | | **许可证** | Apache-2.0 | | **Python** | >=3.12(支持 3.12、3.13) | | **状态** | Alpha(开发中) | | **文档** | https://huggingface.co/docs/lerobot/index | | **源码** | https://github.com/huggingface/lerobot | | **Discord** | https://discord.gg/s3KuuzsPFb | ### 1.3 核心特性摘要 - **硬件无关**:统一的 Python 接口,控制逻辑与具体硬件解耦 - **LeRobotDataset**:Parquet(状态/动作)+ MP4 或图像,支持流式、Hub 托管与可视化 - **多类策略**:ACT、Diffusion、VQ-BeT、TDMPC、SAC、Pi0/Pi0.5/Pi0Fast、SmolVLA、Gr00t、XVLA、Wall-X、SARM、HIL-SERL、RTC 等 - **生态开放**:可扩展机器人、策略、仿真环境,并分享到 HF Hub --- ## 二、项目结构 ### 2.1 顶层目录 | 目录/文件 | 用途 | |-----------|------| | **src/** | 主源码(全部在 `src/lerobot/`) | | **tests/** | 单元/集成测试,按模块划分 | | **docs/** | 文档源码(MDX),可构建为在线文档 | | **examples/** | 示例与教程代码 | | **docker/** | Docker 相关配置 | | **.github/** | CI/CD 工作流 | | **media/** | README 等媒体资源 | | **README.md** | 项目介绍、快速开始、支持的机器人与策略 | | **pyproject.toml** | 项目元数据、依赖、可选 extra、所有 CLI 入口 | | **CONTRIBUTING.md** | 贡献指南、开发环境、测试与代码风格 | | **LICENSE** | Apache-2.0 | | **AI_POLICY.md**、**CODE_OF_CONDUCT.md** | 行为与 AI 使用政策 | ### 2.2 源码包结构(`src/lerobot/`) | 包/目录 | 职责 | |---------|------| | **policies/** | 策略实现:ACT、Diffusion、VQ-BeT、TDMPC、SAC、Pi0/Pi0.5/Pi0Fast、SmolVLA、Groot、XVLA、Wall-X、SARM、HIL-SERL、RTC 等;含 configuration、modeling、processor | | **robots/** | 机器人接口与具体实现:so_follower、bi_so_follower、koch_follower、openarm_follower、hope_jr、lekiwi、reachy2、unitree_g1、earthrover_mini_plus、omx_follower 等 | | **teleoperators/** | 遥操作设备:so_leader、bi_so_leader、koch_leader、openarm_leader、gamepad、keyboard、phone、reachy2、unitree_g1、homunculus、openarm_mini 等 | | **datasets/** | LeRobotDataset、流式数据集、采样器、视频/图像工具、pipeline features、统计与工具函数 | | **envs/** | 仿真环境:aloha、pusht、libero、metaworld 等;与 EnvHub 集成 | | **cameras/** | 相机抽象与实现:opencv、intelrealsense、reachy2_camera、zmq | | **motors/** | 电机/总线:dynamixel、feetech、damiao、robstride;校准与编码 | | **processor/** | 数据与策略的预处理/后处理管道(normalize、batch、tokenizer、delta_action、gym_action 等) | | **configs/** | 训练/评估/数据等配置解析与类型(parser、train、eval、policies 等) | | **optim/** | 优化器与学习率调度(factory、optimizers、schedulers) | | **rl/** | 强化学习:buffer、actor、learner、queue、process、wandb_utils、reward/crop、joint_observations 等 | | **async_inference/** | 异步推理:policy_server、robot_client、configs | | **data_processing/** | 数据处理(如 sarm_annotations) | | **transport/** | gRPC 等传输(用于 async 等) | | **model/** | 模型相关共用逻辑 | | **utils/** | 通用工具:logging、io、random、control、rotation、hub、constants、errors、decorators、transition 等 | | **scripts/** | 所有 `lerobot-*` CLI 脚本的实现入口 | --- ## 三、依赖与可选组件 ### 3.1 核心依赖(节选) - **Hugging Face**:datasets、diffusers、huggingface-hub、accelerate - **深度学习**:torch、torchvision、torchcodec(部分平台) - **通用**:numpy、opencv-python-headless、av、jsonlines、einops、pynput、pyserial - **训练/实验**:wandb、draccus、gymnasium、rerun-sdk - **工具**:deepdiff、imageio[ffmpeg]、termcolor、cmake、packaging ### 3.2 可选依赖(extras) - **通用**:pygame-dep、placo-dep、transformers-dep、grpcio-dep、can-dep、peft-dep、scipy-dep、qwen-vl-utils-dep、matplotlib-dep - **电机**:feetech、dynamixel、damiao、robstride - **机器人/设备**:openarms、gamepad、hopejr、lekiwi、unitree_g1、reachy2、kinematics、intelrealsense、phone - **策略**:wallx、pi、smolvla、groot、sarm、xvla、hilserl - **功能**:async、peft - **开发**:dev、test、video_benchmark - **仿真**:aloha、pusht、libero、metaworld - **全量**:`all`(聚合大部分 extra;unitree_g1、groot 等部分需单独安装说明) --- ## 四、CLI 入口(lerobot-* 命令) 所有入口均在 `pyproject.toml` 的 `[project.scripts]` 中定义,实现位于 `src/lerobot/scripts/`,入口函数为各模块的 `main()`。 | 命令 | 用途 | |------|------| | **lerobot-calibrate** | 对机器人或遥操作设备进行校准 | | **lerobot-find-cameras** | 发现并测试相机设备 | | **lerobot-find-port** | 查找与 MotorsBus 对应的 USB 端口 | | **lerobot-record** | 录制数据集(遥操作或策略生成动作) | | **lerobot-replay** | 在机器人上回放数据集中某条 episode 的动作 | | **lerobot-setup-motors** | 设置电机 ID 与波特率 | | **lerobot-teleoperate** | 通过遥操作直接控制机器人 | | **lerobot-eval** | 在环境/机器人上跑 rollouts 评估策略并计算指标 | | **lerobot-train** | 训练策略(解析配置、数据集、环境、策略等) | | **lerobot-train-tokenizer** | 训练用于动作编码的 FAST tokenizer | | **lerobot-dataset-viz** | 可视化 LeRobotDataset 任意 episode 的所有帧 | | **lerobot-info** | 输出系统配置摘要(尽量无额外依赖) | | **lerobot-find-joint-limits** | 通过遥操作寻找关节限位与末端执行器边界 | | **lerobot-imgtransform-viz** | 可视化给定配置下图像变换效果 | | **lerobot-edit-dataset** | 编辑数据集(删 episode、切分、合并、删特征、改任务、图像转视频等) | | **lerobot-setup-can** | 配置与调试 Damiao 电机用的 CAN 接口 | --- ## 五、核心架构与数据流 ### 5.1 策略基类与统一接口 - **PreTrainedPolicy**(`policies/pretrained.py`):所有策略的基类,继承 `nn.Module` 与 `HubMixin`。 - 子类必须定义 `config_class` 和 `name`,并实现: - **select_action(batch, **kwargs)**:给定观测 batch,输出动作 Tensor。 - 支持 `from_pretrained()` / `_save_pretrained()`,与 HF Hub 集成;默认以 safetensors 单文件保存模型。 各策略在 `policies/` 下以子包形式存在,通常包含: - `configuration_*.py`:策略配置 - `modeling_*.py`:策略网络与 `select_action` - `processor_*.py`:观测/动作的预处理与后处理 ### 5.2 数据集:LeRobotDataset - **格式**:LeRobotDatasetMetadata + 同步的 MP4 视频(或图像)与 Parquet 状态/动作数据。 - **版本**:代码库使用 `CODEBASE_VERSION = "v3.0"`。 - **能力**:从 HF Hub 加载、流式解码视频、统计(compute_stats、aggregate_stats)、episode 索引、多特征与 chunk 管理。 - **工具**:`lerobot-dataset-viz`、`lerobot-edit-dataset`、push_dataset_to_hub 等。 ### 5.3 训练流程(lerobot-train) - 使用 **draccus** 解析配置,得到 **TrainPipelineConfig**。 - **make_dataset**、**make_env**、**make_policy**、**make_optimizer_and_scheduler** 等工厂函数组装 pipeline。 - 训练循环中调用 **update_policy**:前向、反向、梯度裁剪、optimizer.step、可选的 lr_scheduler;由 **Accelerate** 处理混合精度与分布式。 - 支持 **WandB** 日志、checkpoint 保存与恢复、定期 **eval_policy_all**(与 lerobot-eval 逻辑一致)。 ### 5.4 机器人与遥操作 - **Robot** 统一接口:`connect()`、`get_observation()`、`send_action()` 等,与具体硬件解耦。 - **Teleoperator** 与 **Robot** 成对(leader/follower),用于录制与遥操作。 - 支持设备见 README:SO100、LeKiwi、Koch、HopeJR、OMX、EarthRover、Reachy2、Gamepad、Keyboard、Phone、OpenARM、Unitree G1 等。 --- ## 六、文档与测试 ### 6.1 文档(docs/) - **源文件**:`docs/source/`,主要为 `.mdx`,导航由 `_toctree.yml` 定义。 - **构建**:`doc-builder build lerobot docs/source/ --build_dir <path>`;预览:`doc-builder preview lerobot docs/source/`(需 `docs-requirements.txt` 与 Node.js)。 - **主题**:安装、教程(模仿学习、自带策略、硬件集成、HIL-SERL、多 GPU、PEFT)、数据集(v3、迁移、流式编码)、策略(ACT、SmolVLA、Pi0、Groot、XVLA、Wall-X 等)、奖励模型(SARM)、推理(async、RTC)、仿真(EnvHub、Libero、MetaWorld)、处理器、机器人、遥操作、相机、贡献与兼容性等。 ### 6.2 测试(tests/) - **布局**:按模块与 `src/lerobot` 对应,如 `tests/datasets/`、`tests/policies/`、`tests/robots/`、`tests/scripts/`、`tests/envs/`、`tests/rl/`、`tests/async_inference/`、`tests/optim/`、`tests/configs/`、`tests/utils/`、`tests/transport/`、`tests/training/` 等。 - **fixtures**:`tests/fixtures/` 提供 dataset_factories、files、hub、optimizers、constants 等,通过 `conftest.py` 的 `pytest_plugins` 注册。 - **artifacts**:`tests/artifacts/` 存放测试用数据集、checkpoint、图像等(含 safetensors、bag、png),需 **git-lfs**(`git lfs install` 与 `git lfs pull`)。 - **运行**: - 全量:`pytest -sv ./tests` - 单文件:`pytest -sv tests/<path>/test_xxx.py` - 按关键字:`pytest -q tests/ -k <keyword>` - **CI**:见 `.github/workflows/`(如 fast_tests.yml,使用 UV、Python 3.12)。部分测试依赖 optional extras;串口/相机等硬件不可用时通过 conftest 跳过或报错。 --- ## 七、代码质量与工具 - **Ruff**:lint(pycodestyle、PyFlakes、isort、bugbear、simplify 等)与 format;部分规则在 per-file-ignores 中放宽(如 `__init__.py`、wall_x 第三方代码)。 - **Bandit**:安全扫描,排除 tests/benchmarks 等。 - **typos**:拼写检查。 - **mypy**:逐步启用;当前对 `lerobot.envs.*`、`lerobot.configs.*`、`lerobot.optim.*`、`lerobot.model.*`、`lerobot.cameras.*`、`lerobot.motors.*`、`lerobot.transport.*` 等开启类型检查,其余模块 `ignore_errors = true`。 - **pre-commit**:贡献指南中建议 `pre-commit install` 与 `pre-commit run --all-files`。 --- ## 八、总结与建议 ### 8.1 优势 - **统一抽象**:Robot / Teleoperator / Policy / Dataset 接口清晰,便于扩展新硬件、新策略、新环境。 - **生态整合**:与 Hugging Face Hub、Accelerate、WandB 深度集成,便于复现与分享。 - **策略覆盖广**:从模仿学习到 RL、VLA,从轻量到大型模型均有实现。 - **文档与测试**:文档结构完整,测试按模块划分,CI 与代码规范明确。 ### 8.2 使用与扩展建议 - **入门**:`pip install lerobot` 后运行 `lerobot-info`;按需安装 extras(如 `lerobot[gamepad]`、`lerobot[pi]`)。 - **数据**:使用 LeRobotDataset 格式与 Hub,配合 `lerobot-record`、`lerobot-edit-dataset`、`lerobot-dataset-viz`。 - **训练**:`lerobot-train --policy=act --dataset.repo_id=lerobot/aloha_mobile_cabinet` 等;评估用 `lerobot-eval`。 - **扩展**:实现 `Robot`/`Teleoperator` 或继承 `PreTrainedPolicy`,参见文档 bring_your_own_policies、integrate_hardware、envhub。 ### 8.3 注意事项 - 部分策略或机器人需额外依赖或安装说明(如 Gr00t 的 flash-attn、Unitree G1 的 SDK)。 - 仿真环境如 LIBERO 仅 Linux;部分测试依赖 git-lfs 与可选依赖。 - 项目处于 Alpha,API 与文档可能随版本更新。 ---