Main MRPT website > C++ reference for MRPT 1.9.9
CRegistrationDeciderOrOptimizer.h
Go to the documentation of this file.
1 /* +------------------------------------------------------------------------+
2  | Mobile Robot Programming Toolkit (MRPT) |
3  | http://www.mrpt.org/ |
4  | |
5  | Copyright (c) 2005-2018, Individual contributors, see AUTHORS file |
6  | See: http://www.mrpt.org/Authors - All rights reserved. |
7  | Released under BSD License. See details in http://www.mrpt.org/License |
8  +------------------------------------------------------------------------+ */
9 
10 #ifndef CREGISTRATIONDECIDEROROPTIMIZER_H
11 #define CREGISTRATIONDECIDEROROPTIMIZER_H
12 
14 #include <mrpt/obs/CSensoryFrame.h>
15 #include <mrpt/obs/CObservation.h>
20 
21 #include <string>
22 #include <map>
23 
24 namespace mrpt
25 {
26 namespace graphslam
27 {
28 /**\brief Interface for implementing node/edge registration deciders or
29  * optimizer classes.
30  *
31  * Specific interfaces - for implementing node/edge deciders / optimizers -
32  * can inherit from CRegistrationDeciderOrOptimizer so that they can make use
33  * of the generic methods defined in the latter.
34  *
35  * \note \b Convention: For the already implemented deciders/optimizers the
36  * following naming convention has been used:
37  * - NRD: Node Registration Decider class
38  * - ERD: Edge Registration Decider class
39  * - GSO: GraphSlam Optimizer class
40  *
41  * \ingroup mrpt_graphslam_grp
42  */
43 template <class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
45 {
46  public:
47  /**\Default Ctor*/
49  /**\Dtor*/
51  /**\brief Generic method for fetching the incremental action-observations
52  * (or
53  * observation-only) measurements
54  *
55  * \return True if operation was successful. Criteria for Success depend on
56  * the decider/optimizer implementing this method
57  */
58  virtual bool updateState(
60  mrpt::obs::CSensoryFrame::Ptr observations,
61  mrpt::obs::CObservation::Ptr observation) = 0;
62  /**\brief Fetch a CWindowManager pointer.
63  *
64  * CWindowManager instance should contain a CDisplayWindow3D* and,
65  * optionally, a CWindowObserver pointer so that interaction with the
66  * window is possible
67  */
68  virtual void setWindowManagerPtr(
69  mrpt::graphslam::CWindowManager* win_manager);
70 
71  /**\brief Fetch a std::mutex for locking the GRAPH_T
72  * resource.
73  *
74  * Handy for realising multithreading in the derived classes.
75  *
76  * \warning Beware that prior to the decider/optimizer public method call,
77  * the CCriticalSection will already be locked from CGraphSlamEngine_t
78  * instance, but this isn't effective in multithreaded implementations where
79  * the decider/optimizer itself has to lock the function at which the extra
80  * thread runs.
81  */
82  virtual void setCriticalSectionPtr(std::mutex* graph_section);
83  /**\brief Initialize visual objects in CDisplayWindow (e.g. \em add an
84  * object to scene).
85  *
86  * \exception std::exception If the method is called without having first
87  * provided a CDisplayWindow3D* to the class instance
88  *
89  * \sa setWindowManagerPtr, updateVisuals
90  */
91  virtual void initializeVisuals();
92  /**\brief Update the relevant visual features in CDisplayWindow.
93  *
94  *\exception std::exception If the method is called without having first
95  * provided a CDisplayWindow3D* to the class instance
96  *
97  * \sa setWindowManagerPtr, initializeVisuals
98  */
99  virtual void updateVisuals();
100  /**\brief Get a list of the window events that happened since the last call.
101  *
102  * Method in derived classes is automatically called from the
103  * CGraphSlamEngine_t instance. After that, decider/optimizer should just
104  * fetch the parameters that it is interested in.
105  */
106  virtual void notifyOfWindowEvents(
107  const std::map<std::string, bool>& events_occurred);
108  /**\brief Load the necessary for the decider/optimizer configuration
109  * parameters.
110  */
111  virtual void loadParams(const std::string& source_fname);
112  /**\brief Print the problem parameters - relevant to the decider/optimizer
113  * to the
114  * screen in a unified/compact way.
115  */
116  virtual void printParams() const;
117  /**\brief Fill the provided string with a detailed report of the
118  * decider/optimizer state.
119  *
120  * Report should include (part of) the following:
121  * - Timing of important methods
122  * - Properties fo class at the current time
123  * - Logging of commands until current time
124  */
125  virtual void getDescriptiveReport(std::string* report_str) const;
126 
127  /**\brief Fetch the graph on which the decider/optimizer will work on.
128  *
129  */
130  virtual void setGraphPtr(GRAPH_T* graph);
131 
132  /**\brief Initialize the COutputLogger, CTimeLogger instances given the
133  * name of the decider/optimizer at hand
134  */
135  virtual void initializeLoggers(const std::string& name);
136  virtual void setClassName(const std::string& name);
137  bool isMultiRobotSlamClass();
138 
139  std::string getClassName() const { return m_class_name; };
140  protected:
141  /**\brief Handy function for making all the visuals assertions in a
142  * compact manner
143  */
144  virtual void assertVisualsVars();
145  /**\brief Pointer to the graph that is under construction */
146  GRAPH_T* m_graph;
147  std::mutex* m_graph_section;
148 
149  /** \name Visuals-related variables methods
150  */
151  /**\{*/
152  /**\brief Pointer to the CWindowManager object used to store
153  * visuals-related instances
154  */
156  /**\brief Window to use */
158  /**\brief CWindowObserver object for monitoring various visual-oriented
159  * events.*/
162  /**\}*/
163 
164  /**\brief Time logger instance */
166  /**\brief Name of the class instance */
168  /**\brief Boolean indicating if the current class can be used in
169  * multi-robot SLAM operations
170  */
172 
173  /**\brief Separator string to be used in debugging messages
174  */
175  static const std::string header_sep;
176  static const std::string report_sep;
177 };
178 }
179 } // end of namespaces
180 
182 #endif /* end of include guard: CREGISTRATIONDECIDEROROPTIMIZER_H */
mrpt::obs::CObservation::Ptr
std::shared_ptr< CObservation > Ptr
Definition: CObservation.h:45
mrpt::graphslam::CRegistrationDeciderOrOptimizer::getClassName
std::string getClassName() const
Definition: CRegistrationDeciderOrOptimizer.h:139
mrpt::graphslam::CRegistrationDeciderOrOptimizer::m_initialized_visuals
bool m_initialized_visuals
Definition: CRegistrationDeciderOrOptimizer.h:161
CNetworkOfPoses.h
CRegistrationDeciderOrOptimizer_impl.h
mrpt::graphslam::CRegistrationDeciderOrOptimizer::header_sep
static const std::string header_sep
Separator string to be used in debugging messages.
Definition: CRegistrationDeciderOrOptimizer.h:175
CWindowManager.h
mrpt::graphslam::CRegistrationDeciderOrOptimizer::m_class_name
std::string m_class_name
Name of the class instance.
Definition: CRegistrationDeciderOrOptimizer.h:167
mrpt::graphslam::CRegistrationDeciderOrOptimizer::notifyOfWindowEvents
virtual void notifyOfWindowEvents(const std::map< std::string, bool > &events_occurred)
Get a list of the window events that happened since the last call.
Definition: CRegistrationDeciderOrOptimizer_impl.h:111
mrpt::graphslam::CRegistrationDeciderOrOptimizer::m_win
mrpt::gui::CDisplayWindow3D * m_win
Window to use.
Definition: CRegistrationDeciderOrOptimizer.h:157
mrpt::obs::CSensoryFrame::Ptr
std::shared_ptr< CSensoryFrame > Ptr
Definition: CSensoryFrame.h:56
mrpt::system::CTimeLogger
A versatile "profiler" that logs the time spent within each pair of calls to enter(X)-leave(X),...
Definition: system/CTimeLogger.h:43
mrpt::graphslam::CRegistrationDeciderOrOptimizer::initializeVisuals
virtual void initializeVisuals()
Initialize visual objects in CDisplayWindow (e.g.
Definition: CRegistrationDeciderOrOptimizer_impl.h:90
mrpt::graphslam::CRegistrationDeciderOrOptimizer
Interface for implementing node/edge registration deciders or optimizer classes.
Definition: CRegistrationDeciderOrOptimizer.h:44
mrpt::graphslam::CRegistrationDeciderOrOptimizer::CRegistrationDeciderOrOptimizer
CRegistrationDeciderOrOptimizer()
\Default Ctor
Definition: CRegistrationDeciderOrOptimizer_impl.h:25
mrpt::graphslam::CRegistrationDeciderOrOptimizer::getDescriptiveReport
virtual void getDescriptiveReport(std::string *report_str) const
Fill the provided string with a detailed report of the decider/optimizer state.
Definition: CRegistrationDeciderOrOptimizer_impl.h:131
mrpt::graphslam::CRegistrationDeciderOrOptimizer::m_graph_section
std::mutex * m_graph_section
Definition: CRegistrationDeciderOrOptimizer.h:147
mrpt
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
Definition: CKalmanFilterCapable.h:30
mrpt::graphslam::CRegistrationDeciderOrOptimizer::setWindowManagerPtr
virtual void setWindowManagerPtr(mrpt::graphslam::CWindowManager *win_manager)
Fetch a CWindowManager pointer.
Definition: CRegistrationDeciderOrOptimizer_impl.h:67
mrpt::graphslam::CWindowObserver
Monitor events in the visualization window.
Definition: CWindowObserver.h:27
CActionCollection.h
mrpt::graphslam::CWindowManager
Class acts as a container for storing pointers to mrpt::gui::CDisplayWindow3D, mrpt::graphslam::CWind...
Definition: CWindowManager.h:30
name
GLuint const GLchar * name
Definition: glext.h:4054
mrpt::graphslam::CRegistrationDeciderOrOptimizer::assertVisualsVars
virtual void assertVisualsVars()
Handy function for making all the visuals assertions in a compact manner.
Definition: CRegistrationDeciderOrOptimizer_impl.h:97
mrpt::graphslam::CRegistrationDeciderOrOptimizer::initializeLoggers
virtual void initializeLoggers(const std::string &name)
Initialize the COutputLogger, CTimeLogger instances given the name of the decider/optimizer at hand.
Definition: CRegistrationDeciderOrOptimizer_impl.h:43
COutputLogger.h
mrpt::graphslam::CRegistrationDeciderOrOptimizer::updateState
virtual bool updateState(mrpt::obs::CActionCollection::Ptr action, mrpt::obs::CSensoryFrame::Ptr observations, mrpt::obs::CObservation::Ptr observation)=0
Generic method for fetching the incremental action-observations (or observation-only) measurements.
mrpt::graphslam::CRegistrationDeciderOrOptimizer::setCriticalSectionPtr
virtual void setCriticalSectionPtr(std::mutex *graph_section)
Fetch a std::mutex for locking the GRAPH_T resource.
Definition: CRegistrationDeciderOrOptimizer_impl.h:81
mrpt::system::COutputLogger
Versatile class for consistent logging and management of output messages.
Definition: system/COutputLogger.h:117
CSensoryFrame.h
mrpt::graphslam::CRegistrationDeciderOrOptimizer::setClassName
virtual void setClassName(const std::string &name)
Definition: CRegistrationDeciderOrOptimizer_impl.h:58
mrpt::graphslam::CRegistrationDeciderOrOptimizer::loadParams
virtual void loadParams(const std::string &source_fname)
Load the necessary for the decider/optimizer configuration parameters.
Definition: CRegistrationDeciderOrOptimizer_impl.h:118
CObservation.h
CTimeLogger.h
mrpt::graphslam::CRegistrationDeciderOrOptimizer::printParams
virtual void printParams() const
Print the problem parameters - relevant to the decider/optimizer to the screen in a unified/compact w...
Definition: CRegistrationDeciderOrOptimizer_impl.h:125
mrpt::graphslam::CRegistrationDeciderOrOptimizer::updateVisuals
virtual void updateVisuals()
Update the relevant visual features in CDisplayWindow.
Definition: CRegistrationDeciderOrOptimizer_impl.h:105
mrpt::graphslam::CRegistrationDeciderOrOptimizer::report_sep
static const std::string report_sep
Definition: CRegistrationDeciderOrOptimizer.h:176
mrpt::graphslam::CRegistrationDeciderOrOptimizer::is_mr_slam_class
bool is_mr_slam_class
Boolean indicating if the current class can be used in multi-robot SLAM operations.
Definition: CRegistrationDeciderOrOptimizer.h:171
mrpt::graphslam::CRegistrationDeciderOrOptimizer::m_win_observer
mrpt::graphslam::CWindowObserver * m_win_observer
CWindowObserver object for monitoring various visual-oriented events.
Definition: CRegistrationDeciderOrOptimizer.h:160
mrpt::graphslam::CRegistrationDeciderOrOptimizer::m_graph
GRAPH_T * m_graph
Pointer to the graph that is under construction.
Definition: CRegistrationDeciderOrOptimizer.h:146
mrpt::graphslam::CRegistrationDeciderOrOptimizer::setGraphPtr
virtual void setGraphPtr(GRAPH_T *graph)
Fetch the graph on which the decider/optimizer will work on.
Definition: CRegistrationDeciderOrOptimizer_impl.h:139
mrpt::graphslam::CRegistrationDeciderOrOptimizer::m_time_logger
mrpt::system::CTimeLogger m_time_logger
Time logger instance.
Definition: CRegistrationDeciderOrOptimizer.h:165
string
GLsizei const GLchar ** string
Definition: glext.h:4101
mrpt::obs::CActionCollection::Ptr
std::shared_ptr< CActionCollection > Ptr
Definition: CActionCollection.h:30
mrpt::graphslam::CRegistrationDeciderOrOptimizer::m_win_manager
mrpt::graphslam::CWindowManager * m_win_manager
Pointer to the CWindowManager object used to store visuals-related instances.
Definition: CRegistrationDeciderOrOptimizer.h:155
mrpt::graphslam::CRegistrationDeciderOrOptimizer::~CRegistrationDeciderOrOptimizer
virtual ~CRegistrationDeciderOrOptimizer()
\Dtor
Definition: CRegistrationDeciderOrOptimizer_impl.h:38
mrpt::gui::CDisplayWindow3D
A graphical user interface (GUI) for efficiently rendering 3D scenes in real-time.
Definition: CDisplayWindow3D.h:117
mrpt::graphslam::CRegistrationDeciderOrOptimizer::isMultiRobotSlamClass
bool isMultiRobotSlamClass()
Definition: CRegistrationDeciderOrOptimizer_impl.h:146



Page generated by Doxygen 1.8.17 for MRPT 1.9.9 Git: ad3a9d8ae Tue May 1 23:10:22 2018 -0700 at miƩ 12 jul 2023 10:03:34 CEST