Main MRPT website > C++ reference for MRPT 1.5.7
CMetricMapsAlignmentAlgorithm.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-2017, 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 CMetricMapsAlignmentAlgorithm_H
10 #define CMetricMapsAlignmentAlgorithm_H
11 
12 #include <mrpt/maps/CPointsMap.h>
13 #include <mrpt/poses/poses_frwds.h>
14 
16 
17 #include <mrpt/slam/link_pragmas.h>
18 
19 namespace mrpt
20 {
21 namespace slam
22 {
23  /** A base class for any algorithm able of maps alignment. There are two methods
24  * depending on an PDF or a single 2D Pose value is available as initial guess for the methods.
25  *
26  * \sa CPointsMap, \ingroup mrpt_slam_grp
27  */
28  class SLAM_IMPEXP CMetricMapsAlignmentAlgorithm : public mrpt::utils::COutputLogger
29  {
30  public:
31  CMetricMapsAlignmentAlgorithm() : mrpt::utils::COutputLogger("CMetricMapsAlignmentAlgorithm") {}
32  /** Dtor */
34 
35  /** The method for aligning a pair of metric maps, aligning only 2D + orientation.
36  * The meaning of some parameters and the kind of the maps to be aligned are implementation dependant,
37  * so look into the derived classes for instructions.
38  * The target is to find a PDF for the pose displacement between
39  * maps, <b>thus the pose of m2 relative to m1</b>. This pose
40  * is returned as a PDF rather than a single value.
41  *
42  * \param m1 [IN] The first map
43  * \param m2 [IN] The second map. The pose of this map respect to m1 is to be estimated.
44  * \param grossEst [IN] An initial gross estimation for the displacement. If a given algorithm doesn't need it, set to <code>CPose2D(0,0,0)</code> for example.
45  * \param runningTime [OUT] A pointer to a container for obtaining the algorithm running time in seconds, or NULL if you don't need it.
46  * \param info [OUT] See derived classes for details, or NULL if it isn't needed.
47  *
48  * \return A smart pointer to the output estimated pose PDF.
49  * \sa CICP
50  */
51  mrpt::poses::CPosePDFPtr Align(
52  const mrpt::maps::CMetricMap *m1,
53  const mrpt::maps::CMetricMap *m2,
54  const mrpt::poses::CPose2D &grossEst,
55  float *runningTime = NULL,
56  void *info = NULL );
57 
58  /** The virtual method for aligning a pair of metric maps, aligning only 2D + orientation.
59  * The meaning of some parameters are implementation dependant,
60  * so look at the derived classes for more details.
61  * The goal is to find a PDF for the pose displacement between
62  * maps, that is, <b>the pose of m2 relative to m1</b>. This pose
63  * is returned as a PDF rather than a single value.
64  *
65  * \note This method can be configurated with a "options" structure in the implementation classes.
66  *
67  * \param m1 [IN] The first map (MUST BE A COccupancyGridMap2D derived class)
68  * \param m2 [IN] The second map. (MUST BE A CPointsMap derived class) The pose of this map respect to m1 is to be estimated.
69  * \param initialEstimationPDF [IN] An initial gross estimation for the displacement.
70  * \param runningTime [OUT] A pointer to a container for obtaining the algorithm running time in seconds, or NULL if you don't need it.
71  * \param info [OUT] See derived classes for details, or NULL if it isn't needed.
72  *
73  * \return A smart pointer to the output estimated pose PDF.
74  * \sa CICP
75  */
76  virtual mrpt::poses::CPosePDFPtr AlignPDF(
77  const mrpt::maps::CMetricMap *m1,
78  const mrpt::maps::CMetricMap *m2,
79  const mrpt::poses::CPosePDFGaussian &initialEstimationPDF,
80  float *runningTime = NULL,
81  void *info = NULL ) = 0;
82 
83 
84  /** The method for aligning a pair of metric maps, aligning the full 6D pose.
85  * The meaning of some parameters and the kind of the maps to be aligned are implementation dependant,
86  * so look into the derived classes for instructions.
87  * The target is to find a PDF for the pose displacement between
88  * maps, <b>thus the pose of m2 relative to m1</b>. This pose
89  * is returned as a PDF rather than a single value.
90  *
91  * \param m1 [IN] The first map
92  * \param m2 [IN] The second map. The pose of this map respect to m1 is to be estimated.
93  * \param grossEst [IN] An initial gross estimation for the displacement. If a given algorithm doesn't need it, set to <code>CPose3D(0,0,0)</code> for example.
94  * \param runningTime [OUT] A pointer to a container for obtaining the algorithm running time in seconds, or NULL if you don't need it.
95  * \param info [OUT] See derived classes for details, or NULL if it isn't needed.
96  *
97  * \return A smart pointer to the output estimated pose PDF.
98  * \sa CICP
99  */
100  mrpt::poses::CPose3DPDFPtr Align3D(
101  const mrpt::maps::CMetricMap *m1,
102  const mrpt::maps::CMetricMap *m2,
103  const mrpt::poses::CPose3D &grossEst,
104  float *runningTime = NULL,
105  void *info = NULL );
106 
107  /** The virtual method for aligning a pair of metric maps, aligning the full 6D pose.
108  * The meaning of some parameters are implementation dependant,
109  * so look at the derived classes for more details.
110  * The goal is to find a PDF for the pose displacement between
111  * maps, that is, <b>the pose of m2 relative to m1</b>. This pose
112  * is returned as a PDF rather than a single value.
113  *
114  * \note This method can be configurated with a "options" structure in the implementation classes.
115  *
116  * \param m1 [IN] The first map (MUST BE A COccupancyGridMap2D derived class)
117  * \param m2 [IN] The second map. (MUST BE A CPointsMap derived class) The pose of this map respect to m1 is to be estimated.
118  * \param initialEstimationPDF [IN] An initial gross estimation for the displacement.
119  * \param runningTime [OUT] A pointer to a container for obtaining the algorithm running time in seconds, or NULL if you don't need it.
120  * \param info [OUT] See derived classes for details, or NULL if it isn't needed.
121  *
122  * \return A smart pointer to the output estimated pose PDF.
123  * \sa CICP
124  */
125  virtual mrpt::poses::CPose3DPDFPtr Align3DPDF(
126  const mrpt::maps::CMetricMap *m1,
127  const mrpt::maps::CMetricMap *m2,
128  const mrpt::poses::CPose3DPDFGaussian &initialEstimationPDF,
129  float *runningTime = NULL,
130  void *info = NULL ) = 0;
131 
132 
133  };
134 
135  } // End of namespace
136 } // End of namespace
137 
138 #endif
Declares a class that represents a Probability Density function (PDF) of a 2D pose ...
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
Declares a virtual base class for all metric maps storage classes.
A class used to store a 2D pose, including the 2D coordinate point and a heading (phi) angle...
Definition: CPose2D.h:36
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
Definition: CPose3D.h:72
A base class for any algorithm able of maps alignment.
backing_store_ptr info
Definition: jmemsys.h:170
Declares a class that represents a Probability Density function (PDF) of a 3D pose ...



Page generated by Doxygen 1.8.14 for MRPT 1.5.7 Git: 5902e14cc Wed Apr 24 15:04:01 2019 +0200 at lun oct 28 01:39:17 CET 2019