外观
小桥:T800 风格 AMP 行走学习
2026-10-20。本地自制学习实验:当前小桥 URDF、归一化惯量、碰撞和 PD 参数未经过实机辨识,可能与实机差距很大。没有建立官方小桥仿真/实机基准,不作为上机策略。
视频复盘更新: 失败录像、原因与修复验证已单独整理,区分错误专家分支、直行改善和未通过的零速站姿。新T800 / 小桥正面前进对比待当前训练结束并独立验收后补录。
目标和来源
保留用户选中的 T800 步态风格,训练听速度指令的小桥行走策略。首先做前进、带前进的左右转和停步,不声称支持后退。
- 官方模型:EngineAI Native SDK,固定 commit
335c60e88772c26c7852d0abd6b3c7439037dd8f。 - 官方源策略:engineai_rl_lab,固定 commit
c53f7ec614e34f1ea514cefb935894082f3d4c2a。使用 T8002026-09-18_12-15-11/model_19999.onnx的实际 MuJoCo 运行轨迹,来源详见相邻t800_amp/。 - 小桥模型:既有
/home/z/bridge/robot_description/bridge_description/urdf/bridge.urdf,SHA-256f0411693eb0586eab4d27a9d027bbd619ca3050efa3a051491fcb9a3421c0805,本次未改模型、质量、力矩限幅或舞蹈基线。 - 训练:现有 mjlab + beyondAMP 的 mjlab 后端与 AMP/PPO runner;小桥任务、重定向、终止处理、评估由本地适配。
没有直接将 T800 权重加载到小桥。 T800 源模型为 25 个关节,策略控制 23 个;小桥为 21 个,四自由度臂使用实际轴线做 IK。此处是新的小桥训练,也不是众擎原始 Isaac Lab 配方的原样复现。
已完成:运动学参考
retarget.py 从 T800 实际 rollout 提取稳定段:直行 16 秒、左转 4 秒、右转 4 秒,100 Hz 源轨迹重采样到 50 Hz。
- 按实际髋—膝—踝轴线链长缩放,比例约 0.45969;保持原步态时间节奏,直行平均约 0.267 m/s。
- 使用两边实际模型 FK,约束小桥脚底接触包络位置/方向、肘和手的位置。按上臂/前臂分别缩放,保留肩胯和摆臂配合;丢失的末端旋转自由度不强行复制。
- 有界 IK 加连续性正则,小幅滤除 IK 数值噪声,并重新贴地;每条片段独立采样,不跨片段端点拼接。
- 所有关节在限位内,直行/左右转参考均未发现超过 1 mm 的基础碰撞体穿插;最大关节速度约 6.91 rad/s、相邻帧最大变化约 0.138 rad。数值只针对当前模型与几何,不证明动态平衡。
*_amp.npz单独保存相对默认姿态的关节位置,匹配运行时 AMP 观测;原始*.npz保留绝对关节角、完整 FK、源轨迹和默认姿态。训练前核对关节顺序、偏置和帧率。
完整对比视频:T800 → 小桥运动学参考。右侧仅是运动学参考,尚不能看作训练效果。
自己打开小桥参考:
bash
bash /home/z/bridge/rl/bridge_amp/preview.sh训练配方与当前状态
策略 actor 输入 360 维:角速度、投影重力、相对关节角、关节速度、上一动作、速度命令,各保留 5 帧。critic 另有基座速度和足接触信息。21 个动作是相对默认姿态的关节目标,经既有工程 PD/armature 和模型力矩限幅执行。
AMP 采用 beyondAMP 的两状态转移判别器,每帧 42 维(21 相对位置 + 21 关节速度);判别器 256×256。它与官方 T800 的 10 帧判别器不同,是当前学习移植的简化起点。PPO actor/critic 均为 512×256×128。风格奖励系数 0.5,任务混合比例 0.7;无策略暖启动或旧权重加载。
控制 50 Hz,物理/PD 400 Hz;命令为前向 0.22~0.34 m/s、yaw ±0.35 rad/s,10% 零命令。训练用 80% 行走参考状态初始化加速学习;独立验收从中立站姿开始,不靠参考初速度维持行走。当前先用名义动力学,未加参数随机化、推力或传感器噪声。
AMP 终止处理单独适配:先拿到真实摔倒/超时状态的 AMP 观测,再重置结束的环境,避免把复位后的站姿误当作摔倒瞬间。
- 128 环境、3 轮预检通过:PPO、判别器、采样和保存正常;该权重仍会摔倒,不是训练成果。
- v1 早期实验已停止:使用直行/转向参考并额外混入静止站立样本。第 100 轮中立起步测试能存活 20 秒,但实际平均 vx 约 0.00028 m/s,属于“站稳但不走”,未通过行走验收。保留日志、权重和失败证据。
- v2 已停止并保留:移除静态专家,但第 100/300 轮的中立起步平均 vx 仍约 0.00013/0.00092 m/s,未通过行走验收。随后在本地接口中复现了部分复位重复推进全体观测历史的缺陷;不将移除静态样本称为已解决问题。
- 当前 v3:继续只使用行走参考;修复为原生 auto-reset,在 pre-reset 钩子捕获真实终止 AMP 状态,不再调用额外的
env.reset()。4096 环境、3000 轮,从随机 actor/判别器从头训练,未加载 v1/v2 权重。实际 run 见training_job.json、latest_run.txt。现已完成3000轮,最终整体验收未通过,详见下节。 - 接口集成回归检查:旧代码中,单独复位环境0会在零物理推进下将健康环境1的历史改变约0.01948 rad;新代码强制环境0翻倒后,健康环境历史只推进一次,误差0,终止 AMP 状态与复位状态可区分。证据为
history_audit_before.json/history_audit_fixed.json,可运行check_history.py重查。修复后128环境3轮完整训练预检通过。 standing_amp.npz仅保留作历史/偏置检查,当前 v3 不将其作为 AMP 专家样本。没有因为存活满 20 秒就声称已经学会步态。
查看当前训练日志:
bash
tail -n 80 -f /home/z/bridge/rl/bridge_amp/train_t800_style_v3_4096.log看真实策略,而不是参考动画
bash
bash /home/z/bridge/rl/bridge_amp/play.sh读取当前 run 最新已保存权重。W 前进、A/D 带前进左/右转、S/空格停步;Ctrl+C 退出。训练早期权重可能只站着或摔倒,不作为验收。指定已保存权重可用 --checkpoint /绝对路径/model_100.pt。
独立验收:
bash
/home/z/bridge/rl/BoosterT1mjlab/.venv/bin/python \
/home/z/bridge/rl/bridge_amp/evaluate.py --checkpoint /绝对路径/model_3000.pt \
--num-envs 16 --duration 20 --render四项检查:停步、0.28 m/s 直行、带前进的 ±0.25 rad/s 转弯。中立站姿起步;每批在首个失败时停止,部分幸存者不记为完成。报告同时给速度 RMSE、实际平均速度、最低机身高度、最大倾斜。名义重复环境不等于多种子鲁棒性测试;外观是否达到目标风格还需观看。
finish.py 是本次训练的一次性后处理:训练完成标记出现后自动跑上述检查和完整动态录像,输出到当前 run 的 evaluations/model_3000/。若训练提前停止,则记录未完成,不把部分 checkpoint 当最终结果。不会发消息、部署实机或自动宣布风格验收通过。
v3 最终结果:未通过,不作为基线
最终权重:logs/2026-10-20_11-38-04_t800_style_v3_fresh_4096/model_3000.pt,SHA-256 e6d797f9fcdccacddd22392c90a82c275a1c6e159426219ab64a6dc339500cb4。4096环境、3000轮,总训练294,912,000步,约83分钟。
- 中立站姿起步、不自动复位;固定前进/左转/右转各16环境均完成20秒。它们是名义条件下的重复环境,不是多种子鲁棒性验证。
- 前进目标0.28 m/s,实际平均0.187 m/s,速度RMSE 0.0945 m/s;零yaw命令时平均yaw速度-0.0544 rad/s,仍有右偏。
- 左转目标+0.25 rad/s,实际+0.118;右转目标-0.25,实际-0.238。左转响应偏弱。
- 零命令站立在11.36秒首次失败,环境7基座高度降到0.267 m。录像只保存环境0,不能将
stand.mp4当作环境7倒下的画面;未单独测行走后停步转换。 - 真实动态轨迹中步态幅度缩水:去掉前2秒,左右髋pitch摆幅约6.7°/6.3°,参考约37.1°/31.5°;肩pitch约6.6°/5.8°,参考约26.5°/22.2°。脚底碰撞盒最低点最高离地约6.5/6.4 mm;画面更像贴地碎步,未达到目标风格。几何离地/脚心速度只是运动学诊断,不替代接触力或滑移测量。
真实前进录像 · 四项指标 · 步态几何检查。权重和失败证据保留,未启动新训练,未列入已接受基线。
指定最终权重交互观看:
bash
bash /home/z/bridge/rl/bridge_amp/play.sh --checkpoint /home/z/bridge/rl/bridge_amp/logs/2026-10-20_11-38-04_t800_style_v3_fresh_4096/model_3000.pt后续顺序
先确认能走、能按命令转/停,再对照参考检查步幅、腿部伸展、摆臂和肩胯节奏。需要时针对问题另开版本,明确哪些配置改变,不靠增加轮数掩盖任务/数据问题。后退、抗扰、参数随机化与实机验证分别建实验;小桥正式实机扩展仍先依照官方建立基准。
仓库内证据
完整16秒运动学参考 · 旧接口复现 · 修复后集成检查 · v2第300轮仍未行走 · v3任务状态。v3训练已完成;最终指标与评审记录显示整体未通过,目标风格未达到,不列入已接受基线。
2026-10-20 后续:v4姿态诊断与重新训练
第4000轮无复位测试中,直行目标0.28m/s、实际约0.274m/s,直行双膝保持正向;但零命令站立时双膝约−28°/−31°几何弯曲,停步后再次反向。yaw训练范围为零,额外左右转诊断未能跟踪正确方向。旧训练已停止,最后保留model_4400.pt,不列入正常站立/启停基线。
新run为2026-10-20_17-44-53_t800_v4_stand_turn_fresh_4096:4096环境、6000轮、随机初始化,不加载旧或预检权重。复用mjlab原生variable_posture奖励及JointPositionActionCfg.clip;关节目标范围由FK零位偏差加正向余量得到,没有修改机械限位或模型。增加正确分支的100Hz左右转参考及±0.35rad/s训练指令。
CPU/GPU回归检查和128环境30轮流程预检已通过;这只证明修正接口可运行,不代表实际动作通过。评估已补齐站立/启停的膝盖几何、默认姿态误差,以及转向方向与yaw误差。训练后的动态结果尚待验收。完整本机资料在/home/z/bridge/rl/bridge_amp_v4/。