Evaluation of PointCloud complexity for ICP approaches

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Evaluation of PointCloud complexity for ICP approaches

XV25
Hi,

I'm trying to understand how the evaluation of the complexity of a point cloud works in the icp odometry module of rtabmap. I had never been confronted with ICP or PCA algorithm notions before, so I apologize in advance if my questions are silly.

According to the article "RTAB-Map as an Open-Source Lidar and Visual SLAM Library for Large-Scale and Long-Term Online Operation", the complexity of point clouds depends in part on the number of uniform surfaces within the cloud; thus, a point cloud associated with a corridor can be described as not very complex. The complexity of a point cloud is assessed by a Principal Component Analysis on the local normals of the pointcloud. If, via this PCA, the value associated with the complexity is lower than the "ICP/PointToPlaneMinComplexity" threshold value, then the point cloud is qualified as not very complex.  Therefore, the Point to Plane (P2N) approach should be considered as it is more efficient in environments with many flat surfaces.
However, according to the github documentation of the threshold value "ICP/PointToPlaneMinComplexity" available in the Parameters.h file, the P2N approach is only applied if the complexity of the structure is higher than this threshold value. As indicated: "Minimum structural complexity (0.0=low, 1.0=high) of the scan to do point to plane registration, otherwise point to point registration is done instead.".
Thus, the P2N approach is only applied if the structure is sufficiently complex, with few flat surfaces, which seems to be an unfavourable environment for the P2N approach.
Could you tell me if this reasoning is correct, please? And if it is, could you explain why using P2N only if a point cloud is complex enough is justified, please?

Also, I have difficulty understanding what the main directions evaluated by the PCA algorithm from the local normals of the point cloud are. Can we interpret the principal directions evaluated here as the variance of the local normals in space? That is, the first principal direction would be considered as the vector with the strongest collinearity with the set of local normals, then the second principal direction as the vector orthogonal to this first vector, etc.

Regards,

XV25
Reply | Threaded
Open this post in threaded view
|

Re: Evaluation of PointCloud complexity for ICP approaches

matlabbe
Administrator
Hi,

The reason why we switch to PointToPoint is an implementation issue. Without changing any parameters, libpointmatcher in PointToPlane mode tends to generate large jumps if we are looking only at two parallel lines. For example, if you move 1 meter along a corridor, the two scans will like exactly the same, thus ICP will say that you didn't move at all, or if you provided a guess of 1 meter forward, ICP will jump back 1 meter behind to match the two lines. With PointToPoint, the jumps in direction of the parallel lines are less. If the guess is 1 meter forward, the resulting ICP transform would keep that 1 meter, while correcting for side shift and orientation.

In general, if you have many flat surfaces at different angles, PointToPlane will work very accurately.

In the 2D case, if you have two parallel lines, the PCA on the normals will give a strong eigen value on the first direction [0.99 0.01]. If the two lines are perpendicular, you will get similar eigen values for both directions [0.55 0.45].

cheers,
Mathieu
Reply | Threaded
Open this post in threaded view
|

Re: Evaluation of PointCloud complexity for ICP approaches

XV25
Hi,

Ok, I understand. Thank you for your prompt response!

Regards,

XV25