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 CMatrixDouble *in_rotationMatrix = NULL,
00070 CMatrixDouble *out_estimateCovariance = NULL,
00071 bool forceScaleToUnity = false );
00072
00088 bool leastSquareErrorRigidTransformation6DRANSAC(
00089 const CMetricMap::TMatchingPairList &in_correspondences,
00090 CPose3D &out_transformation,
00091 double &out_scale,
00092 vector_int &out_inliers_idx,
00093 CMatrixD *in_rotationMatrix = NULL,
00094 CMatrixD *out_estimateCovariance = NULL );
00095
00096
00105 bool leastSquareErrorRigidTransformation(
00106 CMetricMap::TMatchingPairList &in_correspondences,
00107 CPose2D &out_transformation,
00108 CMatrixD *out_estimateCovariance = NULL );
00109
00133 void robustRigidTransformation(
00134 mrpt::slam::CMetricMap::TMatchingPairList &in_correspondences,
00135 poses::CPosePDFSOG &out_transformation,
00136 float normalizationStd,
00137 unsigned int ransac_minSetSize = 3,
00138 unsigned int ransac_maxSetSize = 20,
00139 float ransac_mahalanobisDistanceThreshold = 3.0f,
00140 unsigned int ransac_nSimulations = 100,
00141 mrpt::slam::CMetricMap::TMatchingPairList *out_largestSubSet = NULL,
00142 bool ransac_fuseByCorrsMatch = true,
00143 float ransac_fuseMaxDiffXY = 0.01f,
00144 float ransac_fuseMaxDiffPhi = DEG2RAD(0.1f),
00145 bool ransac_algorithmForLandmarks = true
00146 );
00147
00148 }
00149
00150 }
00151
00152 #endif