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/16usable 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 为:
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,不是对象特判。公共实现不读取 cup、basket、tray 等类别,不假设杯口方向,也不使用 world up axis 推断抓法。优化后的 keyframe 仍不是动力学成功证明;lift、hold 和 contact persistence 必须在后续 physics rollout 单独验收。
2. 通用输入与可优化变量
正式输入只有:
- frame-97 natural-reach scaffold;
- layout 中目标交互物体的真实三角网格及当前 6D pose;
- task semantics 给出的 active hand set:
left、right或both。
保持非交互身体完全不变。每只交互手联合优化 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 41、64 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 累积结论
- 官方 ContactGen first sample 不稳定,必须 best-of-N 或直接做 batched scaffold refinement。
- fixed body shape 是必要条件;proposal、SMPL-X forward 与 final audit 必须使用同一 beta contract。
- 只最小化 surface distance 会出现同侧接触和 cavity/inner-wall 偏好,不能定义有效 grasp。
- GRAB/statistical pose prior 能抑制不自然手型,但不能替代接触拓扑。
- hand-object penetration loss 加 exact triangle gate 后,8 个 final cases 的最大穿透均低于
2.49 mm。 - single-hand topology coverage + opposition 修复了 cup 的同侧接触,同时允许薄物体使用 precision grasp。
- bimanual mean-normal opposition 会错误拒绝大型、柔软、开放或带结构表面的对象;最终采用 contact-set distribution,并保留 normal opposition 为诊断。
- candidate selection 必须直接使用 fixed-beta MANO exact self-separation;SMPL-X proxy 与最终 MANO audit 会产生错误排序。
- 水平 root residual 对可达性有帮助,但必须保留
15 cmhard 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.py、utils/hoifhli/solve_grasp_keyframe.py、tools/contactgen/refine_scaffold_grasp_map_free.py; - external-only independent audit:
tools/contactgen/evaluate_scaffold_grasp.py; - focused tests:
tests/test_scaffold_grasp_quality.py,13 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.py,10 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,而不能增加对象类别分支。