Program Listing for File navigation.hpp

Return to documentation for file (src/navtk/navutils/navigation.hpp)

#pragma once

#include <memory>
#include <utility>

#include <navtk/tensors.hpp>

namespace navtk {
namespace navutils {
Matrix3 axis_angle_to_dcm(const Vector3 &axis, double angle);

Matrix calc_van_loan(const Matrix &F, const Matrix &G, const Matrix &Q, double dt);

Matrix3 correct_dcm_with_tilt(const Matrix3 &dcm, const Vector3 &tilt);

Vector4 dcm_to_quat(const Matrix3 &dcm);

Vector3 dcm_to_rpy(const Matrix3 &dcm);

double delta_lat_to_north(double delta_lat, double approx_lat, double altitude = 0.0);

double delta_lon_to_east(double delta_lon, double approx_lat, double altitude = 0.0);

std::pair<Matrix, Matrix> discretize_first_order(const Matrix &f, const Matrix &q, double dt);

std::pair<Matrix, Matrix> discretize_second_order(const Matrix &f, const Matrix &q, double dt);


std::pair<Matrix, Matrix> discretize_van_loan(const Matrix &f, const Matrix &q, double dt);

double east_to_delta_lon(double east_distance, double approx_lat, double altitude = 0.0);

Matrix3 ecef_to_cen(const Vector3 &Pe);

Vector3 ecef_to_llh(const Vector3 &Pe);

Vector3 ecef_to_local_level(const Vector3 &P0e, const Vector3 &Pe);

Matrix3 llh_to_cen(const Vector3 &Pwgs);

Vector3 llh_to_ecef(const Vector3 &Pwgs);

Vector3 local_level_to_ecef(const Vector3 &P0e, const Vector3 &Pn);

double meridian_radius(double latitude);

double north_to_delta_lat(double north_distance, double approx_lat, double altitude = 0.0);

Matrix3 quat_to_dcm(const Vector4 &quat);

Vector3 quat_to_rpy(const Vector4 &quat);

Matrix3 rpy_to_dcm(const Vector3 &rpy);

Vector4 rpy_to_quat(const Vector3 &rpy);

double transverse_radius(double latitude);

Matrix3 wander_to_C_enu_to_n(double wander);

Matrix3 wander_to_C_ned_to_n(double wander);

Matrix3 wander_to_C_ned_to_l(double wander);

Matrix3 lat_lon_wander_to_C_n_to_e(double lat, double lon, double wander = 0.0);

Vector3 C_n_to_e_to_lat_lon_wander(const Matrix &C_n_to_e);

double C_n_to_e_to_wander(const Matrix3 &C_n_to_e);

std::pair<Matrix3, double> ecef_wander_to_C_n_to_e_h(const Vector3 &ecef_pos, double wander = 0.0);

Vector3 C_n_to_e_h_to_llh(const Matrix3 &C_n_to_e, double h);

Vector3 C_n_to_e_h_to_ecef(const Matrix3 &C_n_to_e, double h);

Matrix3 C_ecef_to_e();

Matrix3 rot_vec_to_dcm(const Vector3 &phi);

std::pair<bool, double> geoid_minus_ellipsoid(double latitude,
                                              double longitude,
                                              const std::string &path = "WW15MGH.GRD");

std::pair<bool, double> hae_to_msl(double hae,
                                   double latitude,
                                   double longitude,
                                   const std::string &path = "WW15MGH.GRD");

std::pair<bool, double> msl_to_hae(double msl,
                                   double latitude,
                                   double longitude,
                                   const std::string &path = "WW15MGH.GRD");

}  // namespace navutils
}  // namespace navtk