Main MRPT website > C++ reference for MRPT 1.9.9
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 #include <mrpt/poses/CPosePDF.h>
15 #include <mrpt/poses/CPose3DPDF.h>
16 
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
25  * for the methods.
26  *
27  * \sa CPointsMap, \ingroup mrpt_slam_grp
28  */
29 class CMetricMapsAlignmentAlgorithm : public mrpt::utils::COutputLogger
30 {
31  public:
33  : mrpt::utils::COutputLogger("CMetricMapsAlignmentAlgorithm")
34  {
35  }
36  /** Dtor */
38  /** The method for aligning a pair of metric maps, aligning only 2D +
39  * orientation.
40  * The meaning of some parameters and the kind of the maps to be aligned
41  * are implementation dependant,
42  * so look into the derived classes for instructions.
43  * The target is to find a PDF for the pose displacement between
44  * maps, <b>thus the pose of m2 relative to m1</b>. This pose
45  * is returned as a PDF rather than a single value.
46  *
47  * \param m1 [IN] The first map
48  * \param m2 [IN] The second map. The pose of this map respect to
49  * m1
50  * is
51  * to
52  * be estimated.
53  * \param grossEst [IN] An initial gross estimation for the
54  * displacement.
55  * If a given algorithm doesn't need it, set to <code>CPose2D(0,0,0)</code>
56  * for example.
57  * \param runningTime [OUT] A pointer to a container for obtaining the
58  * algorithm running time in seconds, or nullptr if you don't need it.
59  * \param info [OUT] See derived classes for details, or nullptr if
60  * it
61  * isn't needed.
62  *
63  * \return A smart pointer to the output estimated pose PDF.
64  * \sa CICP
65  */
68  const mrpt::poses::CPose2D& grossEst, float* runningTime = nullptr,
69  void* info = nullptr);
70 
71  /** The virtual method for aligning a pair of metric maps, aligning only 2D
72  * + orientation.
73  * The meaning of some parameters are implementation dependant,
74  * so look at the derived classes for more details.
75  * The goal is to find a PDF for the pose displacement between
76  * maps, that is, <b>the pose of m2 relative to m1</b>. This pose
77  * is returned as a PDF rather than a single value.
78  *
79  * \note This method can be configurated with a "options" structure in the
80  * implementation classes.
81  *
82  * \param m1 [IN] The first map (MUST BE A COccupancyGridMap2D
83  * derived
84  * class)
85  * \param m2 [IN] The second map. (MUST BE A CPointsMap derived
86  * class)
87  * The
88  * pose of this map respect to m1 is to be estimated.
89  * \param initialEstimationPDF [IN] An initial gross estimation for the
90  * displacement.
91  * \param runningTime [OUT] A pointer to a container for obtaining the
92  * algorithm running time in seconds, or nullptr if you don't need it.
93  * \param info [OUT] See derived classes for details, or nullptr if
94  * it
95  * isn't needed.
96  *
97  * \return A smart pointer to the output estimated pose PDF.
98  * \sa CICP
99  */
101  const mrpt::maps::CMetricMap* m1, const mrpt::maps::CMetricMap* m2,
102  const mrpt::poses::CPosePDFGaussian& initialEstimationPDF,
103  float* runningTime = nullptr, void* info = nullptr) = 0;
104 
105  /** The method for aligning a pair of metric maps, aligning the full 6D
106  * pose.
107  * The meaning of some parameters and the kind of the maps to be aligned
108  * are implementation dependant,
109  * so look into the derived classes for instructions.
110  * The target is to find a PDF for the pose displacement between
111  * maps, <b>thus the pose of m2 relative to m1</b>. This pose
112  * is returned as a PDF rather than a single value.
113  *
114  * \param m1 [IN] The first map
115  * \param m2 [IN] The second map. The pose of this map respect to
116  * m1
117  * is
118  * to
119  * be estimated.
120  * \param grossEst [IN] An initial gross estimation for the
121  * displacement.
122  * If a given algorithm doesn't need it, set to <code>CPose3D(0,0,0)</code>
123  * for example.
124  * \param runningTime [OUT] A pointer to a container for obtaining the
125  * algorithm running time in seconds, or nullptr if you don't need it.
126  * \param info [OUT] See derived classes for details, or nullptr if
127  * it
128  * isn't needed.
129  *
130  * \return A smart pointer to the output estimated pose PDF.
131  * \sa CICP
132  */
134  const mrpt::maps::CMetricMap* m1, const mrpt::maps::CMetricMap* m2,
135  const mrpt::poses::CPose3D& grossEst, float* runningTime = nullptr,
136  void* info = nullptr);
137 
138  /** The virtual method for aligning a pair of metric maps, aligning the full
139  * 6D pose.
140  * The meaning of some parameters are implementation dependant,
141  * so look at the derived classes for more details.
142  * The goal is to find a PDF for the pose displacement between
143  * maps, that is, <b>the pose of m2 relative to m1</b>. This pose
144  * is returned as a PDF rather than a single value.
145  *
146  * \note This method can be configurated with a "options" structure in the
147  * implementation classes.
148  *
149  * \param m1 [IN] The first map (MUST BE A COccupancyGridMap2D
150  * derived
151  * class)
152  * \param m2 [IN] The second map. (MUST BE A CPointsMap derived
153  * class)
154  * The
155  * pose of this map respect to m1 is to be estimated.
156  * \param initialEstimationPDF [IN] An initial gross estimation for the
157  * displacement.
158  * \param runningTime [OUT] A pointer to a container for obtaining the
159  * algorithm running time in seconds, or nullptr if you don't need it.
160  * \param info [OUT] See derived classes for details, or nullptr if
161  * it
162  * isn't needed.
163  *
164  * \return A smart pointer to the output estimated pose PDF.
165  * \sa CICP
166  */
168  const mrpt::maps::CMetricMap* m1, const mrpt::maps::CMetricMap* m2,
169  const mrpt::poses::CPose3DPDFGaussian& initialEstimationPDF,
170  float* runningTime = nullptr, void* info = nullptr) = 0;
171 };
172 
173 } // End of namespace
174 } // End of namespace
175 
176 #endif
mrpt::poses::CPosePDF::Ptr Align(const mrpt::maps::CMetricMap *m1, const mrpt::maps::CMetricMap *m2, const mrpt::poses::CPose2D &grossEst, float *runningTime=nullptr, void *info=nullptr)
The method for aligning a pair of metric maps, aligning only 2D + orientation.
mrpt::poses::CPose3DPDF::Ptr Align3D(const mrpt::maps::CMetricMap *m1, const mrpt::maps::CMetricMap *m2, const mrpt::poses::CPose3D &grossEst, float *runningTime=nullptr, void *info=nullptr)
The method for aligning a pair of metric maps, aligning the full 6D pose.
virtual mrpt::poses::CPose3DPDF::Ptr Align3DPDF(const mrpt::maps::CMetricMap *m1, const mrpt::maps::CMetricMap *m2, const mrpt::poses::CPose3DPDFGaussian &initialEstimationPDF, float *runningTime=nullptr, void *info=nullptr)=0
The virtual method for aligning a pair of metric maps, aligning the full 6D pose. ...
std::shared_ptr< CPosePDF > Ptr
Definition: CPosePDF.h:44
Declares a class that represents a Probability Density function (PDF) of a 2D pose ...
std::shared_ptr< CPose3DPDF > Ptr
Definition: CPose3DPDF.h:45
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
virtual mrpt::poses::CPosePDF::Ptr AlignPDF(const mrpt::maps::CMetricMap *m1, const mrpt::maps::CMetricMap *m2, const mrpt::poses::CPosePDFGaussian &initialEstimationPDF, float *runningTime=nullptr, void *info=nullptr)=0
The virtual method for aligning a pair of metric maps, aligning only 2D.
Declares a virtual base class for all metric maps storage classes.
Definition: CMetricMap.h:55
A class used to store a 2D pose, including the 2D coordinate point and a heading (phi) angle...
Definition: CPose2D.h:40
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
Definition: CPose3D.h:88
A base class for any algorithm able of maps alignment.
Declares a class that represents a Probability Density function (PDF) of a 3D pose ...



Page generated by Doxygen 1.8.14 for MRPT 1.9.9 Git: ae4571287 Thu Nov 23 00:06:53 2017 +0100 at dom oct 27 23:51:55 CET 2019