Template Class CICPCriteriaERD

Nested Relationships

Nested Types

Inheritance Relationships

Base Type

Class Documentation

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
class CICPCriteriaERD : public mrpt::graphslam::deciders::CRangeScanEdgeRegistrationDecider<typename mrpt::graphs::CNetworkOfPoses2DInf>

ICP-based Edge Registration.

Unnamed Group

using constraint_t = typename GRAPH_T::constraint_t

Handy typedefs.

type of graph constraints

using pose_t = typename GRAPH_T::constraint_t::type_value

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

using parent_t = CRangeScanEdgeRegistrationDecider<GRAPH_T>
using range_ops_t = typename parent_t::range_ops_t
using decider_t = CICPCriteriaERD<GRAPH_T>

self type - Handy type

using nodes_to_scans2D_t = typename parent_t::nodes_to_scans2D_t

Public Functions

CICPCriteriaERD()
~CICPCriteriaERD() override = default
virtual bool updateState(mrpt::obs::CActionCollection::Ptr action, mrpt::obs::CSensoryFrame::Ptr observations, mrpt::obs::CObservation::Ptr observation) override

Generic method for fetching the incremental action-observations (or observation-only) measurements.

Returns:

True if operation was successful. Criteria for Success depend on the decider/optimizer implementing this method

virtual void notifyOfWindowEvents(const std::map<std::string, bool> &events_occurred) override

Get a list of the window events that happened since the last call.

Method in derived classes is automatically called from the CGraphSlamEngine_t instance. After that, decider/optimizer should just fetch the parameters that it is interested in.

virtual void getEdgesStats(std::map<std::string, int> *edge_types_to_num) const override

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

virtual void initializeVisuals() override

Initialize visual objects in CDisplayWindow (e.g. add an object to scene).

Throws:

std::exception – If the method is called without having first provided a CDisplayWindow3D* to the class instance

virtual void updateVisuals() override

Update the relevant visual features in CDisplayWindow.

Throws:

std::exception – If the method is called without having first provided a CDisplayWindow3D* to the class instance

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

Public Members

TParams params

Protected Functions

void checkRegistrationCondition2D(const std::set<mrpt::graphs::TNodeID> &nodes_set)
void checkRegistrationCondition3D(const std::set<mrpt::graphs::TNodeID> &nodes_set)
virtual void registerNewEdge(const mrpt::graphs::TNodeID &from, const mrpt::graphs::TNodeID &to, const constraint_t &rel_edge) override

Register a new constraint/edge in the current graph.

Implementations of this class should provide a wrapper around GRAPH_T::insertEdge method.

void checkIfInvalidDataset(mrpt::obs::CActionCollection::Ptr action, mrpt::obs::CSensoryFrame::Ptr observations, mrpt::obs::CObservation::Ptr observation)
void getNearbyNodesOf(std::set<mrpt::graphs::TNodeID> *nodes_set, const mrpt::graphs::TNodeID &cur_nodeID, double distance)

Get a list of the nodeIDs whose position is within a certain distance to the specified nodeID.

void toggleLaserScansVisualization()

togle the LaserScans visualization on and off

void dumpVisibilityErrorMsg(std::string viz_flag, int sleep_time = 500)

Protected Attributes

mrpt::img::TColor m_search_disk_color

see Constructor for initialization

mrpt::img::TColor m_laser_scans_color

see Constructor for initialization

double m_offset_y_search_disk
int m_text_index_search_disk
std::map<mrpt::graphs::TNodeID, mrpt::obs::CObservation2DRangeScan::Ptr> m_nodes_to_laser_scans2D
std::map<mrpt::graphs::TNodeID, mrpt::obs::CObservation3DRangeScan::Ptr> m_nodes_to_laser_scans3D
std::map<std::string, int> m_edge_types_to_nums
bool m_is_using_3DScan = {false}
mrpt::obs::CObservation2DRangeScan::Ptr m_last_laser_scan2D
mrpt::obs::CObservation3DRangeScan::Ptr m_last_laser_scan3D
mrpt::obs::CObservation2DRangeScan::Ptr m_fake_laser_scan2D
struct TParams : public mrpt::config::CLoadableOptions

Public Functions

TParams(decider_t &d)
~TParams() override
virtual void loadFromConfigFile(const mrpt::config::CConfigFileBase &source, const std::string &section) override
virtual void dumpToTextStream(std::ostream &out) const override

Public Members

decider_t &decider
double ICP_max_distance
double ICP_goodness_thresh
size_t LC_min_nodeid_diff
bool visualize_laser_scans
std::string keystroke_laser_scans
std::string scans_img_external_dir
bool has_read_config