You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
The text was updated successfully, but these errors were encountered:
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.
The text was updated successfully, but these errors were encountered: