[Bayes++] Extended Kalman Filter, Unscented Kalman Filter questions
Brought to you by:
mistevens
From: Ben P. <bpo...@gm...> - 2010-02-21 07:11:15
|
Hi all, First of all, I want to say that I am fairly new to filtering, so please let me know if I am making conceptual mistakes here. I have read through the old mailing list archives, but I still have a few questions about how I should go about implementing two filters. So I am working on setting up Bayes++ to implement the two filters I mentioned above, an EKF and a UKF. The state of the system I am dealing with is described in differential form (the specific equations are generated at runtime): Xk' = f(Xk) + noise f in general can be a highly nonlinear function. The measurement model is linear. The first filter I first set about implementing is the Unscented Kalman Filter. Using runge-kutta numerical methods I can accurately do a state update between measurements (which may be quite far apart), so I extended Addative_predict_model and overrode f(X) with a method to do the numerical integration to advance the state a time step, and then just instantiated an Unscented_filter and passed it this as a predict model. Is this the correct way to go about implementing an Unscented filter for this system? It seems to perform well, but I'm hardly a trained eye... My goal is to next implement the Extended Kalman Filter, but I am a bit stuck here. Given that f represents the state of my system with respect to time, I'm not sure how I'd go about finding the derivative with respect to my state variables (eg to calculate the covariance update.) What I think I need are update equations of the form here: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=85891&userType=inst ("Design and Implementation of an Extended Kalman Filter for the State Estimation of a Permanent Magnet Synchronous Motor", the paper basically describes the situation I'm facing.) I'm not sure how how I would go about extending the EKF here to use numerical methods for state update and covariance update... how would you suggest doing this? Sorry if what I've asked doesn't make sense. Let me know if I should clarify anything I've written here. Thanks in advance, Ben Podgursky |