1 #ifndef __KFD_POS_VEL_ORI_ACC_HPP__ 2 #define __KFD_POS_VEL_ORI_ACC_HPP__ 5 #include <Eigen/Geometry> 17 static const int SIZE = 15;
25 Eigen::Block<vector_t, 3, 1>
_or_w;
26 Eigen::Block<vector_t, 3, 1>
_w_i;
29 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
31 _x(vector_t::Zero()), _pos_w( _x.segment<3>(0) ), _vel_i( _x.segment<3>(3) ),_acc_i(_x.segment<3>(6)), _or_w(_x.segment<3>(9)), _w_i(_x.segment<3>(12)) {};
37 Eigen::Block<vector_t, 3, 1>&
or_w() {
return _or_w;}
45 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
47 static const unsigned int _POS_MEASUREMENT_SIZE = 3;
48 static const unsigned int _VEL_MEASUREMENT_SIZE = 3;
49 static const unsigned int _POS_DEGREE_OF_FREEDOM = 3;
50 static const unsigned int _VEL_DEGREE_OF_FREEDOM = 3;
51 static const unsigned int _ORI_MEASUREMENT_SIZE = 3;
52 static const unsigned int _ORI_DEGREE_OF_FREEDOM = 3;
72 Eigen::Matrix<double, StatePosVelOriAcc::SIZE, StatePosVelOriAcc::SIZE>
Q;
83 bool positionObservation( Eigen::Vector3d position, Eigen::Matrix3d covariance,
float reject_position_threshol);
86 bool velocityObservation(Eigen::Vector3d velocity_body, Eigen::Matrix3d covariance,
float reject_velocity_threshol);
89 bool orientationObservation( Eigen::Quaterniond orientation, Eigen::Matrix3d covariance,
float reject_orientation_threshol);
92 void setPosition( Eigen::Vector3d position, Eigen::Matrix3d covariance );
95 void setOrientation( Eigen::Quaterniond orientation, Eigen::Matrix3d covariance );
102 void predict(Eigen::Vector3d acc_intertial, Eigen::Vector3d angular_velocity,
double dt,Eigen::Matrix<double, StatePosVelOriAcc::SIZE, StatePosVelOriAcc::SIZE> process_noise);
105 Eigen::Vector3d getPosition();
108 Eigen::Vector3d getVelocity();
111 Eigen::Quaterniond getOrientationInertial2World();
114 Eigen::Matrix3d getPositionCovariance();
117 Eigen::Matrix3d getVelocityCovariance();
120 Eigen::Matrix3d getOrientationCovariance();
123 Eigen::Quaterniond angularCorrection();
126 void init(
const Eigen::Matrix<double, StatePosVelOriAcc::SIZE, StatePosVelOriAcc::SIZE> &P,
const Eigen::Matrix<double,StatePosVelOriAcc::SIZE,1> &x);
Eigen::Block< vector_t, 3, 1 > & pos_world()
Definition: KFD_PosVelOriAcc.hpp:34
Eigen::Block< vector_t, 3, 1 > & vel_inertial()
Definition: KFD_PosVelOriAcc.hpp:35
vector_t _x
Definition: KFD_PosVelOriAcc.hpp:21
Eigen::Block< vector_t, 3, 1 > _acc_i
Definition: KFD_PosVelOriAcc.hpp:24
Eigen::Block< vector_t, 3, 1 > _vel_i
Definition: KFD_PosVelOriAcc.hpp:23
Definition: EKFPosYawBiasT.hpp:11
Eigen::Matrix< double, SIZE, 1 > vector_t
Definition: KFD_PosVelOriAcc.hpp:18
Eigen::Block< vector_t, 3, 1 > & or_w()
Definition: KFD_PosVelOriAcc.hpp:37
Definition: KFD_PosVelOriAcc.hpp:14
Eigen::Block< vector_t, 3, 1 > & acc_inertial()
Definition: KFD_PosVelOriAcc.hpp:36
static const int SIZE
Definition: KFD_PosVelOriAcc.hpp:17
Eigen::Vector3d velocity_inertial
Definition: KFD_PosVelOriAcc.hpp:62
Eigen::Block< vector_t, 3, 1 > _pos_w
Definition: KFD_PosVelOriAcc.hpp:22
Eigen::Vector3d position_world
Definition: KFD_PosVelOriAcc.hpp:63
Eigen::Block< vector_t, 3, 1 > _or_w
Definition: KFD_PosVelOriAcc.hpp:25
EIGEN_MAKE_ALIGNED_OPERATOR_NEW StatePosVelOriAcc()
Definition: KFD_PosVelOriAcc.hpp:30
Eigen::Matrix< double, StatePosVelOriAcc::SIZE, StatePosVelOriAcc::SIZE > Q
Definition: KFD_PosVelOriAcc.hpp:72
Eigen::Block< vector_t, 3, 1 > _w_i
Definition: KFD_PosVelOriAcc.hpp:26
Definition: KFD_PosVelOriAcc.hpp:41
StatePosVelOriAcc x
Definition: KFD_PosVelOriAcc.hpp:55
KalmanFilter::KF< StatePosVelOriAcc::SIZE > * filter
Definition: KFD_PosVelOriAcc.hpp:69
vector_t & vector()
Definition: KFD_PosVelOriAcc.hpp:33
Eigen::Block< vector_t, 3, 1 > & angular_velocity_inertial()
Definition: KFD_PosVelOriAcc.hpp:38
Eigen::Quaterniond R_inertial_2_world
Definition: KFD_PosVelOriAcc.hpp:64