20 return Eigen::DiagonalMatrix<double, 3>{ sigma2.cwiseSqrt() };
23Eigen::Matrix3d
G_GaussMarkov1(
const Eigen::Vector3d& sigma2,
const Eigen::Vector3d& beta)
26 return Eigen::DiagonalMatrix<double, 3>{ (2.0 * beta.cwiseProduct(sigma2)).cwiseSqrt() };
32 return 2 * sigma2_bd.array() / tau_bd.array();
35Eigen::Matrix3d
Q_psi_psi(
const Eigen::Vector3d& S_rg,
const Eigen::Vector3d& S_bgd,
const double& tau_s)
37 return (S_rg.asDiagonal() * tau_s + 1.0 / 3.0 * S_bgd.asDiagonal() * std::pow(tau_s, 3)) * Eigen::Matrix3d::Identity();
40Eigen::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)
42 return (0.5 * S_rg.asDiagonal() * std::pow(tau_s, 2) + 0.25 * S_bgd.asDiagonal() * std::pow(tau_s, 4)) * ien_F_21;
45Eigen::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)
47 return (S_ra.asDiagonal() * tau_s + 1.0 / 3.0 * S_bad.asDiagonal() * std::pow(tau_s, 3)) * Eigen::Matrix3d::Identity()
48 + (1.0 / 3.0 * S_rg.asDiagonal() * std::pow(tau_s, 3) + 0.2 * S_bgd.asDiagonal() * std::pow(tau_s, 5)) * ien_F_21 * ien_F_21.transpose();
51Eigen::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)
53 return 1.0 / 3.0 * S_bgd.asDiagonal() * std::pow(tau_s, 3) * ien_F_21 * ien_Dcm_b;
56Eigen::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)
58 return (1.0 / 3.0 * S_rg.asDiagonal() * std::pow(tau_s, 3) + 0.2 * S_bgd.asDiagonal() * std::pow(tau_s, 5)) * T_rn_p * n_F_21;
61Eigen::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)
63 return (1.0 / 3.0 * S_rg.asDiagonal() * std::pow(tau_s, 3) + 0.2 * S_bgd.asDiagonal() * std::pow(tau_s, 5)) * ie_F_21;
66Eigen::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)
68 return (0.5 * S_ra.asDiagonal() * std::pow(tau_s, 2) + 0.25 * S_bad.asDiagonal() * std::pow(tau_s, 4)) * T_rn_p
69 + (0.25 * S_rg.asDiagonal() * std::pow(tau_s, 4) + 1.0 / 6.0 * S_bgd.asDiagonal() * std::pow(tau_s, 6)) * T_rn_p * n_F_21 * n_F_21.transpose();
72Eigen::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)
74 return (0.5 * S_ra.asDiagonal() * std::pow(tau_s, 2) + 0.25 * S_bad.asDiagonal() * std::pow(tau_s, 4)) * Eigen::Matrix3d::Identity()
75 + (0.25 * S_rg.asDiagonal() * std::pow(tau_s, 4) + 1.0 / 6.0 * S_bgd.asDiagonal() * std::pow(tau_s, 6)) * ie_F_21 * ie_F_21.transpose();
78Eigen::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)
80 return (1.0 / 3.0 * S_ra.asDiagonal() * std::pow(tau_s, 3) + 0.2 * S_bad.asDiagonal() * std::pow(tau_s, 5)) * T_rn_p * T_rn_p
81 + (0.2 * S_rg.asDiagonal() * std::pow(tau_s, 5) + 1.0 / 7.0 * S_bgd.asDiagonal() * std::pow(tau_s, 7)) * T_rn_p * n_F_21 * n_F_21.transpose() * T_rn_p;
84Eigen::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)
86 return (1.0 / 3.0 * S_ra.asDiagonal() * std::pow(tau_s, 3) + 0.2 * S_bad.asDiagonal() * std::pow(tau_s, 5)) * Eigen::Matrix3d::Identity()
87 + (0.2 * S_rg.asDiagonal() * std::pow(tau_s, 5) + 1.0 / 7.0 * S_bgd.asDiagonal() * std::pow(tau_s, 7)) * ie_F_21 * ie_F_21.transpose();
90Eigen::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)
92 return 1.0 / 3.0 * S_bad.asDiagonal() * std::pow(tau_s, 3) * T_rn_p * n_Dcm_b;
95Eigen::Matrix3d
ie_Q_dr_df(
const Eigen::Vector3d& S_bad,
const Eigen::Matrix3d& ie_Dcm_b,
const double& tau_s)
97 return 1.0 / 3.0 * S_bad.asDiagonal() * std::pow(tau_s, 3) * ie_Dcm_b;
100Eigen::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)
102 return 0.25 * S_bgd.asDiagonal() * std::pow(tau_s, 4) * T_rn_p * n_F_21 * n_Dcm_b;
105Eigen::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)
107 return 0.25 * S_bgd.asDiagonal() * std::pow(tau_s, 4) * ie_F_21 * ie_Dcm_b;
110Eigen::Matrix3d
Q_df_dv(
const Eigen::Vector3d& S_bad,
const Eigen::Matrix3d& b_Dcm_ien,
const double& tau_s)
112 return 0.5 * S_bad.asDiagonal() * std::pow(tau_s, 2) * b_Dcm_ien;
115Eigen::Matrix3d
Q_df_df(
const Eigen::Vector3d& S_bad,
const double& tau_s)
117 return S_bad.asDiagonal() * tau_s * Eigen::Matrix3d::Identity();
120Eigen::Matrix3d
Q_domega_psi(
const Eigen::Vector3d& S_bgd,
const Eigen::Matrix3d& b_Dcm_ien,
const double& tau_s)
122 return 0.5 * S_bgd.asDiagonal() * std::pow(tau_s, 2) * b_Dcm_ien;
127 return S_bgd.asDiagonal() * tau_s * Eigen::Matrix3d::Identity();
130Eigen::Matrix2d
Q_gnss(
const double& S_cPhi,
const double& S_cf,
const double& tau_s)
132 Eigen::Matrix2d Qg = Eigen::Matrix2d::Zero();
133 Qg(0, 0) = S_cPhi * tau_s + 1. / 3. * S_cf * std::pow(tau_s, 3);
134 Qg(0, 1) = 0.5 * S_cf * std::pow(tau_s, 2);
135 Qg(1, 0) = 0.5 * S_cf * std::pow(tau_s, 2);
136 Qg(1, 1) = S_cf * tau_s;
General process Noise definitions.
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 𝐐
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 𝐐