0

我正在为相同的场景运行 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)

有人遇到过类似的问题吗?还是我应该更改其他一些参数?对我来说,这看起来像是一个参数问题,但我无法确定是哪一个。表示一些距离/平移。至于轮换,无所谓。

  1. 第二个问题是 pcl::GeneralizedIteraticeClosestPoints 文档说

     setTranslationGradientTolerance()
     Parameters
     [in]    tolerance   translation gradient threshold in meters
    

那么当云以毫米为单位时它是如何工作的呢?

对于GeneralizedIteraticeClosestPoints,我也会得到不同的结果,具体取决于云是毫米还是米

4

0 回答 0