Template Class CNodeRegistrationDecider

Inheritance Relationships

Base Type

Derived Types

Class Documentation

template<class GRAPH_T>
class CNodeRegistrationDecider : public virtual mrpt::graphslam::CRegistrationDeciderOrOptimizer<GRAPH_T>

Interface for implementing node registration classes.

CNodeRegistrationDecider provides the basic methods that have to exist in every node registration decider class. For an example of inheriting from this class see CFixedIntervalsNRD.

Note

As a naming convention, all the implemented node registration deciders are suffixed with the NRD acronym.

Subclassed by mrpt::graphslam::deciders::CICPCriteriaNRD< GRAPH_T >, mrpt::graphslam::deciders::CIncrementalNodeRegistrationDecider< GRAPH_T >

Unnamed Group

using parent_t = mrpt::graphslam::CRegistrationDeciderOrOptimizer<GRAPH_T>

Handy typedefs.

Parent of current class

using constraint_t = typename GRAPH_T::constraint_t

type of graph constraints

using pose_t = typename GRAPH_T::constraint_t::type_value

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

using global_pose_t = typename GRAPH_T::global_pose_t
using inf_mat_t = mrpt::math::CMatrixFixed<double, constraint_t::state_length, constraint_t::state_length>

Unnamed Group

bool registerNewNodeAtEnd(const typename GRAPH_T::constraint_t &constraint)

Utility methods for adding new poses to the graph.

Add a new constraint at the end of the graph.

Parameters:

constraint[in] Constraint transformation from the latest registered to the new node.

Returns:

True upon successful node registration.

bool registerNewNodeAtEnd()

Same goal as the previous method - uses the m_since_prev_node_PDF as the constraint at the end.

virtual void addNodeAnnotsToPose(global_pose_t *pose) const

Get a global_pose_t and fill the NODE_ANNOTATIONS-related fields.

Note

Users are encouraged to override this method in case they have defined a new TNodeAnnotations struct and want to use this metadata in the graph nodes.

Public Functions

CNodeRegistrationDecider()

Default class constructor.

~CNodeRegistrationDecider() override = default

Default class destructor.

virtual global_pose_t getCurrentRobotPosEstimation() const

Getter method for fetching the currently estimated robot position.

In single-robot situations this is most likely going to be the last registered node position + an position/uncertainty increment from that position

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

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

Protected Functions

void resetPDF(constraint_t *c)

Reset the given PDF method and assign a fixed high-certainty Covariance/Information matrix.

virtual bool checkRegistrationCondition()

Check whether a new node should be registered in the graph.

This should be the key-method in any implementation of this interface. Should call registerNewNodeAtEnd method if the registration condition is satisfied.

Returns:

True upon successful node registration in the graph

Protected Attributes

mrpt::graphs::TNodeID m_prev_registered_nodeID

Store the last registered NodeID.

We don’t store its pose since it will most likely change due to calls to the graph-optimization procedure / dijkstra_node_estimation

constraint_t m_since_prev_node_PDF

Tracking the PDF of the current position of the robot with regards to the <b previous registered node.

inf_mat_t m_init_inf_mat

Initial information matrix for paths.

Large values for this indicate that I am sure of the corresponding (initial) pose