ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | Q&A answers.ros.org

# Difference between amcl and odometry source

Hi

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.

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

Thanks

edit retag close merge delete

Sort by ยป oldest newest most voted

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".

more

1

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?

( 2022-06-02 08:09:34 -0600 )edit
1

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

( 2022-06-02 08:24:16 -0600 )edit