10#ifndef M5_UNIT_IMU_IMU_FILTER_EKF_HPP
11#define M5_UNIT_IMU_IMU_FILTER_EKF_HPP
53 virtual void reset()
override;
54 virtual void update(
const float dt,
const float accel[3],
const float gyro[3],
const float* mag)
override;
55 virtual void quaternion(
float& w,
float& x,
float& y,
float& z)
const override;
70 bool writeNoiseParams(
const float gyro_noise_dps,
const float accel_noise_g,
const float mag_noise_ut,
71 const float bias_random_walk_dps);
75 return _gyro_noise_dps;
80 return _accel_noise_g;
90 return _bias_random_walk_dps;
108 bool writeQuaternion(
const float w,
const float x,
const float y,
const float z);
115 const float noise_var);
121 float _gyro_noise_dps{0.5f};
122 float _accel_noise_g{0.05f};
123 float _mag_noise_ut{2.0f};
124 float _bias_random_walk_dps{0.01f};
Framework-independent contract shared by every AHRS attitude filter.
Definition filter_base.hpp:81
Quaternion extended Kalman filter (EKF) with gyro bias estimation.
Definition ekf.hpp:46
float readAccelNoise() const
Current accelerometer measurement noise (G)
Definition ekf.hpp:78
m5::math::Vector3 readGyroBias() const
Current estimated gyro bias (dps, body frame)
Definition ekf.cpp:347
float readBiasRandomWalk() const
Current gyro bias random walk (dps)
Definition ekf.hpp:88
bool writeNoiseParams(const float gyro_noise_dps, const float accel_noise_g, const float mag_noise_ut, const float bias_random_walk_dps)
Set the process/observation noise parameters.
Definition ekf.cpp:333
float readGyroNoise() const
Current gyro measurement noise (dps)
Definition ekf.hpp:73
bool writeQuaternion(const float w, const float x, const float y, const float z)
Overwrite the current attitude estimate directly.
Definition ekf.cpp:352
virtual void update(const float dt, const float accel[3], const float gyro[3], const float *mag) override
Fuse one IMU sample into the attitude estimate.
Definition ekf.cpp:284
float readMagNoise() const
Current magnetometer measurement noise (uT)
Definition ekf.hpp:83
virtual void reset() override
Reset the internal attitude estimate (and any filter state) to identity.
Definition ekf.cpp:200
virtual void quaternion(float &w, float &x, float &y, float &z) const override
Current fused attitude.
Definition ekf.cpp:325
Fixed-size (R rows x C columns) float matrix, std::array backed (no heap allocation)
Definition matrix.hpp:39
Common contract for AHRS attitude filters.
Minimal fixed-size matrix arithmetic (framework independent)
Top level namespace of M5Stack.
Definition ahrs_controller.cpp:26
Minimal quaternion arithmetic for attitude representation (framework independent)
Plain Hamilton quaternion (float) used to represent attitude.
Definition quaternion.hpp:31
Plain 3D vector (float)
Definition vector3.hpp:25
Minimal 3D vector arithmetic (framework independent)