Build a map of the world while, at the same instant, finding yourself in it. EKF‑SLAM holds the robot pose and every landmark in one joint state with a shared covariance: motion inflates the pose, and each observation correlates and corrects pose and map together. Rendered, not quoted — the filter below is live.
source Smith, Self & Cheeseman, Estimating Uncertain Spatial Relationships in Robotics, 2nd Workshop on Uncertainty in AI (1986); repr. Autonomous Robot Vehicles, Springer, 1990, pp.167–193 — arXiv:1304.3111 amber workshop paper; arXiv is a later scan, not the original venue.
The model
ONE joint state x = [ x₀ , m₁ , m₂ , m₃ ]: the robot pose plus every landmark, with a single shared covariance P. Motion adds process noise to the pose block only — the pose grows uncertain. An observation z = mₕ − x₀ ties pose and landmark: the Kalman gain touches both, so their off‑diagonal covariance block becomes non‑zero. They are now correlated.
1D linear‑Gaussian reduction so every step is exact. amber real SLAM is 2D/3D and nonlinear; the EKF linearizes the motion & measurement models each step.The lineage
Map while you localize. Smith, Self & Cheeseman (1986) fused the pose and the map into one stochastic map — the correlated joint estimate at the heart of autonomous navigation.
Neighbour: the‑extended‑kalman‑filter, run here over pose AND landmarks at once. When the models are linear the EKF update reduces to the linear Kalman filter exactly — window 0 proves it to 1e‑9 against the closed‑form Bayesian posterior.The witness · live re‑check
Re‑runs the loop‑closure property against the current filter mode and confirms it. If the map is tampered (window 6) to decouple pose from landmarks, the re‑observation stops correcting the pose and this badge flips red.
Data in in ↓
A short run: observe L₁ and L₂, dead‑reckon away (5 motion steps, no landmarks — pose uncertainty climbs), then re‑observe L₁ — a loop closure.
Truth: pose x₀=0, landmarks m₁=10, m₂=20, m₃=30. Measurement noise r=0.25. Process noise q=1.0 per motion step. Noisy realizations use a fixed‑seed PRNG.The panel lit
Joint estimate & shared covariance
Loop closure — trace of pose covariance across the re‑observation of L₁:
Data out out ↓
Proven result — the recovered map and the pose collapse at loop closure:
The adversary wall
The dense covariance is O(n²) in landmarks — every pair is correlated, so EKF‑SLAM chokes on large maps; sparse / graph‑SLAM replaced it for scale.
Linearization bites: for large heading uncertainty EKF‑SLAM becomes over‑confident and inconsistent (Julier&Uhlmann 2001; Bailey et al. 2006) — it can claim a tighter covariance than it has earned.
One wrong data‑association at loop closure corrupts the whole correlated map at once.
The graveyard
SLAM is solved once the sensor is good enough.
→ the hard part is the correlations, not the sensor.
Pose and map can be estimated separately.
→ they are jointly correlated — separating them IS the planted tamper.
EKF‑SLAM scales to millions of landmarks.
→ the O(n²) covariance kills it; use sparse / graph back‑ends.
The tamper · planted void
Estimate pose and map independently — force the pose‑landmark cross‑covariance to zero. Now re‑observing L₁ corrects the landmark but never the pose. The chicken‑and‑egg breaks; the witness (7) catches it.