HSI/HOI Physics Teacher Model 实验计划
日期:2026-07-11
方法调研与事实依据见:
0. 论文主线与本文边界(2026-07-24 clarification)
PhysHSI 的论文主线固定为:
SAGE task/scene
-> KIMODO generated kinematic HOI/HSI
-> physics refiner / full-reference teacher
-> executable teacher trajectories and actions
-> goal-conditioned state-based student
-> deployment with current state + sparse task goals
本文只负责中间的 physics refiner / full-reference teacher architecture selection。 这里比较 PHC-X/SONIC 类 human tracker、InterMimic/InterPrior/HOI-FHLI 类 HOI tracker、RePHO-style sequence refinement、from-scratch tracker和其他 tracking/optimization方案。
最终 student 不是 dense-reference tracker。它参考 InterPrior 的三阶段结构:
- full-reference expert;
- masked goal-conditioned variational distillation;
- state-based RL post-training。
最终dynamic pick–place的最小deployment setting只给object future goal state; 通用HSI/HOI版本可进一步使用TokenHSI-style task tokens、UniHSI-style Chain-of-Contacts或VLM-RMD-style relation goals。无论采用哪种sparse goal, dense human motion、dense object trajectory、reference action和reference contact sequence都不可见。teacher使用full reference只属于训练数据生成和 privileged supervision,不是最终policy的输入。
1. 实验目标
输入 KIMODO-generated reference HSI/HOI human/object trajectory,在真实 physics simulation 中生成可执行的 human/object rollout,并选择适合 PhysHSI 的 refiner / full-reference teacher architecture。选出的teacher必须输出可回写为 canonical refined motion的rollout、action和actual contact,供后续state-based student训练;它本身不是论文最终部署模型。
当前尚未确定:
- direct、latent 还是 residual policy;
- 是否使用 PHC-X 或 PULSE-X pretrained prior;
- residual 是否读取 base action;
- action residual 还是 latent residual;
- finger 是否追踪 reference pose;
- object/contact/scene 中哪些信息进入 actor;
- reward 使用哪种组合。
之前提出的混合结构只记作未验证候选:
Hybrid-H0 = frozen PHC-X
+ action residual
+ object/contact/scene observation
+ wrist-guided finger objective
它不是已经确定的 Ours。
2. 共同 Physics Contract
所有 baseline 必须满足:
collision_plan + SageGymSceneBuilder是 physics scene 的唯一来源;- baseline 不得额外创建官方
target、table、ground 或重复 obstacle actors; - physics actor 必须按 layout object ID 映射,不能依赖固定 actor slot;
- manipulated object 是真实 dynamic rigid body;
- policy 只输出 humanoid control action;
- reference 只用于 observation、reward 和 reset;
- 测试时不播放 kinematic object trajectory;
- 测试时关闭 virtual object controller 和其他 assistance;
- support object 使用 layout 定义的 static 或 fixed-base physics actor;
- human、object、scene 使用同一个 tracker-local transform;
- rollout trace 显式转换回 canonical world frame;
- 使用统一的 common renderer 和 metrics。
这部分与 policy architecture 无关,应先冻结。
2.1 统一 Kimodo SMPL-X Body-Shape Contract(2026-07-19,hard gate)
所有项目轨迹上的 adapted baseline 必须使用生成该轨迹的 Kimodo 人体形状,不能再把 reference pose 放到 beta=0 的 PHC/OmniGrasp humanoid 或 InterMimic 官方 omomo.xml 上执行。唯一 shape source 固定为:
submodules/kimodo/kimodo/assets/skeletons/smplx22/beta.npy
submodules/kimodo/kimodo/assets/skeletons/smplx22/SMPLX_NEUTRAL.npz
submodules/kimodo/kimodo/assets/skeletons/smplx22/joints.p
公共实现为 utils/tracking_adapters/common/body_shape.py:load_kimodo_smplx22_shape() 读取完整 Kimodo beta、计算 shaped v_template,并按 Kimodo skeleton 对齐22个body rest joints;reference_body_shape_fields() 将 beta[16] / v_template / body_shape_source / body_shape_hash 写入reference;validate_reference_body_shape() 在simulation boundary fail-fast,并且同时比较canonical Kimodo hash、beta和v_template,不能用“任意shape自己重算一个hash”绕过;apply_reference_body_shape() 是 PHC/OmniGrasp/ResMimic 的统一 builder 边界,write_reference_humanoid_xml() 是 InterMimic family 的官方 InterAct builder 边界。公共loader已经与 Kimodo 官方 SMPLXSkin(build_skeleton(22)) 数值对照:shaped v_template 最大绝对差为0,55个rest joints最大差为2.38e-7 m,parents完全一致。
Hand pose 另有一个代码级 hard contract:canonical pose_hand[T,90] 是左右手各15关节的绝对 axis-angle,Kimodo 初始化时已经写入 mean_hands.npy,所以任何 SMPL-X forward/MotionLib consumer 都必须等价于 use_pca=False, flat_hand_mean=True,不能再加一次 MANO mean。这里的 flat_hand_mean 是 parser 如何解释 pose 参数,不是“手在视觉上是否平展”。唯一例外是 ContactGen 原生 right-MANO PCA layer:它保持官方 flat_hand_mean=False,随后在 ContactGen→Kimodo 边界显式执行一次 hands_mean + coefficients @ components,输出再进入上述 absolute contract。该约定直接由公共转换函数和 [T,90] finite 校验保证,不新增 YAML/cache 字段。
各框架只保留必需的坐标约定差异:
| Adapted family | Shape source | XML/physics convention | Reference FK contract |
|---|---|---|---|
| OmniGrasp / Strict OmniGrasp / ResMimic-PHCX | 完整 Kimodo shaped v_template |
PHC/Isaac Gym upright_start=False;固定单shape;fix_height_mode=no_fix;PHC LocalRobot 与 MotionLib 的 SMPL-X parser 均为 flat_hand_mean=True |
human_reference()使用同一Kimodo rest joints;SAGE task在asset创建前验证shape hash并从reference生成XML |
| InterMimic / PhysHOI / SkillMimic(项目adapted run) | 官方可消费的 Kimodo beta[:16] 近似;XML与reference使用同一beta16 hash,和完整Kimodo template的最大分量误差显式记录(当前7.54 mm) |
InterMimic upright MJCF;Pelvis root body pos=0 0 0;XML builder保持官方 flat_hand_mean=False |
591D body position/contact geometry由与官方 HBP 数值等价的 SMPL-X beta16 forward 产生,absolute 90D hand pose按 flat_hand_mean=True解释;不从XML offsets另做一套FK |
| PHC-X reference converter | 完整 Kimodo shaped v_template |
PHC target convention;禁止formal run使用--force-neutral-shape;缺失pose_hand立即失败 |
reference与生成的PHC XML共享source/hash;90D hand pose直接按absolute axis-angle打包 |
| Native official reproduction | 官方原生asset | 不改 | 只用于验证论文代码闭环,不与项目shape-aligned same-sequence结果混用 |
其余计划项不再各自发明 hand/XML 规则:B0直接使用上述PHC-X converter;B1/B3共享OmniGrasp reference与asset boundary;B2 HOI-FHLI和ContactGen/InterAct IK只产出canonical Kimodo motion,进入physics baseline时仍走对应公共adapter;B5及后续ContactMimic controllability实验复用最终选定backend的同一adapter。TokenHSI/UniHSI等native reproduction若不消费本项目pose_hand[T,90],保持其官方representation,不强行套用SMPL-X hand-mean约定。
upright_start差异是框架state convention,不是人体shape差异;跨框架要求的是各自 reference 与 physics asset 内部使用同一 shape contract,不是XML字节完全相同。InterMimic严格保留官方非对称 hand-mean 约定:XML生成用flat_hand_mean=False,但用90D absolute hand pose计算reference mesh/joints时必须等价于flat_hand_mean=True。高度也严格保留interact2mimic.py语义:只用前30帧人体mesh最低点做human shift,再用object frame 0做同步object/全局shift;runtime不得做第二次height fix,frame 30之后的源pose穿地只记录诊断,不得为了掩盖晚帧异常整体再抬高轨迹。shape-aligned reference已经完成静态geometry gate:legacy beta=0 + no_fix mesh最低点为+7.951 cm,Kimodo beta下为+0.040 cm;hand target相对重新生成的human FK max error为0;frame65/98/116 hand-to-cup surface距离分别为1.095/0.129/0.136 cm;cup-support clearance为0.399 cm。审计产物为output/auto_experiments/20260719_kimodo_shape_aligned_reference_audit/geometry_audit.json,四项gate全部通过。
这是一项实验前置条件,不是某个policy的额外科学改动。每个run必须在provenance记录body_shape_source、body_shape_hash、生成XML路径、reference_and_physics_shape_match=true和second_runtime_height_fix=false。凡是使用beta=0 physics humanoid、旧固定omomo.xml或仅对human root再次执行full_fix而没有同步object/hand target的项目adaptation checkpoint,均标记为embodiment-confounded / invalid for architecture ranking,不得resume或用于样本效率比较;只保留作历史pipeline诊断。具体包括此前项目OmniGrasp、Strict OmniGrasp、ResMimic、InterMimic/PhysHOI/SkillMimic adapted checkpoints。官方native reproduction不受此失效规则影响。B0 PHC-X旧结果也只能作为历史human-tracking诊断,进入统一主表前必须用新converter重跑shape-aligned版本。
3. 第一轮 Baselines
B0: PHC-X Frozen
状态:Completed
作用:human-only physics tracking 下限,不读取 object/contact/scene。
已完成的 full-length rollout:
已有结果:
- 597 frames 完整运行;
- human body mean/max error:4.21 cm / 34.73 cm;
- cup frame-0 world error:0 m,initial velocity:0;
- cup trajectory mean/final position error:2.22 m / 3.75 m;
- cup mean rotation error:98.5 deg。
结论:PHC-X human tracking 已跑通,但 policy 不观察 object,不能作为 object-aware teacher。这正是 B0 应提供的下限结论,不需要重跑。
B1: OmniGrasp
z ~ q_task(
humanoid_state,
object_state,
future_object_trajectory,
fingertip_object_relation,
contact_state,
object_code
)
a = PULSE_X_decoder(humanoid_state, z)
这里的 PULSE-X VAE 提供 self-state-conditioned latent prior,OmniGrasp 学习 task-conditioned posterior latent。它属于 latent-prior adaptation,但不是 ResMimic 的显式 a_base + delta_a。
官方配置 res_hand: False;代码中的可选 hand-action residual 不作为 B1 默认设置。B1 严格使用官方 latent-prior 路径。
作用:测量 object-centric latent policy 的 grasp/object tracking 上限,以及 human-reference fidelity 的损失。严格 ZS 和 short-window OF 已验证可工作,不再重复运行。
B1 共同适配
B1 复用统一 SAGE simulation,不复用 OmniGrasp 官方 GRAB scene:
motion.npz + layout.json
-> GRAB-style policy reference
-> SAGE physics scene
-> OmniGrasp policy
-> common rollout trace
-> common renderer
共同改动严格限制为:
- reference adapter 生成
pose_aa、object reference、hand reference、contact 和官方定义的 BPS/object code; obj_pose是 observation/reward 的 reference,不创建 kinematic 或重复 physics actor;- 禁止 OmniGrasp 创建官方
target、table和重复 ground; - 用
dynamic_object_id映射 SAGE dynamic actor,observation、reward、reset 和 contact 都读取其真实 simulation state; - actor root index、rigid-body index 和 contact-force index 分开保存,不能假设 object/table 位于固定 slot;
- support 和 obstacle 始终来自 layout;训练与 official-protocol eval 按 OmniGrasp contact schedule 移除同一个 support actor,SAGE-scene eval 保留 support;
- dynamic actor 的初始化发生在 environment reset 生命周期内,不能在
env.reset()后从 runner 外部覆写; - human/object/reference 统一使用 tracker-local frame 和
xyzwquaternion; - trace 同时记录 actual/reference object pose、velocity、object ID 和坐标变换,再交给 common renderer。
这部分不改变 OmniGrasp policy architecture、action parameterization 或官方 reward 形式。motion.npz + layout.json -> GRAB-style PKL 只是 policy reference 适配,不代表一定要训练。
B1-ZS: pretrained inference
- 加载 frozen PULSE-X prior/decoder
pulse_x_omnigrasp/Humanoid.pth; - 加载完整 OmniGrasp task checkpoint
omnigrasp_neurips_grab/Humanoid.pth,包括 normalizer 和 RNN state; - 使用 PKL 中的真实 object trajectory 作为 reference;
- 不更新任何权重,测试 out-of-box transfer。
B1-OF: per-reference overfit from prior
- 只加载 frozen PULSE-X latent prior/decoder;
- 新建
48DOmniGrasp task policy,在当前 cup reference 上 PPO overfit; - observation、reward 和 reset 必须统一读取
MotionLibSMPLObj的真实 object reference,不能使用默认随机_traj_gen; - 禁用 object pose randomization、random start、PMCP/resampling 和其他会改变单轨迹 reference 的设置;
- 保持 OmniGrasp 原始 object tracking 与 pre-grasp hand objective,不加入 dense human imitation reward。
因此 B1-OF 衡量的是 object-centric OmniGrasp teacher,而不是完整 human-reference tracker。若以后加入 dense human imitation,应作为新方法或单独 ablation,不能记入 B1。
B1-HSI: reference-encoded PULSE-X base + OmniGrasp residual
B1-HSI 只替换原版 OmniGrasp 的 latent base,第一轮直接在 pre-contact pick clip [0,219) 做 frame-0 overfit:
z_ref = frozen_PULSE_X_encoder(self_obs, human_imitation_obs) # 48D posterior mean
delta_z = original_OmniGrasp_policy(self_obs, object_obs) # 48D
z_exec = z_ref + delta_z
action = frozen_PULSE_X_decoder(self_obs, z_exec) # 153D
z_ref使用 PULSE-X checkpoint 自带的2026D = 778D self + 1248D imitationnormalizer和encoder。778D self = 1D root height + 51×3D heading-local body position + 52×6D heading-local body rotation + 52×3D local linear velocity + 52×3D local angular velocity;1248D imitation = 52×(3D position error + 6D rotation error + 3D velocity error + 3D angular-velocity error + 3D local reference position + 6D local reference rotation)。两部分都以当前pelvis heading canonicalize,不是raw world pose;- checkpoint normalization严格为
clamp((x-running_mean)/sqrt(running_var+1e-5), -5, 5)。decoder侧的778D self也先使用同一checkpoint统计量归一化并clip到[-5,5];VAE posterior在test时取z_mu,且use_vae_sphere_posterior=False,因此不会把48D latent投影到unit sphere; - residual actor不读取 raw human reference,也不额外读取
z_ref,输入维度和原版 OmniGrasp一致; - 不加入 dense human imitation reward或human-reference termination;human reference只通过frozen encoder形成base,human error仅作为评估指标;
- object observation、future sampling、pre-grasp/contact/object reward、
48Dresidual action和decoder严格沿用原版 OmniGrasp; - learning backend 使用 task-only pure PPO:只执行 rollout、GAE 和 actor/critic update,不创建 AMP demo/replay buffer、discriminator、discriminator loss 或 discriminator reward;仓库现有
omnigrasp_noamp.yaml仍实例化OmnigraspAmpAgent,不能作为本实验的 no-AMP 配置; z_ref已是posterior absolute latent,执行时不再叠加state-onlyprior_mu(self_obs);[0,219)是 single-case overfit:512 个并行环境共享同一条 reference,固定从local frame 0开始,flex_start=False,保留真实pre-contact approach;PPO horizon保持32;- 该方案是单变量 latent-base adaptation,不能把结果记为官方 OmniGrasp。
2026-07-17 implementation/smoke:新增 sage_omnigrasp_ppo + continuous_a2c_logstd task-only路径;运行时actor observation为原版OmniGrasp 1208D,只归一化前1207D并保留末尾object code,policy action为48D。8-env smoke已完成真实rollout、GAE、actor/critic反传并写出checkpoint;checkpoint包含37组model parameters,disc_keys=[]且无AMP state。由此只能确认pure-PPO plumbing正确,不能确认reference-latent base可执行。
第一条正式[0,219)、512-env、frame-0 run在epoch 210停止并判为无效:训练期间eps_len=1,policy从未看到approach/grasp/lift transition;这些checkpoint不得恢复或计入样本效率。为排除随机residual,actor mean改为严格zero initialization,fixed exploration sigma由原版约0.367降为0.1,随后运行fresh deterministic delta_z=0 architecture gate。旧trace确认全部106帧latent_action逐元素为零,但frame 105触发reset,completion为0;human body mean error从frame 0的3.04 cm、前30帧平均3.84 cm增长到frame 60的45.65 cm、frame 90的189.54 cm,valid-frame总平均74.78 cm。
2026-07-18重新拉取官方PULSE commit 1665985并与OmniGrasp commit f7740cd逐函数审计。compute_humanoid_observations_smpl_max与RunningMeanStd.forward语义逐AST一致;compute_imitation_observations_v6唯一差异是等价的J替换body_pos.shape[1]。adapter此前确实漏了checkpoint RMS的[-5,5] clip,现已修复,但修复后closed-loop仍在frame 27/40/51分别超过5/10/20 cm,frame 60为49.08 cm,frame 90为132.56 cm。对照的teacher-forced test在每步执行前把root和153D DOF精确恢复到reference;输入root/DOF误差均为0,219帧单步decoder后的human body mean/p95/max为2.59/3.71/4.23 cm,root mean为3.49 cm、DOF mean为0.0379 rad。对齐状态下encoder pre-clamp超界比例仅0.031%;自由闭环发散后才升至均值12.56%。因此clip遗漏是一个真实contract bug,但不是闭环发散根因,canonicalization、checkpoint normalizer、z_mu和decoder配对已经通过单步sanity check。
必须明确:delta_z=0只保证z_exec=z_ref,不会恢复PHC-X PNN action;B1-HSI control base是PULSE-X encoder/decoder,不继承B0 frozen PHC-X的3--4 cm tracking guarantee。官方PULSE训练对posterior优化的是teacher action reconstruction,加上posterior-to-state-prior KL和z_t-0.99z_{t-1} AR(1) regularization;它没有优化decoder(z_mu(reference))的多步closed-loop tracking。官方HumanoidZ.compute_z_actions实际downstream路径使用prior_mu(self_obs)+task_delta_z,reference posterior替换段保留为注释。B1-HSI因此不是一个已预训练稳定base上的小residual问题,而要求object PPO同时学习闭环human stabilization。该方案在zero-residual gate失败后暂停,不进入正式PPO;若继续,必须先训练/验证独立PULSE-X human tracking policy,不能把单步action compressor直接当作frozen tracker。
Strict OmniGrasp Minimal Adaptation(当前唯一正式 OmniGrasp 方案)
不再使用 B1-FR、human-only、InterMimic-reward 等名称或主线分支。正式方案相对 task-only OmniGrasp 只允许两个科学变化:actor observation 增加 canonicalized human reference;原版 OmniGrasp reward 加上 PHC/PULSE-X 自身的 human imitation reward。其余 observation fields、object reward、latent action、frozen controller、PPO 网络和超参数保持原版。
actor_obs = original OmniGrasp observation[1208]
+ canonicalized next-frame PHC obs-v6 human reference[1248]
= self[778] + object continuous[429] + human[1248] + object code[1]
= 2456D
delta_z = PPO_actor(actor_obs) # 48D
z_exec = frozen_PULSE_X_prior_mu(self_obs) + delta_z # 48D
action = frozen_PULSE_X_decoder(self_obs, z_exec) # 153D
human block严格使用PHC/PULSE-X的compute_imitation_observations_v6,以当前pelvis/root heading canonicalize,不输入raw world pose。实际tensor顺序为self -> object continuous -> human reference -> object code;Task PPO online RMS只处理前2455D连续字段,最后1D object code原样送入BPS embedding。frozen PULSE-X prior/decoder继续使用checkpoint内自己的low-level RMS,两套统计量不能混用。
reward固定为相加而非相乘:
R_total = R_original_omnigrasp + lambda_human * R_PHC/PULSE_human
R_PHC/PULSE_human = 0.5 * exp(-100 * E_body_pos)
+ 0.3 * exp(-10 * E_body_rot)
+ 0.1 * exp(-0.1 * E_body_vel)
+ 0.1 * exp(-0.1 * E_body_angvel)
R_PHC/PULSE_human内部的0.5/0.3/0.1/0.1及指数系数严格继承PULSE-X,不调参;外层lambda_human是唯一新增reward超参数,首个正式run预注册为0.5,后续若需要只做{0.25, 0.5, 1.0}单因素ablation。trace必须分别保存R_original_omnigrasp、未乘外层权重的R_PHC/PULSE_human和R_total。
正式训练契约:
- actor/critic、GRU和
48D delta_z从随机初始化开始;frozen PULSE-X state prior、decoder和checkpoint normalizer不更新; - object block、
K=20future、15Hz future spacing、30-link contact-force observation、BPS/object code、两手共同参与的原版contact filter均保持不变;不增加指定手filter; - pregrasp、actual-contact-gated object tracking、contact/lift bonus、object reward系数、power penalty和slippage penalty严格保持原版;不弱化rotation、不增加InterMimic/contact shaping;
- table removal保留原版OmniGrasp的
progress_buf > table_remove_frame执行机制,但不再把它与contact/reward phase绑定。训练前先把raw几何接触reference转换为stable-grasp operational reference:frame 65仅作为geometric_contact_start_frame诊断元数据,contact_info和reward phase在stable-grasp frame 98切换,reference object从frame 116开始lift,support removal threshold固定为frame 123。strict task在每次reset的_sample_ref_state后重新写入123,避免原版use_stage_reward把它覆盖成contact frame 98;不修改contact_idx,否则会错误地同时延迟pregrasp/grab reward切换。由于trace含reset frame及原版post-physics时序,timing smoke中首个support z=100记录在trace index 126;该偏移不代表配置成126。对motion reference仍启用use_stage_reward=True,不使用support_mode=keep; - SAGE数据适配使用
scene_scope=physics_only:除dynamic object和support外仍加载collision plan中的其它物理场景物体以及room floor。scene actor数量变化属于环境输入,不改变policy/reward; - PPO严格恢复原版
mu_init=default、sigma=exp(-1)、learning_rate=2e-5、mini_epochs=6、horizon32、minibatch16384、GRU256和原网络宽度; - single-case overfit明确关闭原版object-position augmentation:
obj_rand_pos=False。原因是原实现会在motion load时共同旋转/平移object trajectory和pregrasp hand target,却不变换新增的human reference;在当前单轨迹拟合中会人为改变human-object关系并制造不必要的reward冲突。该项只属于single-overfit训练协议,不改变Strict policy observation、action或reward定义;auto_pmcp_soft=True和obj_pmcp=True保留,但单motion且has_eval=False时不改变当前采样。obj_rand_pos设为approval-locked:后续进入multi-position/generalization/robustness阶段如需重新打开,必须先询问用户并得到明确同意,不得由runner、配置继承或agent自行恢复; - 使用task-only pure PPO删除
disc_reward_w=0时无效的AMP plumbing;rollout、GAE、optimizer与原版task-only目标一致。pure PPO recurrent collector必须在每个action前执行env_reset(done_indices)并维护RNN mask、next_values和time-limit bootstrap; - Task PPO normalizer严格使用官方PULSE downstream机制:每epoch冻结快照供本epoch网络计算,live RMS继续在PPO minibatch累计,下一epoch刷新;不再永久冻结;
- 2026-07-24最小human-constraint实验增加whole-body mean human tracking termination:52-body mean position error超过
0.25 m时终止;不使用任意单body/fingertip超阈值的max-body termination。其余observation、reward、48D latent action、PULSE decoder、PPO、object termination和contact定义保持上一版不变; - 第一条single-case固定为
[0,219)、stateInit=Start、flex_start=False、1024 env;它包含完整pre-contact approach、contact和lift。通过后只把同一配置的clip end扩到597,不更换reward、policy或命名。
正式实现入口为tools/run_strict_omnigrasp.py,task为HumanoidSageStrictOmniGraspZ,learning config为strict_omnigrasp_ppo.yaml。task初始化逐项验证environment contract;learning-config回归测试拒绝低sigma、低学习率或修改原版PPO网络/超参数。单手filter、修改object reward、关闭power/slippage和support keep不属于正式配置。2026-07-24起正式human-constraint分支只增加mean body error > 0.25 m termination;历史FullRef/InterMimic实验只作为诊断记录,不恢复checkpoint,也不属于当前正式方案。
2026-07-19 GPU 1真实smoke已通过实现门槛;在将single-overfit锁定为obj_rand_pos=False后又fresh重跑一次,composed Hydra config和provenance均确认randomization关闭。2-env、1-epoch运行成功建立GPU PhysX场景、完成recurrent pure-PPO rollout/GAE/反传并写出checkpoint;runtime报告actor observation/action为2456D/48D,Task PPO RMS为2455D连续量加未归一化1D object code,checkpoint/network中没有discriminator。修正trace诊断后,1-env deterministic audit逐帧满足R_total=R_original_omnigrasp+0.5R_human,最终no-rand smoke最大绝对误差1.49e-8;记录到真实非零48D delta_z和finite/nonzero 153D frozen-decoder action。physics_only实际加载14个物理场景物体,房间inventory的93个对象没有被全部实例化;加room floor后scene actor为15,再加humanoid总actor为16。
第一轮正式训练错误地把table threshold设为frame 98,在2000 epochs内始终没有形成sustained lift;该run作为失败对照保留,不恢复checkpoint。2026-07-19 remove-123修正版重新通过GPU 1 timing smoke:runtime motion为219 frames / 7.2667s,reference/contact从trace index 98开始,task内table_remove_frame=123,support在trace index 126首次记录为z=100。timing smoke仅为跨过123验证时序而临时关闭early termination并把object termination distance放宽到1000m;正式training/eval恢复原版termination配置,policy observation、reward、PPO和decoder均未改变。
2026-07-19 body-shape审计进一步发现:上述所有smoke和已训练到epoch1700的remove-123 run仍由PHC/OmniGrasp创建beta=0 humanoid,同时新reference关闭了二次height fix。该人体在no_fix下脚底约悬空7.95 cm,而canonical Kimodo shape本应接近地面;因此它们的human/contact结果被embodiment mismatch混淆。epoch1700 checkpoint及其所有前序checkpoint现统一标记为invalid,不再用来判断Strict OmniGrasp能否收敛。下一条Strict run必须fresh生成带shape hash的reference,由共同SAGE task从该reference shaped v_template创建XML,并先通过Section 2.1 geometry/runtime gate;不得resume旧checkpoint。
修复后的fresh shape-aligned smoke位于output/auto_experiments/20260719_strict_omnigrasp_kimodo_shape_smoke。它确认runtime metadata中的shape hash为178022fa...b7a16、body_shape_xml_from_reference=true、fix_height_mode=no_fix、second_runtime_height_fix=false,并成功完成2-env训练及1-env 219-frame eval。随后在output/auto_experiments/20260719_strict_omnigrasp_kimodo_shape_tracefix_eval复验reset state:frame 0的52-body position、root position和153D DOF position相对MotionLib reference均为逐元素0误差。此前首帧约5.8 cm的假偏差来自trace保存live Isaac tensor view、在第一次physics step后被原地改写;现已在OmniGrasp与ResMimic入口统一clone reset snapshot。该1-epoch随机policy的后续human/object指标没有学习意义,不计作overfit结果;smoke只验收asset/reference/reset/PPO plumbing。
Deferred: B1-FT
从完整 OmniGrasp task checkpoint 开始继续 PPO,用于后续 adaptation-efficiency 实验。第一轮不实现,避免与 ZS/OF 的结论混淆。
旧的 B1-ZS、[68,219) B1-OF和FullRef/InterMimic reward实验只保留历史结果,不再训练或恢复checkpoint。当前只fresh训练Strict OmniGrasp Minimal Adaptation;先通过[0,219),随后在完全相同contract下扩到[0,597)。B3 PHC-X OmniResidual仍作为独立control family保留其已实测约3.9cm的frozen PHC-X执行基线。
B2: HOI-FHLI physics tracker
保持官方 direct PPO position-control 结构:
- 从头训练,不使用 PHC-X/PULSE-X prior 或 residual action;
- actor 只读当前 root-local human/object state 与当前 dense reference pose;
- 保留 human/object pose、hand/object relation、acceleration reward 和 object/grasp early termination;
- 不添加 BPS、height map、显式 contact command 或 future-reference horizon。
作用:测量最小 direct SMPL-X HOI tracker 在我们的 cup reference 上的 fidelity、grasp 和 long-sequence 成本。
B3: PHC-X OmniResidual
ResMimic 发布代码的原始 control equation 是直接 action addition:
a_base = frozen_phcx(human_tracking_observation)
delta_a_raw ~ pi_residual(human_and_object_observation)
a_final = clip(a_base + delta_a_raw, -1, 1)
其中 ResMimic G1HOI 配置里的 init_noise_std=0.1 只控制 PPO exploration standard deviation;runner 和 player 都直接执行 base_actions + actions,没有固定 0.1 * delta_a。B3-M 最初的 R0 实现忠实复现了这个 equation,但将原方法的 G1 29D residual 直接扩展成 PHC-X SMPL-X 153D residual。R0 deterministic trace 已确认 active gate 内 delta_a_raw == delta_a_applied,最大 applied residual 达到 0.428,不存在此前误以为已经启用的 0.1 residual scale。
ResMimic 在 B3 中只定义 control framework:
- 复用 frozen backbone、residual PPO、near-zero residual initialization 和 action addition;
- 将 frozen GMT base tracker 替换为 frozen PHC-X,保持 PHC-X 原有 human observation/normalization/action contract;
- object conditioning 不受 ResMimic 发布版
7Dcurrent pose 限制,主方案直接采用 OmniGrasp-style object observation; - frozen PHC-X 始终只读 human tracking observation,所有 object condition 只进入 residual actor;
- 同一 B3 control family 内的 object-encoding 变体共享 physics、reward、reset/termination、PPO schedule 和 metrics,只改变 residual actor observation;
- residual 不默认读取
a_base; - 不增加 WristMimic finger decoupling;
- 不增加 UniHSI scene condition。
现有结果不足以把失败归因于 R0 policy definition。旧实验同时混入了长序列直接训练、过早 random start、严格 object/contact termination 和 checkpoint 语义变化;而 pick clip 曾经能够完整运行。因此正式实现回到最小 ResMimic adaptation:保留直接 residual addition,只增加 PHC-X normalized-action 边界所需的最终 clip 和 sequence-level HOI gate。R1 的 tanh + scale、anatomical mask 与 residual regularization 保留为后续安全性 ablation,不再作为当前主训练 contract。
B3 observation/action contract
frozen PHC-X 的 checkpoint contract 固定为:
human tracking observation 2026D
frozen PHC-X normalizer 2026D
base normalized PD action 153D
raw residual policy action 153D
gated applied residual 153D
pre-clip normalized action 153D
final normalized PD action 153D
a_base 由 frozen normalizer + frozen PNN 直接产生;residual PPO 拥有自己的 observation normalizer。PPO sampled/stored/log-prob action 是 delta_a_raw,simulator 接收 a_final。action addition 必须发生在 PHC-X normalized action space、PD target conversion 之前。R0 不把 a_base 拼入 actor observation,也不在 raw action 上加入 tanh、固定 scale 或 joint mask;必须显式区分 PPO exploration sigma、raw residual、gate 后 residual、clip 后 effective residual 和最终 PD action。
B3-M 的 control/policy family 采用 ResMimic 思想:frozen PHC-X 产生 a_base,residual PPO 产生 direct delta_a_raw,sequence gate 只决定 residual 是否生效。object observation 是独立实验轴,可以借鉴 OmniGrasp、InterMimic、SUGAR、PhysHOI 和 SkillMimic,但不能同时改 action、reward 或 initialization。第一条正式训练直接运行下面的 OmniGrasp-style 主方案;strict/current-only 等版本保留为后续 ablation,而不是主实现约束。旧 B3-G latent-residual family 已被独立的 GRAIL-Min-SMPLX 预注册取代;两者都不能与 B3-M observation ablation 混为同一单因素实验。
B3-M: phcx_omnigrasp_residual(主方案)
主方案把完整 OmniGrasp-style object condition 拼到 PHC-X human observation 后:
PHC-X human tracking observation 2026
current object root-heading position 3 + rotation 6D 6 9
future object error: K=20 × 15D 300
10 fingertips relative to current object: 10 × 3 30
actual contact-force vectors: F=30 × 3 90
----------------------------------------------------------------
residual actor observation 2455D
residual actor output 153D
官方 OmniGrasp object block 还包含 fixed-latent object code 1D;single-reference、single-object overfit 中该值恒定,没有控制信息,所以主方案删除它。若做 strict OmniGrasp-observation parity,则保留该维并得到 2456D。
object condition 的精确定义为:
- current pose
9D:actual SAGE dynamic object 相对 current humanoid root-heading frame 的 position3D和 rotation-matrix first two columns6D; - future error
15D/sample:相对 current simulated object 的 position error3D、relative rotation tan-norm6D、linear-velocity error3D、angular-velocity error3D; - fingertip relation
30D:10 个 actual fingertip positions 到 current simulated object position 的 root-heading-local vectors; - contact
90D:显式 body-name map 选出的 30 个 hand/finger contact links 的 actual force vectors;actor/body/contact indices 必须分开维护,不能依赖 rigid-body slot; - 所有 actual state 来自 simulator;reference 只用于 future condition、reward、reset/termination 和 metrics,不驱动物体做 kinematic playback。
future sampling 默认复现 OmniGrasp:K=20、sample spacing 1/15 s,第一个 sample 从下一 control time 开始,超出 reference 末尾时 clamp 到最后一帧。对每个 tau_k:
delta_p[k] = heading_inv * (p_ref(tau_k) - p_sim(t))
delta_R6[k] = rot6d(change_basis_heading(R_ref(tau_k) * inverse(R_sim(t))))
delta_v[k] = heading_inv * (v_ref(tau_k) - v_sim(t))
delta_omega[k] = heading_inv * (omega_ref(tau_k) - omega_sim(t))
主方案 residual actor 使用独立 2455D normalizer;frozen PHC-X base 继续使用 checkpoint 自带 2026D normalizer。不能用 residual normalizer 处理 base input,也不能把新增 object fields 送进 frozen PNN。
B3-M/ResMimic adaptation还必须满足Section 2.1 embodiment gate:PHC-X human reference FK、frozen PNN observation所对应的skeleton、153D PD action humanoid XML和OmniGrasp-style hand_trans必须来自同一个Kimodo shape hash。tools/run_resmimic_strict_phcx.py现在显式要求use_reference_body_shape=true与fix_height_mode=no_fix;共同HumanoidSageOmniGraspZ基类在创建physics asset前校验reference并从其shaped v_template写XML。此前所有R0/R1/C98结果只保留为旧embodiment下的policy/reward plumbing诊断,不能继续resume,也不能再用于与Strict OmniGrasp或InterMimic的architecture ranking;shape-aligned R0若重启必须fresh zero initialization。
B3-M 正式训练:HOI gate + pick-first curriculum
ResMimic 在 B3-M 中只提供 frozen backbone、residual PPO 和 normalized-action addition 框架。PHC-X adaptation 的正式 R0 action path 为:
g(t) = 1[t in enabled HOI interval]
delta_a_applied = g(t) * delta_a_raw
a_preclip = a_base + delta_a_applied
a_final = clip(a_preclip, -1, 1)
delta_a_effective = a_final - a_base
最终 clip 是 normalized action space 到 PHC-X PD target 映射前的接口边界,不是 residual scale。它只在 a_preclip 越界时改变实际 residual,因此 trace 必须同时报告 saturation;若 saturation 长期显著非零,说明 PPO 正在依赖裁剪,需作为失败诊断,而不是静默当作普通 residual。fresh run 使用 zero-initialized actor mean 和 sigma=0.1 exploration;旧 R1 checkpoint 不得恢复到 R0,因为其 action semantics 已变化。训练和 deterministic eval 必须走完全相同的 gate -> direct addition -> clip 路径。
正式 single-case overfit 固定为以下阶段;reference/episode 长度和 PPO rollout horizon 是两个独立概念,所有训练阶段 PPO horizon_length 均保持 32:
| Phase | Reference 与起点 | Residual gate | 训练与验收 |
|---|---|---|---|
| 0: Frozen check | full source [0,597),fixed start,fresh zero-mean policy,仅评估 |
residual 数值必须逐元素为 0 |
完整运行 597 帧;raw/applied/effective residual=0,preclip=final=a_base,saturation 为 0 |
| 1: Pick | full source [0,219),local 219 frames;flex_start=False,每个 episode 从 local frame 0 开始 |
local [0,219) 全开 |
每个 checkpoint 做 fixed-start deterministic eval;必须完整运行 219 帧、完成 lift、且物体不掉落 |
| 2a: Full-HOI warmup | full source [68,597),local 529 frames;从 Phase 1 checkpoint 恢复;先保持 flex_start=False |
local [0,529) 全开 |
固定起点覆盖完整 grasp transition,避免刚扩成长 clip 就稀释 pick 学习信号 |
| 2b: Full-HOI balanced(deferred) | 只有 R0 fixed-start 已通过完整 529 帧验收后才允许;从 Phase 2a checkpoint 接续训练 |
local [0,529) 全开 |
按 reference task_stage_frame_ranges 先均匀采样 task stage、再在 stage 内采样 frame;验收仍固定从 local frame 0 开始;若新 checkpoint 回退,保留最后一个通过的 checkpoint |
| 3: Full-sequence eval | full source [0,597),fixed start,仅评估 |
full [0,68) 强制 delta_a_applied=0;[68,597) 开启 |
前 68 帧的 applied residual、final action 和 human state 必须与 fresh zero-residual frozen PHC-X rollout 逐元素一致;随后验证完整 HOI rollout |
2026-07-18语义复核把旧marker拆成三个不同事件:geometric_contact_start=65、stable_grasp_start=98、lift_start=116。官方45条OmniGrasp demo的phase切换由contact_info首次非零决定,而不是固定距离阈值;源码中的close_distance_pregrasp=0.2m只选择参与pregrasp reward的手部links。官方demo在contact帧的最近hand-link到object-root距离中位数为5.86cm、范围1.92--11.73cm。项目帧56/62/64/65/98对应距离为40.24/18.10/10.52/7.58/1.61cm,hand-mesh到杯表面距离在帧64/65为3.36/1.10cm;穿模审计在帧64和65均为0个穿入顶点,帧66才首次出现11个、最大1.67mm。frame65只作为诊断性的几何接触起点;正式OmniGrasp operational contact、reward切换和table removal统一取stable-grasp frame98,至lift frame116相隔18帧,落在官方contact-to-lift的正常范围内。训练reference保留geometric_contact_start_frame=65元数据,但将frame98前的contact_info清零;2cm mesh proximity只用于从无物理contact标注的canonical motion恢复几何事件。Phase 1继续使用完整pre-contact pick [0,219),HOI slice仍以stable grasp前30帧得到[68,597);窗口选择不再与contact onset混为一谈。fixed-start full-HOI 尚未通过前,不启用 clean carry random start。Phase 2b 若启用,其 stage-balanced sampling 依赖 reference 中显式的 task_stage_frame_ranges,不能退化为整段 frame-uniform random start。训练 trace 必须同时保存 delta_a_raw、gate、delta_a_applied、a_base、a_preclip、a_final、delta_a_effective 和逐 DOF saturation,避免把 exploration sigma、actor mean、clip 前 residual 和实际施加到 PD controller 的 residual 混为一谈。
训练 early termination 不沿用 OmniGrasp env_x_grab_z 的 12 cm object-root threshold,也不沿用 SAGE 的“任一 body 超过 25 cm”human tracking threshold。这些阈值适合作为严格 tracking metric,但会在大范围 carry 中把短暂偏差误判为失败。B3-M 保留 catastrophic failure:human body-position mean error 0.5 m、object root error 0.5 m 和 physics fall;human/object tracking 继续进入 dense reward 和 metrics。reference-contact/actual-contact mismatch 只记录为 metric,不触发 termination,避免未形成接触的探索轨迹在学会 grasp 前被截断。contact requirement 必须使用 reference 中逐帧 contact_info,不能简化为从 contact_start 到 sequence 结束恒为真,否则会错误惩罚 place 后的正常 release。
Phase 1/2/3 的 fixed-start deterministic pass 条件固定为:精确运行预期帧数且 completion 1.0;连续 lift 至少 15 帧;若 reference 在 clip 末帧仍处于 lifted state,则 actual object 末帧也必须保持 lifted;object max error <0.5 m;reference-contact frames 中 actual contact ratio >=0.8;human body mean error <0.1 m。报告同时保留 human/object mean、p95、max、longest contact mismatch、pre-contact false-contact ratio 和 saturation;这些 metric 不再隐式改变 rollout termination。
2026-07-16 implementation gate 已通过:fresh deterministic Phase 0 完整输出 597 frames,human body mean error 3.887 cm、p95 8.210 cm;raw/applied/effective residual 均逐元素为 0,a_preclip=a_final=a_base,action saturation ratio 为 0。2-env、1-epoch PPO smoke 已完成优化并写出 checkpoint。随后用该非零 checkpoint 设置 full-sequence gate [68,597),真实 Isaac trace 的 reset state 加前 68 个 base-only transitions(共 69 个 trace states)在 human body/root/DOF、object root 和 PHC-X base action 上均与 Phase 0 逐元素一致;第一条 active residual 精确出现在 trace index 69。这些结果只验证 action/gate/训练 plumbing,不代表 single-case HOI learning gate 已通过。
2026-07-17 将 B3-M 训练端从 OmnigraspAmpAgent 正式切换为 task-only pure PPO:phcx_omniresidual_ppo -> OmniGraspPPOAgent -> PPODataset,model 使用 continuous_a2c_logstd,network 显式 use_discriminator=False;配置和 runner 不再包含 AMP demo/replay buffer、AMP minibatch、discriminator 或 discriminator reward。PHC-X/OmniGrasp environment 的继承关系暂时保留,因此 legacy env_info 仍会报告 amp_observation_space,但 pure PPO agent 不读取它、不分配 AMP buffer,也不把它写入 checkpoint。GPU 1 上 2-env × 4-step smoke 已完成 rollout、GAE、actor/critic update 和 checkpoint restore;checkpoint 只有 17 组 policy/value parameters,amp_or_disc_model_keys=[],输入 normalizer shape 为 2455D。deterministic player restore 成功并生成 trace。旧 AMP-runner checkpoint 含 discriminator/optimizer state,不得直接恢复到这条 pure-PPO run;正式训练使用新的 output directory fresh start。
2026-07-18进一步确认,上述pure-PPO切换仍漏掉了recurrent环境重置:B3-M与历史FullRef对照共享OmniGraspPPOAgent,因此旧R0同样在第一遍sequence后反复采样terminal frame,不能用来否定direct residual action定义。修复后的collector在每次action前执行env_reset(done_indices)并维护RNN mask、next_values和time-limit bootstrap;16-env因果测试可跨越多个sequence boundary持续得到约98-step有效episode。重跑R0只做必要adaptation:Phase 1从原来的[68,219)改为包含完整approach的[0,219),flex_start=False、gate全开;场景用physics_only,保持a_final=clip(a_phcx+delta_a,-1,1)、153D无缩放residual和原reward不变,从fresh zero初始化重新建立因果对照。
该fresh R0对照已在GPU 1用1024 env、horizon 32运行到epoch 300并按Phase-1 gate停止。zero-residual PHC-X虽保持human mean/p95 3.887/8.210cm,但杯子约在frame 65收到168N物体接触冲量并开始滑落;当时reference adapter把stable grasp frame 98错误地写成首次contact,导致frame 65--97仍走pregrasp reward且support未按原版schedule移除。修复后的policy在旧标签下依次把deterministic终止推进到epoch 100/160/300的frame 99/125/128,epoch 300为1.769cm瞬时lift、required-contact ratio 0.10且无action saturation。该run只能证明PPO/reset/direct residual可学习,不能继续用于归因reward或action definition。正式重验必须使用contact 65、stable grasp 98、lift 116、逐帧release contact和support_mode=remove;在这个单因素修正结果出来前,不启动R0-RW或R1 scale/mask。
B3-M/R0-RW reward adaptation 暂停。下一条必须先以完全相同的R0 observation/action/optimizer重跑corrected-reference control,唯一变化为contact 65、stable grasp 98、lift 116、逐帧contact/release和support_mode=remove。只有该control仍在正确contact transition下失败,才允许测试R_pre = R_pregrasp * R_object_position;否则不能把旧标签造成的reward错相位误判为原版OmniGrasp reward缺陷。
2026-07-18 corrected R0 control 已正式完成:GPU 1、1024 env、horizon 32、fresh zero、每20 epochs deterministic eval,Phase 1 [0,219)训练至上限600 epochs,共30次评估。Phase 0仍为597/597、human mean/p95 3.887/8.210cm且residual逐元素为0。Phase 1未通过,因此runner按protocol停止,没有进入Phase 2/3。best termination为epoch 120的79/219;best required-contact ratio为epoch 380的38.46%;best lift为epoch 160的0.759cm;best human mean为epoch 100的4.313cm。epoch 600为78/219、contact 23.08%、lift 0.619cm、human mean/p95 6.754/17.960cm、residual RMS/max 0.0567/0.3072,所有30个checkpoint的action saturation均为0。epoch-380 trace显示reference contact从frame65开始,actual contact维持frame65--69;support在trace frame68移到z=100,frame70丢失接触,杯子随后自由下落并在frame77达到58.6cm object error。corrected R0因此明确失败在load-bearing grasp,而不是contact标签错相位、PPO reset、最终clip或action saturation。该结果满足启动R0-RW reward-only对照的前置条件,但不能与R1 scale/mask同时修改。
2026-07-18 R0-v2/C98 contact-dominant对照随后按上述operational语义正式完成。该实验保持frozen PHC-X、2455D observation、153D direct residual、最终clip、pure PPO和[0,219) fixed-start不变;只把reward/table-removal切换固定在frame98,并将human imitation权重降为0.1,object reward设为position/rotation/linear-velocity/angular-velocity/contact=0.4/0.05/0.05/0/0.5。实现审计还发现原power/slippage penalty按最终全身action计费,会把frozen PHC-X base也当作residual惩罚并令总reward转负;正式residual实验因此关闭这两个不具备增量语义的penalty,而不是让PPO通过抵消base来降罚。GPU 1、1024 env、horizon 32、fresh zero训练到600 epochs仍未通过Phase 1,runner没有进入Phase 2/3。best completion为111/219;达到operational contact后的best required-contact ratio为15.38%;best lift为epoch160的1.423cm,没有持续lift。epoch600为111/219、contact 15.38%、lift 0、human mean/p95 9.143/24.410cm、residual RMS/max 0.0678/0.4204且saturation为0。最终trace中actual contact只出现在frame99--100;frame101撤支撑后立即失联,object error在frame103/105/107/109依次增至5.9/14.6/27.6/44.8cm,frame110以55.1cm触发object failure。C98证明旧table时序确有问题,但也证明把binary contact bonus提高到0.5仍只会奖励瞬时碰撞,不会提供force closure、接触连续性或承载保持的梯度;下一步不得继续单独提高contact权重,应把“持续抓握/承载”作为单一reward变量,或转入已预注册的control-family对照。
B3-R1: constrained OmniResidual(deferred safety ablation)
原始 B3-M 的 a_final=clip(a_base+delta_a, -1,1) 忠实于 ResMimic direct addition;PPO 中 sigma=0.1 只表示探索标准差,不是 residual scale。若未缩放 153D residual 在 carry 中出现接触爆炸,第一条 adaptation 固定为:
delta_bounded = tanh(delta_a_raw)
delta_applied = HOI_gate * joint_scale * delta_bounded
a_final = clip(a_base + delta_applied, -1, 1)
single-left-hand case 的 joint_scale 为:非交互侧、腿、torso、spine、chest、neck、head 和 thorax 全部 0;active shoulder 0.03、elbow 0.05、wrist 0.08、15 个 finger joints 0.1,共开放 54/153 DOFs。reward 额外减去 active-DOF bounded residual 的 0.05 × L2 + 0.01 × temporal-rate。该 0.1 是面向 PHC-X 153D 高敏感接触控制的 adaptation,不得描述为 ResMimic 原版公式,也不等价于 GRAIL 在 frozen latent decoder 前施加的 0.1 × delta_z。
B3-R1 不是当前正式训练路径。只有 clean R0 依次完成 Phase 0/1、但在 Phase 2a 的相同 fixed-start protocol 下稳定复现 residual/saturation 导致的发散,才允许将 R1 作为单因素 safety ablation;R1 必须 fresh zero initialization,不能直接复用 action semantics 不同的 R0 checkpoint。
旧 R0 结果的解释边界
旧 rollout 在 contact/lift 附近的 object error 为厘米级、随后在 carry 发散,这证明该 checkpoint 后段不稳定,但不能单独证明 direct residual 的定义错误。旧训练没有先完成 fixed-start full-HOI 就进入更复杂 sampling,并且 contact/object termination 会改变有效训练分布;后来又切换到 R1 action semantics。因此本轮从 fresh-zero R0 重新建立因果链:先验证 frozen equivalence,再分别验证 pick、fixed-start full-HOI 和 balanced sampling。只有 trace 明确显示 a_preclip saturation、residual growth 或 contact impulse 与发散同步,才把控制权限列为 R1 的实验变量。
B3-G: GRAIL-style PULSE-X LatentResidual(独立强对照)
2026-07-24 superseded: 本节保留为历史候选,不再代表当前 GRAIL adaptation。当前唯一执行方案是 GRAIL-Min-SMPLX minimal adaptation:以 GRAIL
pnp_table为母配置,只做 G1→SMPL-X、SONIC→PHC-X 及其必需的 joint/body/link/action interface conversion;不得执行下述 PULSE-X/OmniGrasp observation/reward 设计。
GRAIL 与 B3 都复用 frozen motion controller,但 GRAIL 不在最终 joint action 上直接相加。其 HOI actor 输出 64D latent residual,显式乘 0.1 后在 quantization 前加到 frozen SONIC latent,再经过 FSQ 和 frozen decoder;同时使用 residual L2、residual-rate/full-latent-rate regularization,并将 hand control 压缩为 2D primitive。GRAIL tabletop pick-up 还优先从 contact 前采样完整 transition。B3-G 移植的是这些 control principles,而不是 G1 observation/action dimension。
当前实际加载的本地PULSE-X pulse_x_omnigrasp/Humanoid.pth同时提供imitation encoder、self-state-conditioned prior和decoder,因此B3-G候选定义为:
z_base = frozen_pulsex_encoder(pulsex_reference_observation) # posterior mean, 48D
delta_z_raw ~ pi_hoi(phcx_human_observation, omnigrasp_object_block) # 48D
delta_z_applied = g(t) * 0.1 * tanh(delta_z_raw)
z_final = pulsex_project(z_base + delta_z_applied)
a_final = frozen_pulsex_decoder(current_self_state, z_final) # 153D
pulsex_reference_observation必须按该checkpoint的778D self + 1248D obs-v6 imitation字段顺序构造,并使用checkpoint自带的2026D统计量和[-5,5]clip;不能仅因为PHC-X PNN observation同为2026D就复用其normalizer。这里不再计算a_phcx + delta_a;frozenPULSE-X encoder/decoder/normalizer构成一个配对的action-transform module。B1-HSI同样围绕human-reference posterior预测latent residual,但严格保留OmniGrasp的无缩放直接latent addition、object actor输入和原版reward;B3-G则保留为GRAIL action-transform、scale/regularization和reward语义的独立复现。
B3-G在训练前必须先通过zero-residual architecture gate:delta_z=0从fixed frame0完整运行human reference,报告相对frozen PHC-X的human mean/p95/max error、completion和action continuity。当前pulse_x_omnigrasp checkpoint已通过teacher-forced单步配对sanity,但closed-loop gate失败,因此这个checkpoint下的B3-G不得进入PPO。只有换用明确经过reference-conditioned closed-loop训练的PULSE-X tracker checkpoint,或先单独训练出通过同一gate的human latent tracker,才能重新开放B3-G;这与GRAIL使用其已训练SONIC action-transform不是同一个前提。
B3-G 是独立工作流中的预注册强对照,不与 R0/R1 同时修改 reward 或 object encoding。无论哪条 control family 通过,后续 object-encoding ablation 都必须在各自 frozen controller、reward、reset 和 evaluation protocol 内重跑,不能跨 family 直接归因。
B3-A0: strict_b3(ablation)
residual actor input = PHC-X human observation 2026
+ actual dynamic object pose 7
= 2033D
actual object pose 7 = tracker-local position xyz 3
+ normalized quaternion xyzw 4
residual actor output = delta_a 153D
- actual object pose 必须读取 SAGE dynamic actor 的 root state,不能读取 reference pose 或 kinematic playback;
- frozen PHC-X 仍只读取原始
2026Dhuman observation; - object reference trajectory 不进入 actor,只用于 object point-cloud reward、reset/termination 和 metrics;
- object point cloud/mesh 不进入 actor;geometry 只在 consumer boundary 由
layout_json + dynamic_object_id加载并用于 reward。
B3-A1: object_future(ablation)
在 strict_b3 上只增加 OmniGrasp-style object future:
per future sample = delta position 3
+ delta rotation 6D 6
+ delta linear velocity 3
+ delta angular velocity 3
= 15D
K = 20
residual actor input = 2033 + 20 × 15 = 2333D
residual actor output = delta_a 153D
对每个 future time tau_k,condition 必须相对当前 simulated object 定义,并统一转到 current humanoid root-heading frame:
delta_p[k] = heading_inv * (p_ref(tau_k) - p_sim(t))
delta_R6[k] = rot6d(change_basis_heading(R_ref(tau_k) * inverse(R_sim(t))))
delta_v[k] = heading_inv * (v_ref(tau_k) - v_sim(t))
delta_omega[k] = heading_inv * (omega_ref(tau_k) - omega_sim(t))
rotation 使用 relative quaternion/rotation 后转 tan-norm 6D,禁止 quaternion component subtraction。默认复现 OmniGrasp sampling:K=20、trajectory sample spacing 1/15 s,第一个 sample 从下一 control time 开始;超出 reference 末尾的 sample clamp 到最后一帧。
所有 B3-M observation 变体必须共享 frozen PHC-X base、R0 direct residual action contract、scene actors、reward weights、reset/termination、训练 schedule 和 metrics。GRAIL-Min-SMPLX 使用原版 GRAIL observation/reward,不参与这组 B3-M encoder ablation,也不能跨 control family 直接归因。object_future 只测试 current 7D 上增加 future error,不加入 fingertip/contact;它与 strict_b3 构成单因素对照,但都不是主方案。
与其它 object encoding 的边界
| Configuration | Direct current-object block | Object reference block | Sampling | Relation/contact block |
|---|---|---|---|---|
phcx_omnigrasp_residual main |
actual root-heading pose 9D |
reference-simulation error 15D/sample |
K=20, 15 Hz spacing |
fingertip vectors 30D + actual contact forces 90D;total object block 429D |
strict_b3 |
actual pose 7D |
actor none | current only | none |
object_future |
actual pose 7D |
15D/sample relative to current simulated object |
default K=20, 15 Hz spacing |
none in first ablation |
| InterMimic official teacher | current linear/angular velocity 6D/horizon; current pose implicit in errors/relations |
pose/velocity error 15D/horizon |
t+1,t+16 at 30 Hz |
encoded joint-surface relation 219D/horizon plus reference/actual contact in human block |
| SUGAR privileged refiner | actual pose/velocity 15D in robot-anchor frame |
pose 9D/sample in current object frame + raw reference velocity 6D/sample in robot-anchor frame |
K=8, offsets {0,...,7} |
future block is not reference-simulation velocity delta |
| PhysHOI | actual state 15D in root-heading frame |
full raw t+1 HOI reference,object portion 10D = position 3 + quaternion 4 + linear velocity 3 |
one-step future | reference contact label 随 full HOI reference 输入;contact-graph relation 主要在 reward 中计算 |
| SkillMimic low-level policy | actual state 15D in root-heading frame |
no dense reference;one-hot skill condition | current only | contact graph mainly in reward |
所以 InterMimic 的 direct object block 是 21D/horizon,不是 7D + 15D;它没有单独拼 raw current object pose 7D。rotation error convention 也必须分开:OmniGrasp/B3-A1 使用 R_ref * inverse(R_sim),InterMimic 发布代码使用 inverse(R_ref) * R_sim,二者随后都做 root-heading change of basis,不能共享同一个 rotation helper 而不指定 convention。
InterMimic 的 219D/horizon relation 也不是 raw surface vector:对最近物体表面向量 d 使用 g(d)=normalize(d)*exp(-5*norm(d)),输入 all-body current encoding 与 key-body reference-current encoding error。若以后测试 InterMimic-style sparse encoding,必须作为单独 observation ablation,并明确选择:只移植 21D/horizon,还是连同 relation/contact 一起移植。后一种已不再是只比较 object future。
SUGAR 同样不能因为维度也是 15D/sample 就与 OmniGrasp encoder 共用无标记实现:SUGAR future pose 相对 current object,但 future velocity 是 robot-anchor-frame raw reference;OmniGrasp 则四项全部表达 reference-simulation error。PhysHOI 的 raw next-frame reference 和 SkillMimic 的 skill condition 也回答不同问题。
observation 实验分两层,不能混为一张无归因的排行榜。
第一层是方法级 encoder family 对比,每个版本保持其 object semantics:
| B3 object encoder | Object-related dim | Residual actor dim | 研究问题 |
|---|---|---|---|
| OmniGrasp full(主方案) | 9 + 20×15 + 30 + 90 = 429 |
2455 |
dense closed-loop future + hand relation/contact 是否最适合 PHC-X residual |
| SUGAR-refiner-style | 15 + 8×15 = 135 |
2161 |
short-horizon privileged state 与 mixed-frame raw reference velocity 是否更高效 |
| PhysHOI-object-style | 15 + 10 = 25 |
2051 |
one-step raw reference 是否已经足够;这是 object-only adaptation,不等于复制 PhysHOI 的完整 next-HOI actor input |
| SkillMimic-style | 15 + 64 = 79 |
2105 |
current object + discrete skill condition 能否替代 dense trajectory;不用于 single-reference fidelity 主结论 |
第二层是在 OmniGrasp 主方案内部做单因素 ablation:
strict_b3:2026+7=2033D,current-only ResMimic observation control;object_future:2026+7+20×15=2333D,只增加 dense future error;omni_core:2026+9+20×15=2335D,改为 root-heading current pose9D;omni_fingertip:2335+30=2365D,只增加 fingertip-object relation;omni_full:2365+90=2455D,再增加 actual contact forces,即主方案;- 在
omni_core上比较K=20dense、SUGARK=8consecutive 和 InterMimict+1,t+16sparse horizon; - 只有 object tracking 已成功但 grasp/contact 仍失败时,才加入 InterMimic/PhysHOI-style reference contact 或 surface/contact-graph relation。
正式运行顺序是先训练 omni_full 2455D;上述 ablation 在主方案通过 architecture gate 后补跑。这样“先尝试最完整的 object-conditioned residual”与后续可归因比较同时成立。
B4: From-scratch full-reference HOI refiner(当前正式主线)
ResMimic/B3 暂停在已有 checkpoint 与诊断结果,不再继续调 residual scale、mask 或 reward。当前主线不是只把 PhysHOI/SkillMimic 当作 reward ablation,而是让三个官方方法都从各自 raw mocap 单序列、随机初始化 policy 开始训练:
| ID | 原生方法 | raw single sequence | 原生 initialization/refinement | 必须产出 |
|---|---|---|---|---|
| B4-I | InterMimic | OMOMO_new/sub2_woodchair_000.pt |
Hybrid reference-state init + IET + PSI physical buffer | deterministic executable rollout + raw/PSI reset-state audit |
| B4-P | PhysHOI | BallPlay/walkpick.pt |
Random reference-state init + full next-frame HOI tracking | deterministic executable rollout |
| B4-S | SkillMimic | BallPlay-M/pick_40/001_007pickle_pick_000.pt |
60-frame RRSI + skill condition + imitation/contact reward | full-sequence deterministic rollout |
这一步回答“官方方法能否从 raw mocap 学成可执行轨迹”,但不能用三个原生实验的 reward 或 epoch 直接宣布谁最好,因为数据、物体、skeleton 和 episode init 不同。方法选择必须再经过相同项目轨迹的统一对照。
这里的“PSI physical buffer”必须按代码准确解释:它保存 physically executed root/dof/object state 并用于后续 reset-state sampling;actor future observation 与 tracking reward 仍使用 raw hoi_data。所以 PSI 不是离线输出一条替换原 mocap 的 dense trajectory optimizer。
B4-I: InterMimic-style
必须把 InterAct offline correction 和 InterMimic physics teacher视为两个连续但不同的阶段。官方 OMOMO_new 已经过 full-body、wrist、hand correction,并由 interact2mimic.py 重算 simulator skeleton与逐 body {-1,0,1} contact labels;它不是完全未处理的 OMOMO。offline loss包含 human-object penetration/contact、palm-facing、finger-distance balance、joint limits/hand prior、foot-ground、reference preservation和 temporal smoothness。InterMimic PPO/PSI 在这个 corrected kinematic target上学习 dynamic rollout,PSI并不会自动替代 wrist/hand correction。
当前 SAGE adapter仍以原 Kimodo motion 作为 kinematic target,但 591D contact 已严格改为官方逐 body 三态标注:SMPL-X vertex按 joints2verts归属到52个body,约2 cm为正接触、该body全部vertex超过10 cm为负接触,中间为未知,并复用object落地/静止/自由落体与双脚接地修正;不再使用5 cm hand-level binary label。它与官方 OMOMO_new 的剩余差异是上游没有完整运行 InterAct 的 dataset-specific offline correction。正式、general且最小的修正路线固定为 Direct ContactGen best-of-N proposal -> explicit MANO-PCA expansion -> InterAct-style upper-body IK -> canonical Kimodo motion -> official 591D/contact conversion;先修 grasp keyframe/wrist chain,再交给不改 reward 的 InterMimic physics teacher。
a ~ pi(
simulated_human_state,
simulated_object_state,
future_human_reference,
future_object_reference,
joint_object_relations,
reference_contacts
)
作用:from-scratch direct full-reference teacher,测量训练成本、reference fidelity 和 HOI 质量。它直接对应本项目的 teacher 定义:输入完整 human/object reference,输出 physics-valid human/object rollout。
B4 适配边界
InterMimic只提供policy、observation、reward、initialization和termination;simulation与可视化继续复用共同 contract:
canonical human/object reference
-> tracker-local human/object future reference
-> InterMimic policy
-> shared SAGE physics scene
-> common world-frame trace and renderer
- actor读取current human/object state、future human/object reference、joint-object relation和reference contact;
- official teacher observation 拼接
t+1、t+16两个 horizon;不能在未标记 adaptation 的情况下替换成 OmniGraspK=20dense window; - 保留InterMimic的grouped exponential reward、PSI和IET;
- manipulated object始终是SAGE dynamic actor,不播放kinematic object;
- 项目adapted InterMimic/PhysHOI/SkillMimic共享同一个官方 InterAct XML builder与beta16 shape hash:XML生成保持官方
flat_hand_mean=False;591D body positions、contact mesh/joints与height fix则来自同一beta16的官方等价SMPL-X/HBP forward,90D absolute hand pose按flat_hand_mean=True解释。envrobotType必须指向生成的绝对XML路径;不得从XML offsets重算另一套body FK,也不得继续使用固定smplx/omomo.xml执行项目Kimodo人体。三者的native reproduction仍保留各自官方asset; - 不引入PHC-X/PULSE-X prior或residual action,保持direct full-policy对照;
- 原生复现必须从零训练,不能加载发布 teacher checkpoint;发布 checkpoint 只用于 runtime/metric calibration;
- 原生先增加 strict official-aligned gate:
4096 env / episodeLength=300 / rolloutLength=300 / high-fidelity physics,仅把 motion directory 缩为woodchair_000,最多 5000 epochs;它验证官方 frame-0 full-rollout PPO 能否 single overfit; - 该 gate 已在 epoch 500(
65.01Mtransitions)通过:deterministic268/268、官方 success100%,human MPJPE14.54 cm、object position mean7.27 cm、object contact F10.979;训练期 stochastic mean 为263.23/268,说明含探索噪声的 train length 不能代替 deterministic gate; - 本地 27 条
sub2中 25 条短于 300。发布代码对这些短轨迹把 Hybrid start-time CDF 缩为 time 0,并禁止 PSI slot update;只有长度 304/309 的两条轨迹在极靠前 start range 可写 PSI。因此 official-alignedwoodchair_000并不是 PSI curriculum,而是 frame-0 full-reference overfit; - 早期
physicalBufferSize=3 / rolloutLength=128实验是明确的 PSI-enabled ablation:它使 269-frame native sequence 能实际随机 start/写 PSI,但不能称作 official-aligned 主结果; - official-aligned native single 已成功。项目第一次
[68,219)也使用相同rolloutLength=300从零拟合;151-frame clip 从局部 frame 0 且不写 PSI,PPO horizon 仍为32; [68,219)post-contact reset control 训练保留至 epoch 1240 后停止。统一 GPU 0 deterministic best 为 epoch 1140 的102/151;best actual lift 仅0.70 cm,而同期 reference lift 已达40.94 cm,terminal 为 object tracking reset。epoch 1120/1140/1160/1180/1200 密集 checkpoints 的 termination 分别为98/102/97/96/84,证明曲线非单调;- trace 显示
0.15 kg轻杯在 post-contact reset 后首步承受约200--365 N接触力,可产生1.4--14.7 cm单步位移;canonical 几何接触在 source frame 64 才开始,而 frame 68 的778个左手顶点中已有32个在杯网格内,最大穿入2.29 cm。因此[68,219)是几何穿插 reset,无真正 pre-contact rollout;新的正式项目 pick 主实验改为 source[0,219),从 scratch 训练,仍是 fixed frame-0 overfit,但保留 64 帧 approach;除 reference window 外,4096-env、observation、reward、PPO、physics、rolloutLength=300全部不变,且因 219<300 仍不写 PSI; [0,219)epoch 20 的早期机理筛查显示,首步杯子位移/接触力已从 post-contact control 常见的11--15 cm / 200--365 N降为0.264 cm / 1.28 N;deterministic 前缀到 source frame 74 才因 frame 64 后连续 11 帧未建立左手接触而 IET,human/object/IG reset 均为 false。这证明 pre-contact window 已把瓶颈转为正确的 grasp acquisition;[0,219)epoch 60 已学会从 frame 67 建立并维持左手接触到 frame 133;epoch 80--280 的 deterministic termination 稳定在 frame 145,human MPJPE 从19.91 cm降至12.52 cm,但 actual lift 始终为-0.22 cm,同期 reference lift 为38.35 cm。epoch 240--280 active-contact 时段平均只有约0.86--1.21个左手接触体、最多2--3个,表明 policy 学到单点触碰而非承载包夹;- strict run截至epoch 500约使用
65Mtransitions;epoch 80--500 deterministic rollout长期停在frame 145且actual lift约-0.22 cm,这是强平台证据,但官方训练上限远高于500 epochs,尚不能仅凭该预算断言official observation必然失败。正式决策改为从同seed9885的epoch-500 checkpoint做bounded resume到epoch 1000:不改observation、reward、IET、physics、init或seed,只每100 epochs保存并做deterministic eval。若termination推进到>160或actual lift首次达到>2 cm,继续允许到epoch 1500--2000;若epoch 800/900/1000仍稳定在145且lift接近0,则确认接触局部最优并停止strict,随后才从头启动interaction_fingertips单因素对照。不得无监控直接延长到epoch 5000; - 2026-07-17 bounded resume已在GPU 1启动:checkpoint明确恢复自
sage_intermimic_00000500.pth,绝对max_epochs=1000,4096 env / rolloutLength=300 / horizon=32 / 3198D official observation / 153D action保持不变,realized seed显式固定为9885,milestone为600/700/800/900/1000。原0--500日志保存在train_00000000_00000500.log; - 代码审计确认官方 InterMimic
keyBodies不含 finger:actor future position/velocity/IG error 和 body/IG reward 只约束到 wrist,future rotation error还显式移除 fingers;PhysHOI/SkillMimic 则把十个 fingertips 放入 key bodies。项目 reference 在 source 80--140 实际有约14--15个左 wrist/finger body center 距杯面<5 cm,但 epoch 240 左手指误差在 source 64--144 为约20--27 cm,lift 段升到37.3 cm。因此若 epoch 800--1000 bounded strict gate 仍不通过,首个单因素对照只将 reference-active hand 的五个 distal fingertips 加入keyBodies,observation3198D -> 3318D;保持 full153Daction、reward 公式、PPO、physics、init、IET 和 reference 全部不变,不先做 hand-only action mask; interaction_fingertips同-seed 对照使用 strict run 的实际 seed9885从 scratch 启动;一个误用官方随机 seed 得到710的 15-epoch启动 pilot不计入结果。环境 contract 已验证为3318D obs / 153D action,但按用户要求同-seed run 在 epoch 33 中断,仅保留 epoch 20 checkpoint且不排名;GPU 1 已释放。strict 原版继续在 GPU 0 跑到 epoch 500;- epoch 60 deterministic 筛查已到 source frame
144/219;frame 67--133 左手接触稳定,随后因手臂抬升而杯子留在支撑面,frame 134--144 连续丢失接触后 IET,human/object/IG reset 仍为 false。所以当前阶段是approach -> grasp/contact已学会,load-bearing lift待学习; - epoch 80--200 的每 20-epoch deterministic 筛查都停在 frame 145,杯子 actual/reference lift 始终约为
-0.22/38.35 cm;同期 human / left-arm-hand / lower-body 误差降到13.90/17.62/7.44 cm。这证明目前的 reward 增长来自人体/接触前缀改善,load-bearing lift 仍未出现;保持 full153D官方设置训练到 500-epoch gate,不在中途改 reward 或 action mask; [0,219)的正式通过条件为 deterministic219/219、在 source frame 64 附近逐步建立接触、完成 lift/hold,并且无 human/object/IG/contact IET。该 pick 通过后,winner 扩展到完整 source[0,597);full clip 长于 300,保持官方 rollout 时可启用 random start/PSI,但首先仍需 fixed-start deterministic 完整评估。
截至2026-07-19,上述项目adapted InterMimic checkpoints是用固定官方omomo.xml生成/执行,而reference human来自Kimodo shape,故全部转为historical diagnostic且不得resume;其中关于PPO预算、PSI和接触局部最优的现象可以保留为调试线索,但不能进入same-sequence方法排名。官方woodchair_000 native single成功结果仍有效,因为其motion和官方XML内部一致。当时预注册的“下一条先重跑[0,219)”已由Section 13.6覆盖:最新 motion 直接用新shape-aligned reference/XML从scratch训练full [0,597);PhysHOI/SkillMimic adapted run仍执行相同的旧checkpoint失效与fresh-start规则。
新的InterMimic shape-aligned 1-env/1-iteration smoke位于output/auto_experiments/20260719_intermimic_kimodo_shape_smoke:converter写出reference/kimodo_smplx22_humanoid.xml和219-frame 591D reference,XML为52 bodies/153 hinge DoFs、Pelvis root body pos=0 0 0;env显式记录与Strict相同的shape hash,runtime成功建立3198D obs / 153D action GPU PhysX环境并写出checkpoint。该smoke不计作学习结果。
B4-P: PhysHOI-style direct tracker
- direct
153DPD action,无 frozen PHC-X/PULSE-X; - actor 使用 current humanoid/object state 加完整
t+1raw HOI reference; - reward 保留
rb * ro * rig * rcg,其中发布代码 object rotation reward 为关闭状态; - 保留 Random reference-state init,不加入 PSI;
- project adaptation 只做
331D native motion contract -> shared 153D SMPL-X/SAGE contract所需的字段与 asset 修改。
B4-S: SkillMimic-style skill tracker
- 原生 policy 为 direct
156DPD action;project adaptation 显式改为 shared153DSMPL-X action,这是必要 skeleton adaptation; - actor 读取 current humanoid/object state 与
64Dskill condition,不读取 dense future reference;reference 通过 imitation/contact reward 监督; - 保留 60-frame RRSI clip curriculum,deterministic evaluation 再从序列开头运行完整 reference;
- 不加入 PSI,也不能偷偷拼接 InterMimic/PhysHOI future observation。
两层比较协议
- Native reproduction:各自 raw mocap、原生 skeleton/object/reward/init,验证官方训练闭环和收敛形态。
- Same-sequence adaptation:三者共享项目最新 canonical full reference、153D SMPL-X action、同一 SAGE dynamic object、physics、seed、env count、PPO sample budget 和 deterministic metrics,只保留各方法 observation/reward/init/refinement 的差异。自 2026-07-24 起,B4-I InterMimic 不再重复
[0,219)pre-contact pick gate,而在 fresh conversion/runtime smoke 通过后直接训练[0,597);旧[68,219)与[0,219)结果只保留为历史 reset/curriculum 诊断。
统一指标为完整 rollout completion、human MPJPE、arm/hand MPJPE、object position(rotation 只作弱参考/报告)、contact precision/recall/F1、lift/hold/drop、penetration、训练 simulation steps 与 wall time。原生 reward 不做跨方法排序。
B4 与 B3 的实验关系
- B4回答:InterMimic、PhysHOI、SkillMimic 三种 from-scratch tracker 中,哪一种最适合把本项目 raw HOI reference refine 成完整 physics teacher;
- B3回答:frozen PHC-X human tracker加OmniGrasp-style object-conditioned residual是否更省训练、更稳定;
- 两者共享完全相同的reference、physics actors、坐标变换、trace、renderer和metrics;
- 当前实现优先级为 B4-I native scratch calibration -> 最新 motion fresh full-sequence
[0,597)InterMimic;不再设置项目[0,219)前置门。B4-P/B4-S 是否进入同一 full-sequence 对照在 B4-I 完成后决定。B3-M/R0、B3-R1 保留为暂停的 control family;GRAIL-Min-SMPLX 按其独立预注册执行,不混合 policy input、reward 或 checkpoint 归因。
B5: WristMimic-style
a ~ pi(
current_human_and_object_state,
actual_contacts,
interaction_graph,
future_body_reference_without_fingers,
future_wrist_reference,
future_object_reference,
future_contact_reference
)
作用:验证 body/wrist tracking + no finger pose target 是否更容易产生真实 grasp。
WristMimic 原始设计在整个 sequence 都不提供 finger pose target;pre-grasp finger prior 不是该 baseline 的一部分。
4. 实验口径
Official Setting
在方法原始 embodiment、controller 和 simulator contract 中复现,用于确认官方能力。其数字不与统一 SMPL-X environment 做严格横向排名。
Algorithm-Preserving Adapted Setting
只做接入统一 SMPL-X physics 所需的工程移植,保持原始:
- policy architecture;
- observation;
- action parameterization;
- reward;
- initialization/curriculum。
论文主表使用 adapted setting,并明确标注 adapted。
训练设置
必须分别报告:
Per-reference teacher:每条 reference 或 scene 独立训练。Multi-reference teacher:一个 policy 在多 reference、object 和 scene 上训练。
两种结果不能混合取平均。
5. 单轨迹架构选择
第一条 case:
reference:
output/auto_experiments/20260711_hsi_generation_world_pose_fix/left/motion.npz
existing PHC-X rollout:
output/auto_experiments/20260711_world_pose_fix_tracking/left/phcx_full
Gate 0: Data/physics
scene/object部分已完成:
- canonical/world/tracker transform 对齐;
- cup initial pose/velocity 正确;
- physics object IDs 与 layout 一致;
- full-length rollout 可运行;
- common renderer 可比较 canonical/front/right。
2026-07-19新增的body-shape子门槛必须在任何新训练前执行:reference必须包含合法Kimodo shape source/hash;physics XML必须由同一v_template生成;fix_height_mode=no_fix;脚底/地面、手/杯、杯/support静态geometry audit通过;随后各framework做runtime smoke验证body/DOF order与asset load。当前公共loader、XML生成和静态geometry gate已通过。Strict OmniGrasp 2-env pure-PPO smoke成功加载52-body/153-DoF shaped asset、执行1 epoch并完成219-frame deterministic trace;runtime XML的52个body offsets与公共builder逐元素一致,max error为0。InterMimic 1-env smoke成功加载同一shape hash的upright XML、3198D/153D policy并写出checkpoint;PhysHOI/SkillMimic继承同一validated SAGE base。ResMimic继承已通过的OmniGrasp asset builder,但fresh ResMimic policy smoke仍在其下一次训练前执行。旧checkpoint不满足该gate。
Gate 1: Reward diagnostics
在相同 rollout 上离线计算各 baseline 原始 reward terms:
- human tracking;
- object tracking;
- contact;
- interaction relation/slip;
- support relation;
- physics regularization。
每项必须区分初始正确状态、grasp failure、cup 掉落和错误 release。
Gate 1A: GRAIL-style contact attribution control
当前项目出现过 finger 压住 nightstand、aggregate hand contact force 却开启 object reward gate 的假阳性。将 GRAIL 的接触归因注册为 shape-aligned Strict OmniGrasp 之后的正式单因素 control,但不静默修改 Strict Minimal Adaptation 主实验:
active_hand label = left → expand to every L_* entry in hand_bodies
active_hand label = right → expand to every R_* entry in hand_bodies
Object → expanded active-hand links : target grasp/contact gate
标准实现应读取 actor-pair-filtered contact force;object tracking 只允许由 Object↔Finger pair 开启,Support↔Hand 永远不得计入 object contact。当前 Isaac Gym backend 若不能直接提供等价的 filtered force_matrix_w,首版 adapter 必须使用并单独标注经过验证的近似归因(contact force、target-surface proximity 和 force/normal alignment联合判断),不能退回 aggregate finger force。公共归因 API 不接收 side、reference-contact、support actor 或 fallback_distance;side label 只在 task 配置边界展开为 asset 的 hand-link IDs。
C-PAIR-A 的固定 Isaac Gym 近似为:每 link 需要 ||F_i||>0.1 N、link 到真实 target mesh 最近采样点距离 d_i<=0.04 m、cos(F_i, target_surface→link)>=0.5;所有通过 link 的 force norm 之和超过 1.0 N 才开启 gate。首版使用 128 个确定性 target-mesh surface samples。这里的 0.04 m 是显式 target-surface 上限,不是 reference 未标接触时的 fallback。reference contact timing 仍决定何时需要抓握,但不参与 actual target-contact 分类。
实验按单因素顺序执行:
C-PAIR-A attribution-only:只替换 actual-contact 的来源;observation、action、reference contact timing、object/human reward 权重、PPO和table-removal timing全部固定。Support contact仅记录,不加新 penalty。C-PAIR-B support-penalty:在A的基础上只增加独立的Support↔Handpenalty,验证是否减少压桌面局部最优。C-PAIR-C grasp-shaping:若A/B已消除假阳性但仍不能承载,再分别测试 GRAIL-style reference-label-gated multi-finger coverage、finger opposition/direction 或 reference contact center;一次只增加一项。
每个control必须报告 object-contact precision/recall/F1、support-contact false-positive rate、有效finger-link数量与最长连续接触帧、support removal后的lift/hold/drop,以及human/arm/hand tracking。特别注明:GRAIL实现了 contact-gated object tracking,但四个release config使用不同权重:pnp_table=0,pnp_ground=20,advanced_manip_table=20,advanced_manip_ground=20。pnp_table仍以object future observation和0.1 m object-deviation termination约束搬运;不能将它描述成“没有object reference”,也不能将该配置描述成依靠dense gated object reward成功。本实验首先借鉴pair attribution,再把dense object tracking作为独立单因素变量。
训练前旧 checkpoint 诊断已经通过。使用 Humanoid_00001000.pth 原始 deterministic rollout trace 在 source frame 116 重分类:原版 aggregate OmniGrasp gate 为 true;L_Index3 杯心距离 5.97 cm、target surface 距离 1.93 cm,但 force=0 N,判 false;L_Middle3 force=39.55 N,surface 距离=4.17 cm、alignment=-0.518,判 false;L_Ring3 force=36.17 N,surface 距离=6.25 cm、alignment=-0.388,判 false。仅 L_Thumb3 有约 0.789 N 可归因轻触,总归因力仍低于 1 N,因此新 target gate=false,nightstand contact 不再开启 object reward。该结论来自旧 checkpoint 对应的原始 trace;旧 policy 改用后来统一的 Kimodo shape 后 state distribution 已改变,不能用新-shape replay 冒充同一 frame-116 对照。
Gate 2: 已验证 short grasp window
严格 OmniGrasp ZS/short-window OF 已验证可运行。后续不再要求所有新方法重复长时间short训练;short window仅用于GPU smoke和排除observation/reward/actor-index bug:
- fixed reference/object/mass/friction/start frame;
- 保留各 baseline 原始 observation、policy 和 reward;
- assistance 只用于原方法包含该 curriculum 的 baseline;
- 最终评价完全关闭 assistance。
Gate 3: Pick first, then full sequence
当前主实验先完成修复后的 B3-M/R0 pre-contact pick clip [0,219);通过后再进入fixed-start full-HOI和完整597-frame评估:
Strict OmniGrasp Minimal Adaptation:原版OmniGrasp observation增加canonicalized human reference,原版reward增加lambda_human * R_PHC/PULSE_human,from-scratch48Dpolicy执行prior_mu(self_obs)+delta_z;B3-M/R0 PHC-X OmniResidual:frozen PHC-X +2455DOmniGrasp-style actor + gated direct153Daction residual,按 Phase 0/1/2a/2b/3 训练与验收;GRAIL-Min-SMPLX:严格以 GRAILpnp_table为母配置;先过 PHC-X tensor/PD parity 与 zero-residual closed-loop gate,再训练63Dbody-action residual,GRAIL observation/reward保持不变;B4 InterMimic-style:from-scratch direct full-reference policy;B3-A0/A1和其它 object-encoding ablation 只在某一 B3 control family 的 architecture/learning gate 通过后运行;- 每条路线覆盖approach、grasp、carry、place和release,并分别报告frame-0与reference/PSI initialization。
Gate 4: Robustness
架构选择完成后再加入:
- object pose perturbation;
- human state perturbation;
- mass/friction/COM randomization;
- reference timing perturbation;
- scene obstacle perturbation。
6. Architecture Selection 表
| Method | Control | Pretrained Prior | Human Ref. | Object Ref. | Finger Ref. | Contact Input | Train Steps ↓ | Status |
|---|---|---|---|---|---|---|---|---|
| B0 PHC-X Frozen | Direct PD | PHC-X | Yes | No | Yes | No | 0 | Historical run completed;shape-aligned main-table rerun required |
| B1 OmniGrasp strict | Latent-prior adaptation | PULSE-X | No dense ref. | Yes | No dense ref. | Current contact/state | ZS/short validated | |
B1-HSI [0,219) |
Reference-latent residual;task-only pure PPO | PULSE-X encoder/decoder | Encoder only | Yes | Encoder only | Current contact/state | 512 env × 32 horizon | RMS clip已修;teacher-forced单步2.59cm通过,但fresh delta_z=0 closed-loop于frame27/40超过5/10cm,architecture gate失败 |
Strict OmniGrasp Minimal Adaptation [0,219)→[0,597) |
Original OmniGrasp latent-prior PPO | PULSE-X prior/decoder | Canonicalized next-frame 52-body ref | Original K=20 + current/relation/code |
Dense full SMPL-X | Original two-hand actual force | 1024 env × 32 horizon | Old beta-zero checkpoints invalid;shape-aligned geometry/runtime smoke通过;fresh overfit pending;contact=98, removal=123 |
| B2 HOI-FHLI | Direct PD | None | Current dense | Current dense | Yes | No explicit label | Pending | |
| B3-M/R0 PHC-X OmniResidual | Gated direct action residual | PHC-X | Yes | 9D current + K=20×15D error |
PHC-X reference | Fingertip relation + actual force | 1024 env × 32 horizon | Old beta-zero C98/R0 checkpoints invalid for ranking;shape-aligned fresh run required |
| B3-M/R1 constrained OmniResidual | Bounded/masked action residual | PHC-X | Yes | same 429D OmniGrasp block |
PHC-X reference | Fingertip relation + actual force | Deferred safety ablation | |
| GRAIL-Min-SMPLX | 63D body-action residual + 2D hand primitive |
PHC-X PNN | Yes | GRAIL pnp_table object/future/BPS terms |
SMPL-X-converted GRAIL reference | GRAIL filtered 8-role pair force | 4096 env × 24 horizon | 独立预注册完成;tensor/PD/closed-loop gate和训练均待验证 |
| B3-A0 strict | Action residual | PHC-X | Yes | Actual pose 7D; reference only in reward/reset |
PHC-X reference | No | Ablation pending | |
| B3-A1 object future | Action residual | PHC-X | Yes | Actual pose 7D + K=20×15D error |
PHC-X reference | No | Ablation pending | |
| B4-I InterMimic | Direct PD | None | Sparse t+1,t+16 |
Sparse t+1,t+16 |
Yes | Reference + actual | native 65.01M |
Native single仍有效;旧project-adapted checkpoints不得resume;最新597-frame motion直接做fresh full-sequence overfit,跳过[0,219) |
| B4-P PhysHOI | Direct PD | None | Full current + raw t+1 |
Raw t+1 |
Yes | Contact graph reward | Native scratch smoke仍有效;project-adapted Kimodo-shaped run pending | |
| B4-S SkillMimic | Direct PD | None | Current + 64D skill |
Current only | Reward-only reference | Contact graph reward | Native scratch smoke仍有效;project-adapted Kimodo-shaped run pending | |
| B5 WristMimic | Direct PD | None | Body/wrist | Yes | No | Yes | Pending |
选择依据不能只有 success:还要比较 human fidelity、object tracking、contact、训练成本和 long-sequence stability。
7. Dynamic HOI 主结果表
最终 control family 选定后,论文主表包含:
| Method | Human MPJPE ↓ | Obj. Pos. ↓ | Obj. Rot. ↓ | Contact F1 ↑ | Hold Rate ↑ | Slip ↓ | Success ↑ | Penetration ↓ |
|---|---|---|---|---|---|---|---|---|
| PHC-X Frozen | ||||||||
| PHC-X Full Fine-tune | ||||||||
| OmniGrasp adapted | ||||||||
| InterMimic adapted | ||||||||
| PhysHOI adapted | ||||||||
| SkillMimic adapted | ||||||||
| WristMimic adapted | ||||||||
| PHC-X OmniResidual | ||||||||
| HOI-FHLI adapted | ||||||||
| Selected model / Ours (TBD) |
指标:
Human MPJPE:simulation joints 到 human reference 的平均误差;另外报告 wrist error。Obj. Pos./Rot.:完整 object trajectory error。Contact F1:按 body-link/object-part labels 计算,并同时报告 TPR/TNR/FPR。Hold Rate:grasp-active frames 中正确 hand contact 且 object 未滑脱的比例。Slip:contact surface 上 hand-object relative velocity。Success:完整完成,无 fall、object launch、错误 release 或超阈值 object deviation。Penetration:human-object 和 object-support 平均/最大 penetration。
8. Interaction 类型拆分
| Method | Pick/Carry/Place ↑ | Push/Pull/Kick ↑ | Sit/Lean/Lie ↑ | Long Mixed ↑ |
|---|---|---|---|---|
| PHC-X Frozen | ||||
| OmniGrasp | N/A | N/A | N/A | |
| InterMimic | ||||
| WristMimic | N/A | N/A | N/A | |
| PHC-X OmniResidual | Unverified | Unverified | Unverified | |
| HOI-FHLI | Unverified | Unverified | Unverified | |
| Selected model / Ours |
N/A 表示原方法定义不支持;Unverified 表示需要额外 adapted extension,不能当作官方能力。
任务至少覆盖:
- cup、box、kettle、pan 的左手、右手、双手 grasp;
- push、pull、kick;
- sit、lean、lie/support;
pick -> carry -> turn -> place -> sitlong sequence;- repeated 和 multi-object interaction。
9. ContactMimic Controllability
ContactMimic 单独进入 contact-controllability 实验,不作为 dynamic object trajectory 主 baseline。
| Method | Contact-on Recall ↑ | Contact-off TNR ↑ | Contact F1 ↑ | Keypoint Error ↓ |
|---|---|---|---|---|
| PHC-X keypoint-only | ||||
| ContactMimic-style adapted | ||||
| Selected model without paired augmentation | ||||
| Selected model + contact condition |
保持 keypoints 不变,只切换一个 binary contact-label map:
sit: pelvis-chair contact on/off
reach: hand-object contact on/off
lean: torso-support contact on/off
10. Architecture 选定后的 Ablation
只消融最终模型实际使用的组件:
| Candidate ablation | Applicable family |
|---|---|
| PHC-X full fine-tune vs frozen residual | residual |
residual observes a_base |
residual |
| action residual vs latent residual | pretrained-prior |
| full finger tracking vs no finger target | WristMimic-style |
| with/without wrist prioritization | WristMimic-style |
omni_full 2455D vs omni_fingertip 2365D vs omni_core 2335D |
PHC-X OmniResidual;分解 actual contact、fingertip relation 和 dense future 的贡献 |
strict_b3 2033D vs object_future 2333D |
PHC-X OmniResidual;current-only 与增加 future error 的最小单因素对照 |
OmniGrasp full 429D vs SUGAR-refiner-style 135D vs PhysHOI-object-style 25D |
residual object-encoder family;保持 control/reward/init 不变 |
SkillMimic-style 79D |
仅用于 skill-conditioned 泛化,不作为 single-reference fidelity 主对照 |
OmniGrasp dense K=20 vs SUGAR consecutive K=8 vs InterMimic sparse t+1,t+16 |
object-reference sampling;在 omni_core 上比较,并与 relation/contact 分开 |
| with/without contact command | contact-conditioned |
| with/without paired contact augmentation | ContactMimic-style |
| with/without local scene/support | scene-conditioned |
| with/without PSI | direct full-reference |
| with/without virtual object controller | ResMimic/OmniGrasp-style |
其他 supplementary ablations:
- BPS vs fixed surface points;
- additive vs exponential reward;
- different future horizons;
- object-only vs object+scene condition。
11. 训练效率
所有 trainable baseline 报告:
- environment steps 和 wall-clock time;
- GPU、并行 environments 和 peak memory;
- 达到 80%/90% success 所需 steps;
- 至少三个 seeds 的 mean/std;
- action rate 和 assistance strength;
- residual method 额外报告 raw/applied/effective residual RMS、max、rate、pre-clip action 和 final-action saturation;R1 ablation 另报 bounded residual 与 joint-group distribution,latent residual 另报 latent norm/projection/quantization statistics;
- 无法收敛的 reference 比例。
12. 决策规则
- 先通过Section 2.1 Kimodo body-shape gate,再讨论policy/reward结果。reference与physics XML的shape hash不一致、使用
beta=0或旧固定omomo.xml的项目adapted checkpoint一律不得resume或排名。 - B0、B1-ZS/short、Strict OmniGrasp、B3-M/R0/C98和旧project InterMimic结果保留为历史pipeline/learning诊断;它们的绝对成功率、human error、contact/lift与样本效率不得进入shape-aligned主表。native官方复现仍按其内部一致的官方asset单独保留。
- 历史FullRef/human-only architecture gate不代表正式OmniGrasp方案。当前Strict OmniGrasp只按Minimal Adaptation定义,在Kimodo shape-aligned smoke后fresh训练,不恢复epoch1700或更早checkpoint。B3-R1仍是deferred safety ablation;旧 B3-G 不再执行,GRAIL adaptation只按独立的 GRAIL-Min-SMPLX 预注册验证。
- 依次完成 B4-I、B4-P、B4-S 的 native raw-mocap scratch training 和 deterministic full-sequence evaluation;发布 checkpoint 只作 calibration,不能作为 scratch 结果。
- native comparison 只比较训练闭环、收敛形态与各自 rollout 质量,不跨不同数据直接排名。
- B4-I 使用统一 Kimodo-shaped XML 和最新 canonical motion 直接适配 full
[0,597);[0,219)不再作为训练或晋级前置门,[68,219)与旧[0,219)仅作为历史诊断。reference、SAGE object、153D SMPL-X action、官方 InterMimic observation/reward/init/PSI/IET、PPO 配置、seed 和 metrics 均保持固定。 - object rotation reference 显著弱化并作为报告指标;核心 gate 是完整 rollout、lift/hold/drop、contact F1、human/arm/hand fidelity 和无 catastrophic physics failure。
- 若shape-aligned B3-M/R0或Strict OmniGrasp仍复现binary-contact局部最优,先运行Gate 1A的
C-PAIR-A排除support-contact假阳性,再单独测试C-PAIR-B或一种contact persistence/force-closure/load-bearing shaping;保持contact timing、observation、action和optimizer不变。通过pick gate后才进入后续full-HOI phase,不得同时加入R1 scale/mask。 - full
153Ddirect action 是首轮正式设置;hand/arm-only 作为后续单因素 ablation,同时报告非交互身体 fidelity 与 balance,不能预设局部 action 一定更容易。 - 选定 control family 后,才组合有正向 ablation 证据的 observation/reward 组件;最终再扩展 right hand、multi-object、static HSI 和 long sequence。Teacher 稳定后才进入 MaskedManipulator/SUGAR-style student/generator。
13. ContactGen grasp-keyframe proposal gate(2026-07-19)
跨任务对象的正式测试已完成,完整协议和结果见 ContactGen task-object stability benchmark。该测试固定官方ContactGen checkpoint、canonical SAGE Z-up source mesh、seed 17和每次4个sample,共覆盖8个对象、48个官方sample;其中4个为single-hand,4个为two-hand语义。
结论固定为:ContactGen可作为hand-sized single-hand object的stochastic best-of-N proposal,但不能把first sample直接当作最终grasp keyframe。3cm proposal-stage penetration容差下,cup为stable wrap,book只有best-of-N,notebook只有pinch,leatherbook失败;5mm strict统计更弱。ContactGen不是native bimanual model,source/mirrored-source的mesh-level最小适配在round cushion、thin cushion、basket和instrument tray上均为0/16 usable pair,因此不得把这一镜像对照写成双手能力。
后续约束:single-hand proposal必须经过anatomical contact、penetration和best-of-N筛选,再进入left/right SMPL-X attachment与whole-body physics refinement;two-hand/wide-object case需要task-level bilateral contact anchors或native bimanual proposal,并对两手联合优化。3cm只允许作为proposal-stage可修正误差,不能作为最终可执行轨迹的penetration标准。
正式 single-hand 路线使用 tools/contactgen/fit_grasp_keyframe.py:ContactGen仍在其原生 right-MANO PCA/flat_hand_mean=False空间产生proposal;utils/smplx_hand_pose.py显式且仅一次执行hands_mean + coefficients @ components,得到absolute 45D axis-angle;左手只做统一镜像;随后以object-local wrist pose为目标运行 utils/hoifhli/grasp_first_refine.py 的 InterAct-style collar/shoulder/elbow/wrist IK,并将手指absolute pose写回同一keyframe。该入口直接读写canonical motion,不引入manifest、YAML hand-convention字段或额外中间reference。输出再统一经过各baseline adapter;InterMimic由官方三态contact生成器重标,不复用ContactGen proposal contact作为reward label。
13.1 Scaffold-initialized map-free refinement update(2026-07-21)
上述官方 proposal benchmark 仍作为历史输入诊断保留,但正式 keyframe backend 已升级为 scaffold-initialized map-free grasp refinement:直接从 frame-97 rigidly bound natural-reach scaffold 初始化,在同一次 GPU refinement 中联合优化交互侧 collar/shoulder/elbow/wrist、45D fingers 和不超过 15 cm 的水平 root residual。它不再先生成一个脱离身体的 ContactGen wrist,再做独立 IK;HOI-FHLI/DexGraspNet map-free energy 与 SMPL-X arm/body coupling 在同一候选中优化和筛选。
公共协议不得读取 object name/category,不得写 cup、basket、tray 等分支,也不得假设 cup opening 或 world up axis。输入仅为 actual object triangle mesh、active hand set 和 scaffold。cup 的 exterior thumb-versus-fingers wrap 只作为 single-hand wrap regression;薄物体可由 object-local morphology 进入 precision gate,双手任务则使用每手 exterior multi-part contact 加左右 contact-set spatial distribution。双手 mean-normal opposition 只记录诊断,不作为通用 hard gate。
当前 4 个 single-hand 与 4 个 bimanual objects 已全部通过独立 exact mesh/pose audit:最大穿透为 1.03–2.48 mm,水平 root shift 为 2.44–10.42 cm,非交互身体保持不变。这里的 8/8 PASS 只证明静态 grasp-keyframe geometry、自然度和接触拓扑;不能替代 force closure 或可执行性。正式下一 gate 固定为把同一 accepted keyframe 写回完整 HOI sequence,并统一检查 target-attributed contact persistence、lift、hold 和 drop;任何失败修正必须使用通用 mesh/contact-dynamics quantity,不得针对 cup hard code。
13.1.1 Map-free grasp root 的正式短窗时序协议(2026-07-23)
正式领域接口重构、完整实施顺序和硬性验收矩阵见 Hand–Object Interaction 领域接口重构与验收计划。该计划把“100% 信心”定义为结构、语义、GPU 数值、可视化与独立 reviewer gate 全部通过;任何 gate 失败都不得通过增加对象专用分支或重新暴露 backend selector 规避。
单帧 map-free refinement 允许不超过 15 cm 的水平 root residual;若只把该 residual 写入孤立 grasp keyframe,KIMODO 输出会在 grasp 附近产生 root 往返尖峰。正式 sequence adapter 因此固定为:在原 task root2d path 上,仅对 map-free backend 于 grasp frame 前后各 10 帧叠加同一个水平 Δroot,两侧使用 quintic smootherstep(C2)从 0 → Δroot → 0;grasp frame 精确命中 refined root,两端严格回到原 task path。随后只运行一次未修改的官方 KIMODO inference,再依次执行 canonical 45D hand bake 和 active-hand-local object binding。HOI-FHLI、ContactGen 与官方 pose-derived constraint 路径不进入该 bridge。
cup-left 固定 seed 对照中,孤立 keyframe 的 grasp-window 最大 root step 为 2.79 cm、frame-99 root acceleration 为 22.58 m/s²;前后各 10 帧版本分别降为 0.61 cm 和 2.27 m/s²,同时保留 strict hand-object audit、contact 与 opposition gate。前后各 30 帧的版本虽然更平滑,但会过早移动整个人,在手臂尚未进入 grasp pose 时造成 support penetration,故明确废弃。10 帧版本仍记录到 3 个轻微 support-overlap frame、最大深度 5.67 mm;该结果已被接受为当前 kinematic sequence adapter,但不得据此宣称通过最终 physics executability,后续仍须由 target-attributed contact、lift、hold 和 drop gate 验证。
严格 provenance 更正:官方 ContactGen optimizer 依赖预测的 (contact map, partition, UV),不存在不消费这些变量而又“完全原版”的 ContactGen loss。当前 map-free backend 实际调用 HOI-FHLI/DexGraspNet release 的 grasp_generation.utils.energy.cal_energy,ContactGen只表示proposal/hand-prior来源与方法谱系。2026-07-21同一cup frame-97、seed41 leave-one-out确认:normalized contact开启、statistical pose prior关闭、differentiable hand-object penetration关闭、topology opposition关闭或inward avoidance关闭都会分别触发contact、penetration或naturalness failure;GRAB、soft self-penetration、force closure、coverage与finger/arm/root soft priors各自单独移除并不导致cup失败,但全部同时移除会使GRAB score升至105.19而失败。完整表见独立报告Section 5。正式8-object结果继续使用已经跨对象验证的保守full configuration,不能把cup单项非必要误写成跨对象可删除。
13.2 Task-aware grasp 与 full-body HOI 开源 baseline 复现计划(2026-07-21)
当前失败不能继续仅归因于IK或优化权重。book存在手掌朝下、无有效closure,leatherbook手型不自然,basket没有选择handle,thin cushion没有形成有效双手对置;同时strict official CWGrasp在book上虽达到3.4--4.5 mm CGrasp-to-SMPL-X coupling RMSE,最终手部仍有约33--34 mm最大物体穿透。由此必须把三个问题分开验证:task/affordance决定抓哪里和用几只手、hand proposal是否无穿透且可承载、hand与full body是否自然耦合。Section 13.1的8/8 static PASS只表示旧静态几何gate通过,不再被解释为功能抓取成功,也不得直接进入完整HOI sequence或physics baseline训练。
复现优先级固定如下;不无差别接入更多单手grasp generator:
| 优先级 | 官方开源 baseline | 严格复现要回答的问题 | 在本项目中的边界 |
|---|---|---|---|
| P0 | Text2HOI | text + canonical object mesh/scale能否预测正确contact region、left/right/both hand与无明显穿透的hand-object motion;重点检验book左手、basket handle和cushion双手两侧 |
第一轮只运行官方checkpoint/inference/refiner,不接KIMODO、不加入自定义loss,也不把其contact map当作已经通过physics验证的grasp |
| P1 | DiffGrasp | 其固定30帧object context能否在指定grasp step生成合理的交互手选择、手指接触和full-body grasp pose | 30帧只满足模型内部条件;正式输出与验收仅取对应grasp step的单个full-body keyframe,不把它当作时序baseline |
| P2 | FLEX | 联合优化GrabNet hand latent、VPoser body、approach/root是否能解决固定hand target与body scaffold不兼容导致的异常肩肘腕和弯腰 | 只作book/leatherbook single-hand coupling control;其right-hand、非任务语义、非bimanual限制必须如实保留,不镜像后宣称原生左手能力 |
| P3 | GraspTTA | test-time contact consistency能否以较低接入成本改善single-hand closure/penetration | 只作book/leatherbook hand-only诊断;不作为task-aware、bimanual或full-body候选 |
TOHGS的task-aware contact map、BimanGrasp的双手region initialization/force-closure/SDF,以及OpenHOI的open-vocabulary affordance grounding只进入机制借鉴列表。除非确认公开checkpoint、官方inference和数据边界可以在实际SAGE mesh上复现,否则不提升为正式baseline;BimanGrasp是robot-hand方法,不得与MANO/SMPL-X结果直接排名。
grasp-keyframe 最小诊断矩阵
所有方法必须读取实际triangle mesh和实际metric scale,不使用bbox替代,不按object name/category进入solver分支。benchmark可以使用task文本和人工登记的预期交互语义作为评估标签,但这些标签不得变成针对某个对象的loss或顶点hard code。
| Case | Task condition | 要验证的首要命题 |
|---|---|---|
| book | pick up the book with the left hand |
active hand正确;不是手掌压在封面上的无closure接触;最终grasp通过collision与load-bearing gate |
| leatherbook | 对应左手pick文本 | 手型自然,arm/hand deviation有限,且不是以穿透换contact |
| basket | lift the basket by its handle |
task-conditioned contact集中在可提举functional region;不能仅因全物体最近表面而抓篮身 |
| thin cushion | pick up the cushion with both hands |
native two-hand decision正确;两手contact sets在物体上形成可承载的空间分布,而非同侧贴触 |
每个official reproduction先保存原生输出、官方score和逐样本可视化,再运行统一的只读exact-mesh audit。当前阶段只验收单个grasp keyframe,统一audit至少报告:active hand、contact part coverage、task-conditioned contact localization、最大/分位penetration、>1 mm内点比例、self-penetration、canonical六方向与抗重力wrench residual、双手contact-set separation/opposition以及hand/arm/body deviation。closure/anti-gravity不得在penetration gate之前排名;嵌入物体内部的手即使wrench residual很低也直接判失败。contact persistence、lift、hold、drop属于选出keyframe backend并接回完整HOI后的下一阶段,不得反过来要求单帧generator输出时序。数值阈值必须先在各方法官方成功样本上校准并冻结,再盲测项目case,不能观察单个cup/book后单独放宽。
决策与接入规则
- 下一项严格复现固定为Text2HOI P0;先完成上述四个case的official inference和contact/hand visualization。只有它在basket/cushion上显示出比geometry-only ContactGen/CGrasp更正确的functional region或hand-count信息,才把其输出抽象成通用的
task + geometry -> grasp region + active hands接口。 - 随后运行DiffGrasp P1;其
T=30是checkpoint的内部输入contract,项目只取grasp frame对应step作为单个full-body keyframe,与其他方法按同一静态gate比较。 - P0/P1未通过后,按
FLEX -> GraspTTA顺序运行必要fallback。FLEX检验single-frame full-body coupling;GraspTTA隔离single-hand contact-consistency。两者的right-hand-only、非task-aware和非bimanual限制必须保留,不能靠镜像后宣称原生能力。 - 最终候选的general+simple数据流固定为:
task semantics + object geometry/scale -> contact/affordance region + active hands -> collision/closure-valid hand refinement -> whole-body coupling -> physics execution。不得重新引入object-specific loss、cup opening规则、basket handle顶点表或以manifest传递运行时状态。 - 新baseline先通过原生复现与统一exact-mesh单帧gate,才允许成为grasp-keyframe候选;候选接回完整HOI后还必须通过physics sequence gate,之后才允许替换当前backend并重新训练最新target-attributed-contact OmniGrasp baseline。否则仅记录为诊断证据或可借鉴组件。
Text2HOI P0 实测结论(2026-07-21)
P0使用官方commit 9643c209f08d7ed870095cea78c7244e4fd42、官方GRAB CLIP/MPNet/PointNet/contact-CVAE checkpoint和官方1024点FPS/centroid/max-radius normalization。项目侧唯一数值边界是以layout_json + object_id解析actual metric triangle mesh,替代官方封闭的object-name lookup;book、leatherbook、basket和thin cushion均固定seeds 0..7,没有对象名称分支、functional-region顶点标注或bbox替代。通用入口为tools/text2hoi/run_p0_contact_probe.py,原始报告位于output/auto_experiments/20260721_text2hoi_p0/contact/,交互式查看器为tools/visualization/view_text2hoi_p0_contact.py。
必须先校正对contact coverage的解释。官方GRAB对照中,Play a flute with both hands.的p>0.5覆盖率均值已经为61.04%、单seed范围为41.41%--82.32%;Drink cup with right hand.均值为38.33%。原因是Text2HOI训练标签表示完整轨迹中任一hand joint距object sampled vertex小于2 cm的并集,不是单一grasp frame的精确物理接触面。因此项目book 43.03%、leatherbook 43.69%、thin cushion 41.33%以及basket 72.49%不能仅因map diffuse而判失败;official calibration保存在output/auto_experiments/20260721_text2hoi_p0/official_grab_calibration/。
contact-only P0目前记录以下两个无对象hard code的实验事实;它们不构成对完整hand-motion/refiner的early-stop:
Pick up the cushion with both hands.被官方hand selector判为right-only;book与leatherbook的left、basket的both则正确。active-hand语义在正式测试矩阵中已经出现确定错误。- 对同一basket mesh保持checkpoint、FPS点、hand count和seeds完全相同,只替换task phrase。
handle对bottom的matched-seed contact map为Pearson0.888 +/- 0.077、cosine0.984 +/- 0.006、p>0.5Jaccard0.887 +/- 0.036、mean absolute probability difference0.076;两者几乎相同。handle对both sides则为Pearson0.504 +/- 0.243、cosine0.885 +/- 0.044、Jaccard0.659 +/- 0.083,说明模型并非完全text-insensitive,但没有可靠区分本项目关键的handle与bottomfunctional contact。完整对照见output/auto_experiments/20260721_text2hoi_p0/basket_prompt_contrast/prompt_contrast.json。
最终资产审计必须区分SMPL-X与standalone MANO:初始workspace已有完整的SMPL-X male/female/neutral模型,但没有Text2HOI所需的standalone MANO_LEFT.pkl。2026-07-21已通过用户授权的MANO官网账号下载官方mano_v1_2.zip,并将真实MANO_LEFT.pkl与MANO_RIGHT.pkl安装到原版期望的submodules/Text2HOI/data/mano/mano_v1_2/models/;LEFT SHA-256为c4022f7083f2ca7c78b2b3d595abbab52debd32b09d372b16923a801f0ea6a30。Text2HOI隔离环境也按官方install.sh从NumPy 1.24.3修正为1.23.5;未经修改的build_mano_aa()已同时成功构建左右778顶点、1538面MANO层。MANO资产阻塞现已解除,不能再作为不运行完整refiner的理由。
因此P0当前状态修正为:代码、权重、官方contact语义、项目actual-mesh contact adapter和左右MANO loader均已核验,但完整hand-motion/refiner及其grasp-keyframe抽取尚未完成,Text2HOI未被完整判负。hand-selector错误和functional-phrase对照只否决“直接采用contact estimator作为正式semantic backend”,不能替代对完整refined hand keyframe的几何验收。下一步运行官方coarse motion与refiner,只抽取最佳grasp frame进行统一exact-mesh gate;不得添加人工hand override、handle vertices或对象专用修正。
DiffGrasp P1 单帧实测结论(2026-07-21)
P1使用官方commit de64536ac00920bed224c77fb1702f553621ff49与E329_model.pt;checkpoint以strict=True完整匹配33,755,690个参数。项目adapter严格复用官方metric BPS basis、actual mesh到4000 vertices的通用decimation、只减human首帧XY的canonicalization以及row-vector object rotation convention。SAGE cup的模型内部context固定为源frames [68,70,...,126],即30 Hz到15 Hz的30个点;正式输出只取source frame 98对应的DiffGrasp step 15,保存为单个full-body grasp keyframe。通用入口为tools/diffgrasp/run_p1_keyframe.py,30帧不作为项目输出时序。
release与论文之间有一个必须显式保留的协议差异:论文描述inference contact label由generated wrist距离推导,但公开代码实际从GRAB test sample读取ground-truth obj_hand_contact,没有发布自动阈值或推理实现。因此项目分为无guidance model-only smoke和明确标作privileged的reference-geometry contact schedule;后者只从同一reference hand mesh与actual object mesh的统一距离contract得到[left,right],没有对象名称、cup规则或手工active-hand override。
正式privileged对照在seeds 17,23,42,73,101上结果几乎完全相同:frame-98 left-hand minimum object distance为84.00--84.50 cm,right-hand为20.35--20.46 cm,没有任何seed进入2 cm接触范围;human minimum Z约-9.7 cm。可视化显示checkpoint自发采用右手reach,而项目reference要求左手;更重要的是右手本身仍离object约20 cm。该失败不是时序连续性评价,而是指定grasp keyframe已经没有形成接触。原始结果位于output/auto_experiments/20260721_diffgrasp_p1_sage_cup_keyframe_reference_guided/。
P1结论固定为:DiffGrasp release不输入task text或active-hand condition,且公开guidance依赖oracle contact schedule;在当前SAGE OOD geometry/neutral identity上,即使提供privileged left-contact schedule也不能把错误侧或远距离reach修正为grasp。它不提升为grasp-keyframe backend,后续不通过扩大时序窗口或增加carry/lift loss继续调参。
FLEX 与 GraspTTA fallback(2026-07-21)
FLEX官方commit为46d4a7638858f4303b1c90360d803dad4474d7ca。代码审计确认它原生就是object mesh + 单个object pose + obstacle meshes -> full-body grasp keyframe,不需要trajectory;优化变量为VPoser body latent、GrabNet right-hand latent、human root translation/global orientation与approach angle。公开sbj.zip、PGP、object info、GrabNet coarse/refine、MANO_RIGHT、4096D BPS和本地licensed SMPL-X均已补齐,但workspace没有FLEX要求的licensed VPoser v2 V02_05_epoch=13_val_loss=0.03.ckpt。不得以zero/random VPoser冒充官方效果,因此strict FLEX在进入推理前标记为asset-blocked。其release同时固定right hand,不原生支持left/both;即使以后补齐VPoser,也只能先作为right-hand full-body keyframe control。
GraspTTA使用官方commit ef7fcfab1477a5f3b8a8e2057fb8614087361028、官方model_affordance_best_full.pth与model_cmap_best.pth。正式adapter为tools/grasptta/run_p2_keyframe.py与utils/grasptta/p2.py:读取actual triangle mesh,按release相同的3000点、bbox diagonal scale和随机camera transform生成right-MANO proposal;从32个model-only proposals中用统一近表面预算选择8个,并对每个候选独立运行官方300步SGD TTA,最后映射回同一个object-local frame。输出严格是8个互相独立的hand grasp keyframes,没有time axis。
SAGE cup、seed17、GPU1的8个正式候选均未通过现有category-free final geometry gate(0/8):最大穿透为2.44--3.67 mm,但external-contact fraction仅0.509--0.750;候选分别因缺失thumb/有效opposition、外表面比例不足或>1 mm内点过多失败。视觉上若干pose明显比DiffGrasp更接近抓握,因此它可继续作为stochastic hand proposal参考,但official TTA只优化接触一致性,并未解决空心物体内外表面或可承载closure。正式报告与gallery位于output/auto_experiments/20260721_grasptta_p2_sage_cup_formal/。
另有两个不能隐藏的release边界:GraspTTA是right-hand、hand-only、无task text、无bimanual、无full body;其MANO fork虽然接受betas=参数,但LBS实际使用registered zero-beta tensor。adapter没有修改这个官方行为,而是将导出的beta显式归零并验证object-frame参数重建hand vertices误差小于2e-6 m。因此当前GraspTTA结果不能直接写回Kimodo fixed-shape left-hand scaffold,更不能因单个近接触pose而替换现有backend。
本轮正式顺序结论为:Text2HOI P0未可靠给出functional region/hand count,DiffGrasp P1未在grasp keyframe形成接触,FLEX受缺失licensed VPoser阻塞,GraspTTA能生成接近物体的单手proposal但0/8通过最终geometry gate。四者均不直接替换当前backend;最值得保留的机制是GraspTTA的contact-consistency作为proposal/refinement对照,以及FLEX在资产补齐后的full-body coupling control。任何后续组合仍必须保持actual mesh + active hands + scaffold的general接口,不增加对象名称、handle顶点或cup专用规则。
13.3 CHORD contact-wrench 调研结论与预注册实验(2026-07-21)
CHORD 是 NVIDIA 2026 年提出的 Isaac Lab long-horizon dexterous manipulation RL framework。它不是新的 grasp-keyframe generator;其核心是把 human reference contacts 与 rollout contacts 都转换为 object-centric friction-cone wrench support,并奖励 robot 复现 reference 能诱导的 object force/torque directions。NVIDIA 项目页 截至本次审计仍标注 Code soon,因此下面只预注册 paper-derived mechanism ablation,不登记为 official reproduction。
CHORD 对每个 object part、每只手在 object frame 中收集 contact position p_i 和 surface normal n_i,将 Coulomb friction cone 离散为 edge forces,形成 primitive wrench w_i^j=[f_i^j, p_i x f_i^j] 和 wrench matrix W。它在预采样 6D unit directions B 上计算 sigma=max_col(B^T W)。full CWS reward 让 rollout sigma_r 落在 reference [(1-beta)sigma_h, (1+beta)sigma_h] 的容差带,并单独惩罚 unintended/missed contacts。对于 third-person whole-body reconstruction 等 finger/contact noisy reference,论文不再强匹配 sigma_h,而使用 reduced force-closure reward:统计 rollout 对 canonical wrench directions 是否具有超过 epsilon 的正 support。
这与当前两个问题直接对应:
- 旧
8/8 static PASS中 book 的近表面/弱对置接触可以通过 geometry gate,却不一定能抵抗重力或 torque;单帧 audit 需要 anti-gravity 和 canonical wrench support。 - KIMODO human/object trajectory 可以提供 task intent,但 reconstructed finger contact 未必准确;完整 teacher 首版不应强行做 full reference CWS matching,应先测试 reduced force-closure support。只有 reference contact positions/normals 通过 exact-mesh audit 后,才升级为 full CWS。
CHORD 的实验结果支持 contact-wrench 作为 reward,而不是只看 contact position:box grab success 为 0.702,position-only 为 0.334;mixer use 为 0.894 对 0.624。其 hand-only-to-whole-body 12-task ablation为 0.925 对 0.217;1,831 runs 中 normalized CWS 与 completion ratio 的 Pearson correlation 约 0.80。但这些结果同时使用 VOC curriculum、arbitrary reference-state resets、reset 后 20 step full assistance、task-aligned wrench disturbances和retargeted-motion residual prior,不能把提升全部归因于单个reward。
预注册两阶段实验如下。
K0:只读 grasp-keyframe functional audit
- 输入固定为 actual triangle mesh 与现有 before/after keyframe,不重新优化手型;
- 先过 penetration、self-collision 和 body-naturalness gates,再计算 friction-cone wrench;
- 报告 anti-gravity required-wrench residual、canonical
+-Fx/Fy/Fz/Tx/Ty/Tzsupport/residual、wrench primitive rank和contact effort; - 在官方成功 grasp 或 physics-stable positives 上校准并冻结阈值,再盲测 8-object;不得观察 book 后单独设置 book 阈值;
- K0 失败只能将旧 static
PASS降级为 functional fail,不能通过增加 object-specific contact region 修补。
K1:完整 HOI teacher contact-reward ablation
保持相同 observation、pure PPO、human/object rewards、reset、VOC schedule与seed,只替换 contact supervision:
C0 target-attributed binary contact
C1 contact-position guidance
C2 reduced force-closure wrench support
C3 full reference CWS matching(仅可靠 reference)
所有 C* 都必须从 target-attributed Object-Finger contact position/normal 构造,不能使用被 nightstand/support 污染的 aggregate hand force。若 Isaac Gym 只能提供 aggregate body force + nearest-target geometry,结果必须明确标为 approximate CWS,不得与 CHORD Isaac Lab contact query 等价。K1 同时记录 contact persistence、lift、hold、drop、human tracking、object error和VOC scale;最终 eval 的 VOC 必须为零。
CHORD 还给出三个不能漏掉的 protocol 启发:第一,reference 是功能指导而非严格 object pose ground truth,其 rollout termination 使用 15 cm/40 deg object deviation,明显宽于旧 strict tracking;第二,full CWS 能表达 push/slide/lever 等 non-force-closure 阶段,不能把整条 HOI 都替换成 grasp closure;第三,论文在 contact noise 很大时发现 reduced FC 更稳但 dexterity 更低,因此 C2 与 C3 必须按 reference quality 分流而非混合加权。
K0 与后续 differentiable keyframe 实验已于 2026-07-21 完成。mu=0.8 external-contact audit 中,旧 cup/book 的 anti-gravity residual 为 0.062/0.202,canonical mean residual 为 0.403/0.518,证明 wrench metric 能识别旧 book 的静态假阳性倾向。新增 differentiable wrench loss 后,当前 book 最终结果达到 0.107 anti-gravity、0.470/0.840 canonical mean/max,同时保持 GRAB 78.8、wrist delta 13.3 deg、penetration 1.30 mm,全部 exact gates 通过。
但固定强权重不能无条件成为默认设置:w=30 会使已有稳定 cup 的 external canonical mean 从 control 0.199 退化到 0.439,w=100 还会导致 GRAB failure。因此正式 K0.5 协议升级为 general best-of-two,而不是 object-name 分支:统一产生 standard refinement 与 wrench-refined candidate;先执行 external contact、penetration、pose/self-separation、wrist/arm/body gates,再以 exact external anti-gravity/canonical residual 排序。wrench loss 是候选生成信号,dense exact wrench 是独立选择信号。完整 sequence 的 C0--C2 仍按原预注册执行;单帧结果不能替代 lift/hold/drop physics validation。详细单变量结果见 docs/exp/contactgen_scaffold_map_free_refinement_20260721.md。
K0.5 的剩余六对象批量验证也已完成。单手 leatherbook/notebook 的 w30 anti-gravity residual 分别由 0.354/0.268 降至 0.306/0.145,但分别因 7.90 mm 穿透以及 penetration+GRAB gate 未成为 strict winner。双手 round cushion、basket、thin cushion、instrument tray 的 w30 combined anti-gravity residual 全部没有优于 control;basket/tray 的 strict winner 均为 control,round/thin 两路则都缺 inter-hand opposition。正式结论因此收紧为:单手继续使用 general best-of-two;双手暂不启用当前逐手 w30,必须先把 loss 改为左右手联合 contact set 的 6D wrench objective,不能通过对象分支或继续放大权重绕过。
13.4 正式 hand_object_interaction 轨迹与 OmniGrasp 重训输入(2026-07-23)
正式 HSI 生成接口已经收敛为单一跨阶段领域对象 InteractionKeyframe,数据流为 pick/place interaction -> constraints -> one KIMODO call -> 45D hand bake -> hand-local object binding/release。统一 scaffold/refiner 只有在不降低已验收 pick 质量时才采用;若有界验证失败,完整冻结 golden pick,只独立改造仍然 general 的 place 规则。两条分支都禁止对象名称、support 类型、cup 几何和固定 PLACE_WRIST_OFFSET 分支。
cup-left 的统一候选 output/auto_experiments/20260723_cup_left_hand_object_interaction_final_v14/motion.npz 只通过了 mesh/时序层面的 gate,现已撤销“正式 motion”资格。保持其余实验定义不变的 1024-env Strict OmniGrasp fresh run 在 epoch 100--500 的 deterministic eval 始终终止于 frame 114--115,最大 lift 不超过 0.47 cm,实际 target-attributed contact 始终只有 thumb links、没有任何 non-thumb finger contact;这说明候选没有形成 articulated-link force closure。v17 还另因 place frame 569 的单帧 acceleration spike 被拒绝。
因此唯一正式设计固定为:完整保留 output/auto_experiments/20260723_cup_left_map_free_smooth_root2d_10f/motion.npz 所对应的 accepted pick 生成规则,仅独立改造 general + simple 的 place 规则,使其达到近似 pick 质量;不得为了 API 对称牺牲 pick。内部 solver 可以非对称,但共享 InteractionKeyframe、坐标、quality evaluator、一次 KIMODO、hand bake 与 object binding/release。正式 pipeline 不提供 selector,不读取旧字段,也不包含兼容 adapter;仍禁止对象名称、support 类型、cup 几何及固定 PLACE_WRIST_OFFSET 分支。详细证据见 docs/exp/hand_object_interaction_domain_refactor_plan_20260723.md Section 11。
最近一版需要在最终 accepted-pick + general-place trajectory 上重跑的是 C-PAIR-A Target-Contact OmniGrasp:pure PPO、2456D actor observation、48D latent action、human reward weight 0.5、obj_rand_pos=False、target-attributed Object↔Finger contact、训练 clip [0,219);contact/lift frame 从新 reference 派生,table removal 固定为 frame 123。新实验只允许替换 motion/reference 及其输入派生 metadata;policy、reward、PPO、action、contact filter 和 table removal 不变。执行顺序固定为 reference articulated-link feasibility -> smoke -> 1024-env fresh train -> deterministic eval。验收必须同时报告 thumb 与 non-thumb target contact、lift/hold 和 human tracking;kinematic mesh grasp 不能再等价为 physics grasp success。
当前唯一正式候选已经更新为
output/auto_experiments/20260723_cup_left_hand_object_interaction_v20/motion.npz。它由 accepted pick rule 与 general place rule 完整重生:pick/place 为 frame 98/568,hand pose bitwise equal,place inherited hand-object local relation 实测 1.840 mm / 0.806 deg。正式容差统一为局部位置 ≤5 mm、旋转 ≤2 deg;先前 2 mm 过严,会拒绝几何上等价的 solver 输出。该规则只衡量 inherited rigid relation,不读取 object 名称、support 类型或 cup 几何。完整序列最大 active forearm/hand penetration 约 2.71 cm,按本轮约定作为允许到约 3 cm 的诊断量报告,不覆盖 contact/opposition、时序和物理执行硬门。
v20 的纯 PPO smoke 已完整跑通 2456D observation、48D latent action、target-attributed contact 和 [0,219) deterministic rollout;2-epoch smoke 的任务性能不作为收敛证据。由新 motion 自动派生的 contact-reward/lift/table-removal frame 为 97/106/123,属于 reference 输入 metadata 变化,不改变 policy、reward 公式、PPO、action 或 contact classifier。下一步是 v20 的 1024-env fresh bounded overfit,每 100 epochs deterministic eval,仍以 thumb + non-thumb target contact、lift/hold 和 human tracking 联合判定。
v20 epoch-400 的旧 strict 12 cm object-error ET 在 frame 161 提前结束,但同一 checkpoint 的 no-object-ET deterministic trace 已完整运行 219/219,最大 lift 51.24 cm、持续 lift 108 帧,并出现 thumb 与 non-thumb target-attributed contact;因此该 checkpoint 已发现可承载抓握,旧终止帧不能再直接解释为“抓取失败”。no-ET trace 同时暴露后段漂移:object position p95 1.179 m、human body mean 0.392 m,所以它只是诊断上界,不是合格结果。
当前 overfit 的 object-position early-termination curriculum 按用户确认显式改为 50 cm,训练与 deterministic eval 使用同一阈值并写入 experiment provenance。12 cm 保留为 strict diagnostic comparator;1000 m 仅用于 no-ET 定位。除了该 curriculum threshold,observation、reward、PPO、48D latent action、target-attributed contact、human IET、obj_rand_pos=False 和 frame-123 table removal 均保持不变。50 cm 的第一目标是获得正式 219/219 physics rollout,之后必须继续依据分段 object/human error、multi-finger contact、lift/hold/drop 和 target force 迭代,不能把“没有被 ET 截断”等价为最终 tracking quality。
旧 12 cm 训练得到的 epoch 400/500 checkpoint 在 50 cm deterministic eval 下分别推进到 180/183 帧;epoch 500 的最大 lift 55.55 cm、最长 lift hold 71 帧、最多 8 个 target-attributed active links,末帧 object error 50.27 cm。epoch-500 no-ET 仍能完整 219/219,但 object p95 1.274 m、human mean/p95 0.391/1.073 m。因此放宽 eval 本身不能修复后段漂移;正式下一阶段从 epoch 500 恢复,在训练端同步使用 50 cm,使 PPO 首次覆盖旧 ET 之后的状态,并继续每 100 epochs deterministic eval。
epoch 500→600 的首段 50 cm training 把 mean episode length 从约 154 提高到约 168;epoch-600 deterministic eval 达 184/219、最大 lift 54.36 cm、hold 72 帧、contact gate 0.942、thumb contact ratio 0.919、最多 8 links。抓握保持变稳,但完成帧相对 epoch 500 只增加 1,因此只再给同配置到 epoch 700 的有界预算;若仍停在 183–185,判定为 carry/human tracking 平台,不再盲目增加 epochs。
epoch-700 deterministic eval 随后显著推进到 206/219,最大 lift 54.83 cm、hold 95 帧、contact gate 0.963。这否定了“已在 184 帧平台”的假设,因此保持 lambda_human=0.5 和其余配置完全不变继续到 epoch 800,不提前引入 human-reward ablation。该 milestone 的 human mean/p95 仍为 0.324/0.750 m,最大 target-attributed force 64.7 kN;即使后续完整 219/219,仍需单独改进人体跟踪与不合理高力。
epoch-800 已首次完成 219/219 deterministic physics rollout:completion 1.0、final lift 51.12 cm、longest lift hold 107 帧、target contact gate 0.983;object position mean/RMSE/p95 为 0.100/0.183/0.438 m,没有触发 50 cm ET。这是当前 v20 motion 的首个完整可执行 pick-clip milestone。它仍未通过最终 joint gate:human body mean/p95 为 0.343/0.795 m,最大 target-attributed force 32.7 kN,index contact ratio为 0;因此正式 passed=false 保持不变。下一步先验证 no-ET 与 50-cm trace 一致并输出 physics rollout,再只对预注册的 outer lambda_human 做单因素 ablation,不能把完成帧数冒充最终 human-reference tracking 质量。
epoch-800 no-object-ET 独立复跑也完整 219/219,final lift 36.69 cm、hold 107 帧、contact gate 0.959、object p95 0.425 m、human mean/p95 0.338/0.693 m。两条 trace 不 bitwise equal,因为 runtime 明确为 torch_deterministic=False;但两次都完整并保持 lift/contact,证明完成结论不依赖 ET 记账。后续从 epoch 800 checkpoint 建立单独分支,只改变预注册的 lambda_human: 0.5→1.0,ET 仍为 50 cm,其余配置不变。
epoch-800 50-cm trace 的 Isaac Sim full-scene 左视角视频已输出到 output/auto_experiments/20260723_hand_object_interaction_v20_target_contact_omnigrasp_et50cm_resume500_1000e/evaluations/epoch_00000800_et50cm/physics_rollout_human_left_full_scene.mp4;renderer 直接使用 trace rigid-body transforms,replay body error为 0。最终帧确认杯子仍在手中,但人体上身/四肢明显偏离 reference,与 human-error 数值一致。因此它是可信的“完整 physics rollout”,不是合格 human tracker。
lambda_human=1.0 分支在 epoch 900 仍完整 219/219;human mean/p95 从 epoch-800 的 0.343/0.795 m 小幅降到 0.336/0.745 m,最大 attributed force从 32.7 kN 降到 16.2 kN,并首次出现 index contact ratio 0.190。代价是 contact gate从 0.983 降到 0.760、max active links从 7 降到 5。该结果只支持再给到 epoch 1000 的有界续训,不支持继续放大 human weight;若仍远高于 human gate,应判定 outer scalar不足以修复 PULSE latent policy 的人体漂移。
旧 20260718_fullref_intermimic_teacher_v8_phc_warmup checkpoint 的迁移诊断已判负:在当前 v20 reference 上虽完整 219/219,human mean/p95 为 1.399/2.179 m,且无 lift/contact。原因是旧 motion/shape 与 online RMS 分布不兼容;后续 human-only curriculum 若需要,必须在当前 v20/fixed-shape reference 上 fresh train。
current-v20 fresh human-only warm-up 已用相同 2456D observation、48D PULSE-X latent、frame-0 start 和原生 PHC/PULSE imitation reward从零训练。epoch 50/100/150/200/250/300/350/400 的 deterministic coverage 分别为 25/75/94/129/149/169/174/179 帧;对应有效区间 human position mean 为 10.18/9.84/8.60/8.81/8.62/8.83/7.58/7.01 cm,p95 为 18.92/16.90/15.77/16.25/16.59/17.38/16.08/14.85 cm。这证明当前 reference 在该架构中可逐段学习,但 epoch 350→400 只推进 5 帧,coverage 已开始平台;停止继续单独 warm-up。下一步先做 strict combined zero-step 诊断,再从 epoch-400 checkpoint 只切回正式 combined reward、target-attributed contact 和 50 cm object ET,训练到 epoch 500。该 checkpoint 只有在迁移后仍能同时保留完整 rollout、human tracking、target-contact 与 lift/hold 时,才可成为正式 curriculum。
strict combined zero-step 诊断达到 131/219,human mean/p95 为 6.77/14.60 cm,但没有 target contact 或 lift;frame 123 正式移除 support 后物体下落并触发 object ET。这证明 checkpoint/normalizer 迁移正确,也说明 human-only 本身不会凭空学会抓取。现从 epoch 400 只切回正式 combined reward、target-attributed contact 和 50 cm ET fine-tune到 epoch 500,目标是在保留低 human error 的同时学习 table-removal 前的承载抓握。
epoch 500 combined eval 仍停在 131/219;human mean/p95 为 8.01/16.12 cm,手到物体表面的最小距离约 3.78 cm,但 target-contact、lift 和 active target link 数仍全为 0。同预算的 from-scratch v20 已出现 target contact,说明 human warm start 抑制了 grasp exploration。保持配置不变追加最后 500→600 bounded budget;若仍零接触,则正式停止该迁移路线,而不是用更多 epoch 掩盖局部最优。
epoch 600 已出现 target contact:ratio 0.364、thumb ratio 0.394、最近 surface distance 1.73 cm,human mean/p95仍为 8.84/20.57 cm。但最多只有 2 个 active links、index ratio 0,最大 lift仅 0.08 cm,仍停在 131/219。它已跨过零探索门但尚未形成 force closure,因此保持 lambda_human=0.5 和所有其他配置不变续训到 epoch 700;下一门是 non-thumb contact、≥2 cm lift 与 rollout推进。
反向的 grasp→human-only 20-epoch 对照也失败:epoch 820 strict eval 只有 130/219,human mean/p95 27.87/48.42 cm,contact gate 0.188,最大 lift 0.89 cm;它破坏了承载抓握,却没有把 human 拉回 gate。并行新增一个预注册单变量分支:从 human epoch-400 初始化,grasp-discovery 阶段只把 lambda_human 临时降至 0.25,其余完全不变。若它发现 target contact/lift,必须随后恢复正式 0.5 再做完整联合验收。
lambda_human=1.0 到 epoch 1000 仍完整 219/219,object p95 0.403 m、final lift 44.20 cm、contact gate 0.967;human mean/p95 0.340/0.744 m 未优于 epoch 900 的 0.336/0.745 m,最大 attributed force反而升到 42.0 kN。因此停止继续调 outer weight或增加该分支 epochs。epoch 800保留为首个 contact-stable complete baseline,epoch 900保留为 human/force trade-off诊断;最终 human gate仍未通过。
13.5 2026-07-24 正式接口收口与 parity override
v20 时序视频已由用户明确确认;当前 baseline 的首要验收改为 object contact/grasp/lift/hold 和完整 rollout,human tracking error 继续完整报告, 但不再阻断本版 OmniGrasp 任务策略。该最新决定只改变实验判读优先级,不改变 reward、observation、policy、checkpoint 或历史 trace。
正式 hand_object_interaction 接口的独立复核随后补齐两个结构缺口:
scene direct-contact 路径已从旧 grasp_backend selector/baseline dispatch
传递图中拆出;InteractionKeyframe 已固化六种
phase × active_hand 合法组合及非法 schema/数值/shape 的 fail-fast 测试。
第二轮复核还发现 enabled pull 仍用旧 artifact schedule,而 canonical
consumer 需要内存 explicit-frame schedule;现已改为只读
frame_indices + (N,90) hand_pose 直接 handoff,并新增 producer→constraint→
hand-consumer 贯通测试。当前综合回归为 407 passed in 15.22s,
正式模块静态 selector/import
扫描、py_compile 与 git diff --check 均通过。
第三轮独立 reviewer 对该 enabled-pull 修复进行了 fresh-process 复审并给出
零阻断结论:内存 schedule 的 fade/hold 和完整 consumer 路径正确,
正式 import graph 未加载 grasp.py/grasp_backend.py,main pipeline 仍
只有一次 KIMODO 调用,也未发现 manifest-as-state 或 legacy schema 回流。
同 task plan、layout、seed 和正式 pipeline.run() 的 GPU 1 端到端 parity
生成位于:
output/auto_experiments/20260724_cup_left_hand_object_interaction_interface_parity_rerun
它与 v20 使用相同 canonical schema、597 帧、pick/place 98/568 和 left
hand;hand pose 在 pick/place 间 bitwise equal,carry relation drift
2.05e-7 m,place relation 0.518 mm / 0.246 deg,strict contact、
opposition、body-motion 和 binding continuity 全部通过。当前 candidate
相对 v20 的 wrist 差约 1.61 cm、root 差约 4.5–4.8 cm、hand-pose RMSE
0.090 rad,因此结论是领域/质量等价而非随机优化 candidate 的 bitwise
重放。完整机器记录见同目录 parity_report.json,并排 keyframe 审计见
v20_vs_parity_pick_place.png。
当前物理基线仍采用已完成训练的 v20 epoch-800 checkpoint:
219/219、最大/最终 lift 54.33/51.12 cm、hold 107、target-contact
ratio 0.9835。human mean 34.33 cm 说明它不是 full-reference human
tracker,但按本轮任务目标不再否决已经确认的 object-execution baseline。
13.6 2026-07-24 InterMimic 最新 full-sequence 重跑 override
InterMimic 的项目重跑输入固定为正式 main pipeline 重新生成并通过 v20 parity 验收的 motion:
output/auto_experiments/20260724_cup_left_hand_object_interaction_interface_parity_rerun/motion.npz
该 motion 为 597 帧,pick/place 为 98/568,包含统一的
22×3×3 body local rotations、90D absolute hand pose、dynamic-object
identity/pose 和 task-stage metadata。InterMimic consumer 在边界处根据
layout_json + dynamic_object_id 读取真实物体 mesh,并从 canonical Kimodo
shape 生成 beta16 upright humanoid XML、591D reference 和 52-body 三态
reference contact;canonical motion 不需要重新内嵌 beta、v_template 或
dynamic-object mesh。
正式执行顺序覆盖本文前面所有“先 [0,219)、再 full sequence”的旧计划:
latest 597-frame motion
↓
fresh shape-aligned 591D reference + upright XML conversion
↓
1-env GPU runtime smoke
↓
4096-env official-aligned InterMimic scratch training on full [0,597)
↓
1-env deterministic full [0,597) evaluation
这里“smoke 通过后扩展”指从 1-env runtime smoke 直接进入 4096-env full
training,不再执行 [0,219) learning gate。训练保留官方
episodeLength=300 / rolloutLength=300 / horizon=32、Hybrid init、PSI、
IET、3198D official observation、153D direct PD action、reward、high-fidelity
physics 和 seed 9885;因为 full motion 长于 300,训练可以按官方逻辑使用
start-state/PSI 分布,但最终验收必须从 source frame 0 deterministic 连续运行
完整 597/597。
必须 fresh start:
- 不使用
--resume-from; - 不复用旧 reference cache;
- 不恢复历史
[0,219)epoch-2000 或 full epoch-1500 checkpoint; - 旧 checkpoint 只用于确认 PPO/runtime plumbing 和预估收敛预算。
1-env smoke gate:
- reference shape 必须为
(597,591); - runtime 必须为 52 bodies、153 DoFs、3198D observation 和 153D action;
- generated XML hash、reference body-shape hash 与 runtime asset 必须一致;
- frame-0 root、52-body pose 和 153D DoF reset 误差分别通过既有 exact gate;
- 不允许 second runtime height fix;
- 至少完成一次有限步 GPU rollout,所有 observation/reward/action finite。
4096-env 正式训练保持最多 5000 epochs 的 bounded budget,每 500 epochs
保存 checkpoint 并执行同 GPU 的 1-env deterministic full evaluation。若出现
明显进展,可额外在关键 transition 附近加密 checkpoint,但不能改 reward、
observation、contact label、IET、PSI、physics 或 motion。
最终通过条件:
- deterministic completion
597/597,无 human/object/interaction-graph/ contact IET; - 在 reference-required interval 建立并保持指定左手接触;
- 完成 pick、lift、carry、place 和 release,物体无 catastrophic launch/drop;
- 报告 human body/arm/hand error、object position error、弱化后的 rotation error、contact P/R/F1、lift/hold/place/release、penetration 与 wall time;
- kinematic motion 质量和 1-env smoke 不能替代 physics rollout success。
历史定位同时固定:
20260718_intermimic_target_contact_0_219_scratch_5000eepoch-2000 的219/219、human mean8.14 cm、object RMSE5.12 cm、lift41.83 cm仅作为旧 motion 的成功 pick 诊断;20260719_intermimic_target_contact_full_0_596_scratch_5000e已证明 shape-aligned full training plumbing 可运行,但其 source motion 仍是旧20260711_hsi_generation_world_pose_fix/left/motion.npz;epoch-1000 deterministic 只到 frame253/597,epoch-1500 checkpoint 不得 resume;20260720_intermimic_kimodo_runtime_gate是旧 motion 上的通过态 runtime gate,不是新 motion 的 smoke 或学习结果。