Documented target: Ubuntu 24.04 · ROS 2 Jazzy · Gazebo Harmonic where used. Browser labs tested; ROS/Ubuntu/hardware execution not performed here.
What you will understand
- Explain odometry drift.
- Describe uncertainty.
- Separate fusion from map localization.
Prerequisites: Find a colour region with OpenCV and its stated environment.
The idea, made clear.
Wheel odometry integrates local motion. Radius error and slip accumulate, so it drifts. Localization corrects pose using observations relative to a known environment. Keep odometry, localization and simulator ground truth explicitly labelled rather than calling all three position.
An extended Kalman filter combines a model with observations and their uncertainty. Covariance represents confidence and correlations. Zero uncertainty for imperfect sensors makes estimates overconfident. Do not fuse the same underlying observation twice as if the sources were independent.
AMCL estimates planar pose inside an existing map using particles. It requires appropriate scans, transforms and initial pose. Working odometry alone does not establish global localization. Diagnose sensor timing and the complete frame chain before adjusting algorithm parameters.
Try it, step by step.
Read odometry
Use a simulation publishing /odom.
ros2 interface show nav_msgs/msg/Odometry
ros2 topic echo /odom --onceExpected: Pose, twist, frames and covariance.
Check the chain
Inspect the locally continuous transform.
ros2 run tf2_ros tf2_echo odom base_linkExpected: A valid local transform when configured.
Plan comparison
Record simulator ground truth separately if exposed.
Expected: A comparison that distinguishes estimates from reference data.
If something goes wrong
- Localization fails
- Check map, initial pose, scan, transforms and time.
- Filter is overconfident
- Review covariance and correlated inputs.
Check your understanding
Make it yours
Explain uncertainty during wheel slip and what observation could correct it.
Optional progress stays in this browser. No account needed.
Go to the source documentation
Commands are educational examples for the stated environment, not a transcript of local ROS execution. Verify actual behavior on your machine.