Results

Both reconstructions through one protocol: half the frames in each group fit a 5-feature least squares, half are scored; pooled ρ, five seeds, beside a within-group label shuffle. The second number in each cell is ρ minus that row's own floor — the comparable one — and bold marks the larger. Only the image→gradient step differs.

Presses the sensor images whole

datasetnLUT
ρ / margin
calibration-free
ρ / margin
shuffle floorgroups fitted
GelSight Mini, CNC presses, 0-20 N605
of 6,219
0.993
+0.925
0.998
+0.909
+0.067 / +0.0896/6
FoTa cnc_Mini604
of 3,351
0.900
+0.940
0.938
+0.903
-0.040 / +0.0356/6
FEATS (MARKER gel)2,000
of 16,276
0.642
+0.553
0.706
+0.617
+0.089 / +0.0898/8
Sparsh / Meta, 10 gel pads2,000
of 129,389
0.959
+0.909
0.986
+0.956
+0.050 / +0.0304/4
FeelAnyForce
floor-dominated
2,000
of 13,892
0.939
+0.197
0.949
+0.208
+0.742 / +0.74113/14
truncated presses
A press is truncated when its contact core reaches a border: the indentation continues outside the frame, so the free-boundary solve runs off the edge with nothing to stop the ramp. 15.9% of them reconstruct deeper than the 4.25 mm gel, against 0.0% of whole presses (441 and 59 frames). Their depth is not identifiable from the image.

Excluding them is what the headline row buys: on GelSight Mini, CNC presses, 0-20 N calibration-free scores ρ 0.998 on whole presses against 0.851 once truncated frames are mixed in. Three datasets reach the 2,000 this table samples; the two that cannot have no more presses to give.

All frames

The same protocol without that exclusion.

datasetnLUT
ρ / margin
calibration-free
ρ / margin
shuffle floorgroups fitted
GelSight Mini, CNC presses, 0-20 N2,376
of 6,219
0.707
+0.571
0.851
+0.713
+0.135 / +0.1386/6
FoTa cnc_Mini2,239
of 3,351
0.442
+0.416
0.482
+0.449
+0.026 / +0.0336/6
FEATS (MARKER gel)2,956
of 16,276
0.707
+0.525
0.702
+0.506
+0.183 / +0.1968/8
Sparsh / Meta, 10 gel pads3,091
of 129,389
0.669
+0.629
0.698
+0.657
+0.040 / +0.0414/4
FeelAnyForce3,378
of 13,892
0.905
+0.509
0.935
+0.531
+0.396 / +0.40414/14

The shuffle floor is an absolute ρ — what this protocol scores with labels permuted inside each group; the margin beside each cell already has it subtracted. React's production number adds a fitted position gain field and lives on the method page.

predicted vs ground-truth force
Held-out prediction against ground truth, shared axes per row. Each panel carries its shuffle floor and the margin over it.
cross-dataset transfer
Fit on one dataset, predict on every other. Read each cell against the random-weight baseline under its column: the features are collinear and all monotone in contact size, so on an easy target almost any direction ranks correctly.

FoTa cnc_Mini→FEATS, Sparsh→FEATS are ≥99 % extrapolation. — there MAE is extrapolation, not prediction. FeelAnyForce's row goes negative: collinear features let least squares cancel opposite-sign terms (method). Non-negative weights fix it: off-diagonal ρ 0.574 → 0.731, negative cells 3 → 0 of 20, costing 0.010 on the diagonal. The deployed estimator is unchanged: on React both agree at ρ 0.989 (1.8 % of frames outside the rig's range), and 15 held-out seeds differ by +0.002 ± 0.014 ρ.

Which reconstruction for React's force channel?

React's own calibration objects cannot answer this: calibration-free scores ρ 0.781 against the LUT's 0.763 on 158 held-out presses, but a paired bootstrap puts the margin at 95% CI [-0.081, +0.120] — a coin flip. Nor does the table: calibration-free leads on raw ρ everywhere, but over each row's own floor it is ahead on 3 of 5. It ships because it needs no per-sensor lookup table, not because it measures force better.

The two agree at ρ = 0.925 over 2,400 React frames, mean difference 0.86 N. Published to yxma/React: this channel across all 72 sides of 36 episodes (480,080 frames).

Error analysis

The ten worst held-out frames reconstruct as well as the five best — same gradient dipoles, same compact depth, no ramping. The residual is in the depth→force fit, not in image→depth, so a better reconstruction will not move them.

Each panel: the ten worst held-out frames, with the five best as a control. Relative error is |pred−true| over the dataset's force span.

cnc_mini_26 errors
GelSight Mini CNC, span 19.50 N — median 0.7%, p90 2.0%, worst 11.6%.
cnc errors
FoTa cnc_Mini, span 4.01 N — median 4.9%, p90 15.1%, worst 35.0%.
feats errors
FEATS (marker), span 59.86 N — median 3.1%, p90 10.3%, worst 39.3%.
sparsh errors
Sparsh / Meta, span 1.07 N — median 1.9%, p90 6.2%, worst 48.2%.
faf errors
FeelAnyForce, span 17.44 N — median 1.7%, p90 9.7%, worst 41.3%.