Program Listing for File InertialPosVelAtt.hpp

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

#pragma once

#include <navtk/aspn.hpp>
#include <navtk/tensors.hpp>

namespace navtk {
namespace inertial {

class InertialPosVelAtt : public aspn_xtensor::AspnBase {
public:
    virtual ~InertialPosVelAtt() = default;

    virtual bool is_wander_capable() const = 0;

    virtual Vector3 get_llh() const = 0;

    virtual Vector3 get_vned() const = 0;

    virtual Matrix3 get_C_s_to_ned() const = 0;

    virtual std::pair<Matrix3, double> get_C_n_to_e_h() const = 0;

    virtual Vector3 get_vn() const = 0;

    virtual Matrix3 get_C_s_to_l() const = 0;

    virtual std::shared_ptr<InertialPosVelAtt> clone() const = 0;

    aspn_xtensor::TypeTimestamp time_validity;

protected:
    InertialPosVelAtt(const aspn_xtensor::TypeTimestamp& t = aspn_xtensor::to_type_timestamp(),
                      AspnMessageType message_type         = ASPN_EXTENDED_BEGIN)
        : aspn_xtensor::TypeHeader(message_type, 0, 0, 0, 0), time_validity(t){};
};

}  // namespace inertial
}  // namespace navtk