#pragma once #include "Estimator.hpp" class QuadEstimator : public Estimator { public: QuadEstimator(); QuadEstimator(std::string name); ~QuadEstimator() {} void ComputeEstimate() override; void InitClass(); private: void UpdatePoseEstimate(); void UpdateContactEstimate(); inline float get_pc_pz(const float& pz, const float& mu_pz, const float & sigma_pz); inline float get_pc_fz(const float& fz, const float& mu_fz, const float & sigma_fz); vec4 get_pc_pz(const vec4& pz); vec4 get_pc_fz(const vec4& fz); std::string m_name; vec12 m_forces_estimated; mat4x4 m_sigma_pz; mat4x4 m_sigma_fz; mat8x8 m_sigma_measurement; mat4x4 m_sigma_process; float process_noise_pimu; float process_noise_vimu; float process_noise_pfoot; float sensor_noise_pimu_rel_foot; float sensor_noise_vimu_rel_foot; float sensor_noise_zfoot; // Estimator Vars Eigen::Matrix _xhat; Eigen::Matrix _ps; Eigen::Matrix _vs; Eigen::Matrix _A; Eigen::Matrix _Q0; Eigen::Matrix _P; Eigen::Matrix _R0; Eigen::Matrix _B; Eigen::Matrix _C; Eigen::Matrix Q; Eigen::Matrix R; void InitEstimatorVars(); void InitTimedEstimatorVars(); vec18 m_jv_prev; // Iir::Butterworth::LowPass<2> m_ja_filter[18]; };