外观
小桥 AMP:行走版本保留与自然停站优化
2026-10-20。行走版本已由用户选择保留,停站姿态单独优化。 小桥使用本地 CAD 派生模型和估算动力学;结果限于仿真,没有建立官方或实机基准。
保留的行走版本
4096 环境、6000 轮,100 Hz 策略 / 400 Hz 物理。检查点为 2026-10-20_17-44-53_t800_v4_stand_turn_fresh_4096/model_6000.pt,SHA-256 db996d1541fffc942fb9b7778e7c424466763187489af5cce2615aa1b4104416。已在本机 rl/baselines/bridge_t800_amp_v4_6000/ 单独保存,后续优化不覆盖它。
用户反馈行走表现很好,要求只继续优化停下来的姿态;这不等于已经接受停止瞬态或任意场景的鲁棒性。
- 直行目标 0.28 m/s,平均 0.28094 m/s,前向 RMSE 0.01043 m/s。
- 左转目标 +0.25 rad/s,平均 +0.21453;右转目标 −0.25,平均 −0.24514 rad/s,转向方向检查通过。
- 单独零速站立、直行、启停、左右转五项各 16 个名义环境完成 20 秒,无自动复位、无倒地;这些重复环境不是独立多种子鲁棒性试验。
- 原版单独站立最后三秒左右膝几何弯曲约 +3.15° / +2.13°,已消除上一版持续反弯。启停的局部问题见下节。
与 T800 的正面前进对照
两侧均为真实策略运行后保存的动力学轨迹。T800 是官方模型、官方 ONNX 加本地推理播放器;小桥是本地模型和自行训练的 AMP 策略。没有把重定向动画放在右侧,也没有把 T800 权重直接载入小桥。
完整 20 秒、原速、50 FPS;两侧视图按各自身高缩放。T800 指令 0.65 m/s,小桥 0.28 m/s,约相差本体尺寸比例;这是风格对照,不能作为同速度或同尺度的性能排名。没有按步态相位调整时间,也没有插值姿态、裁剪或循环拼接。来源与哈希见渲染清单。
修正前:急停和停住后的姿态
2 秒开始前进,12 秒将指令瞬间从 0.28 m/s 改为零。实际保存轨迹中,右膝在约 12.07–12.18 秒短暂反向弯曲,最低约 −9.36°;随后恢复,末段速度接近零。站稳不等于停止瞬态合格。
停住后的肩部 roll 相对默认站姿约向内偏 18.6°,双臂与躯干呈收紧姿态。这里“绷紧”描述姿态观感;没有凭录像推断电机增益、力矩或人体情绪。原生姿态项按全部关节的平均归一化误差给奖,0.18 rad 的肩部容差仍允许局部偏差;这些配置事实不能独立证明全部成因。
逐阶段膝角。当前 URDF 和控制目标限幅均不能代替真实几何角的检查。
优化方法与边界
首先检查现成实现:EngineAI SDK 的 PdStandRunner采用目标站姿和五次插值;现有 mjlab 使用原生 variable_posture,随命令切换姿态容差。
已拒绝的上肢覆盖候选
尝试冻结策略、只把上肢目标平滑归回默认姿态,4 环境预检出现失稳:单独站立批次约 3.43 秒首次失败。该方法改变了策略观测—动作反馈,不能因为单独插值平滑就认定全身安全,已拒绝部署。日志和失败指标保留,不对外称作成功的停站修复。失败证据。
这段录像来自启停试验的环境0,该环境在约3.87秒失败;编码时按50 FPS取样,共194帧、3.88秒,差异来自帧率取整。它不是单独站立批次中其他环境的失败画面。
第一轮:全身指数姿态项微调,未采用
第一轮微调保持全部 21 个关节由策略控制:用原生姿态奖励做独立微调,将零速肩/肘容差从 0.18 改为 0.08 rad,姿态项权重从 1 改为 3;行走容差仍为 3 rad。模型、关节轴线、物理步长、PD/力矩限制和三段专家保持原样,不以修改模型掩盖停止问题。
微调以保留的 model_6000 为起点,加载 actor、critic、AMP 判别器和归一化统计;因奖励目标有变,重新初始化优化器。4096 环境、600 轮,初始 PPO 学习率 1e-4、熵系数 0.002,使用原训练后端、原生 RSL-RL 终端日志和 TensorBoard。它不是从头训练,也不是原训练无差别续跑;完整来源和变更应与结果一同保留。
停止命令另用 0.4 m/s² 的线减速度、0.8 rad/s² 的角减速度渐变到零。它是本地部署输入适配,仍由策略输出全部关节目标;不覆盖姿态或回写 qpos。单独用原权重验证该减速适配,右膝的大幅逆弯未再出现,但左膝仍有约−2.37°的短暂逆弯,不能判定已经解决;对照指标证明仍需独立检查修正版,而不是只改输入平滑。
停站修正版验证
第一轮600轮微调已经完成,未采用:五项名义评估均未倒地,但平缓停止仍有约−9.55°的左膝短暂反弯;末段双肩roll偏差约+18.82°/−18.47°,没有改善用户指出的收肩问题。站立、前进、转向的存活不能代替自然停站验收。完整报告。默认播放器继续使用已保留的原model_6000。
第二轮沿用legged_gym的stand-still项:零指令时惩罚关节偏离默认站姿的L1和。这里通过现有命名关节接口做薄适配,零指令判据同时检查yaw;不是重新设计训练器或平衡控制器。
第二轮恢复原生姿态项的基线权重/容差,只增加零指令stand-still项(权重−2);站立采样比例由10%提高到30%,指令重采样改为3–6秒,增加停站转换经验。以原model_6000为起点独立微调400轮、4096环境;目标是避免指数姿态项对局部偏差的饱和以及运动阶段常量回报的影响。这是待验证的实验假设,不提前宣布修复。
第二轮最终结果:400/400轮完成,未采用。 五项各16个名义环境、20秒均未倒地,直行平均0.27501 m/s,左右转平均约+0.25270/−0.19837 rad/s。启停仍有短暂逆弯,右膝最低约−7.63°、左膝约−1.44°;末段双肩roll相对原参考站姿约+14.49°/−18.33°,未明显消除用户指出的收肩。单独站立的几何/最大姿态误差检查也未通过。不能将第100轮的单独站立通过扩大为最终策略验收。
最终五项报告 · 训练设置 · 最终日志摘要。该轮约9分50秒,保留全部检查点和原生日志;没有设置为默认播放器,也没有覆盖用户认可的原行走版本。
当前默认及公开视频中的行走版本仍为原model_6000。停止后的普通站姿优化尚未完成,不因训练结束或五项存活而写成成功。
目标姿态与实际停姿的区分

上排是静态运动学姿态:左为当前参考默认站姿,右为保留相同腿部姿态、仅将肩/肘关节置中立位的候选;右上不是已训练结果。下排分别是原策略与本轮L1策略实际停步后的末帧。原生关节状态与保存qpos的逐元素最大误差为0,排除了此次姿态差异由渲染时关节顺序错配造成。下一项应先明确自然停站目标,再单独验证动态转换;本次不继续无目的增加训练轮数。
复现与观看
保留版命令:
bash
bash /home/z/bridge/rl/bridge_amp_v4/play.sh \
--checkpoint /home/z/bridge/rl/baselines/bridge_t800_amp_v4_6000/model_6000.ptW 前进,A/D 带前进转向,S/空格停步。是否启用减速适配须按修正版验证记录明确区分;不将视频渲染当成新一轮训练或实机运行。