In the spring of 2001 the Kalman Filter team of UNC-CH COMP 145 developed a Java-based Kalman Filter Learning Tool that (we hope) will provide some understanding and intuition about the behavior of the Kalman filter. Because the software is to be primarily used as a teaching aid, we have attempted to keep the interface relatively simple. The input choices are limited to avoid overwhelming the user. While the user can change the magnitude of the measurement error (see below) the parameters are otherwise fixed at realistic and interesting values. Using the graphical interface, the user can edit the simulation settings and then plot the results over a 50 second simulation. They can also step through the simulation to see the intermediate filter variable values throughout the simulation. Finally, the application version (see below) allows the user to locally save all of the intermediate variable values in a tab-delimited file that can later be loaded into Matlab, Excel, etc. for further analysis.
The Kalman Filter Learning Tool tool simulates a relatively simple example setup involving estimation of the water level in a tank.
Water dynamics. The user can independently choose both the actual and modeled dynamics of the water. The choices include no motion (the default), filling, sloshing, or both filling and sloshing.
Measurement model. The user can also choose the method of measurement. The measurement model choices include two options that are commonly used (for example) in toilet tanks: a vertical level (linear) float-type sensor, or an angular (non-linear) float-type sensor. A diagram depicting the two case is shown below. The user is also allowed to increase or decrease (by a factor of 10) the magnitude of the random linear or angular measurement noise.
A more extensive internal (informal) document mathematically describing the models can be found here. In addition, you are welcome to download a set of unsupported Matlab files that implement the same simulation as the Java-based tool.
Return to the Kalman filter web page
Return to the UNC-CH Tracker Project web page.