Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #ifndef POINT_TO_PLANE_WITH_COV_ERROR_MINIMIZER_H
00037 #define POINT_TO_PLANE_WITH_COV_ERROR_MINIMIZER_H
00038
00039 #include "PointMatcher.h"
00040 #include "ErrorMinimizersImpl.h"
00041
00042 template<typename T>
00043 struct PointToPlaneWithCovErrorMinimizer: public PointToPlaneErrorMinimizer<T>
00044 {
00045 typedef PointMatcherSupport::Parametrizable Parametrizable;
00046 typedef PointMatcherSupport::Parametrizable P;
00047 typedef Parametrizable::Parameters Parameters;
00048 typedef Parametrizable::ParameterDoc ParameterDoc;
00049 typedef Parametrizable::ParametersDoc ParametersDoc;
00050
00051 typedef typename PointMatcher<T>::DataPoints DataPoints;
00052 typedef typename PointMatcher<T>::Matches Matches;
00053 typedef typename PointMatcher<T>::OutlierWeights OutlierWeights;
00054 typedef typename PointMatcher<T>::ErrorMinimizer ErrorMinimizer;
00055 typedef typename PointMatcher<T>::ErrorMinimizer::ErrorElements ErrorElements;
00056 typedef typename PointMatcher<T>::TransformationParameters TransformationParameters;
00057 typedef typename PointMatcher<T>::Vector Vector;
00058 typedef typename PointMatcher<T>::Matrix Matrix;
00059
00060 virtual inline const std::string name()
00061 {
00062 return "PointToPlaneWithCovErrorMinimizer";
00063 }
00064
00065 inline static const std::string description()
00066 {
00067 return "Point-to-plane error (or point-to-line in 2D). Based on \\cite{Chen1991Point2Plane}. Covariance estimation based on \\cite{Censi2007ICPCovariance}.";
00068 }
00069
00070 static inline const ParametersDoc availableParameters()
00071 {
00072 return {
00073 {"force2D", "If set to true(1), the minimization will be force to give a solution in 2D (i.e., on the XY-plane) even with 3D inputs.", "0", "0", "1", &P::Comp<bool>},
00074 {"sensorStdDev", "sensor standard deviation", "0.01", "0.", "inf", &P::Comp<T>}
00075 };
00076 }
00077
00078 const T sensorStdDev;
00079 Matrix covMatrix;
00080
00081 PointToPlaneWithCovErrorMinimizer(const Parameters& params = Parameters());
00082 virtual TransformationParameters compute(const ErrorElements& mPts);
00083 virtual Matrix getCovariance() const;
00084 Matrix estimateCovariance(const ErrorElements& mPts, const TransformationParameters& transformation);
00085 };
00086
00087 #endif