I am learning about the Kalman filter, and having difficulty understand how to construct a Kalman filter when velocities are introduced. Let's say we are tracking the
(x-position, y-position) of an object, and we have a sensor which estimates this position. One way to construct the Kalman filter is to exclude any velocity, such that the prior prediction of the next position is just the old position.
But a better way would be to include the object's velocity. The state vector would then include the
state = (x-position, y-position, x-velocity, y-velocity). The value of
x at the next timestep would then be
x + dt * x-velocity, and similarly for
My question is: how do we update
y-velocity? Whilst we have a sensor which estimates positions, we don't have a sensor which estimates velocities. Therefore, we cannot update the velocities using the observation model. We could then assume that the velocity doesn't change, but this is very limiting in my application, as I know that the velocity does change significantly.
One idea I had was to emulate an observation model, by saying that the measured velocity is the difference between the current position and the previous position. Then, I could use an observation model in the same way as with the position measurement. However, this feels like a bit of a hack, since this is not a sensor in the true sense; I am just emulating a sensor using old data. And it seems like this could be incorporated in a more direct way, than by "pretending" I have some sensor which gave me this data.
Can somebody please help me understand this?? Thanks!