Tracking 与 Physics Adapter
最后更新:2026-07-24。
本页负责当前 tracking CLI、adapter 边界和工程排错。当前 direct mainline 只支持 protomotions 与 phcx;shared residual refiner 位于 legacy,RePHO/InterMimic/OmniGrasp/GRAIL 使用各自实验 adapter。teacher 研究比较见 Physics Teacher Selection。
Direct tracker
python tools/run_refiner_tracking.py \
--motion <case>/motion.npz \
--layout-json <layout.json> \
--out-dir <tracking_output> \
--backend protomotions \
--scene-mode physics
参数:
--backend protomotions|phcx;--scene-mode physics|none;physics必须提供 layout;--checkpoint可显式覆盖默认 tracker checkpoint;--max-steps只用于 bounded smoke/diagnostic;--force允许重跑目标目录。
mainline 直接执行:motion contract → conversion → physics scene → tracker → metrics。它不读取旧 case manifest 来驱动 control flow。
Baseline-specific entrypoints
| Family | Entry point | 说明 |
|---|---|---|
| InterMimic project | tools/run_intermimic_baseline.py |
human/object/contact full-reference |
| InterMimic native | tools/run_intermimic_native_single.py |
upstream native reproduction |
| OmniGrasp | tools/run_omnigrasp_baseline.py |
object-centric pretrained control |
| Strict OmniGrasp | tools/run_strict_omnigrasp.py |
current contract diagnostic |
| ResMimic-style | tools/run_resmimic_strict_phcx.py |
frozen PHC-X + residual family |
| GRAIL | tools/audit_grail_minimal_preflight.py 等 |
gate 未完成,不得直接训练 |
| RePHO | 尚无 PhysHSI entrypoint | official source 仅已拉入 |
每个 baseline 的命令以其 canonical experiment 页为准,不把表中“入口存在”解释为 result。
强制 contract
Body shape
converter、simulator asset、mesh evaluator 和 reference 必须使用同一 SMPL-X beta/shape identity。旧 adapted result 若 shape mismatch,只能作为历史诊断。
Coordinate
- source motion、SAGE layout、AMASS/PHC-X 与 simulator frame 的 transform 必须显式;
- native Z-up/yaw convention 不通过视觉猜测;
- body/joint mapping 按名字校验 set、uniqueness 和 round-trip;
- object/support spawn 与 motion 的
scene_origin_xy一致。
Geometry
- target object 使用 layout 的 exact mesh/collision;
- dynamic object mesh 不从
motion.npzfallback; - support/scene mode 在配置和结果中记录;
- bbox 只可作 coarse diagnostic,不替代 final HOI geometry。
Legacy
src/refiner/legacy/ 保存早期 SOMA dataset、case runner 与 shared residual smoke。当前 src/refiner/pipeline.py 不依赖这些模块。若重新实现 shared refiner,应从当前 canonical motion/domain API 接入,不恢复 manifest-as-state。
排错顺序
validation.json是否通过输入 gate;- body-shape identity 是否一致;
- object id、mesh、mass 和 support 是否正确;
- frame transform、spawn XY 与 heading;
- converter field/joint mapping;
- deterministic short smoke;
- telemetry completeness;
- 最后才调整 reward 或训练预算。