Kalman Filter

(Handwritten) notes from my URSI ECR Tutorial:

If you want to have a go at playing with an Ensemble Kalman Filter here is a fun little problem.

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)
• 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.5e-5 and 2e-5)
• Use the provided Python code to both define the Ball and propagate it forward