#ifndef feature_INC #define feature_INC #include #include "types.h" using Eigen::Vector3d; using Eigen::Matrix; using Eigen::MatrixXd; using Eigen::Quaterniond; /* * ===================================================================================== * Class: Feature * Description: * ===================================================================================== */ class Feature { public: /* ==================== LIFECYCLE ======================================= */ Feature (const Vector3d &pib, const Vector3d &xbw, const Quaterniond q ); /* constructor */ /* ==================== ACCESSORS ======================================= */ /* ==================== MUTATORS ======================================= */ void motionModel ( const Vector3d &ang, const Vector3d &vel, const double dt); /* ==================== OPERATORS ======================================= */ Matrix Fx(); Matrix Fy( const Vector3d &vel, const Vector3d &ang, double dt); Matrix Hx( const Vector3d &pos, const Quaterniond &q); Matrix Hy( const Vector3d &pos, const Quaterniond &q); Matrix h( const Vector3d &x, const Quaterniond &q); Matrix L(); Matrix Q(const double dt); Matrix R(); Matrix S ( const Matrix &Pxx, const Matrix &Pxy, const Matrix &Pyy, const Vector3d &pos, const Quaterniond &q); protected: /* ==================== METHODS ======================================= */ /* ==================== DATA MEMBERS ======================================= */ private: /* ==================== METHODS ======================================= */ Vector3d p2x(const Vector3d &p); Vector3d x2p(const Vector3d &x); /* ==================== DATA MEMBERS ======================================= */ Vector3d X; Quaterniond q0; Vector3d xb0w; }; /* ----- end of class Feature ----- */ #endif /* ----- #ifndef feature_INC ----- */