0.2.0
Loading...
Searching...
No Matches
Functions.hpp File Reference

Inertial Navigation Helper Functions. More...

Go to the source code of this file.

Functions

template<typename Derived >
Derived::Scalar NAV::calcPitchFromStaticAcceleration (const Eigen::MatrixBase< Derived > &b_accel)
 Calculates the pitch angle from a static acceleration measurement.
 
template<typename Derived >
Derived::Scalar NAV::calcPitchFromVelocity (const Eigen::MatrixBase< Derived > &n_velocity)
 Calculates the Pitch angle from the trajectory defined by the given velocity.
 
template<typename Derived >
Derived::Scalar NAV::calcRollFromStaticAcceleration (const Eigen::MatrixBase< Derived > &b_accel)
 Calculates the roll angle from a static acceleration measurement.
 
template<typename Derived >
Derived::Scalar NAV::calcYawFromVelocity (const Eigen::MatrixBase< Derived > &n_velocity)
 Calculates the Yaw angle from the trajectory defined by the given velocity.
 
template<typename DerivedA , typename DerivedB = DerivedA>
Eigen::Vector3< typename DerivedA::Scalar > NAV::e_calcCentrifugalAcceleration (const Eigen::MatrixBase< DerivedA > &e_position, const Eigen::MatrixBase< DerivedB > &e_omega_ie=InsConst< typename DerivedB::Scalar >::e_omega_ie)
 Calculates the centrifugal acceleration in [m/s^2] (acceleration that makes a body follow a curved path)
 
template<typename DerivedA , typename DerivedB >
Eigen::Vector3< typename DerivedA::Scalar > NAV::e_calcCoriolisAcceleration (const Eigen::MatrixBase< DerivedA > &e_omega_ie, const Eigen::MatrixBase< DerivedB > &e_velocity)
 Calculates the coriolis acceleration in [m/s^2] (acceleration due to motion in rotating reference frame)
 
template<typename DerivedA , typename DerivedB , typename DerivedC >
Eigen::Vector3< typename DerivedA::Scalar > NAV::n_calcCoriolisAcceleration (const Eigen::MatrixBase< DerivedA > &n_omega_ie, const Eigen::MatrixBase< DerivedB > &n_omega_en, const Eigen::MatrixBase< DerivedC > &n_velocity)
 Calculates the coriolis acceleration in [m/s^2] (acceleration due to motion in rotating reference frame)
 
template<typename DerivedA , typename DerivedB >
Eigen::Vector3< typename DerivedA::Scalar > NAV::n_calcTransportRate (const Eigen::MatrixBase< DerivedA > &lla_position, const Eigen::MatrixBase< DerivedB > &n_velocity, const typename DerivedA::Scalar &R_N, const typename DerivedA::Scalar &R_E)
 Calculates the transport rate ω_en_n (rotation rate of the Earth frame relative to the navigation frame)
 

Detailed Description

Inertial Navigation Helper Functions.

Author
T. Topp (topp@.nosp@m.ins..nosp@m.uni-s.nosp@m.tutt.nosp@m.gart..nosp@m.de)
Date
2020-09-02

Function Documentation

◆ calcPitchFromStaticAcceleration()

template<typename Derived >
Derived::Scalar NAV::calcPitchFromStaticAcceleration ( const Eigen::MatrixBase< Derived > & b_accel)

Calculates the pitch angle from a static acceleration measurement.

Parameters
[in]b_accelAcceleration measurement in static condition in [m/s^2]
Returns
The pitch angle in [rad]
Note
See E.-H. Shin (2005) - Estimation Techniques for Low-Cost Inertial Navigation (Chapter 2.6)

◆ calcPitchFromVelocity()

template<typename Derived >
Derived::Scalar NAV::calcPitchFromVelocity ( const Eigen::MatrixBase< Derived > & n_velocity)

Calculates the Pitch angle from the trajectory defined by the given velocity.

\begin{equation} \label{eq:eq-INS-Mechanization-Pitch} P = \tan^{-1}\left(\frac{-v_D}{\sqrt{v_N^2 + v_E^2}}\right) \end{equation}

Parameters
[in]n_velocityVelocity in [m/s] in local-navigation frame coordinates
Returns
Pitch angle in [rad]
Note
See [17] Groves, ch. 6.1.4, eq. 6.17, p. 225

◆ calcRollFromStaticAcceleration()

template<typename Derived >
Derived::Scalar NAV::calcRollFromStaticAcceleration ( const Eigen::MatrixBase< Derived > & b_accel)

Calculates the roll angle from a static acceleration measurement.

Parameters
[in]b_accelAcceleration measurement in static condition in [m/s^2]
Returns
The roll angle in [rad]
Note
See E.-H. Shin (2005) - Estimation Techniques for Low-Cost Inertial Navigation (Chapter 2.6)

◆ calcYawFromVelocity()

template<typename Derived >
Derived::Scalar NAV::calcYawFromVelocity ( const Eigen::MatrixBase< Derived > & n_velocity)

Calculates the Yaw angle from the trajectory defined by the given velocity.

\begin{equation} \label{eq:eq-INS-Mechanization-Yaw} Y = \tan^{-1}\left(\frac{v_E}{v_N}\right) \end{equation}

Parameters
[in]n_velocityVelocity in [m/s] in local-navigation frame coordinates
Returns
Yaw angle in [rad]
Note
See [17] Groves, ch. 6.1.4, eq. 6.14, p. 225

◆ e_calcCentrifugalAcceleration()

template<typename DerivedA , typename DerivedB = DerivedA>
Eigen::Vector3< typename DerivedA::Scalar > NAV::e_calcCentrifugalAcceleration ( const Eigen::MatrixBase< DerivedA > & e_position,
const Eigen::MatrixBase< DerivedB > & e_omega_ie = InsConst<typename DerivedB::Scalar>::e_omega_ie )

Calculates the centrifugal acceleration in [m/s^2] (acceleration that makes a body follow a curved path)

\begin{equation} \label{eq:eq-INS-Mechanization-CentrifugalAcceleration} \boldsymbol{\omega}_{ie}^e \times [ \boldsymbol{\omega}_{ie}^e \times \mathbf{x}^e ] \end{equation}

Parameters
[in]e_positionPosition in coordinates in [m]
[in]e_omega_ieAngular rate of the Earth rotation in [rad/s] in the Earth coordinate frame
Returns
Centrifugal acceleration in the Earth coordinate frame in [m/s^2]

◆ e_calcCoriolisAcceleration()

template<typename DerivedA , typename DerivedB >
Eigen::Vector3< typename DerivedA::Scalar > NAV::e_calcCoriolisAcceleration ( const Eigen::MatrixBase< DerivedA > & e_omega_ie,
const Eigen::MatrixBase< DerivedB > & e_velocity )

Calculates the coriolis acceleration in [m/s^2] (acceleration due to motion in rotating reference frame)

\begin{equation} \label{eq:eq-INS-Mechanization-CoriolisAcceleration-e} 2 \boldsymbol{\omega}_{ie}^e \times \boldsymbol{v}^e \end{equation}

Parameters
[in]e_omega_ieω_ie_e Angular rate of the Earth rotation in [rad/s] in ECEF coordinates
[in]e_velocityVelocity in ECEF frame coordinates in [m/s^2]
Returns
Coriolis acceleration in ECEF coordinates in [m/s^2]

◆ n_calcCoriolisAcceleration()

template<typename DerivedA , typename DerivedB , typename DerivedC >
Eigen::Vector3< typename DerivedA::Scalar > NAV::n_calcCoriolisAcceleration ( const Eigen::MatrixBase< DerivedA > & n_omega_ie,
const Eigen::MatrixBase< DerivedB > & n_omega_en,
const Eigen::MatrixBase< DerivedC > & n_velocity )

Calculates the coriolis acceleration in [m/s^2] (acceleration due to motion in rotating reference frame)

\begin{equation} \label{eq:eq-INS-Mechanization-CoriolisAcceleration} (2 \boldsymbol{\omega}_{ie}^n + \boldsymbol{\omega}_{en}^n) \times \boldsymbol{v}^n \end{equation}

Parameters
[in]n_omega_ieω_ie_n Angular rate of the Earth rotation in [rad/s] in local-navigation coordinates
[in]n_omega_enω_en_n Transport rate in [rad/s] in local-navigation coordinates
[in]n_velocityVelocity in local-navigation frame coordinates in [m/s^2]
Returns
Coriolis acceleration in local-navigation coordinates in [m/s^2]

◆ n_calcTransportRate()

template<typename DerivedA , typename DerivedB >
Eigen::Vector3< typename DerivedA::Scalar > NAV::n_calcTransportRate ( const Eigen::MatrixBase< DerivedA > & lla_position,
const Eigen::MatrixBase< DerivedB > & n_velocity,
const typename DerivedA::Scalar & R_N,
const typename DerivedA::Scalar & R_E )

Calculates the transport rate ω_en_n (rotation rate of the Earth frame relative to the navigation frame)

\begin{equation} \label{eq:eq-INS-Mechanization-TransportRate} \boldsymbol{\omega}_{en}^n = \begin{bmatrix} \dfrac{v_E}{R_E + h} & \dfrac{-v_N}{R_N + h} & \dfrac{-v_E \tan{\phi}}{R_E + h} \end{bmatrix}^T \end{equation}

Parameters
[in]lla_position[𝜙, λ, h] Latitude, Longitude and altitude in [rad, rad, m]
[in]n_velocityVelocity in [m/s], in navigation coordinate
[in]R_NNorth/South (meridian) earth radius [m]
[in]R_EEast/West (prime vertical) earth radius [m]
Returns
ω_en_n Transport Rate in local-navigation coordinates in [rad/s]
Note
See [17] Groves, ch. 5.4.1, eq. 5.44, p. 177
See [14] Gleason, ch. 6.2.3.2, eq. 6.15, p. 155
See [45] Titterton, ch. 3.7.2, eq. 3.87, p. 50 (mistake in denominator 3rd term)