struct mp2p_icp::OptimalTF_GN_Parameters
Overview
#include <optimal_tf_gauss_newton.h> struct OptimalTF_GN_Parameters { // fields std::optional<mrpt::poses::CPose3D> linearizationPoint; std::optional<mrpt::poses::CPose3DPDFGaussianInf> prior; double minDelta = 1e-7; double maxCost = 0; PairWeights pairWeights; uint32_t maxInnerLoopIterations = 6; RobustKernel kernel = RobustKernel::None; double kernelParam = 1.0; double cov2cov_alpha = 1.0; bool cov2cov_auto_balance_with_prior = true; bool verbose = false; };
Fields
std::optional<mrpt::poses::CPose3D> linearizationPoint
The linerization point (the current relative pose guess)
std::optional<mrpt::poses::CPose3DPDFGaussianInf> prior
Optional prior guess of the SE(3) solution, including a mean value and an inverse covariance (information) matrix, i.e. zeros in the diagonal mean that those prior coordinates should be ignored, a large value means the solution must be close to those coordinates.
double minDelta = 1e-7
Minimum SE(3) change to stop iterating.
double maxCost = 0
Maximum cost function; when reached, stop iterating.
uint32_t maxInnerLoopIterations = 6
Maximum number of iterations trying to solve for the optimal pose
double cov2cov_alpha = 1.0
Generalized (tempered) Bayesian scaling for the cov-to-cov data block: the cov2cov contribution to H and g is multiplied by cov2cov_alpha. α=1 keeps the standard MAP cost; α<1 down-weights the data likelihood (e.g. α=1/N turns it into a “mean residual” form). Useful when many cov-to-cov pairings carry correlated information that the per-pair modeled covariances do not capture, and the prior is otherwise drowned.
bool cov2cov_auto_balance_with_prior = true
If true (default) and a prior is provided, automatically balance the cov2cov data block against the prior using a Birge-ratio-style global scale of the modeled per-pair covariances: κ = max(1, χ²_cc / (3·N_cc − 6)) evaluated at each iteration’s current residuals; the cov2cov block of H and g is then scaled by 1/κ. Has no effect when the prior is absent.