Unit 11 · lesson

Odometry and Drift

Odometry estimates robot motion by accumulating local movement.

For a differential-drive robot, wheel encoders can estimate:

  • forward displacement;
  • heading change;
  • new pose.

Each update may be close. Thousands of updates can still drift.

Small error, repeated

Suppose a wheel circumference is assumed to be 0.500 m but the effective rolling circumference is 0.495 m.

That 1% difference seems tiny.

After the wheel rolls an estimated 100 meters, the distance error can approach about 1 meter if nothing else corrects it.

Now add turning, slip, and unequal wheel wear.

Heading error hurts more

A small heading error changes where future "forward" motion goes.

That means position error can grow faster than a simple distance percentage.

Conceptually:

correct:  ───────────────→

estimated heading error:
          ────────╲

Odometry is still useful

Drift does not make odometry useless.

Odometry is:

  • fast;
  • local;
  • available almost everywhere;
  • excellent for short-term motion;
  • useful between absolute corrections.

The correct claim is not "odometry gives position."

It is:

Odometry provides a pose estimate whose uncertainty tends to grow with motion.

Drift experiment

Create a simulated square path.

Start at (0,0,0°).

At every 90-degree turn, add a 1-degree heading error.

Propagate the path through four sides.

Compare the estimated final pose with the expected starting pose.

You can do this roughly on graph paper. The visual result is enough to show why repeated small errors matter.

Dossier note

Add:

  • what your chosen localization method measures;
  • what it assumes;
  • how its error grows;
  • what could correct it.

That is a far more useful architecture statement than "robot uses encoders."

Small errors accumulate

Imagine each meter of wheel odometry underestimates travel by only 1%.

After one meter, the error is about 1 cm. After ten meters, the systematic component can approach 10 cm. Turns can amplify the effect because heading error changes the direction of every later position update.

This is drift: error that grows as estimates are repeatedly updated from imperfect measurements.

A reset does not explain the drift

You can hide the problem by resetting the pose before every short test. That may be useful operationally, but it does not tell you why the estimate diverges.

Instead, compare checkpoints:

Distance traveledReference xEstimated xError
1 m1.000.99-0.01
3 m3.002.96-0.04
5 m5.004.91-0.09

The pattern suggests accumulating scale error rather than one random jump.

Possible causes include effective wheel diameter, encoder conversion, slip, or geometry assumptions.

The fix should match the evidence. Calibration can correct scale. Better traction can reduce slip. External references can bound accumulated drift. Those are different interventions for different mechanisms.