ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | Q&A
Ask Your Question

Difference between amcl and odometry source

asked 2021-09-30 13:29:49 -0600

Eman.m gravatar image


In navigation stack, what is the difference between amcl and odometry source.

from the ros website:

amcl, localizes and tracks the robot position in a static map. It also initialize the robot position by setting.

the odometry source, estimates the position and velocity of a robot in free space.

so, what is the difference, I read this question:

but, it does not answer my question, I need an explanation for a beginner ( I can navigate a simulated robot in ros using Gazebo).


edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2021-10-03 00:32:40 -0600

JohnTGZ gravatar image

First I will explain the role of odometry within a mobile robot base. According to MIT CSAIL course material,

Odometry is the use of motion sensors to determine the robot's change in position relative to some known position. For example, if a robot is traveling in a straight line and if it knows the diameter of its wheels, then by counting the number of wheel revolutions it can determine how far it has traveled.

Robot odometry (usually the "/odom" topic in ROS) is important as it enables the robot to "track" it's x and y position in the map relative to an arbitrary point. Solely relying on robot odometry for localization is known as Dead Reckoning and is subject to cumulative errors during prolonged use. To quote Wikipedia's article on Dead Reckoning:

For precise positional information, both speed and direction must be accurately known at all times during travel. Most notably, dead reckoning does not account for directional drift during travel through a fluid medium. These errors tend to compound themselves over greater distances, making dead reckoning a difficult method of navigation for longer journeys.

In order to account for cumulative errors from odometry drift, we can rely on data that is known to be closer to the "ground truth" of the environment. Assuming that your robot base has a lidar, we are then able to base our localization off the laser data (published as the "/scan" topic) from the lidar. To understand the fundamentals of AMCL, please watch this primer.

During robot motion, AMCL uses the "/scan" topic to correct for any odometry drift from dead reckoning, therefore giving rise to the transformation shown under "AMCL Map Localization". image description

If you would like to learn more about how the different components of autonomous navigation ties in together, do take a look at links below:

  1. What is Autonomous Navigation
  2. Modern Robotics - Odometry
edit flag offensive delete link more



Thank you for the great explanation! You mention why we should not rely solely on robot odometry. Is there also a reason why we should not use solely localization (e.g. lidar map or gps), in other words, why do we need odometry?

phixxx6 gravatar image phixxx6  ( 2022-06-02 08:09:34 -0600 )edit

You are welcome! That's a good question. When it comes to localization, there is sensor data that is reliable in the long-term but has low frequency and might not update consistently (e.g. GPS data, Lidar scan matching against the static map, visual SLAM etc.) For such data, the time step between the updates might be too long to maintain a good estimation at smaller time steps especially if the robot is moving fast. This is where high frequency and consistently available sensor data comes into play (e.g. IMU, Wheel odometry etc.), alone they are not reliable over the long-term but can be fused with the other sensor sources to obtain a better estimate of the robot state

JohnTGZ gravatar image JohnTGZ  ( 2022-06-02 08:24:16 -0600 )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: 2021-09-30 13:29:49 -0600

Seen: 253 times

Last updated: Oct 03 '21