M5Unit-IMU 0.0.2 git rev:e5b00aa
Loading...
Searching...
No Matches
madgwick.hpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2026 M5Stack Technology CO LTD
3 *
4 * SPDX-License-Identifier: MIT
5 */
10#ifndef M5_UNIT_IMU_IMU_FILTER_MADGWICK_HPP
11#define M5_UNIT_IMU_IMU_FILTER_MADGWICK_HPP
12
13#include <math/quaternion.hpp>
14
15#include "filter_base.hpp"
16
17namespace m5 {
18namespace imu {
19
33public:
34 MadgwickFilter() = default;
35
36 virtual void reset() override;
37 virtual void update(const float dt, const float accel[3], const float gyro[3], const float* mag) override;
38 virtual void quaternion(float& w, float& x, float& y, float& z) const override;
39
45 bool writeBeta(const float beta);
47 inline float readBeta() const
48 {
49 return _beta;
50 }
51
63 bool writeQuaternion(const float w, const float x, const float y, const float z);
64
65private:
66 m5::math::Quaternion _q{}; // Current attitude estimate (identity by default)
67 float _beta{0.1f}; // Gradient descent gain
68};
69
70} // namespace imu
71} // namespace m5
72#endif
Framework-independent contract shared by every AHRS attitude filter.
Definition filter_base.hpp:81
Gradient-descent orientation filter (Madgwick 2010)
Definition madgwick.hpp:32
bool writeQuaternion(const float w, const float x, const float y, const float z)
Overwrite the current attitude estimate directly.
Definition madgwick.cpp:132
virtual void reset() override
Reset the internal attitude estimate (and any filter state) to identity.
Definition madgwick.cpp:22
bool writeBeta(const float beta)
Set the gradient descent gain.
Definition madgwick.cpp:123
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 madgwick.cpp:27
virtual void quaternion(float &w, float &x, float &y, float &z) const override
Current fused attitude.
Definition madgwick.cpp:115
float readBeta() const
Current gradient descent gain.
Definition madgwick.hpp:47
Common contract for AHRS attitude filters.
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