我正在为相同的场景运行 ICP,一次以毫米为单位使用云,其他以米为单位。
当前正在尝试运行 pcl::IteraticeClosestPointsWithNormals:
// for meter scenario
pcl::IterativeClosestPointWithNormals<pcl::PointNormal, pcl::PointNormal> icp;
icp.setMaximumIterations (iterations);
icp.setInputSource (cloud_template_normals);
icp.setInputTarget (cloud_scene_normals);
icp.setMaxCorrespondenceDistance(0.5);
icp.setRANSACOutlierRejectionThreshold(0.025);
icp.align (*aligned_cloud);
对于限制器:
// for militiers scenario
pcl::IterativeClosestPointWithNormals<pcl::PointNormal, pcl::PointNormal> icp;
icp.setMaximumIterations (iterations);
icp.setInputSource (cloud_template_normals);
icp.setInputTarget (cloud_scene_normals);
icp.setMaxCorrespondenceDistance(500);
icp.setRANSACOutlierRejectionThreshold(25);
icp.setEuclideanFitnessEpsilon(icp.getEuclideanFitnessEpsilon() * 1000);
icp.setTransformationEpsilon(icp.getTransformationEpsilon() * 1000);
icp.align (*aligned_cloud)
有人遇到过类似的问题吗?还是我应该更改其他一些参数?对我来说,这看起来像是一个参数问题,但我无法确定是哪一个。表示一些距离/平移。至于轮换,无所谓。
第二个问题是 pcl::GeneralizedIteraticeClosestPoints 文档说
setTranslationGradientTolerance() Parameters [in] tolerance translation gradient threshold in meters
那么当云以毫米为单位时它是如何工作的呢?
对于GeneralizedIteraticeClosestPoints,我也会得到不同的结果,具体取决于云是毫米还是米