Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Variable time step in Kalman Filter

I am using the Kalman Filter opencv library to use the Kalman estimator capabilities.

My program does not enforce real time recursion. My question is, when the transition matrix has elements dependent on the time step, do I have to update the transition matrix every time use it (in predict or correct) to reflect the time passed since last recursion?

Edit: The reason I ask this is because the filter works well with no corrections on the transition matrix but it does not when I update the time steps.

like image 442
Paulo Neves Avatar asked Aug 05 '14 22:08

Paulo Neves


People also ask

How to use Kalman filter to predict the next time step?

The current time step is denoted as n (the timestep for which we want to make a prediction). The ultimate goal of the Kalman filter is to predict the next observation of the observed variable Z by taking the best estimation of the hidden state variable X. One can then predict the next observation of Z by reconstructing it using X.

What is the difference between RLS and Kalman filter?

The Kalman Filter takes the RLS algorithm a step further, it assumes that there is Gaussian noise in the system. When predicting, the Kalman filter estimates the mean and covariance of the hidden state. The algorithm is essentially constructing a distribution around the predicted point, with the mean being the maximum likelihood estimation.

What is the H matrix in a Kalman filter?

On the H Matrix The Kalman Filter uses the state-to-measurement matrix, H, to convert the system state estimate from the state space to the measurement space. For some Kalman Filter applications, this is a matrix of zeros and ones. For other applications that use the Extended Kalman Filter, the H matrix is populated with differential equations.

How do you calculate the Kalman gain for a time series?

The Kalman gain K at a timestep n is given by the previous estimation of the uncertainty P, the linear function H, and the inverse of the innovation covariance S. With these equations, we can now implement our own Kalman Filter. A simple auto-regressive time series data will be used.


1 Answers

Many descriptions of the Kalman Filter write the transition matrix as F as if it's a constant. As you have discovered, you have to update it (along with Q) on each update in some cases, such as with a variable timestep.

Consider a simple system of position and velocity, with

F = [ 1 1 ] [ x ]
    [ 0 1 ] [ v ]

So at each step x = x + v (position updates according to velocity) and v = v (no change in velocity).

This is fine, as long as your velocity is in units of length / timestep. If your timestep varies, or if you express your velocity in a more typical unit like length / s, you will need to write F like this:

F = [ 1 dt ] [ x ]
    [ 0 1  ] [ v ]

This means you must compute a new value for F whenever your timestep changes (or every time, if there is no set schedule).

Keep in mind that you are also adding in the process noise Q on each update, so it likely needs to be scaled by time as well.

like image 148
Ben Jackson Avatar answered Nov 23 '22 14:11

Ben Jackson