4 #ifndef _FILTER_UKF_HPP_ 5 #define _FILTER_UKF_HPP_ 8 #include <Eigen/Geometry> 13 using namespace Eigen;
18 static const int UKFSTATEVECTORSIZE = 6;
19 static const int QUATERSIZE = 4;
23 static const int NUMAXIS = 3;
37 Eigen::Matrix <double,ukf::UKFSTATEVECTORSIZE,1> x;
38 Eigen::Matrix <double,ukf::NUMAXIS,1> gtilde;
39 Eigen::Matrix <double,ukf::UKFSTATEVECTORSIZE, ukf::UKFSTATEVECTORSIZE> Px;
40 Eigen::Quaternion <double> at_q;
41 Eigen::Matrix <double,ukf::UKFSTATEVECTORSIZE, ukf::UKFSTATEVECTORSIZE> Q;
42 Eigen::Matrix <double,ukf::NUMAXIS, ukf::NUMAXIS> R;
43 Eigen::Matrix <double,ukf::UKFSTATEVECTORSIZE, ukf::SIGPOINTSIZE> sig_point;
46 Eigen::Matrix <double,ukf::NUMAXIS, ukf::SIGPOINTSIZE> gamma;
47 Eigen::Matrix <double,ukf::NUMAXIS, 1> z_e;
48 Eigen::Matrix <double,ukf::NUMAXIS, 1> z_r;
49 Eigen::Matrix <double,ukf::NUMAXIS, 1> Nu;
50 Eigen::Matrix <double,ukf::NUMAXIS, ukf::NUMAXIS> Pzz;
51 Eigen::Matrix <double,ukf::NUMAXIS, ukf::NUMAXIS> Pnu;
52 Eigen::Matrix <double,ukf::UKFSTATEVECTORSIZE, ukf::NUMAXIS> Pxz;
53 Eigen::Matrix <double,ukf::UKFSTATEVECTORSIZE, ukf::NUMAXIS> K;
66 Eigen::Matrix <double,ukf::UKFSTATEVECTORSIZE,1> getState();
77 Eigen::Quaternion <double> getAttitude();
87 Eigen::Matrix <double, ukf::NUMAXIS, 1> getEuler();
97 Eigen::Matrix <double,ukf::UKFSTATEVECTORSIZE,ukf::UKFSTATEVECTORSIZE> getCovariance();
111 bool setAttitude (Eigen::Quaternion <double> *initq);
135 void Init (Matrix <double,ukf::UKFSTATEVECTORSIZE,1> *x_0, Eigen::Matrix <double, ukf::UKFSTATEVECTORSIZE, ukf::UKFSTATEVECTORSIZE> *P_0, Eigen::Matrix <double, ukf::UKFSTATEVECTORSIZE, ukf::UKFSTATEVECTORSIZE> *Q, Eigen::Matrix <double, ukf::NUMAXIS, ukf::NUMAXIS> *R,
136 Eigen::Quaternion <double> *at_q,
double a,
double f,
double lambda,
double g);
149 double GravityModel (
double latitude,
double altitude);
167 void SubstractEarthRotation(Eigen::Matrix <double, ukf::NUMAXIS, 1> *u, Eigen::Quaternion <double> *qb_g,
double latitude);
184 void Omega(Eigen::Quaternion< double >* quat, Eigen::Matrix< double, ukf::NUMAXIS , 1 >* angvelo,
double dt);
201 void predict(Eigen::Matrix <double,ukf::NUMAXIS,1> *u,
double dt);
218 void update(Eigen::Matrix <double,ukf::NUMAXIS,1> *acc, Eigen::Matrix <double,ukf::NUMAXIS,1> *mag);
232 void attitudeUpdate();
240 #endif // _FILTER_UKF_HPP_ static const int UKFSTATEVECTORSIZE
Definition: ukf.hpp:18
DECLINATION_CONSTS
Definition: ukf.hpp:26
static const int SIGPOINTSIZE
Definition: ukf.hpp:20