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 #ifndef ScanMatching_H
00029 #define ScanMatching_H
00030
00031 #include <mrpt/slam/CMetricMap.h>
00032
00033 namespace mrpt
00034 {
00035 namespace poses
00036 {
00037 class CPosePDFParticles;
00038 class CPosePDFGaussian;
00039 class CPosePDFSOG;
00040 }
00041
00045 namespace scan_matching
00046 {
00047 using namespace mrpt::poses;
00048 using namespace mrpt::slam;
00049 using namespace mrpt::math;
00050 using namespace mrpt::utils;
00051
00065 bool leastSquareErrorRigidTransformation6D(
00066 const CMetricMap::TMatchingPairList &in_correspondences,
00067 CPose3D &out_transformation,
00068 double &out_scale,
00069 CMatrixD *in_rotationMatrix = NULL,
00070 CMatrixD *out_estimateCovariance = NULL );
00071
00087 bool leastSquareErrorRigidTransformation6DRANSAC(
00088 const CMetricMap::TMatchingPairList &in_correspondences,
00089 CPose3D &out_transformation,
00090 double &out_scale,
00091 vector_int &out_inliers_idx,
00092 CMatrixD *in_rotationMatrix = NULL,
00093 CMatrixD *out_estimateCovariance = NULL );
00094
00095
00104 bool leastSquareErrorRigidTransformation(
00105 CMetricMap::TMatchingPairList &in_correspondences,
00106 CPose2D &out_transformation,
00107 CMatrixD *out_estimateCovariance = NULL );
00108
00132 void robustRigidTransformation(
00133 mrpt::slam::CMetricMap::TMatchingPairList &in_correspondences,
00134 poses::CPosePDFSOG &out_transformation,
00135 float normalizationStd,
00136 unsigned int ransac_minSetSize = 3,
00137 unsigned int ransac_maxSetSize = 20,
00138 float ransac_mahalanobisDistanceThreshold = 3.0f,
00139 unsigned int ransac_nSimulations = 100,
00140 mrpt::slam::CMetricMap::TMatchingPairList *out_largestSubSet = NULL,
00141 bool ransac_fuseByCorrsMatch = true,
00142 float ransac_fuseMaxDiffXY = 0.01f,
00143 float ransac_fuseMaxDiffPhi = DEG2RAD(0.1f),
00144 bool ransac_algorithmForLandmarks = true
00145 );
00146
00147 }
00148
00149 }
00150
00151 #endif