class mrpt::slam::CICP::TConfigParams

Overview

The ICP algorithm configuration data.

#include <mrpt/slam/CICP.h>

class TConfigParams: public mrpt::config::CLoadableOptions
{
public:
    // fields

    TICPAlgorithm ICP_algorithm {icpClassic};
    TICPCovarianceMethod ICP_covariance_method {icpCovFiniteDifferences};
    bool onlyUniqueRobust {false};
    unsigned int maxIterations {40};
    double minAbsStep_trans {1e-6};
    double minAbsStep_rot {1e-6};
    unsigned int ransac_minSetSize {3};
    unsigned int ransac_maxSetSize {20};
    unsigned int ransac_nSimulations {100};
    double ransac_mahalanobisDistanceThreshold {3.0};
    double normalizationStd {0.02};
    bool ransac_fuseByCorrsMatch {true};
    double ransac_fuseMaxDiffXY {0.01};
    double ransac_fuseMaxDiffPhi {0.1* M_PI / 180.0};
    double thresholdDist {0.75};
    double thresholdAng {0.15* M_PI / 180.0};
    double ALFA {0.5};
    double smallestThresholdDist {0.1};
    double covariance_varPoints {0.02* 0.02};
    bool doRANSAC {false};
    double kernel_rho {0.07};
    bool use_kernel {true};
    double Axy_aprox_derivatives {0.05};
    double LM_initial_lambda {1e-4};
    bool skip_cov_calculation {false};
    bool skip_quality_calculation {true};
    uint32_t corresponding_points_decimation {5};

    // methods

    virtual void loadFromConfigFile(const mrpt::config::CConfigFileBase& source, const std::string& section);
    virtual void saveToConfigFile(mrpt::config::CConfigFileBase& target, const std::string& section) const;
};

Inherited Members

public:
    // methods

    virtual void loadFromConfigFile(const mrpt::config::CConfigFileBase& source, const std::string& section) = 0;
    void loadFromConfigFileName(const std::string& config_file, const std::string& section);
    virtual void saveToConfigFile(mrpt::config::CConfigFileBase& target, const std::string& section) const;
    void saveToConfigFileName(const std::string& config_file, const std::string& section) const;
    void dumpToConsole() const;
    virtual void dumpToTextStream(std::ostream& out) const;

Fields

TICPAlgorithm ICP_algorithm {icpClassic}

The algorithm to use (default: icpClassic).

See https://www.mrpt.org/tutorials/programming/scan-matching-and-icp/ for details

TICPCovarianceMethod ICP_covariance_method {icpCovFiniteDifferences}

The method to use for covariance estimation (Default: icpCovFiniteDifferences)

unsigned int maxIterations {40}

Maximum number of iterations to run.

double minAbsStep_trans {1e-6}

If the correction in all translation coordinates (X,Y,Z) is below this threshold (in meters), iterations are terminated (Default:1e-6)

double minAbsStep_rot {1e-6}

If the correction in all rotation coordinates (yaw,pitch,roll) is below this threshold (in radians), iterations are terminated (Default:1e-6)

double normalizationStd {0.02}

RANSAC-step option: The standard deviation in X,Y of landmarks/points which are being matched (used to compute covariances in the SoG)

double thresholdDist {0.75}

Initial threshold distance for two points to become a correspondence.

double ALFA {0.5}

The scale factor for thresholds every time convergence is achieved.

double smallestThresholdDist {0.1}

The size for threshold such that iterations will stop, since it is considered precise enough.

double covariance_varPoints {0.02* 0.02}

This is the normalization constant \(\sigma^2_p\) that is used to scale the whole 3x3 covariance.

This has a default value of \((0.02)^2\), that is, a 2cm sigma. See paper: J.L. Blanco, J. Gonzalez-Jimenez, J.A. Fernandez-Madrigal, “A Robust, Multi-Hypothesis Approach to Matching Occupancy Grid Maps”, Robotica, vol. 31, no. 5, pp. 687-701, 2013.

bool doRANSAC {false}

Perform a RANSAC step, mrpt::tfest::se2_l2_robust(), after the ICP convergence, to obtain a better estimation of the pose PDF.

double kernel_rho {0.07}

Cauchy kernel rho, for estimating the optimal transformation covariance, in meters (default = 0.07m)

bool use_kernel {true}

Whether to use kernel_rho to smooth distances, or use distances directly (default=true)

double Axy_aprox_derivatives {0.05}

[LM method only] The size of the perturbance in x & y used to estimate the Jacobians of the square error (default=0.05)

double LM_initial_lambda {1e-4}

[LM method only] The initial value of the lambda parameter in the LM method (default=1e-4)

bool skip_cov_calculation {false}

Skip the computation of the covariance (saves some time) (default=false)

bool skip_quality_calculation {true}

Skip the (sometimes) expensive evaluation of the term ‘quality’ at ICP output (Default=true)

uint32_t corresponding_points_decimation {5}

Decimation of the point cloud being registered against the reference one (default=5) - set to 1 to have the older (MRPT <0.9.5) behavior of not approximating ICP by ignoring the correspondence of some points.

The speed-up comes from a decimation of the number of KD-tree queries, the most expensive step in ICP

Methods

virtual void loadFromConfigFile(const mrpt::config::CConfigFileBase& source, const std::string& section)

This method load the options from a “.ini”-like file or memory-stored string list.

Only those parameters found in the given “section” and having the same name that the variable are loaded. Those not found in the file will stay with their previous values (usually the default values loaded at initialization). An example of an “.ini” file:

[section]
resolution    = 0.10   // blah blah...
modeSelection = 1      // 0=blah, 1=blah,...

See also:

loadFromConfigFileName, saveToConfigFile

virtual void saveToConfigFile(mrpt::config::CConfigFileBase& target, const std::string& section) const

This method saves the options to a “.ini”-like file or memory-stored string list.

See also:

loadFromConfigFile, saveToConfigFileName