struct mp2p_icp_filters::FilterRangeBiasCorrection::Parameters

Overview

#include <FilterRangeBiasCorrection.h>

struct Parameters
{
    // fields

    std::string pointcloud_layer;
    mrpt::math::TPoint3Df sensor_origin = {0, 0, 0};
    std::array<double, 3> ground = {0, 0, 0};
    std::array<double, 3> slanted = {0, 0, 0};
    std::array<double, 3> wall = {0, 0, 0};
    double ground_min_nz = 0.9;
    double wall_max_nz = 0.3;
    unsigned int k_neighbors = 16;
    double max_neighbor_distance = 1.0;
    unsigned int min_neighbors = 6;
    double max_planarity_ratio = 0.1;
    double min_line_ratio = 0.05;
    double max_correction = 0.05;
    size_t parallelization_grain_size = 1024UL;

    // methods

    void load_from_yaml(
        const mrpt::containers::yaml& c,
        FilterRangeBiasCorrection& parent
        );
};

Fields

std::string pointcloud_layer

The point cloud layer to correct, in place.

mrpt::math::TPoint3Df sensor_origin = {0, 0, 0}

Sensor position in the frame of the point cloud. Can be defined as a function of the robot pose variables, as in FilterByRange.

std::array<double, 3> ground = {0, 0, 0}

Model coefficients (a [m], b [m/m], c [m]) per surface class.

double ground_min_nz = 0.9

A normal with |n_z| above this is ground, below wall_max_nz a wall, and anything in between slanted.

unsigned int k_neighbors = 16

Neighbors used to estimate each normal.

double max_neighbor_distance = 1.0

Neighbors farther than this are ignored [m].

unsigned int min_neighbors = 6

Points with fewer usable neighbors are left untouched.

double max_planarity_ratio = 0.1

The neighborhood is a plane only if its smallest covariance eigenvalue is below this fraction of the middle one.

double min_line_ratio = 0.05

…and it is not a line: the middle eigenvalue must be above this fraction of the largest one.

double max_correction = 0.05

Corrections are clamped to this magnitude [m].

size_t parallelization_grain_size = 1024UL

When TBB is enabled, the grainsize for parallel processing.