欢迎光临
我们一直在努力

从遥操作到策略部署:LeRobot 模仿学习与 ACT

1. LeRobot 的核心思想

LeRobot 是一个面向机器人学习的工具链,重点不是手写控制逻辑,而是通过示范数据训练机器人策略。

它的核心流程是:

Teleoperation → Record → Dataset → Train → Eval → Deploy

阶段

作用

Teleoperation

人操作机器人完成任务,提供专家示范

Record

记录图像、状态、动作和任务信息

Dataset

形成可训练的 LeRobotDataset

Train

训练 policy,让模型学习动作

Eval

测试 policy 能否完成任务

Deploy

把 policy 部署到真实机器人上执行

LeRobot 学的是“看到什么状态,就该做什么动作”。

也就是:observation / state → policy → action


2. Teleoperation:遥操作阶段

Teleoperation,也就是 teleop / 遥操作,是 LeRobot 真实机器人流程的第一步。

它的作用不是训练模型,而是让人先控制机器人动起来,检查整条真实机器人链路是否正常。

以 SO101 为例,teleoperation 的数据流可以理解为:

人手

leader arm / teleop device

读取 leader 当前关节位置

LeRobot teleoperate 程序

映射成 follower 的 action

follower robot / SO101

电机执行

所以,teleoperate 可以理解为:

人通过 teleop device 产生 action,LeRobot 把 action 发给 robot 执行。

它本身通常不重点保存训练数据,而是用于熟悉硬件、检查标定和验证控制链路。


3. Teleoperation 和 Record 的区别

阶段

人是否控制机器人

是否保存数据

主要目的

Teleoperation

通常不保存

验证硬件、标定、相机、控制链路

Record

保存

采集专家示范数据

Train

读取数据

训练 policy

Eval / Deploy

可选保存结果

测试或部署 policy

Record 的数据流是:

人手

leader arm / teleop device

action ───────────────┐
↓ │
follower robot │
↓ │
robot state ───────────┤
camera image ──────────┤
timestamp ─────────────┤

LeRobotDataset

也就是说,record 把人类遥操作过程变成了可以训练 policy 的 demonstration dataset。


4. LeRobotDataset 的数据结构

LeRobotDataset 是按 episode 组织的模仿学习轨迹数据。

一条 episode 表示一次完整任务示范。每个时间步通常包含:

字段

含义

observation.image

当前视觉画面

state

当前机器人或环境状态

action

专家示范动作

next.reward

执行动作后的奖励

next.success

当前任务是否成功

next.done

当前 episode 是否结束

最重要的是:action 是训练目标。

模型训练时,不是单纯看视频,而是学习:

给定当前 observation 和 state,预测专家 action。

可以这样理解三者关系:

名称

角色

LeRobotDataset

专家示范数据

lerobot-train

训练流程入口

policy

被训练的模型

checkpoint

训练后的模型存档

lerobot-eval

加载模型进行测试

整体链路:LeRobotDataset → DataLoader → Policy → Loss → Backpropagation → Checkpoint

一条 episode 可以理解成:

episode_000
├── frame_000
│ ├── observation.images.front
│ ├── observation.state
│ ├── action
│ └── timestamp
├── frame_001
│ ├── observation.images.front
│ ├── observation.state
│ ├── action
│ └── timestamp
├── frame_002
│ └── …


5. 已跑通的 PushT 流程与命令

3.1 Dataset 可视化

python src/lerobot/scripts/lerobot_dataset_viz.py \\

–repo-id lerobot/pusht \\

–episode-index 1 \\

–display-compressed-images

参数

含义

–repo-id lerobot/pusht

查看 lerobot/pusht 数据集

–episode-index 1

查看第 1 条 episode

–display-compressed-images

显示压缩图像

这一步用于确认 LeRobotDataset 的结构,能看到 observation、state、action、reward、success、done 等字段。

3.2 ACT 小步数训练

lerobot-train \\

–dataset.repo_id=lerobot/pusht \\

–policy.type=act \\

–output_dir=outputs/train/act_pusht_test \\

–job_name=act_pusht_test \\

–policy.device=cpu \\

–steps=200 \\

–batch_size=4 \\

–wandb.enable=false \\

–policy.push_to_hub=false \\

–save_checkpoint=true \\

–save_freq=100

参数

含义

–dataset.repo_id=lerobot/pusht

指定训练数据集

–policy.type=act

使用 ACT policy

–steps=200

训练 200 次参数更新

–batch_size=4

每次训练取 4 个样本

–policy.device=cpu

使用 CPU 训练

–output_dir=…

指定训练结果保存目录

–save_freq=100

每 100 step 保存一次 checkpoint

steps 表示参数更新次数。一次 step 大致是:

取 batch → policy 预测 action → 计算 loss → 反向传播 → 更新参数

ACT policy 可以理解为根据当前 observation/state 预测一段连续动作,也就是 action chunk。本次日志中 chunk_size=100,说明它会预测长度为 100 的动作序列。

3.3 Eval 测试

lerobot-eval \\

–policy.path=outputs/train/act_pusht_test/checkpoints/000200/pretrained_model \\

–env.type=pusht \\

–eval.n_episodes=3 \\

–eval.batch_size=1 \\

–eval.use_async_envs=false \\

–policy.device=cpu

Eval 和 Train 的区别:

阶段

是否更新参数

作用

Train

会更新参数

学习专家动作

Eval

不更新参数

测试 policy 表现


6. LeRobot 和 ROS2 项目的关系

ROS2 项目更偏工程规则闭环:

ROS2 模块

作用

感知节点

输出目标信息

FSM 状态机

决定当前任务状态

motion 节点

根据状态生成控制指令

driver 节点

调用机器人底层接口

safety / heartbeat

处理异常和安全停机

LeRobot 更偏数据驱动策略闭环:

LeRobot 模块

作用

observation

摄像头图像、机器人状态

policy

根据观测生成动作

action

控制机器人执行

dataset

训练 policy 的数据来源

两者不是替代关系,而是互补关系:

ROS2 负责系统工程、安全、通信和 driver;LeRobot policy 可以作为智能动作生成模块。


7. 模仿学习、强化学习和规则控制的区别

机器人策略可以大致分成三类:规则控制、模仿学习、强化学习。

方法

核心思想

数据来源

典型形式

规则控制

人手写逻辑

工程经验

FSM、PID、if-else、行为树

模仿学习

学专家怎么做

人类示范数据

behavior cloning、ACT、Diffusion Policy

强化学习

通过奖励试错

环境交互和 reward

PPO、SAC、DQN

ROS2 项目更接近规则控制:感知结果 -> FSM 状态切换 -> motion 规则生成 cmd_vel -> driver 执行

LeRobot 更接近模仿学习:observation/state -> policy -> action

模仿学习的重点不是让机器人自己从零探索,而是先让人示范,然后让模型学习:在这个画面和状态下,专家会执行什么动作

所以 LeRobot 里的核心监督信号是:expert action 而不是 reward。

规则控制适合确定流程和安全逻辑,比如 FSM、急停、限速;模仿学习适合复杂操作技能,比如抓取、推动、放置。LeRobot 主要解决的是“动作策略怎么从示范数据里学出来”,而 ROS2 更负责系统调度、安全和真实机器人接口。


8. ACT 的核心理解:Action Chunk

ACT 的全称可以理解为一种面向机器人操作的模仿学习策略。它和普通行为克隆最大的区别是:

普通行为克隆:预测下一步动作 ACT:预测未来一段动作序列

普通行为克隆:image_t + state_t -> action_t

ACT:image_t + state_t -> action_t, action_t+1, …, action_t+k

这一段未来动作序列叫:action chunk

为什么要预测 action chunk? 因为机器人操作不是孤立动作,而是连续过程。例如机械臂抓取任务包含:

靠近物体 -> 调整夹爪 -> 下探 -> 闭合夹爪 -> 抬起

如果每一步都单独预测,动作可能会抖动、不连贯。ACT 预测一段连续动作,可以让动作更平滑,更符合机器人操作任务。

在 LeRobot 里可以这样理解:

observation.image + observation.state

ACT policy

future action chunk

robot/env 执行动作

ACT 的特点是根据当前图像和机器人状态预测未来一段动作 chunk,而不是只预测单步动作。这样更适合机械臂抓取、推动、放置等连续控制任务,因为这些任务本质上需要一段平滑的动作序列。


9. ACT 和 Diffusion Policy 的区别

ACT 和 Diffusion Policy 都属于模仿学习方法,都可以从 demonstration dataset 中学习机器人动作策略。

共同点:都需要专家示范数据 都学习 observation/state -> action 都适合连续控制任务 都可以用于机械臂操作

区别在于动作生成方式不同。

方法

动作生成方式

直观理解

ACT

直接预测 action chunk

看当前状态,直接输出未来动作序列

Diffusion Policy

通过扩散去噪生成动作序列

先从噪声开始,再一步步生成合理动作

ACT 更像:当前观测 -> 直接回归未来动作

Diffusion Policy 更像:当前观测 + 随机噪声 -> 多步去噪 -> 生成动作轨迹

为什么 Diffusion Policy 有用?

机器人任务里经常存在多种合理动作。比如抓同一个物体,可以从左边接近,也可以从右边接近;可以先调整夹爪,也可以先移动末端。Diffusion Policy 更擅长表示这种多模态动作分布。

赞(0)
未经允许不得转载:171主机测评 » 从遥操作到策略部署:LeRobot 模仿学习与 ACT
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址