开始拥抱"面部"的机器人学习
实践指南 雷罗伯特 <unk>安装,数据收集,培训ACT或传播政策,评估和共享数据集.
部分: [机器人数据收集指南]
雷罗特使数据收集到训练有素的政策的整个管道比任何之前的框架更容易访问.
莱罗博是什么?
勒罗бот是HuggingFace的机器人学习库:一个标准化的数据集格式,不断增长的预训练模型和ACT,传播政策和TD-MPC2政策的训练脚本.所有这些都是MIT授权的,专注于真正的机器人部署而不是仅进行模拟研究. 与以前的框架的关键区别是标准化:在任何支持的机器人上与LeRobot收集的数据集可以通过任何LeRobot培训脚本进行培训,而不需要自定义的数据加载器或格式转换.
截至2025年初,乐罗波特拥有超过8,000名成员的活跃的Discord社区,核心团队每周更新研究,全球研究小组不断增长的动物园模型贡献.它已成为开源机器人学习数据共享的现实标准.
设备安装和硬件支持
- 安装:*pip安装lerobot. 需要Python 3.10+,PyTorch 2.1+.可选的硬件依赖单独安装 (例如,SO-100臂支持的*pip安装lerobot[so100]).
- SO-100手臂 ($300): 首要的低成本支持平台. 5DOF领导+后续的远程操作手臂来自科克机器人. 对于新入物理机器人学习的团队来说,最好的起点是低硬件风险,文档化好的配置文件.
- **ALOHA双手动:**包括斯坦福ALOHA和ALOHA2配置.14DOF总量 (7个手臂),用于双手动操纵研究.
- OpenArm: 通过社区适配器支持. RCSV OpenArm 7-DOF配置可通过 RCSV 的LeRobot集成包提供.
数据收集工作流程
数据收集自动生成一个标准化的 HDF5 + MP4 数据集:
- 步骤 1
配置机器人: 使用串行端口和摄像头索引编辑机器人YAML配置 (例如,Lerobot/configs/robot/so100.yaml). - 步骤 2
记录数据集: python lerobot/scripts/record_dataset.py --robot-path lerobot/configs/robot/so100.yaml --num-episodes 50 --dataset-id my_task_v1.脚本处理相机之间的框架同步,HDF5节目编写,以及实时节目缩影生成. - 步骤3
审查节目: python lerobot/scripts/visualize_dataset.py --dataset-id my_task_v1 打开一个互动节目观看器. - 步骤 4
推向枢纽 (可选): python lerobot/scripts/push_dataset_to_hub.py --dataset-id my_task_v1 将上传到HuggingFace Hub进行共享或到RCSV的数据平台进行管理存储.
政策培训
| Policy | Command | Training Time (200 demos, 1× GPU) | Best For |
|---|---|---|---|
| ACT(Action Chunking with Transformers) | --policy act | ~4 hours | Fast-moving tasks, reliable baseline |
| Diffusion Policy | --policy diffusion | ~12 hours | 精度 tasks, multimodal behavior |
| TD-MPC2 | --policy tdmpc | ~8 hours | Tasks with clear reward structure |
训练命令: python lerobot/scripts/train.py --政策行为 --dataset-id my_task_v1 --training.num_epochs 100. 在部署前监测TensorBoard日志中的评估/成功率. 目标>70% 扩散政策需要更多的计算,但通常在多模式行为 (例如,在抓住物体的多种有效方法) 的精度任务上实现更好的性能.
动物园模型和零射击测试
勒罗бот在HuggingFace Hub上设有预训练的模型动物园.可自2025年初使用:在SO-100上训练的ACT和扩散政策,用于选择,堆叠和插入任务;双手擦除和组装的ALOHA政策.这些可以用于您的硬件上的零射击测试.
运行预先训练的政策: python lerobot/scripts/eval.py --pretrained-policy-name-or-path lerobot/act_so100_pick_place --robot-path lerobot/configs/robot/so100.yaml.
雷罗伯特数据集格式 深入潜水
了解数据集格式对于定制集成至关重要.LeRobot数据集使用Parquet文件 (用于结构数据) 和MP4视频 (用于摄像头观测):
my_dataset_v1/
meta/
info.json # Dataset metadata (robot type, fps, features)
episodes.jsonl # Per-episode metadata (length, task description)
tasks.jsonl # Task definitions
data/
chunk-000/
episode_000000.parquet # State + action data per episode
episode_000001.parquet
...
videos/
chunk-000/
observation.images.top/
episode_000000.mp4 # Camera feed per episode
observation.images.wrist/
episode_000000.mp4
每个Parquet文件包含以下列:
为了编程地加载数据集:
from lerobot.common.datasets.lerobot_dataset import LeRobotDataset
# Load from local path or HuggingFace Hub
dataset = LeRobotDataset("lerobot/aloha_sim_insertion_human_image")
# Access episode data
episode = dataset[0] # First frame of first episode
print(episode.keys())
# dict_keys(['observation.images.top', 'observation.state',
# 'action', 'episode_index', 'frame_index', 'timestamp'])
# Get all frames for episode 5
ep5_frames = [dataset[i] for i in dataset.episode_data_index["from"][5]:
dataset.episode_data_index["to"][5]]
训练与LeRobot:一步一步
完全的训练指令,
# Train ACT on your custom dataset
python lerobot/scripts/train.py \
--policy.type=act \
--dataset.repo_id=my_org/my_task_v1 \
--dataset.episodes=[0,1,2,3,4,5,6,7,8,9] \ # Specific episodes
--training.num_epochs=2000 \
--training.batch_size=8 \
--policy.chunk_size=100 \ # Action chunk length
--policy.kl_weight=10 \ # CVAE KL divergence weight
--policy.n_action_steps=100 \ # Steps to execute per chunk
--training.lr=1e-5 \ # Learning rate
--training.save_freq=500 \ # Checkpoint every 500 epochs
--output_dir=outputs/act_my_task
调节的关键超参数:
子大小:** 50-100 对于大多数任务.较大的 子减少了组合错误,但使预测问题更难.从100开始,如果训练损失平原,减少到50 - 控制CVAE规则化.太低 (1):隐藏空间崩
,多模式行为丢失.太高 (100):政策忽略观察.扫描 [1, 5, 10, 50]在子集. 炼的速度:** 1e-5进行调整, 1e-4进行从头开始的训练.
培训与勒罗伯特的传播政策
# Train Diffusion Policy
python lerobot/scripts/train.py \
--policy.type=diffusion \
--dataset.repo_id=my_org/my_task_v1 \
--training.num_epochs=4000 \
--training.batch_size=64 \
--policy.n_action_steps=8 \ # Prediction horizon
--policy.n_obs_steps=2 \ # Observation history length
--policy.num_inference_steps=10 \ # DDIM steps (10 for speed)
--training.lr=1e-4 \
--output_dir=outputs/dp_my_task
推数据集到"拥抱面孔中心"
# Push your dataset to HuggingFace Hub for sharing
huggingface-cli login # One-time authentication
python lerobot/scripts/push_dataset_to_hub.py \
--local-dir outputs/my_task_v1 \
--repo-id my_org/my_task_v1 \
--tags "openarm,pick-place,tabletop"
常见的错误和纠正
| Error | Cause | Fix |
|---|---|---|
RuntimeError: CUDA out of memory |
Batch size too large for GPU VRAM | Reduce batch_size to 4 or 2; use gradient accumulation |
ValueError: mismatched state dim |
Robot config does not match dataset DOF | Check robot YAML: state_dim must match observation.state columns |
Camera not found at index N |
USB camera enumeration changed | Run v4l2-ctl --list-devices and update camera_index in YAML |
Serial port permission denied |
User not in dialout group | sudo usermod -aG dialout $USER then log out/in |
| Policy outputs all zeros | KL collapse in ACT training | Increase kl_weight to 50; use KL warmup schedule |
| Video frames out of sync with state | USB bandwidth saturation | Use USB3 cameras on separate USB controllers; reduce resolution to 480p |
绩效基准
使用LeRobot的参考实现的标准任务预期性能:
| Task | Platform | Demos | ACT Success | DP Success |
|---|---|---|---|---|
| Pick-place (single object) | SO-100 | 50 | 75-85% | 70-80% |
| Stacking (2 blocks) | SO-100 | 100 | 60-75% | 65-80% |
| Bimanual handover | ALOHA | 200 | 80-90% | 75-85% |
| Insertion (peg-in-hole) | OpenArm | 200 | 50-65% | 60-75% |
社区和资源
们在 们的 们里,我们都在 们的 们里, - HuggingFace Hub: hf.co/lerobot -- 越来越多的数据集和模型.
- 每周更新: 核心HuggingFace团队每1-2周都在HuggingFace博客上发布研究更新.
- **RCSV集成:**RCSV的 数据平台 接受LeRobot格式数据集用于管理存储,注释和培训管道出口.我们的 数据收集服务 默认提供LeRobot格式的数据集.
相关阅读
模仿学习指南 · 行动与传播政策 · 开放X体 · 机器人臂比较 · 数据注释 · 数据服务 · RCSV平台
雷罗伯特兼容的数据收集
基于CMSV的数据收集输出,可在LerRobot格式中提供数据收集输出,可与ACT或传播政策培训脚本一起使用.
[查看数据服务]







