Main MRPT website > C++ reference for MRPT 1.9.9
CHMTSLAM.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 #ifndef CHMTSLAM_H
10 #define CHMTSLAM_H
11 
14 
20 #include <mrpt/slam/CICP.h>
21 #include <mrpt/maps/CPointsMap.h>
22 #include <mrpt/slam/TKLDParams.h>
27 
28 #include <thread>
29 #include <queue>
30 
31 namespace mrpt
32 {
33 /** Classes related to the implementation of Hybrid Metric Topological (HMT)
34  * SLAM. \ingroup mrpt_hmtslam_grp */
35 namespace hmtslam
36 {
37 class CHMTSLAM;
38 class CLSLAMAlgorithmBase;
39 class CLSLAM_RBPF_2DLASER;
40 
41 /** An implementation of Hybrid Metric Topological SLAM (HMT-SLAM).
42  *
43  * The main entry points for a user are pushAction() and pushObservations().
44  *Several parameters can be modified
45  * through m_options.
46  *
47  * The mathematical models of this approach have been reported in:
48  * - Blanco J.L., Fernandez-Madrigal J.A., and Gonzalez J., "Towards a
49  *Unified Bayesian Approach to Hybrid Metric-Topological SLAM", in IEEE
50  *Transactions on Robotics (TRO), Vol. 24, No. 2, April 2008.
51  * - ...
52  *
53  * More information in the wiki page: http://www.mrpt.org/HMT-SLAM . A complete
54  *working application can be found in "MRPT/apps/hmt-slam".
55  *
56  * The complete state of the SLAM framework is serializable, so it can be saved
57  *and restore to/from a binary dump. This class implements
58  *mrpt::serialization::CSerializable, so
59  * it can be saved with "stream << slam_object;" and restored with "stream >>
60  *slam_object;". Alternatively, the methods CHMTSLAM::saveState and
61  *CHMTSLAM::loadState
62  * can be invoked, which in turn call internally to the CSerializable
63  *interface.
64  *
65  * \sa CHierarchicalMHMap
66  * \ingroup mrpt_hmtslam_grp
67  */
70 {
71  friend class CLocalMetricHypothesis;
72  friend class CLSLAM_RBPF_2DLASER;
74  friend class CTopLCDetector_FabMap;
75 
77 
78  protected:
79  /** @name Inter-thread communication queues:
80  @{ */
81  /** Message definition:
82  - From: LSLAM
83  - To: AA
84  - Meaning: Reconsider the graph partition for the given LMH. Compute SSO
85  for the new node(s) "newPoseIDs".
86  */
87  /*struct TMessageAA
88  {
89  CLocalMetricHypothesis *LMH;
90  TPoseIDList newPoseIDs;
91  };*/
92 
93  /** Message definition:
94  - From: AA
95  - To: LSLAM
96  - Meaning: The partitioning of robot poses.
97  */
99  {
100  using Ptr = std::shared_ptr<TMessageLSLAMfromAA>;
101  /** The hypothesis ID (LMH) for these results. */
103  std::vector<TPoseIDList> partitions;
104 
105  /** for debugging only */
106  void dumpToConsole() const;
107  };
108 
109  /** Message definition:
110  - From: LSLAM
111  - To: TBI
112  - Meaning: One or more areas are to be considered by the TBI engines.
113  */
115  {
116  using Ptr = std::shared_ptr<TMessageLSLAMtoTBI>;
117  /** The LMH */
119  /** The areas to consider. */
121  };
122 
123  /** Message definition:
124  - From: TBI
125  - To: LSLAM
126  - Meaning:
127  */
129  {
130  using Ptr = std::shared_ptr<TMessageLSLAMfromTBI>;
131  /** The hypothesis ID (LMH) for these results. */
133 
134  /** The area for who the loop-closure has been computed. */
136 
137  struct TBI_info
138  {
140  /** Log likelihood for this loop-closure. */
141  double log_lik;
142 
143  /** Depending on the loop-closure engine, an guess of the relative
144  * pose of "area_new" relative to "cur_area" is given here.
145  * If the SOG contains 0 modes, then the engine does not provide
146  * this information.
147  */
149  };
150 
151  /** The meat is here: only feasible loop closures from "cur_area" are
152  * included here, with associated data.
153  */
154  std::map<CHMHMapNode::TNodeID, TBI_info> loopClosureData;
155 
156  // MRPT_MAKE_ALIGNED_OPERATOR_NEW
157  };
158 
159  /** LSLAM thread input queue, messages of type CHMTSLAM::TMessageLSLAMfromAA
160  */
161  using CMessageQueue =
163 
165 
166  /** @} */
167 
168  /** The Area Abstraction (AA) method, invoked from LSLAM.
169  * \param LMH (IN) The LMH which to this query applies.
170  * \param newPoseIDs (IN) The new poseIDs to be added to the graph
171  * partitioner.
172  * \return A structure with all return data. Memory to be freed by user.
173  * \note The critical section for LMH must be locked BEFORE calling this
174  * method (it does NOT lock any critical section).
175  */
177  CLocalMetricHypothesis* LMH, const TPoseIDList& newPoseIDs);
178 
179  /** The entry point for Topological Bayesian Inference (TBI) engines,
180  * invoked from LSLAM.
181  * \param LMH (IN) The LMH which to this query applies.
182  * \param areaID (IN) The area ID to consider for potential loop-closures.
183  * \note The critical section for LMH must be locked BEFORE calling this
184  * method (it does NOT lock any critical section).
185  */
187  CLocalMetricHypothesis* LMH, const CHMHMapNode::TNodeID& areaID);
188 
189  /** @name Related to the input queue:
190  @{ */
191  public:
192  /** Empty the input queue. */
193  void clearInputQueue();
194 
195  /** Returns true if the input queue is empty (Note that the queue must not
196  * be empty to the user to enqueue more actions/observaitions)
197  * \sa pushAction,pushObservations, inputQueueSize
198  */
199  bool isInputQueueEmpty();
200 
201  /** Returns the number of objects waiting for processing in the input queue.
202  * \sa pushAction,pushObservations, isInputQueueEmpty
203  */
204  size_t inputQueueSize();
205 
206  /** Here the user can enter an action into the system (will go to the SLAM
207  * process).
208  * This class will delete the passed object when required, so DO NOT
209  * DELETE the passed object after calling this.
210  * \sa pushObservations,pushObservation
211  */
213 
214  /** Here the user can enter observations into the system (will go to the
215  * SLAM process).
216  * This class will delete the passed object when required, so DO NOT
217  * DELETE the passed object after calling this.
218  * \sa pushAction,pushObservation
219  */
221 
222  /** Here the user can enter an observation into the system (will go to the
223  * SLAM process).
224  * This class will delete the passed object when required, so DO NOT
225  * DELETE the passed object after calling this.
226  * \sa pushAction,pushObservation
227  */
229 
231  {
233  };
234 
235  protected:
236  /** Used from the LSLAM thread to retrieve the next object from the queue.
237  * \return The object, or nullptr if empty.
238  */
240 
241  /** The queue of pending actions/observations supplied by the user waiting
242  * for being processed. */
243  std::queue<mrpt::serialization::CSerializable::Ptr> m_inputQueue;
244 
245  /** Critical section for accessing m_inputQueue */
246  mutable std::mutex m_inputQueue_cs;
247 
248  /** Critical section for accessing m_map */
249  mutable std::mutex m_map_cs;
250 
251  /** Critical section for accessing m_LMHs */
252  mutable std::mutex m_LMHs_cs;
253 
254  /** @} */
255 
256  /** @name Threads stuff
257  @{ */
258 
259  /** The function for the "Local SLAM" thread. */
260  void thread_LSLAM();
261 
262  /** The function for the "TBI" thread. */
263  void thread_TBI();
264 
265  /** The function for the "3D viewer" thread. */
266  void thread_3D_viewer();
267  /** Threads handles */
269  /** @} */
270 
271  /** @name HMT-SLAM sub-processes.
272  @{ */
273  /** Auxiliary method within thread_LSLAM */
275 
276  /** No critical section locks are assumed at the entrance of this method.
277  */
279 
280  /** No critical section locks are assumed at the entrance of this method.
281  */
283 
284  /** Topological Loop Closure: Performs all the required operations
285  to close a loop between two areas which have been determined
286  to be the same.
287  */
288  void perform_TLC(
289  CLocalMetricHypothesis& LMH, const CHMHMapNode::TNodeID areaInLMH,
290  const CHMHMapNode::TNodeID areaLoopClosure,
291  const mrpt::poses::CPose3DPDFGaussian& pose1wrt2);
292 
293  /** @} */
294 
295  /** @name The different SLAM algorithms that can be invoked from the LSLAM
296  thread.
297  @{ */
298 
299  /** An instance of a local SLAM method, to be applied to each LMH -
300  * initialized by "initializeEmptyMap" or "loadState".
301  */
303 
304  /** @} */
305 
306  /** @name The different Loop-Closure modules that are to be executed in the
307  TBI thread.
308  @{ */
309  protected:
311 
312  std::map<std::string, TLopLCDetectorFactory> m_registeredLCDetectors;
313 
314  /** The list of LC modules in operation - initialized by
315  * "initializeEmptyMap" or "loadState". */
316  std::deque<CTopLCDetectorBase*> m_topLCdets;
317 
318  /** The critical section for accessing m_topLCdets */
319  std::mutex m_topLCdets_cs;
320 
321  public:
322  /** Must be invoked before calling initializeEmptyMap, so LC objects can be
323  * created. */
325  const std::string& name,
326  CTopLCDetectorBase* (*ptrCreateObject)(CHMTSLAM*));
327 
328  /** The class factory for topological loop closure detectors.
329  * Possible values are enumerated in TOptions::TLC_detectors
330  *
331  * \exception std::exception On unknown name.
332  */
334 
335  /** @} */
336  protected:
337  /** Termination flag for signaling all threads to terminate */
339 
340  /** Threads termination flags:
341  */
344 
345  /** Generates a new and unique area textual label (currently this generates
346  * "0","1",...) */
348 
349  /** Generates a new and unique pose ID */
350  static TPoseID generatePoseID();
351 
352  /** Generates a new and unique hypothesis ID */
354 
358 
359  public:
360  /** Default constructor
361  * \param debug_out_stream If debug output messages should be redirected
362  * to any other stream apart from std::cout
363  */
364  CHMTSLAM();
365 
366  CHMTSLAM(const CHMTSLAM&) : mrpt::system::COutputLogger()
367  {
368  THROW_EXCEPTION("This object cannot be copied.");
369  }
370  const CHMTSLAM& operator=(const CHMTSLAM&)
371  {
372  THROW_EXCEPTION("This object cannot be copied.");
373  }
374 
375  /** Destructor
376  */
377  virtual ~CHMTSLAM();
378 
379  /** Return true if an exception has been caught in any thread leading to the
380  * end of the mapping application: no more actions/observations will be
381  * processed from now on.
382  */
383  bool abortedDueToErrors();
384 
385  /** @name High-level map management
386  @{ */
387 
388  /** Loads the options from a config file. */
389  void loadOptions(const std::string& configFile);
390  /** Loads the options from a config source */
391  void loadOptions(const mrpt::config::CConfigFileBase& cfgSource);
392 
393  /** Initializes the whole HMT-SLAM framework, reseting to an empty map (It
394  * also clears the logs directory) - this must be called AFTER loading the
395  * options with CHMTSLAM::loadOptions. */
396  void initializeEmptyMap();
397 
398  /** Save the state of the whole HMT-SLAM framework to some binary stream
399  * (e.g. a file).
400  * \return true if everything goes OK.
401  * \sa loadState
402  */
403  bool saveState(mrpt::serialization::CArchive& out) const;
404 
405  /** Load the state of the whole HMT-SLAM framework from some binary stream
406  * (e.g. a file).
407  * \return true if everything goes OK.
408  * \sa saveState
409  */
411  /** @} */
412 
413  /** @name The important data.
414  @{ */
415  /** The hiearchical, multi-hypothesis graph-based map. */
417  /** The list of LMHs at each instant. */
419  /** @} */
420 
421  /** Called from LSLAM thread when log files must be created.
422  */
423  void generateLogFiles(unsigned int nIteration);
424 
425  /** Gets a 3D representation of the current state of the whole mapping
426  * framework.
427  */
429 
430  protected:
431  /** A variety of options and configuration params (private, use
432  * loadOptions).
433  */
435  {
436  /** Initialization of default params
437  */
438  TOptions();
439 
440  void loadFromConfigFile(
442  const std::string& section) override; // See base docs
443  void dumpToTextStream(
444  std::ostream& out) const override; // See base docs
445 
446  /** [LOGGING] If it is not an empty string (""), a directory with that
447  * name will be created and log files save there. */
449  /** [LOGGING] One SLAM iteration out of "LOGGING_logFrequency", a log
450  * file will be generated. */
452 
453  /** [LSLAM] The method to use for local SLAM
454  */
456 
457  /** [LSLAM] Minimum distance (and heading) difference between
458  * observations inserted in the map.
459  */
461 
462  /** [LSLAM] Minimum uncertainty (1 sigma, meters) in x and y for
463  * odometry increments (Default=0) */
465 
466  /** [LSLAM] Minimum uncertainty (1 sigma, rads) in phi for odometry
467  * increments (Default=0) */
469 
470  /** [VIEW3D] The height of the areas' spheres.
471  */
473 
474  /** [VIEW3D] The radius of the areas' spheres.
475  */
477 
478  /** A 3-length vector with the std. deviation of the transition model in
479  * (x,y,phi) used only when there is no odometry (if there is odo, its
480  * uncertainty values will be used instead); x y: In meters, phi:
481  * radians (but in degrees when loading from a configuration ini-file!)
482  */
484 
485  /** [AA] The options for the partitioning algorithm
486  */
488 
489  /** The default set of maps to be created in each particle */
491  /** These params are used from every LMH object. */
494 
495  /** 0 means randomize, use any other value to have repetitive
496  * experiments. */
498 
499  /** A list of topological loop-closure detectors to use: can be one or
500  * more from this list:
501  * 'gridmaps': Occupancy Grid matching.
502  * 'fabmap': Mark Cummins' image matching framework.
503  */
504  std::vector<std::string> TLC_detectors;
505 
506  /** Options passed to this TLC constructor */
508  /** Options passed to this TLC constructor */
510 
511  } m_options;
512 
513 }; // End of class CHMTSLAM.
514 
515 /** Virtual base for local SLAM methods, used in mrpt::slam::CHMTSLAM.
516  */
518 {
520 
521  protected:
523 
524  public:
525  /** Constructor
526  */
527  CLSLAMAlgorithmBase(CHMTSLAM* parent) : m_parent(parent) {}
528  /** Destructor
529  */
530  virtual ~CLSLAMAlgorithmBase() {}
531  /** Main entry point from HMT-SLAM: process some actions & observations.
532  * The passed action/observation will be deleted, so a copy must be made
533  * if necessary.
534  * This method must be in charge of updating the robot pose estimates and
535  * also to update the
536  * map when required.
537  *
538  * \param LMH The local metric hypothesis which must be updated by this
539  * SLAM algorithm.
540  * \param act The action to process (or nullptr).
541  * \param sf The observations to process (or nullptr).
542  */
543  virtual void processOneLMH(
546  const mrpt::obs::CSensoryFrame::Ptr& sf) = 0;
547 
548  /** The PF algorithm implementation.
549  */
552  const mrpt::obs::CSensoryFrame* observation,
553  const bayes::CParticleFilter::TParticleFilterOptions& PF_options) = 0;
554 
555  /** The PF algorithm implementation. */
558  const mrpt::obs::CSensoryFrame* observation,
559  const bayes::CParticleFilter::TParticleFilterOptions& PF_options) = 0;
560 
561 }; // end of class CLSLAMAlgorithmBase
562 
563 /** Implements a 2D local SLAM method based on a RBPF over an occupancy grid
564  * map.
565  * This class is used internally in mrpt::slam::CHMTSLAM
566  */
568 {
570 
571  public:
572  /** Constructor
573  */
574  CLSLAM_RBPF_2DLASER(CHMTSLAM* parent);
575 
576  /** Destructor
577  */
578  virtual ~CLSLAM_RBPF_2DLASER();
579 
580  /** Main entry point from HMT-SLAM: process some actions & observations.
581  * The passed action/observation will be deleted, so a copy must be made
582  * if necessary.
583  * This method must be in charge of updating the robot pose estimates and
584  * also to update the
585  * map when required.
586  *
587  * \param LMH The local metric hypothesis which must be updated by this
588  * SLAM algorithm.
589  * \param act The action to process (or nullptr).
590  * \param sf The observations to process (or nullptr).
591  */
592  void processOneLMH(
596 
597  /** The PF algorithm implementation. */
600  const mrpt::obs::CSensoryFrame* observation,
602 
603  /** The PF algorithm implementation. */
606  const mrpt::obs::CSensoryFrame* observation,
608 
609  protected:
610  /** For use within PF callback methods */
612 
613  /** Auxiliary structure
614  */
615  struct TPathBin
616  {
617  TPathBin() : x(), y(), phi() {}
618  std::vector<int> x, y, phi;
619 
620  /** For debugging purposes!
621  */
622  void dumpToStdOut() const;
623  };
624 
625  /** Fills out a "TPathBin" variable, given a path hypotesis and (if not set
626  * to nullptr) a new pose appended at the end, using the KLD params in
627  * "options".
628  */
630  TPathBin& outBin, TMapPoseID2Pose3D* path = nullptr,
631  mrpt::poses::CPose2D* newPose = nullptr);
632 
633  /** Checks if a given "TPathBin" element is already into a set of them, and
634  * return its index (first one is 0), or -1 if not found.
635  */
636  int findTPathBinIntoSet(TPathBin& desiredBin, std::deque<TPathBin>& theSet);
637 
638  /** Auxiliary function used in "prediction_and_update_pfAuxiliaryPFOptimal"
639  */
640  static double particlesEvaluator_AuxPFOptimal(
643  const void* action, const void* observation);
644 
645  /** Auxiliary function that evaluates the likelihood of an observation,
646  * given a robot pose, and according to the options in
647  * "CPosePDFParticles::options".
648  */
652  size_t particleIndexForMap, const mrpt::obs::CSensoryFrame* observation,
653  const mrpt::poses::CPose2D* x);
654 
655 }; // end class CLSLAM_RBPF_2DLASER
656 
657 } // End of namespace
658 } // End of namespace
659 
660 #endif
mrpt::hmtslam::CLSLAM_RBPF_2DLASER::prediction_and_update_pfOptimalProposal
void prediction_and_update_pfOptimalProposal(CLocalMetricHypothesis *LMH, const mrpt::obs::CActionCollection *action, const mrpt::obs::CSensoryFrame *observation, const bayes::CParticleFilter::TParticleFilterOptions &PF_options)
The PF algorithm implementation.
Definition: CHMTSLAM_LSLAM_RBPF_2DLASER.cpp:785
mrpt::poses::CPose3DPDFSOG
Declares a class that represents a Probability Density function (PDF) of a 3D(6D) pose .
Definition: CPose3DPDFSOG.h:34
mrpt::obs::CObservation::Ptr
std::shared_ptr< CObservation > Ptr
Definition: CObservation.h:45
mrpt::hmtslam::CTopLCDetector_GridMatching::TOptions
Options for a TLC-detector of type gridmap-matching, used from CHMTSLAM.
Definition: CTopLCDetector_GridMatching.h:56
mrpt::hmtslam::CHMTSLAM::TOptions::defaultMapsInitializers
mrpt::maps::TSetOfMetricMapInitializers defaultMapsInitializers
The default set of maps to be created in each particle.
Definition: CHMTSLAM.h:490
CHierarchicalMHMap.h
mrpt::slam::CIncrementalMapPartitioner::TOptions
Configuration parameters.
Definition: CIncrementalMapPartitioner.h:71
mrpt::hmtslam::CLocalMetricHypothesis
This class is used in HMT-SLAM to represent each of the Local Metric Hypotheses (LMHs).
Definition: CLocalMetricHypothesis.h:64
mrpt::hmtslam::CHMTSLAM::generateHypothesisID
static THypothesisID generateHypothesisID()
Generates a new and unique hypothesis ID.
Definition: CHMTSLAM_main.cpp:537
mrpt::hmtslam::CLSLAM_RBPF_2DLASER
Implements a 2D local SLAM method based on a RBPF over an occupancy grid map.
Definition: CHMTSLAM.h:567
mrpt::hmtslam::CHMTSLAM::m_LSLAM_method
CLSLAMAlgorithmBase * m_LSLAM_method
An instance of a local SLAM method, to be applied to each LMH - initialized by "initializeEmptyMap" o...
Definition: CHMTSLAM.h:302
mrpt::hmtslam::CHMTSLAM::TOptions::MIN_ODOMETRY_STD_XY
float MIN_ODOMETRY_STD_XY
[LSLAM] Minimum uncertainty (1 sigma, meters) in x and y for odometry increments (Default=0)
Definition: CHMTSLAM.h:464
mrpt::poses::CPose3DPDFGaussian
Declares a class that represents a Probability Density function (PDF) of a 3D pose .
Definition: CPose3DPDFGaussian.h:40
mrpt::hmtslam::CHMTSLAM::TMessageLSLAMfromTBI
Message definition:
Definition: CHMTSLAM.h:128
mrpt::hmtslam::CHMTSLAM::TOptions::AA_options
mrpt::slam::CIncrementalMapPartitioner::TOptions AA_options
[AA] The options for the partitioning algorithm
Definition: CHMTSLAM.h:487
mrpt::hmtslam::CHMTSLAM::TMessageLSLAMtoTBI::areaIDs
TNodeIDList areaIDs
The areas to consider.
Definition: CHMTSLAM.h:120
mrpt::hmtslam::CHMTSLAM::thread_TBI
void thread_TBI()
The function for the "TBI" thread.
Definition: CHMTSLAM_TBI.cpp:31
mrpt::hmtslam::CTopLCDetector_GridMatching
Definition: CTopLCDetector_GridMatching.h:21
mrpt::hmtslam::CHMTSLAM::LSLAM_process_message_from_TBI
void LSLAM_process_message_from_TBI(const TMessageLSLAMfromTBI &myMsg)
No critical section locks are assumed at the entrance of this method.
Definition: CHMTSLAM_LSLAM.cpp:1948
mrpt::serialization::CSerializable::Ptr
std::shared_ptr< CSerializable > Ptr
Definition: CSerializable.h:37
mrpt::obs::CSensoryFrame::Ptr
std::shared_ptr< CSensoryFrame > Ptr
Definition: CSensoryFrame.h:56
mrpt::hmtslam::CHMTSLAM::registerLoopClosureDetector
void registerLoopClosureDetector(const std::string &name, CTopLCDetectorBase *(*ptrCreateObject)(CHMTSLAM *))
Must be invoked before calling initializeEmptyMap, so LC objects can be created.
Definition: CHMTSLAM_main.cpp:558
mrpt::hmtslam::CHMTSLAM::TOptions::loadFromConfigFile
void loadFromConfigFile(const mrpt::config::CConfigFileBase &source, const std::string &section) override
This method load the options from a ".ini"-like file or memory-stored string list.
Definition: CHMTSLAM_main.cpp:292
mrpt::hmtslam::CHMTSLAM::TMessageLSLAMfromTBI::cur_area
CHMHMapNode::TNodeID cur_area
The area for who the loop-closure has been computed.
Definition: CHMTSLAM.h:135
CPointsMap.h
mrpt::hmtslam::CHMTSLAM::abortedDueToErrors
bool abortedDueToErrors()
Return true if an exception has been caught in any thread leading to the end of the mapping applicati...
Definition: CHMTSLAM_main.cpp:549
mrpt::hmtslam::CHMTSLAM::TBI_main_method
static TMessageLSLAMfromTBI::Ptr TBI_main_method(CLocalMetricHypothesis *LMH, const CHMHMapNode::TNodeID &areaID)
The entry point for Topological Bayesian Inference (TBI) engines, invoked from LSLAM.
Definition: CHMTSLAM_TBI.cpp:103
mrpt::hmtslam::CLSLAM_RBPF_2DLASER::prediction_and_update_pfAuxiliaryPFOptimal
void prediction_and_update_pfAuxiliaryPFOptimal(CLocalMetricHypothesis *LMH, const mrpt::obs::CActionCollection *action, const mrpt::obs::CSensoryFrame *observation, const bayes::CParticleFilter::TParticleFilterOptions &PF_options)
The PF algorithm implementation.
Definition: CHMTSLAM_LSLAM_RBPF_2DLASER.cpp:229
mrpt::hmtslam::CTopLCDetector_FabMap
Definition: CTopLCDetector_FabMap.h:19
mrpt::math::dynamic_vector
Column vector, like Eigen::MatrixX*, but automatically initialized to zeros since construction.
Definition: eigen_frwds.h:44
mrpt::hmtslam::CHMTSLAM
An implementation of Hybrid Metric Topological SLAM (HMT-SLAM).
Definition: CHMTSLAM.h:68
mrpt::hmtslam::CHMTSLAM::generatePoseID
static TPoseID generatePoseID()
Generates a new and unique pose ID.
Definition: CHMTSLAM_main.cpp:533
mrpt::hmtslam::CHMTSLAM::m_topLCdets
std::deque< CTopLCDetectorBase * > m_topLCdets
The list of LC modules in operation - initialized by "initializeEmptyMap" or "loadState".
Definition: CHMTSLAM.h:316
mrpt::hmtslam::CLSLAM_RBPF_2DLASER::findTPathBinIntoSet
int findTPathBinIntoSet(TPathBin &desiredBin, std::deque< TPathBin > &theSet)
Checks if a given "TPathBin" element is already into a set of them, and return its index (first one i...
Definition: CHMTSLAM_LSLAM_RBPF_2DLASER.cpp:764
mrpt::hmtslam::CHMTSLAM::m_hThread_TBI
std::thread m_hThread_TBI
Definition: CHMTSLAM.h:268
CTopLCDetector_FabMap.h
mrpt::opengl::COpenGLScene
This class allows the user to create, load, save, and render 3D scenes using OpenGL primitives.
Definition: COpenGLScene.h:59
mrpt::hmtslam::CHMTSLAM::TOptions::random_seed
int random_seed
0 means randomize, use any other value to have repetitive experiments.
Definition: CHMTSLAM.h:497
mrpt::slam::TKLDParams
Option set for KLD algorithm.
Definition: TKLDParams.h:20
CThreadSafeQueue.h
mrpt::hmtslam::CLSLAMAlgorithmBase::processOneLMH
virtual void processOneLMH(CLocalMetricHypothesis *LMH, const mrpt::obs::CActionCollection::Ptr &act, const mrpt::obs::CSensoryFrame::Ptr &sf)=0
Main entry point from HMT-SLAM: process some actions & observations.
mrpt::hmtslam::CHMTSLAM::TOptions::dumpToTextStream
void dumpToTextStream(std::ostream &out) const override
This method should clearly display all the contents of the structure in textual form,...
Definition: CHMTSLAM_main.cpp:332
CTopLCDetector_GridMatching.h
mrpt::hmtslam::CHMTSLAM::TOptions::stds_Q_no_odo
mrpt::math::CVectorFloat stds_Q_no_odo
A 3-length vector with the std.
Definition: CHMTSLAM.h:483
HMT_SLAM_common.h
obj
GLsizei GLsizei GLuint * obj
Definition: glext.h:4070
mrpt::hmtslam::CHMTSLAM::thread_LSLAM
void thread_LSLAM()
The function for the "Local SLAM" thread.
Definition: CHMTSLAM_LSLAM.cpp:46
mrpt::hmtslam::CLSLAM_RBPF_2DLASER::TPathBin::phi
std::vector< int > phi
Definition: CHMTSLAM.h:618
mrpt::hmtslam::CHMTSLAM::generateLogFiles
void generateLogFiles(unsigned int nIteration)
Called from LSLAM thread when log files must be created.
Definition: CHMTSLAM_LOG.cpp:42
mrpt::hmtslam::CHMTSLAM::TMessageLSLAMfromTBI::TBI_info
Definition: CHMTSLAM.h:137
mrpt::aligned_std_map
std::map< KEY, VALUE, std::less< KEY >, mrpt::aligned_allocator_cpp11< std::pair< const KEY, VALUE > >> aligned_std_map
Definition: aligned_std_map.h:17
mrpt::hmtslam::CHMTSLAM::generateUniqueAreaLabel
static std::string generateUniqueAreaLabel()
Generates a new and unique area textual label (currently this generates "0","1",.....
Definition: CHMTSLAM_main.cpp:525
CICP.h
int64_t
__int64 int64_t
Definition: rptypes.h:49
mrpt::hmtslam::CHMTSLAM::lsmRBPF_2DLASER
@ lsmRBPF_2DLASER
Definition: CHMTSLAM.h:232
mrpt::hmtslam::CLSLAMAlgorithmBase::prediction_and_update_pfAuxiliaryPFOptimal
virtual void prediction_and_update_pfAuxiliaryPFOptimal(CLocalMetricHypothesis *LMH, const mrpt::obs::CActionCollection *action, const mrpt::obs::CSensoryFrame *observation, const bayes::CParticleFilter::TParticleFilterOptions &PF_options)=0
The PF algorithm implementation.
mrpt::obs::CActionCollection
Declares a class for storing a collection of robot actions.
Definition: CActionCollection.h:28
mrpt
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
Definition: CKalmanFilterCapable.h:30
aligned_std_map.h
mrpt::hmtslam::CHMTSLAM::TMessageLSLAMfromTBI::Ptr
std::shared_ptr< TMessageLSLAMfromTBI > Ptr
Definition: CHMTSLAM.h:130
mrpt::hmtslam::CHMTSLAM::getNextObjectFromInputQueue
mrpt::serialization::CSerializable::Ptr getNextObjectFromInputQueue()
Used from the LSLAM thread to retrieve the next object from the queue.
Definition: CHMTSLAM_main.cpp:387
mrpt::hmtslam::CHMTSLAM::m_topLCdets_cs
std::mutex m_topLCdets_cs
The critical section for accessing m_topLCdets.
Definition: CHMTSLAM.h:319
mrpt::hmtslam::CHMTSLAM::m_nextPoseID
static TPoseID m_nextPoseID
Definition: CHMTSLAM.h:356
mrpt::hmtslam::CHMTSLAM::pushAction
void pushAction(const mrpt::obs::CActionCollection::Ptr &acts)
Here the user can enter an action into the system (will go to the SLAM process).
Definition: CHMTSLAM_main.cpp:174
THROW_EXCEPTION
#define THROW_EXCEPTION(msg)
Definition: exceptions.h:41
mrpt::hmtslam::CHMTSLAM::m_nextAreaLabel
static int64_t m_nextAreaLabel
Definition: CHMTSLAM.h:355
mrpt::hmtslam::CLSLAM_RBPF_2DLASER::TPathBin::dumpToStdOut
void dumpToStdOut() const
For debugging purposes!
Definition: CHMTSLAM_LSLAM_RBPF_2DLASER.cpp:689
CActionCollection.h
mrpt::hmtslam::CHMTSLAM::TMessageLSLAMfromTBI::loopClosureData
std::map< CHMHMapNode::TNodeID, TBI_info > loopClosureData
The meat is here: only feasible loop closures from "cur_area" are included here, with associated data...
Definition: CHMTSLAM.h:154
mrpt::hmtslam::CHMTSLAM::loadState
bool loadState(mrpt::serialization::CArchive &in)
Load the state of the whole HMT-SLAM framework from some binary stream (e.g.
Definition: CHMTSLAM_main.cpp:593
mrpt::hmtslam::CHMTSLAM::TOptions::LOG_OUTPUT_DIR
std::string LOG_OUTPUT_DIR
[LOGGING] If it is not an empty string (""), a directory with that name will be created and log files...
Definition: CHMTSLAM.h:448
mrpt::serialization::CArchive
Virtual base class for "archives": classes abstracting I/O streams.
Definition: CArchive.h:48
mrpt::hmtslam::CLSLAM_RBPF_2DLASER::processOneLMH
void processOneLMH(CLocalMetricHypothesis *LMH, const mrpt::obs::CActionCollection::Ptr &act, const mrpt::obs::CSensoryFrame::Ptr &sf)
Main entry point from HMT-SLAM: process some actions & observations.
Definition: CHMTSLAM_LSLAM_RBPF_2DLASER.cpp:59
name
GLuint const GLchar * name
Definition: glext.h:4054
source
GLsizei GLsizei GLchar * source
Definition: glext.h:4082
mrpt::hmtslam::CHMTSLAM::m_map
CHierarchicalMHMap m_map
The hiearchical, multi-hypothesis graph-based map.
Definition: CHMTSLAM.h:416
mrpt::maps::TSetOfMetricMapInitializers
A set of TMetricMapInitializer structures, passed to the constructor CMultiMetricMap::CMultiMetricMap...
Definition: TMetricMapInitializer.h:91
mrpt::hmtslam::CHMTSLAM::TOptions::KLD_params
mrpt::slam::TKLDParams KLD_params
Definition: CHMTSLAM.h:493
mrpt::hmtslam::CLSLAM_RBPF_2DLASER::auxiliarComputeObservationLikelihood
static double auxiliarComputeObservationLikelihood(const mrpt::bayes::CParticleFilter::TParticleFilterOptions &PF_options, const mrpt::bayes::CParticleFilterCapable *obj, size_t particleIndexForMap, const mrpt::obs::CSensoryFrame *observation, const mrpt::poses::CPose2D *x)
Auxiliary function that evaluates the likelihood of an observation, given a robot pose,...
Definition: CHMTSLAM_LSLAM_RBPF_2DLASER.cpp:672
CLocalMetricHypothesis.h
mrpt::obs::CSensoryFrame
Declares a class for storing a "sensory frame", a set of "observations" taken by the robot approximat...
Definition: CSensoryFrame.h:54
mrpt::serialization::CMessage
A class that contain generic messages, that can be sent and received from a "CClientTCPSocket" object...
Definition: CMessage.h:29
mrpt::hmtslam::CHMTSLAM::perform_TLC
void perform_TLC(CLocalMetricHypothesis &LMH, const CHMHMapNode::TNodeID areaInLMH, const CHMHMapNode::TNodeID areaLoopClosure, const mrpt::poses::CPose3DPDFGaussian &pose1wrt2)
Topological Loop Closure: Performs all the required operations to close a loop between two areas whic...
Definition: CHMTSLAM_perform_TLC.cpp:34
mrpt::hmtslam::CHMTSLAM::TMessageLSLAMfromTBI::TBI_info::delta_new_cur
mrpt::poses::CPose3DPDFSOG delta_new_cur
Depending on the loop-closure engine, an guess of the relative pose of "area_new" relative to "cur_ar...
Definition: CHMTSLAM.h:148
mrpt::hmtslam::CHMTSLAM::getAs3DScene
void getAs3DScene(mrpt::opengl::COpenGLScene &outScene)
Gets a 3D representation of the current state of the whole mapping framework.
Definition: CHMTSLAM_main.cpp:541
mrpt::hmtslam::CHMTSLAM::loadOptions
void loadOptions(const std::string &configFile)
Loads the options from a config file.
Definition: CHMTSLAM_main.cpp:254
mrpt::hmtslam::CHMTSLAM::TOptions::TLC_detectors
std::vector< std::string > TLC_detectors
A list of topological loop-closure detectors to use: can be one or more from this list: 'gridmaps': O...
Definition: CHMTSLAM.h:504
mrpt::hmtslam::CHMTSLAM::loopClosureDetector_factory
CTopLCDetectorBase * loopClosureDetector_factory(const std::string &name)
The class factory for topological loop closure detectors.
Definition: CHMTSLAM_main.cpp:567
mrpt::hmtslam::CHMTSLAM::isInputQueueEmpty
bool isInputQueueEmpty()
Returns true if the input queue is empty (Note that the queue must not be empty to the user to enqueu...
Definition: CHMTSLAM_main.cpp:360
mrpt::hmtslam::CHMTSLAM::TMessageLSLAMfromAA::dumpToConsole
void dumpToConsole() const
for debugging only
Definition: CHMTSLAM_AA.cpp:119
mrpt::hmtslam::CHMTSLAM::TMessageLSLAMfromAA::partitions
std::vector< TPoseIDList > partitions
Definition: CHMTSLAM.h:103
mrpt::bayes::CParticleFilterCapable
This virtual class defines the interface that any particles based PDF class must implement in order t...
Definition: CParticleFilterCapable.h:33
mrpt::hmtslam::CLSLAMAlgorithmBase::prediction_and_update_pfOptimalProposal
virtual void prediction_and_update_pfOptimalProposal(CLocalMetricHypothesis *LMH, const mrpt::obs::CActionCollection *action, const mrpt::obs::CSensoryFrame *observation, const bayes::CParticleFilter::TParticleFilterOptions &PF_options)=0
The PF algorithm implementation.
mrpt::hmtslam::CHMTSLAM::TOptions::TLC_fabmap_options
CTopLCDetector_FabMap::TOptions TLC_fabmap_options
Options passed to this TLC constructor.
Definition: CHMTSLAM.h:509
mrpt::hmtslam::CHMTSLAM::LSLAM_process_message
void LSLAM_process_message(const mrpt::serialization::CMessage &msg)
Auxiliary method within thread_LSLAM.
Definition: CHMTSLAM_LSLAM.cpp:282
mrpt::hmtslam::TMapPoseID2Pose3D
mrpt::aligned_std_map< TPoseID, mrpt::poses::CPose3D > TMapPoseID2Pose3D
Definition: CLocalMetricHypothesis.h:33
COutputLogger.h
COpenGLScene.h
mrpt::hmtslam::CHMTSLAM::TOptions::MIN_ODOMETRY_STD_PHI
float MIN_ODOMETRY_STD_PHI
[LSLAM] Minimum uncertainty (1 sigma, rads) in phi for odometry increments (Default=0)
Definition: CHMTSLAM.h:468
mrpt::config::CConfigFileBase
This class allows loading and storing values and vectors of different types from a configuration text...
Definition: config/CConfigFileBase.h:44
mrpt::hmtslam::CHMTSLAM::m_map_cs
std::mutex m_map_cs
Critical section for accessing m_map.
Definition: CHMTSLAM.h:249
mrpt::poses::CPose2D
A class used to store a 2D pose, including the 2D coordinate point and a heading (phi) angle.
Definition: CPose2D.h:40
mrpt::hmtslam::CHMTSLAM::pushObservations
void pushObservations(const mrpt::obs::CSensoryFrame::Ptr &sf)
Here the user can enter observations into the system (will go to the SLAM process).
Definition: CHMTSLAM_main.cpp:192
mrpt::hmtslam::CHMHMapNode::TNodeID
mrpt::graphs::TNodeID TNodeID
The type of the IDs of nodes.
Definition: CHMHMapNode.h:47
mrpt::hmtslam::CHMTSLAM::initializeEmptyMap
void initializeEmptyMap()
Initializes the whole HMT-SLAM framework, reseting to an empty map (It also clears the logs directory...
Definition: CHMTSLAM_main.cpp:405
index
GLuint index
Definition: glext.h:4054
mrpt::hmtslam::CHMTSLAM::TOptions::LOG_FREQUENCY
int LOG_FREQUENCY
[LOGGING] One SLAM iteration out of "LOGGING_logFrequency", a log file will be generated.
Definition: CHMTSLAM.h:451
mrpt::hmtslam::CHMTSLAM::areaAbstraction
static TMessageLSLAMfromAA::Ptr areaAbstraction(CLocalMetricHypothesis *LMH, const TPoseIDList &newPoseIDs)
The Area Abstraction (AA) method, invoked from LSLAM.
Definition: CHMTSLAM_AA.cpp:32
mrpt::hmtslam::CLSLAMAlgorithmBase::m_parent
mrpt::safe_ptr< CHMTSLAM > m_parent
Definition: CHMTSLAM.h:522
mrpt::config::CLoadableOptions
This is a virtual base class for sets of options than can be loaded from and/or saved to configuratio...
Definition: config/CLoadableOptions.h:28
mrpt::serialization::CSerializable
The virtual base class which provides a unified interface for all persistent objects in MRPT.
Definition: CSerializable.h:32
mrpt::hmtslam::CHMTSLAM::TOptions::TOptions
TOptions()
Initialization of default params.
Definition: CHMTSLAM_main.cpp:264
mrpt::hmtslam::CHMTSLAM::m_LMHs_cs
std::mutex m_LMHs_cs
Critical section for accessing m_LMHs.
Definition: CHMTSLAM.h:252
mrpt::hmtslam::CLSLAMAlgorithmBase
Virtual base for local SLAM methods, used in mrpt::slam::CHMTSLAM.
Definition: CHMTSLAM.h:517
mrpt::hmtslam::CHMTSLAM::clearInputQueue
void clearInputQueue()
Empty the input queue.
Definition: CHMTSLAM_main.cpp:157
mrpt::hmtslam::CTopLCDetector_FabMap::TOptions
Options for a TLC-detector of type FabMap, used from CHMTSLAM.
Definition: CTopLCDetector_FabMap.h:55
mrpt::hmtslam::CHMTSLAM::TMessageLSLAMfromAA::Ptr
std::shared_ptr< TMessageLSLAMfromAA > Ptr
Definition: CHMTSLAM.h:100
mrpt::hmtslam::CLSLAM_RBPF_2DLASER::TPathBin::y
std::vector< int > y
Definition: CHMTSLAM.h:618
mrpt::hmtslam::CLSLAM_RBPF_2DLASER::TPathBin::TPathBin
TPathBin()
Definition: CHMTSLAM.h:617
mrpt::hmtslam::CHMTSLAM::saveState
bool saveState(mrpt::serialization::CArchive &out) const
Save the state of the whole HMT-SLAM framework to some binary stream (e.g.
Definition: CHMTSLAM_main.cpp:580
mrpt::hmtslam::CHMTSLAM::TOptions::SLAM_MIN_DIST_BETWEEN_OBS
float SLAM_MIN_DIST_BETWEEN_OBS
[LSLAM] Minimum distance (and heading) difference between observations inserted in the map.
Definition: CHMTSLAM.h:460
mrpt::hmtslam::CHMTSLAM::m_registeredLCDetectors
std::map< std::string, TLopLCDetectorFactory > m_registeredLCDetectors
Definition: CHMTSLAM.h:312
mrpt::hmtslam::CHMTSLAM::m_options
mrpt::hmtslam::CHMTSLAM::TOptions m_options
mrpt::system::COutputLogger
Versatile class for consistent logging and management of output messages.
Definition: system/COutputLogger.h:117
mrpt::hmtslam::CHMTSLAM::TOptions::pf_options
bayes::CParticleFilter::TParticleFilterOptions pf_options
These params are used from every LMH object.
Definition: CHMTSLAM.h:492
mrpt::hmtslam::CHMTSLAM::TOptions::VIEW3D_AREA_SPHERES_RADIUS
float VIEW3D_AREA_SPHERES_RADIUS
[VIEW3D] The radius of the areas' spheres.
Definition: CHMTSLAM.h:476
mrpt::hmtslam::CHMTSLAM::pushObservation
void pushObservation(const mrpt::obs::CObservation::Ptr &obs)
Here the user can enter an observation into the system (will go to the SLAM process).
Definition: CHMTSLAM_main.cpp:210
TKLDParams.h
mrpt::hmtslam::CHMTSLAM::TOptions::TLC_grid_options
CTopLCDetector_GridMatching::TOptions TLC_grid_options
Options passed to this TLC constructor.
Definition: CHMTSLAM.h:507
mrpt::hmtslam::TPoseID
uint64_t TPoseID
An integer number uniquely identifying each robot pose stored in HMT-SLAM.
Definition: HMT_SLAM_common.h:66
mrpt::hmtslam::CHMTSLAM::m_LSLAM_queue
CMessageQueue m_LSLAM_queue
Definition: CHMTSLAM.h:164
mrpt::hmtslam::CLSLAMAlgorithmBase::~CLSLAMAlgorithmBase
virtual ~CLSLAMAlgorithmBase()
Destructor.
Definition: CHMTSLAM.h:530
mrpt::hmtslam::THypothesisID
int64_t THypothesisID
An integer number uniquely identifying each of the concurrent hypotheses for the robot topological pa...
Definition: HMT_SLAM_common.h:61
mrpt::hmtslam::CHMTSLAM::TMessageLSLAMfromAA::hypothesisID
THypothesisID hypothesisID
The hypothesis ID (LMH) for these results.
Definition: CHMTSLAM.h:102
mrpt::hmtslam::CHMTSLAM::~CHMTSLAM
virtual ~CHMTSLAM()
Destructor.
Definition: CHMTSLAM_main.cpp:87
mrpt::hmtslam::CLSLAM_RBPF_2DLASER::~CLSLAM_RBPF_2DLASER
virtual ~CLSLAM_RBPF_2DLASER()
Destructor.
Definition: CHMTSLAM_LSLAM_RBPF_2DLASER.cpp:43
mrpt::hmtslam::CLSLAM_RBPF_2DLASER::TPathBin::x
std::vector< int > x
Definition: CHMTSLAM.h:618
mrpt::hmtslam::CLSLAMAlgorithmBase::CLSLAMAlgorithmBase
CLSLAMAlgorithmBase(CHMTSLAM *parent)
Constructor.
Definition: CHMTSLAM.h:527
DEFINE_SERIALIZABLE
#define DEFINE_SERIALIZABLE(class_name)
This declaration must be inserted in all CSerializable classes definition, within the class declarati...
Definition: CSerializable.h:102
mrpt::hmtslam::CHMTSLAM::CHMTSLAM
CHMTSLAM()
Default constructor.
Definition: CHMTSLAM_main.cpp:56
mrpt::hmtslam::CHMTSLAM::m_nextHypID
static THypothesisID m_nextHypID
Definition: CHMTSLAM.h:357
mrpt::hmtslam::CHMTSLAM::m_terminationFlag_3D_viewer
bool m_terminationFlag_3D_viewer
Definition: CHMTSLAM.h:343
mrpt::hmtslam::CHMTSLAM::m_inputQueue_cs
std::mutex m_inputQueue_cs
Critical section for accessing m_inputQueue.
Definition: CHMTSLAM.h:246
mrpt::hmtslam::CHMTSLAM::TOptions::SLAM_METHOD
TLSlamMethod SLAM_METHOD
[LSLAM] The method to use for local SLAM
Definition: CHMTSLAM.h:455
mrpt::hmtslam::CHMTSLAM::TMessageLSLAMfromAA
Message definition:
Definition: CHMTSLAM.h:98
mrpt::hmtslam::CHMTSLAM::TMessageLSLAMfromTBI::TBI_info::log_lik
double log_lik
Log likelihood for this loop-closure.
Definition: CHMTSLAM.h:141
mrpt::hmtslam::CLSLAM_RBPF_2DLASER::TPathBin
Auxiliary structure.
Definition: CHMTSLAM.h:615
mrpt::hmtslam::CHMTSLAM::m_terminationFlag_TBI
bool m_terminationFlag_TBI
Definition: CHMTSLAM.h:342
mrpt::hmtslam::CHMTSLAM::LSLAM_process_message_from_AA
void LSLAM_process_message_from_AA(const TMessageLSLAMfromAA &myMsg)
No critical section locks are assumed at the entrance of this method.
Definition: CHMTSLAM_LSLAM.cpp:312
mrpt::hmtslam::CHMTSLAM::m_hThread_LSLAM
std::thread m_hThread_LSLAM
Threads handles.
Definition: CHMTSLAM.h:268
mrpt::hmtslam::CHMTSLAM::TMessageLSLAMtoTBI::Ptr
std::shared_ptr< TMessageLSLAMtoTBI > Ptr
Definition: CHMTSLAM.h:116
mrpt::containers::list_searchable< CHMHMapNode::TNodeID >
mrpt::hmtslam::CHMTSLAM::TOptions
A variety of options and configuration params (private, use loadOptions).
Definition: CHMTSLAM.h:434
mrpt::hmtslam::CHMTSLAM::TLopLCDetectorFactory
CTopLCDetectorBase *(*)(CHMTSLAM *) TLopLCDetectorFactory
Definition: CHMTSLAM.h:310
mrpt::hmtslam::CLSLAM_RBPF_2DLASER::CLSLAM_RBPF_2DLASER
CLSLAM_RBPF_2DLASER(CHMTSLAM *parent)
Constructor.
Definition: CHMTSLAM_LSLAM_RBPF_2DLASER.cpp:38
in
GLuint in
Definition: glext.h:7274
mrpt::hmtslam::CHMTSLAM::CHMTSLAM
CHMTSLAM(const CHMTSLAM &)
Definition: CHMTSLAM.h:366
mrpt::hmtslam::CHMTSLAM::TMessageLSLAMfromTBI::hypothesisID
THypothesisID hypothesisID
The hypothesis ID (LMH) for these results.
Definition: CHMTSLAM.h:132
string
GLsizei const GLchar ** string
Definition: glext.h:4101
mrpt::hmtslam::CHMTSLAM::TLSlamMethod
TLSlamMethod
Definition: CHMTSLAM.h:230
mrpt::hmtslam::CHMTSLAM::TMessageLSLAMtoTBI::LMH
CLocalMetricHypothesis * LMH
The LMH.
Definition: CHMTSLAM.h:118
mrpt::hmtslam::CHMTSLAM::inputQueueSize
size_t inputQueueSize()
Returns the number of objects waiting for processing in the input queue.
Definition: CHMTSLAM_main.cpp:374
mrpt::hmtslam::CHMTSLAM::TOptions::SLAM_MIN_HEADING_BETWEEN_OBS
float SLAM_MIN_HEADING_BETWEEN_OBS
Definition: CHMTSLAM.h:460
mrpt::hmtslam::CHMTSLAM::m_LMHs
mrpt::aligned_std_map< THypothesisID, CLocalMetricHypothesis > m_LMHs
The list of LMHs at each instant.
Definition: CHMTSLAM.h:418
mrpt::hmtslam::TPoseIDList
std::vector< TPoseID > TPoseIDList
Definition: HMT_SLAM_common.h:70
mrpt::hmtslam::CHMTSLAM::m_terminateThreads
bool m_terminateThreads
Termination flag for signaling all threads to terminate.
Definition: CHMTSLAM.h:338
mrpt::hmtslam::CHMTSLAM::TMessageLSLAMtoTBI
Message definition:
Definition: CHMTSLAM.h:114
mrpt::hmtslam::CHMTSLAM::thread_3D_viewer
void thread_3D_viewer()
The function for the "3D viewer" thread.
Definition: CHMTSLAM_3D_viewer.cpp:31
mrpt::obs::CActionCollection::Ptr
std::shared_ptr< CActionCollection > Ptr
Definition: CActionCollection.h:30
mrpt::hmtslam::CHierarchicalMHMap
The most high level class for storing hybrid, multi-hypothesis maps in a graph-based model.
Definition: CHierarchicalMHMap.h:29
CMessage.h
mrpt::hmtslam::CTopLCDetectorBase
The virtual base class for Topological Loop-closure Detectors; used in HMT-SLAM.
Definition: CTopLCDetectorBase.h:26
mrpt::bayes::CParticleFilter::TParticleFilterOptions
The configuration of a particle filter.
Definition: CParticleFilter.h:102
y
GLenum GLint GLint y
Definition: glext.h:3538
mrpt::hmtslam::CLSLAM_RBPF_2DLASER::m_insertNewRobotPose
bool m_insertNewRobotPose
For use within PF callback methods.
Definition: CHMTSLAM.h:611
mrpt::hmtslam::CHMTSLAM::TMessageLSLAMfromTBI::TBI_info::TBI_info
TBI_info()
Definition: CHMTSLAM.h:139
mrpt::safe_ptr
A wrapper class for pointers that can be safely copied with "=" operator without problems.
Definition: safe_pointers.h:71
mrpt::hmtslam::CLSLAM_RBPF_2DLASER::loadTPathBinFromPath
void loadTPathBinFromPath(TPathBin &outBin, TMapPoseID2Pose3D *path=nullptr, mrpt::poses::CPose2D *newPose=nullptr)
Fills out a "TPathBin" variable, given a path hypotesis and (if not set to nullptr) a new pose append...
Definition: CHMTSLAM_LSLAM_RBPF_2DLASER.cpp:709
x
GLenum GLint x
Definition: glext.h:3538
mrpt::hmtslam::CHMTSLAM::TOptions::VIEW3D_AREA_SPHERES_HEIGHT
float VIEW3D_AREA_SPHERES_HEIGHT
[VIEW3D] The height of the areas' spheres.
Definition: CHMTSLAM.h:472
mrpt::system::COutputLogger::COutputLogger
COutputLogger()
Default class constructor.
Definition: COutputLogger.cpp:59
mrpt::hmtslam::CHMTSLAM::m_hThread_3D_viewer
std::thread m_hThread_3D_viewer
Definition: CHMTSLAM.h:268
mrpt::hmtslam::CHMTSLAM::m_inputQueue
std::queue< mrpt::serialization::CSerializable::Ptr > m_inputQueue
The queue of pending actions/observations supplied by the user waiting for being processed.
Definition: CHMTSLAM.h:243
mrpt::hmtslam::CLSLAM_RBPF_2DLASER::particlesEvaluator_AuxPFOptimal
static double particlesEvaluator_AuxPFOptimal(const mrpt::bayes::CParticleFilter::TParticleFilterOptions &PF_options, const mrpt::bayes::CParticleFilterCapable *obj, size_t index, const void *action, const void *observation)
Auxiliary function used in "prediction_and_update_pfAuxiliaryPFOptimal".
Definition: CHMTSLAM_LSLAM_RBPF_2DLASER.cpp:578
mrpt::hmtslam::CHMTSLAM::operator=
const CHMTSLAM & operator=(const CHMTSLAM &)
Definition: CHMTSLAM.h:370
mrpt::containers::CThreadSafeQueue< mrpt::serialization::CMessage >
mrpt::hmtslam::CHMTSLAM::m_terminationFlag_LSLAM
bool m_terminationFlag_LSLAM
Threads termination flags:
Definition: CHMTSLAM.h:342



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