news 2026/9/20 22:23:53

LeRobot 实战指南:一条命令链跑通机器人数据采集与策略训练

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeRobot 实战指南:一条命令链跑通机器人数据采集与策略训练

LeRobot 实战指南:一条命令链跑通机器人数据采集与策略训练

【免费下载链接】lerobot🤗 LeRobot: Making AI for Robotics more accessible with end-to-end learning项目地址: https://gitcode.com/GitHub_Trending/le/lerobot

当你需要让机械臂学会一个抓取任务时,流程通常是:遥操作演示 → 录制数据集 → 训练策略 → 部署回机器人。LeRobot 是 Hugging Face 开源的端到端机器人学习框架,把这条链路封装成了一套 CLI 命令和统一 API:你不需要自己写串口驱动或视频解码,lerobot-recordlerobot-trainlerobot-rollout各管一环,数据集、策略模型、硬件配置都通过配置文件描述。

一、LeRobot 解决什么问题

硬件抽象层——src/lerobot/robots/下注册了 SO-100/SO-101、LeKiwi、OpenARM、Koch、Reachy2、Unitree G1 等十余种机器人,串口、相机、舵机总线全部封装在统一接口后面。换一台机器臂,你只需要改--robot.type和端口参数,训练代码一行不动。

统一数据集格式——LeRobotDataset把视觉数据存成 MP4 视频、状态动作存成 Parquet 列式文件,再配 JSON 元数据。这种"视频 + 列式数据"的混合结构让几小时演示数据的读取速度远快于逐帧图像,且可以直接托管到 Hugging Face Hub 做版本管理。

策略即插即用——src/lerobot/policies/注册了 20 余个策略实现,从经典的 ACT、Diffusion Policy 到 pi0/pi05、SmolVLA、GR00T 等视觉-语言-动作模型,全部通过同一个工厂函数按名字实例化,预处理器/后处理器管线随策略配置自动重建。

覆盖完整工具链——标定(lerobot-calibrate)、遥操作(lerobot-teleoperate)、标注(lerobot-annotate)、评估(lerobot-eval)都是独立命令,组合起来就是一条从硬件到模型的流水线。

视觉-语言-动作模型在 LeRobot 中的数据处理流程,源码见src/lerobot/policies/

二、三步完成环境搭建与验证

第 1 步:创建环境。官方文档要求 Python ≥ 3.12(uv 路径);conda 用户按docs/source/installation.mdx建 3.12 环境:

# 创建独立 conda 环境并激活 conda create -y -n lerobot python=3.12 conda activate lerobot

第 2 步:按工作流装 extras。基础包故意做得很轻,硬件、训练、可视化依赖都拆成了 extras,装哪些取决于你要跑什么命令:

# 从源码安装(PyPI 安装则去掉 -e . 换成 lerobot) pip install -e ".[core_scripts]" # 录数据/回放/标定 pip install -e ".[training]" # 训练策略(含 accelerate、wandb)

第 3 步:验证安装lerobot-info是唯一一个"不装依赖也能跑"的脚本,会打印版本、Python、CUDA、GPU 型号,是排查环境问题的第一现场:

# 打印系统与环境摘要,确认 CUDA 可用 lerobot-info

三个平台的差异点:

平台视频解码额外操作
Linux x86_64TorchCodec(GPU 解码)需装 ffmpeg:conda install ffmpeg -c conda-forge
Apple SiliconTorchCodec(MPS)无额外操作
macOS Intel / Linux ARM自动回退 pyav可跳过 ffmpeg

WSL 用户注意:遥操作依赖 evdev,需conda install evdev -c conda-forge,详见docs/source/installation.mdx

三、核心模块拆解:机器人、数据集、策略工厂

硬件抽象层:一个工厂函数实例化所有机器人

# 从配置对象构建机器人,type 字段决定具体实现 from lerobot.robots import RobotConfig, make_robot_from_config cfg = RobotConfig(type="so101_follower", port="/dev/ttyACM0", id="my_arm") robot = make_robot_from_config(cfg) # 自动查注册表、连接串口、加载标定文件

所有机器人类型都通过@RobotConfig.register_subclass("so101_follower")这样的装饰器注册(见src/lerobot/robots/so_follower/config_so_follower.py),注册表同时支持第三方插件,所以"支持的机器人"清单实际比仓库里的目录更多。

数据集层:LeRobotDataset

视频存 MP4、状态动作存 Parquet,lerobot/datasets/lerobot_dataset.py里的LeRobotDataset把它们拼成一个标准torch.utils.data.Dataset:按 episode 索引、支持流式编码、内置特征统计量(均值/标准差/分位数,供策略归一化用)。录制时的编码参数(如--dataset.rgb_encoder.crf=23)在这里被消费。

策略工厂:按名字注册,按名字实例化

# 名字 → 配置类 → 策略类,全程无需手动 import 模型 from lerobot.policies.factory import get_policy_class, make_policy_config policy_cls = get_policy_class("act") # "act"/"diffusion"/"pi05" 等注册名 config = make_policy_config("act", hidden_dim=512)

内置策略按形态大致分三类:

策略名类型特点
actvqbet行为克隆轻量,机械臂任务首选起点
diffusionmulti_task_dit扩散策略多模态动作分布建模
pi0pi05smolvlagroot视觉-语言-动作支持语言指令,模型较重

另有tdmpc(模型预测控制)、hilserl(HIL-SERL 强化学习,见src/lerobot/rl/)。

四、实战工作流:从遥操作到部署的 5 条命令

以 SO-101 双臂为例,一条完整链路的命令序列(串口名请替换成你机器上的实际值):

  1. 找设备lerobot-find-port定位串口(拔掉 USB 线按回车即可识别),lerobot-find-cameras验证相机输出。
  2. 标定(每台机器做一次):
    # 舵机标定,id 命名后续命令必须保持一致 lerobot-calibrate --robot.type=so101_follower \ --robot.port=/dev/ttyACM0 --robot.id=my_follower_arm
  3. 录制数据集
    # 遥操作录制 30 个 episode,完成后上传 Hub lerobot-record --robot.type=so101_follower \ --robot.port=/dev/ttyACM0 --robot.id=my_follower_arm \ --teleop.type=so101_leader --teleop.port=/dev/ttyACM1 --teleop.id=my_leader_arm \ --dataset.repo_id=${HF_USER}/so101_demo --dataset.num_episodes=30 \ --dataset.single_task="put the red brick in a bowl" --display_data=true

    录制中按保存并进入下一段、丢弃重来、ESC停止并上传。

  4. 训练策略
    # 用 ACT 策略训练 20000 步,结果保存到 outputs/train/ lerobot-train --dataset.repo_id=${HF_USER}/so101_demo \ --policy.type=act --policy.device=cuda --steps=20000 \ --output_dir=outputs/train/act_so101 --job_name=act_so101
  5. 部署回机器人
    # base 策略做 60 秒推理,相机配置必须与录制时一致 lerobot-rollout --strategy.type=base \ --policy.path=outputs/train/act_so101 \ --robot.type=so101_follower --robot.port=/dev/ttyACM0 \ --task="put the red brick in a bowl" --duration=60

没有本地 GPU 时,给lerobot-train--job.target=a10g-small,训练会跑在 Hugging Face Jobs 的远端实例上;中断的训练用--config_path=<检查点> --resume=true续跑。

五、高频报错速查:现象→原因→解法

串口连接失败

SerialException: /dev/ttyACM0 could not be opened
  1. 确认设备确实插在预期端口:lerobot-find-port
  2. Linux 下把用户加入dialout组后重新登录:sudo usermod -aG dialout $USER
  3. 检查--robot.port与标定/录制时用的是否同一个口。

视频解码不可用

TorchCodec is not available on this platform

框架会自动回退到 pyav 解码,功能不受影响,只是没有 GPU 加速。若需要 TorchCodec:macOS Intel、Linux ARM 目前不支持(见官方文档);Linux x86 上确认conda install ffmpeg -c conda-forge已执行,再用lerobot-info核对 ffmpeg 版本。

训练显存不足

torch.cuda.OutOfMemoryError: CUDA out of memory
  1. 先降--batch_size,这是收益最大的旋钮。
  2. 换成更轻的起点:pi05smolvladiffusionact
  3. 仍不够就加--job.target=<flavor>挪到更大的远端 GPU。

推理时观测 key 不匹配

现象:lerobot-rollout启动即报特征不一致,提示缺少observation.images.xxx。原因是 rollout 时的相机名与录制时不一致——相机配置必须逐字匹配(名称、分辨率、fps),这是跨设备部署最常见的坑。

SO-100 在真实任务中的执行画面,对应examples/so100_to_so100_EE/示例目录

六、生态、社区与演进方向

  • 示例仓库examples/下有 lekiwi、omx、phone_to_so100、isaac_teleop_to_so101 等完整工作流,examples/notebooks/quickstart.ipynb是官方推荐的交互式入口。
  • 命令速查docs/source/cheat-sheet.mdx汇总了全部 CLI 命令及参数,忘参数时翻这里最快。
  • 硬件接入docs/source/integrate_hardware.mdx说明如何按src/lerobot/robots/的模板写自己的机器人驱动。
  • 评测与基准src/lerobot/envs/内置 LIBERO、Meta-World、RoboCasa、RoboTwin 等仿真环境,配合lerobot-eval做策略评估。
  • 演进方向:流式视频编码、HIL-SERL 强化学习管线、多 GPU 训练(src/lerobot/distributed/)是近期迭代最活跃的三块;路线图细节建议查阅官方文档确认。

进阶阅读:想理解策略注册与预处理器机制,直接读src/lerobot/policies/factory.pyget_policy_classsrc/lerobot/processor/pipeline.py

七、行动路线图:从复现到贡献

  1. 克隆仓库并跑通pip install -e ".[core_scripts]"+lerobot-info
  2. 选一个examples/示例(无硬件可从examples/notebooks/quickstart.ipynb开始)复现一遍。
  3. lerobot-record+lerobot-train在自己的数据上训练一个act策略。
  4. 跑通lerobot-eval在仿真环境里评估它。
  5. docs/source/的文档勘误或CONTRIBUTING.md指引的第一个 issue 开始贡献。

LeRobot 的价值在于把"机器人学习"从硬件工程拉回到算法迭代本身——装好环境,今天就跑通第一条记录命令。

【免费下载链接】lerobot🤗 LeRobot: Making AI for Robotics more accessible with end-to-end learning项目地址: https://gitcode.com/GitHub_Trending/le/lerobot

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/20 22:18:40

WABT wasm2wat 使用指南:3 分钟把 Wasm 二进制读成文本

WABT wasm2wat 使用指南&#xff1a;3 分钟把 Wasm 二进制读成文本 【免费下载链接】wabt The WebAssembly Binary Toolkit 项目地址: https://gitcode.com/GitHub_Trending/wa/wabt 你拿到一个编译好的 .wasm 文件&#xff0c;想读懂里面的逻辑&#xff0c;打开却只有一…

作者头像 李华
网站建设 2026/9/20 22:16:34

一条命令找回全部历史说说:GetQzonehistory批量导出QQ空间数据

一条命令找回全部历史说说&#xff1a;GetQzonehistory批量导出QQ空间数据 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory GetQzonehistory 是一款 QQ空间数据恢复 工具。扫码登录后&am…

作者头像 李华
网站建设 2026/9/20 22:15:11

用WorkBuddy搭建AI智能体工作流:跨境电商每日订单自动化实战

早上打开电脑&#xff0c;先查邮件、再同步数据、然后整理昨日的销售报表&#xff0c;最后还要把结果挨个发给相关同事。这一套流程我重复了快两年&#xff0c;直到把大部分环节丢给 WorkBuddy 处理之后&#xff0c;才真正意识到一个事实&#xff1a;这些每天雷打不动的事情&am…

作者头像 李华
网站建设 2026/9/20 22:13:20

别找临时中转:用 TaoToken 给 Dify 当兼容通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华