19 Eigen::Matrix3d skewMat;
21 skewMat << 0 , n_omega_in(2), -n_omega_in(1),
22 -n_omega_in(2), 0 , n_omega_in(0),
23 n_omega_in(1), -n_omega_in(0), 0 ;
28Eigen::Matrix3d
n_F_dpsi_dv(
double latitude,
double height,
double R_N,
double R_E)
31 Eigen::Matrix3d n_F_12 = Eigen::Matrix3d::Zero(3, 3);
33 n_F_12(0, 1) = -1 / (R_E + height);
34 n_F_12(1, 0) = 1 / (R_N + height);
35 n_F_12(2, 1) = std::tan(latitude) / (R_E + height);
40Eigen::Matrix3d
n_F_dpsi_dr(
double latitude,
double height,
const Eigen::Vector3d& n_velocity,
double R_N,
double R_E)
42 const double& v_N = n_velocity(0);
43 const double& v_E = n_velocity(1);
46 Eigen::Matrix3d n_F_13 = Eigen::Matrix3d::Zero(3, 3);
49 n_F_13(0, 2) = v_E / std::pow(R_E + height, 2.0);
50 n_F_13(1, 2) = -v_N / std::pow(R_N + height, 2.0);
52 + v_E / ((R_E + height) * std::pow(std::cos(latitude), 2));
53 n_F_13(2, 2) = -v_E * std::tan(latitude) / std::pow(R_E + height, 2.0);
65 const auto& f_N = n_force_ib(0);
66 const auto& f_E = n_force_ib(1);
67 const auto& f_D = n_force_ib(2);
70 Eigen::Matrix3d skewMat;
72 skewMat << 0 , f_D, -f_E,
80Eigen::Matrix3d
n_F_dv_dv(
const Eigen::Vector3d& n_velocity,
double latitude,
double height,
double R_N,
double R_E)
82 const double& v_N = n_velocity(0);
83 const double& v_E = n_velocity(1);
84 const double& v_D = n_velocity(2);
87 Eigen::Matrix3d n_F_22 = Eigen::Matrix3d::Zero(3, 3);
89 n_F_22(0, 0) = v_D / (R_N + height);
90 n_F_22(0, 1) = -2.0 * v_E * std::tan(latitude) / (R_E + height)
92 n_F_22(0, 2) = v_N / (R_N + height);
93 n_F_22(1, 0) = v_E * std::tan(latitude) / (R_E + height)
95 n_F_22(1, 1) = (v_N * std::tan(latitude) + v_D) / (R_E + height);
96 n_F_22(1, 2) = v_E / (R_E + height)
98 n_F_22(2, 0) = -2.0 * v_N / (R_N + height);
99 n_F_22(2, 1) = -2.0 * v_E / (R_E + height)
105Eigen::Matrix3d
n_F_dv_dr(
const Eigen::Vector3d& n_velocity,
double latitude,
double height,
double R_N,
double R_E,
double g_0,
double r_eS_e)
108 Eigen::Matrix3d n_F_23 = Eigen::Matrix3d::Zero(3, 3);
110 const double& v_N = n_velocity(0);
111 const double& v_E = n_velocity(1);
112 const double& v_D = n_velocity(2);
114 n_F_23(0, 0) = -std::pow(v_E, 2) / ((R_E + height) * std::pow(std::cos(latitude), 2.0))
117 n_F_23(0, 2) = std::pow(v_E, 2) * std::tan(latitude) / std::pow(R_E + height, 2.0)
118 - (v_N * v_D) / std::pow(R_N + height, 2.0);
120 n_F_23(1, 0) = v_N * v_E / ((R_E + height) * std::pow(std::cos(latitude), 2.0))
124 n_F_23(1, 2) = -(v_N * v_E * std::tan(latitude) + v_E * v_D) / std::pow(R_E + height, 2.0);
128 n_F_23(2, 2) = std::pow(v_E, 2) / std::pow(R_E + height, 2.0)
129 + std::pow(v_N, 2) / std::pow(R_N + height, 2.0)
135Eigen::Matrix3d
n_F_dv_df(
const Eigen::Matrix3d& n_Dcm_b)
140Eigen::Matrix3d
n_F_dr_dv(
double latitude,
double height,
double R_N,
double R_E)
143 Eigen::Matrix3d n_F_32 = Eigen::Matrix3d::Zero(3, 3);
144 n_F_32(0, 0) = 1.0 / (R_N + height);
145 n_F_32(1, 1) = 1.0 / ((R_E + height) * std::cos(latitude));
151Eigen::Matrix3d
n_F_dr_dr(
const Eigen::Vector3d& n_velocity,
double latitude,
double height,
double R_N,
double R_E)
153 const double& v_N = n_velocity(0);
154 const double& v_E = n_velocity(1);
157 Eigen::Matrix3d n_F_33 = Eigen::Matrix3d::Zero(3, 3);
159 n_F_33(0, 2) = -v_N / std::pow(R_N + height, 2.0);
160 n_F_33(1, 0) = v_E * std::tan(latitude) / ((R_E + height) * std::cos(latitude));
161 n_F_33(1, 2) = -v_E / (std::pow(R_E + height, 2.0) * std::cos(latitude));
169 return -1.0 * beta_a.asDiagonal();
172Eigen::Matrix3d
n_F_dw_dw(
const Eigen::Vector3d& beta_omega)
175 return -1.0 * beta_omega.asDiagonal();
Error Equations for the local navigation frame.
static constexpr double omega_ie
Nominal mean angular velocity of the Earth in [rad/s].
Eigen::Matrix3d n_F_dv_df(const Eigen::Matrix3d &n_Dcm_b)
Calculates the matrix 𝐅_𝜓'_𝛿f.
Eigen::Matrix3d n_F_dpsi_dr(double latitude, double height, const Eigen::Vector3d &n_velocity, double R_N, double R_E)
Calculates the matrix 𝐅_𝜓'_𝛿r.
Eigen::Matrix3d n_F_dpsi_dv(double latitude, double height, double R_N, double R_E)
Calculates the matrix 𝐅_𝜓'_𝛿v.
Eigen::Matrix3d n_F_dr_dv(double latitude, double height, double R_N, double R_E)
Calculates the matrix 𝐅_𝛿r'_𝛿v.
Eigen::Matrix3d n_F_dv_dr(const Eigen::Vector3d &n_velocity, double latitude, double height, double R_N, double R_E, double g_0, double r_eS_e)
Calculates the matrix 𝐅_𝛿v'_𝛿r.
Eigen::Matrix3d n_F_dpsi_dw(const Eigen::Matrix3d &n_Dcm_b)
Calculates the matrix 𝐅_𝜓'_𝛿ω
Eigen::Matrix3d n_F_dw_dw(const Eigen::Vector3d &beta_omega)
Calculates the matrix 𝐅_𝛿ω'_𝛿ω
Eigen::Matrix3d n_F_dv_dpsi(const Eigen::Vector3d &n_force_ib)
Calculates the matrix 𝐅_𝛿v'_𝜓
Eigen::Matrix3d n_F_df_df(const Eigen::Vector3d &beta_a)
Calculates the matrix 𝐅_𝛿f'_𝛿f.
Eigen::Matrix3d n_F_dpsi_dpsi(const Eigen::Vector3d &n_omega_in)
Calculates the matrix 𝐅_𝜓'_𝜓
Eigen::Matrix3d n_F_dr_dr(const Eigen::Vector3d &n_velocity, double latitude, double height, double R_N, double R_E)
Calculates the matrix 𝐅_𝛿r'_𝛿r.
Eigen::Matrix3d n_F_dv_dv(const Eigen::Vector3d &n_velocity, double latitude, double height, double R_N, double R_E)
Calculates the matrix 𝐅_𝛿v'_𝛿v.