跳转至

Grasp Refinement

最后更新:2026-07-24。

本实验负责判断 category-free grasp proposal/refinement 能否为 generated motion 提供可信 keyframe。当前有 8-object static geometry evidence,但尚无 physics lift/hold 证据;本页不负责整段 teacher tracking,后续见 Physics Teacher Selection

当前结论

  • 已验证: official ContactGen 的 first sample 不稳定;单手必须 best-of-N,测试的 mirrored bimanual adaptation 为 0/16 usable pairs。
  • 阶段性: scaffold-initialized map-free refinement 在 8 个对象上形成了 static exact-mesh gate 与完整 ablation。
  • 当前推断: single-hand wrench signal 可改善部分 precision grasp,但 fixed global weight 不稳;bimanual 需要 joint wrench objective。
  • 不能支持: isolated hand/object geometry 不能证明 dynamic grasp、lift、hold 或 full pick–place。

Official ContactGen proposal baseline

固定 official checkpoint、seed 17、每对象 4 samples,并报告全部 48 个 samples。single-hand 中 cup strict wrap 为 2/4,book 只有 relaxed ≤30 mm proposal tolerance 下 1/4,notebook 只有 1/4 pinch geometry;leatherbook 无 usable candidate。四个 two-hand objects 的 16 个 mirrored pair 全为 0/16 usable。

该结果只支持把 ContactGen 用作 stochastic single-hand proposal source。协议与全分母原始记录保存在 2026-07-19 benchmark,稳定 summary 为:

output/auto_experiments/20260719_contactgen_task_object_benchmark/benchmark_summary.json

1. 目标与边界

本实验验证一个不依赖 object category、object name 或人工 contact map 的 grasp-keyframe refinement:

frame-97 rigidly bound natural-reach scaffold
        + actual target-object triangle mesh
        + task-declared active hand set
HOI-FHLI/DexGraspNet map-free energy + SMPL-X arm/finger joint refinement
independent exact-mesh geometry and pose audit

cup 的“拇指与其余手指在外壁两侧形成环握”只是一条 single-hand wrap regression,不是对象特判。公共实现不读取 cupbaskettray 等类别,不假设杯口方向,也不使用 world up axis 推断抓法。优化后的 keyframe 仍不是动力学成功证明;lift、hold 和 contact persistence 必须在后续 physics rollout 单独验收。

2. 通用输入与可优化变量

正式输入只有:

  • frame-97 natural-reach scaffold;
  • layout 中目标交互物体的真实三角网格及当前 6D pose;
  • task semantics 给出的 active hand set:leftrightboth

保持非交互身体完全不变。每只交互手联合优化 collar、shoulder、elbow、wrist 与 45D fingers;人体只允许水平整体平移,硬上限为 15 cm,不允许用垂直平移掩盖高度或坐标错误。

3. 最终 loss 与候选选择

这里必须严格区分模型来源。官方 ContactGen optimizer 必须消费网络预测的 (contact map, partition, UV),因此不存在字面意义上的“官方 ContactGen map-free loss”。本实验的 map-free refinement 不消费这些预测量;它复用 HOI-FHLI/DexGraspNet release 的官方 grasp_generation.utils.energy.cal_energy,包括 force-closure、surface-distance、penetration 和 statistical pose prior,再加入下列 scaffold coupling:

  • interaction-arm deviation prior;
  • finger-pose delta prior;
  • horizontal root-translation prior;
  • exact target-mesh hand penetration loss;
  • GRAB full-covariance hand-pose prior;
  • anatomical contact coverage;
  • single-hand 的 generic exterior opposition;
  • inward-facing surface avoidance。

最终配置不依赖 normalized contact,不把自穿透 soft loss 作为主要优化项;自穿透由 fixed-beta MANO exact candidate gate 兜底。这样避免 soft self-collision 项把正常闭合手型推开,同时拒绝灾难性的手指塌缩。ContactGen 在这条 pipeline 中表示 proposal/hand-prior 来源和实验谱系,不表示当前 loss 仍调用其 learned contact-map optimizer。

4. General acceptance protocol

4.1 共同 gate

  • 使用目标物体的真实三角网格,而不是 bbox;
  • contact 距离为 5 mm
  • exact 最大穿透不超过 3 mm,深于 1 mm 的 hand vertices 不超过 16
  • GRAB full-covariance score 不超过 80.08
  • fixed-beta MANO minimum keypoint separation 不低于 3 mm
  • collar/shoulder/elbow/wrist 相对 scaffold 的变化不超过 15/30/40/30°
  • 非交互身体最大旋转变化不超过 0.05°
  • 水平 root shift 不超过 15 cm,垂直 shift 为零。

外表面由 mesh triangle normal 与 object-center radial direction 的关系判断,不使用类别或 privileged up axis。

4.2 Single-hand topology

单手只根据 object-local mesh 的无旋转形态比例区分 precision 与 wrap,不读取语义标签:

  • wrap:至少 80 个 exterior contact vertices,thumb 至少 10,至少两个其余 finger region 各 10
  • precision:至少 40 个 exterior contact vertices,thumb 至少 5,至少一个其余 finger region 为 5
  • exterior contact fraction 至少 75%
  • thumb 与有效 finger contact patch 需要满足通用的空间/法向对置。

因此 cup 用 wrap gate 诊断外壁环握,薄 book/notebook 可以合法使用 precision pinch;规则不是“所有对象都必须像杯子一样环握”。

4.3 Bimanual topology

双手不复用单手 thumb-finger wrap:

  • 每只手至少 40 个 exterior contact vertices;
  • 每只手至少两个 anatomical regions,各至少 5 个 exterior contacts;
  • 左右 contact sets 中,各至少 5 个 vertices 参与有效 distributed pair;
  • pair separation 至少为 object bbox diagonal 的 25%
  • 相对 object center 的 radial dot 不超过 0.5

这是联合接触集合的空间分布约束,不是对象的“左右轴”特判。mean contact normal opposition 只保留为诊断,因为 cushion、tray 或开口容器可能由相隔较远但不严格法向相反的支撑区域承担;是否真正能抗重力仍交给 physics lift/hold gate。

5. 单变量实验

5.1 Strict cup frame-97 leave-one-out

全部对照固定同一 frame-97 scaffold、object mesh、seed 4164 candidates、200 iterations 和同一 exact evaluator。表中只改变所列一项;control 的 exterior contacts / penetration / GRAB / root shift 为 100 / 2.52 mm / 64.77 / 5.28 cm

Variant Exterior contacts Max penetration GRAB Root shift Exact result 结论
control 100 2.52 mm 64.77 5.28 cm PASS strict baseline
normalized contact on 47 1.66 mm 42.63 9.58 cm FAIL contact 不保留;归一化削弱了绝对 contact coverage
statistical pose prior off 105 3.05 mm 61.81 9.08 cm FAIL penetration 必须保留
GRAB prior off 102 2.91 mm 61.80 4.48 cm PASS cup 单项非必要,但可作跨对象候选排序
soft self-penetration 100 83 1.34 mm 63.26 14.90 cm PASS 没有改善总协议且 root 接近上限;不保留 soft term
force closure off 88 2.20 mm 48.80 4.24 cm PASS 静态 cup 单项非必要;只可作为 physics-oriented regularizer
differentiable hand-object penetration off 101 3.29 mm 36.51 6.71 cm FAIL penetration 必须保留
topology opposition off 60 1.42 mm 56.98 6.94 cm FAIL contact 必须保留
inward-surface avoidance off 115 2.57 mm 98.58 8.88 cm FAIL naturalness 必须保留
anatomical coverage soft term off 92 2.09 mm 72.17 8.93 cm PASS cup 单项非必要;双手/跨对象仍保留
finger-delta prior off 126 2.36 mm 78.46 10.42 cm PASS 单项非必要,但自然度裕量明显变小
arm prior off 83 2.48 mm 78.33 10.07 cm PASS 单项非必要,但 self-separation 仅 3.49 mm
root-translation prior off 99 1.32 mm 75.91 11.18 cm PASS hard 15 cm gate 可兜底,soft prior仍提供裕量

5.2 组合实验

leave-one-out 不能证明若干项可以同时删除,因此另做三条组合:

Combination Exact result 观察
同时删除 force closure、GRAB、coverage、finger/arm/root priors FAIL GRAB score 105.19,说明 soft priors 存在互补
删除 force closure、GRAB、coverage,保留 finger/arm/root priors PASS penetration 1.51 mm,GRAB 69.02
删除 force closure、coverage、finger/arm/root priors,只保留 GRAB PASS penetration 2.27 mm,GRAB 60.03,root 2.86 cm

正式 8-object 结果使用的是更保守且已经跨对象验证的 full configuration:保留 force closure、GRAB、coverage 和轻量 scaffold priors。不能由 cup leave-one-out 宣称它们各自“必要”;保留理由是 8-object robustness 已有直接证据,而简化组合目前只有 cup 证据。

5.3 Named terms 的最终处置

  • normalized contact:关闭;同 seed 对照造成 contact failure。
  • statistical pose prior:保留;关闭后 penetration failure。
  • GRAB pose prior:保留为跨对象候选排序/自然度 margin,非 cup 单项必要。
  • self-penetration:不使用 soft loss;使用 fixed-beta MANO exact hard gate。
  • force closure:保留为 physics-oriented regularizer,不能由静态 gate 宣称必要。
  • penetration projection:不使用 post-hoc rigid projection;使用 end-to-end differentiable target-mesh penetration,并由 exact triangle gate验收。关闭该项会失败。
  • shared-direction loss:当前没有 detached ContactGen hand 与 body wrist 两套方向变量,因此该旧 adapter term 不适用;接触方向由 topology opposition/inward terms 处理。
  • full-hand coupling loss:当前手臂和手指直接由同一个 SMPL-X forward 产生,不存在需要额外耦合的独立 MANO mesh;显式 coupling 会重复约束,故不加入。

5.4 累积结论

  1. 官方 ContactGen first sample 不稳定,必须 best-of-N 或直接做 batched scaffold refinement。
  2. fixed body shape 是必要条件;proposal、SMPL-X forward 与 final audit 必须使用同一 beta contract。
  3. 只最小化 surface distance 会出现同侧接触和 cavity/inner-wall 偏好,不能定义有效 grasp。
  4. GRAB/statistical pose prior 能抑制不自然手型,但不能替代接触拓扑。
  5. hand-object penetration loss 加 exact triangle gate 后,8 个 final cases 的最大穿透均低于 2.49 mm
  6. single-hand topology coverage + opposition 修复了 cup 的同侧接触,同时允许薄物体使用 precision grasp。
  7. bimanual mean-normal opposition 会错误拒绝大型、柔软、开放或带结构表面的对象;最终采用 contact-set distribution,并保留 normal opposition 为诊断。
  8. candidate selection 必须直接使用 fixed-beta MANO exact self-separation;SMPL-X proxy 与最终 MANO audit 会产生错误排序。
  9. 水平 root residual 对可达性有帮助,但必须保留 15 cm hard limit;当前结果为 2.44–10.42 cm

5.5 CHORD-style wrench loss 实验(2026-07-21)

已新增 category-free differentiable wrench loss:从当前 object-frame contact point、outward normal 和固定 mu=0.8 的 8-edge friction cone 构造 6D primitive wrench;用非负 projected NNLS 同时计算 anti-gravity required-wrench residual 与 +/-Fx/Fy/Fz/Tx/Ty/Tz canonical residual。NNLS 系数在 detached wrench matrix 上求解,最终 residual 用固定系数重算,因此可向 hand/arm geometry 回传 envelope gradient而不保留 unrolled solver graph。torque 统一按 object local bbox diagonal 归一化。

同时完成两项协议修复:

  • functional_contact 只使用 exact external contacts,不再混入 cavity/inward surface;
  • candidate selection 在 penetration、pose、arm/body gates 后,用 dense external-contact wrench residual 排序,不再让 optimizer 内部 6 个 contact slots 自己验收自己。

cup/book 固定相同 scaffold、seed、64 candidates、200 iterations 的单变量扫描如下。w=30 的 book 行为当前代码最终复跑;其余行用于定位权重/代理误差。

Case Wrench weight Anti-gravity residual Canonical mean / max GRAB Wrist delta Max penetration Exact gate 结论
cup control + dense rerank 0 0.018 0.199 / 0.503 46.1 4.5 deg 2.59 mm PASS 稳定 control;无需强制 wrench refinement
cup naive wrench 30 0.077 0.439 / 0.921 65.4 8.3 deg 2.24 mm PASS 手型仍合格,但 mechanics 反而退化
book old accepted result 0 0.202 0.518 / 0.910 64.4 11.0 deg 1.85 mm PASS geometry 原 static false positive
book current wrench result 30 0.107 0.470 / 0.840 78.8 13.3 deg 1.30 mm PASS wrench 明显改善,手型/腕角仍过 gate

w=10 没有稳定产生同时通过 pose/penetration 的 cup 与 book;w=100 会把 cup GRAB score 推到 106.8,证明固定强权重不能作为所有对象的默认值。正式 general rule 因此不是按 object name 选择权重,也不是观察 cup/book 后冻结类别阈值,而是统一生成 control 与 wrench-refined 两类候选:先拒绝 penetration、contact topology、GRAB/self-separation、wrist/arm/body 不合格者,再在剩余候选中按 exact external anti-gravity 和 canonical residual 选择。当前证据支持 wrench loss 是有用的候选生成信号,但不支持把 w=30 无条件施加给全部对象。

剩余六对象的同 seed、同 64 candidates、同 200 iterations control/w30 best-of-two 批量验证如下。表中双手 GRAB/wrist 取左右手并列;PASS 是独立 exact evaluator 的完整 gate,而不是 optimizer 内部代理。

Object Control: anti / canonical mean W30: anti / canonical mean Control / W30 gate Best-of-two 主要诊断
leatherbook 0.354 / 0.559 0.306 / 0.508 PASS / FAIL control(strict);w30 soft w30 mechanics 更好,但最大穿透 7.90 mm
notebook 0.268 / 0.521 0.145 / 0.449 FAIL / FAIL w30 soft w30 改善 wrench/GRAB,但仍有 3.74 mm 穿透且 GRAB 88.9 超 gate
round cushion 0.835 / 0.735 0.854 / 0.727 FAIL / FAIL control soft 两路单手 gate 均过,但左右手不 opposed;w30 未改善 combined anti-gravity
basket 0.200 / 0.625 0.356 / 0.727 PASS / FAIL control w30 将左右 GRAB 推到 185/246,且 combined wrench 退化
thin cushion 0.632 / 0.729 0.675 / 0.745 FAIL / FAIL control soft 两路均缺 inter-hand opposition;w30 全部 combined wrench 指标退化
instrument tray 0.549 / 0.589 0.738 / 0.642 PASS / PASS control 两路几何/姿态均合格,control 的 combined wrench 明显更好

批量结论:w30 在两个单手 precision grasp 上都降低了 wrench residual,说明梯度信号并非无效;但两者都被 penetration/pose gate 拒绝。四个双手对象中没有一个因 w30 得到更优的 combined anti-gravity residual。原因是当前 both backend 依次优化左手和右手,每个 stage 的 wrench loss 只看当前活动手;它不是左右手接触集合上的联合 6D wrench objective。后续不能继续扫描一个全局更大权重来修补该结构问题:单手保留 best-of-two;双手若继续使用 wrench refinement,必须先实现 joint bimanual wrench loss,再做同样的冻结协议复验。全部产物位于 output/auto_experiments/20260721_wrench_loss_best_of_two_6/

实现与验证产物:

  • differentiable loss / dense rerank:utils/contactgen/scaffold_grasp_quality.py
  • refinement config/CLI:utils/hoifhli/hoifhli.pyutils/hoifhli/solve_grasp_keyframe.pytools/contactgen/refine_scaffold_grasp_map_free.py
  • external-only independent audit:tools/contactgen/evaluate_scaffold_grasp.py
  • focused tests:tests/test_scaffold_grasp_quality.py13 passed
  • final book result:output/auto_experiments/20260721_wrench_loss_refinement/book_w30_final_current
  • cup/book visual check:output/auto_experiments/20260721_wrench_loss_refinement/final_visual_check/gallery.html

6. 八对象最终结果

Object Active hands Exterior contacts L/R Max penetration Max GRAB score Root shift Joint distribution Exact gate
cup left 89 / – 1.96 mm 52.92 8.65 cm single wrap PASS
book left 70 / – 1.85 mm 64.37 10.07 cm single precision PASS
leatherbook left 57 / – 1.03 mm 78.95 7.78 cm single precision PASS
notebook left 86 / – 2.48 mm 77.04 3.94 cm single precision PASS
round cushion both 82 / 85 1.29 mm 54.36 10.42 cm 0.467 diagonal PASS
basket both 142 / 140 1.84 mm 63.62 2.44 cm 0.375 diagonal PASS
thin cushion both 77 / 45 1.86 mm 68.05 9.25 cm 0.506 diagonal PASS
instrument tray both 103 / 40 2.23 mm 69.15 8.76 cm 0.539 diagonal PASS

PASS 仅表示独立 exact geometry、pose-naturalness、arm/body invariance 与 contact-topology gate 全部通过。round cushion 和 instrument tray 尤其不能仅凭静态 contact distribution 宣称 force closure;下一阶段必须用相同 keyframe 进入完整序列,再做 actual object-contact attribution、lift、hold 和 drop 检查。

7. 实现与产物

  • refinement:utils/hoifhli/solve_grasp_keyframe.py
  • general quality protocol:utils/contactgen/scaffold_grasp_quality.py
  • independent exact audit:tools/contactgen/evaluate_scaffold_grasp.py
  • batch gallery:tools/contactgen/build_map_free_grasp_gallery.py
  • focused tests:tests/test_scaffold_grasp_quality.py10 passed
  • HTML:output/auto_experiments/20260721_map_free_8object_results/final_general_gallery/gallery.html
  • exact reports:每个 final result directory 下的 acceptance_exact.json

下一步不是继续按 cup 调静态阈值,而是把 accepted keyframe 写回完整 HOI 序列并执行统一 physics validation。若 physics 失败,新增的信号必须是 mesh/contact dynamics 的通用量,例如 target-attributed contact persistence、load-bearing impulse 或 lift/hold,而不能增加对象类别分支。