# Why can the odom frame drift?

According to REP 105, "The pose of a mobile platform in the odom frame can drift over time". I am trying understand what that means. In what situations would the frame "drift"? And "drift" relative to what? The base_link? How would the the odom frame drift relative to the base link if the robot is responsible for publishing the base_link->odom transform based on it's notion of odometry in the first place?

REP 105 also states/requires, "the pose of a robot in the odom frame is guaranteed to be continuous".

Does this mean I can't use an INDEX pulse on my wheel encoders to reset the axel angle to zero on each wheel rotation, since that might lead to a discontinuity? Or does it imply a requirement that I must filter my odometry estimates to eliminate such discontinuities.

Hmmm... maybe this starts to make sense. If I'm required (by REP 105) to eliminate any discontinuities, I can see where that might lead to "drift"...maybe.

Anyways, I'm confused, and would appreciate any enlightenment folks would care to give me on this topic.

--wpd

Originally posted by wpd on ROS Answers with karma: 249 on 2014-08-04

Post score: 9

Hi there!

As I understand, the drift mentioned on REP 105 refers to the fact that the difference between the pose of the robot on the real world and the estimated pose of the robot by the odometry (lets call this odometry error) will grow over time due the well-known problems of odometry calculation. For example:

• Small difference between the nominal and actual wheel diameter -> will cause the odometry error to grow over time
• Small difference between the nominal and actual tread -> will cause the odometry error to grow over time
• Wheel slipping -> will cause the odometry error to grow over time
• No matter what you do -> the odometry error will grow over time

Regarding the continuity of the odom frame, yes, you should avoid big jumps. The values on the odom frame should be continuous, and any compensation for the odometry error (drift) should be made on the map frame:

In a typical setup, a localization component constantly re-computes the robot pose in the map frame based on sensor observations, therefore eliminating drift, but causing discrete jumps when new sensor information arrives.


Originally posted by Martin Peris with karma: 5625 on 2014-08-04

This answer was ACCEPTED on the original site

Post score: 12