Robotics StackExchange | Archived questions

LIDAR based localizer

Dear all,

We have experience in working on 3D slam and we now would like to use the environment's 3d map generated by the algorithm so as to help our mobile robot localize on the floor. That is we have a wheeled mobile robot equipped with a LIDAR and I would like to use the LIDAR to localize the robot in the 3D map.

I thought of slicing the 3d map at 20cm above the floor (which is the height of my LIDAR) to obtain a 2D map (no longer 3D as it is sliced) of the environment, to be registered on the data incoming from the LIDAR. We can code the 3D slicing into 2D, no problem.

We need to work in 2 different modes:

I initially thought that these 2 modes would be easy to solve in 2D, that they were very common, and as a consequence I thought I would find many ROS packages solving the problem. This is not the case and I am very surprised:

So is 2D localization-only really an issue in the community? And what packages are generally used? Is localization an option of the ROS 2D SLAM packages which I did not find? If this exists but not in ROS, what algorithms or methods are used, then? Are they based on ICP?

And as for the global init localization mode? Are there some ROS packages dealing with the problem? And if not, do you know any algorithm doing just this?

---- EDIT ---- AMCL looks interesting for the runtime mode. What to you for the init mode though?

Thanks for your help,

Antoine.

Asked by arennuit on 2019-03-13 07:24:11 UTC

Comments

If you're Looking for standard Global Localization, and not trying to solve the Kidnapped Robot Problem, AMCL has a service for at least attempting it;

global_localization (std_srvs/Empty)

Initiate global localization, wherein all particles are dispersed randomly through the free space in the map.

I've never used it so no idea how well it work.

Asked by billy on 2019-03-13 20:33:13 UTC

Answers