35Eigen::Matrix3d
G_GaussMarkov1(
const Eigen::Vector3d& sigma2,
const Eigen::Vector3d& beta);
41[[nodiscard]] Eigen::Vector3d
psd2BiasGaussMarkov(
const Eigen::Vector3d& sigma2_bd,
const Eigen::Vector3d& tau_bd);
49[[nodiscard]] Eigen::Matrix3d
Q_psi_psi(
const Eigen::Vector3d& S_rg,
const Eigen::Vector3d& S_bgd,
const double& tau_s);
58[[nodiscard]] Eigen::Matrix3d
ien_Q_dv_psi(
const Eigen::Vector3d& S_rg,
const Eigen::Vector3d& S_bgd,
const Eigen::Matrix3d& ien_F_21,
const double& tau_s);
69[[nodiscard]] Eigen::Matrix3d
ien_Q_dv_dv(
const Eigen::Vector3d& S_ra,
const Eigen::Vector3d& S_bad,
const Eigen::Vector3d& S_rg,
const Eigen::Vector3d& S_bgd,
const Eigen::Matrix3d& ien_F_21,
const double& tau_s);
78[[nodiscard]] Eigen::Matrix3d
ien_Q_dv_domega(
const Eigen::Vector3d& S_bgd,
const Eigen::Matrix3d& ien_F_21,
const Eigen::Matrix3d& ien_Dcm_b,
const double& tau_s);
88[[nodiscard]] Eigen::Matrix3d
n_Q_dr_psi(
const Eigen::Vector3d& S_rg,
const Eigen::Vector3d& S_bgd,
const Eigen::Matrix3d& n_F_21,
const Eigen::Matrix3d& T_rn_p,
const double& tau_s);
97[[nodiscard]] Eigen::Matrix3d
ie_Q_dr_psi(
const Eigen::Vector3d& S_rg,
const Eigen::Vector3d& S_bgd,
const Eigen::Matrix3d& ie_F_21,
const double& tau_s);
109[[nodiscard]] Eigen::Matrix3d
n_Q_dr_dv(
const Eigen::Vector3d& S_ra,
const Eigen::Vector3d& S_bad,
const Eigen::Vector3d& S_rg,
const Eigen::Vector3d& S_bgd,
const Eigen::Matrix3d& n_F_21,
const Eigen::Matrix3d& T_rn_p,
const double& tau_s);
120[[nodiscard]] Eigen::Matrix3d
ie_Q_dr_dv(
const Eigen::Vector3d& S_ra,
const Eigen::Vector3d& S_bad,
const Eigen::Vector3d& S_rg,
const Eigen::Vector3d& S_bgd,
const Eigen::Matrix3d& ie_F_21,
const double& tau_s);
132[[nodiscard]] Eigen::Matrix3d
n_Q_dr_dr(
const Eigen::Vector3d& S_ra,
const Eigen::Vector3d& S_bad,
const Eigen::Vector3d& S_rg,
const Eigen::Vector3d& S_bgd,
const Eigen::Matrix3d& n_F_21,
const Eigen::Matrix3d& T_rn_p,
const double& tau_s);
143[[nodiscard]] Eigen::Matrix3d
ie_Q_dr_dr(
const Eigen::Vector3d& S_ra,
const Eigen::Vector3d& S_bad,
const Eigen::Vector3d& S_rg,
const Eigen::Vector3d& S_bgd,
const Eigen::Matrix3d& ie_F_21,
const double& tau_s);
152[[nodiscard]] Eigen::Matrix3d
n_Q_dr_df(
const Eigen::Vector3d& S_bad,
const Eigen::Matrix3d& T_rn_p,
const Eigen::Matrix3d& n_Dcm_b,
const double& tau_s);
160[[nodiscard]] Eigen::Matrix3d
ie_Q_dr_df(
const Eigen::Vector3d& S_bad,
const Eigen::Matrix3d& ie_Dcm_b,
const double& tau_s);
170[[nodiscard]] Eigen::Matrix3d
n_Q_dr_domega(
const Eigen::Vector3d& S_bgd,
const Eigen::Matrix3d& n_F_21,
const Eigen::Matrix3d& T_rn_p,
const Eigen::Matrix3d& n_Dcm_b,
const double& tau_s);
179[[nodiscard]] Eigen::Matrix3d
ie_Q_dr_domega(
const Eigen::Vector3d& S_bgd,
const Eigen::Matrix3d& ie_F_21,
const Eigen::Matrix3d& ie_Dcm_b,
const double& tau_s);
187[[nodiscard]] Eigen::Matrix3d
Q_df_dv(
const Eigen::Vector3d& S_bad,
const Eigen::Matrix3d& b_Dcm_ien,
const double& tau_s);
194[[nodiscard]] Eigen::Matrix3d
Q_df_df(
const Eigen::Vector3d& S_bad,
const double& tau_s);
202[[nodiscard]] Eigen::Matrix3d
Q_domega_psi(
const Eigen::Vector3d& S_bgd,
const Eigen::Matrix3d& b_Dcm_ien,
const double& tau_s);
209[[nodiscard]] Eigen::Matrix3d
Q_domega_domega(
const Eigen::Vector3d& S_bgd,
const double& tau_s);
216[[nodiscard]] Eigen::Matrix2d
Q_gnss(
const double& S_cPhi,
const double& S_cf,
const double& tau_s);
227template<
typename KeyType,
typename T>
229 const Eigen::Quaternion<T>& e_quat_b,
230 bool accelBiases,
bool gyroBiases,
231 bool accelScaleFactor,
bool gyroScaleFactor,
232 bool accelMisalignment,
bool gyroMisalignment)
235 std::vector<KeyType> rowKeys;
236 rowKeys.reserve(3 + 3 + 4
237 + 3 * (
static_cast<size_t>(accelBiases) +
static_cast<size_t>(gyroBiases))
238 + 3 * (
static_cast<size_t>(accelScaleFactor) +
static_cast<size_t>(gyroScaleFactor))
239 + 4 * (
static_cast<size_t>(accelMisalignment) +
static_cast<size_t>(gyroMisalignment)));
240 std::vector<KeyType> colKeys;
241 colKeys.reserve(3 + 3 + 3
242 + 3 * (
static_cast<size_t>(accelBiases) +
static_cast<size_t>(gyroBiases))
243 + 3 * (
static_cast<size_t>(accelScaleFactor) +
static_cast<size_t>(gyroScaleFactor)));
249 colKeys.insert(colKeys.end(), AngleErrorKeys.begin(), AngleErrorKeys.end());
261 if (accelScaleFactor)
276 Eigen::Quaternion<T> e_quat_p = e_quat_b * b_quat_p.cast<T>();
298template<
typename KeyType,
typename T>
300 const Eigen::Vector3d& sigma2_bad,
const Eigen::Vector3d& sigma2_bgd,
301 const Eigen::Vector3d& sigma2_sad,
const Eigen::Vector3d& sigma2_sgd,
302 bool accelBiases,
bool gyroBiases,
303 bool accelScaleFactor,
bool gyroScaleFactor)
306 std::vector<KeyType> keys;
307 keys.reserve(3 + 3 + 3
308 + 3 * (
static_cast<size_t>(accelBiases) +
static_cast<size_t>(gyroBiases))
309 + 3 * (
static_cast<size_t>(accelScaleFactor) +
static_cast<size_t>(gyroScaleFactor)));
313 keys.insert(keys.end(), AngleErrorKeys.begin(), AngleErrorKeys.end());
323 W(AngleErrorKeys, AngleErrorKeys).diagonal() = sigma2_rg.cast<T>();
Transformation collection.
Eigen::Matrix< typename Derived::Scalar, 4, 3 > covRPY2quatJacobian(const Eigen::QuaternionBase< Derived > &n_quat_b)
Calculates the Jacobian to convert an attitude represented in Euler angels (roll, pitch,...
Definition CoordinateFrames.hpp:162
Inertial Navigation System Keys.
constexpr std::array< StateKeyType, 3 > GyroBias
All gyroscope bias keys.
Definition Keys.hpp:58
constexpr std::array< StateKeyType, 3 > AccelScaleFactor
All accelerometer scale factor keys.
Definition Keys.hpp:62
constexpr std::array< StateKeyType, 4 > AccelMisalignment
All accelerometer misalignment quaternion keys.
Definition Keys.hpp:69
constexpr std::array< StateKeyType, 4 > GyroMisalignment
All gyroscope misalignment quaternion keys.
Definition Keys.hpp:72
constexpr std::array< StateKeyType, 3 > GyroScaleFactor
All gyroscope scale factor keys.
Definition Keys.hpp:65
constexpr std::array< StateKeyType, 3 > AccelBias
All accelerometer bias keys.
Definition Keys.hpp:55
constexpr std::array< StateKeyType, 4 > Att
All attitude keys.
Definition MotionModel.hpp:62
@ AttQ3
z: Coefficient of k
Definition MotionModel.hpp:49
@ AttQ1
x: Coefficient of i
Definition MotionModel.hpp:47
@ AttQ2
y: Coefficient of j
Definition MotionModel.hpp:48
constexpr std::array< StateKeyType, 10 > PosVelAtt
Vector with all position velocity and attitude keys.
Definition MotionModel.hpp:70
constexpr std::array< StateKeyType, 6 > PosVel
Vector with all position and velocity keys.
Definition MotionModel.hpp:66
constexpr std::array< StateKeyType, 3 > Vel
All velocity keys.
Definition MotionModel.hpp:59
Eigen::Matrix3d ie_Q_dr_domega(const Eigen::Vector3d &S_bgd, const Eigen::Matrix3d &ie_F_21, const Eigen::Matrix3d &ie_Dcm_b, const double &tau_s)
Submatrix 𝐐_35 of the system noise covariance matrix 𝐐
Eigen::Matrix3d G_GaussMarkov1(const Eigen::Vector3d &sigma2, const Eigen::Vector3d &beta)
Submatrix 𝐆_a of the noise input matrix 𝐆
Eigen::Matrix3d ie_Q_dr_df(const Eigen::Vector3d &S_bad, const Eigen::Matrix3d &ie_Dcm_b, const double &tau_s)
Submatrix 𝐐_34 of the system noise covariance matrix 𝐐
Eigen::Matrix3d Q_domega_psi(const Eigen::Vector3d &S_bgd, const Eigen::Matrix3d &b_Dcm_ien, const double &tau_s)
Submatrix 𝐐_51 of the system noise covariance matrix 𝐐
Eigen::Matrix3d Q_df_df(const Eigen::Vector3d &S_bad, const double &tau_s)
Submatrix 𝐐_44 of the system noise covariance matrix 𝐐
Eigen::Matrix3d ien_Q_dv_dv(const Eigen::Vector3d &S_ra, const Eigen::Vector3d &S_bad, const Eigen::Vector3d &S_rg, const Eigen::Vector3d &S_bgd, const Eigen::Matrix3d &ien_F_21, const double &tau_s)
Submatrix 𝐐_22 of the system noise covariance matrix 𝐐
Eigen::Matrix3d ie_Q_dr_psi(const Eigen::Vector3d &S_rg, const Eigen::Vector3d &S_bgd, const Eigen::Matrix3d &ie_F_21, const double &tau_s)
Submatrix 𝐐_31 of the system noise covariance matrix 𝐐
Eigen::Matrix3d G_RandomWalk(const Eigen::Vector3d &sigma2)
Random walk noise input matrix 𝐆
Eigen::Matrix3d n_Q_dr_dv(const Eigen::Vector3d &S_ra, const Eigen::Vector3d &S_bad, const Eigen::Vector3d &S_rg, const Eigen::Vector3d &S_bgd, const Eigen::Matrix3d &n_F_21, const Eigen::Matrix3d &T_rn_p, const double &tau_s)
Submatrix 𝐐_32 of the system noise covariance matrix 𝐐
KeyedMatrixX< T, KeyType, KeyType > e_noiseInput_G(const Eigen::Quaterniond &b_quat_p, const Eigen::Quaternion< T > &e_quat_b, bool accelBiases, bool gyroBiases, bool accelScaleFactor, bool gyroScaleFactor, bool accelMisalignment, bool gyroMisalignment)
Calculate the noise input matrix in Earth frame coordinates.
Definition ProcessNoise.hpp:228
KeyedMatrixX< T, KeyType, KeyType > e_noiseScale_W(const Eigen::Vector3d &sigma2_ra, const Eigen::Vector3d &sigma2_rg, const Eigen::Vector3d &sigma2_bad, const Eigen::Vector3d &sigma2_bgd, const Eigen::Vector3d &sigma2_sad, const Eigen::Vector3d &sigma2_sgd, bool accelBiases, bool gyroBiases, bool accelScaleFactor, bool gyroScaleFactor)
Calculate the noise scale matrix in Earth frame coordinates.
Definition ProcessNoise.hpp:299
Eigen::Matrix3d Q_df_dv(const Eigen::Vector3d &S_bad, const Eigen::Matrix3d &b_Dcm_ien, const double &tau_s)
Submatrix 𝐐_42 of the system noise covariance matrix 𝐐
Eigen::Matrix3d Q_psi_psi(const Eigen::Vector3d &S_rg, const Eigen::Vector3d &S_bgd, const double &tau_s)
Submatrix 𝐐_11 of the system noise covariance matrix 𝐐
Eigen::Matrix3d n_Q_dr_df(const Eigen::Vector3d &S_bad, const Eigen::Matrix3d &T_rn_p, const Eigen::Matrix3d &n_Dcm_b, const double &tau_s)
Submatrix 𝐐_34 of the system noise covariance matrix 𝐐
Eigen::Vector3d psd2BiasGaussMarkov(const Eigen::Vector3d &sigma2_bd, const Eigen::Vector3d &tau_bd)
u_bias^2 Power Spectral Density of the bias for a Gauss-Markov random process
Eigen::Matrix3d Q_domega_domega(const Eigen::Vector3d &S_bgd, const double &tau_s)
Submatrix 𝐐_55 of the system noise covariance matrix 𝐐
Eigen::Matrix3d n_Q_dr_psi(const Eigen::Vector3d &S_rg, const Eigen::Vector3d &S_bgd, const Eigen::Matrix3d &n_F_21, const Eigen::Matrix3d &T_rn_p, const double &tau_s)
Submatrix 𝐐_31 of the system noise covariance matrix 𝐐
Eigen::Matrix2d Q_gnss(const double &S_cPhi, const double &S_cf, const double &tau_s)
Submatrix 𝐐_66 of the system noise covariance matrix 𝐐
Eigen::Matrix3d ie_Q_dr_dv(const Eigen::Vector3d &S_ra, const Eigen::Vector3d &S_bad, const Eigen::Vector3d &S_rg, const Eigen::Vector3d &S_bgd, const Eigen::Matrix3d &ie_F_21, const double &tau_s)
Submatrix 𝐐_32 of the system noise covariance matrix 𝐐
Eigen::Matrix3d n_Q_dr_domega(const Eigen::Vector3d &S_bgd, const Eigen::Matrix3d &n_F_21, const Eigen::Matrix3d &T_rn_p, const Eigen::Matrix3d &n_Dcm_b, const double &tau_s)
Submatrix 𝐐_35 of the system noise covariance matrix 𝐐
Eigen::Matrix3d ien_Q_dv_psi(const Eigen::Vector3d &S_rg, const Eigen::Vector3d &S_bgd, const Eigen::Matrix3d &ien_F_21, const double &tau_s)
Submatrix 𝐐_21 of the system noise covariance matrix 𝐐
Eigen::Matrix3d ie_Q_dr_dr(const Eigen::Vector3d &S_ra, const Eigen::Vector3d &S_bad, const Eigen::Vector3d &S_rg, const Eigen::Vector3d &S_bgd, const Eigen::Matrix3d &ie_F_21, const double &tau_s)
Submatrix 𝐐_33 of the system noise covariance matrix 𝐐
Eigen::Matrix3d n_Q_dr_dr(const Eigen::Vector3d &S_ra, const Eigen::Vector3d &S_bad, const Eigen::Vector3d &S_rg, const Eigen::Vector3d &S_bgd, const Eigen::Matrix3d &n_F_21, const Eigen::Matrix3d &T_rn_p, const double &tau_s)
Submatrix 𝐐_33 of the system noise covariance matrix 𝐐
Eigen::Matrix3d ien_Q_dv_domega(const Eigen::Vector3d &S_bgd, const Eigen::Matrix3d &ien_F_21, const Eigen::Matrix3d &ien_Dcm_b, const double &tau_s)
Submatrix 𝐐_25 of the system noise covariance matrix 𝐐
Matrix which can be accessed by keys.
KeyedMatrix< Scalar, RowKeyType, ColKeyType, Eigen::Dynamic, Eigen::Dynamic > KeyedMatrixX
Dynamic size KeyedMatrix.
Definition KeyedMatrix.hpp:2308