State estimation computes a robot's state, such as its configuration or velocity over ground, from noisy, biased and intermittent sensor readings, and planning and control assume that state is known. Probabilistic estimators report a belief, so each estimate carries its uncertaintySource 3.

An Apollo inertial measurement unit on display with its round outer case open, showing the gimballed stable platform with its gyroscopes and accelerometers inside.
An Apollo inertial measurement unit at Draper's 2019 Hack the Moon exhibit. Its gyroscopes and accelerometers integrate motion and drift over time, so an estimator must correct them with outside measurements.
Photo: ArnoldReinhold / Wikimedia Commons. Licence: CC BY-SA 4.0.
Kalman filter
Blend a guess and a noisy reading: sharper than either
Adjust more
the cart’s guessthe sensor’s readingthe blendits share of the way to the reading

beat 5 / 5 Jaws either side: guess 1.27 · reading 1.00 · blend 0.79

Illustrative: one step of a simulated robot, drawn to scale.

A robot never knows exactly where it is, so it keeps mixing its own prediction with each new sensor reading.
How this was made

In symbols, the update is x^k=x^k−+K(z−x^k−)\hat{x}_k = \hat{x}_k^{-} + K\bigl(z-\hat{x}_k^{-}\bigr): the new estimate (the posterior) is the predicted estimate plus the gain K times the gap between the reading z and the predicted position.

Here the gain is 0.62, the reading is 0.82, the predicted position 0.03 and the blend 0.52, so 0.52 = 0.03 + 0.62 × (0.82 − 0.03). The spread of the position estimate (one standard deviation) goes from 0.94 to 1.27 in the predict step and to 0.79 after the update; the reading’s spread is 1.00.

The drawing is an estimating rail. The cart tows the guess’s caliper while its odometer counts the roll, a rangefinder drives the reading’s caliper, and the blend’s caliper runs along a share rule from the guess to the reading. Each caliper’s jaws stand one spread either side of its estimate, so closer jaws mean surer. The numbers are step 41 of the seeded constant-velocity filter (seed 1, process noise 0.20, reading noise 1.00, beliefs matched to the world), drawn to scale. The drawing shows position only; the filter also tracks velocity. The rail is an illustration.

The steps, in order:

  1. Guess: from where it was and how fast it was going, the robot predicts where it is now, and the guess spreads out.
  2. Measure: a sensor also reports the position, but it is noisy, so the reading could be off in either direction.
  3. Blend: the robot mixes guess and reading, trusting the less spread-out one more, and the blend is narrower than either.
  4. The same step in numbers, then in symbols: the blend is the guess plus a share K of the gap to the reading z.
  5. A robot never knows exactly where it is, so it keeps mixing its own prediction with each new sensor reading.
1960
Kalman filter
Kalman's recursive linear estimator
1960s
EKF
Ames nonlinear navigation studies
2001
factor graphs
Kschischang, Frey, Loeliger unify the algebra
2012
iSAM2
incremental smoothing on the Bayes tree

The Bayes filter

A belief bel(xt)bel(x_t) is a probability distribution over the state, kept current by two alternating steps. The predict step pushes the belief through the process model, given the control utu_tSource 3:

bel‾(xt)=∫p(xt∣ut,xt−1) bel(xt−1) dxt−1\overline{bel}(x_t) = \int p(x_t \mid u_t, x_{t-1}) \, bel(x_{t-1}) \, dx_{t-1}

The update step folds in the measurement ztz_t through the sensor model p(zt∣xt)p(z_t \mid x_t) and sharpens the belief where the measurement pointsSource 3:

bel(xt)=η p(zt∣xt) bel‾(xt)bel(x_t) = \eta \, p(z_t \mid x_t) \, \overline{bel}(x_t)

with normalizer η\eta. This recursion is the Bayes filter, which Thrun, Burgard and Fox call the basis of virtually every technique in their book, and each tractable filter adds assumptions or approximations that make the integral computableSource 3. The bootstrap filter of Gordon, Salmond and Smith drops the linearity and Gaussian-noise assumptions and applies to any state transition or measurement modelSource 13. Drive the robot in the figure below: its cloud of doubt grows as it moves and shrinks when it spots a landmark.

Does a robot know where it is?
It drives by counting wheel turns. Each turn adds a little error, so its guess slips further off and its cloud of doubt grows.
It drives by counting wheel turns. Each turn adds a little error, so its guess slips further off and its cloud of doubt grows.
A robot never knows exactly where it is: moving makes it less sure and each landmark it sees makes it surer.
How this was made
The steps in words
  1. It drives by counting wheel turns. Each turn adds a little error, so its guess slips further off and its cloud of doubt grows.
  2. Now its camera spots a landmark: a sign it already knows, at a known place on its map.
  3. A poorer camera shrinks the cloud less. The robot blends its own guess with the landmark's, trusting whichever has less doubt.
  4. This blending is a Kalman filter. Spacecraft, drones and many robots use one to keep track of where they are.

The Kalman filter

The 1960 Kalman filter reduces the recursion to matrix algebra by assuming linear process and measurement models and Gaussian noiseSource 1:

xt=Atxt−1+Btut+wt,zt=Ctxt+vtx_t = A_t x_{t-1} + B_t u_t + w_t, \qquad z_t = C_t x_t + v_t

with wt∼N(0,Qt)w_t \sim \mathcal{N}(0, Q_t) and vt∼N(0,Rt)v_t \sim \mathcal{N}(0, R_t); Probabilistic Robotics swaps the two symbols. A Gaussian belief then stays Gaussian, so the recursion tracks only a mean and covariance. PredictSource 3:

μˉt=Atμt−1+Btut,Σˉt=AtΣt−1At⊤+Qt\bar{\mu}_t = A_t \mu_{t-1} + B_t u_t, \qquad \bar{\Sigma}_t = A_t \Sigma_{t-1} A_t^{\top} + Q_t

Update, through the Kalman gain KtK_tSource 3:

Kt=ΣˉtCt⊤(CtΣˉtCt⊤+Rt)−1K_t = \bar{\Sigma}_t C_t^{\top} \left( C_t \bar{\Sigma}_t C_t^{\top} + R_t \right)^{-1} μt=μˉt+Kt(zt−Ctμˉt),Σt=(I−KtCt)Σˉt\mu_t = \bar{\mu}_t + K_t \left( z_t - C_t \bar{\mu}_t \right), \qquad \Sigma_t = \left( I - K_t C_t \right) \bar{\Sigma}_t

The gain is prior uncertainty over prior-plus-sensor uncertainty: a filter that trusts its model gets a small gain and mostly ignores the sensor, and one that trusts its sensor gets a gain near one. Under linear-Gaussian assumptions the recursion is the minimum-variance estimator, and Kalman's projection-based derivation makes it the best linear estimator with white noise even without Gaussian noiseSource 1.

McGee and Schmidt's 1985 NASA history credits Schmidt's Ames group with adapting the filter to nonlinear circumlunar navigation in the early 1960s. By early 1961 simulations supported the approach, though operation on available flight computers was unverified. The report separates this work from Battin's Apollo studies at MIT and Potter's square-root implementation used in Apollo. Primary Apollo navigation used ground radar, with an onboard backupSource 2.

The Apollo Guidance Computer, a flat gold-coloured metal case, beside its display and keyboard unit with a numeric keypad and status lights, on a blue background.
The Apollo Guidance Computer and its display and keyboard. Apollo used Potter's square-root form of the Kalman filter, with ground radar as primary navigation and the onboard system as backup.
Photo: NASA / Wikimedia Commons. Licence: Public domain.
Kalman filter, a whole run
The filter keeps tracking, but grows less sure without readings
Through noisy and missing readings the filter stays close to the object, and its band shows when a robot should trust it less.
How this was made

A seeded toy simulation (seed 1): an object drifts along a line, and a position sensor reads it with random noise and misses about one step in five. The clip shows 240 steps of that run, steps 300 to 540, with time running left to right and position up and down.

Each step has two halves, which Kalman filters call predict and update: predicting where the object moved widens the band, and a reading, when one arrives, narrows it.

The band spans two standard deviations either side of the filter's estimate, about 95% of its belief. The filter's noise settings match the simulation: process noise 0.20, reading noise 1.00.

The note and its arrow mark steps 436 to 439, the longest run of missing readings in the simulation: four in a row, with that stretch of the band tinted in the note's colour. By the fourth missing step the band is three times as wide as at the last reading before the gap, and it narrows when the next reading arrives.

The clip is rendered offline from the same filter code as the scene above. It is silent; its captions and the transcript carry the words.

Illustrative: a simulated run, not measured on hardware.
Illustrative cinematic clip, 16 seconds: one Kalman filter over a whole run of 240 steps, with time running left to right and position up and down. Labels name each mark. An object moves back and forth; a dashed line marks its true position. A noisy sensor reports the object's position as scattered dots, and about one time in five it reports nothing. The filter's estimate, a solid line, stays close to the true position, and a shaded band around it shows how unsure the filter is: a wider band means less sure. A note reads: no readings, the filter grows less sure. Its arrow points at the band's widest stretch, tinted in the note's colour, where four readings in a row are missing and the band grows to three times its width; the next reading narrows it again. In filter terms, each predict step widens the band and each update with a reading narrows it. Simulated run, not measured on hardware.

The extended Kalman filter

Real robots are nonlinear: joint angles enter through sines and cosines, so the models become xt=g(xt−1,ut)+wtx_t = g(x_{t-1}, u_t) + w_t and zt=h(xt)+vtz_t = h(x_t) + v_t. The extended Kalman filter keeps the Gaussian belief, linearizes both models about the current estimate with their Jacobians Gt=∂g/∂xG_t = \partial g / \partial x and Ht=∂h/∂xH_t = \partial h / \partial x, and propagates the covariance through the tangent systemSource 3:

Σˉt=GtΣt−1Gt⊤+Qt,Kt=ΣˉtHt⊤(HtΣˉtHt⊤+Rt)−1\bar{\Sigma}_t = G_t \Sigma_{t-1} G_t^{\top} + Q_t, \qquad K_t = \bar{\Sigma}_t H_t^{\top} \left( H_t \bar{\Sigma}_t H_t^{\top} + R_t \right)^{-1}

The mean moves through the true maps gg and hh; only the covariance takes the linearized routeSource 3. The Ames group moved from linearizing about a nominal reference trajectory to relinearizing about the current estimated state, which they hoped would bring "substantial advantages". An accidentally off-nominal simulation converged after initial overshoots, and the report names this modification the extended Kalman filter. It also discusses instability from round-off, inadequate statistical models and nonlinearitiesSource 2.

Linearization holds near the estimate, which is itself uncertain, so where the nonlinearity is strong over the region the covariance covers, Σ\Sigma stops describing the true error, and the filter grows overconfident and can divergeSource 2 Source 6. Julier and Uhlmann summarize 35 years of experience: the EKF is difficult to implement and tune, and reliable only for systems almost linear on the time scale of the updatesSource 14. Li and Mourikis proved that standard EKF visual-inertial odometry is inconsistent because of how its Jacobians are computed, so it underestimates its uncertaintySource 15.

Linearization
A straight line fits the curve only near the guess
30 degrees
The dial on the cursor reads the miss: the lit plunger’s lengthSpread 30 degrees · 6.8 cm off at the edge

Illustrative arm and spread; the miss is that arm's exact geometry

An extended Kalman filter swaps a robot's curved model for its tangent at the current guess; the wider the uncertainty, the further they part.
How this was made

Joint angles enter a robot's models through sines and cosines, so where a one-joint arm puts its hand is a curve. The extended Kalman filter keeps a Gaussian belief and moves its spread through the models' tangents at the current estimate, the Jacobians. Near the estimate the tangent and the curve agree; away from it they part, and the farther the belief spreads, the more the straight line misses: about four times as much for twice the spread. Where the curve bends strongly over the spread the filter's covariance stops describing its real error, and it can grow overconfident and diverge.

The drawing is a tangent-rule stand. A one-joint arm swings over an upright protractor, its stylus riding in a groove engraved in the face: the hand's true path. A steel rule across the top touches the groove at the guess: the straight line the filter uses in its place. A cursor on the rule goes where the straight line puts the hand for the arm's angle, the same arc length along the rule as the stylus goes along the groove. The dial gauge on the cursor reaches its lit plunger down to the arm's tip, so the plunger's length is the miss; its dial turns once for 15 cm, and the plunger is marked every centimetre. Groove and rule carry the same graduations, five degrees of arc apart. Two pairs of stops, on the rim and on the rule, mark the spread either side of the guess.

Illustrative: a 50 cm arm and spreads from 5 to 40 degrees. The miss is that arm's exact geometry, the distance between the hand and the tangent's point for the same angle.

Thrun, Burgard and Fox, Probabilistic Robotics (2005); McGee and Schmidt (1985); Dellaert and Kaess (2006).

The unscented Kalman filter of Julier and Uhlmann keeps the Gaussian and pushes deterministically chosen sample points through the true nonlinearitySource 4. Particle filters drop the Gaussian assumption and carry the belief as a set of particlesSource 3.

Invariant filters on Lie groups remove the dependence on the estimate: in the contact-aided invariant EKF, neither the linearized error dynamics nor the linearized observation model depends on the current state estimateSource 16.

Factor graphs: keep the whole trajectory

Rauch, Tung and Striebel related filtered and smoothed estimates in 1965 and showed numerically that smoothing reduces errorsSource 18. In EKF-based SLAM, marginalizing old poses commits their linearized information to a Gaussian approximation that cannot be relinearized later. Full smoothing keeps the trajectory and can relinearize, though nonlinear optimization is not guaranteed to reach the global minimumSource 6 Source 9. The posterior over the trajectory X={x0,…,xT}X = \{x_0, \dots, x_T\} is a product of factors, one per measurement or motion constraintSource 6:

p(X∣Z)∝∏iϕi(Xi)p(X \mid Z) \propto \prod_i \phi_i(X_i)

Drawn as a bipartite graph of variable and factor nodes, this is a factor graph. Kschischang, Frey, and Loeliger's 2001 paper unified inference on such graphs under the sum-product algorithmSource 5. With Gaussian factors, the most probable trajectory solves one sparse nonlinear least-squares problemSource 6:

X⋆=arg⁡min⁡X∑i∥hi(Xi)−zi∥Σi2X^{\star} = \arg\min_X \sum_i \left\lVert h_i(X_i) - z_i \right\rVert_{\Sigma_i}^2

Dellaert and Kaess's 2006 Square Root SAM jointly estimates the SLAM trajectory and landmark map, assuming known data associations, Gaussian models, a uniform landmark prior and a fixed initial frame. It solves successive linearized systems, by QR on the measurement Jacobian or Cholesky on the information matrix, and variable ordering sets fill-in and costSource 6. The iSAM method updates only the part of the factorization a new measurement touchesSource 7.

iSAM2 adds a Bayes tree with incremental reordering and relinearization: an update re-eliminates the affected cliques and their ancestors, then reattaches unaffected subtrees. Thresholds trade accuracy for computation, and a large loop closure can cost as much as a batch solveSource 8.

GTSAM is a BSD-licensed C++ library that implements sensor fusion for robotics and computer vision using factor graphsSource 11. Version 4.3 moved to C++17 and added experimental CUDA nonlinear optimization and several legged-state-estimation implementationsSource 17. Building on Lupton and Sukkarieh's preintegration, Forster and colleagues' on-manifold version collapses anywhere from a few to hundreds of IMU readings between two keyframes into one factorSource 10.

Cadena and colleagues describe a classical SLAM period from 1986 to 2004, with EKF, Rao-Blackwellised particle-filter and maximum-likelihood approaches, and an algorithmic-analysis period from 2004 to 2015Source 9. In Rao-Blackwellized grid mapping, each particle carries its own mapSource 19.

The survey treats MAP estimation, often over factor graphs, as the de facto standard but notes EKF systems with state-of-the-art performance. The gap shrinks when EKF linearization is accurate, sliding windows are used and inconsistency is addressed, and graphs still face unbounded growth and information loss under sparsificationSource 9. The MSCKF sliding-window filter keeps 3D feature positions out of the state and is optimal up to linearization errorsSource 20, while OKVIS argues that nonlinear optimization offers superior accuracy and stays tractable through sparsitySource 21. Scene representation and mapping covers what a robot keeps from the estimate.

Where this meets the learned stack

Learned components mostly enter classical estimators as measurements with uncertainty. TLIO regresses 3D displacement and its uncertainty from IMU data and fuses both into a stochastic cloning EKFSource 22, and MAC-VO learns a metrics-aware keypoint covariance and uses it to weight pose graph optimizationSource 23.

A September 2026 paper from Linus Kramer, William Talbot, Olga Vysotska and Marco Hutter is an example. For robots on construction sites, they replace the observation model of a Monte Carlo localization particle filter with a network that matches LiDAR scans against the building mesh, trained only on scans simulated inside that mesh. On real-world datasets it outperformed diffusion-based and ScanContext++ baselines at 18 ms per callSource 12.

GAIT estimates legged-robot state without an explicit contact estimator and outperforms contact-aided model-based methods on a Unitree Go1Source 24.

Yuheng Qiu, Pieter Abbeel, Guanya Shi and colleagues at Amazon FAR, Carnegie Mellon and three other universities (October 2026) train inertial odometry from scratch without velocity or position labels: a teacher integrates the IMU over each short window, and a pose graph over many windows refines the targetsSource 32. On six datasets from pedestrians, drones, quadrupeds and a humanoid, average velocity error came within 0.07 m/s of a supervised network of the same architecture, though its trajectory error on the EuRoC drone flights was 10.23 m against the supervised network's 3.72 mSource 32. The teacher used a reference attitude to remove gravity, and the IMU bias must be calibratedSource 32.

Jiaxi Jiang, Marco Hutter, Christian Holz and colleagues at ETH Zurich (October 2026) estimate a humanoid's joint angles and world-space motion from ordinary video, training the pose decoder only on 128,000 synthetic images of sixteen humanoidsSource 33. With no real pose labels, joint-angle error on three real humanoids was 18 to 32% below the best baseline on eachSource 33.

Latent-dynamics world models act as learned belief states. PlaNet's latent dynamics model has deterministic and stochastic transition components trained with variational inferenceSource 25. DreamerV3 learns a model of the environment and improves its behaviour by imagining future scenariosSource 26.

Timing is part of the state

Fusing visual and inertial measurements requires each measurement's precise sampling timeSource 27, and most consumer cameras use rolling shutters that capture each pixel row at a slightly different timeSource 28. The camera-IMU offset can be a state variable, locally identifiable except in a few degenerate motionsSource 27; OpenVINS calibrates it in its sliding-window filterSource 29, and Kalibr estimates time offsets to a fraction of the smallest measurement periodSource 30.

Persistent directional residuals in per-sensor innovations point to calibration or timing bias instead of random noise. GrandTour, which its authors call the largest open-access legged-robotics dataset, supplies RTK-GNSS and total-station ground truthSource 31. The calibration guide covers temporal residuals, and the ROS 2 guide covers timestamped interfaces.