Rosanswers logo

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.


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

Post score: 9


1 Answer 1


Rosanswers logo

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

Original comments

Comment by wpd on 2014-08-04:
Ahhh, that makes sense. Thank you.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.