Skip to content

Batched screw trajectory evaluation

The native screw_linear CPU fitter now batches fixed-state pose interpolation and point-to-plane evaluation. It also shares accelerometer motion stencils and skips the translation solve when only a rotation logarithm is consumed. These changes preserve complete calibration results, including covariance, final gradient, accepted iterations, holdouts and signed controls.

Against the preceding maintained implementation, the paired median complete-API ratios are 2.023x for synthetic LiDAR–IMU recovery and 4.709x for spent public GLIM geometry. Both meet the unchanged 2x median API gate in this development cohort. The joint result is close to that threshold and includes a 1.641x pair. Including process startup, imports, source checks and output, the paired medians are 1.462x and 2.189x, respectively.

Frozen comparison

Item Value
Baseline 5278168adbe8d1cffc4abbcd13800d901d0139e7
Numerical candidate df4144a4d135dea3b0863847f26bc778b56fc719
Joint inputs Already-spent synthetic seeds 20261010, 20261011, 20261012
Geometry input Eight already-spent AIST GLIM registration captures; 1,013 retained planes
Order per case Baseline, candidate, candidate, baseline, baseline, candidate
Execution Twelve fresh CPU workers, one BLAS thread, no warmups, unreserved host
Gate Paired median complete API at least 2x for each case

The maintained benchmark was unchanged. One complete cohort was run; all twelve observations are retained. No inputs were downloaded, timing attempts discarded, convergence thresholds relaxed or observations repeated to obtain a better ratio.

Pair Joint API Joint fresh worker Geometry API Geometry fresh worker
1 2.023x 1.462x 5.264x 2.257x
2 1.641x 1.248x 4.709x 2.189x
3 2.057x 1.555x 3.908x 1.802x
Paired median 2.023x 1.462x 4.709x 2.189x
Median elapsed seconds Joint baseline Joint candidate Geometry baseline Geometry candidate
Complete API 9.217 4.826 8.024 1.747
Fresh worker 13.641 10.663 12.100 5.529

Ratios are medians of paired ratios, rather than ratios of marginal medians. The API interval includes fitting and covariance. For joint recovery it also includes holdout metrics, separability and all 32 signed controls. The larger fresh-worker interval includes imports, source verification, serialization and process startup/exit. Parent source freezing and geometry preparation are outside both intervals.

All complete input/options, fit payload and native outcome hashes agree within every baseline/candidate pair, omitting only top-level provenance. Provenance is retained separately. Joint fits retain 21/23/29 iterations, policy passes and all 32 detected controls. Every geometry fit retains 15 iterations.

Execution and correctness

Known pose queries are grouped by screw interval, with batch temporaries limited to 256 queries. Constant plane coordinates and normalized normals are snapshotted once per fit. Point transforms and support Jacobians are evaluated in batches while residual order and sequential weighted objective sums stay fixed. Tiny groups retain lazy scalar evaluation.

The batch expressions retain the scalar norms, libm calls, multiplication order and quaternion normalizations. Shared state belongs to one objective or linearization; cached arrays are read-only and never reused after a knot update. Accelerometer residuals and derivatives share their nominal stencil. The existing sampled clock derivative, gyro integration order, stopping rules, public signatures and result schemas remain unchanged. No GPU backend or new dependency is introduced.

The 42 new checks compare scalar and batched poses, every Jacobian bit, signed zero, zero/tiny/near-pi rotations, strided points, empty and small batches, chunk boundaries, cache refresh and complete sparse models across multiple updates and damping settings. A targeted run passes 421 tests. The first development smoke run exposed a local name shadowing an interpolation helper; its failure and the corrected runs are retained.

Replay and limits

The complete evidence contains all observations, both complete source capsules, original benchmark tools, input/options/results, public geometry, schemas and test records. Replay the hashes, schemas, whole-result comparisons and gates without executing archived calibration code or downloading a recording:

python tools/audit_screw_residual_archive.py docs/assets/screw_batched_evaluation/complete-evidence.tar.gz

To run a new comparison from committed sources, choose a fresh output directory:

python tools/benchmark_screw_residual_evaluation.py --baseline-commit 5278168adbe8d1cffc4abbcd13800d901d0139e7 --geometry-folder outputs/odometry-search-profile-v3 --output outputs/new-batch-comparison

These are spent development fixtures. GLIM uses assigned timestamps and fixed capture-local nearest planes, so it measures processing rather than the recording's physical trajectory or calibration accuracy. The unreserved host and three pairs per case do not establish a universal 2x improvement. Earlier published speed ratios cannot be multiplied by these measurements.

This execution improvement supplies more room for the fixed-budget reliability study. Mixed-unit stopping, sampled clock sensitivity and prior-packing approximations still need their own numerical work before an independent reliability claim.