Calibration Method Portfolio¶
Calibrex supports multiple calibration methods behind one result and evidence contract. A method is not considered complete merely because it returns a matrix: it also needs typed inputs, provenance, observability diagnostics, holdout evaluation, and known-bad controls.
Implemented and In Progress¶
| Method | Role | Status | Independent evaluation |
|---|---|---|---|
| Native fixed-trajectory LiDAR point-to-plane | LiDAR extrinsic refinement | Implemented | voxel-plane holdout and 6-DoF controls |
| Online motion-compensated LiDAR point-to-plane | Streaming LiDAR extrinsic refinement | Implemented | rolling holdout and adoption gates |
| Open3D RGB-D SLAC | External RGB-D trajectory/calibration adapter | Adapter boundary | Calibrex result/report metrics |
| OpenCV hand-eye / robot-world | External Tsai, Park, Horaud, Andreff, Daniilidis, Shah, and Li implementations | Apache-2.0 optional adapter | shared absolute-pose split and Calibrex holdout closure |
| Koide-style direct LiDAR-camera | External targetless baseline | Adapter boundary | projection, edge, depth-edge, and controls |
| Per-point Camera-LiDAR capture time | Asynchronous projection/deskew and scalar clock-offset evidence | Native solver + public adapter | 17 ms synthetic truth, disjoint capture holdout, six time controls, TIERS real-data INCONCLUSIVE |
| Radar Doppler candidate consistency | Radar yaw evidence | Implemented | frame holdout, four yaw controls, sensor policy |
| Robust Radar ego velocity | Scan-wise motion estimation from Doppler | Native solver | synthetic truth, outliers, LOS rank diagnostics |
| Radar-to-trajectory yaw | Radar extrinsic rotation from paired velocities | Native solver | deterministic holdout, direction diversity, four yaw controls |
| Radar lever arm and clock offset | Translation/time from Radar and reference velocities | Native solver | profiled time grid, lever-arm spectrum, holdout, eight controls |
| Planar-board LiDAR-camera plane alignment | LiDAR-to-camera 6-DoF extrinsic | Native solver | capture holdout, normal/offset closure, normal-span diagnostics |
| Planar-board LiDAR-camera point+plane | Independent centre/normal 6-DoF baseline | Native solver | shared capture holdout, 6D joint spectrum, 12 known-bad controls, ACFR real data |
| Horn point-only Camera-LiDAR alignment | Normal-free centre-correspondence 6-DoF baseline | Native solver | shared capture holdout, quaternion eigengap, 6D spectrum, 12 controls, ACFR real data |
| Planar-board LiDAR-camera line+plane | One-pose-capable LiDAR-to-camera 6-DoF extrinsic | Native solver | plane/edge closure, separate rotation/translation spectra, edge-angle gate |
| Robust point-to-point ICP | Generic local 3D registration | Native solver | spatial-block holdout, mutual/trimmed matches, 3D-spread and frozen-pair diagnostics |
| Open3D Generalized ICP | Optional probabilistic registration baseline | MIT adapter | train-only source fit, common Calibrex spatial holdout/rematching metrics |
| PCL/Autoware NDT | External registration baseline | Subprocess/precomputed adapter | declared train isolation, common Calibrex spatial holdout/rematching metrics |
| Park-Martin motion hand-eye | Trajectory-derived AX = XB extrinsic |
Native solver | motion holdout, axis spectrum, translation-system spectrum and closure |
| Tsai-Lenz motion hand-eye | Independent separable AX = XB baseline |
Native solver | shared motion holdout, two system spectra, 12 known-bad controls |
| Daniilidis dual-quaternion hand-eye | Simultaneous AX = XB rotation/translation baseline |
Native solver | shared holdout, 8D nullspace/Study diagnostics, 12 known-bad controls |
| Shah robot-world/hand-eye | Absolute-pose A_j X = Y B_j hand-eye and robot-world transforms |
Native solver | separate holdout, dominant Kronecker gap, 6D translation rank, 24 controls |
| Li-Wang-Wu robot-world/hand-eye | Simultaneous absolute-pose A_j X = Z B_j 24-variable Kronecker baseline |
Native solver | shared-with-Shah holdout, full rank/condition spectrum, SO(3) projection correction, 24 controls |
| Dornaika-Horaud robot-world/hand-eye | Unit-constrained absolute-pose A_j X = Z B_j quaternion closed form |
Native solver | common absolute split, sign synchronization, closed-form width, 6D translation rank, 24 controls |
| Dornaika-Horaud nonlinear robot-world/hand-eye | Simultaneous 24-parameter A_j X = Z B_j refinement |
Native analytic-Jacobian LM | paper penalties, data-Jacobian spectrum, convergence trace, SO(3) correction, 24 controls |
| LiDAR-IMU rotation consistency | Supplied rotation evaluation | Implemented | held-out angular-rate and gravity evidence |
| Anchored temporal offset | One-dimensional time calibration evidence | Implemented | injected offsets and adapted/anchored comparison |
| Backend-neutral joint SLAC graph | Coupled trajectory/extrinsic/time optimization | Native graph core + typed Schur LM | grouped holdout, robust LM, 48→8 TUM pose elimination, joint spectrum, per-block controls |
The native Radar ego-velocity solver uses Huber IRLS on
d_i = -u_i^T v. It reports rank and condition diagnostics from the LOS normal
matrix and refuses a 3D result when the scan geometry does not span three
velocity directions. Automotive scans may therefore be valid only for a
future planar or yaw-specific stage; Calibrex must not silently promote them to
full 3D support.
Next Native Methods¶
- Analytic/manifold factor Jacobians and sparse block storage behind the joint graph contract.
- Sliding-window marginalization with explicit gauge and consistency diagnostics.
- Additional primary-paper baselines and continuous-time motion adapters.
Optional Adapter Methods¶
- Open3D Generalized ICP
- PCL or Autoware NDT through a subprocess boundary
- Kalibr spatiotemporal camera-IMU calibration
- AprilTag or ChArUco observation extraction
- external visual and LiDAR odometry producers for hand-eye calibration
External implementations remain optional adapters. Their version, command,
license boundary, input digests, and output role must be recorded. GPL or
license-uncertain code must not be copied into src/calibrex.
Research Sequence¶
The intended sequence is compositional:
Radar Doppler returns
→ robust scan velocity
→ Radar-to-trajectory rotation
→ angular-rate-excited lever arm
→ joint spatial/temporal evidence
Likewise, target-based LiDAR-camera calibration supplies an independently checkable reference for later edge and mutual-information targetless methods. Every new optimizer must use a train split and be judged on an unchanged holdout split with explicit perturbation controls.
Planar-board LiDAR-camera research basis¶
The native plane-only solver follows the geometric contract introduced by
Zhang and Pless (IROS 2004): an
oriented camera plane corresponds to an oriented LiDAR plane. For
p_camera = R p_lidar + t, the constraints are
n_camera = R n_lidar and
n_camera^T t = d_lidar - d_camera. Rotation is estimated by weighted
orthogonal Procrustes and translation by weighted least squares. Robust IRLS
weights whole captures, so a dense plane cannot silently dominate merely by
containing more points.
Plane count alone is not an observability test. The camera-plane normal matrix must have rank three for full translation, and near-parallel normals remain ill-conditioned. This agrees with the explicit observability analysis of Fu et al. and the minimum three-pose plane/centre method evaluated by Verma et al.. Calibrex therefore reports the singular spectrum, rank, condition number, capture split, and every normal sign selected using the supplied initial transform.
An additional normal-free baseline follows Horn's unit-quaternion absolute orientation method. It aligns corresponding 3D board centres with scale fixed to one, reports the quaternion maximum eigengap and a local six-DoF Jacobian spectrum, and rejects collinear centre geometry. The RMS scale ratio is retained only as a unit diagnostic. It uses the exact same ACFR capture IDs and train/holdout split as the plane-only and centre+normal methods, so their transform deltas are comparable without split leakage.
Plane-only calibration does not claim one-shot observability. A finite board's boundary lines supply the missing in-plane constraints. The implemented line-plus-plane method follows Zhou, Li, and Kaess and can be observable from one pose when two non-parallel board edges are reliably measured. Plane plus one edge, or two parallel edges, remains rank five because translation along the shared edge direction is unobservable. Calibrex reports separate rotation and translation singular spectra and rejects weak edge-angle geometry. LCE-Calib likewise combines point-to-plane and point-to-line refinement (Jiao et al.).
The closed-form initializer assumes the extractor supplies stable edge IDs and consistent oriented directions. An unlabeled rectangle has a 180-degree permutation ambiguity, and a square can additionally admit 90-degree permutations. These discrete hypotheses are not silently resolved; the policy is recorded in provenance and such inputs require a labeled checkerboard, fiducial, or an adapter that enumerates and evaluates permutations.
Feature extraction stays outside the native core. GPL implementations such as
FAST-Calib, plycal, and several ROS checkerboard packages may only be invoked
through optional adapters; their code is not copied into src/calibrex.
Native robust point-to-point ICP¶
The native ICP follows the refreshed nearest-neighbour loop of Besl and McKay and the fixed-overlap trimming principle of Chetverikov et al.. Each iteration transforms the source, recomputes nearest neighbours, optionally retains only mutual pairs, applies a distance gate and stable distance-ranked trim, then solves the retained rigid alignment by an SO(3)-corrected SVD. This is a local registration method; the result does not claim global convergence.
Point holdout is spatial rather than an independent random-point split. Source points are grouped into deterministic voxels before train/holdout selection so neighbouring samples of the same surface do not trivially leak across the evaluation boundary. Held-out source points are evaluated with fresh target nearest neighbours.
The solver reports the fixed-pair six-dimensional information spectrum, but it does not interpret its inverse as calibration covariance. As shown by Bonnabel, Barczyk, and Goulette, ordinary point-to-point fixed-correspondence Hessians can be misleading when ICP rematches points. The native solver therefore conservatively rejects collinear and planar retained geometry instead of reporting full confidence from a formally rank-six frozen-pair Jacobian.
Effective diagnostics now perturb all six transform directions and rerun the complete nearest/mutual/gate/trim correspondence policy. They report rematched black-box objective curvature and correspondence-pair Jaccard stability, not a covariance matrix. Six independent initialization probes additionally flag a distinct transform with equivalent spatial holdout error as a symmetry ambiguity. Local curvature and global multi-start falsification remain separate diagnostics because either can pass while the other fails.
Segal-Haehnel-Thrun GICP and Biber-Strasser NDT are optional adapters with distinct method IDs. Their library-specific fitness values are retained as raw provenance, not treated as directly comparable metrics; Calibrex recomputes common spatial holdout, inlier, rematching curvature, and correspondence-Jaccard metrics for cross-backend comparisons. An external NDT result that does not declare train/holdout isolation is explicitly warned.
Motion hand-eye calibration¶
The native hand-eye solver implements the separable Lie-algebra construction
of Park and Martin. Inputs are typed
relative-motion pairs that explicitly satisfy A X = X B. With
alpha = Log(R_A) and beta = Log(R_B), rotation is the weighted orthogonal
Procrustes map alpha = R_X beta. Translation is then solved from
(R_A - I)t_X = R_X t_B - t_A.
Motion count is not used as a substitute for observability. One rotation-axis
family leaves the hand-eye twist about that axis ambiguous, while the stacked
translation system also leaves translation along the shared axis unobservable.
The solver requires at least two independent rotation-axis directions and rank
three in stack(R_A - I). It rejects identity and sub-threshold rotations and
reports separate rotation-axis and translation singular spectra, rank, and
translation condition number.
Evaluation compares A X and X B without refitting and reports rotation
geodesic and translation closure on train and holdout motions. If relative
motions were derived from absolute trajectories, the upstream builder must
split disjoint absolute pose or temporal blocks before constructing pairs;
randomly splitting a dense all-pairs motion set would leak the same poses into
both sets. That builder remains separate from the core solver so eye-in-hand,
eye-to-hand, and robot-world/hand-eye conventions cannot be mixed implicitly.
Tsai and Lenz is implemented as an
independent modified-Rodrigues/linear-translation baseline with the same typed
motion split and closure evaluation as Park-Martin. The simultaneous
dual-quaternion method of
Daniilidis is also implemented as
an independent 8D nullspace solver. It enforces unit and Study constraints,
reports the full singular spectrum and nullspace separation, and selects real
constrained candidates by train closure. OpenCV calibrateHandEye is suitable
for an optional adapter; Kalibr is a distinct camera-IMU spatiotemporal
workflow and is not labeled as this native AX = XB method.
Shah is implemented separately for the
absolute-pose robot-world/hand-eye equation A_j X = Y B_j. Its Kronecker SVD
returns both X and Y, followed by a rank-six joint translation solve. The
adapter preserves a separate absolute-pose split and reports dominant-singular
width, SO(3) projection correction, held-out closure, and signed controls for
both estimated transforms. Li, Wang, and
Wu provide an independent simultaneous
absolute-pose comparison: their equations (17)-(19) solve vec(R_X),
vec(R_Z), t_X, and t_Z in one rank-gated 24-variable system. Calibrex
preserves the paper method's non-recomputed translations after SO(3) projection
and exposes the resulting correction and held-out closure rather than treating
the linear estimate as automatically physical. None of the absolute-pose
baselines is relabeled as relative-motion AX=XB evidence.
Dornaika and Horaud add a third independent absolute-pose estimator. It directly enforces two unit-quaternion constraints in the paper's positive quadratic closed form, then conditionally solves six translations. Calibrex records quaternion double-cover sign synchronization, the four-value spectrum and minimum width, unit errors, held-out closure, and 24 controls. The paper's separate nonlinear method is also implemented as a 24-parameter analytic-Jacobian LM refinement. Its convergence trace, data-Jacobian width, orthogonality penalty, SO(3) correction, and mixed-unit weighting limitation remain explicit.