Software · Localization

Pose Estimator Lab

Drive a swerve robot around the 2026 REBUILT field. Wheel odometry slowly loses track of where the robot really is. Three cameras on an Nvidia Jetson read AprilTags, and a Kalman filter blends the two. New here? Press Walkthrough.

Field

Blue driver station view
True robot Odometry Fused estimate Accepted, circle = σ ×Rejected Our alliance zone Focus tag

Where the robot is

True pose–
Odometry (smooth pose)–
Fused (field pose)–
Odometry error–
Fused error–
Within 0.06 m and 0.017 rad?–
Distance driven–
Speed–
Surface–
State–

The robot runs two estimators. The smooth pose only uses odometry. The field pose also takes the camera readings. The tolerance is the one the Computer Vision lesson checks.

What each camera sees

Values hold for 250 ms so you can read them
CameraTagsDistResult

Why each reading is off

Expected error (1σ) = distance error × viewing-angle factor + motion blur + bump tilt. The robot never sees this number. The 2026 code gives every reading the same σ, so a blurry far reading counts as much as a sharp close one.

Filter results

Last 2 seconds of readings

Position error vs time

Odometry onlyFused estimate

Things to try

  1. Turn every camera off, then spin in place with Q for a few turns. Watch the heading part of the fused error grow. Turn them back on and watch it shrink.
  2. Set Vision σ to 0.05. The estimate follows every noisy reading and jitters. Set it to 5.0 and it barely moves. Where is the sweet spot?
  3. Drive into our alliance zone and watch for Too few tags in our zone. Why might single-tag readings be risky near the wall?
  4. Get shoved, then drive to a hub. How long until the fused estimate is back within 0.06 m?

Read more