pose_ekf
EKFPosYawBiasT.hpp
Go to the documentation of this file.
1 #ifndef __EKF_POSITIONYAWBIAS_HPP__
2 #define __EKF_POSITIONYAWBIAS_HPP__
3 
4 #include <Eigen/Core>
5 #include <Eigen/Geometry>
7 
8 #include "FaultDetection.hpp"
9 
10 
11 namespace pose_ekf {
13  {
14  public:
15  static const int SIZE = 4;
16  typedef Eigen::Matrix<double,SIZE,1> vector_t;
17 
18  protected:
19  vector_t _x;
20  Eigen::Block<vector_t, 3, 1> _xi;
21  Eigen::Block<vector_t, 1, 1> _yaw;
22 
23  public:
24  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
26  _x(vector_t::Zero()), _xi( _x.segment<3>(0) ),_yaw(_x.segment<1>(3)) {};
27 
28  vector_t& vector() {return _x;};
29  Eigen::Block<vector_t, 3, 1>& xi() {return _xi;}
30  Eigen::Block<vector_t, 1, 1>& yaw() {return _yaw;}
31  };
32 
34  {
35  public:
37  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
38 
41 
42  private:
43 
44 
45 
48 
50  Eigen::Matrix<double, StatePosYawBias::SIZE, StatePosYawBias::SIZE> Q;
51 
52 
53  public:
54 
56  ~EKFPosYawBiasT();
57 
59  void copyState ( const EKFPosYawBiasT& kfd );
60 
62  void predict(const Eigen::Vector3d &translation_world, const Eigen::Matrix<double, StatePosYawBias::SIZE, StatePosYawBias::SIZE> &Q);
63 
65  void init(const Eigen::Matrix<double, StatePosYawBias::SIZE, StatePosYawBias::SIZE> &P, const Eigen::Matrix<double,StatePosYawBias::SIZE,1> &x);
66 
68  Eigen::Quaterniond getOrientationCorrection();
69  Eigen::Matrix3d getCovariancePosition();
70  Eigen::Vector3d getPosition();
71  double getOrientationCorrectionCovariance();
72 
74  void setInitialPosition( const Eigen::Vector3d &position, const Eigen::Matrix3d &covariance );
75 
77  bool correctPosition( const Eigen::Vector3d &position, const Eigen::Matrix3d &covariance, float reject_threshold );
78 
80  bool correctPositionOrientation( const Eigen::Vector4d &positionOrientation, const Eigen::Matrix4d &covariance, float reject_threshold );
81 
82  private:
83 
85  Eigen::Matrix<double, StatePosYawBias::SIZE, StatePosYawBias::SIZE> jacobianF( const Eigen::Vector3d &translation_world );
86 
87 
88  };
89 }
90 
91 #endif
EIGEN_MAKE_ALIGNED_OPERATOR_NEW StatePosYawBias()
Definition: EKFPosYawBiasT.hpp:25
Definition: ExtendedKalmanFilter.hpp:11
Definition: EKFPosYawBiasT.hpp:11
static const int SIZE
Definition: EKFPosYawBiasT.hpp:15
vector_t _x
Definition: EKFPosYawBiasT.hpp:19
Eigen::Block< vector_t, 1, 1 > & yaw()
Definition: EKFPosYawBiasT.hpp:30
Definition: EKFPosYawBiasT.hpp:12
Eigen::Block< vector_t, 3, 1 > & xi()
Definition: EKFPosYawBiasT.hpp:29
Eigen::Matrix< double, SIZE, 1 > vector_t
Definition: EKFPosYawBiasT.hpp:16
EIGEN_MAKE_ALIGNED_OPERATOR_NEW StatePosYawBias x
Definition: EKFPosYawBiasT.hpp:40
Eigen::Block< vector_t, 1, 1 > _yaw
Definition: EKFPosYawBiasT.hpp:21
Eigen::Block< vector_t, 3, 1 > _xi
Definition: EKFPosYawBiasT.hpp:20
vector_t & vector()
Definition: EKFPosYawBiasT.hpp:28
Definition: EKFPosYawBiasT.hpp:33