template class mrpt::graphslam::deciders::CICPCriteriaNRD

ICP-based Fixed Intervals Node Registration.

#include <mrpt/graphslam/NRD/CICPCriteriaNRD.h>

template <class GRAPH_T>
class CICPCriteriaNRD:
    public mrpt::graphslam::deciders::CNodeRegistrationDecider,
    public mrpt::graphslam::deciders::CRangeScanOps
{
public:
    // typedefs

    typedef typename GRAPH_T::constraint_t constraint_t;
    typedef typename GRAPH_T::constraint_t::type_value pose_t;
    typedef typename GRAPH_T::global_pose_t global_pose_t;
    typedef mrpt::math::CMatrixFixed<double, constraint_t::state_length, constraint_t::state_length> InfMat;
    typedef mrpt::graphslam::deciders::CRangeScanOps<GRAPH_T> range_ops_t;
    typedef CICPCriteriaNRD<GRAPH_T> decider_t;
    typedef mrpt::graphslam::deciders::CNodeRegistrationDecider<GRAPH_T> parent_t;

    // structs

    struct TParams;

    //
fields

    TParams params;

    // construction

    CICPCriteriaNRD();

    //
methods

    virtual void loadParams(const std::string& source_fname);
    virtual void printParams() const;
    virtual void getDescriptiveReport(std::string* report_str) const;
    virtual bool updateState(mrpt::obs::CActionCollection::Ptr action, mrpt::obs::CSensoryFrame::Ptr observations, mrpt::obs::CObservation::Ptr observation);
    bool updateState2D(mrpt::obs::CObservation2DRangeScan::Ptr observation);
    bool updateState3D(mrpt::obs::CObservation3DRangeScan::Ptr observation);
};

Inherited Members

public:
    // typedefs

    typedef typename GRAPH_T::constraint_t::type_value pose_t;
    typedef typename GRAPH_T::global_pose_t global_pose_t;
    typedef mrpt::math::CMatrixFixed<double, constraint_t::state_length, constraint_t::state_length> inf_mat_t;

    // structs

    struct TMsg;
    struct TParams;

    //
methods

    virtual void setClassName(const std::string& name);
    bool isMultiRobotSlamClass();
    std::string getClassName() const;

Typedefs

typedef typename GRAPH_T::constraint_t constraint_t

Handy typedefs.

type of graph constraints

typedef typename GRAPH_T::constraint_t::type_value pose_t

type of underlying poses (2D/3D).

typedef mrpt::graphslam::deciders::CRangeScanOps<GRAPH_T> range_ops_t

Typedef for accessing methods of the RangeScanRegistrationDecider parent class.

typedef CICPCriteriaNRD<GRAPH_T> decider_t

self type

typedef mrpt::graphslam::deciders::CNodeRegistrationDecider<GRAPH_T> parent_t

Node Registration Decider.

Methods

virtual void loadParams(const std::string& source_fname)

Load the necessary for the decider/optimizer configuration parameters.

virtual void printParams() const

Print the problem parameters - relevant to the decider/optimizer to the screen in a unified/compact way.

virtual void getDescriptiveReport(std::string* report_str) const

Fill the provided string with a detailed report of the decider/optimizer state.

Report should include (part of) the following:

  • Timing of important methods

  • Properties fo class at the current time

  • Logging of commands until current time

virtual bool updateState(mrpt::obs::CActionCollection::Ptr action, mrpt::obs::CSensoryFrame::Ptr observations, mrpt::obs::CObservation::Ptr observation)

Update the decider state using the latest dataset measurements.

Depending on the observations at hand, update of the state is handled either by updateState2D, or by updateState3D methods. This helps in separating the 2D, 3D RangeScans handling altogether, which in turn simplifies the overall procedure

Order of calls: updateState (calls) ==> updateState2D/3D ==> checkRegistrationCondition2D/3D ==> CheckRegistrationCondition

See also:

updateState2D, updateState3D

bool updateState2D(mrpt::obs::CObservation2DRangeScan::Ptr observation)

Specialized updateState method used solely when dealing with 2DRangeScan information.

See also:

updateState3D

bool updateState3D(mrpt::obs::CObservation3DRangeScan::Ptr observation)

Specialized updateState method used solely when dealing with 3DRangeScan information.

See also:

updateState2D