这篇不想再泛泛讨论“机器人怎么学技能”,而是专门解决一个更容易把项目拖死的问题:你怎么判断一个 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 这类环境当成参数扫描、扰动注入和部署前验收台。
例如你可以在仿真里系统性扫这些变量:
- 关节控制延迟和命令丢帧
- 物体初始位姿偏移
- 摩擦系数和接触刚度变化
- 相机噪声、遮挡、亮度变化
- 末端执行器开合误差
真正该问的问题不是“仿真成功率多少”,而是“哪些变量一变,策略就开始崩”。这比一张漂亮训练曲线更有部署价值。
第五步,实机不要直接全自动,先走影子评测和限权部署
第一轮上实机时,我建议分三段:
- 离线回放评测:拿历史 episode 做逐帧推理,看动作输出是否明显失真
- 在线影子模式:策略实时出动作,但不真正驱动关键执行,只和人工动作对比
- 限权自动执行:只开放低速、低力、短时窗口,并保留人工立刻接管
这里的重点是,技能学习不该直接跳到“让机器人自己干”,而是要先验证模型输出是否稳定、是否越界、是否和人的预期相符。
最容易翻车的地方
- 数据看起来多,实际上可用样本很少。一堆未标定、时序错位、靠人工补救成功的演示,会直接拖垮训练。
- 把成功率当唯一指标。如果不看连续运行、不同起始姿态、不同操作者批次,成功率很容易虚高。
- 动作接口训练时和部署时不一致。训练输出末端增量,部署却接到关节位置控制,中间没做契约对齐,基本一定出事。
- 忽略回放证据链。模型版本、训练配置、评测环境、相机参数没有一起存档,后面根本无法知道为什么一版好、一版坏。
- 把底层硬件问题误判成学习问题。夹爪背隙、腕部抖动、相机外参漂移、母线掉压,都可能让你白白多训几十轮。
怎么验证你的技能版本真的过关了
我更推荐用一组比“平均成功率”更硬的验收法:
- 固定批次验收:同一套 20 到 30 个标准起始场景,每次版本升级都复跑
- 扰动验收:轻微改物体位置、光照、接近方向,确认不是只记住单一路径
- 连续运行验收:不是做 3 次,而是做 30 次,看热漂移、抖动累积、相机偏移会不会出现
- 失败桶分析:把失败明确分成感知错误、抓取前对齐错误、接触后滑脱、策略犹豫、执行超时、人工接管
- 回放一致性:同一模型在离线回放和实机影子模式中的动作趋势不能差得太离谱
如果你愿意再往前走一步,可以像 Diffusion Policy 那样把配置、checkpoint、日志和评测结果一并留档。这样以后不是“感觉这版更好”,而是能拿出证据说明到底哪里更好。
什么时候该停下来补系统,而不是继续加数据
- 同一技能在不同天成功率波动很大,说明系统基线还不稳
- 人工示教都经常失败,说明任务定义或工装本身有问题
- 相机或机械零位经常重新标定,说明观测契约还没固定
- 训练表现不错,但部署时动作抖、犹豫或过冲,说明执行层与训练接口不匹配
这时候最该做的,通常不是再采 200 条,而是先补标定纪律、动作接口、控制稳定性和日志链路。
下一步怎么做
如果你准备在 humanoid 上认真建立技能训练验收体系,我建议下一轮只做这三件事:
- 选一个 30 秒内能完成、成功标准明确的小任务
- 把 teleop、相机、标定、记录、回放先跑通
- 先训练一个轻量 baseline,并建立固定验收集
把这三件事做好,后面再加多模态输入、更复杂 policy、更多任务族,才不会一直在“看起来会了,实机又翻车”的循环里打转。
延伸阅读与工程参考
- LeRobot ACT 文档,适合拿来做低门槛 imitation learning baseline 参考。
- LeRobot Real-World Imitation Learning 教程,对 teleop、数据记录、评测流程写得比较完整。
- DROID Docs,适合参考数据采集平台、相机标定和训练评测工作流怎么制度化。
- Isaac Lab / Isaac Sim Policy Deployment 文档,适合参考 sim-to-real 部署前需要锁定哪些环境与机器人参数。
- Diffusion Policy 开源仓库,适合参考配置、日志、checkpoint 和真实硬件评测证据链如何留存。