GRAIL Minimal
最后更新:2026-07-24。
本实验负责一个条件:GRAIL-Min-SMPLX 是否能在不改变 GRAIL 核心 observation/reward/PPO 的前提下,将 G1/SONIC embodiment 替换为 SMPL-X/PHC-X,并完成 current pick–place tracking。当前状态是 fail-closed preregistration,尚无 GPU rollout 或训练结果。
完整 v15 preregistration 和历史 hash/gate 设计归档于 2026-07-24 GRAIL preregistration;本页只维护当前决策、真实 gate 状态和下一步。
目标与假设
假设:冻结 PHC-X 能提供 153D SMPL-X action prior,GRAIL policy 只需学习 65D meta action;task role 由 motion metadata 解析为 active_hand 与 active_support,不保留 upstream hard-coded right_hand/table。
唯一实验条件
GRAIL-Min-SMPLX 保留:
- GRAIL Isaac Lab manager runtime;
- policy/critic observation term、顺序、future horizon 与 corruption 设置;
- reward、termination、PPO、rollout horizon 和 motion resampling schedule;
- two-hand primitive 与 body/hand action composition;
- target/support object、mass 和 contact semantics。
只允许改变:
- G1 embodiment → SMPL-X;
- frozen SONIC controller → frozen PHC-X;
- hard-coded entity binding → task-driven semantic role;
- 完成上述替换所必需的 name-based permutation、reference conversion 和 action affine。
E0/E1/P0/P1/S0 只是同一条件进入训练前的顺序 gate,不是额外实验组。
Gate
| Gate | 证据 | 当前状态 |
|---|---|---|
| E0 static/config | config diff allowlist、checkpoint/RMS、USD、reference hashes | 旧 artifact 因 critical source 变化已失效,需重跑 |
| E1 replay | Isaac reference replay,frame 0 与 raw trace | 未运行 |
| P0 tensor/PD parity | processed target、robot target 与 PHC affine parity | 未运行 |
| P1 zero-residual rollout | closed-loop transition、22-body MPJPE、limits/collision | 未运行 |
| S0 smoke | 2 env / 1 iter / 24 steps | 被前置 gate 阻断 |
| T0/T1 train | 同条件不同 seed | 未授权启动 |
当前代码与测试证据
2026-07-24 12:35(Asia/Shanghai)在 .envs/sonic 复跑定向 suite:
PYTHONPATH=/mnt/data/PhysHSI:/mnt/data/PhysHSI/submodules/GRAIL/imports/SONIC:/mnt/data/PhysHSI/submodules/PHC \
/mnt/data/PhysHSI/.envs/sonic/bin/python -m pytest -q \
tests/test_grail_motion_resampling.py \
tests/test_grail_reference.py \
tests/test_grail_runtime_config_contract.py \
tests/test_grail_task_roles.py \
tests/test_grail_pairwise_contact_collector.py \
tests/test_grail_p0_parity.py
结果为 29 passed, 1 warning。trace_contract.py、E1 replay、P0 parity
collector/runner 和 pairwise contact collector 已存在并通过 CPU/unit contract
tests;这只证明实现级合同,不证明 Isaac runtime gate 或训练 outcome。
现有静态证据还包括:
- PHC-X checkpoint/RMS/primitive-0 能在 CPU 完成
2×2026 → 2×153finite output; - converted USD 曾实际加载为 52 bodies / 153 revolute joints;
- name-set、uniqueness 与 permutation round-trip 曾通过;
e0/preflight.json曾在 11:23 写出passed=true;此后trace_contract.py、P0/E1/collector 等 critical source 继续变化,所以该 hash-bound artifact 已按协议失效,不能继续标为 GO。
结果
当前没有可报告的 rollout、reward、completion、human/object tracking 或 contact metric;这些项全部为 Unavailable。
结论
- 已验证: 部分 reference/config/action 静态合同已有实现与测试。
- 待验证: runtime gate、closed-loop PHC-X parity、smoke 和训练效果。
- 不能支持: 当前不得写“GRAIL-Min preflight passed”或把它放入 teacher 排名。
待补证据
- 重生成 source/hash-bound E0 artifact。
- 依次运行 E1、P0、P1;每个 gate 保存独立 raw trace。
- gate 全通过后再运行 S0。
- S0 成功后才按预注册预算启动 T0/T1。