Instrument Neutral Distributed Interface INDI 2.2.5
Public Member Functions | List of all members
INDI::MadgwickFilter Class Reference

Madgwick AHRS filter (9-DOF and 6-DOF). More...

#include <imusensorfusion.h>

Inheritance diagram for INDI::MadgwickFilter:
INDI::IMUSensorFusion

Public Member Functions

 MadgwickFilter (double beta=0.1)
 
virtual ~MadgwickFilter ()=default
 
void update (double gx, double gy, double gz, double ax, double ay, double az, double mx, double my, double mz, double dt, bool useMag=true) override
 Perform one filter update step.
 
void getQuaternion (double &w, double &i, double &j, double &k) const override
 Return the current orientation quaternion.
 
void reset () override
 Reset the filter to the identity quaternion.
 
void setBeta (double beta)
 Set the filter gain β.
 
double getBeta () const
 
- Public Member Functions inherited from INDI::IMUSensorFusion
virtual ~IMUSensorFusion ()=default
 

Detailed Description

Madgwick AHRS filter (9-DOF and 6-DOF).

A computationally efficient gradient-descent based orientation filter. A single tuning parameter β (beta) controls the trade-off between gyroscope integration accuracy and accelerometer/magnetometer correction:

Recommended starting value: β = 0.1 for astronomical applications.

Reference: Madgwick, S.O.H. (2010) "An efficient orientation filter for inertial and inertial/magnetic sensor arrays"

Definition at line 99 of file imusensorfusion.h.

Constructor & Destructor Documentation

◆ MadgwickFilter()

INDI::MadgwickFilter::MadgwickFilter ( double  beta = 0.1)
explicit
Parameters
betaAlgorithm gain β. Controls gyroscope measurement error (rad/s). Default 0.1 is suitable for slow-moving astronomical applications.

Definition at line 37 of file imusensorfusion.cpp.

◆ ~MadgwickFilter()

virtual INDI::MadgwickFilter::~MadgwickFilter ( )
virtualdefault

Member Function Documentation

◆ getBeta()

double INDI::MadgwickFilter::getBeta ( ) const
inline

Definition at line 124 of file imusensorfusion.h.

◆ getQuaternion()

void INDI::MadgwickFilter::getQuaternion ( double &  w,
double &  i,
double &  j,
double &  k 
) const
overridevirtual

Return the current orientation quaternion.

Parameters
wScalar (real) component
iVector X component
jVector Y component
kVector Z component

Implements INDI::IMUSensorFusion.

Definition at line 50 of file imusensorfusion.cpp.

◆ reset()

void INDI::MadgwickFilter::reset ( )
overridevirtual

Reset the filter to the identity quaternion.

Implements INDI::IMUSensorFusion.

Definition at line 42 of file imusensorfusion.cpp.

◆ setBeta()

void INDI::MadgwickFilter::setBeta ( double  beta)
inline

Set the filter gain β.

Definition at line 120 of file imusensorfusion.h.

◆ update()

void INDI::MadgwickFilter::update ( double  gx,
double  gy,
double  gz,
double  ax,
double  ay,
double  az,
double  mx,
double  my,
double  mz,
double  dt,
bool  useMag = true 
)
overridevirtual

Perform one filter update step.

Parameters
gxGyroscope X-axis angular rate (rad/s)
gyGyroscope Y-axis angular rate (rad/s)
gzGyroscope Z-axis angular rate (rad/s)
axAccelerometer X-axis (m/s² or any unit — only direction used)
ayAccelerometer Y-axis
azAccelerometer Z-axis
mxMagnetometer X-axis (µT or any consistent unit)
myMagnetometer Y-axis
mzMagnetometer Z-axis
dtTime step in seconds since last update
useMagIf false the magnetometer data is ignored (6-DOF mode)

Implements INDI::IMUSensorFusion.

Definition at line 58 of file imusensorfusion.cpp.


The documentation for this class was generated from the following files: