The difference is simple. In a discrete Kalman Filter you have discrete System dynamics and in a continuous Kalman Filter, also called Hybrid Kalman Filter, the system's dynamics are continuous. For your case the latter is what you are going to need.
Difference in implementation:
The discrete Kalman filter is the "classic" version of the filter. The prediction (or prior) update step simply propagates the system state from [k]
to [k+1]
using the discrete system dynamics.
With a continuous time system you can't do that since the system is given as a set of differential equations. With a continuous system the prediction step of the Kalman Filter changes as you now need to solve the ODE for the times corresponding to k
. The way you solve the ODE is up to you. The easiest is probably the Euler Method and some more advanced ways are the Runge Kutta schemes for example. The equations you are solving are
x_dot(t) = f(t, x(t))
P_dot(t) = F(t)*P(t) + P(t)*F(t)' + Q(t)
Using Euler Method the prior update would look as follows:
x[k+1] = x[k] + dT * f(k, x[k])
P[k+1] = P[k] + dT * ( F[k]*P[k] + P[k]*F[k]' + Q[k])
for the sake of simplicity I just set t=k
which in reality is of course not the case and depends on your sampling Time.
The measurement update is the same for discrete and continuous time Kalman since the measurements are assumed to always be discrete (sensors will always send at some rate < infinity) and the internal states of the filter are also discrete.
Note: Doing Continuous Time Kalman Filter is NOT the same as discretizing your continuous system and then apply discrete time Kalman Filter.