Kalman Filters

Some information about Kalman Filters

A lot of my work has, historically, been based around (Ensemble) Kalman filters. On this page I have some resouces which I hope will help you get more to grips with them.

The underlying mathematics can be a little opaque, so I have tried to visualize the process here.

At the 2021 International Union of Radio Science (URSI) I gave a tutorial describing the derivation of the Ensemble Kalman Filter directly from Bayes’ Theorem. Unfortunately the tutorial was not recorded, but my notes are available to anyone who is interested:

However, the best way to learn about Kalman filters, is to play with them. Here is a fun little problem to get you thinking about them.

Imagine dropping a bouncy ball (vertically) from some height and watch it as it slowly comes to rest:

There are a whole host of variable parameters which will determine the profile of the bouncy ball including (the values in brackets are example values used to generate the above plot):

  • Initial height of ball (10)
  • Mass of ball (2)
  • Radius of ball (0.25)
  • Coefficient of restitution between ball and ground (0.8)
  • Air density (1.1)
  • Dynamic viscosity (1.7e-5)
  • Drag coefficient (0.3)

Example Python code of this bouncy ball model can be downloaded here.

It is a simple model but saves you having to code it up.

Now, given that I dropped a bouncy ball from 20 metres (initial height) and used an imperfect sensor which recorded a series of observations, use the Ensemble Kalman Filter to estimate the values of the other 6 parameters above (mass, radius, coefficient of restitution, air density, dynamic viscosity and the drag coefficient).

Notes:

  • use an internal model timestep of 0.01s (the default in the provided Python code)
  • to create the ensemble, generate a wide range of possible (but realistic) bouncy ball states (e.g. use dynamic viscosities between \(1.5\times 10^{-5}\) and \(2\times 10^{-5}\))
  • Use the provided Python code to both define the Ball and propagate it forward