yxma commited on
Commit
8cf49a9
·
verified ·
1 Parent(s): f7d1c58

force recovery: methods, evaluation, debug log

Browse files
Files changed (43) hide show
  1. .gitattributes +2 -0
  2. README.md +1 -1
  3. actions.html +4 -4
  4. actions_zh.html +4 -4
  5. assets/action_trace.json +0 -0
  6. assets/clip_motherboard_episode_000_left.mp4 +2 -2
  7. assets/depth_validation_panel.png +2 -2
  8. assets/dexforce_motherboard_episode_000_left.png +0 -0
  9. assets/gallery/clip_motherboard_episode_002_right.mp4 +0 -0
  10. assets/gallery/clip_motherboard_episode_003_left.mp4 +2 -2
  11. assets/gallery/clip_motherboard_episode_003_right.mp4 +0 -0
  12. assets/gallery/clip_motherboard_episode_007_right.mp4 +2 -2
  13. assets/gallery/clip_motherboard_episode_008_left.mp4 +3 -0
  14. assets/gallery/clip_motherboard_episode_010_right.mp4 +2 -2
  15. assets/gallery/clip_motherboard_episode_011_left.mp4 +2 -2
  16. assets/gallery/clip_motherboard_episode_017_left.mp4 +2 -2
  17. assets/gallery/clip_motherboard_episode_017_right.mp4 +2 -2
  18. assets/gallery/clip_pushT_episode_001_right.mp4 +3 -0
  19. assets/gallery/cnc_00.png +2 -2
  20. assets/gallery/cnc_01.png +2 -2
  21. assets/gallery/cnc_02.png +2 -2
  22. assets/gallery/cnc_03.png +2 -2
  23. assets/gallery/cnc_04.png +2 -2
  24. assets/gallery/cnc_05.png +2 -2
  25. assets/gallery/cnc_06.png +2 -2
  26. assets/gallery/cnc_07.png +2 -2
  27. assets/gallery/cnc_08.png +2 -2
  28. assets/gallery/cnc_09.png +2 -2
  29. assets/gallery/cnc_10.png +2 -2
  30. assets/gallery/cnc_11.png +2 -2
  31. assets/gallery/cnc_12.png +2 -2
  32. assets/gallery/cnc_13.png +2 -2
  33. assets/gallery/feats_00.png +2 -2
  34. assets/gallery/feats_01.png +2 -2
  35. assets/gallery/feats_02.png +2 -2
  36. assets/gallery/feats_03.png +2 -2
  37. assets/gallery/feats_04.png +2 -2
  38. assets/gallery/feats_05.png +2 -2
  39. assets/gallery/metrics.json +13 -0
  40. gallery.html +2 -2
  41. index.html +16 -15
  42. method.html +5 -4
  43. method_zh.html +3 -3
.gitattributes CHANGED
@@ -93,3 +93,5 @@ assets/debug/glowtact_08.png filter=lfs diff=lfs merge=lfs -text
93
  assets/debug/glowtact_11.png filter=lfs diff=lfs merge=lfs -text
94
  assets/debug/glowtact_14.png filter=lfs diff=lfs merge=lfs -text
95
  assets/debug/glowtact_17.png filter=lfs diff=lfs merge=lfs -text
 
 
 
93
  assets/debug/glowtact_11.png filter=lfs diff=lfs merge=lfs -text
94
  assets/debug/glowtact_14.png filter=lfs diff=lfs merge=lfs -text
95
  assets/debug/glowtact_17.png filter=lfs diff=lfs merge=lfs -text
96
+ assets/gallery/clip_motherboard_episode_008_left.mp4 filter=lfs diff=lfs merge=lfs -text
97
+ assets/gallery/clip_pushT_episode_001_right.mp4 filter=lfs diff=lfs merge=lfs -text
README.md CHANGED
@@ -12,7 +12,7 @@ short_description: Recovering force actions for the React tactile dataset
12
  # Recovering Force-Related Actions for the React Tactile Dataset
13
 
14
  Two methods implemented and evaluated on [yxma/React](https://huggingface.co/datasets/yxma/React):
15
- photometric-stereo depth -> Winkler normal force (pseudo force labels), and
16
  DexForce-style force-informed position targets. Includes a documented negative
17
  result (FEATS does not transfer to markerless gel), self-designed evaluations,
18
  and a debug log. See the rendered page.
 
12
  # Recovering Force-Related Actions for the React Tactile Dataset
13
 
14
  Two methods implemented and evaluated on [yxma/React](https://huggingface.co/datasets/yxma/React):
15
+ per-sensor RGB-LUT photometric calibration -> Poisson depth -> normal force (LUT-v2, pseudo force labels), and
16
  DexForce-style force-informed position targets. Includes a documented negative
17
  result (FEATS does not transfer to markerless gel), self-designed evaluations,
18
  and a debug log. See the rendered page.
actions.html CHANGED
@@ -102,7 +102,7 @@ episode data, and what the transformation is worth.</p>
102
  <div class="farr">+</div>
103
  <div class="fstep">GelSight frame<small>640×480 RGB</small></div>
104
  <div class="farr">→</div>
105
- <div class="fstep">F̂<sub>n</sub><small>depth → Winkler,<br>FEATS-calibrated</small></div>
106
  <div class="farr">→</div>
107
  <div class="fstep">n̂ = R<sub>t</sub>·a<sub>gel</sub><small>dual-ball calibrated axis</small></div>
108
  <div class="farr">→</div>
@@ -148,7 +148,7 @@ is why the offset is drawn on its own millimetre scale.</p>
148
  <div class="val ok">9e-14 N</div>
149
  <div class="lbl" style="margin-top:6px">k·‖target−pose‖ vs F̂ — machine precision</div></div>
150
  <div class="stat"><div class="lbl">penetration in contact</div>
151
- <div class="val">1.0 mm <span style="font-size:.9rem;color:var(--dim)">median</span></div>
152
  <div class="lbl" style="margin-top:6px">max 15.2 mm at the hardest ~23 N press</div></div>
153
  </div>
154
  <div class="card">
@@ -177,7 +177,7 @@ z = np.load("force_recovery/motherboard/2026-05-10/episode_000_left.npz")
177
  force = median3_fresh(z["force_normal_n"], is_new) # de-spike on fresh frames
178
  act = force_informed_targets(pose, force, gel_axis("motherboard", "left"))
179
  train_targets = act.target_pos # (T,3) — drop-in pose labels</code></pre>
180
- <p>Caveats, stated plainly: absolute newtons carry the FEATS-calibration
181
  uncertainty (cross-sensor scale drifts 2–4×; within-episode relative force is
182
  the reliable part), shear-dominant contact is a blind spot of the normal-force
183
  estimator, and legacy recordings update tactile at ~8.5 fps — the
@@ -186,7 +186,7 @@ estimator, and legacy recordings update tactile at ~8.5 fps — the
186
 
187
  <footer>React force recovery · data <a href="https://huggingface.co/datasets/yxma/React">yxma/React</a>
188
  · methods &amp; external validation on the <a href="index.html">main page</a>
189
- · transform: DexForce (2501.10356) · force: gsrobotics photometric stereo + Winkler, FEATS-calibrated (2411.03315)</footer>
190
  </div>
191
 
192
  <script>
 
102
  <div class="farr">+</div>
103
  <div class="fstep">GelSight frame<small>640×480 RGB</small></div>
104
  <div class="farr">→</div>
105
+ <div class="fstep">F̂<sub>n</sub><small>LUT depth → force,<br>GlowTact-calibrated</small></div>
106
  <div class="farr">→</div>
107
  <div class="fstep">n̂ = R<sub>t</sub>·a<sub>gel</sub><small>dual-ball calibrated axis</small></div>
108
  <div class="farr">→</div>
 
148
  <div class="val ok">9e-14 N</div>
149
  <div class="lbl" style="margin-top:6px">k·‖target−pose‖ vs F̂ — machine precision</div></div>
150
  <div class="stat"><div class="lbl">penetration in contact</div>
151
+ <div class="val">0.9 mm <span style="font-size:.9rem;color:var(--dim)">median</span></div>
152
  <div class="lbl" style="margin-top:6px">max 15.2 mm at the hardest ~23 N press</div></div>
153
  </div>
154
  <div class="card">
 
177
  force = median3_fresh(z["force_normal_n"], is_new) # de-spike on fresh frames
178
  act = force_informed_targets(pose, force, gel_axis("motherboard", "left"))
179
  train_targets = act.target_pos # (T,3) — drop-in pose labels</code></pre>
180
+ <p>Caveats, stated plainly: absolute newtons carry the GlowTact-calibration
181
  uncertainty (cross-sensor scale drifts 2–4×; within-episode relative force is
182
  the reliable part), shear-dominant contact is a blind spot of the normal-force
183
  estimator, and legacy recordings update tactile at ~8.5 fps — the
 
186
 
187
  <footer>React force recovery · data <a href="https://huggingface.co/datasets/yxma/React">yxma/React</a>
188
  · methods &amp; external validation on the <a href="index.html">main page</a>
189
+ · transform: DexForce (2501.10356) · force: per-sensor RGB-LUT photometric calibration + Poisson (LUT-v2), GlowTact-calibrated</footer>
190
  </div>
191
 
192
  <script>
actions_zh.html CHANGED
@@ -101,7 +101,7 @@ UMI 类数据一样,演示位姿<i>就是</i>实际达到的位姿。刚度控
101
  <div class="farr">+</div>
102
  <div class="fstep">GelSight 图像<small>640×480 RGB</small></div>
103
  <div class="farr">→</div>
104
- <div class="fstep">F̂<sub>n</sub><small>深度 → Winkler,<br>FEATS 定标</small></div>
105
  <div class="farr">→</div>
106
  <div class="fstep">n̂ = R<sub>t</sub>·a<sub>gel</sub><small>双球标定的 gel 轴</small></div>
107
  <div class="farr">→</div>
@@ -144,7 +144,7 @@ UMI 类数据一样,演示位姿<i>就是</i>实际达到的位姿。刚度控
144
  <div class="val ok">9e-14 N</div>
145
  <div class="lbl" style="margin-top:6px">k·‖target−pose‖ 对比 F̂ —— 机器精度</div></div>
146
  <div class="stat"><div class="lbl">接触期穿透量</div>
147
- <div class="val">1.0 mm <span style="font-size:.9rem;color:var(--dim)">中位数</span></div>
148
  <div class="lbl" style="margin-top:6px">最硬的 ~23 N 按压达 15.2 mm</div></div>
149
  </div>
150
  <div class="card">
@@ -169,7 +169,7 @@ z = np.load("force_recovery/motherboard/2026-05-10/episode_000_left.npz")
169
  force = median3_fresh(z["force_normal_n"], is_new) # 只在 fresh 帧上去尖峰
170
  act = force_informed_targets(pose, force, gel_axis("motherboard", "left"))
171
  train_targets = act.target_pos # (T,3) —— 直接替换位姿标签</code></pre>
172
- <p>需要直说的告诫:绝对牛顿值带有 FEATS 定标的不确定性(跨传感器刻度漂移 2–4×;
173
  集内相对力才是可靠的部分);剪切主导的接触是法向力估计器的盲区;
174
  旧录制的触觉有效更新率约 8.5 fps——<code>tactile_*_is_new</code>
175
  标记了哪些行携带新的力证据。</p>
@@ -177,7 +177,7 @@ train_targets = act.target_pos # (T,3) —— 直接替
177
 
178
  <footer>React 力恢复 · 数据集 <a href="https://huggingface.co/datasets/yxma/React">yxma/React</a>
179
  · 方法与外部验证见<a href="index.html">主页(英文)</a>
180
- · 变换:DexForce (2501.10356) · 力估计:gsrobotics 光度立体 + Winkler,FEATS 定标 (2411.03315)</footer>
181
  </div>
182
 
183
  <script>
 
101
  <div class="farr">+</div>
102
  <div class="fstep">GelSight 图像<small>640×480 RGB</small></div>
103
  <div class="farr">→</div>
104
+ <div class="fstep">F̂<sub>n</sub><small>LUT 深度 → ,<br>GlowTact 定标</small></div>
105
  <div class="farr">→</div>
106
  <div class="fstep">n̂ = R<sub>t</sub>·a<sub>gel</sub><small>双球标定的 gel 轴</small></div>
107
  <div class="farr">→</div>
 
144
  <div class="val ok">9e-14 N</div>
145
  <div class="lbl" style="margin-top:6px">k·‖target−pose‖ 对比 F̂ —— 机器精度</div></div>
146
  <div class="stat"><div class="lbl">接触期穿透量</div>
147
+ <div class="val">0.9 mm <span style="font-size:.9rem;color:var(--dim)">中位数</span></div>
148
  <div class="lbl" style="margin-top:6px">最硬的 ~23 N 按压达 15.2 mm</div></div>
149
  </div>
150
  <div class="card">
 
169
  force = median3_fresh(z["force_normal_n"], is_new) # 只在 fresh 帧上去尖峰
170
  act = force_informed_targets(pose, force, gel_axis("motherboard", "left"))
171
  train_targets = act.target_pos # (T,3) —— 直接替换位姿标签</code></pre>
172
+ <p>需要直说的告诫:绝对牛顿值带有 GlowTact 定标的不确定性(跨传感器刻度漂移 2–4×;
173
  集内相对力才是可靠的部分);剪切主导的接触是法向力估计器的盲区;
174
  旧录制的触觉有效更新率约 8.5 fps——<code>tactile_*_is_new</code>
175
  标记了哪些行携带新的力证据。</p>
 
177
 
178
  <footer>React 力恢复 · 数据集 <a href="https://huggingface.co/datasets/yxma/React">yxma/React</a>
179
  · 方法与外部验证见<a href="index.html">主页(英文)</a>
180
+ · 变换:DexForce (2501.10356) · 力估计:逐传感器 RGB-LUT 光度标定 + Poisson(LUT-v2),GlowTact 定标</footer>
181
  </div>
182
 
183
  <script>
assets/action_trace.json CHANGED
The diff for this file is too large to render. See raw diff
 
assets/clip_motherboard_episode_000_left.mp4 CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:b09a7ca1b839badf921fdcf32b2bb28bdd851eec2d261ca0a5b246cbb1c54047
3
- size 465601
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:bb957284ffb7c3293cbe9f9f3f8924a81f3b05492db5e5ce91a757db43e851c4
3
+ size 420820
assets/depth_validation_panel.png CHANGED

Git LFS Details

  • SHA256: 8e10626a5bf60e525c72e704e8652364c207ce9ab0d65c042e3d189844cbb1c1
  • Pointer size: 131 Bytes
  • Size of remote file: 263 kB

Git LFS Details

  • SHA256: 847d643de5b482cf405bf6338a2704eb4ab7798af076216464e0cd5252234fef
  • Pointer size: 131 Bytes
  • Size of remote file: 622 kB
assets/dexforce_motherboard_episode_000_left.png CHANGED
assets/gallery/clip_motherboard_episode_002_right.mp4 CHANGED
Binary files a/assets/gallery/clip_motherboard_episode_002_right.mp4 and b/assets/gallery/clip_motherboard_episode_002_right.mp4 differ
 
assets/gallery/clip_motherboard_episode_003_left.mp4 CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:d9c5eb39cc9cfbf861871ce77aba5e1521b5a606df3d4bd4b878aaa1fd4b4925
3
- size 123071
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:818b8f17a04bd29b2a9b28ff1c8330a8fee05987ce45ff69393be331abc09c70
3
+ size 109548
assets/gallery/clip_motherboard_episode_003_right.mp4 CHANGED
Binary files a/assets/gallery/clip_motherboard_episode_003_right.mp4 and b/assets/gallery/clip_motherboard_episode_003_right.mp4 differ
 
assets/gallery/clip_motherboard_episode_007_right.mp4 CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:cddb9ac878230709c7fe60a8e78c0b67a721a0ecf1182107912e73e4392a82b6
3
- size 112977
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:443df707b6b1973b9062b04a4e0f2d7c4a06d8d94d94350a09653682afcfd343
3
+ size 94898
assets/gallery/clip_motherboard_episode_008_left.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b6d3e6685fda97f29d6d38d46b85aeb98aac0d2239a0134d8351d3f9ce41da01
3
+ size 118571
assets/gallery/clip_motherboard_episode_010_right.mp4 CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:b721b1cf5c3c0a69b962d466b49bf54679f7a29e0e9dd47a5e1ac05c146c38c2
3
- size 144748
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:bc9980c7f91bc7b72216ec675fd6950f755d1e475356ede78291aeae3e6a630d
3
+ size 134266
assets/gallery/clip_motherboard_episode_011_left.mp4 CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:96ba24590e3bc28c9fd187f882d8f6a0567e51b29d94951fdea08d1a44aaa8ff
3
- size 116309
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:27ff874f5d6afb7fa92e907cdd472b6e6a72e273b32c0feb7555a334905feec7
3
+ size 108232
assets/gallery/clip_motherboard_episode_017_left.mp4 CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:679a1797e4f6ded5e9996cf2bfeee52ebfc1bbafb89c639e9603582a9487d195
3
- size 150807
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4551c008b3e2a306dda5bead99284aa308edcb883ec51af01ecbdbadca66f9a9
3
+ size 143962
assets/gallery/clip_motherboard_episode_017_right.mp4 CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:c1100bafd59ef581a45b741f3d1d29313377bab16f176c01dcf47ab48d15d143
3
- size 144185
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7421e07c543cc016f1d5270993fe496762f63079b32a9a742d5522efe51133c2
3
+ size 133648
assets/gallery/clip_pushT_episode_001_right.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7d71cc92a6b5b687e358ca4ec603962174ff437ef6da0a91625e6d55dd49c8cc
3
+ size 109506
assets/gallery/cnc_00.png CHANGED

Git LFS Details

  • SHA256: 7f55e70a8f445e4c351761eb5f8c4b3b5c9e110eb927f1a7a072bc02545ae708
  • Pointer size: 131 Bytes
  • Size of remote file: 205 kB

Git LFS Details

  • SHA256: a467e9f27f0bed48123513b80fcb7eadf922537a8021b2950e64877bf7861f84
  • Pointer size: 131 Bytes
  • Size of remote file: 193 kB
assets/gallery/cnc_01.png CHANGED

Git LFS Details

  • SHA256: 630f41a6aa183facb8c33cc1fea7df456967268801784e10a8e1bff183d52732
  • Pointer size: 131 Bytes
  • Size of remote file: 201 kB

Git LFS Details

  • SHA256: 3093373fa2a89d594f99d6d0179c1b156e3ff3330f38f1784be185c9c835393b
  • Pointer size: 131 Bytes
  • Size of remote file: 190 kB
assets/gallery/cnc_02.png CHANGED

Git LFS Details

  • SHA256: 32add9e8b7d818877ff41f362b4a2b676ce76e139ec60c2a65e60e84b2bf7f08
  • Pointer size: 131 Bytes
  • Size of remote file: 193 kB

Git LFS Details

  • SHA256: 1b317037adff774deac3a9dc0cc20580cbcf7903e1e5d19086ae36c0843c4ea1
  • Pointer size: 131 Bytes
  • Size of remote file: 190 kB
assets/gallery/cnc_03.png CHANGED

Git LFS Details

  • SHA256: 341a4e59341d173d5185e3943315c7e3a33da0244700b5a1266c6840de4ccca3
  • Pointer size: 131 Bytes
  • Size of remote file: 204 kB

Git LFS Details

  • SHA256: 359808b04ad73c7a91661bfb72e7989a2f5d4ca7196ee6c7541a25f4c16945bf
  • Pointer size: 131 Bytes
  • Size of remote file: 191 kB
assets/gallery/cnc_04.png CHANGED

Git LFS Details

  • SHA256: a6e1a6a50967e092a643227cbe770534c0cc984fd41731172ce5972b7565ee2f
  • Pointer size: 131 Bytes
  • Size of remote file: 202 kB

Git LFS Details

  • SHA256: b13179e49e4e6f036dac23f45d426522743e7a846c336fd5bb48883a77d29e16
  • Pointer size: 131 Bytes
  • Size of remote file: 193 kB
assets/gallery/cnc_05.png CHANGED

Git LFS Details

  • SHA256: 00f08b86c62a47b52a8a8db8cd2c8a80f8a71608c986e688450116bfe246bb20
  • Pointer size: 131 Bytes
  • Size of remote file: 202 kB

Git LFS Details

  • SHA256: 7e63c7535dfe9118417c1f870e40237e0c7738f6dfc9fa7eb54c1b0688b6c714
  • Pointer size: 131 Bytes
  • Size of remote file: 199 kB
assets/gallery/cnc_06.png CHANGED

Git LFS Details

  • SHA256: 6ed0509aec727b9de64a8627dee7e4f52d7cc9a4edf582bc5fee7e395f177991
  • Pointer size: 131 Bytes
  • Size of remote file: 202 kB

Git LFS Details

  • SHA256: 52912a96d626369df54324bb384b4d69d757c3fcc05eecd4f2d56c3ccf0af4cf
  • Pointer size: 131 Bytes
  • Size of remote file: 200 kB
assets/gallery/cnc_07.png CHANGED

Git LFS Details

  • SHA256: 7e0af9780711177dc056b49002c40a513b26e4b50e349cbb599a3877a6c1b472
  • Pointer size: 131 Bytes
  • Size of remote file: 205 kB

Git LFS Details

  • SHA256: 42c6aa80a09d846883be3d9a550538d4a7d8c77713e4d694afdaf5651b72c7af
  • Pointer size: 131 Bytes
  • Size of remote file: 199 kB
assets/gallery/cnc_08.png CHANGED

Git LFS Details

  • SHA256: 609889564ab776f799d6759992dd9be20b207023706ec37f4f0d6051dfb16df6
  • Pointer size: 131 Bytes
  • Size of remote file: 202 kB

Git LFS Details

  • SHA256: 84c2148d4377889479fa91a833bfa547c8b88a9f65badd6ebe0c823c6cc04fd7
  • Pointer size: 131 Bytes
  • Size of remote file: 198 kB
assets/gallery/cnc_09.png CHANGED

Git LFS Details

  • SHA256: 1eed6165136a4e64560e2bafa614074627df9607fb23acf2a2cd6bc1e8938d0b
  • Pointer size: 131 Bytes
  • Size of remote file: 201 kB

Git LFS Details

  • SHA256: 028d967e6a541aaf049f0428f1a191f079f6d1657570011df9850db9853ec6bc
  • Pointer size: 131 Bytes
  • Size of remote file: 200 kB
assets/gallery/cnc_10.png CHANGED

Git LFS Details

  • SHA256: 748664a24e00deb183c950c50623842876610168ee1f3654ded34badd5e34aeb
  • Pointer size: 131 Bytes
  • Size of remote file: 202 kB

Git LFS Details

  • SHA256: aef1d9fa927406f0698a48e2e2e5bd90034cf82ca89c29716142ed3df1396a39
  • Pointer size: 131 Bytes
  • Size of remote file: 213 kB
assets/gallery/cnc_11.png CHANGED

Git LFS Details

  • SHA256: 9a4b864e872c282c6c9d571d5b37c35f765af7eee7a69152426c03a5fa7a86ed
  • Pointer size: 131 Bytes
  • Size of remote file: 207 kB

Git LFS Details

  • SHA256: f4316b11e96bbe9e617f123f5c6aaf48c00c10124f221a8bf570be6c52ee1c88
  • Pointer size: 131 Bytes
  • Size of remote file: 207 kB
assets/gallery/cnc_12.png CHANGED

Git LFS Details

  • SHA256: ded2c54d9797c84d4b8706cbefbf9642116a85f990c7800a55ccfcb59eef536a
  • Pointer size: 131 Bytes
  • Size of remote file: 215 kB

Git LFS Details

  • SHA256: 39ed54086665ee6ce8764ff1a97cebcf44b0f3bae6464d60304844e91a0679c9
  • Pointer size: 131 Bytes
  • Size of remote file: 208 kB
assets/gallery/cnc_13.png CHANGED

Git LFS Details

  • SHA256: 25e7f7dfd651c29d1fa524798df7658af06ba1e8100b471d392588316dac734a
  • Pointer size: 131 Bytes
  • Size of remote file: 206 kB

Git LFS Details

  • SHA256: 6d43c665c2a13deec598db7a4fae36f59beb17aec1a78204c3e72c5de1c8dc27
  • Pointer size: 131 Bytes
  • Size of remote file: 196 kB
assets/gallery/feats_00.png CHANGED

Git LFS Details

  • SHA256: e9252ad58c7efb48acf0cf7d56ce2dd3cf23944347953644d0311c9e4476cb7a
  • Pointer size: 131 Bytes
  • Size of remote file: 226 kB

Git LFS Details

  • SHA256: 578935be2e66afa4cbc3dfc79ce08d20cdf77277fada31059eba54bac82dba84
  • Pointer size: 131 Bytes
  • Size of remote file: 219 kB
assets/gallery/feats_01.png CHANGED

Git LFS Details

  • SHA256: db6479d8063c7bc979eb1af79b09b244f4bb209244195bffead35f587dfa0ae9
  • Pointer size: 131 Bytes
  • Size of remote file: 206 kB

Git LFS Details

  • SHA256: f14428a04aeffc094eab0666992156569f55341a70f800d58e944b9c4464ab86
  • Pointer size: 131 Bytes
  • Size of remote file: 233 kB
assets/gallery/feats_02.png CHANGED

Git LFS Details

  • SHA256: 6577cfe9498271e3c1a803a67eca35824d4df5096b199d9978f944a21b7a8af7
  • Pointer size: 131 Bytes
  • Size of remote file: 223 kB

Git LFS Details

  • SHA256: 1e77dca4519be0c8aca6594e932e90597fd2949587d58cb500a8cf5a18100dd7
  • Pointer size: 131 Bytes
  • Size of remote file: 231 kB
assets/gallery/feats_03.png CHANGED

Git LFS Details

  • SHA256: 03e7d480e19f9294f9572debab70e415932c213af92c441f1f799e62a05af7f2
  • Pointer size: 131 Bytes
  • Size of remote file: 201 kB

Git LFS Details

  • SHA256: 11e5451df98d3c1d8ede43446dbcdadad8f99e22e1f30856156927c15c66b36b
  • Pointer size: 131 Bytes
  • Size of remote file: 217 kB
assets/gallery/feats_04.png CHANGED

Git LFS Details

  • SHA256: b3ae027dee7d844c74c438f54b2eea15b4456e0f904de3564edb8dbfdcea8aaf
  • Pointer size: 131 Bytes
  • Size of remote file: 203 kB

Git LFS Details

  • SHA256: ab7a67e1c4825e515eb9a354c3f491e3ed4a829edfbfb6c51a76fe6becf4ba43
  • Pointer size: 131 Bytes
  • Size of remote file: 228 kB
assets/gallery/feats_05.png CHANGED

Git LFS Details

  • SHA256: b301c722b44659151af477a3c0b0d6294461d1e26d77dcf8bd39835f6bd3975a
  • Pointer size: 131 Bytes
  • Size of remote file: 227 kB

Git LFS Details

  • SHA256: 66bbd58a76113edca94fb8042e9151808121b9bef097a9da40d794f523a98c86
  • Pointer size: 131 Bytes
  • Size of remote file: 241 kB
assets/gallery/metrics.json ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cnc_in_view": {
3
+ "n": 144,
4
+ "rho": 0.9203152437588398,
5
+ "mae_n": 0.2914041128778008
6
+ },
7
+ "feats": {
8
+ "n": 192,
9
+ "rho": 0.7571224581862139,
10
+ "mae_n": 5.371393132649007
11
+ },
12
+ "pipeline": "lut_v2"
13
+ }
gallery.html CHANGED
@@ -79,11 +79,11 @@ font-family:'IBM Plex Mono',monospace;margin-top:2px}</style></head>
79
  <figure><video controls muted loop playsinline preload="none" src="assets/gallery/clip_motherboard_episode_002_right.mp4"></video><figcaption>clip_motherboard_episode_002_right.mp4</figcaption></figure>
80
  <figure><video controls muted loop playsinline preload="none" src="assets/gallery/clip_motherboard_episode_003_left.mp4"></video><figcaption>clip_motherboard_episode_003_left.mp4</figcaption></figure>
81
  <figure><video controls muted loop playsinline preload="none" src="assets/gallery/clip_motherboard_episode_003_right.mp4"></video><figcaption>clip_motherboard_episode_003_right.mp4</figcaption></figure>
82
- <figure><video controls muted loop playsinline preload="none" src="assets/gallery/clip_motherboard_episode_006_right.mp4"></video><figcaption>clip_motherboard_episode_006_right.mp4</figcaption></figure>
83
  <figure><video controls muted loop playsinline preload="none" src="assets/gallery/clip_motherboard_episode_007_right.mp4"></video><figcaption>clip_motherboard_episode_007_right.mp4</figcaption></figure>
84
- <figure><video controls muted loop playsinline preload="none" src="assets/gallery/clip_motherboard_episode_009_right.mp4"></video><figcaption>clip_motherboard_episode_009_right.mp4</figcaption></figure>
85
  <figure><video controls muted loop playsinline preload="none" src="assets/gallery/clip_motherboard_episode_010_right.mp4"></video><figcaption>clip_motherboard_episode_010_right.mp4</figcaption></figure>
86
  <figure><video controls muted loop playsinline preload="none" src="assets/gallery/clip_motherboard_episode_011_left.mp4"></video><figcaption>clip_motherboard_episode_011_left.mp4</figcaption></figure>
87
  <figure><video controls muted loop playsinline preload="none" src="assets/gallery/clip_motherboard_episode_017_left.mp4"></video><figcaption>clip_motherboard_episode_017_left.mp4</figcaption></figure>
88
  <figure><video controls muted loop playsinline preload="none" src="assets/gallery/clip_motherboard_episode_017_right.mp4"></video><figcaption>clip_motherboard_episode_017_right.mp4</figcaption></figure>
 
89
  </div></body></html>
 
79
  <figure><video controls muted loop playsinline preload="none" src="assets/gallery/clip_motherboard_episode_002_right.mp4"></video><figcaption>clip_motherboard_episode_002_right.mp4</figcaption></figure>
80
  <figure><video controls muted loop playsinline preload="none" src="assets/gallery/clip_motherboard_episode_003_left.mp4"></video><figcaption>clip_motherboard_episode_003_left.mp4</figcaption></figure>
81
  <figure><video controls muted loop playsinline preload="none" src="assets/gallery/clip_motherboard_episode_003_right.mp4"></video><figcaption>clip_motherboard_episode_003_right.mp4</figcaption></figure>
 
82
  <figure><video controls muted loop playsinline preload="none" src="assets/gallery/clip_motherboard_episode_007_right.mp4"></video><figcaption>clip_motherboard_episode_007_right.mp4</figcaption></figure>
83
+ <figure><video controls muted loop playsinline preload="none" src="assets/gallery/clip_motherboard_episode_008_left.mp4"></video><figcaption>clip_motherboard_episode_008_left.mp4</figcaption></figure>
84
  <figure><video controls muted loop playsinline preload="none" src="assets/gallery/clip_motherboard_episode_010_right.mp4"></video><figcaption>clip_motherboard_episode_010_right.mp4</figcaption></figure>
85
  <figure><video controls muted loop playsinline preload="none" src="assets/gallery/clip_motherboard_episode_011_left.mp4"></video><figcaption>clip_motherboard_episode_011_left.mp4</figcaption></figure>
86
  <figure><video controls muted loop playsinline preload="none" src="assets/gallery/clip_motherboard_episode_017_left.mp4"></video><figcaption>clip_motherboard_episode_017_left.mp4</figcaption></figure>
87
  <figure><video controls muted loop playsinline preload="none" src="assets/gallery/clip_motherboard_episode_017_right.mp4"></video><figcaption>clip_motherboard_episode_017_right.mp4</figcaption></figure>
88
+ <figure><video controls muted loop playsinline preload="none" src="assets/gallery/clip_pushT_episode_001_right.mp4"></video><figcaption>clip_pushT_episode_001_right.mp4</figcaption></figure>
89
  </div></body></html>
index.html CHANGED
@@ -83,20 +83,21 @@ markerless.</p>
83
  <div class="card method">
84
  <div class="flow">
85
  <span class="step">GelSight frame</span><span class="arr">→</span>
86
- <span class="step">flat-field<br>normalization</span><span class="arr">→</span>
87
- <span class="step">per-pixel MLP<br>→ surface normals</span><span class="arr">→</span>
88
  <span class="step">Poisson<br>integration</span><span class="arr">→</span>
89
- <span class="step">background<br>plane removal</span><span class="arr">→</span>
90
  <span class="step">indentation δ</span><span class="arr">→</span>
91
- <span class="step">F = c·Σδ·dA</span>
92
  </div>
93
- <p>Zero training frames; one fitted scalar (c, from force-sensor ground truth).
94
- Every design decision was driven by a measured defect — the full pipeline,
95
- the optimization journey, and the volume-vs-max-depth answer are on the
96
- <a href="method.html"><b>method page</b></a>.</p>
 
 
97
  <img src="assets/depth_validation_panel.png" alt="raw | diff | depth">
98
- <p class="footnote">Strongest motherboard press: raw | difference | reconstructed
99
- depth. More examples (20 panels, 10 clips) in the
100
  <a href="gallery.html">gallery</a>.</p>
101
  </div>
102
 
@@ -104,14 +105,14 @@ depth. More examples (20 panels, 10 clips) in the
104
  <div class="card method">
105
  <table>
106
  <tr><th>dataset (gel)</th><th>ours</th><th>FEATS U-net</th><th>FeelAnyForce</th></tr>
107
- <tr><td>FEATS val (marker)</td><td>0.74</td><td><b>0.96</b> in-domain</td><td>0.43</td></tr>
108
- <tr><td>FoTa cnc_Mini (markerless)</td><td>0.43 / 0.65</td><td>0.07</td><td><b>0.83 / 0.92</b></td></tr>
109
- <tr><td>GlowTact (markerless)</td><td>0.63</td><td>0.04</td><td><b>0.90</b></td></tr>
110
  <tr><td>React (no GT — agreement)</td><td colspan="3">physics vs FeelAnyForce ρ = 0.91; both read ≈0 N off-contact</td></tr>
111
  </table>
112
  <p style="margin-bottom:0">Each network dominates its own gel domain and collapses
113
- outside it; the physics pipeline is the only one that works everywhere.
114
- Predicted-vs-ground-truth scatters, per dataset, on the
115
  <a href="results.html"><b>results page</b></a>.</p>
116
  </div>
117
 
 
83
  <div class="card method">
84
  <div class="flow">
85
  <span class="step">GelSight frame</span><span class="arr">→</span>
86
+ <span class="step">dI = img − ref<br>(difference image)</span><span class="arr">→</span>
87
+ <span class="step">per-sensor RGB LUT<br>→ surface gradients</span><span class="arr">→</span>
88
  <span class="step">Poisson<br>integration</span><span class="arr">→</span>
 
89
  <span class="step">indentation δ</span><span class="arr">→</span>
90
+ <span class="step">F(vol, area, max δ)</span>
91
  </div>
92
+ <p>Zero training frames from our rig; the lookup table is self-calibrated from
93
+ spherical presses (classic Dong/Yuan calibration, LUT-v2). Every design
94
+ decision was driven by a measured defect the full pipeline,
95
+ the optimization journey, and the step-by-step reconstruction debug are on the
96
+ <a href="method.html"><b>method page</b></a> and the
97
+ <a href="debug_pipeline.html"><b>pipeline debug page</b></a>.</p>
98
  <img src="assets/depth_validation_panel.png" alt="raw | diff | depth">
99
+ <p class="footnote">Strongest motherboard presses: raw | difference |
100
+ LUT-reconstructed depth. More examples (20 panels, 10 clips) in the
101
  <a href="gallery.html">gallery</a>.</p>
102
  </div>
103
 
 
105
  <div class="card method">
106
  <table>
107
  <tr><th>dataset (gel)</th><th>ours</th><th>FEATS U-net</th><th>FeelAnyForce</th></tr>
108
+ <tr><td>FEATS val (marker)</td><td>0.77</td><td><b>0.96</b> in-domain</td><td>0.43</td></tr>
109
+ <tr><td>FoTa cnc_Mini (markerless)</td><td>0.94 (in view)</td><td>0.07</td><td><b>0.83</b></td></tr>
110
+ <tr><td>GlowTact (markerless)</td><td><b>0.98</b></td><td>0.04</td><td>0.90</td></tr>
111
  <tr><td>React (no GT — agreement)</td><td colspan="3">physics vs FeelAnyForce ρ = 0.91; both read ≈0 N off-contact</td></tr>
112
  </table>
113
  <p style="margin-bottom:0">Each network dominates its own gel domain and collapses
114
+ outside it; the physics pipeline (0.74–0.99) is the only one that works
115
+ everywhere. Predicted-vs-ground-truth scatters, per dataset, on the
116
  <a href="results.html"><b>results page</b></a>.</p>
117
  </div>
118
 
method.html CHANGED
@@ -109,14 +109,15 @@ supervised network reaches 2.1 N on the same range). A new sensor needs one
109
  2-minute ball-press pass — a calibration the React rig can adopt.</p>
110
  </div>
111
 
112
- <h2>Validation (v1 pipeline)</h2>
113
  <div class="card">
114
- <p style="margin-top:0">The v1 pipeline is validated on <b>three force-labeled
115
  datasets</b> (FEATS, FoTa cnc_Mini, GlowTact) and cross-checked against two
116
  neural estimators on identical frames — every predicted-vs-ground-truth
117
  scatter, per dataset, lives on the
118
  <a href="results.html"><b>results page</b></a>. Short version: physics
119
- 0.43-0.74 everywhere; each network 0.90+ in its own gel domain and collapsing
 
120
  outside it.</p>
121
  </div>
122
 
@@ -147,7 +148,7 @@ predicted vs ground-truth force) and 10 React episode clips
147
  gallery</a>.</p>
148
  <img src="assets/gallery/cnc_08.png" alt="sample panel">
149
  <video controls muted loop playsinline preload="metadata"
150
- src="assets/gallery/clip_motherboard_episode_000_left.mp4"></video>
151
  </div>
152
 
153
  <h2>NN vs model-based on the GelSight Mini — who has compared them?</h2>
 
109
  2-minute ball-press pass — a calibration the React rig can adopt.</p>
110
  </div>
111
 
112
+ <h2>Validation (LUT-v2 pipeline)</h2>
113
  <div class="card">
114
+ <p style="margin-top:0">The LUT-v2 pipeline is validated on <b>three force-labeled
115
  datasets</b> (FEATS, FoTa cnc_Mini, GlowTact) and cross-checked against two
116
  neural estimators on identical frames — every predicted-vs-ground-truth
117
  scatter, per dataset, lives on the
118
  <a href="results.html"><b>results page</b></a>. Short version: physics
119
+ 0.74-0.99 everywhere (GlowTact 0.98, cnc_Mini in-view 0.94, FEATS 0.77);
120
+ each network 0.90+ in its own gel domain and collapsing
121
  outside it.</p>
122
  </div>
123
 
 
148
  gallery</a>.</p>
149
  <img src="assets/gallery/cnc_08.png" alt="sample panel">
150
  <video controls muted loop playsinline preload="metadata"
151
+ src="assets/gallery/clip_motherboard_episode_002_right.mp4"></video>
152
  </div>
153
 
154
  <h2>NN vs model-based on the GelSight Mini — who has compared them?</h2>
method_zh.html CHANGED
@@ -108,9 +108,9 @@ supervised network reaches 2.1 N on the same range). A new sensor needs one
108
  2-minute ball-press pass — a calibration the React rig can adopt.</p>
109
  </div>
110
 
111
- <h2>验证</h2>
112
  <div class="card">
113
- <p style="margin-top:0">管线在<b>三个带力标注的数据集</b>(FEATS、FoTa cnc_Mini、GlowTact)上验证,并与两个神经网络估计器同帧对比——每个数据集的预测 vs 真值散点图都在<a href="results_zh.html"><b>评测结果页</b></a>。一句话版:物理方法在所有域 0.43–0.74;每个网络在自己的 gel 域 0.90+,出域即塌。</p>
114
  </div>
115
 
116
  <h2>用真值驱动的优化</h2>
@@ -136,7 +136,7 @@ supervised network reaches 2.1 N on the same range). A new sensor needs one
136
  与 10 个 React 片段(触觉 | 实时深度 | 力曲线):<a href="gallery.html">浏览完整图库</a>。</p>
137
  <img src="assets/gallery/cnc_08.png" alt="sample panel">
138
  <video controls muted loop playsinline preload="metadata"
139
- src="assets/gallery/clip_motherboard_episode_000_left.mp4"></video>
140
  </div>
141
 
142
  <h2>GelSight Mini 上 NN 与 model-based 谁对比过?</h2>
 
108
  2-minute ball-press pass — a calibration the React rig can adopt.</p>
109
  </div>
110
 
111
+ <h2>验证(LUT-v2 管线)</h2>
112
  <div class="card">
113
+ <p style="margin-top:0">LUT-v2 管线在<b>三个带力标注的数据集</b>(FEATS、FoTa cnc_Mini、GlowTact)上验证,并与两个神经网络估计器同帧对比——每个数据集的预测 vs 真值散点图都在<a href="results_zh.html"><b>评测结果页</b></a>。一句话版:物理方法在所有域 0.74–0.99(GlowTact 0.98、cnc_Mini 视野内 0.94、FEATS 0.77);每个网络在自己的 gel 域 0.90+,出域即塌。</p>
114
  </div>
115
 
116
  <h2>用真值驱动的优化</h2>
 
136
  与 10 个 React 片段(触觉 | 实时深度 | 力曲线):<a href="gallery.html">浏览完整图库</a>。</p>
137
  <img src="assets/gallery/cnc_08.png" alt="sample panel">
138
  <video controls muted loop playsinline preload="metadata"
139
+ src="assets/gallery/clip_motherboard_episode_002_right.mp4"></video>
140
  </div>
141
 
142
  <h2>GelSight Mini 上 NN 与 model-based 谁对比过?</h2>