Sensor Fusion
Combining IMU, GPS, cameras, LiDAR into one estimate.
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
Cheatsheet
Symbols used below
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 .
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 pulls the estimate hard toward its reading; large lets the prediction dominate. If a sensor's true noise is worse than its stated , the filter over-trusts it and the estimate becomes overconfident and eventually wrong — tuning and correctly matters as much as the mean equations.
Outlier rejection via gating
Before accepting a measurement, check its Mahalanobis distance against the predicted state:
where is the innovation covariance. Compare 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.
| Loosely coupled | Tightly coupled | |
|---|---|---|
| What's fused | Each 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 correlations | Discarded — each sub-estimate treated as independent | Preserved — exploited for a more accurate joint estimate |
| Modularity | High — swap sensors independently | Low — filter is coupled to each sensor's raw model |
| Degradation when a sensor drops out | Graceful — remaining estimates keep working | Can be more brittle without careful design |
Application focus
Practice questions (23)
- EKF Consistency, Linearization Error, and Choosing Between EKF and UKFhard
- Static 1D Fusion: Optimal Inverse-Variance Weighting and Fused Variancehard
- Handling old / delayed (out-of-sequence) measurementsInterviewhard
- A confident but wrong measurement (small covariance, large error)Interviewhard
- State estimation in GPS-denied environmentsInterviewhard
- Estimating vehicle heading from IMU yaw rate and camera lane linesInterviewhard
- 2D vs 3D ego-state estimation, and IMU-yaw drift over a 1 km loopInterviewhard
- Handling high-bandwidth / high-rate sensors in a fusion systemInterviewmedium
- System design: localization for a robot in orchard / vineyard rowsInterviewhard
- System design: odometry for an RC car doing hoops and jumpsInterviewhard
- How do you fuse multiple sensory inputs?Interviewmedium
- Early vs late fusion, and how each handles delayed measurementsInterviewhard
- Fusing measurements arriving at different frequenciesInterviewmedium
- Interpolation-based vs filtering-based fusionInterviewhard
- Fusing synchronized measurementsInterviewmedium
- Fusing lidar and camera for a trackerInterviewhard
- Fusing multiple lidars running at different frequenciesInterviewhard
- Orientation from IMU only — and handling driftInterviewhard
- System design: ML-based odometry for an AV (IMU + GPS + wheel odometry)Interviewhard
- Wheel-odometry velocity on a skid-steer robotInterviewhard
- Dealing with unsynchronized sensor readingsInterviewhard
- Accumulating IMU readings in the filterInterviewhard
- Modeling wheel slipInterviewmedium