27 #define AnalyticSys AnalyticSystemModelGaussianUncertainty 28 #define AnalyticMeas AnalyticMeasurementModelGaussianUncertainty 33 , _nr_iterations(nr_it)
34 , _innovationChecker(I)
35 , _x(prior->DimensionGet())
36 , _x_i(prior->DimensionGet())
37 , _x_i_prev(prior->DimensionGet())
38 , _J(prior->DimensionGet())
39 , _innovation(prior->DimensionGet())
40 , _F(prior->DimensionGet(),prior->DimensionGet())
41 , _Q(prior->DimensionGet())
42 , _P_Matrix(prior->DimensionGet())
51 unsigned int meas_dimension;
52 for(
int i = 0 ; i< meas_dimensions.size(); i++)
55 meas_dimension = meas_dimensions[i];
61 (std::pair<unsigned int, MeasUpdateVariablesIExt>( meas_dimension,
MeasUpdateVariablesIExt(meas_dimension,
_x.rows()) ))).first;
75 (std::pair<unsigned int, MeasUpdateVariablesIExt>( meas_dimension,
MeasUpdateVariablesIExt(meas_dimension,
_x.rows()) ))).first;
81 const ColumnVector& u)
100 const ColumnVector& z,
101 const ColumnVector& s)
110 bool test_innovation =
true;
IteratedExtendedKalmanFilter(Gaussian *prior, unsigned int nr_it=1, InnovationCheck *innov=NULL)
Class representing Gaussian (or normal density)
Class implementing an innovationCheck used in IEKF.
virtual void MeasUpdate(MeasurementModel< MatrixWrapper::ColumnVector, MatrixWrapper::ColumnVector > *const measmodel, const MatrixWrapper::ColumnVector &z, const MatrixWrapper::ColumnVector &s)
Measurement Update (overloaded)
Pdf< MatrixWrapper::ColumnVector > * _post
Pointer to the Posterior Pdf.
SymmetricMatrix _P_Matrix
InnovationCheck * _innovationChecker
pointer to InnovationCheck (to end the iterations if the innovation is too small) ...
unsigned int _nr_iterations
number of iterations for iterated extended kalman filter
std::map< unsigned int, MeasUpdateVariablesIExt > _mapMeasUpdateVariablesIExt
Class representing the family of all Kalman Filters (EKF, IEKF, ...)
virtual ~IteratedExtendedKalmanFilter()
Destructor.
void CalculateSysUpdate(const MatrixWrapper::ColumnVector &J, const MatrixWrapper::Matrix &F, const MatrixWrapper::SymmetricMatrix &Q)
std::map< unsigned int, MeasUpdateVariablesIExt >::iterator _mapMeasUpdateVariablesIExt_it
void AllocateMeasModelIExt(const vector< unsigned int > &meas_dimensions)
Function to allocate memory needed during the measurement update,.
void CalculateMeasUpdate(const MatrixWrapper::ColumnVector &z, const MatrixWrapper::ColumnVector &Z, const MatrixWrapper::Matrix &H, const MatrixWrapper::SymmetricMatrix &R)
virtual void SysUpdate(SystemModel< MatrixWrapper::ColumnVector > *const sysmodel, const MatrixWrapper::ColumnVector &u)
System Update.
bool check(MatrixWrapper::ColumnVector innovation)
check Innovation
virtual MatrixWrapper::SymmetricMatrix CovarianceGet() const
Get the Covariance Matrix E[(x - E[x])^2] of the Analytic pdf.
virtual T ExpectedValueGet() const
Get the expected value E[x] of the pdf.