struct mp2p_icp::Parameters

Overview

ICP parameters.

See also:

ICP_Base

#include <Parameters.h>

struct Parameters: public mrpt::serialization::CSerializable
{
    // fields

    uint32_t maxIterations {40};
    double minAbsStep_trans {5e-4};
    double minAbsStep_rot {1e-4};
    bool generateDebugFiles = false;
    bool saveIterationDetails = false;
    uint32_t decimationIterationDetails = 10;
    uint32_t decimationDebugFiles = 1;
    std::string debugFileNameFormat =         "icp-run-$UNIQUE_ID-local-$LOCAL_ID$LOCAL_LABEL-"         "global-$GLOBAL_ID$GLOBAL_LABEL.icplog";
    std::function<void(mp2p_icp::metric_map_t&)> functor_before_logging_local;
    std::function<void(mp2p_icp::metric_map_t&)> functor_before_logging_global;
    bool debugPrintIterationProgress = false;
    std::map<uint32_t, double> quality_checkpoints = {         {50U, 0.05}, {100U, 0.10}};

    // methods

    void load_from(const mrpt::containers::yaml& p);
    void save_to(mrpt::containers::yaml& p) const;
};

Fields

uint32_t maxIterations {40}

Maximum number of ICP iterations to run.

double minAbsStep_trans {5e-4}

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-4}

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

bool generateDebugFiles = false

If true, debug files useful to inspect how ICP works internally will be generated and saved to disk for posterior inspection with a GUI.

The same mp2p_icp::LogRecord object saved to disk will be also returned by ICP::align().

See also:

debugFileNameFormat, saveIterationDetails

bool saveIterationDetails = false

If enabled, the intermediary pairings and SE(3) solution for each ICP step will be also stored in the mp2p_icp::LogRecord to help investigating how ICP made progress.

uint32_t decimationIterationDetails = 10

If set to N>1, only 1 out of N ICP iterations will be kept. Applicable if saveIterationDetails is true. Useful to save tons of disk space for large datasets (!).

uint32_t decimationDebugFiles = 1

If set to N>1, only 1 out of N log files will be actually generated. Useful to save tons of disk space for large datasets (!).

std::string debugFileNameFormat =         "icp-run-$UNIQUE_ID-local-$LOCAL_ID$LOCAL_LABEL-"         "global-$GLOBAL_ID$GLOBAL_LABEL.icplog"

Generated files format, if generateDebugFiles is true.

std::function<void(mp2p_icp::metric_map_t&)> functor_before_logging_local

Function to apply to the local and global maps before saving the map to a log file. Useful to apply deletion filters to save space and time.

std::map<uint32_t, double> quality_checkpoints = {         {50U, 0.05}, {100U, 0.10}}

Quality checkpoints: if the quality is smaller than the given threshold at the prescribed iteration, ICP will be aborted.