上篇(《RL 让人形机器人学踢球:13 轮实验、三次仪器级 Bug》)讲到我们修掉了三个仪器级 Bug(球盲训练、condim=3 静默忽略滚动摩擦、yaw 公式实读横滚),让 H1 从"对球全盲"走到"每集 100% 触球"。但当时留了一个尾巴:机器人会碰球了,却不会朝球门踢——方向命中率只有 7.5%。
本篇记录这个尾巴的完整攻坚:18 轮实验(v15→v33b),把方向从 7.5% 打到 88.3%,连续拿下课程表 C6 接球(90%)、C7 劫球(75.4%)、C8 射门(36.7%)三级达标,以及在 C4 上撞出的一个教科书级设计缺口——导航 ≠ 朝向。
0. 课程记分板(本文写完时的状态)
| 级 | 能力 | 状态 | 关键数字(240 集精评口径) |
|---|---|---|---|
| C1 行走 | ✓ | m110dr 底座 | 48 扰动 0 跌倒 |
| C3 动态点 | ✓ | v19b | 误差 0.85m,93.3% 集内 <1.2m |
| C5 带球 | ✓ | v26 | 带球段占比 0.55;dir 88.3%;射门 23 球 |
| C6 接球 | ✓ | v29 | stop 90%,停球中位 0.36m |
| C7 劫球 | ✓ | v30b | 拦截 75.4%,拦截中位 0.39m |
| C8 射门 | ✓ | v32 | 36.7%(88/240),闸是 13.3% |
| C4 转向 | ✗ | v33/v33b | 对准率 17.4% —— 本文第 6 节 |
所有评估都是 240 集批量精评(约 2 分钟一轮),所有判据预注册,所有 FAIL 如实入档。
1. 方向攻坚战:五个杠杆的完整证伪链
上篇结束时的事实:机器人 100% 走到球边、49% 的集碰球,但被推的球方向接近随机。我们连打了五个杠杆,全部证伪——而每一次证伪都排除了一类假设,最后剩下的那个解释才是真相。
杠杆一:目标侧绕后(几何直觉,失败)
足球教练都教过:“踢球前先站到球的后面。” 我们让教练层在远球时追"球→门线延长 0.7m"的绕后点。方向命中率 0.8%(基线 2.5%)——没动。
杠杆二:线坐标切换(几何精化,失败)
发现切换时机用"到球距离"会切角(离门线 0.5m 就斜推),改成严格的线坐标切换(在球后方且侧偏 <0.5m 才切入推球)。探针验证几何完全正确。方向 0.4%——还是没动。
几何两次全败,说明问题不在几何。
杠杆三:算一笔账,抓到"推-追老虎机"
把奖励经济学摊开算:
- 接近势能项 40×Δd:把球推开 2.5m → 球滚走 → 追回 →这一来一回白拿 +100
- 朝门推 2m 的方向差分:prog 项 +10
追球比朝门推球赚 10 倍。势能奖励"接近就给分"的标准性质只对静态参考物成立(telescoping),球会动,它就变成了补贴"推了再追"的老虎机。撤掉接近项(v17),方向立刻从 0.4% 回到 2.5% 基线。
这是上篇"驻营露营"的姊妹课:** camping 是"给接近发钱"的病,churn 是"给接近发钱"的病在可动物体上的变体。同一个奖励语义,两种病。**
杠杆四:接触纪律(diag 诊断驱动,方向开始动)
写了个接触瞬间分类器,把每次触球按"是否在门线上对齐"分成两类,跑了 8 集 39 次接触:
编排推(对齐后推入): 62%,推向门 cos +0.68(88% 高质量) 路过碰撞(斜着蹭到): 38%,推向门 cos −0.39(主动抵消)净方向得 ≈ 0.62×0.68 + 0.38×(−0.39) ≈ +0.27——38% 的路过碰撞把 62% 的好推给抵消了。修复很朴素:近球(<0.9m)且未对齐时,前进速度降到爬行档(0.05 m/s),不碰就不碰。方向命中率 16.2%——首次越过 15% 的闸。
杠杆五:爬行幅度(单调权衡轴的发现)
爬行 0.2 m/s:方向 57.1%;爬行 0.3 m/s:方向80%。但跌倒率单调恶化(35% → 92% → 98%)。最终配平(叠加超速惩罚、摔倒罚分等两个被证伪的旁支后)落在 v26:方向 88.3%、向门位移中位 5.5m、射门 23 球。
方向战役的完整弧线:7.5% → 16.2% → 57.1% → 80% → 88.3%。转折点不是某个奖励权重,而是"接触纪律"这个行为语义——让机器人学会不碰不该碰的球。
2. C6 接球:拦截点教练,一发入魂
课程下一级是接球:球以 1.5-2.5 m/s 从 3-4m 外射向机器人(±1.2m 瞄准误差),要求 75% 的来球被停在机-球 1m 内。
新增两件套:
- 来球模式:reset 时给球初速(瞄准机器人 ±1.2m 随机误差);
- 吸收奖励:按每步球速下降量计价(
STOPK × max(0, Δ球速 − 0.011 摩擦地板)),只在接触瞬间给钱,不乘 dt。
v27 首战 62.9%(停球中位 0.69m),v28 把吸收奖励加倍只买 +2.5pt——激励边际递减。
然后是本日最优雅的一发:拦截点教练。原教练追球的"现在位置",接球的正解是迎向球"将要到达的位置":
ball_coach=ball+bvel*0.6# 前置 0.6 秒的预测交点v29:stop 90%,停球中位 0.36m。65% → 90%,一轮解决。几何正解 vs 参数微调,差距就是 25 个百分点。
3. C7 劫球:同一套机件的迁移
劫球 = 来球改为横穿(瞄准偏移 ±3m,球从身侧掠过,8 次采样 5 次不碰身)——机器人必须主动移动去拦截。拦截点教练机件原样复用,只把前置时间从 0.6 提到 0.8(横穿球需要更早转向)。
v30 首战 72.9%(差 2.1pt),v30b75.4% 达标,拦截中位 0.39m。
教训:好的任务分解会让技能免费迁移。C6 的"迎向预测交点"就是 C7 的"沿路径拦截"——课程设计时值得为迁移而设计。
4. C8 射门:专训分布陷阱与 50/50 混合解法
v26 时代射门已经有 23/240(9.6%)——带球的副产品。C8 的闸是 13.3%。看起来只差一步,我们做了一次"射门专训":把球门拉近到 4-7m、球放在机器人-门线上(bg 1.6-5.2m 的直射练习位)。
v31 结果:射门 30 个(+30%),但标准分布上 approach 从 62% 崩到 14.6%——只练过"球在门口"的场景,长距离追球序列废了。这是课程学习文献里最经典的专训灾难在我们手上的复现。
解法是教科书级的:50/50 混合分布(一半集射门练习位,一半集标准分布)。v32:
标准分布评估: shoot 88/240 = 36.7%(闸的 2.3 倍) dir 87.9% / 触球 100% / 向门位移中位 6.85m 全部保持教训:课程分布要么渐进混合,要么别用。纯专训分布是给通用技能挖坑。
5. C4 未竟:一次"蟹行"发现
C4(跑中转向换向)两次 FAIL(对准率 18% → 17.4%),但诊断挖出了一个设计层面的金矿。
先量物理:换向航向跳变中位 84°,而 H1 实际转向率只有~0.12 rad/s(3 秒转 21°)——对 84° 的跳变,"3 秒内朝向新目标"物理上不可行。把换向角限制到 ±45°(锥形重采样)后,<45° 跳变的对准率实测 86%——物理不再是瓶颈,判据还是过不了。
再挖一层,真正的缺口是:导航奖励只付"距离进度",策略学会了侧移(蟹行)到位——它把球追到了、任务完成了,但全程没有一秒是"脸朝目标"的。"朝向新目标"这个判据语义,在奖励函数里没有任何承载。C3 能过是因为判据只看距离;C4 的判据看朝向,蟹行立刻现形。
这不是 bug,是任务语义与奖励的对齐缺口。三个候选修法已预注册:①cur 模式加朝向对准奖励项;②C4 判据改为到达语义(朝向另列观察指标);③对 DR 底座扩 ω 包线重训(0.12 rad/s 的转向率本身就是底座训练分布决定的,历史测量还受过上篇那个 yaw 公式 Bug 的污染)。
6. 更新版教训清单(在上一版六条之上)
- 奖励语义要覆盖判据语义。判据说"朝向目标",奖励里就必须有朝向项——否则策略会用最便宜的等效行为(蟹行)绕过你的判据。所有"看起来该会"的行为都要问一句:哪一项奖励在为它付钱?
- 势能奖励只对静态参考物成立。参考物会动(球、其他智能体),"接近就给分"立刻变成追逐循环的补贴。
- 课程分布要混合,不要纯专训。专训分布带来的技能增益(+30%)远小于它摧毁的通用技能(-74%),50/50 混合一轮两全。
- 几何正解 > 参数微调。接球从 65% 到 90% 靠的是"追预测交点"这个几何修正,而不是任何奖励权重的再平衡。先问任务的正解几何是什么。
- 行为分类器是最好的诊断仪。"每次接触分成对齐/不对齐两类"这一个统计,把方向问题从玄学变成了 38% 碰撞抵消的算术。
- 单调权衡轴要显式承认。爬行幅度 vs 方向 vs 跌倒是一条单调轴(0.05/0.2/0.3 三档全部实测),承认它之后才能在轴上找工作点,而不是假装存在免费午餐。
7. 已知限制与下一步
- 跌倒率 91-98%:已定谳为接触瞬间物理(踢击冲击对髋踝的扰动),奖励与教练侧均无法解。三条候选路:H1 起身技能(跌倒可恢复)、足姿预置(接触冲击缓冲)、换更抗冲击的任务语义。
- C2 定点 / C4 转向:前者需要把位置指令接口移植到物理球环境后重测;后者待第 5 节的语义决策。
- 大脑接管(S1):教练位
[vx, vy, ω]接口已稳定支撑六级课程,按项目宪法,下一步是把教练位交给 138,639 个神经元的果蝇全脑——足球线现在的六级成绩单,就是大脑接管时的基线。
上篇:《RL 让人形机器人学踢球:13 轮实验、三次仪器级 Bug,触球率从 0 到 100%》。实验环境:mujoco_playground H1JoystickBall + Brax PPO。22+ 变体、全部负结果与预注册判据随仓库入档。