class mola::LidarOdometry

Overview

LIDAR-inertial odometry based on ICP against a local metric map model.

#include <LidarOdometry.h>

class LidarOdometry:
    public mola::FrontEndBase,
    public mola::LocalizationSourceBase,
    public mola::MapSourceBase,
    public mola::Relocalization
{
public:
    // enums

    enum AlignKind;
    enum InitLocalization;

    // structs

    struct ICP_Input;
    struct ICP_Output;
    struct MethodState;
    struct Parameters;
    struct StateUI;

    // fields

    Parameters params_;

    // methods

    virtual void initialize_frontend(const Yaml& cfg);
    virtual void spinOnce();
    virtual void onNewObservation(const CObservation::Ptr& o);
    void reset();
    bool isBusy() const;
    mrpt::poses::CPose3DInterpolator estimatedTrajectory() const;
    mrpt::maps::CSimpleMap reconstructedMap() const;
    void saveEstimatedTrajectoryToFile() const;
    void saveReconstructedMapToFile() const;
    void enqueue_request(const std::function<void()>& userRequest);
    virtual void relocalize_near_pose_pdf(const mrpt::poses::CPose3DPDFGaussian& p);
    virtual void relocalize_from_gnss();
};

Inherited Members

public:
    // typedefs

    typedef std::function<void(const LocalizationUpdate&)> localization_updates_callback_t;
    typedef std::function<void(const MapUpdate&)> map_updates_callback_t;

    // structs

    struct LocalizationUpdate;
    struct MapUpdate;

    // methods

    virtual void initialize(const Yaml& cfg) = 0;
    virtual void onNewObservation(const CObservation::Ptr& o) = 0;
    virtual void initialize(const Yaml& cfg);
    void subscribeToLocalizationUpdates(const localization_updates_callback_t& callback);
    void subscribeToMapUpdates(const map_updates_callback_t& callback);
    virtual void relocalize_near_pose_pdf(const mrpt::poses::CPose3DPDFGaussian& p) = 0;
    virtual void relocalize_from_gnss() = 0;

Fields

Parameters params_

Algorithm parameters

Methods

virtual void initialize_frontend(const Yaml& cfg)

Loads children specific parameters

virtual void spinOnce()

Runs any required action on a timely manner

virtual void onNewObservation(const CObservation::Ptr& o)

To be called whenever a new observation arrives. It should return as fast as possible, enqueuing the data for processing in another thread.

void reset()

Re-initializes the odometry system. It effectively calls initialize() once again with the same parameters that were used the first time.

mrpt::poses::CPose3DInterpolator estimatedTrajectory() const

Returns a copy of the estimated trajectory, with timestamps for each lidar observation. Multi-thread safe to call.

mrpt::maps::CSimpleMap reconstructedMap() const

Returns a copy of the estimated simplemap. Multi-thread safe to call.

void enqueue_request(const std::function<void()>& userRequest)

Enqueue a custom user request to be executed on the main LidarOdometry thread on the next iteration.

So, this method is safe to be called from any other thread.

virtual void relocalize_near_pose_pdf(const mrpt::poses::CPose3DPDFGaussian& p)

Re-localize near this pose, including uncetainty.

Parameters:

pose

The pose, in the local map frame. There is no return value from this method.

virtual void relocalize_from_gnss()

Re-localize with the next incoming GNSS message. There is no return value from this method.