struct mp2p_icp_filters::FilterPlanePatches::Parameters

Overview

#include <FilterPlanePatches.h>

struct Parameters
{
    // fields

    std::string input_pointcloud_layer = mp2p_icp::metric_map_t::PT_LAYER_RAW;
    bool clear_previous = true;
    double voxel_size = 0.10;
    double distance_threshold = 0.06;
    double normal_agreement_deg = 12.0;
    uint32_t min_points = 300;
    double min_span = 1.5;
    double range_min = 1.0;
    double range_max = 60.0;
    uint32_t max_patches = 12;
    uint32_t normal_knn = 13;
    uint32_t seed_candidates = 120;

    // methods

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

Fields

bool clear_previous = true

If true, planes is emptied before appending. Leave it on for a per-scan observation map, whose patches describe only this scan.

double voxel_size = 0.10

Downsampling applied before anything else [m]. It also sets the area credited to a patch: one point stands for one voxel face.

double distance_threshold = 0.06

Maximum point-to-plane distance for an inlier [m].

double normal_agreement_deg = 12.0

Maximum angle between a point’s own normal and the candidate plane’s [deg]. Rejects points that merely lie near the plane while belonging to a surface crossing it.

uint32_t min_points = 300

Minimum inlier count for a patch. With the default voxel size, 300 points is 3 m2.

double min_span = 1.5

Minimum extent along the shorter in-plane axis [m].

double range_min = 1.0

Points outside this range from the layer’s origin are ignored [m]. The near limit drops the vehicle body, the far one drops returns whose angular resolution no longer supports a plane fit.

uint32_t max_patches = 12

Stop after this many patches.

uint32_t normal_knn = 13

Neighbors used to estimate each point’s normal.

uint32_t seed_candidates = 120

How many seeds to try per patch. Cost is linear in this.