RTAB-Map 0.23.10
Real-Time Appearance-Based Mapping
Loading...
Searching...
No Matches
rtabmap::IMUFilter Class Referenceabstract

Fuses gyroscope and accelerometer samples into an orientation quaternion. More...

#include <IMUFilter.h>

Public Types

enum  Type { kMadgwick = 0 , kComplementaryFilter = 1 }
 Orientation fusion algorithm. More...
 

Public Member Functions

virtual void parseParameters (const ParametersMap &parameters)
 Re-reads filter parameters from parameters.
 
void update (double gx, double gy, double gz, double ax, double ay, double az, double stamp)
 Integrates one IMU sample and updates the internal orientation estimate.
 
virtual IMUFilter::Type type () const =0
 
virtual void getOrientation (double &qx, double &qy, double &qz, double &qw) const =0
 Current orientation estimate.
 
virtual void reset (double qx=0.0, double qy=0.0, double qz=0.0, double qw=1.0)=0
 Resets internal state to the given orientation.
 

Static Public Member Functions

static IMUFiltercreate (const ParametersMap &parameters=ParametersMap())
 Creates a filter using type parsed from parameters.
 
static IMUFiltercreate (IMUFilter::Type type, const ParametersMap &parameters=ParametersMap())
 Creates a filter of the given type.
 

Protected Member Functions

 IMUFilter (const ParametersMap &parameters=ParametersMap())
 

Detailed Description

Fuses gyroscope and accelerometer samples into an orientation quaternion.

Implementations integrate angular rates and correct drift using the measured gravity vector. The public update() API takes timestamps and computes the time step between consecutive calls.

Factory methods create() return heap-allocated instances; the caller owns the pointer (e.g. SensorCaptureThread, IMUThread, Camera).

Output orientation from getOrientation() is a unit quaternion (qx, qy, qz, qw) in the same convention as IMU (body frame).

Filter tuning parameters are read from ParametersMap (ImuFilter/... keys); see kComplementaryFilter and kMadgwick (the latter only when RTAB-Map is built with Madgwick support).

See also
IMU
SensorCaptureThread::enableIMUFiltering()

Definition at line 58 of file IMUFilter.h.

Member Enumeration Documentation

◆ Type

Orientation fusion algorithm.

Enumerator
kMadgwick 

Madgwick AHRS (attitude and heading reference system). RTAB-Map must be built with Madgwick support.

kComplementaryFilter 

Complementary filter (always available).

Definition at line 64 of file IMUFilter.h.

Constructor & Destructor Documentation

◆ ~IMUFilter()

virtual rtabmap::IMUFilter::~IMUFilter ( )
inlinevirtual

Definition at line 85 of file IMUFilter.h.

◆ IMUFilter()

rtabmap::IMUFilter::IMUFilter ( const ParametersMap parameters = ParametersMap())
inlineprotected

Definition at line 130 of file IMUFilter.h.

Member Function Documentation

◆ create() [1/2]

static IMUFilter * rtabmap::IMUFilter::create ( const ParametersMap parameters = ParametersMap())
static

Creates a filter using type parsed from parameters.

Parameters
parametersOptional ImuFilter/... tuning parameters.
Returns
New filter instance (caller owns the pointer).

◆ create() [2/2]

static IMUFilter * rtabmap::IMUFilter::create ( IMUFilter::Type  type,
const ParametersMap parameters = ParametersMap() 
)
static

Creates a filter of the given type.

Parameters
typeFusion algorithm; falls back to kComplementaryFilter if kMadgwick is requested but not compiled in.
parametersOptional ImuFilter/... tuning parameters.
Returns
New filter instance (caller owns the pointer).

◆ parseParameters()

virtual void rtabmap::IMUFilter::parseParameters ( const ParametersMap parameters)
inlinevirtual

Re-reads filter parameters from parameters.

Parameters
parametersImuFilter/... keys (implementation-specific).

Definition at line 91 of file IMUFilter.h.

◆ update()

void rtabmap::IMUFilter::update ( double  gx,
double  gy,
double  gz,
double  ax,
double  ay,
double  az,
double  stamp 
)

Integrates one IMU sample and updates the internal orientation estimate.

Parameters
gxGyroscope x angular rate (rad/s).
gyGyroscope y angular rate (rad/s).
gzGyroscope z angular rate (rad/s).
axAccelerometer x (m/s²; magnitude ~9.81 when stationary).
ayAccelerometer y (m/s²).
azAccelerometer z (m/s²).
stampSample time (seconds); used with the previous stamp to compute dt.

◆ type()

virtual IMUFilter::Type rtabmap::IMUFilter::type ( ) const
pure virtual
Returns
Active fusion algorithm type.

◆ getOrientation()

virtual void rtabmap::IMUFilter::getOrientation ( double &  qx,
double &  qy,
double &  qz,
double &  qw 
) const
pure virtual

Current orientation estimate.

Parameters
qxQuaternion x
qyQuaternion y
qzQuaternion z
qwQuaternion w (scalar)

◆ reset()

virtual void rtabmap::IMUFilter::reset ( double  qx = 0.0,
double  qy = 0.0,
double  qz = 0.0,
double  qw = 1.0 
)
pure virtual

Resets internal state to the given orientation.

Parameters
qxQuaternion x (default 0)
qyQuaternion y (default 0)
qzQuaternion z (default 0)
qwQuaternion w (default 1, identity)

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