Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Could anyone explain and/or post C code for the algorithm of advance kalman filter?

Tags:

c

algorithm

I need an explanation of advance kalman filter algorithm. Preferably a C code, but only the algorithm will work for me.

like image 397
Badr Avatar asked Jan 06 '10 04:01

Badr


1 Answers

Kalman filters are specialized versions of Wiener filters. Specifically, Kalman filters take information about a problem domain and enhance a Wiener filter by applying this domain specific knowledge. I've found the Wikipedia page to be an excellent reference source for understanding the particulars of the algorithm.

Without repeating the specific details here (no linear algebra imagery functions), Kalman filters estimate future state incrementally (as do Wiener filters, for that matter). In particular, we estimate the state, apply problem domain specific noise estimations and state change approximations, and then iterate. That is to say, we take current observations of state, filter those observations, predict the next state, then combine that output to produce some new next state observation.

I've found Kalman filters quite useful for predicting motion paths. Since motion paths are smooth Kalman filters work particularly well -- motion can easily be predicted using past known observations of state. So suppose you're in a car driving down the road, you'd record the current coordinates of the car as the current state. You then filter past observations of state (your previous locations) to predict the next point the car will be (in time). Note that you can apply laws of physics (say, momentum) to customize this filter and come up with quite reasonabole results. Random changes in speed or direction have some impact on the predictions.

Take a look at this C implementation you can see that we have two major functions in running a Kalman filter estimate and update (the wikipedia article talkes about these, but calls estimate "predict").

Ultimately you're going to need to determine some very specific statistics for the problem with which you wish to apply a Kalman filter. In particular, you need to generate/record/observe statistics on how the variance of the noise signal you observe evolves over time. It's assumed the process you're predicting is also stochastic, and as such you'll need to estimate its statistics as well.

like image 71
Mark Elliot Avatar answered Sep 28 '22 17:09

Mark Elliot