PNP机器人学习——剖析LeRobot框架的架构、支持的策略、仿真平台和硬件、数据采集和训练过程,以及数据格式,帮助读者快速入门

PNP机器人学习——剖析LeRobot框架的架构、支持的策略、仿真平台和硬件、数据采集和训练过程,以及数据格式,帮助读者快速入门

张旭 PnP机器人 2025年11月12日 10:30 加拿大

00

引言

图片

01

LeRobot框架架构

1.1 框架概述

LeRobot是一个专注于实际机器人应用的机器人学习框架,它提供了一系列预训练模型、数据集和工具,特别关注模仿学习和强化学习方法。框架的目标是降低机器人技术的入门门槛,使研究人员和开发者能够更容易地开发和部署机器人应用。

(README.md:55-59)

1.2 系统架构

LeRobot的系统架构由几个相互连接的子系统组成,这些子系统协同工作,支持机器人学习。核心基础设施支持机器人学习算法的策略系统、训练数据的数据集管理、模拟的环境接口以及物理硬件交互的机器人控制。示例目录展示了这些系统如何一起使用。

图片

lerobot系统架构

1.3 代码架构

LeRobot的代码结构清晰,便于开发者理解和扩展:

.

├── examples             # 示例和教程,从这里开始学习LeRobot

│   └── advanced         # 包含更高级的示例

├── lerobot

│   ├── configs          # 包含可以在命令行中覆盖的所有选项的配置类

│   ├── common           # 包含核心功能类和工具

│   │   ├── datasets     # 各种人类演示数据集:aloha, pusht, xarm

│   │   ├── envs         # 各种模拟环境:aloha, pusht, xarm

│   │   ├── policies     # 各种策略实现:act, diffusion, tdmpc等

│   │   ├── robot_devices # 硬件接口:dynamixel电机,opencv相机,koch机器人

│   │   └── utils        # 各种工具函数

│   └── scripts          # 包含通过命令行执行的函数

│       ├── eval.py      # 加载策略并在环境中评估

│       ├── train.py     # 通过模仿学习和/或强化学习训练策略

│       ├── control_robot.py # 远程操作真实机器人,记录数据,运行策略

│       ├── pushdatasetto_hub.py # 将数据集转换为LeRobot数据集格式并上传到Hugging Face hub

│       └── visualize_dataset.py # 加载数据集并渲染其演示

├── outputs              # 包含脚本执行结果:日志、视频、模型检查点

└── tests                # 包含用于持续集成的pytest工具

(README.md:142-159)

这种结构使得开发者可以轻松地找到所需的组件,并理解它们之间的关系。

1.4 主要组件

1.4.1 策略系统

LeRobot通过统一的工厂接口实现多种最先进的策略架构。make_policy()工厂函数为创建不同类型的策略提供了统一的接口。训练(train.py)和评估(eval.py)脚本通过这个工厂与策略交互。所有策略都实现了PreTrainedPolicy接口,其中包括动作选择和模型训练的方法。

lerobot策略系统

1.4.2 数据集管理

数据集系统处理机器人数据集的加载、处理和可视化,重点关注多模态数据。LeRobotDataset类是核心组件,提供了加载和管理机器人数据集的功能。数据集可以从Hugging Face Hub或本地存储访问。make_dataset()工厂根据配置创建数据集实例。该系统处理片段、视频处理和图像转换,通过Rerun或HTML/Flask接口进行可视化。

图片

数据集管理

1.4.3 环境接口

LeRobot基于Gymnasium API为多个模拟环境提供了一致的接口。makeenv()工厂根据配置创建不同的环境类型(Aloha、PushT、XArm)。该系统包括用于预处理观察(preprocessobservation())和将环境特征转换为策略特征(envtopolicy_features())的工具。工厂生成Gymnasium向量环境,实现并行模拟。

图片

环境配置

1.4.4 机器人控制

机器人控制系统提供了与物理机器人交互的接口,支持不同的控制模式和硬件类型。control_robot.py脚本是机器人控制系统的核心组件,支持不同的控制模式(远程操作、记录、回放、校准)和机器人类型(操作器、移动)。该系统通过电机(Dynamixel、Feetech)和相机(OpenCV、RealSense)的抽象与硬件接口。记录模式与LeRobotDataset系统集成,用于数据收集。

图片

robot control模块

02

LeRobot支持的策略

LeRobot实现了几种最先进的策略架构,以下是对这些策略的详细介绍:

策略类型

描述

使用场景

优点

缺点

ACT (Action Chunking Transformer)

基于Transformer的动作分块策略,专为双手操作设计

需要精确协调的双手操作任务,如组装、操作复杂物体

能够学习长期依赖关系,处理复杂序列任务,对时间步长不敏感

训练成本高,需要大量数据,推理速度可能较慢

Diffusion (Denoising Diffusion)

基于扩散模型的视觉运动控制策略

需要精确控制的视觉引导任务,如精确抓取和放置

生成高质量、多样化的动作,对不确定性有良好建模

推理速度较慢,训练过程复杂

TDMPC (Temporal Difference M)PC)

时间差分模型预测控制

需要预测性控制的任务,如动态环境中的导航和操作

结合了模型预测控制的规划能力和强化学习的自适应性

对模型精度要求高,计算成本较大

VQBeT (Vector Quantized Behavior)

向量量化行为Transformer

需要从多样化演示中学习的任务,如多模态行为学习

能够从多样化数据中提取离散行为原语,泛化能力强

离散表示可能限制某些连续控制任务的精度

PI0 (Vision-Language-Action)

视觉-语言-动作策略

需要语言指导的任务,如遵循自然语言指令的机器人操作

能够理解和执行自然语言指令,多模态融合能力强

对语言理解的准确性依赖高,需要配对的语言-动作数据

PI0FAST (Fast Action Tokenization)

快速动作标记化策略

需要实时响应的语言引导任务

比PI0更快的推理速度,保持语言理解能力

可能在复杂指令上精度略低于PI0

这些策略可以通过统一的make_policy()工厂函数创建,使得在不同任务和环境中切换策略变得简单。

03

LeRobot支持的仿真平台和硬件

3.1 支持的仿真环境

LeRobot通过Gymnasium接口支持多个模拟环境:

环境

描述

特点

Aloha

双手机器人操作任务

专注于双手协调操作,如倒咖啡、开瓶盖等

PushT

物体推动操作任务

专注于推动物体到目标位置的任务

XArm

XArm机器人操作任务

基于现实世界XArm机器人的模拟环境

这些环境可以作为额外依赖项安装:

pip install -e ".aloha, pusht"

(README.md:122-129)

3.2 硬件支持

LeRobot支持多种物理机器人硬件,特别是专注于经济实惠且功能强大的机器人平台。以下是主要支持的硬件类型:

(1)操作器机器人:

SO100(基于Koch设计的双臂机器人)

XArm(单臂机器人)

(2)移动机器人:

LeKiwi(移动机器人平台)

(3)传感器和执行器:

相机:OpenCV兼容相机、Intel RealSense深度相机

电机:Dynamixel伺服电机、Feetech伺服电机

3.3 SO100机器人案例分析

SO100是LeRobot框架中重点支持的一种双臂机器人,基于Koch设计。它是一个经济实惠的双臂机器人平台,特别适合研究和教育用途。

3.3.1 SO100硬件架构

SO100机器人由以下主要组件组成:

两个机械臂,每个臂有多个自由度

Dynamixel伺服电机作为关节驱动

一个或多个相机用于视觉感知

控制电路和电源系统

3.3.2 SO100控制流程

控制SO100机器人的典型流程如下:

图片

04

使用LeRobot进行遥操作和数据采集

4.1 遥操作模式

遥操作模式允许用户直接手动控制机器人。这种模式对于测试机器人硬件、实验动作或准备记录会话非常有用。

4.1.1 遥操作流程

(参考 control_robot.py:233-242)

图片

4.1.2 遥操作配置

遥操作可以通过TeleoperateControlConfig类进行配置,该类提供以下选项:

参数

类型

描述

fps

int或None

限制最大帧率。默认无限制。

teleop_time_s

float或None

遥操作持续时间。默认无限。

display_data

bool

是否显示相机馈送和数据可视化。

4.1.3 遥操作命令示例

基本的无限频率遥操作:

python lerobot/scripts/control_robot.py \    --robot.type=so100 \    --control.type=teleoperate

(control_robot.py:29-39)

限制频率的遥操作,模拟记录:

python lerobot/scripts/control_robot.py \    --robot.type=so100 \    --control.type=teleoperate \    --control.fps=30

(control_robot.py:42-48)

4.2 数据记录模式

记录模式将机器人的观察和动作捕获到结构化数据集中。这种模式对于收集用于机器人学习策略的训练数据至关重要。

4.2.1 记录流程

(参考 control_robot.py:246-340)

图片

4.2.2 使用策略记录

记录可以使用预训练策略控制机器人进行,这对于评估策略性能很有用。使用策略记录时,遥操作被禁用,策略根据观察生成动作。

(control_utils.py:213-288)

4.2.3 记录配置

记录通过RecordControlConfig类配置,具有以下关键参数:

参数

类型

描述

repo_id

str

数据集标识符(例如,'username/dataset_name')

single_task

str

记录期间执行的任务描述

fps

int或None

记录的帧率

warmup_time_s

int或float

开始数据收集前的预热秒数

episode_time_s

int或float

每个片段的数据记录秒数

reset_time_s

int或float

每个片段后重置环境的秒数

num_episodes

int

要记录的片段数量

video

bool

是否将帧编码为数据集中的视频

push_to_hub

bool

是否将数据集上传到Hugging Face Hub

policy

PreTrainedConfig或None

用于评估记录的可选策略配置

resume

bool

是否在现有数据集上继续记录

num_image_writer_processes

int

处理帧保存为PNG的子进程数

num_image_writer_threads_per_camera

int

每个相机写入PNG图像的线程数

4.2.4 记录命令示例

记录单个测试片段:

python lerobot/scripts/controlrobot.py \    --robot.type=so100 \    --control.type=record \    --control.fps=30\    --control.singletask="抓取乐高积木并将其放入箱中。"\    --control.repoid=username/testdataset \    --control.numepisodes=1\    --control.pushto_hub=True

(control_robot.py:50-59)

记录用于训练的完整数据集:

python lerobot/scripts/controlrobot.py \    --robot.type=so100 \    --control.type=record \    --control.fps=30\    --control.repoid=username/trainingdataset \    --control.numepisodes=50\    --control.warmuptimes=2\    --control.episodetimes=30\    --control.resettimes=10

(control_robot.py:82-91)

4.3 模拟环境中的数据采集

除了在实际机器人上收集数据外,LeRobot还支持在模拟环境中收集数据,这对于初始开发和测试非常有用。

python lerobot/scripts/controlsimrobot.py record \    --robot-path lerobot/configs/robot/yourrobotconfig.yaml \    --sim-config lerobot/configs/env/yoursimconfig.yaml \    --fps 30\    --repo-id $USER/robotsimtest \    --num-episodes 50\    --episode-time-s 30

(controlsimrobot.py:65-72)

05

LeRobot数据格式

5.1 LeRobotDataset格式概述

LeRobot使用一种称为LeRobotDataset的统一数据格式,它设计用于存储和管理机器人学习所需的多模态数据。这种格式可以轻松地从Hugging Face Hub或本地文件夹加载。

图片

lerobot数据格式

5.2 数据集结构

LeRobotDataset的文件结构组织如下:

├── data

│   ├── chunk-000

│   │   ├── episode_000000.parquet

│   │   ├── episode_000001.parquet

│   │   └── ...

│   ├── chunk-001

│   │   ├── episode_001000.parquet

│   └── ...

├── meta

│   ├── episodes.jsonl

│   ├── info.json

│   ├── stats.json

│   └── tasks.jsonl

└── videos

├── chunk-000

│   ├── observation.images.camera1  # 'camera1' 是示例名称

│   │   ├── episode_000000.mp4

│   ├── observation.images.camera2

├── chunk-001

└── ...

(lerobot_dataset.py:400-438)

5.3 数据集组件

LeRobotDataset包含以下主要组件:

(1)HF Dataset:基于Arrow/Parquet的数据集,包含以下特征:

观察图像(VideoFrame格式或路径)

状态观察(例如关节位置)

动作(例如关节目标位置)

片段索引和帧索引

时间戳

任务描述

(2)元数据 (meta):

episodes.jsonl: 包含每个片段的元信息,如起始/结束帧索引、在哪个chunk等。

info.json: 数据集的整体信息,包括特征、fps、机器人信息等。

stats.json: 数据集中每个数值特征的统计信息(最大值、均值、最小值、标准差)。

tasks.jsonl: 如果数据集包含多个任务,这里会列出任务描述和对应的片段。

(3)视频 (videos) (可选):如果info.json中指定使用视频存储图像,则原始视频文件存储在此处,按chunk和相机名称组织。

06

结论

LeRobot框架通过其模块化的设计、丰富的预训练模型和数据集支持,以及对真实世界机器人应用的关注,显著降低了机器人学习的门槛。无论是进行学术研究还是开发实际应用,LeRobot都提供了一个强大而灵活的平台。希望本篇深度剖析能帮助您快速上手并有效利用LeRobot进行机器人学习的探索与创新。

文/张旭,已获得转载授权

Read more

Stable Diffusion 3.5 FP8镜像是否支持Mac M系列芯片?Rosetta转译实测

Stable Diffusion 3.5 FP8镜像是否支持Mac M系列芯片?Rosetta转译实测 在AI绘画圈里,Stable Diffusion 3.5的发布就像一场“视觉地震”💥——提示词理解更准、排版逻辑更强、细节还原更真,几乎把文生图模型拉到了新的天花板。但问题也来了:这么猛的模型,动不动就要16GB显存起步,普通用户哪扛得住? 于是,FP8量化版镜像(stable-diffusion-3.5-fp8) 横空出世,直接把模型体积和内存占用砍掉近半,堪称“轻量化救星”✨。可问题是:它能不能跑在我们手里的MacBook上?尤其是那些M1/M2/M3芯片的设备? 毕竟,Apple Silicon虽然性能强、能效高,但它是ARM架构啊!而绝大多数AI工具链都是为x86+GPU生态设计的。这就好比你买了辆特斯拉,结果发现充电口是国标,而家里装的是欧标插座⚡️——得靠“转接头”才行。 这个“转接头”,就是

夸克网盘免费资源电子书籍安卓软件经典游戏音乐歌曲精品教程AI绘画学习资料合集

夸克网盘免费资源电子书籍安卓软件经典游戏音乐歌曲精品教程AI绘画学习资料合集

一、夸克网盘免费资源说明 夸克网盘免费资源,来自全网整理二次精选,涵盖了几乎所有资源类型,网盘资源目录的分享链接,仅限一级目录和二级目录,一级目录是网盘资源的根目录,包括电子书籍、软件资源、游戏资源、视频资源、音乐音频、美食技术和学习资料等,二级目录是一级目录的子目录,均为资源专题形式,比如,Kindle原版书籍合集、U盘车载音乐歌曲、DeepSeek全套资源、全网专业摄影书籍、TikTok全球解锁版本、IOS巨魔专用资源、TED演讲视频合集、剪映教学全套资源、全网热门漫画精选,等等,相信其中会有你所需要的。 特别说明: 1、夸克网盘与百度网盘不同,不仅支持查看分享链接的资源大小,而且支持在分享链接页面里搜索资源,可以查询其中是否有你所需要的。 2、夸克官方一直都有福利活动,新用户可以免费领取1TB空间,具体操作方法请查看文本文件(在分享链接里)。 3、一级目录《全网精选2000T优质资料》,提供了很有价值的海量夸克资源,分享链接存放在电子表格里,整个目录大小只有9.7M,建议转存收藏。 二、夸克网盘一级目录资源 电子书籍+

AI编程工具深度对比:Cursor、Copilot、Trae与Claude Code,2025年开发者该如何选择?

2025年,AI编程助手已从新奇技术演变为生产力核心,但面对众多选择,开发者如何才能找到最适合自己的智能编程伙伴? 一、四大AI编程工具的核心定位与市场格局 2025年的AI编程工具市场已经形成了明显的分层格局。根据最新的开发者使用数据,这些工具不再仅仅是代码补全助手,而是朝着专业化、场景化方向发展。

FPGA图像处理:直方图均衡化/拉伸的MATLAB实现与Verilog代码仿真及FPGA板卡应用实践

FPGA图像处理:直方图均衡化/拉伸的MATLAB实现与Verilog代码仿真及FPGA板卡应用实践

FPGA直方图均衡化/直方图拉伸/FPGA图像处理 工程和算法包含以下内容: 1,MATLAB中实现图像处理。 2,verilog代码利用MATLAB联合modelsim仿真实现的图像处理。 3,小梅哥AC620和正点原子新起点/开拓者的FPGA板卡上实现的图像处理。 4,效果展示。 有理论支撑,有仿真波形,有详细代码 工具箱概述 冈萨雷斯《数字图像处理 MATLAB 版》(DIPUM)工具箱是一套专为图像处理研究和教学设计的 MATLAB 函数集合。该工具箱由 R.C. Gonzalez、R.E. Woods 和 S.L. Eddins 开发,作为其经典教材的配套资源,提供了丰富的图像处理算法实现。 主要功能模块 1. 图像显示与可视化 工具箱包含多种图像显示工具,其中 ice(交互式色彩编辑器)是最具特色的功能之一。该工具提供直观的图形界面,允许用户通过控制点编辑颜色映射曲线,实时预览处理效果。