Fixed backward compatibility error with libpointmatcher < 1.3.0

This commit is contained in:
matlabbe
2018-11-09 16:06:44 -05:00
parent 5159171bf3
commit c43bd6cd3f

View File

@@ -468,7 +468,11 @@ void RegistrationIcp::parseParameters(const ParametersMap & parameters)
params["maxDist"] = uNumber2Str(_maxCorrespondenceDistance); params["maxDist"] = uNumber2Str(_maxCorrespondenceDistance);
params["knn"] = uNumber2Str(_libpointmatcherKnn); params["knn"] = uNumber2Str(_libpointmatcherKnn);
params["epsilon"] = uNumber2Str(_libpointmatcherEpsilon); params["epsilon"] = uNumber2Str(_libpointmatcherEpsilon);
#if POINTMATCHER_VERSION_INT >= 10300
icp->matcher = PM::get().MatcherRegistrar.create("KDTreeMatcher", params); icp->matcher = PM::get().MatcherRegistrar.create("KDTreeMatcher", params);
#else
icp->matcher.reset(PM::get().MatcherRegistrar.create("KDTreeMatcher", params));
#endif
params.clear(); params.clear();
params["ratio"] = uNumber2Str(_libpointmatcherOutlierRatio); params["ratio"] = uNumber2Str(_libpointmatcherOutlierRatio);
@@ -482,12 +486,20 @@ void RegistrationIcp::parseParameters(const ParametersMap & parameters)
params.clear(); params.clear();
params["force2D"] = force3DoF()?"1":"0"; params["force2D"] = force3DoF()?"1":"0";
#if POINTMATCHER_VERSION_INT >= 10300
icp->errorMinimizer = PM::get().ErrorMinimizerRegistrar.create("PointToPlaneErrorMinimizer", params); icp->errorMinimizer = PM::get().ErrorMinimizerRegistrar.create("PointToPlaneErrorMinimizer", params);
#else
icp->errorMinimizer.reset(PM::get().ErrorMinimizerRegistrar.create("PointToPlaneErrorMinimizer", params));
#endif
params.clear(); params.clear();
} }
else else
{ {
#if POINTMATCHER_VERSION_INT >= 10300
icp->errorMinimizer = PM::get().ErrorMinimizerRegistrar.create("PointToPointErrorMinimizer"); icp->errorMinimizer = PM::get().ErrorMinimizerRegistrar.create("PointToPointErrorMinimizer");
#else
icp->errorMinimizer.reset(PM::get().ErrorMinimizerRegistrar.create("PointToPointErrorMinimizer"));
#endif
} }
icp->transformationCheckers.clear(); icp->transformationCheckers.clear();
@@ -961,8 +973,11 @@ Transform RegistrationIcp::computeTransformationImpl(
{ {
// temporary set PointToPointErrorMinimizer // temporary set PointToPointErrorMinimizer
PM::ICP & icpTmp = icp; PM::ICP & icpTmp = icp;
#if POINTMATCHER_VERSION_INT >= 10300
icpTmp.errorMinimizer = PM::get().ErrorMinimizerRegistrar.create("PointToPointErrorMinimizer"); icpTmp.errorMinimizer = PM::get().ErrorMinimizerRegistrar.create("PointToPointErrorMinimizer");
#else
icpTmp.errorMinimizer.reset(PM::get().ErrorMinimizerRegistrar.create("PointToPointErrorMinimizer"));
#endif
for(PM::OutlierFilters::iterator iter=icpTmp.outlierFilters.begin(); iter!=icpTmp.outlierFilters.end();) for(PM::OutlierFilters::iterator iter=icpTmp.outlierFilters.begin(); iter!=icpTmp.outlierFilters.end();)
{ {
if((*iter)->className.compare("SurfaceNormalOutlierFilter") == 0) if((*iter)->className.compare("SurfaceNormalOutlierFilter") == 0)