M5Unit-IMU 0.0.2 git rev:e5b00aa
Loading...
Searching...
No Matches
complementary.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_COMPLEMENTARY_HPP
11#define M5_UNIT_IMU_IMU_FILTER_COMPLEMENTARY_HPP
12
13#include "filter_base.hpp"
14
15namespace m5 {
16namespace imu {
17
29public:
30 ComplementaryFilter() = default;
31
32 virtual void reset() override;
33 virtual void update(const float dt, const float accel[3], const float gyro[3], const float* mag) override;
34 virtual void quaternion(float& w, float& x, float& y, float& z) const override;
35
42 bool writeAlpha(const float alpha);
44 inline float readAlpha() const
45 {
46 return _alpha;
47 }
48
49private:
50 float _alpha{0.98f}; // Blend factor (weight of the gyro-integrated angle)
51 float _roll{}; // Current roll estimate (deg)
52 float _pitch{}; // Current pitch estimate (deg)
53 float _yaw{}; // Current yaw estimate (deg)
54};
55
56} // namespace imu
57} // namespace m5
58#endif
Framework-independent contract shared by every AHRS attitude filter.
Definition filter_base.hpp:81
Angle-based first-order complementary filter.
Definition complementary.hpp:28
bool writeAlpha(const float alpha)
Set the complementary blend factor.
Definition complementary.cpp:79
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 complementary.cpp:30
float readAlpha() const
Current complementary blend factor.
Definition complementary.hpp:44
virtual void reset() override
Reset the internal attitude estimate (and any filter state) to identity.
Definition complementary.cpp:25
virtual void quaternion(float &w, float &x, float &y, float &z) const override
Current fused attitude.
Definition complementary.cpp:70
Common contract for AHRS attitude filters.
Top level namespace of M5Stack.
Definition ahrs_controller.cpp:26