The Linear Kalman filter (abbreviated LKF, [2]) may be used for state filtration or estimation of linear stochastic discrete systems. It assumes that noise variables are sampled from multivariate gaussian distributions and takes into account apriori known parameters of these distributions (namely zero means and covariance matrices, which have to be specified by the user and are tunable parameters).
The LKF C++ class itself is templated. This has its advantages and disadvantages. Main disadvantage is that it may be harder to use if you're not familiar with C++ templates, which, admittedly, can get somewhat messy, espetially during compilation. Another disadvantage is that if used unwisely, the compilation times can get much higher when using templates. The main advantage is compile-time checking (if it compiles, then it has a lower chance of crashing at runtime) and enabling more effective optimalizations during compilation. Also in case of Eigen, the code is arguably more readable when you use aliases to the specific Matrix instances instead of having Eigen::MatrixXd and Eigen::VectorXd everywhere.
Template Parameters
n_states
number of states of the system (length of the vector).
n_inputs
number of inputs of the system (length of the vector).
n_measurements
number of measurements of the system (length of the vector).
This constructor should not be used if applicable. If used, the main constructor has to be called afterwards, before using this class, otherwise the LKF object is invalid (not initialized).
Applies the correction (update, measurement, data) step of the Kalman filter.
This method applies the linear Kalman filter correction step to the state and covariance passed in sc using the measurement z and measurement noise R. The updated state and covariance after the correction step is returned.
Parameters
sc
The state and covariance to which the correction step is to be applied.
z
The measurement vector to be used for correction.
R
The measurement noise covariance matrix to be used for correction.
Returns
The state and covariance after the correction update.
Applies the prediction (time) step of the Kalman filter.
This method applies the linear Kalman filter prediction step to the state and covariance passed in sc using the input u and process noise Q. The process noise covariance Q is scaled by the dt parameter. The updated state and covariance after the prediction step is returned.
Parameters
sc
The state and covariance to which the prediction step is to be applied.
u
The input vector to be used for prediction.
Q
The process noise covariance matrix to be used for prediction.
dt
Used to scale the process noise covariance Q.
Returns
The state and covariance after the prediction step.
Note
Note that the dt parameter is only used to scale the process noise covariance Q it does not change the system matrices A or B (because there is no unambiguous way to do this)! If you have a changing time step duration and a dynamic system, you have to change the A and B matrices manually.