.. _program_listing_file_src_navtk_inertial_AlignBase.hpp: Program Listing for File AlignBase.hpp ====================================== |exhale_lsh| :ref:`Return to documentation for file ` (``src/navtk/inertial/AlignBase.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #pragma once #include #include #include #include #include namespace navtk { namespace inertial { enum class MotionNeeded { NO_MOTION, MOTION_NEEDED, ANY_MOTION }; class AlignBase { public: enum class AlignmentStatus { ALIGNING_COARSE, ALIGNING_FINE, ALIGNED_GOOD }; enum class CovarianceFormat { PINSON15NEDBLOCK, PINSON21NEDBLOCK, }; public: virtual ~AlignBase() = default; AlignBase(bool supports_static, bool supports_dynamic, const filtering::ImuModel& model = filtering::stim300_model()); AlignBase(const AlignBase& other) = default; AlignBase(AlignBase&& other) = default; AlignBase& operator=(const AlignBase& other) = default; AlignBase& operator=(AlignBase&& other) = default; virtual AlignmentStatus process(std::shared_ptr message) = 0; bool requires_dynamic(); AlignmentStatus check_alignment_status(); virtual std::pair get_computed_alignment() const; virtual std::pair get_computed_covariance( const CovarianceFormat format = CovarianceFormat::PINSON15NEDBLOCK) const; virtual std::pair get_imu_errors() const; virtual MotionNeeded motion_needed() const = 0; protected: Matrix bias_stats_from_model( const CovarianceFormat format = CovarianceFormat::PINSON15NEDBLOCK) const; AlignmentStatus alignment_status = AlignmentStatus::ALIGNING_COARSE; std::pair computed_alignment; std::vector align_buffer; std::vector gps_buffer; bool supports_static; bool supports_dynamic; filtering::ImuModel model; }; } // namespace inertial } // namespace navtk