Program Listing for File conversions.hpp

Return to documentation for file (src/navtk/utils/conversions.hpp)

#pragma once

#include <navtk/aspn.hpp>
#include <navtk/filtering/containers/NavSolution.hpp>
#include <navtk/inertial/InertialPosVelAtt.hpp>
#include <navtk/inertial/StandardPosVelAtt.hpp>

namespace navtk {
namespace utils {

constexpr uint64_t NANO_PER_SEC = 1'000'000'000;

constexpr double SECONDS_PER_WEEK = (60 * 60 * 24 * 7);

filtering::NavSolution to_navsolution(const aspn_xtensor::MeasurementPositionVelocityAttitude& pva);

filtering::NavSolution to_navsolution(const inertial::InertialPosVelAtt& pva);

filtering::NavSolution to_navsolution(const Vector& pva);

aspn_xtensor::MeasurementPositionVelocityAttitude to_positionvelocityattitude(
    const filtering::NavSolution& pva);

aspn_xtensor::MeasurementPositionVelocityAttitude to_positionvelocityattitude(
    const inertial::InertialPosVelAtt& pva);

aspn_xtensor::MeasurementPositionVelocityAttitude to_positionvelocityattitude(const Vector& pva);

std::shared_ptr<aspn_xtensor::MeasurementPositionVelocityAttitude> to_positionvelocityattitude(
    std::shared_ptr<inertial::InertialPosVelAtt> pva);

void to_positionvelocityattitude(const inertial::InertialPosVelAtt& pva,
                                 aspn_xtensor::MeasurementPositionVelocityAttitude& storage);

inertial::StandardPosVelAtt to_standardposvelatt(const filtering::NavSolution& pva);

inertial::StandardPosVelAtt to_standardposvelatt(
    const aspn_xtensor::MeasurementPositionVelocityAttitude& pva);

inertial::StandardPosVelAtt to_standardposvelatt(const Vector& pva);

Vector to_vector_pva(const filtering::NavSolution& pva);

Vector to_vector_pva(const aspn_xtensor::MeasurementPositionVelocityAttitude& pva);

Vector to_vector_pva(const inertial::InertialPosVelAtt& pva);

aspn_xtensor::MeasurementPosition to_position(
    const aspn_xtensor::MeasurementPositionVelocityAttitude& pva);

Vector3 extract_pos(const aspn_xtensor::MeasurementPositionVelocityAttitude& pva);

Vector3 extract_vel(const aspn_xtensor::MeasurementPositionVelocityAttitude& pva);

Vector3 extract_pos(const aspn_xtensor::MeasurementPosition& pos);

Vector3 extract_vel(const aspn_xtensor::MeasurementVelocity& vel);

aspn_xtensor::MeasurementImu to_imu(
    aspn_xtensor::TypeTimestamp time = aspn_xtensor::to_type_timestamp(),
    const Vector& forces             = {NAN, NAN, NAN},
    const Vector& rates              = {NAN, NAN, NAN});
AspnBaseVector to_inertial_aux(const filtering::NavSolution& nav_sol,
                               const Vector& forces,
                               const Vector& rates = zeros(3));

AspnMeasurementPositionReferenceFrame convert_pva_to_pos_ref_frame(
    AspnMeasurementPositionVelocityAttitudeReferenceFrame r);
}  // namespace utils
}  // namespace navtk