人形机器人技能训练怎么做版本验收:从示教采集、影子评测到失败回流的实作指南

这篇不想再泛泛讨论“机器人怎么学技能”,而是专门解决一个更容易把项目拖死的问题:你怎么判断一个 humanoid 技能版本已经真的能上机、能复现、能迭代。如果你正在做抓取、开门、取放、整理、按钮操作、简易装配这类任务,这篇更适合你。最关键的工程判断只有一句话:先把技能训练的验收闭环做出来,再谈多技能和大模型。对大多数团队来说,最先决定成败的不是模型名字,而是示教链路、数据质量、影子评测、实机验收和失败回流有没有连起来。

这篇适合谁

  • 正在做 humanoid 上肢操作、双臂协作或移动操作技能的人
  • 已经有基础控制和感知链路,想开始做示教训练或策略学习的人
  • 经常遇到“仿真里会,实机就不会”“演示能成,连续跑就掉”的团队
  • 想把技能训练做成可验收、可回归、可迭代工程,而不是一次性 demo 的项目负责人

先纠正几个很常见的误区

  • 误区 1:先追通用多技能。对多数团队,先做通一个技能闭环,比堆十个半成品任务更值钱。
  • 误区 2:只要模型更大,泛化就会自然出现。很多失败根本不是模型不够大,而是演示覆盖不够、相机位姿不稳、动作接口不一致。
  • 误区 3:实机成功过一次,就说明技能学会了。真正要看的,是不同批次、不同起始姿态、不同光照和轻微扰动下还能不能稳定复现。
  • 误区 4:学习问题可以和控制问题分开看。如果执行层延迟大、夹爪接触不稳、状态估计漂,训练出来的策略通常只是把底层问题包装起来。
关键实现判断
真正适合进入训练验收闭环的技能,应该同时满足四个条件:任务边界清楚、成功标准可判定、人工能稳定示教、失败成本可控。只要这四条缺两条以上,先补接口、工装和验证,而不是急着开训。

先决定你到底在教什么,不要把“技能”定义得太大

我更建议把技能先定义成一个可验收的任务单元,而不是一句笼统的“学会收拾桌面”“学会做家务”。一个适合第一轮训练的技能,最好能明确写成下面这种格式:

  • 起始条件:物体放在哪里,机器人初始姿态是什么,相机是否固定
  • 动作边界:机器人可以移动哪些关节,可不可以走动,可不可以切换抓手姿态
  • 成功定义:物体被放到目标框内、门把手转过阈值、按钮触发成功等
  • 失败定义:脱手、碰撞、超时、触发急停、偏离安全区

如果你连这些都写不清,后面采回来的数据、训练曲线和测试结果几乎一定会越来越乱。

先选训练路线,再定义验收口径,不要反过来

技能训练常见有三条路,但适用条件差异很大。路线不同,验收方式也该不同。

1)示教 / imitation learning,适合先打穿第一条闭环

如果任务有人类可重复演示路径,比如抓取、放置、拉门、抽屉整理、简单工位切换,我通常优先建议先做示教学习。LeRobot 的 ACT 文档很适合作为一个入门参照,它把这类问题定义得很务实:低计算量、训练快、几十条到上百条演示就能先跑起来,先把“能不能学到一条可用动作轨迹”验证掉,再谈更复杂的策略。

这条路线适合你在以下情况下先起步:

  • 任务轨迹相对短,且有明显开始和结束
  • 人类示教的质量比较稳定
  • 你现在更缺一个可工作的 baseline,而不是最强上限

2)仿真强化学习,适合奖励清楚、可大量试错的控制型技能

如果你做的是接触控制、步态、姿态恢复、稳定操作窗口这类问题,强化学习更可能有价值。但别把所有技能都往 RL 上套。Isaac Lab 的训练和部署文档有一个很好的工程启发:训练、导出、环境参数、机器人定义、部署接口应该是一条连续链路,而不是“先在模拟器里练一个网络,之后再想办法接到机器人上”。

换句话说,仿真训练真正有价值的前提,不是算力够多,而是你能不能把这些契约提前锁定:

  • 观察量和实机一致
  • 动作接口和实机一致
  • 控制频率和延迟预算接近
  • 接触、摩擦、饱和、关节限位在部署时不会完全变样

3)扩散 / 序列策略,适合多模态、动作不止一条解的任务

像 Diffusion Policy 这类工作给工程上最有价值的提醒,不是“扩散模型很火”,而是它把复现实验需要的东西放得很完整:配置、训练日志、评测日志、checkpoint、真实硬件清单、相机与 teleop 设备要求。对团队来说,这意味着一件更重要的事,技能学习不是只存一个模型文件,而是把整个训练和评测证据链留下来

如果你的任务存在多条合理动作路径,比如绕障取物、柔性物体整理、接触点不稳定的操作,扩散式策略可能比普通行为克隆更稳。但前提仍然是你有更干净的数据和更严格的评测,不然只会把不一致学得更彻底。

分步实践指南:把一个技能训练验收闭环真正搭起来

第一步,先做示教与记录链路,而不是先做训练脚本

这一层很多团队最容易偷懒,但它往往最决定上限。LeRobot 的 real-world tutorial 和 DROID 的 example workflows 都很强调一件事:先把 teleop、相机、标定、数据记录、回放看板跑顺,再开始批量采集。

我建议最低做到这些:

  • 每条 episode 都能记录关节状态、末端动作、相机画面、任务标签、开始结束时间
  • 演示过程中能看到实时相机和关节反馈,减少“采回来了才发现没对齐”
  • 相机外参、机械零位、夹爪开合方向这些基础标定有固定流程
  • 采集完成后可以快速回放,检查是否存在掉帧、时序错位、动作抖动

如果你做 humanoid,不一定照搬 DROID 的平台,但它那种“硬件搭好、软件配好、再按工作流收集和训练”的思路非常值得借鉴。尤其是相机标定和 teleop 工作流,要在第一天就制度化。

第二步,先把数据切成“可学的分布”

很多技能学不出来,不是因为模型差,而是因为同一个数据集里混了太多不同阶段、不同意图、不同速度和不同起始条件。更稳的做法通常是:

  • 先把任务切成小段,比如接近、预对齐、接触、执行、退出
  • 记录每段的开始结束条件,而不是只留一整条长视频
  • 把明显失败、抢救动作、操作员修正单独标注出来
  • 保留少量“困难样本”,但不要让脏数据淹没主分布

如果你现在采集 100 条演示,其中 40 条是姿态没对齐、20 条是视角偏了、10 条靠人临场补救才成功,那模型最后学到的往往是混乱,而不是技能。

第三步,先训练最便宜、最容易解释的 baseline

我通常会建议第一轮先上一个轻量 baseline,比如 ACT 或普通行为克隆,而不是一开始就把最复杂的 policy 堆上去。原因很简单:

  • 先确认数据和动作接口本身有没有问题
  • 先建立最小可用成功率
  • 先让团队知道失败是出在数据、感知还是模型

只有当 baseline 已经把数据链路打通,但在多解任务、时序不稳定、长程依赖上明显卡住时,再上更重的策略才划算。

第四步,把仿真当成验收台,不只是训练场

如果任务涉及明显接触和动态变化,仿真很有用,但别把它当“成功替代真实”的世界。更实用的用法,是把 Isaac Lab 这类环境当成参数扫描、扰动注入和部署前验收台

例如你可以在仿真里系统性扫这些变量:

  • 关节控制延迟和命令丢帧
  • 物体初始位姿偏移
  • 摩擦系数和接触刚度变化
  • 相机噪声、遮挡、亮度变化
  • 末端执行器开合误差

真正该问的问题不是“仿真成功率多少”,而是“哪些变量一变,策略就开始崩”。这比一张漂亮训练曲线更有部署价值。

第五步,实机不要直接全自动,先走影子评测和限权部署

第一轮上实机时,我建议分三段:

  1. 离线回放评测:拿历史 episode 做逐帧推理,看动作输出是否明显失真
  2. 在线影子模式:策略实时出动作,但不真正驱动关键执行,只和人工动作对比
  3. 限权自动执行:只开放低速、低力、短时窗口,并保留人工立刻接管

这里的重点是,技能学习不该直接跳到“让机器人自己干”,而是要先验证模型输出是否稳定、是否越界、是否和人的预期相符。

最容易翻车的地方

  • 数据看起来多,实际上可用样本很少。一堆未标定、时序错位、靠人工补救成功的演示,会直接拖垮训练。
  • 把成功率当唯一指标。如果不看连续运行、不同起始姿态、不同操作者批次,成功率很容易虚高。
  • 动作接口训练时和部署时不一致。训练输出末端增量,部署却接到关节位置控制,中间没做契约对齐,基本一定出事。
  • 忽略回放证据链。模型版本、训练配置、评测环境、相机参数没有一起存档,后面根本无法知道为什么一版好、一版坏。
  • 把底层硬件问题误判成学习问题。夹爪背隙、腕部抖动、相机外参漂移、母线掉压,都可能让你白白多训几十轮。

怎么验证你的技能版本真的过关了

我更推荐用一组比“平均成功率”更硬的验收法:

  • 固定批次验收:同一套 20 到 30 个标准起始场景,每次版本升级都复跑
  • 扰动验收:轻微改物体位置、光照、接近方向,确认不是只记住单一路径
  • 连续运行验收:不是做 3 次,而是做 30 次,看热漂移、抖动累积、相机偏移会不会出现
  • 失败桶分析:把失败明确分成感知错误、抓取前对齐错误、接触后滑脱、策略犹豫、执行超时、人工接管
  • 回放一致性:同一模型在离线回放和实机影子模式中的动作趋势不能差得太离谱

如果你愿意再往前走一步,可以像 Diffusion Policy 那样把配置、checkpoint、日志和评测结果一并留档。这样以后不是“感觉这版更好”,而是能拿出证据说明到底哪里更好。

什么时候该停下来补系统,而不是继续加数据

  • 同一技能在不同天成功率波动很大,说明系统基线还不稳
  • 人工示教都经常失败,说明任务定义或工装本身有问题
  • 相机或机械零位经常重新标定,说明观测契约还没固定
  • 训练表现不错,但部署时动作抖、犹豫或过冲,说明执行层与训练接口不匹配

这时候最该做的,通常不是再采 200 条,而是先补标定纪律、动作接口、控制稳定性和日志链路。

下一步怎么做

如果你准备在 humanoid 上认真建立技能训练验收体系,我建议下一轮只做这三件事:

  1. 选一个 30 秒内能完成、成功标准明确的小任务
  2. 把 teleop、相机、标定、记录、回放先跑通
  3. 先训练一个轻量 baseline,并建立固定验收集

把这三件事做好,后面再加多模态输入、更复杂 policy、更多任务族,才不会一直在“看起来会了,实机又翻车”的循环里打转。

延伸阅读与工程参考

Share this article

Send it to someone following humanoid robotics, embodied AI, or deployment trends.