Skip to content

The Kalman Filter Idea

Level: High School (Ages 16-18)

Putting It All Together

You've learned all the pieces. Now let's see how they fit together into the Kalman Filter!

The Big Picture

The Kalman filter is an algorithm that: 1. Keeps track of what you know (state + uncertainty) 2. Predicts what will happen next 3. Measures what actually happened 4. Combines prediction and measurement optimally 5. Repeats forever

It's like having a really smart assistant that: - Remembers everything - Makes educated guesses - Listens to sensors - Figures out the truth - Never stops learning

The Two-Step Dance

Step 1: PREDICT (Time Update)

"What do I expect to happen?"

Inputs: - Previous state estimate - Previous uncertainty - Motion model - Time elapsed

Outputs: - Predicted state - Predicted uncertainty (larger!)

Example: Tracking a car

Previous: position=100m ± 2m, velocity=20m/s ± 1m/s
Time: 1 second passes
Predicted: position=120m ± 3m, velocity=20m/s ± 1m/s

Step 2: UPDATE (Measurement Update)

"What did I actually observe?"

Inputs: - Predicted state - Predicted uncertainty - Measurement - Measurement uncertainty

Outputs: - Updated state (weighted average!) - Updated uncertainty (smaller!)

Example: Continuing from above

Predicted: position=120m ± 3m
Measured: position=118m ± 4m
Updated: position=119.3m ± 2.4m

Notice: Uncertainty decreased from ±3m to ±2.4m!

Why It's Optimal

The Kalman filter is mathematically optimal for linear systems with Gaussian noise. This means:

  1. No other algorithm can do better (for these conditions)
  2. It minimizes the error in your estimates
  3. It's the best possible weighted average

What "Optimal" Means

Imagine 1000 different ways to combine prediction and measurement. The Kalman filter automatically finds the ONE way that gives the smallest average error!

The Kalman Filter Loop

Initialize:
  - Set initial state
  - Set initial uncertainty

Loop forever:
  1. PREDICT:
     - Use motion model to predict next state
     - Increase uncertainty (process noise)

  2. UPDATE:
     - Get measurement from sensor
     - Calculate Kalman Gain
     - Update state (weighted average)
     - Decrease uncertainty

  3. Repeat

Detailed Example: Tracking a Train

Let's track a train moving at constant velocity.

Setup

State: [position, velocity] Motion model: Constant velocity Sensor: GPS (measures position only)

Initial Conditions (t=0)

State: [0m, 25m/s]
Uncertainty: P = [10² 0  ] = [100  0]
                 [0  5² ]   [0   25]

Position uncertainty: ±10m Velocity uncertainty: ±5m/s

Time t=1s: PREDICT

Motion model:

new_position = old_position + velocity × Δt
new_velocity = old_velocity

Predicted state:

position = 0 + 25×1 = 25m
velocity = 25m/s
State: [25m, 25m/s]

Predicted uncertainty (grows!):

P = [144  0] (position uncertainty grew to ±12m)
    [0   25] (velocity uncertainty stayed ±5m/s)

Time t=1s: UPDATE

Measurement: GPS says position = 23m ± 5m

Kalman Gain (how much to trust measurement):

K = Predicted_Uncertainty / (Predicted_Uncertainty + Measurement_Uncertainty)
  = 144 / (144 + 25)
  = 144 / 169
  = 0.85

K=0.85 means trust the measurement quite a bit!

Updated position:

new_position = predicted + K × (measured - predicted)
             = 25 + 0.85 × (23 - 25)
             = 25 + 0.85 × (-2)
             = 25 - 1.7
             = 23.3m

Updated uncertainty (decreases!):

new_uncertainty = (1 - K) × predicted_uncertainty
                = (1 - 0.85) × 144
                = 0.15 × 144
                = 21.6
                = ±4.6m

Much more certain now! (±4.6m vs ±12m)

Final state at t=1s:

State: [23.3m, 25m/s]
Uncertainty: [21.6  0  ]
             [0    25 ]

Time t=2s: PREDICT

position = 23.3 + 25×1 = 48.3m
velocity = 25m/s

Uncertainty grows again...

And the cycle continues!

Key Insights

Insight 1: Uncertainty Oscillates

PREDICT → Uncertainty increases
UPDATE → Uncertainty decreases
PREDICT → Uncertainty increases
UPDATE → Uncertainty decreases
...

Over time, it settles to a steady value!

Insight 2: Kalman Gain Adapts

  • When prediction is certain: K is small (trust prediction)
  • When measurement is certain: K is large (trust measurement)
  • It automatically adjusts!

Insight 3: Information Never Lost

Every measurement improves your estimate. Even noisy measurements help!

Insight 4: Works in Real-Time

You don't need to wait for all data. Process measurements as they arrive!

What Makes It "Kalman"?

Rudolf Kalman invented this in 1960 for NASA. What made it revolutionary:

  1. Recursive: Only needs current state, not all history
  2. Optimal: Mathematically proven to be best possible
  3. Efficient: Fast enough to run in real-time
  4. General: Works for many different problems

Assumptions and Limitations

The Kalman filter works best when:

✓ Good Assumptions

  1. Linear system: State changes linearly
  2. Gaussian noise: Errors follow bell curve
  3. Known models: You know how things move
  4. White noise: Errors are independent

✗ Limitations

  1. Non-linear systems: Need Extended Kalman Filter
  2. Non-Gaussian noise: Need Particle Filter
  3. Unknown models: Need adaptive filters
  4. Outliers: Need robust methods

Comparison to Other Methods

Simple Average

Estimate = Average of all measurements

Problems: - Treats all measurements equally - Doesn't use motion model - Doesn't adapt to changing uncertainty

Moving Average

Estimate = Average of last N measurements

Problems: - Arbitrary window size - Doesn't use motion model - Doesn't weight by uncertainty

Kalman Filter

Estimate = Optimal weighted average of prediction and measurement

Advantages: - Uses motion model - Weights by uncertainty - Adapts automatically - Mathematically optimal

Real-World Success Stories

Apollo Moon Landing (1960s)

The Kalman filter guided Apollo spacecraft to the moon! It combined: - Inertial measurements (accelerometers, gyros) - Star tracker observations - Ground radar

GPS Navigation (1990s-present)

Your phone uses Kalman filtering to: - Combine GPS satellites - Use motion sensors - Smooth out noise - Predict position between updates

Self-Driving Cars (2010s-present)

Autonomous vehicles use Kalman filters to: - Fuse camera, radar, lidar - Track other vehicles - Estimate own position - Predict future states

Weather Forecasting

Meteorologists use Kalman filtering to: - Combine weather models - Incorporate measurements - Update forecasts - Reduce uncertainty

Practice Problems

Problem 1: Conceptual Understanding

A robot is tracking its position. Answer true or false:

a) Uncertainty always decreases over time b) Kalman Gain is always between 0 and 1 c) Predictions are always more accurate than measurements d) The filter needs to store all past measurements

Problem 2: Predict-Update Sequence

Given: - State: [position=50m, velocity=10m/s] - Position uncertainty: ±5m - Velocity uncertainty: ±2m/s

After 2 seconds: a) What's the predicted position? b) If measurement is 68m ± 8m, calculate Kalman Gain c) What's the updated position?

Problem 3: Uncertainty Analysis

Initial uncertainty: ±10m After PREDICT: ±12m After UPDATE with measurement (±5m): ?

Calculate the updated uncertainty.

Problem 4: Kalman Gain Interpretation

For each scenario, predict if K will be close to 0, 0.5, or 1:

a) Prediction: ±2m, Measurement: ±20m b) Prediction: ±20m, Measurement: ±2m c) Prediction: ±5m, Measurement: ±5m

Problem 5: Real-World Application

You're tracking a drone with: - GPS: Updates every 1 second, ±5m accuracy - IMU: Updates every 0.01 seconds, drifts ±0.1m per second

Design a Kalman filter strategy: a) What's your state vector? b) When do you PREDICT? c) When do you UPDATE? d) Which sensor is more reliable short-term? Long-term?

Try It Yourself!

Experiment 1: Manual Kalman Filter

Track a rolling ball: 1. Measure position at t=0, 1, 2 seconds 2. Calculate velocity from first two points 3. PREDICT position at t=3 4. MEASURE actual position at t=3 5. UPDATE estimate using weighted average 6. Repeat for t=4, 5, 6...

Experiment 2: Uncertainty Tracking

  1. Start with position estimate: 0 ± 10m
  2. PREDICT after 1 second (add ±2m process noise)
  3. UPDATE with measurement (±5m)
  4. Track how uncertainty changes over 10 cycles
  5. Plot uncertainty vs time

Experiment 3: Kalman Gain Behavior

For different uncertainty ratios: 1. Prediction: ±1m, Measurement: ±10m → Calculate K 2. Prediction: ±5m, Measurement: ±5m → Calculate K 3. Prediction: ±10m, Measurement: ±1m → Calculate K

Plot K vs uncertainty ratio.

Experiment 4: Comparison

Track the same object with: 1. Simple average of all measurements 2. Moving average (last 3 measurements) 3. Kalman filter

Which is most accurate? Most responsive?

Key Concepts

  1. Two-step process: Predict, then Update
  2. Uncertainty oscillates: Grows in predict, shrinks in update
  3. Kalman Gain: Automatically balances prediction vs measurement
  4. Optimal: Best possible linear estimator
  5. Recursive: Only needs current state
  6. Real-time: Processes data as it arrives

What's Next?

The next chapter will implement a complete 1D Kalman filter in Python. You'll see the actual code and run it yourself!


Key Vocabulary - Kalman Filter: Optimal recursive state estimator - Time Update: Prediction step - Measurement Update: Correction step - Kalman Gain: Optimal weighting factor - Recursive: Uses only current state, not full history - Optimal: Minimizes mean squared error