Robotics
← Roadmap/State Estimation

Sensor Fusion

Combining IMU, GPS, cameras, LiDAR into one estimate.

Progress0/23 questions
hardState EstimationSkip to practice questions ↓

Prerequisites

Why it matters in robotics

Almost every real robot fuses noisy, asynchronous sensors — IMU, GPS, wheel odometry, cameras, LiDAR — into one consistent state estimate. A predict-update cycle combines a model of how the robot's state evolves with each new noisy measurement, weighting each sensor by how much it should be trusted, while time synchronization, coordinate frame conventions, and outlier rejection determine whether the fusion succeeds. It is what lets a robot stay localized through GPS dropout, drift, and individual sensor failures.

What to study

  • Bayes filter foundations and the predict-update cycle: KF, EKF, and UKF, plus when linearization breaks down
  • How measurement and process noise covariances weight each sensor, and why consistent, well-tuned covariances matter as much as the mean
  • Loosely vs tightly coupled fusion and filtering vs smoothing/factor-graph approaches (e.g. EKF-based VIO vs optimization-based VINS)
  • Practical engineering: time synchronization, coordinate frames and extrinsic calibration, IMU bias/drift, GPS dropout, and outlier/chi-squared gating

Where to study

  1. How a Kalman Filter Works, in PicturesArticleTim Babb (Bzarg)· ~35 min
  2. Kalman Filter & EKFVideoCyrill Stachniss· ~1 hr

Cheatsheet

Symbols used below

xxfused state estimate
PPstate covariance
RiR_imeasurement noise covariance of sensor ii
QQprocess noise covariance
KiK_iKalman gain for sensor ii's update
h(x)h(x)measurement model — predicted measurement given state xx
SSinnovation covariance (uncertainty of the predicted measurement)

One predict, many updates

Fusion is the same predict-update cycle as a single-sensor filter, just with one update per incoming measurement stream: predict the state forward, then apply an update for whichever sensor's reading just arrived, each with its own RiR_i.

Asynchronous rates (IMU at 200 Hz, GPS at 1 Hz, camera at 30 Hz) fall out naturally — you only update with a sensor when its data lands.

Trust is set by the covariances

A sensor with small RiR_i pulls the estimate hard toward its reading; large RiR_i lets the prediction dominate. If a sensor's true noise is worse than its stated RiR_i, the filter over-trusts it and the estimate becomes overconfident and eventually wrong — tuning QQ and RR correctly matters as much as the mean equations.

Outlier rejection via gating

Before accepting a measurement, check its Mahalanobis distance against the predicted state:

d2=(zh(x))S1(zh(x))d^2 = (z - h(x))^\top S^{-1} (z - h(x))

where SS is the innovation covariance. Compare d2d^2 against a chi-squared threshold for the measurement dimension; reject or down-weight measurements that fail the test instead of letting a spurious reading corrupt the fused estimate.

Bridging GPS dropout

Between GPS updates, the filter keeps predicting from IMU/odometry alone — accurate short-term but drifting, since gyro and accelerometer biases integrate into unbounded position error over time.

Each new GPS fix (or loop closure, or map match) resets that accumulated drift; fusion is precisely what makes the combination outperform either sensor run alone.

Extrinsics and time alignment

Every sensor measures in its own frame at its own clock. Fusion requires a known extrinsic transform between sensor frames (and the body frame) and either hardware timestamp sync or interpolation/buffering to align measurements to a common time base — get either wrong and the fused estimate is consistently biased, not just noisy.

prediction (wide → uncertain)measurementfused estimate (sharper)
The update fuses two Gaussians into a sharper one that sits between them — pulled toward whichever source is more certain (smaller variance).
 Loosely coupledTightly coupled
What's fusedEach sensor's own pre-computed estimate (e.g. GPS position fix)Raw/low-level measurements (e.g. pseudoranges, pixel tracks) directly in one filter
Cross-sensor correlationsDiscarded — each sub-estimate treated as independentPreserved — exploited for a more accurate joint estimate
ModularityHigh — swap sensors independentlyLow — filter is coupled to each sensor's raw model
Degradation when a sensor drops outGraceful — remaining estimates keep workingCan be more brittle without careful design
start— true loop— IMU dead-reckoningbias + noise integrate into unbounded drift — the loop never closes
Integrating IMU bias and noise accrues unbounded drift: over a long loop the dead-reckoned estimate no longer closes — which is why an IMU needs a global reference (GPS, vision, map).

Application focus

Select an application above.

Practice questions (23)