struct mola::LidarOdometry::Parameters::SimpleMapOptions

Overview

Keyframe-creation policy for the SIMPLEMAP, which is also the one pushed to a mola::SharedKeyframeMap sink (the central mapper’s keyframe backbone). Same shared policy as MapUpdateOptions, but tuned independently: unlike the local map, this one feeds loop closure, so it is the one that usually wants nearby_keyframe_time_window enabled.

#include <LidarOdometry.h>

struct SimpleMapOptions: public mola::KeyframeDecisionOptions
{
    // fields

    bool generate = false;
    std::string save_final_map_to_file;
    bool add_non_keyframes_too = false;
    double save_gnss_max_age = 1.0;
    double save_imu_max_age = 0.1;
    bool generate_lazy_load_scan_files = false;
    std::string load_existing_simple_map;
    bool save_deskewed_scans = false;

    // methods

    void initialize(
        const Yaml& c,
        Parameters& parent
        );
};

Inherited Members

public:
    // fields

    double min_translation_between_keyframes = 1.0;
    double min_rotation_between_keyframes = 30.0;
    bool measure_from_last_kf_only = false;
    uint32_t min_nearby_poses_occupied = 1;
    double nearby_keyframe_time_window = 0;

Fields

std::string save_final_map_to_file

If not empty, the final simple map will be dumped to a file at destruction time

bool add_non_keyframes_too = false

If enabled, all frames are stored in the simplemap, but non-keyframes will be without associated observations.

double save_gnss_max_age = 1.0

If !=0, storing the latest GNSS observation together with the Lidar observation in the simplemap CSensoryFrame (SF) (“keyframe”) will be enabled. This parameter sets the maximum age in seconds for a GNSS (GPS) observation to be considered valid to be stored in the SF.

double save_imu_max_age = 0.1

Same as save_gnss_max_age, for the IMU: the IMU observation closest in time to the keyframe is stored in the simplemap CSensoryFrame, and this is the maximum age (seconds) for which one is still considered valid.

Only the IMU absolute attitude observes the map azimuth independently of GNSS, and it is the simplemap, not the live run, that offline tools such as mola-sm-georeferencing see. Without it, the georeferenced yaw rests entirely on the GNSS position spread, which is ill-conditioned for short or noisy trajectories. The stored observation is a few hundred bytes next to a keyframe’s point cloud.

bool generate_lazy_load_scan_files = false

If enabled, a directory will be create alongside the .simplemap and pointclouds will be externally serialized there, for much faster loading and processing of simplemaps.

std::string load_existing_simple_map

If non-empty, the simple map will be loaded from the given *.simplemap file instead of generating it from scratch. This can be used for multi-session SLAM, or for localization-only.

bool save_deskewed_scans = false

If enabled, saved keyframes will contain an additional ‘deskewed’ observation with the motion-compensated cloud.