Struct CovarianceParameters

Struct Documentation

struct CovarianceParameters

Public Types

enum class Method : uint8_t

Covariance estimation backend.

Values:

enumerator InverseHessian

Inverse of the (whitened) Gauss-Newton Hessian, scaled by the a-posteriori unit-weight variance chi^2/(m-n). Cheap but typically optimistic, since it ignores correspondence and surface-mismatch noise.

enumerator Censi3D

Censi-style sandwich H^{-1} M H^{-1}, with H = sum J_i^T J_i and M = sum J_i^T Sigma_z_i J_i. For cov2cov pairings the per-pair Sigma_z = inv(cov_inv) is used directly; for pt2pt without per-pair noise, an isotropic Sigma_z = defaultPointSigma^2 * I is assumed. Reference: Censi 2007, Prakhya 2015.

Public Functions

void load_from(const mrpt::containers::yaml &p)

Loads the parameters from a YAML map node. All entries are optional; unspecified fields keep their default values. Recognized keys:

method: “InverseHessian” | “Censi3D” defaultPointSigma: [m] floor_sigma_xyz: [m] floor_sigma_angles: [rad] (use floor_sigma_angles_deg for degrees) floor_sigma_angles_deg: [deg] (alternative to the radian form) finDif_xyz, finDif_angles

void save_to(mrpt::containers::yaml &p) const

Public Members

Method method = Method::InverseHessian
double defaultPointSigma = 0.02

For pt2pt pairings without per-pair Sigma in Censi3D path: isotropic point-noise std-dev [m].

double floor_sigma_xyz = 0.0

[m]

Per-axis floor added to the resulting covariance diagonal. Stored as std-dev for readability; squared internally. Useful to absorb unmodelled errors and keep downstream filters numerically stable.

double floor_sigma_angles = 0.0

[rad]

double finDif_xyz = 1e-7
double finDif_angles = 1e-7