26 #ifndef __ITEREXTKALMAN_HH__
27 #define __ITEREXTKALMAN_HH__
29 #include <Base/Debug/Debug.hh>
30 #include <Base/Math/Matrix.hh>
31 #include <Base/Math/Vector.hh>
32 #include <MathAlgo/SVD.hh>
67 bool bUseStable=
false);
76 { state = statePrior_; }
81 { cov = covariancePrior_; }
86 { state = statePost_; }
91 { cov = covariancePost_; }
106 systemStateDim_ = state_.
size();
118 Q_ = processNoiseCov;
142 BIASERR(
"StateTransition not implemented in base class!");
161 BIASERR(
"GetTransitionJacobian not implemented in base class!");
182 const unsigned int index=1)
184 BIASERR(
"StateTransition not implemented in base class!");
201 const unsigned int index=1)
203 BIASERR(
"GetMeasureJacobian not implemented in base class!");
216 const unsigned int index);
280 #endif // __ITEREXTKALMAN_HH__
BIAS::Vector< double > statePost_
contains the corrected (a posteriori) system estimate
BIAS::Matrix< double > WT_
virtual void GetTransitionJacobian(const BIAS::Vector< double > &state, const BIAS::Vector< double > &control, BIAS::Matrix< double > &transJacobian, BIAS::Matrix< double > &transErrorJacobian)
Returns the jacobian matrices (by state and process noise) for state transition function.
double iterEps_
break update iteration if update improvement is smaller than iterEps
void GetPosterioriState(BIAS::Vector< double > &state) const
Returns the last corrected (a posteriori) system state.
Iterated Extended Kalman-filter (IEKF).
BIAS::Matrix< double > AT_
unsigned int maxIters_
number of maximal iterations for iterated update
computes and holds the singular value decomposition of a rectangular (not necessarily quadratic) Matr...
Subscript num_cols() const
unsigned int processNoiseDim_
dimension of process noise
BIAS::Vector< double > state_
contains the actual system estimate
void SetState(BIAS::Vector< double > &state, BIAS::Matrix< double > &cov)
Set a modified a state.
BIAS::Matrix< double > covariancePost_
the covariance matrix corresponding to statePost_
void SetProcessCov(const BIAS::Matrix< double > &processNoiseCov)
Set the process noise covariance – Q in [1] — May be updated for every timestep! —.
BIAS::Matrix< double > covariancePrior_
the covariance matrix corresponding to statePrior_
BIAS::Matrix< double > HT_
BIAS::Vector< double > statePrior_
contains the last prediction (a priori/initial) system estimate
virtual ~IteratedExtendedKalman()
Virtual standard destructor.
void GetPosterioriCovariance(BIAS::Matrix< double > &cov) const
Returns the updated (a posteriori) system state covariance.
BIAS::Matrix< double > VT_
BIAS::Matrix< double > Identity_
identity matrix frequently used in Update
void GetPriorCovariance(BIAS::Matrix< double > &cov) const
Returns the last predicted (a priori) system state covariance.
unsigned int systemStateDim_
dimension of state space
BIAS::Matrix< double > covariance_
the covariance matrix corresponding to state_
const bool bUseStable_
flag for using numerically more stable computations for update (higher computation effort) ...
virtual void StateTransition(const BIAS::Vector< double > &state, const BIAS::Vector< double > &control, BIAS::Vector< double > &prediction)
Implements the statetransition-function (f in [1]).
virtual void MeasurementPrediction(const BIAS::Vector< double > &state, BIAS::Vector< double > &measurePred, const unsigned int index=1)
Implements the measurement prediction function (h in [1])! Since more than one measurement is allowed...
BIAS::SVD svd_
needed for matrix inversion
Subscript num_rows() const
virtual void GetMeasureJacobian(const BIAS::Vector< double > &state, BIAS::Matrix< double > &measJacobian, BIAS::Matrix< double > &measErrorJacobian, const unsigned int index=1)
Returns the jacobian matrix of the measurement-function with respect to the state (H in [1]) as well ...
void GetPriorState(BIAS::Vector< double > &state) const
Returns the predicted (a priori) system state.
BIAS::Matrix< double > Q_
system noise cov.