struct mola::KeyframePointCloudMap::TCreationOptions

Overview

#include <KeyframePointCloudMap.h>

struct TCreationOptions: public mrpt::config::CLoadableOptions
{
    // fields

    uint32_t max_search_keyframes = 3;
    uint32_t k_correspondences_for_cov = 20;
    double rotation_distance_weight = 2.0;
    uint32_t num_diverse_keyframes = 1;
    bool use_view_direction_filter = true;
    double max_view_angle_deg = 120.0;

    // methods

    void loadFromConfigFile(
        const mrpt::config::CConfigFileBase& c,
        const std::string& s
        );

    void dumpToTextStream(std::ostream& out) const;
    void writeToStream(mrpt::serialization::CArchive& out) const;
    void readFromStream(mrpt::serialization::CArchive& in);
};

Fields

uint32_t max_search_keyframes = 3

Maximum number of key-frames to search for NN.

double rotation_distance_weight = 2.0

Weight converting angular distance [rad] to equivalent linear distance [m] for keyframe proximity ranking. Higher values favor angularly-close (similar orientation) frames.

uint32_t num_diverse_keyframes = 1

Number of keyframe slots (out of max_search_keyframes) reserved for angularly diverse and/or more distant keyframes. Must be < max_search_keyframes.

bool use_view_direction_filter = true

If true (default), and if both the reference and query point clouds contain per-point view-direction fields (“view_x”, “view_y”, “view_z” - unit vectors pointing FROM the point TOWARD the sensor at acquisition time), then a cov-to-cov pairing is accepted only when the angle between the two view directions is at most max_view_angle_deg.

The rationale is that two points on opposite sides of a thin surface (e.g. a wall seen from the front vs. the back, or a thin pole) will have nearly anti-parallel view vectors. Pairing them would produce a badly conditioned or outright wrong ICP residual. 120° is a reasonable default: it rejects pairs whose view directions differ by more than 120° (cos < -0.5) while keeping pairs seen from “similar enough” directions.

Setting this to false, or to a threshold ≥ 180°, effectively disables the filter even when view fields are present.

double max_view_angle_deg = 120.0

Maximum allowed angle [degrees] between the view-direction vectors of a candidate cov-to-cov pair. Only used when use_view_direction_filter is true and the view fields are present. Default: 120°.