跳转至

Physics 评测指标

Physics 评测首先判断任务是否完成,再用人体跟踪、关节误差和接触指标解释成功或失败。训练 reward 不能 直接当作论文结果。

代码分层、统一配置、旋转/平移接口和旧 evaluator 迁移边界见 Physics Metric 统一架构

每个 scheduled case×seed 只有一个 rollout

每个预先列入清单的 case×seed 使用一个逻辑环境并执行一次评测。num_envs 只表示能够同时运行多少个不同 case×seed,不增加重复数,也不采用多次运行中的最好结果。每个 case 的 seed 集合必须在 manifest 中预先写明。

Crash、NaN、超时、缺少输出和提前终止都计为失败。连续误差只在真实运行过的帧上计算,同时报告有效 时长和有效帧比例。

独立 Progress 指标

先根据 GT/reference 轨迹把任务分成 Open、Close、抽屉拉出或推回等 movement phases。 对第 \(k\) 个 phase,令 \(q_{0,k}=q^{ref}_{a_k}\) 为该 phase 的 GT 起点, \(q_{g,k}=q^{ref}_{b_k}\) 为该 phase 的 GT 终点。以 phase final 为中心取一个可配置的奇数窗口 \(\mathcal W_k\)(默认总宽度 5 帧),先计算未截断进度:

\[ \tilde p_k = \max_{t\in\mathcal W_k} \frac{q_t^{\rm sim}-q_{0,k}}{q_{g,k}-q_{0,k}}, \qquad p_k=\operatorname{clip}(\tilde p_k,0,1). \]

这里取的是 final 附近局部窗口内的方向性最大进度,不是整个 phase 的 max-over-time。 对于 Close phase,分母 \(q_{g,k}-q_{0,k}<0\),因此取到的仍是沿正确关闭方向进展最多的帧, 而不是直接取数值最大的角度。窗口不能读取 valid_frame_count 之后的 padding。

一条 rollout 的 Progress 按 reference movement phase 的帧数加权:

\[ P_e=\frac{\sum_k n_k p_k}{\sum_k n_k}, \qquad n_k=b_k-a_k+1. \]

因此每个 phase 都从自己的 GT q0 重新计算,Open 和 Close 不会互相抵消。Hold 不参与。 Revolute 先 unwrap,prismatic 直接使用线位移;每段 progress 和最终 \(P_e\) 都是无量纲值。

Progress 是独立连续 metric,不参与 Success A 或 Success B。 Success A/B 继续只消费各自 配置声明的 completion、Human tracking、object-motion tracking 与可选 contact 条件。调整 final_window_frames 或 progress 聚合方式,不应改变 Success A/B。

其他正文指标

指标 说明
H-MPJPE 仿真人体与参考人体的关节位置误差
Rev. Error 转动关节的终点或轨迹误差
Pri. Error 移动关节的终点或轨迹误差
Contact Sustain 指定身体部位与指定物体部件保持接触的时间比例

物体根节点漂移、非活动关节漂移、跌倒、穿透、悬浮、失败阶段、运行时间和 GPU 时间放在附录。穿透和 接触只有在碰撞几何、单位和 collider pair 都经过检查后才能作为正式指标。

接触条件

接触判断必须知道“哪个身体部位接触了哪个物体部件”。只有手部总力或物体总力不足以证明正确接触。 在成对 collider 记录完成前,Contact-qualified success 和 Contact Sustain 只能作为开发指标; Full-horizon success 始终是独立 wrapper,不因 contact telemetry 状态而偷偷改定义。

汇总方式

  • 每个视频样本是一个统计样本,视频帧不是独立样本。
  • 失败样本保留在成功率分母中。
  • 连续误差同时报告可用样本数和有效帧比例。
  • 同一 CAD 的多个样本在置信区间计算时作为一组处理。
  • Revolute [rad] 和 prismatic [m] 指标分开汇总。

所有方法共同遵守的规则见 共同评测规则。指标选择的文献依据和其他备选方案保留在 Physics 指标调研记录,日常实验不需要先阅读该长文档。