How to improve ROSbot localization accuracy


I am having difficulty using ROSbot in my experiment because the localization does not seem to be very accurate.

I’d like to share two observations before asking for suggestions to improve the localization accuracy.
First, we observe that the localization goes wrong very easily when the Rosbot’s velocity is higher than 0.5~0.6m/s.
Second, it seems that the rotation affects the localization a lot.

I am currently doing experiment in an area of approximately 10mX5m and I am using the (’/pose’, PoseStamped) topic to get robot pose. The experiment needs the ROSbot to traverse the 10mX5m area and potentially make quite a few rotations. However, the localization accuracy degrades a lot during the experiment.

I would greatly appreciate any solutions/suggestions to improve the localization.
Thanks a lot!

Hi Idjyl,
which sensors do you have available? I believe the /pose topic is calculated by the rosbot_ekf package, which calls internally the robot_localization package (robot_localization wiki — robot_localization 2.7.3 documentation) for sensor fusion based on the Extended Kalman Filter.
Under rosbot_ekf/params/ekf_params.yaml you can find the configuration file, which uses by default the IMU and the wheel encoders.
I have good experiences by using the hector_mapping package ( , which provides very good accuracy only based on the LIDAR sensor.
cheers Laschoking

Thank you for the reply. Do you know whether we can fuse the data from the ‘/pose’ topic with the lidar data? We still want to use the IMU data (from /pose topic) and then to improve the accuracy, or to reduce the drifting after the robot is running for a while.


it is possible to use hector_mapping with the robot_localization package.
However I am working on something similar and my feeling is that it is quite tricky to get robot_localization & hector_mapping working together.
There is also another package, hector_localization where they provide an own implementation of the Extended Kalman Filter.
Maybe you should check out that package.

Thanks a lot for the suggestion! I will look into the package!