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

【花雕动手做】拆解机器人底盘DDSM400钕强磁外转子65mm伺服轮毂电机

【花雕动手做】拆解机器人底盘DDSM400钕强磁外转子65mm伺服轮毂电机

做小型高精度全向机器人底盘,想找一款 “省心又能打” 的动力核心?DDSM400 钕强磁外转子 65mm 伺服轮毂电机 绝对是优选——它把无刷电机、FOC 伺服驱动、高精度编码器集成一体,钕强磁加持、外转子直驱设计,不用额外搭配驱动板,直接装轮就能用,是麦克纳姆轮底盘的 “一体化动力神器”。 但很多创客只知道它好用,却不清楚内部构造:钕强磁转子藏着怎样的动力秘密?伺服驱动和编码器是如何实现精准控制的?外转子直驱为什么能做到零背隙、低噪音? 这里,就完整拆解这款 DDSM400 伺服轮毂电机,从外到内拆解核心部件,解析它的结构优势与工作逻辑,帮你真正看懂这款 “一体化伺服电机”,以后选型、改装、调试机器人底盘,都能心里有底、少走弯路。 DDSM400 伺服轮毂电机・简单拆解步骤 1、拧下轮毂固定螺丝用内六角扳手卸下电机外圈的固定螺丝,分离轮毂外壳与端盖。 2、取出外转子与强磁体轻轻取下外转子总成,内部可见一圈钕铁硼强磁,注意磁力较大,轻拿轻放。 3、

【无人机追踪】基于 0-1 整数规划实现「能耗最小」的无人机联盟选取,完成目标攻击任务的同时,让所有无人机的总能耗达到最优附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 🍎 往期回顾关注个人主页:Matlab科研工作室  👇 关注我领取海量matlab电子书和数学建模资料  🍊个人信条:格物致知,完整Matlab代码获取及仿真咨询内容私信。 🔥 内容介绍  一、背景 在现代军事作战或特定的工业应用场景中,常常需要多架无人机协同完成目标攻击任务。然而,无人机的能源储备有限,能耗问题成为制约其任务执行效率和持续时间的关键因素。如何在众多无人机中选取合适的无人机组成联盟,使其在成功完成目标攻击任务的同时,将所有参与无人机的总能耗控制在最优水平,是一个亟待解决的重要问题。 传统的无人机任务分配方式可能没有充分考虑能耗因素,或者只是简单地基于距离、速度等单一指标进行分配,这往往无法实现总能耗的最优控制。基于 0 - 1 整数规划的方法为解决这一问题提供了一种有效的途径,它能够综合考虑多种约束条件,精确地对无人机进行筛选和组合,以达到能耗最小化的目标。 二、原理 (一)0 - 1 整数规划基础

【机器人数值优化】数值优化基础(一)从理论到实战全方位指南 | 解锁机器人技术的核心技能

【机器人数值优化】数值优化基础(一)从理论到实战全方位指南 | 解锁机器人技术的核心技能

💯 欢迎光临清流君的博客小天地,这里是我分享技术与心得的温馨角落 💯 🔥 个人主页:【清流君】🔥📚 系列专栏: 运动控制 | 决策规划 | 机器人数值优化 📚🌟始终保持好奇心,探索未知可能性🌟 文章目录 * 引言 * 一、参考书籍推荐 * 二、数值优化的定义与组成 * 2.1 数值优化组成部分 * (1) 优化变量 * (2) 目标函数 * (3) 不等式约束 * (4) 等式约束 * 2.2 数值优化前提假设 * 三、数值优化在机器人中的应用 * 3.1 平滑与映射:非线性最小二乘法 * 3.2 轨迹规划: 非线性问题 * 3.3 点云配置:半定规划 * 3.4 时间最优路径参数化:二阶锥规划 * 四、数值优化基础

‌低代码/无代码测试工具:机遇与局限

‌低代码/无代码测试工具:机遇与局限

数字化转型下的测试革命‌ 在2026年的软件开发生态中,低代码/无代码(LCNC)测试工具已成为测试从业者不可忽视的力量。这类工具通过可视化界面和预构建模块,让用户无需编写复杂代码即可执行测试任务,显著加速测试周期。据Gartner预测,到2026年,超过50%的企业测试工作将依赖LCNC平台,尤其随着AI和云计算的融合,工具智能化水平大幅提升。然而,这一趋势也带来争议:是解放测试效率的“神器”,还是隐藏局限的“双刃剑”?本文从机遇与局限双维度,为软件测试从业者提供深度解析,助力决策与创新。 ‌第一部分:低代码/无代码测试工具的机遇‌ LCNC工具为测试从业者带来多重机遇,核心在于提升效率、降低门槛和赋能协作。 1. ‌加速测试自动化与缩短交付周期‌ * ‌效率提升‌:传统编码测试需要数周开发脚本,而LCNC工具(如Katalon或Testim)通过拖放界面实现分钟级测试用例创建。例如,2025年Forrester报告显示,采用LCNC工具的企业测试周期缩短40%,缺陷修复时间减少30%。这对敏捷和DevOps团队至关重要,支持持续集成/持续部署(CI/CD)流水线,