Re: [Bayes++] Bayes++ w/EKF and a non-linear equation: How to model?
Brought to you by:
mistevens
|
From: Michael S. <ma...@mi...> - 2006-12-12 21:00:30
|
On Monday, 11. December 2006 17:24, Michael Simon wrote:
> Hello, everyone.
>
> I am attempting to use the Covariance_filter as an EKF for a non-linear
> model. However, I do not understand which type of model class to use,
> and how to specify the data for the models, even after looking at the
> Bayesian Filtering overview. I'm pretty sure I need to use a
> linrz_predict_model (or something like that) but beyond that...
'Linrz_predict_model' is definately what you want.
> The main problem is that the elements of the f function I want to use
> for the model are exponential. It's non-linear, with noise, but no
> control (it's essentially 'the object I'm trying to predict is walking
> around randomly, but within the laws of physics') How do you specify
> that?
No-control is fine. Control inputs just make the implementation more complex!
I don't understand how you model can be 'exponential' when the physics are of
something moving around at random. Or do you mean that you have exponentially
correlated noise in you model?
> I've been looking at the Welch and Bishop introduction and trying
> to compare back to Bayes++, but with no avail. I'm fairly sure I could
> use the libraries if my model was linear, but I don't quite see how to
> put the non-linearity in there.
I not sure of where you are stubling. Would it be possible to post the
equations that model your system?
The Covariance_filter implements the EKF in a fairly standard form. It should
be usable for any non-linear problem that can be solved by an EKF.
You need to turn the maths of you model into 3 things:
f(x) : This should be easy once you have discrete time state equation of the
system!
Fx : Is the Jacobian of f(x)
GqG' : This is often written as the symmetric matrix Q and is the covariance
of the addative noise in you discrete state equations. Generally it is
possible (an physically more meaningful) to write this a coupling matrix G
and an noise variance q. If this is not possible then you can numerically
obtain G and q from Q with the following:
// Equivalent de-correlated form as GqG'
Float rcond = Bayesian_filter_matrix::UdUfactor (Qtemp, Q);
rclimit.check_PSD(rcond, "decorrelating Q not PSD");
Bayesian_filter_matrix::UdUseperate (G, q, Qtemp);
Hope this helps you in the right direction,
Michael
--
___________________________________
Michael Stevens Systems Engineering
34128 Kassel, Germany
Phone/Fax: +49 561 5218038
Navigation Systems, Estimation and
Bayesian Filtering
http://bayesclasses.sf.net
___________________________________
|