Ask Your Question

Indoor localization with 2D lidar and IMU

asked 2018-08-31 06:15:37 -0500

Subodh Malgonde gravatar image

updated 2018-08-31 07:03:03 -0500

I have a 3 wheeled differential drive robot (2 wheels + 1 castor) which has a 9 DOF IMU (3d acceleration, heading and angular velocities) and a 2D lidar (RPLidar). I have a pre-computed map.

To localize the robot I am using the ROS package amcl. AMCL requires 3 inputs:

  1. 2D Laser scan data
  2. odom -> base_link transform. This is typically published by an odometry source.
  3. Map

Odometry is estimated using the ROS package robot_localization, which uses Kalman filters to fuse data from the IMU's 3 sensors - accelerometer, gyroscope and magnetometer. The localization works reasonably well at slow speeds. However sometimes the estimated position is way off the actual position.

My questions :

  1. Is this the right approach to perform localization using an IMU and 2D lidar?
  2. Will the odometry estimated using the IMU data be good enough for amcl?
edit retag flag offensive close merge delete

1 Answer

Sort by » oldest newest most voted

answered 2018-08-31 15:47:36 -0500

If you're using robot_localization in what I would refer to as a "local" mode (i.e. updating based on sensors for local state estimate as opposed to AMCL which gives global updates of drift), you would want to also likely include your encoder readings from the drivetrain to give it velocity information. Integrating acceleration is tough work and you're essentially throwing away "free" information given to you by the encoders to do your speed control.

That should help you get the most generic setup on line. If you have issues at this point, I think you need to take a look at your covariances and settings and tune til happy. There will be of course some drift, this is why AMCL exists, but should get you on a path.

edit flag offensive delete link more


Thanks for your answer. I am using robot_localization in the "local mode". I understand that integrating acceleration is tough work. However I expected laser + IMU to be sufficient for localization. I will now take your suggestion and use wheel encoder data.

Subodh Malgonde gravatar image Subodh Malgonde  ( 2018-09-03 00:31:44 -0500 )edit

@Subodh have you had any luck with robot_localization in "local mode" for imu + wheel odometry? I am facing issues in this area (See my latest question)

aarontan gravatar image aarontan  ( 2018-09-10 18:48:24 -0500 )edit

Yes I have been able to setup robot_localization in the local mode and I have used it with an IMU (Razor 9DOF) and laser odometry (rf2o_laser_odometry). I have left a couple of comments on your question.

Subodh Malgonde gravatar image Subodh Malgonde  ( 2018-09-11 00:56:46 -0500 )edit

Hello, I am working on the same subject as you, but am facing difficulties. I want to know if you had managed to solve this and if so you want to give me the configuration made? or the code so that I try to see what’s wrong with me

raphael_khang gravatar image raphael_khang  ( 2020-07-06 11:34:58 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools



Asked: 2018-08-31 06:15:37 -0500

Seen: 1,378 times

Last updated: Aug 31 '18