简体   繁体   English

PCL云注册

[英]PCL registration of clouds

I'm trying to pairwise register clouds to get a 3D template, but i get the warnings 我正在尝试成对注册云以获取3D模板,但我得到了警告

[pcl::SampleConsensusModelRegistration::computeSampleDistanceThreshold] Covariance matrix has NaN values! Is the input cloud finite?
[pcl::RandomSampleConsensus::computeModel] No samples could be selected!

followed by signal SIGSEGV, segmentation fault: 其次是信号SIGSEGV,分段故障:

0x00007ffff344114d in pcl::registration::TransformationEstimationSVD<pcl::PointXYZRGBA, pcl::PointXYZRGBA, float>::estimateRigidTransformation(pcl::ConstCloudIterator<pcl::PointXYZRGBA>&, pcl::ConstCloudIterator<pcl::PointXYZRGBA>&, Eigen::Matrix<float, 4, 4, 0, 4, 4>&) const ()

My code is: 我的代码是:

    registration->setInputSource(source);
    registration->setInputTarget(target);
    registration->setMaxCorrespondenceDistance(0.3);
    registration->setRANSACOutlierRejectionThreshold(0.00001);
    registration->setTransformationEpsilon(10e-6);
    registration->setMaximumIterations(400);
    registration->setRANSACIterations(10);
    CloudMapper::Cloud::Ptr c(new CloudMapper::Cloud);
    registration->align(*c);

Any ideas why the covariance matrix could have NaN values? 为什么协方差矩阵可能具有NaN值? The clouds are from different frames from a kinect stream. 云来自kinect流的不同帧。

It was indeed the CorrespondenceDistance. 它确实是CorrespondenceDistance。 My point clouds were in a different scale. 我的点云有不同的规模。 In the PCL documentation, the distances are in meters but my point clouds are in millimeters, so i need a correspondence distance *1000 在PCL文档中,距离以米为单位,但我的点云以毫米为单位,因此我需要一个对应距离* 1000

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM