I am a student, attempting to use voxel filtering to improve the speed of my point cloud registration.(PCL 1.13.0) Here's my voxel filter code:
pcl::PointCloud<pcl::PointXYZ>::Ptr filtered_cloud(new pcl::PointCloud<pcl::PointXYZ>);
pcl::ApproximateVoxelGrid<pcl::PointXYZ> approximate_voxel_filter;
approximate_voxel_filter.setLeafSize(0.2, 0.2, 0.2);
approximate_voxel_filter.setInputCloud(input_cloud);
approximate_voxel_filter.filter(*filtered_cloud);
std::cout << "Filtered cloud contains " << filtered_cloud->size()
<< " data points from room_scan2.pcd" << std::endl;
ndt.setTransformationEpsilon(0.01);
ndt.setStepSize(0.1);
ndt.setResolution(1.0);
However, it warns me:
Loaded 120021 data points from room_scan1.pcd Loaded 117463 data points from room_scan2.pcd Filtered cloud contains 117463 data points from room_scan2.pcd Filtered cloud saved as filtered_cloud.pcd [VoxelGridCovariance::filter] No voxels with a sufficient number of points. Grid will not be searchable. You can try reducing the min number of points required per voxel or increasing the voxel/leaf size [NormalDistributionsTransform::computeTransformation] Voxel grid is not searchable! Normal Distributions Transform has converged:0 score: 281.546
I tried to change parameters in setLeafSize from 0.001 to 1000. But the problem still exists. The filtered cloud have similar shape with origin one.
Although I still get my point cloud regitrated, does this problem influence the quality of point cloud registration? Besides, I wonder what is the problem is and how can I slove it?