This package implements the following Kalman filters:
1) Standard Kalman Filter
2) Extended Kalman Filter
3) Dual Kalman Filter
4) Square Root Kalman Filter
This package also contains instructive examples for each filter type demonstrating their practical application.
In all 4 cases, the KF functions accept as input noisy samples of a multi-dimensional system and produce the KF estimate of the true system state based on the time-varying process/noise covariances inherent in the noisy samples.
Exponentially-weighted (or unweighted) moving averages are used to estimate the time-varying system covariances from the noisy measurements.
The Standard Kalman Filter is the most basic KF implementation. It assumes a model that the noisy measurements contain the true system state plus white noise.
The Extended Kalman Filter is a generalization of the Standard Kalman Filter that allows the user to specify a nonlinear system model, which is then iteratively linearized during EKF execution.
The Dual Kalman filter simultaneously solves two Standard Kalman filter problems:
1) Fits an auto-regressive model to the data and applies a Kalman Filter to update the AR model
2) Applies the AR model at each iteration before performing the Standard KF update
Square Root Kalman Filters are a more robust and numerically stable method to perform Standard/Dual Kalman Filtering, especially when the covariance matrices of interest are ill-conditioned or nearly not positive definite. The Square Root Kalman Filtering idea is to propagate the process error covariance P in square root form P = U D U', where U and D are iteratively updated and P is not explicitly computed. Doing so will guarantee P is positive definite and thus increase the numerically stability of the KF.