Relative sensor fusion can only take a mobile robot so far. To build truly robust autonomous systems, you have to bound dead reckoning drift with absolute global references.
As part of my ongoing development of System 1 and System 2 robot autonomy infrastructure, I’ve expanded my Python Extended Kalman Filter (EKF) state estimator to include live GPS parsing.
In the video below, you can see how a pure dead reckoning filter (orange) handles a sudden collision anomaly compared to a two-stage GPS-fused EKF (blue).
Here is exactly what the absolute GPS extension brings to the state-estimation pipeline over standard internal tracking:
โ๏ธ ๐๐ผ๐๐ป๐ฑ๐ ๐๐ผ๐บ๐ฝ๐ผ๐๐ป๐ฑ๐ถ๐ป๐ด ๐๐ฟ๐ถ๐ณ๐: Eliminates long-term positional integration error, anchoring the local coordinate map to global geographic realities.
โ๏ธ ๐ ๐ถ๐๐ถ๐ด๐ฎ๐๐ฒ๐ ๐ช๐ต๐ฒ๐ฒ๐น ๐ฆ๐น๐ถ๐ฝ๐ฝ๐ฎ๐ด๐ฒ ๐๐ป๐ผ๐บ๐ฎ๐น๐ถ๐ฒ๐: As shown at the end of the clip, when the robot hits a sidewalk barrier and slips, the raw odometry (red) keeps imagining forward motion. The GPS track immediately overrides this, correctly locking the robot as stationary.
โ๏ธ ๐ง๐๐ผ-๐ฆ๐๐ฎ๐ด๐ฒ ๐๐ผ๐น๐ ๐๐๐ผ๐น๐ฎ๐๐ถ๐ผ๐ป: Implements a discrete white-noise acceleration pre-smoother to swallow fix-to-fix GPS jumps, preventing absolute “snapping” from disrupting smooth, downstream steering control loops.
โ๏ธ ๐๐๐ป๐ฎ๐บ๐ถ๐ฐ ๐๐ผ๐๐ฎ๐ฟ๐ถ๐ฎ๐ป๐ฐ๐ฒ ๐๐ฎ๐๐ถ๐ป๐ด: Automatically scales its trust based on satellite geometry and receiver confidence, protecting the system from multi-path noise reflections.
If you are building state estimators for rugged, real-world environments, internal relative data is only half the puzzle.
Read the full article here: https://system1system2.substack.com/p/augmenting-dead-reckoning-state-estimation
Leave a Reply