Main MRPT website > C++ reference for MRPT 1.5.7
List of all members | Classes | Public Types | Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Static Protected Attributes
mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T > Class Template Reference

Detailed Description

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
class mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >

Edge Registration Decider scheme specialized in Loop Closing.

Description

Current decider is implemented based on the following papers:

Specifications

Loop Closing Strategy

The Loop closure registration strategy is described below:

Loop closing schematic. blue nodes belong to group A and have lower NodeIDs, while red nodes belong to group B and have higher NodeIDs. Nodes of both groups A and B belong to the same partition based on their corresponding 2DRangeScan observations.
Rigid body transformation of hypotheses and two corresponding dijkstra links
Note
Olson uses the following formula for evaluating the pairwise consistency between two hypotheses i,j:
$ A_{i,j} = e^{T \Sigma_T^{-1} T^T} $
Where:
  • T is the rigid body transformation using the two hypotheses and the two Dijkstra Links connecting the nodes that form the hypotheses
  • $ \Sigma_T $ is the covariance matrix of the aforementioned rigid body transformation
However this formula is inconsistent with the rest of the paper explanations and mathematical formulas :
  • The author states that:
    "This quantity is proportional to the probability density that the rigid-body
    transformation is the identity matrix (i.e., T = [0 0 0])"
    
    This is inconsistent with the given formula. Suppose that a wrong loop closure is included in the $ A_{i,j} $, therefore the pairwise-consistency element should have a low value. For this to hold true the exponent of the consistency element shoud be small and neglecting the covariance matrix of rigid-body transformation (e.g. unit covariance matrix), $ T T^T $ should be small. When a wrong loop closure is evaluated the aforementioned quantity increases since the hypotheses do not form a correct loop. Therefore the worse the rigid-body transformation the higher the exponent term, therefore the higher the consistency element
  • Author uses the information matrix $ \Sigma_T^{-1} $ in the exponential. However in the optimal case (high certainty of two correct loop closure hypotheses) information matrix and rigid body transformation vector T have opposite effects in the exponent term:
    • $ \text{Correct loop closure} \Rightarrow T \rightarrow [0, 0, 0] \Rightarrow \text{exponent} \downarrow $
    • $ \text{Correct loop closure} \Rightarrow \text{diagonal\_terms}(\Sigma_T^{-1}) \uparrow \Rightarrow \text{exponent} \uparrow $
Based on the previous comments the following formula is used in the decider:
$ A_{i,j} = e^{-T \Sigma_T T^T} $

.ini Configuration Parameters

The configuration parameters of the current decider class are listed below. These parameters are parsed from an external .ini configuration file from their respective section. If an optional parameter is not found a default value is used instead. If a mandatory/required parameter is not found a runtime error is raised. For a sample configuration file see $mrpt/share/mrpt/config_files/graphslam-engine/laser_odometry.ini (Modify $mrpt according to the path of your mrpt source directory).
Note
Class contains an instance of the mrpt::slam::CIncrementalMapPartitioner class and it parses the configuration parameters of the latter from the "EdgeRegistrationDeciderParameters" section. Refer to mrpt::slam::CIncrementalMapPartitioner documentation for its list of configuration parameters
See also
mrpt::slam::CIncrementalMapPartitioner

Definition at line 235 of file CLoopCloserERD.h.

#include <mrpt/graphslam/ERD/CLoopCloserERD.h>

Inheritance diagram for mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >:
Inheritance graph

Classes

struct  TGenerateHypotsPoolAdParams
 Struct for passing additional parameters to the generateHypotsPool call. More...
 
struct  TGetICPEdgeAdParams
 Struct for passing additional parameters to the getICPEdge call. More...
 
struct  TLaserParams
 Struct for storing together the parameters needed for ICP matching, laser scans visualization etc. More...
 
struct  TLoopClosureParams
 Struct for storing together the loop-closing related parameters. More...
 

Public Types

typedef CRangeScanEdgeRegistrationDecider< GRAPH_T > parent_t
 Edge Registration Decider. More...
 
typedef GRAPH_T::constraint_t constraint_t
 Handy typedefs. More...
 
typedef GRAPH_T::constraint_t::type_value pose_t
 type of underlying poses (2D/3D). More...
 
typedef GRAPH_T::global_pose_t global_pose_t
 
typedef CLoopCloserERD< GRAPH_T > decider_t
 self type - Handy typedef More...
 
typedef parent_t::range_ops_t range_ops_t
 
typedef parent_t::nodes_to_scans2D_t nodes_to_scans2D_t
 
typedef std::vector< mrpt::vector_uintpartitions_t
 Typedef for referring to a list of partitions. More...
 
typedef GRAPH_T::edges_map_t::const_iterator edges_citerator
 
typedef GRAPH_T::edges_map_t::iterator edges_iterator
 
typedef mrpt::graphs::detail::THypothesis< GRAPH_T > hypot_t
 
typedef std::vector< hypot_thypots_t
 
typedef std::vector< hypot_t * > hypotsp_t
 
typedef std::map< std::pair< hypot_t *, hypot_t * >, double > hypotsp_to_consist_t
 
typedef mrpt::graphslam::TUncertaintyPath< GRAPH_T > path_t
 
typedef std::vector< path_tpaths_t
 
typedef mrpt::graphslam::detail::TNodeProps< GRAPH_T > node_props_t
 
typedef mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T > parent
 Handy typedefs. More...
 

Public Member Functions

 CLoopCloserERD ()
 
virtual ~CLoopCloserERD ()
 
virtual bool updateState (mrpt::obs::CActionCollectionPtr action, mrpt::obs::CSensoryFramePtr observations, mrpt::obs::CObservationPtr observation)
 Generic method for fetching the incremental action/observation readings from the calling function. More...
 
void setWindowManagerPtr (mrpt::graphslam::CWindowManager *win_manager)
 Fetch a CWindowManager pointer. More...
 
void notifyOfWindowEvents (const std::map< std::string, bool > &events_occurred)
 Get a list of the window events that happened since the last call. More...
 
void getEdgesStats (std::map< std::string, int > *edge_types_to_num) const
 Fill the given map with the type of registered edges as well as the corresponding number of registration of each edge. More...
 
void initializeVisuals ()
 Initialize visual objects in CDisplayWindow (e.g. More...
 
void updateVisuals ()
 Update the relevant visual features in CDisplayWindow. More...
 
void loadParams (const std::string &source_fname)
 Fetch the latest observation that the current instance received (most probably during a call to the updateState method. More...
 
void printParams () const
 Print the problem parameters - relevant to the decider/optimizer to the screen in a unified/compact way. More...
 
void getDescriptiveReport (std::string *report_str) const
 Fill the provided string with a detailed report of the decider/optimizer state. More...
 
void getCurrPartitions (partitions_t *partitions_out) const
 
const partitions_tgetCurrPartitions () const
 
size_t getDijkstraExecutionThresh () const
 Return the minimum number of nodes that should exist in the graph prior to running Dijkstra. More...
 
void setDijkstraExecutionThresh (size_t new_thresh)
 
void generateHypotsPool (const vector_uint &groupA, const vector_uint &groupB, hypotsp_t *generated_hypots, const TGenerateHypotsPoolAdParams *ad_params=NULL)
 Generate the hypothesis pool for all the inter-group constraints between two groups of nodes. More...
 
void generatePWConsistenciesMatrix (const vector_uint &groupA, const vector_uint &groupB, const hypotsp_t &hypots_pool, mrpt::math::CMatrixDouble *consist_matrix, const paths_t *groupA_opt_paths=NULL, const paths_t *groupB_opt_paths=NULL)
 Compute the pair-wise consistencies Matrix. More...
 
void evalPWConsistenciesMatrix (const mrpt::math::CMatrixDouble &consist_matrix, const hypotsp_t &hypots_pool, hypotsp_t *valid_hypots)
 Evalute the consistencies matrix, fill the valid hypotheses. More...
 
virtual bool justInsertedLoopClosure () const
 Used by the caller to query for possible loop closures in the last edge registration procedure. More...
 
virtual void setCriticalSectionPtr (mrpt::synch::CCriticalSection *graph_section)
 Fetch a mrpt::synch::CCriticalSection for locking the GRAPH_T resource. More...
 
virtual void setGraphPtr (GRAPH_T *graph)
 Fetch the graph on which the decider/optimizer will work on. More...
 
virtual void initializeLoggers (const std::string &name)
 Initialize the COutputLogger, CTimeLogger instances given the name of the decider/optimizer at hand. More...
 
virtual void setClassName (const std::string &name)
 
bool isMultiRobotSlamClass ()
 
std::string getClassName () const
 

Protected Member Functions

bool fillNodePropsFromGroupParams (const mrpt::utils::TNodeID &nodeID, const std::map< mrpt::utils::TNodeID, node_props_t > &group_params, node_props_t *node_props)
 Fill the TNodeProps instance using the parameters from the map. More...
 
bool getPropsOfNodeID (const mrpt::utils::TNodeID &nodeID, global_pose_t *pose, mrpt::obs::CObservation2DRangeScanPtr &scan, const node_props_t *node_props=NULL) const
 Fill the pose and LaserScan for the given nodeID. More...
 
bool mahalanobisDistanceOdometryToICPEdge (const mrpt::utils::TNodeID &from, const mrpt::utils::TNodeID &to, const constraint_t &rel_edge)
 brief Compare the suggested ICP edge against the initial node difference. More...
 
void registerHypothesis (const hypot_t &h)
 Wrapper around the registerNewEdge method which accepts a THypothesis object instead. More...
 
void registerNewEdge (const mrpt::utils::TNodeID &from, const mrpt::utils::TNodeID &to, const constraint_t &rel_edge)
 Register a new constraint/edge in the current graph. More...
 
virtual void fetchNodeIDsForScanMatching (const mrpt::utils::TNodeID &curr_nodeID, std::set< mrpt::utils::TNodeID > *nodes_set)
 Fetch a list of nodes with regards prior to the given nodeID for which to try and add scan matching edges. More...
 
virtual void addScanMatchingEdges (const mrpt::utils::TNodeID &curr_nodeID)
 Addd ICP constraints from X previous nodeIDs up to the given nodeID. More...
 
void initLaserScansVisualization ()
 
void updateLaserScansVisualization ()
 
void toggleLaserScansVisualization ()
 togle the LaserScans visualization on and off More...
 
void dumpVisibilityErrorMsg (std::string viz_flag, int sleep_time=500)
 
void updateMapPartitions (bool full_update=false, bool is_first_time_node_reg=false)
 Split the currently registered graph nodes into partitions. More...
 
void initMapPartitionsVisualization ()
 Initialize the visualization of the map partition objects. More...
 
void updateMapPartitionsVisualization ()
 Update the map partitions visualization. More...
 
void toggleMapPartitionsVisualization ()
 Toggle the map partitions visualization objects. More...
 
void initCurrCovarianceVisualization ()
 
void updateCurrCovarianceVisualization ()
 
void computeCentroidOfNodesVector (const vector_uint &nodes_list, std::pair< double, double > *centroid_coords) const
 Compute the Centroid of a group of a vector of node positions. More...
 
void checkPartitionsForLC (partitions_t *partitions_for_LC)
 Check the registered so far partitions for potential loop closures. More...
 
void evaluatePartitionsForLC (const partitions_t &partitions)
 Evaluate the given partitions for loop closures. More...
 
bool computeDominantEigenVector (const mrpt::math::CMatrixDouble &consist_matrix, mrpt::math::dynamic_vector< double > *eigvec, bool use_power_method=false)
 
double generatePWConsistencyElement (const mrpt::utils::TNodeID &a1, const mrpt::utils::TNodeID &a2, const mrpt::utils::TNodeID &b1, const mrpt::utils::TNodeID &b2, const hypotsp_t &hypots, const paths_t *opt_paths=NULL)
 Return the pair-wise consistency between the observations of the given nodes. More...
 
virtual bool getICPEdge (const mrpt::utils::TNodeID &from, const mrpt::utils::TNodeID &to, constraint_t *rel_edge, mrpt::slam::CICP::TReturnInfo *icp_info=NULL, const TGetICPEdgeAdParams *ad_params=NULL)
 Get the ICP Edge between the provided nodes. More...
 
void execDijkstraProjection (mrpt::utils::TNodeID starting_node=0, mrpt::utils::TNodeID ending_node=INVALID_NODEID)
 compute the minimum uncertainty of each node position with regards to the graph root. More...
 
void getMinUncertaintyPath (const mrpt::utils::TNodeID from, const mrpt::utils::TNodeID to, path_t *path) const
 Given two nodeIDs compute and return the path connecting them. More...
 
mrpt::graphslam::TUncertaintyPath< GRAPH_T > * popMinUncertaintyPath (std::set< path_t * > *pool_of_paths) const
 Find the minimum uncertainty path from te given pool of TUncertaintyPath instances. More...
 
void addToPaths (std::set< path_t * > *pool_of_paths, const path_t &curr_path, const std::set< mrpt::utils::TNodeID > &neibors) const
 Append the paths starting from the current node. More...
 
mrpt::graphslam::TUncertaintyPath< GRAPH_T > * queryOptimalPath (const mrpt::utils::TNodeID node) const
 Query for the optimal path of a nodeID. More...
 
void splitPartitionToGroups (vector_uint &partition, vector_uint *groupA, vector_uint *groupB, int max_nodes_in_group=5)
 Split an existing partition to Groups. More...
 
void setLastLaserScan2D (mrpt::obs::CObservation2DRangeScanPtr scan)
 Assign the last recorded 2D Laser scan. More...
 
virtual void assertVisualsVars ()
 Handy function for making all the visuals assertions in a compact manner. More...
 
void getICPEdge (const mrpt::obs::CObservation2DRangeScan &from, const mrpt::obs::CObservation2DRangeScan &to, constraint_t *rel_edge, const mrpt::poses::CPose2D *initial_pose=NULL, mrpt::slam::CICP::TReturnInfo *icp_info=NULL)
 Align the 2D range scans provided and fill the potential edge that can transform the one into the other. More...
 
void getICPEdge (const mrpt::obs::CObservation3DRangeScan &from, const mrpt::obs::CObservation3DRangeScan &to, constraint_t *rel_edge, const mrpt::poses::CPose2D *initial_pose=NULL, mrpt::slam::CICP::TReturnInfo *icp_info=NULL)
 Align the 3D range scans provided and find the potential edge that can transform the one into the other. More...
 
void decimatePointsMap (mrpt::maps::CPointsMap *m, size_t keep_point_every=4, size_t low_lim=0)
 Reduce the size of the given CPointsMap by keeping one out of "keep_point_every" points. More...
 
bool convert3DTo2DRangeScan (mrpt::obs::CObservation3DRangeScanPtr &scan3D_in, mrpt::obs::CObservation2DRangeScanPtr *scan2D_out=NULL)
 Wrapper around the CObservation3DRangeScan::convertTo2DScan corresponding method. More...
 
Registration criteria checks

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

If condition(s) for edge registration is satisfied, method should call the registerNewEdge method.

virtual void checkRegistrationCondition (mrpt::utils::TNodeID from, mrpt::utils::TNodeID to)
 
virtual void checkRegistrationCondition (const std::set< mrpt::utils::TNodeID > &)
 

Static Protected Member Functions

static hypot_tfindHypotByEnds (const hypotsp_t &vec_hypots, const mrpt::utils::TNodeID &from, const mrpt::utils::TNodeID &to, bool throw_exc=true)
 Given a vector of THypothesis objects, find the one that has the given start and end nodes. More...
 
static const path_tfindPathByEnds (const paths_t &vec_paths, const mrpt::utils::TNodeID &src, const mrpt::utils::TNodeID &dst, bool throw_exc=true)
 Given a vector of TUncertaintyPath objects, find the one that has the given source and destination nodeIDs. More...
 
static hypot_tfindHypotByID (const hypotsp_t &vec_hypots, const size_t &id, bool throw_exc=true)
 Given a vector of THypothesis objects, find the one that has the given ID. More...
 

Protected Attributes

TLaserParams m_laser_params
 
TLoopClosureParams m_lc_params
 
mrpt::slam::CIncrementalMapPartitioner m_partitioner
 Instance responsible for partitioning the map. More...
 
bool m_visualize_curr_node_covariance
 
const mrpt::utils::TColor m_curr_node_covariance_color
 
double m_offset_y_curr_node_covariance
 
int m_text_index_curr_node_covariance
 
std::map< std::string, intm_edge_types_to_nums
 Keep track of the registered edge types. More...
 
mrpt::obs::CObservation2DRangeScanPtr m_last_laser_scan2D
 Keep the last laser scan for visualization purposes. More...
 
bool m_partitions_full_update
 Indicate whether the partitions have been updated recently. More...
 
std::map< int, vector_uintm_partitionID_to_prev_nodes_list
 Keep track of the evaluated partitions so they are not checked again if nothing changed in them. More...
 
std::map< mrpt::utils::TNodeID, path_t * > m_node_optimal_paths
 Map that stores the lowest uncertainty path towards a node. More...
 
mrpt::obs::CObservation2DRangeScanPtr m_first_laser_scan
 Keep track of the first recorded laser scan so that it can be assigned to the root node when the NRD adds the first two nodes to the graph. More...
 
bool m_is_first_time_node_reg
 Track the first node registration occurance. More...
 
size_t m_dijkstra_node_count_thresh
 Node Count lower bound before executing dijkstra. More...
 
double m_consec_icp_constraint_factor
 Factor used for accepting an ICP Constraint as valid. More...
 
double m_lc_icp_constraint_factor
 Factor used for accepting an ICP Constraint in the loop closure proc. More...
 
nodes_to_scans2D_t m_nodes_to_laser_scans2D
 Map for keeping track of the observation recorded at each graph position. More...
 
size_t m_last_total_num_nodes
 Keep track of the total number of registered nodes since the last time class method was called. More...
 
bool m_just_inserted_lc
 
bool m_override_registered_nodes_check
 Indicates whether the ERD implementation expects, at most one single node to be registered, between successive calls to the updateState method. More...
 
GRAPH_T * m_graph
 Pointer to the graph that is under construction. More...
 
mrpt::synch::CCriticalSectionm_graph_section
 
mrpt::utils::CTimeLogger m_time_logger
 Time logger instance. More...
 
std::string m_class_name
 Name of the class instance. More...
 
bool is_mr_slam_class
 Boolean indicating if the current class can be used in multi-robot SLAM operations. More...
 
TParams params
 
Partition vectors
partitions_t m_last_partitions
 Previous partitions vector. More...
 
partitions_t m_curr_partitions
 Current partitions vector. More...
 
Visuals-related variables methods
mrpt::graphslam::CWindowManagerm_win_manager
 Pointer to the CWindowManager object used to store visuals-related instances. More...
 
mrpt::gui::CDisplayWindow3Dm_win
 Window to use. More...
 
mrpt::graphslam::CWindowObserverm_win_observer
 CWindowObserver object for monitoring various visual-oriented events. More...
 
bool m_initialized_visuals
 

Static Protected Attributes

static const std::string header_sep = std::string(80, '-')
 Separator string to be used in debugging messages. More...
 
static const std::string report_sep = std::string(2, '\n')
 

Member Typedef Documentation

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
typedef GRAPH_T::constraint_t mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::constraint_t

Handy typedefs.

type of graph constraints

Definition at line 245 of file CLoopCloserERD.h.

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
typedef CLoopCloserERD<GRAPH_T> mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::decider_t

self type - Handy typedef

Definition at line 249 of file CLoopCloserERD.h.

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
typedef GRAPH_T::edges_map_t::const_iterator mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::edges_citerator

Definition at line 254 of file CLoopCloserERD.h.

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
typedef GRAPH_T::edges_map_t::iterator mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::edges_iterator

Definition at line 255 of file CLoopCloserERD.h.

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
typedef GRAPH_T::global_pose_t mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::global_pose_t

Definition at line 248 of file CLoopCloserERD.h.

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
typedef mrpt::graphs::detail::THypothesis<GRAPH_T> mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::hypot_t

Definition at line 256 of file CLoopCloserERD.h.

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
typedef std::vector<hypot_t> mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::hypots_t

Definition at line 257 of file CLoopCloserERD.h.

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
typedef std::vector<hypot_t*> mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::hypotsp_t

Definition at line 258 of file CLoopCloserERD.h.

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
typedef std::map< std::pair<hypot_t*, hypot_t*>, double > mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::hypotsp_to_consist_t

Definition at line 259 of file CLoopCloserERD.h.

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
typedef mrpt::graphslam::detail::TNodeProps<GRAPH_T> mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::node_props_t

Definition at line 262 of file CLoopCloserERD.h.

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
typedef parent_t::nodes_to_scans2D_t mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::nodes_to_scans2D_t

Definition at line 251 of file CLoopCloserERD.h.

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
typedef mrpt::graphslam::CRegistrationDeciderOrOptimizer<GRAPH_T> mrpt::graphslam::deciders::CEdgeRegistrationDecider< GRAPH_T >::parent
inherited

Handy typedefs.

Parent of current class

Definition at line 49 of file CEdgeRegistrationDecider.h.

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
typedef CRangeScanEdgeRegistrationDecider<GRAPH_T> mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::parent_t

Edge Registration Decider.

Definition at line 240 of file CLoopCloserERD.h.

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
typedef std::vector<mrpt::vector_uint> mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::partitions_t

Typedef for referring to a list of partitions.

Definition at line 253 of file CLoopCloserERD.h.

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
typedef mrpt::graphslam::TUncertaintyPath<GRAPH_T> mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::path_t

Definition at line 260 of file CLoopCloserERD.h.

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
typedef std::vector<path_t> mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::paths_t

Definition at line 261 of file CLoopCloserERD.h.

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
typedef GRAPH_T::constraint_t::type_value mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::pose_t

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

Definition at line 247 of file CLoopCloserERD.h.

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
typedef parent_t::range_ops_t mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::range_ops_t

Definition at line 250 of file CLoopCloserERD.h.

Constructor & Destructor Documentation

template<class GRAPH_T >
mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::CLoopCloserERD ( )
template<class GRAPH_T >
mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::~CLoopCloserERD ( )
virtual

Member Function Documentation

template<class GRAPH_T >
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::addScanMatchingEdges ( const mrpt::utils::TNodeID curr_nodeID)
protectedvirtual
template<class GRAPH_T >
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::addToPaths ( std::set< path_t * > *  pool_of_paths,
const path_t curr_path,
const std::set< mrpt::utils::TNodeID > &  neibors 
) const
protected

Append the paths starting from the current node.

Parameters
[in]pool_of_pathsPaths that are currently registered
[in]curr_pathPath that I am currently traversing. This path is already removed from pool_of_paths
[in]neighborsstd::set of neighboring nodes to the last node of the current path

Definition at line 1344 of file CLoopCloserERD_impl.h.

References mrpt::graphslam::TUncertaintyPath< GRAPH_T >::getDestination(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::getMinUncertaintyPath(), MRPT_END, MRPT_START, and mrpt::graphslam::TUncertaintyPath< GRAPH_T >::nodes_traversed.

Referenced by mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::execDijkstraProjection().

template<class GRAPH_T >
void mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::assertVisualsVars ( )
protectedvirtualinherited
template<class GRAPH_T >
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::checkPartitionsForLC ( partitions_t partitions_for_LC)
protected
template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
virtual void mrpt::graphslam::deciders::CEdgeRegistrationDecider< GRAPH_T >::checkRegistrationCondition ( mrpt::utils::TNodeID  from,
mrpt::utils::TNodeID  to 
)
inlineprotectedvirtualinherited

Definition at line 92 of file CEdgeRegistrationDecider.h.

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
virtual void mrpt::graphslam::deciders::CEdgeRegistrationDecider< GRAPH_T >::checkRegistrationCondition ( const std::set< mrpt::utils::TNodeID > &  )
inlineprotectedvirtualinherited

Definition at line 95 of file CEdgeRegistrationDecider.h.

template<class GRAPH_T >
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::computeCentroidOfNodesVector ( const vector_uint nodes_list,
std::pair< double, double > *  centroid_coords 
) const
protected

Compute the Centroid of a group of a vector of node positions.

Parameters
[in]nodes_listList of node IDs whose positions are taken into account
[out]centroid_coordsContains the Centroid coordinates as a pair [x,y]
Note
Method is used during the visualization of the map partitions.

Definition at line 1885 of file CLoopCloserERD_impl.h.

References mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::m_graph, MRPT_END, and MRPT_START.

Referenced by mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::updateMapPartitionsVisualization().

template<class GRAPH_T >
bool mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::computeDominantEigenVector ( const mrpt::math::CMatrixDouble consist_matrix,
mrpt::math::dynamic_vector< double > *  eigvec,
bool  use_power_method = false 
)
protected
template<class GRAPH_T >
bool mrpt::graphslam::deciders::CRangeScanOps< GRAPH_T >::convert3DTo2DRangeScan ( mrpt::obs::CObservation3DRangeScanPtr &  scan3D_in,
mrpt::obs::CObservation2DRangeScanPtr *  scan2D_out = NULL 
)
protectedinherited

Wrapper around the CObservation3DRangeScan::convertTo2DScan corresponding method.

Returns
True if operation was successful, false otherwise

Definition at line 139 of file CRangeScanOps_impl.h.

References mrpt::obs::CObservation2DRangeScan::Create(), MRPT_END, and MRPT_START.

Referenced by mrpt::graphslam::deciders::CICPCriteriaERD< GRAPH_T >::updateState().

template<class GRAPH_T >
void mrpt::graphslam::deciders::CRangeScanOps< GRAPH_T >::decimatePointsMap ( mrpt::maps::CPointsMap m,
size_t  keep_point_every = 4,
size_t  low_lim = 0 
)
protectedinherited

Reduce the size of the given CPointsMap by keeping one out of "keep_point_every" points.

Note
If low_lim is set then the PointsMap will contain at least low_lim measurements, regardless of keep_point_every value. Set low_lim to 0 if no lower limit is to be specified

Definition at line 110 of file CRangeScanOps_impl.h.

References mrpt::maps::CPointsMap::applyDeletionMask(), min, MRPT_END, MRPT_START, and mrpt::maps::CPointsMap::size().

template<class GRAPH_T >
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::dumpVisibilityErrorMsg ( std::string  viz_flag,
int  sleep_time = 500 
)
protected
template<class GRAPH_T >
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::evalPWConsistenciesMatrix ( const mrpt::math::CMatrixDouble consist_matrix,
const hypotsp_t hypots_pool,
hypotsp_t valid_hypots 
)

Evalute the consistencies matrix, fill the valid hypotheses.

Call to this method should be made right after generating the consistencies matrix using the generatePWConsistenciesMatrix method

See also
generatePWConsistenciesMatrix

Definition at line 546 of file CLoopCloserERD_impl.h.

References ASSERT_, mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::computeDominantEigenVector(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::findHypotByID(), mrpt::mrpt::format(), MRPT_END, and MRPT_START.

Referenced by mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::evaluatePartitionsForLC().

template<class GRAPH_T >
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::evaluatePartitionsForLC ( const partitions_t partitions)
protected
template<class GRAPH_T >
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::execDijkstraProjection ( mrpt::utils::TNodeID  starting_node = 0,
mrpt::utils::TNodeID  ending_node = INVALID_NODEID 
)
protected
template<class GRAPH_T >
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::fetchNodeIDsForScanMatching ( const mrpt::utils::TNodeID curr_nodeID,
std::set< mrpt::utils::TNodeID > *  nodes_set 
)
protectedvirtual
template<class GRAPH_T >
bool mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::fillNodePropsFromGroupParams ( const mrpt::utils::TNodeID nodeID,
const std::map< mrpt::utils::TNodeID, node_props_t > &  group_params,
node_props_t node_props 
)
protected

Fill the TNodeProps instance using the parameters from the map.

Parameters
[in]nodeIDID of node corresponding to the TNodeProps struct that is to be filled
[in]group_paramsMap of TNodeID to corresponding TNodeProps instance.
[out]node_propsPointer to the TNodeProps struct to be filled.
Returns
True if operation was successful, false otherwise.

Definition at line 295 of file CLoopCloserERD_impl.h.

References ASSERT_.

Referenced by mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::generateHypotsPool().

template<class GRAPH_T >
mrpt::graphs::detail::THypothesis< GRAPH_T > * mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::findHypotByEnds ( const hypotsp_t vec_hypots,
const mrpt::utils::TNodeID from,
const mrpt::utils::TNodeID to,
bool  throw_exc = true 
)
staticprotected

Given a vector of THypothesis objects, find the one that has the given start and end nodes.

Note
If multiple hypothesis between the same start and end node exist, only the first one is returned.
Parameters
[in]vec_hypotsVector of hypothesis to check
[in]fromStarting Node for hypothesis
[in]toEnding Node for hypothesis
[in]throw_excIf true and hypothesis is not found, throw a HypothesisNotFoundException
Returns
Pointer to the found hypothesis if that is found, otherwise NULL.

Definition at line 1152 of file CLoopCloserERD_impl.h.

Referenced by mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::generatePWConsistenciesMatrix(), and mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::generatePWConsistencyElement().

template<class GRAPH_T >
mrpt::graphs::detail::THypothesis< GRAPH_T > * mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::findHypotByID ( const hypotsp_t vec_hypots,
const size_t &  id,
bool  throw_exc = true 
)
staticprotected

Given a vector of THypothesis objects, find the one that has the given ID.

Note
If multiple hypothesis with the same ID exist, only the first one is returned.
Parameters
[in]vec_hypotsVector of hypothesis to check
[in]id,IDof the hypothesis to be returned
[in]throw_excIf true and hypothesis is not found, throw a HypothesisNotFoundException
Returns
Pointer to the hypothesis with the given ID if that is found, otherwies NULL.

Definition at line 1183 of file CLoopCloserERD_impl.h.

Referenced by mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::evalPWConsistenciesMatrix().

template<class GRAPH_T >
const mrpt::graphslam::TUncertaintyPath< GRAPH_T > * mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::findPathByEnds ( const paths_t vec_paths,
const mrpt::utils::TNodeID src,
const mrpt::utils::TNodeID dst,
bool  throw_exc = true 
)
staticprotected

Given a vector of TUncertaintyPath objects, find the one that has the given source and destination nodeIDs.

Note
If multiple paths between the same start and end node exist, only the first one is returned.
Returns
NULL if a path with the given source and destination NodeIDs is not found, otherwise a pointer to the matching TUncertaintyPath.
Exceptions
std::runtime_errorif path was not found and throw_exc is set to true

Definition at line 1120 of file CLoopCloserERD_impl.h.

References ASSERT_, mrpt::format(), and THROW_EXCEPTION.

Referenced by mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::generatePWConsistenciesMatrix().

template<class GRAPH_T >
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::generateHypotsPool ( const vector_uint groupA,
const vector_uint groupB,
hypotsp_t generated_hypots,
const TGenerateHypotsPoolAdParams ad_params = NULL 
)

Generate the hypothesis pool for all the inter-group constraints between two groups of nodes.

Parameters
[in]groupAFirst group to be tested
[in]groupBSecond group to be tested
[out]generated_hypotsPool of generated hypothesis. Hypotheses are generated in the heap, so the caller is responsible of afterwards calling delete.

Definition at line 672 of file CLoopCloserERD_impl.h.

References ASSERTMSG_, mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::fillNodePropsFromGroupParams(), mrpt::format(), mrpt::graphs::detail::THypothesis< GRAPH_T >::from, mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::TGetICPEdgeAdParams::from_params, mrpt::graphs::detail::THypothesis< GRAPH_T >::getAsString(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::getICPEdge(), mrpt::graphslam::TSlidingWindow::getMedian(), mrpt::utils::getSTLContainerAsString(), mrpt::graphs::detail::THypothesis< GRAPH_T >::goodness, mrpt::slam::CICP::TReturnInfo::goodness, mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::TLaserParams::goodness_threshold_win, mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::TGenerateHypotsPoolAdParams::groupA_params, mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::TGenerateHypotsPoolAdParams::groupB_params, mrpt::graphs::detail::THypothesis< GRAPH_T >::id, mrpt::graphs::detail::THypothesis< GRAPH_T >::is_valid, mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_laser_params, mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_lc_icp_constraint_factor, MRPT_END, MRPT_LOG_DEBUG_STREAM, MRPT_START, mrpt::graphs::detail::THypothesis< GRAPH_T >::setEdge(), mrpt::graphs::detail::THypothesis< GRAPH_T >::to, and mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::TGetICPEdgeAdParams::to_params.

Referenced by mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::evaluatePartitionsForLC().

template<class GRAPH_T >
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::generatePWConsistenciesMatrix ( const vector_uint groupA,
const vector_uint groupB,
const hypotsp_t hypots_pool,
mrpt::math::CMatrixDouble consist_matrix,
const paths_t groupA_opt_paths = NULL,
const paths_t groupB_opt_paths = NULL 
)

Compute the pair-wise consistencies Matrix.

Parameters
[in]groupAFirst group to be used
[in]groupBSecond group to be used
[in]hypots_poolPool of hypothesis that has been generated between the two groups [out] consist_matrix Pointer to Pair-wise consistencies matrix that is to be filled
[in]groupA_opt_pathsPointer to vector of optimal paths that can be used instead of making queries to the m_node_optimal_paths class vector. See corresponding argument in generatePWConsistencyElement method
[in]groupB_opt_paths
See also
generatePWConsistencyElement
evalPWConsistenciesMatrix

Definition at line 881 of file CLoopCloserERD_impl.h.

References mrpt::obs::gnss::a1, mrpt::obs::gnss::a2, ASSERTMSG_, mrpt::obs::gnss::b1, mrpt::obs::gnss::b2, mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::findHypotByEnds(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::findPathByEnds(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::generatePWConsistencyElement(), mrpt::utils::getSTLContainerAsString(), mrpt::graphs::detail::THypothesis< GRAPH_T >::id, mrpt::graphs::detail::THypothesis< GRAPH_T >::is_valid, MRPT_END, MRPT_LOG_DEBUG_STREAM, and MRPT_START.

Referenced by mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::evaluatePartitionsForLC().

template<class GRAPH_T >
double mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::generatePWConsistencyElement ( const mrpt::utils::TNodeID a1,
const mrpt::utils::TNodeID a2,
const mrpt::utils::TNodeID b1,
const mrpt::utils::TNodeID b2,
const hypotsp_t hypots,
const paths_t opt_paths = NULL 
)
protected

Return the pair-wise consistency between the observations of the given nodes.

For the tranformation matrix of the loop use the following edges

  • a1=>a2 (Dijkstra Link)
  • a2=>b1 (hypothesis - ICP edge)
  • b1=>b2 (Dijkstra Link)
  • b2=>a1 (hypothesis - ICP edge)

Given the transformation vector $ (x,y,\phi)$ of the above composition (e.g. T) the pairwise consistency element would then be:

$ A_{i,j} = e^{-T \Sigma_T T^T} $
Parameters
[in]hypotsHypothesis corresponding to the potential inter-group constraints
[in]opt_pathsVector of optimal paths that can be used instead of making queries to the m_node_optimal_paths class vector. See corresponding argument in generatePWConsistenciesMatrix method
  • 1st element a1->a2 path
  • 2nd element b1->b2 path
Returns
Pairwise consistency eleement of the composition of transformations
See also
generatePWConsistenciesMatrix

Definition at line 1010 of file CLoopCloserERD_impl.h.

References ASSERT_, mrpt::graphslam::TUncertaintyPath< GRAPH_T >::assertIsBetweenNodeIDs(), mrpt::graphslam::TUncertaintyPath< GRAPH_T >::curr_pose_pdf, mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::execDijkstraProjection(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::findHypotByEnds(), mrpt::graphs::detail::THypothesis< GRAPH_T >::getEdge(), mrpt::graphs::detail::THypothesis< GRAPH_T >::getInverseEdge(), mrpt::graphs::detail::THypothesis< GRAPH_T >::id, MRPT_END, MRPT_LOG_DEBUG_STREAM, MRPT_START, and mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::queryOptimalPath().

Referenced by mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::generatePWConsistenciesMatrix().

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
std::string mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::getClassName ( ) const
inlineinherited

Definition at line 138 of file CRegistrationDeciderOrOptimizer.h.

template<class GRAPH_T >
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::getCurrPartitions ( partitions_t partitions_out) const
template<class GRAPH_T >
const std::vector< mrpt::vector_uint > & mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::getCurrPartitions ( ) const
template<class GRAPH_T >
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::getDescriptiveReport ( std::string report_str) const
virtual

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

Reimplemented from mrpt::graphslam::deciders::CEdgeRegistrationDecider< GRAPH_T >.

Definition at line 2197 of file CLoopCloserERD_impl.h.

References mrpt::graphslam::deciders::CEdgeRegistrationDecider< GRAPH_T >::getDescriptiveReport(), mrpt::utils::CTimeLogger::getStatsAsText(), mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::header_sep, mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::m_time_logger, MRPT_END, MRPT_START, and mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::report_sep.

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
size_t mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::getDijkstraExecutionThresh ( ) const
inline

Return the minimum number of nodes that should exist in the graph prior to running Dijkstra.

Definition at line 292 of file CLoopCloserERD.h.

References mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_dijkstra_node_count_thresh.

template<class GRAPH_T >
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::getEdgesStats ( std::map< std::string, int > *  edge_type_to_num) const
virtual

Fill the given map with the type of registered edges as well as the corresponding number of registration of each edge.

Reimplemented from mrpt::graphslam::deciders::CEdgeRegistrationDecider< GRAPH_T >.

Definition at line 2003 of file CLoopCloserERD_impl.h.

References mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_edge_types_to_nums, MRPT_END, and MRPT_START.

template<class GRAPH_T >
void mrpt::graphslam::deciders::CRangeScanOps< GRAPH_T >::getICPEdge ( const mrpt::obs::CObservation2DRangeScan from,
const mrpt::obs::CObservation2DRangeScan to,
constraint_t rel_edge,
const mrpt::poses::CPose2D initial_pose = NULL,
mrpt::slam::CICP::TReturnInfo icp_info = NULL 
)
protectedinherited

Align the 2D range scans provided and fill the potential edge that can transform the one into the other.

User can optionally ask that additional information be returned in a TReturnInfo struct

Definition at line 16 of file CRangeScanOps_impl.h.

References info, mrpt::maps::CMetricMap::insertObservation(), MRPT_END, and MRPT_START.

Referenced by mrpt::graphslam::deciders::CICPCriteriaERD< GRAPH_T >::checkRegistrationCondition2D(), mrpt::graphslam::deciders::CICPCriteriaNRD< GRAPH_T >::checkRegistrationCondition2D(), mrpt::graphslam::deciders::CICPCriteriaERD< GRAPH_T >::checkRegistrationCondition3D(), and mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::getICPEdge().

template<class GRAPH_T >
void mrpt::graphslam::deciders::CRangeScanOps< GRAPH_T >::getICPEdge ( const mrpt::obs::CObservation3DRangeScan from,
const mrpt::obs::CObservation3DRangeScan to,
constraint_t rel_edge,
const mrpt::poses::CPose2D initial_pose = NULL,
mrpt::slam::CICP::TReturnInfo icp_info = NULL 
)
protectedinherited

Align the 3D range scans provided and find the potential edge that can transform the one into the other.

Fills the 2D part (rel_edge) of the 3D constraint between the scans, since we are interested in computing the 2D alignment. User can optionally ask that additional information be returned in a TReturnInfo struct

Definition at line 54 of file CRangeScanOps_impl.h.

References ASSERTMSG_, mrpt::mrpt::format(), mrpt::obs::CObservation3DRangeScan::hasRangeImage, info, mrpt::maps::CMetricMap::insertObservation(), MRPT_END, and MRPT_START.

template<class GRAPH_T >
bool mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::getICPEdge ( const mrpt::utils::TNodeID from,
const mrpt::utils::TNodeID to,
constraint_t rel_edge,
mrpt::slam::CICP::TReturnInfo icp_info = NULL,
const TGetICPEdgeAdParams ad_params = NULL 
)
protectedvirtual
template<class GRAPH_T >
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::getMinUncertaintyPath ( const mrpt::utils::TNodeID  from,
const mrpt::utils::TNodeID  to,
path_t path 
) const
protected
template<class GRAPH_T >
bool mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::getPropsOfNodeID ( const mrpt::utils::TNodeID nodeID,
global_pose_t pose,
mrpt::obs::CObservation2DRangeScanPtr &  scan,
const node_props_t node_props = NULL 
) const
protected

Fill the pose and LaserScan for the given nodeID.

Pose and LaserScan are either fetched from the TNodeProps struct if it contains valid data, otherwise from the corresponding class vars

Returns
True if operation was successful and pose, scan contain valid data.

Definition at line 324 of file CLoopCloserERD_impl.h.

References ASSERT_, ASSERTMSG_, mrpt::format(), mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::m_graph, mrpt::graphslam::deciders::CRangeScanEdgeRegistrationDecider< GRAPH_T >::m_nodes_to_laser_scans2D, MRPT_LOG_WARN_STREAM, mrpt::graphslam::detail::TNodeProps< GRAPH_T >::pose, and mrpt::graphslam::detail::TNodeProps< GRAPH_T >::scan.

Referenced by mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::getICPEdge().

template<class GRAPH_T >
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::initCurrCovarianceVisualization ( )
protected
template<class GRAPH_T >
void mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::initializeLoggers ( const std::string name)
virtualinherited
template<class GRAPH_T >
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::initializeVisuals ( )
virtual
template<class GRAPH_T >
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::initLaserScansVisualization ( )
protected
template<class GRAPH_T >
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::initMapPartitionsVisualization ( )
protected
template<class GRAPH_T >
bool mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::isMultiRobotSlamClass ( )
inherited
template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
virtual bool mrpt::graphslam::deciders::CEdgeRegistrationDecider< GRAPH_T >::justInsertedLoopClosure ( ) const
inlinevirtualinherited

Used by the caller to query for possible loop closures in the last edge registration procedure.

Definition at line 79 of file CEdgeRegistrationDecider.h.

template<class GRAPH_T >
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::loadParams ( const std::string source_fname)
virtual
template<class GRAPH_T >
bool mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::mahalanobisDistanceOdometryToICPEdge ( const mrpt::utils::TNodeID from,
const mrpt::utils::TNodeID to,
const constraint_t rel_edge 
)
protected

brief Compare the suggested ICP edge against the initial node difference.

If this difference is significantly larger than the rest of of the recorded mahalanobis distances, reject the suggested ICP edge.

Returns
True if suggested ICP edge is accepted
Note
Method updates the Mahalanobis Distance TSlidingWindow which keep track of the recorded mahalanobis distance values.
See also
getICPEdge

Definition at line 1530 of file CLoopCloserERD_impl.h.

References mrpt::graphslam::TSlidingWindow::addNewMeasurement(), mrpt::graphslam::TSlidingWindow::getMedian(), mrpt::math::isNaN(), mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::m_graph, mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_laser_params, mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::TLaserParams::mahal_distance_ICP_odom_win, mrpt::math::mahalanobisDistance2(), MRPT_END, and MRPT_START.

Referenced by mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::addScanMatchingEdges().

template<class GRAPH_T >
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::notifyOfWindowEvents ( const std::map< std::string, bool > &  events_occurred)
virtual
template<class GRAPH_T >
TUncertaintyPath< GRAPH_T > * mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::popMinUncertaintyPath ( std::set< path_t * > *  pool_of_paths) const
protected

Find the minimum uncertainty path from te given pool of TUncertaintyPath instances.

Removes (and returns) the found path from the pool.

Returns
Minimum uncertainty path from the pool provided

Definition at line 1501 of file CLoopCloserERD_impl.h.

References ASSERT_, mrpt::graphslam::TUncertaintyPath< GRAPH_T >::getDeterminant(), MRPT_END, and MRPT_START.

Referenced by mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::execDijkstraProjection(), and mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::getMinUncertaintyPath().

template<class GRAPH_T >
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::printParams ( ) const
virtual
template<class GRAPH_T >
mrpt::graphslam::TUncertaintyPath< GRAPH_T > * mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::queryOptimalPath ( const mrpt::utils::TNodeID  node) const
protected

Query for the optimal path of a nodeID.

Method handles calls to out-of-bounds nodes as well as nodes whose paths have not yet been computed.

Parameters
[in]nodenodeID for which hte path is going to be returned
Returns
Optimal path corresponding to the given nodeID or NULL if the former is not found.

Definition at line 1382 of file CLoopCloserERD_impl.h.

References mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_node_optimal_paths.

Referenced by mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::generatePWConsistencyElement(), and mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::updateCurrCovarianceVisualization().

template<class GRAPH_T >
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::registerHypothesis ( const hypot_t h)
protected
template<class GRAPH_T >
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::registerNewEdge ( const mrpt::utils::TNodeID from,
const mrpt::utils::TNodeID to,
const constraint_t rel_edge 
)
protectedvirtual
template<class GRAPH_T >
void mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::setClassName ( const std::string name)
virtualinherited
template<class GRAPH_T >
void mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::setCriticalSectionPtr ( mrpt::synch::CCriticalSection graph_section)
virtualinherited

Fetch a mrpt::synch::CCriticalSection for locking the GRAPH_T resource.

Handy for realising multithreading in the derived classes.

Warning
Beware that prior to the decider/optimizer public method call, the CCriticalSection will already be locked from CGraphSlamEngine_t instance, but this isn't effective in multithreaded implementations where the decider/optimizer itself has to lock the function at which the extra thread runs.

Definition at line 73 of file CRegistrationDeciderOrOptimizer_impl.h.

References mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::m_graph_section.

Referenced by mrpt::graphslam::CGraphSlamEngine< GRAPH_T >::initClass().

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::setDijkstraExecutionThresh ( size_t  new_thresh)
inline
template<class GRAPH_T>
void mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::setGraphPtr ( GRAPH_T *  graph)
virtualinherited

Fetch the graph on which the decider/optimizer will work on.

Definition at line 124 of file CRegistrationDeciderOrOptimizer_impl.h.

References mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::m_graph, and MRPT_LOG_DEBUG_STREAM.

Referenced by mrpt::graphslam::CGraphSlamEngine< GRAPH_T >::initClass().

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::setLastLaserScan2D ( mrpt::obs::CObservation2DRangeScanPtr  scan)
protected

Assign the last recorded 2D Laser scan.

Note
Compact way of assigning the last recorded laser scan for both MRPT rawlog formats.

Method takes into account the start of graphSLAM proc. when two nodes are added at the graph at the same time (root + node for 1st constraint)

template<class GRAPH_T >
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::setWindowManagerPtr ( mrpt::graphslam::CWindowManager win_manager)
virtual
template<class GRAPH_T >
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::splitPartitionToGroups ( vector_uint partition,
vector_uint groupA,
vector_uint groupB,
int  max_nodes_in_group = 5 
)
protected

Split an existing partition to Groups.

Have two groups A, B.

  • Group A consists of the lower nodeIDs. They correspond to the start of the course
  • Group B consists of the higher (more recent) nodeIDs. They correspond to the end of the course find where to split the current partition
Note
Method is used in single-robot graphSLAM for spliting a partition of nodes to lower and higher node IDs
Parameters
[in]partitionPartition to be split.
[out]groupAFirst group of nodes.
[out]groupBSecond group of nodes.
[in]max_nodes_in_groupMax number of nodes that are to exist in each group (Use -1 to disable this threshold).

Definition at line 613 of file CLoopCloserERD_impl.h.

References ASSERT_, ASSERTMSG_, mrpt::format(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::TLoopClosureParams::LC_min_nodeid_diff, mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_lc_params, MRPT_END, and MRPT_START.

Referenced by mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::evaluatePartitionsForLC().

template<class GRAPH_T >
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::toggleLaserScansVisualization ( )
protected
template<class GRAPH_T >
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::toggleMapPartitionsVisualization ( )
protected
template<class GRAPH_T >
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::updateCurrCovarianceVisualization ( )
protected
template<class GRAPH_T >
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::updateLaserScansVisualization ( )
protected
template<class GRAPH_T >
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::updateMapPartitions ( bool  full_update = false,
bool  is_first_time_node_reg = false 
)
protected
template<class GRAPH_T >
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::updateMapPartitionsVisualization ( )
protected

Update the map partitions visualization.

Definition at line 1672 of file CLoopCloserERD_impl.h.

References mrpt::graphslam::CWindowManager::addTextMessage(), ASSERT_, mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::TLoopClosureParams::balloon_curr_color, mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::TLoopClosureParams::balloon_elevation, mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::TLoopClosureParams::balloon_radius, mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::TLoopClosureParams::balloon_std_color, mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::computeCentroidOfNodesVector(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::TLoopClosureParams::connecting_lines_color, mrpt::utils::find(), mrpt::gui::CDisplayWindow3D::forceRepaint(), mrpt::mrpt::format(), mrpt::gui::CDisplayWindow3D::get3DSceneAndLock(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::TLoopClosureParams::LC_check_curr_partition_only, mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_curr_partitions, mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::m_graph, mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_last_partitions, mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_lc_params, mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::m_win, mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::m_win_manager, MRPT_LOG_DEBUG_STREAM, MRPT_LOG_ERROR_STREAM, mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::TLoopClosureParams::offset_y_map_partitions, mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::TLoopClosureParams::text_index_map_partitions, and mrpt::gui::CDisplayWindow3D::unlockAccess3DScene().

Referenced by mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::updateVisuals().

template<class GRAPH_T >
bool mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::updateState ( mrpt::obs::CActionCollectionPtr  action,
mrpt::obs::CSensoryFramePtr  observations,
mrpt::obs::CObservationPtr  observation 
)
virtual

Generic method for fetching the incremental action/observation readings from the calling function.

Implementations of this interface should use (part of) the specified parameters and call the checkRegistrationCondition to check for potential Edge registration

Implements mrpt::graphslam::deciders::CEdgeRegistrationDecider< GRAPH_T >.

Definition at line 53 of file CLoopCloserERD_impl.h.

References mrpt::math::absDiff(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::addScanMatchingEdges(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::checkPartitionsForLC(), mrpt::utils::CTimeLogger::enter(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::evaluatePartitionsForLC(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::execDijkstraProjection(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::TLoopClosureParams::full_partition_per_nodes, mrpt::utils::CTimeLogger::leave(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_first_laser_scan, mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::m_graph, mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_is_first_time_node_reg, mrpt::graphslam::deciders::CEdgeRegistrationDecider< GRAPH_T >::m_just_inserted_lc, mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_laser_params, mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_last_laser_scan2D, mrpt::graphslam::deciders::CRangeScanEdgeRegistrationDecider< GRAPH_T >::m_last_total_num_nodes, mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_lc_params, mrpt::graphslam::deciders::CRangeScanEdgeRegistrationDecider< GRAPH_T >::m_nodes_to_laser_scans2D, mrpt::graphslam::deciders::CEdgeRegistrationDecider< GRAPH_T >::m_override_registered_nodes_check, mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_partitions_full_update, mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::m_time_logger, mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_visualize_curr_node_covariance, MRPT_END, MRPT_LOG_DEBUG_STREAM, MRPT_LOG_ERROR_STREAM, MRPT_LOG_WARN_STREAM, MRPT_START, MRPT_UNUSED_PARAM, THROW_EXCEPTION, mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::updateMapPartitions(), and mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::TLaserParams::use_scan_matching.

template<class GRAPH_T >
void mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::updateVisuals ( )
virtual

Member Data Documentation

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
const std::string mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::header_sep = std::string(80, '-')
staticprotectedinherited
template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
bool mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::is_mr_slam_class
protectedinherited

Boolean indicating if the current class can be used in multi-robot SLAM operations.

Definition at line 171 of file CRegistrationDeciderOrOptimizer.h.

Referenced by mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::isMultiRobotSlamClass().

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
std::string mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::m_class_name
protectedinherited
template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
double mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_consec_icp_constraint_factor
protected
template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
const mrpt::utils::TColor mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_curr_node_covariance_color
protected
template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
partitions_t mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_curr_partitions
protected
template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
size_t mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_dijkstra_node_count_thresh
protected
template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
std::map<std::string, int> mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_edge_types_to_nums
protected
template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
mrpt::obs::CObservation2DRangeScanPtr mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_first_laser_scan
protected

Keep track of the first recorded laser scan so that it can be assigned to the root node when the NRD adds the first two nodes to the graph.

Definition at line 868 of file CLoopCloserERD.h.

Referenced by mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::updateState().

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
GRAPH_T* mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::m_graph
protectedinherited

Pointer to the graph that is under construction.

Definition at line 146 of file CRegistrationDeciderOrOptimizer.h.

Referenced by mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::_optimizeGraph(), mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::checkForLoopClosures(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::checkPartitionsForLC(), mrpt::graphslam::deciders::CICPCriteriaERD< GRAPH_T >::checkRegistrationCondition2D(), mrpt::graphslam::deciders::CICPCriteriaERD< GRAPH_T >::checkRegistrationCondition3D(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::computeCentroidOfNodesVector(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::execDijkstraProjection(), mrpt::graphslam::deciders::CNodeRegistrationDecider< GRAPH_T >::getCurrentRobotPosEstimation(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::getMinUncertaintyPath(), mrpt::graphslam::deciders::CICPCriteriaERD< GRAPH_T >::getNearbyNodesOf(), mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::getNearbyNodesOf(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::getPropsOfNodeID(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::mahalanobisDistanceOdometryToICPEdge(), mrpt::graphslam::deciders::CICPCriteriaERD< GRAPH_T >::registerNewEdge(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::registerNewEdge(), mrpt::graphslam::deciders::CNodeRegistrationDecider< GRAPH_T >::registerNewNodeAtEnd(), mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::setGraphPtr(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::updateCurrCovarianceVisualization(), mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::updateGraphVisualization(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::updateLaserScansVisualization(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::updateMapPartitions(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::updateMapPartitionsVisualization(), mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::updateOptDistanceVisualization(), mrpt::graphslam::deciders::CICPCriteriaERD< GRAPH_T >::updateState(), mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::updateState(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::updateState(), and mrpt::graphslam::deciders::CICPCriteriaERD< GRAPH_T >::updateVisuals().

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
mrpt::synch::CCriticalSection* mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::m_graph_section
protectedinherited
template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
bool mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::m_initialized_visuals
protectedinherited
template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
bool mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_is_first_time_node_reg
protected

Track the first node registration occurance.

Handy so that we can assign a measurement to the root node as well.

Definition at line 873 of file CLoopCloserERD.h.

Referenced by mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::updateState().

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
bool mrpt::graphslam::deciders::CEdgeRegistrationDecider< GRAPH_T >::m_just_inserted_lc
protectedinherited
template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
TLaserParams mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_laser_params
protected
template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
mrpt::obs::CObservation2DRangeScanPtr mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_last_laser_scan2D
protected
template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
partitions_t mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_last_partitions
protected
template<class GRAPH_T >
size_t mrpt::graphslam::deciders::CRangeScanEdgeRegistrationDecider< GRAPH_T >::m_last_total_num_nodes
protectedinherited
template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
double mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_lc_icp_constraint_factor
protected
template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
TLoopClosureParams mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_lc_params
protected
template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
std::map< mrpt::utils::TNodeID, path_t* > mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_node_optimal_paths
protected

Map that stores the lowest uncertainty path towards a node.

Starting node depends on the starting node as used in the execDijkstraProjection method

Definition at line 863 of file CLoopCloserERD.h.

Referenced by mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::execDijkstraProjection(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::queryOptimalPath(), and mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::~CLoopCloserERD().

template<class GRAPH_T >
nodes_to_scans2D_t mrpt::graphslam::deciders::CRangeScanEdgeRegistrationDecider< GRAPH_T >::m_nodes_to_laser_scans2D
protectedinherited
template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
double mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_offset_y_curr_node_covariance
protected
template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
bool mrpt::graphslam::deciders::CEdgeRegistrationDecider< GRAPH_T >::m_override_registered_nodes_check
protectedinherited

Indicates whether the ERD implementation expects, at most one single node to be registered, between successive calls to the updateState method.

By default set to false.

Definition at line 115 of file CEdgeRegistrationDecider.h.

Referenced by mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::updateState().

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
mrpt::slam::CIncrementalMapPartitioner mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_partitioner
protected
template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
std::map<int, vector_uint> mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_partitionID_to_prev_nodes_list
protected

Keep track of the evaluated partitions so they are not checked again if nothing changed in them.

Definition at line 858 of file CLoopCloserERD.h.

Referenced by mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::checkPartitionsForLC().

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
bool mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_partitions_full_update
protected

Indicate whether the partitions have been updated recently.

Definition at line 854 of file CLoopCloserERD.h.

Referenced by mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::checkPartitionsForLC(), and mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::updateState().

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
int mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_text_index_curr_node_covariance
protected
template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
mrpt::utils::CTimeLogger mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::m_time_logger
protectedinherited

Time logger instance.

Definition at line 165 of file CRegistrationDeciderOrOptimizer.h.

Referenced by mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::_optimizeGraph(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::checkPartitionsForLC(), mrpt::graphslam::deciders::CICPCriteriaERD< GRAPH_T >::checkRegistrationCondition2D(), mrpt::graphslam::deciders::CICPCriteriaERD< GRAPH_T >::checkRegistrationCondition3D(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::computeDominantEigenVector(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::evaluatePartitionsForLC(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::execDijkstraProjection(), mrpt::graphslam::deciders::CICPCriteriaNRD< GRAPH_T >::getDescriptiveReport(), mrpt::graphslam::deciders::CICPCriteriaERD< GRAPH_T >::getDescriptiveReport(), mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::getDescriptiveReport(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::getDescriptiveReport(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::getICPEdge(), mrpt::graphslam::deciders::CICPCriteriaERD< GRAPH_T >::initializeVisuals(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::initializeVisuals(), mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::setClassName(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::updateMapPartitions(), mrpt::graphslam::deciders::CICPCriteriaNRD< GRAPH_T >::updateState(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::updateState(), mrpt::graphslam::deciders::CICPCriteriaERD< GRAPH_T >::updateVisuals(), and mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::updateVisuals().

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
bool mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::m_visualize_curr_node_covariance
protected
template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
mrpt::gui::CDisplayWindow3D* mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::m_win
protectedinherited

Window to use.

Definition at line 157 of file CRegistrationDeciderOrOptimizer.h.

Referenced by mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::assertVisualsVars(), mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::fitGraphInView(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::initCurrCovarianceVisualization(), mrpt::graphslam::deciders::CICPCriteriaERD< GRAPH_T >::initializeVisuals(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::initLaserScansVisualization(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::initMapPartitionsVisualization(), mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::initOptDistanceVisualization(), mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::setWindowManagerPtr(), mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::toggleGraphVisualization(), mrpt::graphslam::deciders::CICPCriteriaERD< GRAPH_T >::toggleLaserScansVisualization(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::toggleLaserScansVisualization(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::toggleMapPartitionsVisualization(), mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::toggleOptDistanceVisualization(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::updateCurrCovarianceVisualization(), mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::updateGraphVisualization(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::updateLaserScansVisualization(), mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T >::updateMapPartitionsVisualization(), mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::updateOptDistanceVisualization(), and mrpt::graphslam::deciders::CICPCriteriaERD< GRAPH_T >::updateVisuals().

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
mrpt::graphslam::CWindowManager* mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::m_win_manager
protectedinherited
template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
mrpt::graphslam::CWindowObserver* mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::m_win_observer
protectedinherited
template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
TParams mrpt::graphslam::deciders::CRangeScanOps< GRAPH_T >::params
protectedinherited
template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
const std::string mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::report_sep = std::string(2, '\n')
staticprotectedinherited



Page generated by Doxygen 1.8.11 for MRPT 1.5.7 Git: 2190203 Tue May 15 02:01:15 2018 +0200 at miƩ may 16 12:40:16 CEST 2018