30 #include <Eigen/Dense> 60 CpiBase(
double sigma_w,
double sigma_wb,
double sigma_a,
double sigma_ab,
bool imu_avg_ =
false) {
62 Q_c.block(0, 0, 3, 3) = std::pow(sigma_w, 2) *
eye3;
63 Q_c.block(3, 3, 3, 3) = std::pow(sigma_wb, 2) *
eye3;
64 Q_c.block(6, 6, 3, 3) = std::pow(sigma_a, 2) *
eye3;
65 Q_c.block(9, 9, 3, 3) = std::pow(sigma_ab, 2) *
eye3;
89 Eigen::Matrix<double, 4, 1> q_k_lin_ = Eigen::Matrix<double, 4, 1>::Zero(),
90 Eigen::Matrix<double, 3, 1> grav_ = Eigen::Matrix<double, 3, 1>::Zero()) {
109 virtual void feed_IMU(
double t_0,
double t_1, Eigen::Matrix<double, 3, 1> w_m_0, Eigen::Matrix<double, 3, 1> a_m_0,
110 Eigen::Matrix<double, 3, 1> w_m_1 = Eigen::Matrix<double, 3, 1>::Zero(),
111 Eigen::Matrix<double, 3, 1> a_m_1 = Eigen::Matrix<double, 3, 1>::Zero()) = 0;
120 Eigen::Matrix<double, 3, 1>
alpha_tau = Eigen::Matrix<double, 3, 1>::Zero();
121 Eigen::Matrix<double, 3, 1>
beta_tau = Eigen::Matrix<double, 3, 1>::Zero();
123 Eigen::Matrix<double, 3, 3>
R_k2tau = Eigen::Matrix<double, 3, 3>::Identity();
126 Eigen::Matrix<double, 3, 3>
J_q = Eigen::Matrix<double, 3, 3>::Zero();
127 Eigen::Matrix<double, 3, 3>
J_a = Eigen::Matrix<double, 3, 3>::Zero();
128 Eigen::Matrix<double, 3, 3>
J_b = Eigen::Matrix<double, 3, 3>::Zero();
129 Eigen::Matrix<double, 3, 3>
H_a = Eigen::Matrix<double, 3, 3>::Zero();
130 Eigen::Matrix<double, 3, 3>
H_b = Eigen::Matrix<double, 3, 3>::Zero();
138 Eigen::Matrix<double, 3, 1>
grav = Eigen::Matrix<double, 3, 1>::Zero();
141 Eigen::Matrix<double, 12, 12>
Q_c = Eigen::Matrix<double, 12, 12>::Zero();
144 Eigen::Matrix<double, 15, 15>
P_meas = Eigen::Matrix<double, 15, 15>::Zero();
151 Eigen::Matrix<double, 3, 3>
eye3 = Eigen::Matrix<double, 3, 3>::Identity();
154 Eigen::Matrix<double, 3, 1>
e_1;
155 Eigen::Matrix<double, 3, 1>
e_2;
156 Eigen::Matrix<double, 3, 1>
e_3;
159 Eigen::Matrix<double, 3, 3>
e_1x;
160 Eigen::Matrix<double, 3, 3>
e_2x;
161 Eigen::Matrix<double, 3, 3>
e_3x;
Eigen::Matrix< double, 3, 3 > J_a
alpha Jacobian wrt b_w
void setLinearizationPoints(Eigen::Matrix< double, 3, 1 > b_w_lin_, Eigen::Matrix< double, 3, 1 > b_a_lin_, Eigen::Matrix< double, 4, 1 > q_k_lin_=Eigen::Matrix< double, 4, 1 >::Zero(), Eigen::Matrix< double, 3, 1 > grav_=Eigen::Matrix< double, 3, 1 >::Zero())
Set linearization points of the integration.
Eigen::Matrix< double, 4, 1 > q_k2tau
orientation measurement mean
Eigen::Matrix< double, 3, 3 > e_2x
Eigen::Matrix< double, 3, 3 > e_3x
Eigen::Matrix< double, 3, 3 > R_k2tau
orientation measurement mean
Eigen::Matrix< double, 3, 3 > H_b
beta Jacobian wrt b_a
virtual void feed_IMU(double t_0, double t_1, Eigen::Matrix< double, 3, 1 > w_m_0, Eigen::Matrix< double, 3, 1 > a_m_0, Eigen::Matrix< double, 3, 1 > w_m_1=Eigen::Matrix< double, 3, 1 >::Zero(), Eigen::Matrix< double, 3, 1 > a_m_1=Eigen::Matrix< double, 3, 1 >::Zero())=0
Main function that will sequentially compute the preintegration measurement.
Eigen::Matrix< double, 3, 1 > alpha_tau
alpha measurement mean
Eigen::Matrix< double, 3, 3 > J_b
beta Jacobian wrt b_w
Eigen::Matrix< double, 3, 3 > e_1x
double DT
measurement integration time
Eigen::Matrix< double, 3, 3 > skew_x(const Eigen::Matrix< double, 3, 1 > &w)
Skew-symmetric matrix from a given 3x1 vector.
Eigen::Matrix< double, 3, 1 > e_3
Eigen::Matrix< double, 3, 1 > beta_tau
beta measurement mean
Core algorithms for OpenVINS.
Eigen::Matrix< double, 3, 3 > H_a
alpha Jacobian wrt b_a
CpiBase(double sigma_w, double sigma_wb, double sigma_a, double sigma_ab, bool imu_avg_=false)
Default constructor.
Eigen::Matrix< double, 3, 3 > J_q
orientation Jacobian wrt b_w
Eigen::Matrix< double, 3, 1 > grav
Global gravity.
Eigen::Matrix< double, 3, 1 > e_2
Eigen::Matrix< double, 12, 12 > Q_c
Our continous-time measurement noise matrix (computed from contructor noise values) ...
Eigen::Matrix< double, 3, 1 > e_1
Eigen::Matrix< double, 3, 3 > eye3
Base class for continuous preintegration integrators.
Eigen::Matrix< double, 4, 1 > q_k_lin
q_k linearization point (only model 2 uses)
Eigen::Matrix< double, 15, 15 > P_meas
Our final measurement covariance.
Eigen::Matrix< double, 3, 1 > b_w_lin
b_w linearization point (gyroscope)
Eigen::Matrix< double, 3, 1 > b_a_lin
b_a linearization point (accelerometer)