外观
从训练日志到动作验收
非官方学习记录:小桥模型、重定向、训练配置、策略和评估均为我们本地自制/适配,可能与实机存在很大差距。现有结果只作学习对照;后续先按官方建立基准,再扩展。详见 官方基准路线。
更新:2026-10-19。用已经做过的 T1 / 小桥实验理解日志,不给所有任务套一个“奖励到多少就收敛”的阈值。
先区分三个画面
- 参考动作预览:逐帧设置 qpos,用来检查重定向;可以看起来非常稳定,但没有控制策略在维持平衡。
- 策略动态回放:策略输出关节目标,PD、电机限制、重力与接触共同决定真实仿真运动。
- 训练窗口:多个环境可以从不同参考相位初始化,失败后自动复位。它便于看学习过程,不等于完整片段验收。
小桥当前 preview_*.sh 主要是第 1 类,play.sh --checkpoint ... 是第 2 类。保存的 dynamic_tracking.mp4 来自实际动态 rollout。重复播放一个录像循环,不能算机器人连续通过多个循环。
控制语言里的 RL
观测 o_t 是给策略的输入,例如关节状态、基座姿态/角速度、上一拍动作、命令/参考;不保证是完整真实状态。训练 critic 可能使用比 actor 更多的特权量。拼接传感器不自动保证完成了可靠的状态估计。
当前小桥策略输出 21 维关节位置动作,经动作比例和默认姿态偏置形成目标,再由 PD 驱动。当前配置 action scale 为 0.5;物理步长 0.0025 s、decimation 8,因此动作/参考为 50 Hz,仿真积分为 400 Hz。这些是本实验设置,不是真机驱动周期规格。
tracking 仍然通过环境交互最大化奖励:靠参考误差引导学习。ACT/Diffusion 等使用操作示范学习视觉行为,是后续另一类实验;“模仿学习”这个词不能替代具体训练方法。
终端字段怎么读
Learning iteration:采样和更新的一轮;model_2999.pt对应这里的 3000 轮预算,不是训练时间长度。Total steps:累计并行环境交互步数,不是物理仿真子步数。当前两项 4096 环境训练均到 294,912,000 步。Steps per second、collection/learning time:吞吐和瓶颈,说明训练快慢,不说明策略好坏。Mean reward:当前任务定义下的回报统计;奖励项/权重/归一化/回合长度改变后不能直接横比。Mean episode length:平均存活/执行步数,乘控制 dt 可换算时间;需要区分 timeout 和失败。跟踪中途随机起点的长回合也不等于从头完成。- value loss:价值函数预测误差;不要求严格单调下降,也不是身体姿态误差。
- surrogate loss:PPO 的策略优化目标统计,正负号受实现约定影响;不以接近 0 判定任务成功。
- entropy / action std:探索分布的统计。下降不保证学会,维持某个值也不代表没收敛。
Episode_Reward/*:每个奖励项贡献,常已含权重与 dt;先看代码再解释单位和绝对值。Episode_Termination/*:终止原因的聚合日志;可能经过回合时长缩放,不要直接把显示的 2.0 当成“200% 概率”。
“站得稳但不迈步”要同时查命令、实际速度、脚接触/腾空和奖励取舍。只根据总奖励或剩余迭代推断训练不足,容易浪费训练时间。
怎么判断该停训
固定同一个参考、模型和测试协议,在多个 checkpoint 上比较:完整片段完成率、身体/关节误差、困难片段、脚底表现和控制饱和。如果后几次检查任务质量稳定且达到预先标准,可以停止;如果只是总奖励变平,仍需要独立回放定位失败。
随机初始化和参考采样的变化可能让训练曲线起伏。比较不同 run 应尽量固定预算、种子和验收任务;改变奖励后,优先看相同物理指标,不能用新旧总奖励证明改动有效。
当前小桥的固定评估协议
来源:/home/z/bridge/rl/bridge_tracking/evaluate.py;历史结果以 run 内保存的源码/报告为准。
- 32 环境,seed 42,从参考第 0 帧跑到末帧;首次失败后不再将该环境后续复位样本计为成功。
nominal:确定的参考起始状态。相同初值的 32 个环境不能当作 32 种不同场景。perturbed:小幅随机根位置/方向、关节位置和初始速度;具体范围在脚本中。kick:第 200 个控制步(4 秒)施加 0.2 m/s 水平根速度增量,各环境方向不同。它是模拟速度冲量,不是测量过的实机外力推搡。- 误差统计排除最初 25 帧,并只计首次失败之前的有效样本。
- 身体误差使用 tracking 定义的根/朝向对齐参考,不是全球定位误差;关节 RMSE 用度表示。
- 脚底速度根据参考支撑标签统计,尚不是按真实接触力测得的足底滑移。
- 完成率、失败原因、观察到的摔倒和局部末端姿态要一起看。
2 Phút Hơn 的 5.3 秒单循环有 266 个样本(包含重复端点)。六循环训练参考为 1591 个样本:首尾时间跨度 31.8 秒,评估逐步计时为 31.82 秒。两种口径都要写清。
为什么必须看局部片段
江南 Style 早期实验曾全程不倒、完成率很好,但最后几秒手臂明显翻转。全局关键点平均误差会稀释局部错误,身体点位置也未必约束前臂朝向。因此增加末段前臂姿态审计,再修参考分支和平滑,重新训练 v3。
2 Phút Hơn 的 v2/v3 匹配或增加了横移/侧倾范围,但用户仍认为 v1 更像扭胯。原因包括骨盆与上身相位关系,峰峰值不包含相位信息;v4 单独增加腰 yaw 也未获用户认可。数值合法、幅度更大和动作更好看是三个不同判断。
保存哪些东西
至少保存训练命令、参数、模型哈希、不可变参考快照、源码快照、checkpoint、完整评估报告、动态视频和用户选版。训练后的参考文件不要悄悄替换;回放优先显式指定 checkpoint,由该 run 找自己的参考。
当前本地学习参考的实际命令见 小桥实验记录。本页描述验收方法,没有为未知任务规定通用成功阈值。
与官方基准的区别
本页协议由我们自行定义,只用于自制模型上的学习对照。后续官方基准应先使用官方指定模型、配置、任务和部署流程;本页的通过率、阈值与仿真扰动不能代替它。视频同样标明非官方学习身份,见 视频记录。