29 #ifndef HECTOR_POSE_ESTIMATION_MEASUREMENT_MODEL_H 30 #define HECTOR_POSE_ESTIMATION_MEASUREMENT_MODEL_H 56 template <
class Derived,
int _Dimension = Derived::MeasurementDimension>
58 enum { MeasurementDimension = _Dimension };
71 #define MEASUREMENT_MODEL_TRAIT(Derived, _Dimension) \ 72 typedef typename traits::MeasurementModel<Derived, _Dimension> trait; \ 74 enum { MeasurementDimension = _Dimension }; \ 75 typedef typename trait::MeasurementVector MeasurementVector; \ 76 typedef typename trait::NoiseVariance NoiseVariance; \ 77 typedef typename trait::MeasurementMatrix MeasurementMatrix; \ 78 typedef typename trait::GainMatrix GainMatrix; \ 79 typedef typename trait::UpdateVector UpdateVector; \ 81 enum { InputDimension = trait::InputDimension }; \ 82 typedef typename trait::InputType InputType; \ 83 typedef typename trait::InputVector InputVector; \ 84 typedef typename trait::InputMatrix InputMatrix; \ 88 template <
class Derived,
int _Dimension>
89 class MeasurementModel_ :
public MeasurementModel {
94 virtual int getDimension()
const {
return trait::MeasurementDimension; }
96 Derived *
derived() {
return static_cast<Derived *
>(
this); }
97 const Derived *
derived()
const {
return static_cast<const Derived *
>(
this); }
99 virtual void getExpectedValue(MeasurementVector& y_pred,
const State& state);
100 virtual void getStateJacobian(MeasurementMatrix& C,
const State& state,
bool init =
true);
101 virtual void getInputJacobian(InputMatrix& D,
const State& state,
bool init =
true);
102 virtual void getMeasurementNoise(NoiseVariance& R,
const State& state,
bool init =
true);
109 template <
class Derived,
int _Dimension>
115 template <
class Derived,
int _Dimension>
118 if (init) C.setZero();
121 template <
class Derived,
int _Dimension>
124 if (init) D.setZero();
127 template <
class Derived,
int _Dimension>
130 if (init) R.setZero();
135 #endif // HECTOR_POSE_ESTIMATION_MEASUREMENT_MODEL_H
ColumnVector_< MeasurementDimension >::type MeasurementVector
traits::Input< Derived >::Vector InputVector
virtual int getDimension() const
virtual void afterUpdate(State &state)
Matrix_< MeasurementDimension, InputDimension >::type InputMatrix
virtual ~MeasurementModel()
virtual void getInputJacobian(InputMatrix &D, const State &state, bool init=true)
virtual void limitError(MeasurementVector &error)
Matrix_< RowsCols, RowsCols >::type type
ColumnVector_< State::Covariance::RowsAtCompileTime >::type UpdateVector
Matrix_< State::Covariance::RowsAtCompileTime, MeasurementDimension >::type GainMatrix
Matrix_< MeasurementDimension, Dynamic >::type MeasurementMatrix
traits::Input< Derived >::Type InputType
virtual SystemStatus getStatusFlags()
virtual bool prepareUpdate(State &state, const MeasurementUpdate &update)
#define MEASUREMENT_MODEL_TRAIT(Derived, _Dimension)
virtual bool active(const State &state)
Eigen::Matrix< ScalarType, Rows, Cols,(Rows==1 &&Cols!=1?Eigen::RowMajor:Eigen::ColMajor),(Rows!=Dynamic?Rows:MaxMatrixRowsCols),(Cols!=Dynamic?Cols:MaxMatrixRowsCols) > type
unsigned int SystemStatus
const Derived * derived() const
virtual int getDimension() const =0
virtual SystemStatus getSystemStatus() const
virtual const MeasurementVector * getFixedMeasurementVector() const
virtual void getStateJacobian(MeasurementMatrix &C, const State &state, bool init=true)
virtual void getExpectedValue(MeasurementVector &y_pred, const State &state)
virtual void getMeasurementNoise(NoiseVariance &R, const State &state, bool init=true)
virtual bool init(PoseEstimation &estimator, Measurement &measurement, State &state)
Eigen::Matrix< ScalarType, Rows, 1, Eigen::ColMajor,(Rows!=Dynamic?Rows:MaxVectorSize), 1 > type
SymmetricMatrix_< MeasurementDimension >::type NoiseVariance