外观
AMP 行走失败复盘:小碎步、膝盖分支与零速站姿
更新:2026-10-20。以下全部是本地小桥派生模型上的仿真实验。每段视频关联具体权重与指标;“修复措施已实现”和“完整策略已验收”分别记录。
v3:能前进,但没有目标步态
现象。 4096 环境、3000 轮后的 model_3000.pt 能前进,但像贴地小碎步。目标 0.28 m/s,实际均速约 0.187 m/s,速度 RMSE 0.0945 m/s。左右髋 pitch 摆幅仅约 6.7°/6.3°,参考约 37.1°/31.5°;脚底几何最高离地约 6.5/6.4 mm。独立零命令测试在 11.36 秒出现首个失败,因此整体验收不通过。
这里的视频是完整 20 秒前进轨迹、环境 0。站立失败发生在另一项测试的环境 7,不能把前进录像或环境 0 的站立画面标成环境 7 倒下的证据。
排查依据。 对照官方 T800 配方与本地实现,确认:
- 官方策略周期为 100 Hz、AMP 使用 10 帧历史并包含投影重力;本地 v3 为 50 Hz、两帧关节位置/速度。输入包含的时序与姿态信息不同。
- v3 足部滞空奖励权重为零。实际轨迹中的小摆幅与低离地高度由几何检查直接测得。
- 本地后端存在“用已归一化的数据更新 normalizer”的缺陷;梯度惩罚使用的坐标与判别器分类输入也不一致,且判别器与 PPO 共用自适应学习率。
这些是已复现的实现差异或缺陷,尚无消融实验确定每项对小碎步的独立贡献。也不能仅比较 0.5 和 7.5 两个奖励系数就判断风格奖励太弱:两边的 dt 缩放、混合方式和核函数不同。
处理。 后续 v4 对齐 100 Hz、10 帧历史与投影重力,修正归一化更新、梯度惩罚坐标和判别器优化流程,恢复有明确语义的滞空/滑移项,并增加独立的站立和启停检查。模型、动作映射仍按小桥的实际定义适配,没有直接套用 T800 权重。
验证结果。 后续修正参考的第 4000 轮直行目标仍为 0.28 m/s,实际约 0.274 m/s、RMSE 约 0.0125 m/s,直行膝盖方向正常;但站立与转向仍存在问题。该结果说明直行改善,不能称为整套行走策略已经通过。
v4 第一阶段:错误专家被学进了策略
现象。 旧 v4 的第 2400 轮权重可以存活并移动,但膝盖朝后弯。不能用存活时间、训练奖励或“关节坐标没超限”判断姿态正确。
已定位的数据问题。 原重定向主要约束笛卡尔足端目标,IK 在直膝附近跨入了反向弯曲分支。原 T800 轨迹没有这个问题:源动作逆弯占比为零,而旧小桥专家左右膝约 79.4%/78.2% 的帧出现几何逆弯。实际策略轨迹中约 86.4%/87.2% 的帧逆弯,和错误专家方向一致。这里没有逐帧对齐策略与专家,数据支持分支缺陷及其传播,不证明每一帧的相位因果关系。
修复。
- 使用实际 FK 的髋、膝、踝锚点和膝轴,测量有符号的几何弯曲角。
- 在重定向中选择前向膝盖分支;不修改动作节奏或通过替换 URDF 掩盖分支问题。
- 加入训练前的数据预检,检测到逆弯就拒绝启动正式训练。
- 考虑当前 CAD 模型约 −4.16° 的几何零位偏差,不能简单把“关节角大于零”当作充分条件。
已验证的修复范围。 新专家逆弯占比降为零;源帧与旧参考一致,只修正目标机器人分支。重新训练后,第 4000 轮直行轨迹也未出现几何逆弯。这一阶段修复的是专家分支和直行膝盖方向,尚未解决下节的零速站姿。
修正后直行的阶段诊断录像:
这仍是阶段诊断,不是最终 T800 / 小桥行走展示。证据:源动作、错误专家、策略与修正专家的几何检查 · 第 2400 轮记录 · 修正后第 4000 轮诊断。
v4 第二阶段:直行正确,停下来又变形
零命令站立,完整 20 秒:
站立 → 前进 → 停步,完整 20 秒。指令在 2–12 秒为 0.28 m/s,其余时间为零:
现象。 使用同一个修正参考后的第 4000 轮权重,直行膝盖方向正确;零命令站立仍出现约 −28°/−31° 的平均几何弯曲。行走后停步,最后三秒左右膝约 −36°/−31°,肩部也偏离默认站姿。即使不倒、速度接近零,也不是合格站姿。
源码中确认的约束缺口。
- 零命令时行走 AMP 风格奖励被关闭;正确的行走专家不能自动约束零速站姿。
- 当时没有针对正常站立姿态的专用约束,当前临时机械模型又允许负向膝关节坐标。
- 早期评估只对直行做了膝盖几何检查,漏掉站立和启停。
- 这轮训练的 yaw 范围为零。额外左右转测试属于分布外诊断,不能作为“已经训练过转向但失败”的同分布结论。
上述缺口与失败同时存在,尚未用消融分离每项贡献。不能笼统归因于“训练轮数不足”。
本次修复。 复用 mjlab 原生 variable_posture,根据速度命令切换姿态容差;站立时膝关节容差为 0.10 rad,行走时保留宽容差。利用原生 JointPositionActionCfg.clip 对缩放和默认位姿偏置之后的膝关节位置目标施加范围;范围依据 FK 零位偏差计算,未改 URDF 机械限位。目标限幅不是实际关节角的硬保证,仍需用轨迹几何验收。
同时增加前向分支正确的左右转专家和 ±0.35 rad/s 的训练指令。站立、直行、行走后停步、左右转分别检查;站立/停步还检查最后三秒的默认姿态 RMS/最大误差,转向检查方向与 yaw 误差。
目前验证状态。 CPU/GPU 回归与 128 环境、30 轮流程预检已通过。新 run 为 2026-10-20_17-44-53_t800_v4_stand_turn_fresh_4096,4096 环境、6000 轮,从随机权重重新训练。后续结果: model_6000 已完成五项各20秒的名义评估,单独站立不再持续反膝,行走/转向由用户选定保留;急停仍有短暂右膝反弯和收肩。新的停站优化与验证见后续记录。
证据:站立、直行与启停指标 · 分布外转向诊断 · 源代码约束缺口与几何汇总 · 修复预检。
下一段展示视频
已录制小桥 model_6000 与官方 T800 的完整正面前进策略对比。两侧都来自真实动力学轨迹,并标明不同指令速度、来源与缩放方式;不是运动学重定向动画。
录像来源与录制方法
失败录像为原始完整动态评估录像的复制,保留时间与指令字幕。各视频展示环境 0,不将其当作整批环境的逐一视觉证据。
两段已通过的舞蹈另见视频回放:本次使用验收时保存的 dynamic_policy 轨迹重新渲染正面单机器人画面,只改变相机、画布与编码,没有重新计算策略或重跑物理,也没有修改轨迹、插值、裁剪、变速或重新拼循环。江南 Style v3 共 1618 帧、32.36 秒;2 Phút Hơn v1 共 1591 帧、31.82 秒,均为 50 FPS。来源轨迹、权重与参考哈希见媒体清单。