Hi Authors!
First I want to thank you all for the awesome work with PCL. Even responses to issues were very fast.
I require some guidance on how to use PCL libraries's NDT algorithm for localisation.
The problem I am trying to solve is to monitor whether the robot is localised properly to a map generated by Gmapping (2D occupancy grid.) The robot uses a laser scanner to see the environment. The reason I went with NDT is because on looking at the working concept it looked like it's computationally less intensive than ICP for alignment. Since autoware is using it as submodule for its localisation package, I concluded that it must very robust.
I am following this tutorial. However I am not able to get proper alignment as shown in below picture. Interestingly .hasConverged() calls also returns true even though it's not aligned. what is the purpose of hasConverged() ? are there any alignment metric one can get to know if its aligned ?
Coming to the main issue, how does one set NDT parameter to get proper alignment ? are there any doctrines to follow ?
My pipeline is a follows.
Convert map to pcl data(pcl::Pointxyz).
convert laserscan to pcl data(pcl::PointXYZ).
Downsample laserscan pcl using approximate voxel sampling.
Hi Authors! First I want to thank you all for the awesome work with PCL. Even responses to issues were very fast.
I require some guidance on how to use PCL libraries's NDT algorithm for localisation.
The problem I am trying to solve is to monitor whether the robot is localised properly to a map generated by Gmapping (2D occupancy grid.) The robot uses a laser scanner to see the environment. The reason I went with NDT is because on looking at the working concept it looked like it's computationally less intensive than ICP for alignment. Since autoware is using it as submodule for its localisation package, I concluded that it must very robust.
I am following this tutorial. However I am not able to get proper alignment as shown in below picture. Interestingly .hasConverged() calls also returns true even though it's not aligned. what is the purpose of hasConverged() ? are there any alignment metric one can get to know if its aligned ?
Coming to the main issue, how does one set NDT parameter to get proper alignment ? are there any doctrines to follow ?
My pipeline is a follows.
Code for reference
yellow-> original scan cloud, white-> map point cloud, red-> NDT transformed point cloud