29 #ifndef HECTOR_POSE_ESTIMATION_FILTER_EKF_H
30 #define HECTOR_POSE_ESTIMATION_FILTER_EKF_H
40 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
45 virtual std::string
getType()
const {
return "EKF"; }
55 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
60 ,
A(filter->
state().getCovarianceDimension(), filter->
state().getCovarianceDimension())
61 ,
Q(filter->
state().getCovarianceDimension(), filter->
state().getCovarianceDimension())
68 virtual bool predict(
double dt) = 0;
79 template <
class ConcreteModel,
typename Enabled =
void>
93 virtual bool predict(
double dt);
106 template <
class ConcreteModel,
typename Enabled =
void>
110 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
117 :
Base(filter, model)
119 ,
y_pred(model->getDimension())
120 ,
error(model->getDimension())
121 ,
C(model->getDimension(), filter->
state().getCovarianceDimension())
122 ,
CP(model->getDimension(), filter->
state().getCovarianceDimension())
123 ,
S(model->getDimension(), model->getDimension())
124 ,
K(filter->
state().getCovarianceDimension(), model->getDimension())
137 virtual bool correct(
const typename ConcreteModel::MeasurementVector& y,
const typename ConcreteModel::NoiseVariance& R);
141 typename Model::MeasurementVector
y_pred;
142 typename Model::MeasurementVector
error;
143 typename Model::MeasurementMatrix
C;
145 typename Model::NoiseVariance
S;
146 typename Model::GainMatrix
K;
161 #endif // HECTOR_POSE_ESTIMATION_FILTER_EKF_H