Analytic versus bilinear depth sampling results¶
Protocol frozen at b355c938. All 54 oracle-sampler
fits executed. Function definitions of fitting and sensitivity code were verified
identical to the previous solver; only the depth sampler import differs. Bilinear
results are hash-pinned archived controls, not rerun.
| Population | Perturbed joint recovery: bilinear → analytic | Truth-start joint: bilinear → analytic |
|---|---|---|
| Oracle-visible input points | 6/18 → 17/18 | 3/9 → 6/9 |
| All LiDAR returns | 6/18 → 16/18 | 3/9 → 5/9 |
| Total | 12/36 → 33/36 | 6/18 → 11/18 |
All cases¶
| Scene | Population | Injected bias m | Seed | Rotation deg | Translation m | Bias error m | Converged | Joint pass |
|---|---|---|---|---|---|---|---|---|
| original | exact_z_visible | +0.00 | +1 | 0.000000 | 0.000000 | 0.000000 | True | True |
| original | exact_z_visible | +0.00 | -1 | 0.000000 | 0.000000 | 0.000000 | True | True |
| original | exact_z_visible | +0.00 | +0 | 0.000000 | 0.000000 | 0.000000 | True | True |
| original | exact_z_visible | +0.25 | +1 | 0.000000 | 0.000000 | 0.000000 | True | True |
| original | exact_z_visible | +0.25 | -1 | 0.000000 | 0.000000 | 0.000000 | True | True |
| original | exact_z_visible | +0.25 | +0 | 0.000000 | 0.000000 | 0.000000 | True | True |
| original | exact_z_visible | -0.25 | +1 | 0.000000 | 0.000000 | 0.000000 | True | True |
| original | exact_z_visible | -0.25 | -1 | 0.000000 | 0.000000 | 0.000000 | True | True |
| original | exact_z_visible | -0.25 | +0 | 0.000050 | 0.000218 | 0.249896 | True | False |
| original | exact_z_all | +0.00 | +1 | 0.000079 | 0.000044 | 0.000040 | True | True |
| original | exact_z_all | +0.00 | -1 | 0.000049 | 0.000049 | 0.000066 | True | True |
| original | exact_z_all | +0.00 | +0 | 0.000061 | 0.000020 | 0.000000 | True | True |
| original | exact_z_all | +0.25 | +1 | 0.001159 | 0.000511 | 0.000514 | True | True |
| original | exact_z_all | +0.25 | -1 | 0.000067 | 0.000046 | 0.000058 | True | True |
| original | exact_z_all | +0.25 | +0 | 0.001465 | 0.000674 | 0.000785 | True | True |
| original | exact_z_all | -0.25 | +1 | 0.000043 | 0.000063 | 0.000066 | True | True |
| original | exact_z_all | -0.25 | -1 | 0.000051 | 0.000048 | 0.000066 | True | True |
| original | exact_z_all | -0.25 | +0 | 0.000051 | 0.000209 | 0.249900 | True | False |
| near_foreground | exact_z_visible | +0.00 | +1 | 0.000000 | 0.000000 | 0.000000 | True | True |
| near_foreground | exact_z_visible | +0.00 | -1 | 0.000000 | 0.000000 | 0.000000 | True | True |
| near_foreground | exact_z_visible | +0.00 | +0 | 0.000000 | 0.000000 | 0.000000 | True | True |
| near_foreground | exact_z_visible | +0.25 | +1 | 0.325075 | 0.150498 | 0.171496 | False | False |
| near_foreground | exact_z_visible | +0.25 | -1 | 0.000000 | 0.000000 | 0.000000 | True | True |
| near_foreground | exact_z_visible | +0.25 | +0 | 0.000000 | 0.000000 | 0.000000 | True | True |
| near_foreground | exact_z_visible | -0.25 | +1 | 0.000000 | 0.000000 | 0.000000 | True | True |
| near_foreground | exact_z_visible | -0.25 | -1 | 0.000000 | 0.000000 | 0.000000 | True | True |
| near_foreground | exact_z_visible | -0.25 | +0 | 0.001974 | 0.006481 | 0.246924 | True | False |
| near_foreground | exact_z_all | +0.00 | +1 | 0.002877 | 0.000391 | 0.000341 | True | True |
| near_foreground | exact_z_all | +0.00 | -1 | 0.000163 | 0.000111 | 0.000010 | True | True |
| near_foreground | exact_z_all | +0.00 | +0 | 0.000089 | 0.000108 | 0.000007 | True | True |
| near_foreground | exact_z_all | +0.25 | +1 | 0.314767 | 0.150083 | 0.172101 | False | False |
| near_foreground | exact_z_all | +0.25 | -1 | 0.000178 | 0.000110 | 0.000009 | True | True |
| near_foreground | exact_z_all | +0.25 | +0 | 0.001190 | 0.000243 | 0.000167 | True | True |
| near_foreground | exact_z_all | -0.25 | +1 | 0.016990 | 0.000629 | 0.000341 | True | True |
| near_foreground | exact_z_all | -0.25 | -1 | 0.000538 | 0.000174 | 0.000141 | True | True |
| near_foreground | exact_z_all | -0.25 | +0 | 0.001957 | 0.006484 | 0.246918 | True | False |
| staggered | exact_z_visible | +0.00 | +1 | 0.000000 | 0.000000 | 0.000000 | True | True |
| staggered | exact_z_visible | +0.00 | -1 | 0.000094 | 0.000014 | 0.000007 | True | True |
| staggered | exact_z_visible | +0.00 | +0 | 0.000000 | 0.000000 | 0.000000 | True | True |
| staggered | exact_z_visible | +0.25 | +1 | 0.000094 | 0.000014 | 0.000007 | True | True |
| staggered | exact_z_visible | +0.25 | -1 | 0.000000 | 0.000000 | 0.000000 | True | True |
| staggered | exact_z_visible | +0.25 | +0 | 0.000094 | 0.000014 | 0.000007 | True | True |
| staggered | exact_z_visible | -0.25 | +1 | 0.000000 | 0.000000 | 0.000000 | True | True |
| staggered | exact_z_visible | -0.25 | -1 | 0.000094 | 0.000014 | 0.000007 | True | True |
| staggered | exact_z_visible | -0.25 | +0 | 0.000463 | 0.001165 | 0.249439 | True | False |
| staggered | exact_z_all | +0.00 | +1 | 0.001510 | 0.000270 | 0.000101 | False | False |
| staggered | exact_z_all | +0.00 | -1 | 0.000497 | 0.000147 | 0.000058 | True | True |
| staggered | exact_z_all | +0.00 | +0 | 0.000252 | 0.000113 | 0.000009 | False | False |
| staggered | exact_z_all | +0.25 | +1 | 0.002568 | 0.001859 | 0.001982 | True | True |
| staggered | exact_z_all | +0.25 | -1 | 0.001207 | 0.001264 | 0.001375 | True | True |
| staggered | exact_z_all | +0.25 | +0 | 0.000813 | 0.000302 | 0.000283 | True | True |
| staggered | exact_z_all | -0.25 | +1 | 0.004712 | 0.000579 | 0.000410 | True | True |
| staggered | exact_z_all | -0.25 | -1 | 0.002032 | 0.000760 | 0.000830 | True | True |
| staggered | exact_z_all | -0.25 | +0 | 0.000434 | 0.001114 | 0.249463 | True | False |
What changed¶
Across all 54 cases, median absolute bias error drops from 0.05590 m with bilinear images to 0.00000948 m with continuous first-surface depth. At zero injected bias, the median is 0.00000361 m and maximum 0.000341 m, versus the earlier artificial 4–7 cm correction. This controlled substitution strongly implicates the pixel/bilinear measurement approximation in the preceding systematic offset. It does not prove that any particular image-based replacement will reproduce the oracle or that real stereo error has the same cause.
Do not summarize only the median. Four fits reach max_nfev: near-foreground +.25 m positive seeds in both visibility populations, and staggered zero-bias all-return positive/true starts. The latter have tiny pose/bias errors but remain failures because convergence was required. Six -.25 m truth-start fits numerically converge without recovering the injected correction: maximum bias error is 0.24990 m. These six occur in every layout/population. The near-foreground failed perturbations have bias errors up to 0.17210 m. All other trials satisfy the joint gates.
Thus 50/54 converge, with 44/54 passing joint gates when both cohorts are counted; report the meaningful denominators separately as 33/36 perturbations and 11/18 truth-start controls. No local degeneracy flag rescues the wrong-bias fits. Small pose error or locally full rank again does not establish correct nuisance-parameter estimation. Negative-bias truth-start stopping deserves a separate objective/ finite-difference investigation; the present experiment does not isolate its cause.
Optimizer residual calls span 8–639; all remain below 800 and no retries occur. Total 54-case wall time including post-fit diagnostics is 17.90 s on this CPU. The oracle uses known surface geometry and camera origins to generate measurements; it is neither a deployable sensor frontend nor unseen real-data validation. Archived baseline timing is not a simultaneous performance comparison.
Next work¶
Keep the oracle as a diagnostic. Do not promote it or claim the earlier bias issue is fully solved. Two distinct next questions now have evidence:
- Can an image-only sampler preserve surface boundaries without interpolating foreground and background into fictitious depth? Compare a predeclared discontinuity-aware sampler against the unchanged bilinear and analytic controls, with fixed populations and explicit missing-support counts. Do not tune boundary thresholds to joint-success labels.
- Why do -.25 m truth starts stop with wrong bias even under exact sampling? Examine the frozen objective and derivative behavior before changing optimizer tolerances or claiming that another sampler fixes this failure. Keep all six cases as mandatory controls.
These should be separate experiments; avoid changing sampling and optimizer at once. Preserve zero/positive/negative bias, both initial directions and true-start controls, original gates and the 800-call accounting. No real-data/SOTA promotion.
Evidence and schema include every oracle output and associated archived baseline. Ten focused tests, repository Ruff, strict docs build, solver-AST equality, source hashes, full-denominator and budget checks pass. Core and default behavior remain unchanged.