Point Cloud Library PCL: NDT problem with the container limit on time and solve

 

Foreword 

  In PCL library, in addition to the fine registration is the most commonly used algorithms and associated deformation ICP algorithm, such as GICP algorithm, the algorithm additionally contains the NDT (normal conversion), it is unnecessary to provide a better initial value, and speed faster than the ICP algorithm.

  Of course, also has some drawbacks: the convergence zone difference, discontinuous cost function and so on, NDT principle and other specific steps to view https://www.cnblogs.com/li-yao7758258/p/10705228.html , personal feel, this article written in more specific detail.

 

version

   PCL1.8.0

 

problem

  PCL two point cloud wrong container with a limited-time will appear in the use of NDT (Normal Distribution Transform).

               

 

Solution

  When setting the parameters, the resolution of the voxel transfer large, thereby enabling each voxel can have more than six points.

 

The reasons of

  From the point of view of the principle: the voxel resolution is too small, such that each voxel is calculated not reach the target covariance matrix segmentation point cloud points right.

  From the point of view of the code: with a variable ndt.h as target_cells_, it is of type VoxelGridCovariance, such action is divided into voxels, and the calculation of the covariance and centroid points within each voxel.

  When we set the resolution too small, the number of point clouds within the body of each element were unable to reach min_points_per_voxel_ set, so that target_cells_ is empty, it can not be initialized, resulting in target_cells_ dimensions variable Dim_ zero. So that in the kdtree_flann.hpp, vector capacity is initialized to 0, at a later point cloud to Vector conversion, vector out limit.    

  

 

Guess you like

Origin www.cnblogs.com/pw123/p/11329041.html