Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The algorithm in performUTforUKF #1

Open
svendvn opened this issue Mar 6, 2019 · 0 comments
Open

The algorithm in performUTforUKF #1

svendvn opened this issue Mar 6, 2019 · 0 comments

Comments

@svendvn
Copy link

svendvn commented Mar 6, 2019

First off, great document! - it has been very helpful to me. I have just started learning about Kalman filters and I was trying to implement the UKF myself, and I met some inconsistencies trying to simultaneously follow the code in this document and "Unscented Kalman Filter Tutorial" (Terenaju, 2011) and "On Unscented Kalman Filtering for State Estimation of Continuous-Time Nonlinear Systems" (Saarka, 2007);

In contrast to Terenaju and Saarka, the function performUTforUKF calculates the covariance without adding the covariance matrix of the dynamic equation, say, Qk. That is, performUTforUKF computes
covdyn = errdyn.dot((self.wc * errdyn).T)
instead of
covdyn = errdyn.dot((self.wc * errdyn).T)+Qk

Relatedly, In contrast to Saarka (and perhaps also Terenaju), the function performUTforUKF propagates the already transformed sigma points in the update step. That is, performUTforUKF computes
SPobs = obsfun(SPdyn)
instead of
SPobs = self.constructSigmaPoints(meandyn, covdyn)

Is it two different algorithms for the UKF? Or are some of them specified wrongly? Any insight to this would be useful.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant