如果感知+编程就能抓起一个杯子,那还要模仿训练(IL)干嘛?这一页专门回答这个困惑:IL 不是用来"抓杯子"的, 它是用来做那些无法用几何/规则写出来的、有温度的行为。看完你会知道 IL 该点缀在哪几处、每处要多少数据、风险多大。 配套:系统架构与分工 · 讨论记录。 带 复现 的是他人已发表的真机结果,推断 是对本项目的推理。
模仿学习(Imitation Learning / Behavior Cloning) = 人来遥操作示范很多遍,网络学一个映射:"看到的画面(+机器人状态) → 下一步动作"。它不理解物理、不做规划,就是把示范里的"看到什么就怎么动"记成一个连续函数。
| IL 是 | IL 不是 |
|---|---|
| 把"难以描述的手感/风格"从人身上拷进模型 | 不是"越多数据越强"——脏乱、不一致的示范会互相抵消 |
| 省掉显式建模(不用写抓取几何/标定) | 不是"万能感知"——它认位置的能力其实弱于专门的检测器 |
| 天花板 = 示范的质量 × 覆盖 | 不是"能自我超越"——那是强化学习(RL)的事 |
| 方式 | 怎么泛化 | 要你采数据 | 擅长 |
|---|---|---|---|
| ① 写死坐标 | 不泛化,挪一下就抓空 | 不要 | —— |
| ② 感知+编程抓取 | 靠实时感知:每帧重新看杯子在哪、什么形状 | 不要(用别人训好的通用模型) | 刚性、位姿可测的物体 |
| ③ 模仿训练 IL | 靠示范覆盖:见过的分布内才行 | 要,且要很多 | 难建模的接触/风格/语义 |
仿真(simulation)是第三个轴——不是"怎么抓",而是"训练数据从哪来"(仿真里造数据/试错)。仓库结论是先别转仿真,见 仿真·RL·深度。
| IL 擅长 | 为什么规则写不出 | 调酒里的例子 |
|---|---|---|
| 柔顺接触 / 手感 | 接触力/顺从很难解析建模,"轻一点""顶住"是隐性知识 | 把杯子稳稳交到顾客手里、被轻拽时顺势松开 |
| 杂乱场景里"是哪一个" | 靠细微外观/上下文分辨,规则枚举不完 | 吧台上多个杯子/瓶子,挑出"那杯要递的" |
| 多步隐式策略 | 中途要看着状态调整,分支太多 | 边倒边看液面、快满了收手 |
| 不想搭感知栈 | 用工程换数据:示范给它看,省掉检测+标定+抓取规划 | 快速做一个"能用"的端到端 demo |
| 泛化到列举不完的变化 | 大模型从广数据里学到语义先验 | 换了没见过的杯型/背景/光照仍大致能干 |
下面逐条讲:为什么这里 IL 比编程更出彩、怎么落地、要多少数据、风险在哪。
为什么出彩:这是整台机器"有没有温度"的高光时刻——把杯子递到人手上、感到人接住了就松,动作柔顺不僵。纯规则能做但很"机械"。
为什么出彩:脚本能"倒",但"漂亮地倒、收尾一提不滴落"是风格。少量示范能把这个"帅"学进去。
为什么出彩:看到顾客累→动作更轻柔缓慢;看到开心→利落带点花式。这把 情绪模块(§7) 和手臂动作连起来,是极强的 demo 记忆点。
为什么出彩:滑了/碰歪了能自己重试,而不是卡死或摔。失败情形太多,规则枚举不完,正是 IL/RL 的地盘。
为什么出彩:"给我那杯红的"——用语言条件挑对杯子/对应动作。这是 VLA/SmolVLA 的强项(你们现在的栈就是 SmolVLA)。
| 机会 | 出彩程度 | 数据成本 | 风险 | 建议顺位 |
|---|---|---|---|---|
| (c) 表现力(先参数化) | 高 | ≈0 | 低 | ①先做 |
| (a) 柔顺交接 | 高 | 小 | 中 | ② |
| (b) 倒酒手感 | 中 | 小-中 | 中 | ③ |
| (d) 失败恢复 | 中 | 中 | 中 | ④ |
| (e) 多饮品语义 | 高 | 大 | 高 | ⑤后期 |
| 模仿/行为克隆 BC | 强化学习 RL | |
|---|---|---|
| 怎么学 | 拷贝人示范 | 自己试→拿奖励→改进 |
| 天花板 | = 示范质量 | 可超过示范 |
| 代价 | 要采示范 | 要大量试错(真机慢、要样本高效) |
| 本项目 | 现状(ACT/SmolVLA) | 升级项 HIL-SERL:真机 RL,~1–2.5h 收敛到 ~100% 复现 |
不要让 IL 从像素里瞎猜位置。让感知先算好 3D 位姿,当输入喂给 IL——IL 只需学"给定位姿后怎么柔顺完成",数据需求骤降。
感知/编程层 ┌─────────────────────────────────────────────┐
(免数据) │ 检测杯子 → 深度反投影 3D 位姿 → 人手 3D 位置 │
└───────────┬──────────────────┬──────────────┘
│ 3D 位姿(当输入) │ 目标点
▼ ▼
IL/技能层 ┌──────────────────┐ ┌──────────────────┐
(少数据点缀)│ 最后 3cm 柔顺闭合 │ │ 柔顺交接 + 松手 │
└──────────────────┘ └──────────────────┘
│ │
编排层 ┌─────────────────────────────────────────────┐
(脚本) │ 导航(脚本) → 抓(感知+IL) → 倒(脚本±IL风格) │
│ → 移动(脚本) → 递交(感知+IL) → 放(脚本) │
└─────────────────────────────────────────────┘
两种最实用的混法:①位姿喂入(上图,最省数据);②分段接力:感知把手伸到杯前 3cm,IL 只接管最后闭合那一下。
| 任务性质 | 用什么 | 要不要采数据 |
|---|---|---|
| 刚性物体、位姿可测、只要"抓到" | 纯经典(感知+编程) | 不要 |
| 要"手感/风格/温度/表现力" | 经典 + IL 点缀 | 少量、同风格 |
| 接触复杂、要超越示范、要自愈 | HIL-SERL(真机 RL) | 少量种子 + 真机试错 |
| 动作可几何描述(走/倒到定点) | 脚本 | 不要 |
| 语言指定、多物体多指令 | VLA/语言条件 IL | 大(后期) |