Program Listing for File inertial_functions.hpp

Return to documentation for file (src/navtk/inertial/inertial_functions.hpp)

#pragma once

#include <navtk/aspn.hpp>
#include <navtk/inertial/AidingAltData.hpp>
#include <navtk/navutils/wgs84.hpp>
#include <navtk/tensors.hpp>

namespace navtk {
namespace inertial {
Vector3 calc_force_ned(const Matrix3& C_s_to_n, double dt, const Vector3& dth, const Vector3& dv);

Vector3 calc_force_ned(const aspn_xtensor::MeasurementPositionVelocityAttitude& pva1,
                       const aspn_xtensor::MeasurementPositionVelocityAttitude& pva2);

Vector3 calc_rot_rate(const Matrix3& C_s_to_n0,
                      double r_e,
                      double r_n,
                      double alt0,
                      double cos_l,
                      double dt,
                      const Vector3& dth,
                      double sin_l,
                      double tan_l,
                      const Vector3& v_ned0,
                      double omega = navutils::ROTATION_RATE);

Vector3 calc_rot_rate(const aspn_xtensor::MeasurementPositionVelocityAttitude& pva,
                      double dt,
                      const Vector3& dth);


// TODO: #690 Implement a more robust alternative which doesn't make a small angle assumption.
Vector3 calc_rot_rate(const aspn_xtensor::MeasurementPositionVelocityAttitude& pva1,
                      const aspn_xtensor::MeasurementPositionVelocityAttitude& pva2);

double apply_aiding_alt_accel(double r_zero,
                              Vector3* accel_vector,
                              AidingAltData* aiding_alt_data,
                              double alt0,
                              double dt,
                              const Vector3& g);

Vector3 calc_force_and_acceleration_offset(double r_e,
                                           double r_n,
                                           double alt0,
                                           double cos_l,
                                           const Vector3& g,
                                           double sec_l,
                                           double sin_l,
                                           const Vector3& v_ned0,
                                           double omega = navutils::ROTATION_RATE);

}  // namespace inertial
}  // namespace navtk