class mola::state_estimation_simple::Parameters

Overview

Parameters needed by StateEstimationSimple.

#include <Parameters.h>

class Parameters
{
public:
    // fields

    bool gnss_enabled = false;
    double gnss_max_horizontal_sigma = 0.20;
    double gnss_min_sigma_floor_xy = 0.10;
    double gnss_min_sigma_floor_z = 0.30;
    bool gnss_fuse_z = false;
    double max_time_to_use_velocity_model = 2.0;
    mrpt::math::TTwist3D initial_twist;
    double sigma_random_walk_acceleration_linear = 1.0;
    double sigma_random_walk_acceleration_angular = 10.0;
    double sigma_relative_pose_linear = 1.0;
    double sigma_relative_pose_angular = 0.1;
    double sigma_imu_angular_velocity = 0.05;
    bool velocity_filter_enabled = true;
    bool enforce_planar_motion = false;
    std::string do_process_imu_labels_re = ".*";
    std::string do_process_odometry_labels_re = ".*";
    std::string do_process_gnss_labels_re = ".*";

    // methods

    void loadFrom(const mrpt::containers::yaml& cfg);
};

Fields

bool gnss_enabled = false

Master switch. Default false preserves the legacy “GNSS ignored” behavior.

double gnss_max_horizontal_sigma = 0.20

Reject any GNSS fix whose reported horizontal sigma (sqrt of the larger of the ENU east/north variances) exceeds this [m]. The default 0.20 m cleanly selects RTK-fixed samples and rejects RTK-float / no-fix (and the UINT32_MAX no-fix covariance sentinel).

double gnss_min_sigma_floor_xy = 0.10

Lower bound on the horizontal measurement sigma actually used to correct the anchor [m]. A 2 cm RTK fix is softened to this floor so the prior Gaussian sent to the ICP still spans the next-step motion at speed.

double gnss_min_sigma_floor_z = 0.30

Same floor for the vertical component [m] (used only if gnss_fuse_z).

bool gnss_fuse_z = false

If true, also correct the Z of the anchor. Default false: vehicle-frame vertical is usually poorly observed and GNSS altitude is noisier.

double max_time_to_use_velocity_model = 2.0

Valid estimations will be extrapolated only up to this time since the last incorporated observation.

bool velocity_filter_enabled = true

If true, velocity estimates are smoothed via a per-component scalar Kalman filter. The process noise reuses sigma_random_walk_acceleration_linear/angular [m/s^2, rad/s^2], and measurement noise comes from the covariance already computed by each fuse_*() call. Default: true.

Enabled by default because raw velocities are obtained by differentiating consecutive poses (pose increment / dt), which amplifies pose noise; that velocity is then fed back into the LiDAR-odometry motion model (ICP initial guess + prior), so without smoothing the loop can oscillate. Set to false to recover the legacy direct pass-through behavior.

std::string do_process_imu_labels_re = ".*"

regex for IMU sensor labels (ROS topics) to accept as IMU readings.

std::string do_process_odometry_labels_re = ".*"

regex for odometry inputs labels (ROS topics) to be accepted as inputs

std::string do_process_gnss_labels_re = ".*"

regex for GNSS (GPS) labels (ROS topics) to be accepted as inputs

Methods

void loadFrom(const mrpt::containers::yaml& cfg)

Loads all parameters from a YAML map node.