3. 示教采集基础
在机器人学习中,示教采集是把人类完成任务的经验转化为机器人可学习数据的第一步。它连接了“人如何做”与“机器人如何学”两个世界。理解示教学习、模仿学习、数据采集范式以及人类演示类型,是后续使用 LeRobot 进行遥操作与数据集构建的理论基础。
一、核心原理:从示教到技能获取
示教学习(Learning from Demonstration, LfD)是一类方法的统称:人类通过演示任务,机器人从演示中提取策略,最终能自主复现或泛化该任务。其核心假设是:演示数据中隐含了完成任务所需的动作序列、状态转移和决策逻辑。
模仿学习(Imitation Learning, IL)是示教学习中最主流的技术路线,通常分为行为克隆(Behavior Cloning, BC)和逆强化学习(Inverse Reinforcement Learning, IRL)。行为克隆直接把“状态→动作”映射当作监督学习问题;逆强化学习则先推断演示背后的奖励函数,再用强化学习求解策略。
关键区别:示教学习强调“从演示中学习”的完整框架;模仿学习强调“模仿演示行为”的具体算法。示教采集则是为这两者提供数据原料的工程环节。
二、机器人技能获取流程
一个完整的机器人技能获取流程通常包含以下阶段:
- 任务定义:明确要教机器人做什么,例如抓取、放置、插拔、折叠。
- 演示设计:选择演示方式(遥操作、动觉示教、视觉示教等),设计演示次数与多样性。
- 数据采集:记录关节角度、末端位姿、图像、力觉、语言指令等多模态数据。
- 数据预处理:时间对齐、滤波、归一化、切分 episode、标注成功/失败。
- 策略学习:用 BC、ACT、Diffusion Policy 等算法训练策略网络。
- 评估与迭代:在仿真或真机上评估成功率,分析失败模式,补充演示数据。
- 部署与泛化:将策略部署到目标机器人,测试新物体、新位置、新光照下的泛化能力。
下面用一张信号链式流程图展示从人类演示到机器人技能获取的完整数据流与关键节点。
三、数据采集范式
在 LeRobot 生态中,数据采集通常遵循以下范式:
- Episode 化采集:每次完整任务执行称为一个 episode,包含从初始状态到终止状态的完整轨迹。
- 多模态同步:图像、关节状态、动作指令、时间戳必须严格对齐,否则策略学习会出现因果错位。
- 成功/失败标注:每个 episode 需标注结果,失败数据可用于对比学习或奖励建模。
- 多样性覆盖:物体位置、光照、背景、初始姿态要有变化,避免策略过拟合。
LeRobot 提示:使用 lerobot record 命令采集数据时,建议每个任务至少采集 50 个成功 episode,并保留 10% 的失败样本用于评估鲁棒性。
四、案例场景:抓取放置任务
以“将红色方块放入蓝色盒子”为例,演示采集流程如下:
# 启动遥操作采集
lerobot record \
--robot so100 \
--teleop so100_leader \
--task "pick_red_cube_place_blue_box" \
--episodes 60 \
--fps 30 \
--output ./datasets/pick_place
# 数据目录结构
datasets/pick_place/
├── episode_0000/
│ ├── observation.images.top.mp4
│ ├── observation.state.parquet
│ ├── action.parquet
│ └── metadata.json
├── episode_0001/
└── ...
采集完成后,用 lerobot train 训练 ACT 策略,再在真机上评估成功率。若成功率低于 70%,需回到采集阶段补充边缘案例。
五、常见误区与复盘
| 误区 | 表现 | 改进方法 |
|---|---|---|
| 演示次数不足 | 策略过拟合,换位置就失败 | 每个任务至少 50 个 episode,覆盖多种初始条件 |
| 时间戳不同步 | 动作与图像错位,策略学出错误因果 | 采集时统一时钟源,后处理做时间对齐 |
| 只采成功数据 | 无法评估失败边界,鲁棒性差 | 保留 10% 失败样本,用于对比与奖励建模 |
| 演示风格单一 | 机器人只会模仿固定轨迹 | 让不同操作者演示,增加速度、路径多样性 |
| 忽略力觉/触觉 | 接触任务(插拔、擦拭)失败率高 | 增加力传感器,采集力觉信号作为观测 |
复盘要点:示教采集不是“录得越多越好”,而是“覆盖越全越好”。优先保证 episode 的多样性、同步性和标注质量,再考虑增加数量。数据质量决定策略上限,算法只是逼近这个上限。