Template Class CICPCriteriaNRD
Defined in File CICPCriteriaNRD.h
Nested Relationships
Nested Types
Inheritance Relationships
Base Types
public mrpt::graphslam::deciders::CNodeRegistrationDecider< GRAPH_T >(Template Class CNodeRegistrationDecider)public mrpt::graphslam::deciders::CRangeScanOps< GRAPH_T >(Template Class CRangeScanOps)
Class Documentation
-
template<class GRAPH_T>
class CICPCriteriaNRD : public virtual mrpt::graphslam::deciders::CNodeRegistrationDecider<GRAPH_T>, public mrpt::graphslam::deciders::CRangeScanOps<GRAPH_T> ICP-based Fixed Intervals Node Registration.
Unnamed Group
-
using InfMat = mrpt::math::CMatrixFixed<double, constraint_t::state_length, constraint_t::state_length>
-
using range_ops_t = mrpt::graphslam::deciders::CRangeScanOps<GRAPH_T>
Typedef for accessing methods of the RangeScanRegistrationDecider parent class.
-
using decider_t = CICPCriteriaNRD<GRAPH_T>
self type
-
using parent_t = mrpt::graphslam::deciders::CNodeRegistrationDecider<GRAPH_T>
Node Registration Decider.
Unnamed Group
-
mrpt::obs::CObservation2DRangeScan::Ptr m_last_laser_scan2D
handy laser scans to use in the class methods
2D LaserScan corresponding to the latest registered node in the graph
-
mrpt::obs::CObservation2DRangeScan::Ptr m_curr_laser_scan2D
Current LaserScan. Set during the new measurements acquisition in updateState method.
-
mrpt::obs::CObservation3DRangeScan::Ptr m_last_laser_scan3D
-
mrpt::obs::CObservation3DRangeScan::Ptr m_curr_laser_scan3D
Public Functions
-
CICPCriteriaNRD()
-
~CICPCriteriaNRD() override = default
-
virtual void loadParams(const std::string &source_fname) override
Load the necessary for the decider/optimizer configuration parameters.
-
virtual void printParams() const override
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 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
-
virtual bool updateState(mrpt::obs::CActionCollection::Ptr action, mrpt::obs::CSensoryFrame::Ptr observations, mrpt::obs::CObservation::Ptr observation) override
Update the decider state using the latest dataset measurements.
Order of calls: updateState (calls) ==> updateState2D/3D ==> checkRegistrationCondition2D/3D ==> CheckRegistrationCondition
See also
Note
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
-
bool updateState2D(mrpt::obs::CObservation2DRangeScan::Ptr observation)
Specialized updateState method used solely when dealing with 2DRangeScan information.
See also
-
bool updateState3D(mrpt::obs::CObservation3DRangeScan::Ptr observation)
Specialized updateState method used solely when dealing with 3DRangeScan information.
See also
Protected Functions
-
virtual bool checkRegistrationCondition() override
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
-
bool checkRegistrationCondition2D()
Specialized checkRegistrationCondtion method used solely when dealing with 2DRangeScan information.
See also
-
bool checkRegistrationCondition3D()
Specialized checkRegistrationCondition method used solely when dealing with 3DRangeScan information.
See also
Protected Attributes
-
bool m_is_using_3DScan
-
constraint_t m_latest_odometry_PDF
Odometry rigid-body transformation since the last accepted LaserScan.
Decider can use it to smoothen the trajectory in the case of high noise in the laser measurements
-
pose_t m_curr_odometry_only_pose
pose_t estimation using only odometry information.
Note
Utilized only in observation-only rawlogs.
-
pose_t m_last_odometry_only_pose
pose_t estimation using only odometry information.
Resets next time an ICP edge/Odometry measurement is utilized for updating the estimated robot position.
Note
Utilized only in observation-only rawlogs.
-
TSlidingWindow m_mahal_distance_ICP_odom
Keeps track of the last N measurements between the ICP edge and the corresponding odometry measurements.
Use the last odometry rigid body transformation instead of the ICP edge if the mahalanobis distance between them is greater than this limit.
-
bool m_use_angle_difference_node_reg
-
bool m_use_distance_node_reg
-
int m_times_used_ICP
How many times we used the ICP Edge instead of Odometry edge
-
int m_times_used_odom
How many times we used the Odometry Edge instead of the ICP edge
-
struct TParams : public mrpt::config::CLoadableOptions
Public Functions
-
~TParams() override = default
-
virtual void loadFromConfigFile(const mrpt::config::CConfigFileBase &source, const std::string §ion) override
-
virtual void dumpToTextStream(std::ostream &out) const override
-
~TParams() override = default
-
using InfMat = mrpt::math::CMatrixFixed<double, constraint_t::state_length, constraint_t::state_length>