ISSDK  1.8
IoT Sensing Software Development Kit
fusion.h File Reference

Lower level sensor fusion interface. More...

#include "sensor_fusion.h"
Include dependency graph for fusion.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

COMPUTE_1DOF_P_BASIC constants
#define FLPFSECS_1DOF_P_BASIC   1.5F
 pressure low pass filter time constant (s) More...
 
COMPUTE_3DOF_G_BASIC constants
#define FLPFSECS_3DOF_G_BASIC   1.0F
 tilt orientation low pass filter time constant (s) More...
 
COMPUTE_3DOF_B_BASIC constants
#define FLPFSECS_3DOF_B_BASIC   7.0F
 2D eCompass orientation low pass filter time constant (s) More...
 
COMPUTE_6DOF_GB_BASIC constants
#define FLPFSECS_6DOF_GB_BASIC   7.0F
 
COMPUTE_6DOF_GY_KALMAN constants
#define FQVY_6DOF_GY_KALMAN   2E2
 gyro sensor noise variance units (deg/s)^2 More...
 
#define FQVG_6DOF_GY_KALMAN   1.2E-3
 accelerometer sensor noise variance units g^2 More...
 
#define FQWB_6DOF_GY_KALMAN   2E-2F
 gyro offset random walk units (deg/s)^2 More...
 
#define FMIN_6DOF_GY_BPL   -7.0F
 minimum permissible power on gyro offsets (deg/s) More...
 
#define FMAX_6DOF_GY_BPL   7.0F
 maximum permissible power on gyro offsets (deg/s) More...
 
COMPUTE_9DOF_GBY_KALMAN constants

gyro sensor noise covariance units deg^2 increasing this parameter improves convergence to the geomagnetic field

#define FQVY_9DOF_GBY_KALMAN   2E2
 gyro sensor noise variance units (deg/s)^2 More...
 
#define FQVG_9DOF_GBY_KALMAN   1.2E-3
 accelerometer sensor noise variance units g^2 defining minimum deviation from 1g sphere More...
 
#define FQVB_9DOF_GBY_KALMAN   5E0
 magnetometer sensor noise variance units uT^2 defining minimum deviation from geomagnetic sphere. More...
 
#define FQWB_9DOF_GBY_KALMAN   2E-2F
 gyro offset random walk units (deg/s)^2 More...
 
#define FMIN_9DOF_GBY_BPL   -7.0F
 minimum permissible power on gyro offsets (deg/s) More...
 
#define FMAX_9DOF_GBY_BPL   7.0F
 maximum permissible power on gyro offsets (deg/s) More...
 

Functions

Fusion Function Prototypes

These functions comprise the core of the basic sensor fusion functions excluding magnetic and acceleration calibration. Parameter descriptions are not included here, as details are provided in sensor_fusion.h.

void fInitializeFusion (SensorFusionGlobals *sfg)
 
void fFuseSensors (struct SV_1DOF_P_BASIC *pthisSV_1DOF_P_BASIC, struct SV_3DOF_G_BASIC *pthisSV_3DOF_G_BASIC, struct SV_3DOF_B_BASIC *pthisSV_3DOF_B_BASIC, struct SV_3DOF_Y_BASIC *pthisSV_3DOF_Y_BASIC, struct SV_6DOF_GB_BASIC *pthisSV_6DOF_GB_BASIC, struct SV_6DOF_GY_KALMAN *pthisSV_6DOF_GY_KALMAN, struct SV_9DOF_GBY_KALMAN *pthisSV_9DOF_GBY_KALMAN, struct AccelSensor *pthisAccel, struct MagSensor *pthisMag, struct GyroSensor *pthisGyro, struct PressureSensor *pthisPressure, struct MagCalibration *pthisMagCal)
 
void fInit_1DOF_P_BASIC (struct SV_1DOF_P_BASIC *pthisSV, struct PressureSensor *pthisPressure, float flpftimesecs)
 
void fInit_3DOF_G_BASIC (struct SV_3DOF_G_BASIC *pthisSV, struct AccelSensor *pthisAccel, float flpftimesecs)
 
void fInit_3DOF_B_BASIC (struct SV_3DOF_B_BASIC *pthisSV, struct MagSensor *pthisMag, float flpftimesecs)
 
void fInit_3DOF_Y_BASIC (struct SV_3DOF_Y_BASIC *pthisSV)
 
void fInit_6DOF_GB_BASIC (struct SV_6DOF_GB_BASIC *pthisSV, struct AccelSensor *pthisAccel, struct MagSensor *pthisMag, float flpftimesecs)
 
void fInit_6DOF_GY_KALMAN (struct SV_6DOF_GY_KALMAN *pthisSV, struct AccelSensor *pthisAccel, struct GyroSensor *pthisGyro)
 
void fInit_9DOF_GBY_KALMAN (struct SV_9DOF_GBY_KALMAN *pthisSV, struct AccelSensor *pthisAccel, struct MagSensor *pthisMag, struct GyroSensor *pthisGyro, struct MagCalibration *pthisMagCal)
 
void fRun_1DOF_P_BASIC (struct SV_1DOF_P_BASIC *pthisSV, struct PressureSensor *pthisPressure)
 
void fRun_3DOF_G_BASIC (struct SV_3DOF_G_BASIC *pthisSV, struct AccelSensor *pthisAccel)
 
void fRun_3DOF_B_BASIC (struct SV_3DOF_B_BASIC *pthisSV, struct MagSensor *pthisMag)
 
void fRun_3DOF_Y_BASIC (struct SV_3DOF_Y_BASIC *pthisSV, struct GyroSensor *pthisGyro)
 
void fRun_6DOF_GB_BASIC (struct SV_6DOF_GB_BASIC *pthisSV, struct MagSensor *pthisMag, struct AccelSensor *pthisAccel)
 
void fRun_6DOF_GY_KALMAN (struct SV_6DOF_GY_KALMAN *pthisSV, struct AccelSensor *pthisAccel, struct GyroSensor *pthisGyro)
 
void fRun_9DOF_GBY_KALMAN (struct SV_9DOF_GBY_KALMAN *pthisSV, struct AccelSensor *pthisAccel, struct MagSensor *pthisMag, struct GyroSensor *pthisGyro, struct MagCalibration *pthisMagCal)
 

Detailed Description

Lower level sensor fusion interface.

This file can be used to "tune" the performance of specific algorithms within the sensor fusion library. It also defines the lower level function definitions for specific algorithms. Normally, the higher level hooks in sensor_fusion.h will be used, and those shown here will be left alone.

Definition in file fusion.h.

Macro Definition Documentation

◆ FLPFSECS_1DOF_P_BASIC

#define FLPFSECS_1DOF_P_BASIC   1.5F

pressure low pass filter time constant (s)

Definition at line 26 of file fusion.h.

Referenced by fRun_1DOF_P_BASIC().

◆ FLPFSECS_3DOF_B_BASIC

#define FLPFSECS_3DOF_B_BASIC   7.0F

2D eCompass orientation low pass filter time constant (s)

Definition at line 36 of file fusion.h.

Referenced by fRun_3DOF_B_BASIC().

◆ FLPFSECS_3DOF_G_BASIC

#define FLPFSECS_3DOF_G_BASIC   1.0F

tilt orientation low pass filter time constant (s)

Definition at line 31 of file fusion.h.

Referenced by fRun_3DOF_G_BASIC().

◆ FLPFSECS_6DOF_GB_BASIC

#define FLPFSECS_6DOF_GB_BASIC   7.0F

Definition at line 41 of file fusion.h.

Referenced by fRun_6DOF_GB_BASIC().

◆ FMAX_6DOF_GY_BPL

#define FMAX_6DOF_GY_BPL   7.0F

maximum permissible power on gyro offsets (deg/s)

Definition at line 50 of file fusion.h.

Referenced by fInit_6DOF_GY_KALMAN().

◆ FMAX_9DOF_GBY_BPL

#define FMAX_9DOF_GBY_BPL   7.0F

maximum permissible power on gyro offsets (deg/s)

Definition at line 62 of file fusion.h.

Referenced by fInit_9DOF_GBY_KALMAN(), and fRun_6DOF_GY_KALMAN().

◆ FMIN_6DOF_GY_BPL

#define FMIN_6DOF_GY_BPL   -7.0F

minimum permissible power on gyro offsets (deg/s)

Definition at line 49 of file fusion.h.

Referenced by fInit_6DOF_GY_KALMAN().

◆ FMIN_9DOF_GBY_BPL

#define FMIN_9DOF_GBY_BPL   -7.0F

minimum permissible power on gyro offsets (deg/s)

Definition at line 61 of file fusion.h.

Referenced by fInit_9DOF_GBY_KALMAN(), and fRun_6DOF_GY_KALMAN().

◆ FQVB_9DOF_GBY_KALMAN

#define FQVB_9DOF_GBY_KALMAN   5E0

magnetometer sensor noise variance units uT^2 defining minimum deviation from geomagnetic sphere.

Definition at line 59 of file fusion.h.

Referenced by fRun_6DOF_GY_KALMAN().

◆ FQVG_6DOF_GY_KALMAN

#define FQVG_6DOF_GY_KALMAN   1.2E-3

accelerometer sensor noise variance units g^2

Definition at line 47 of file fusion.h.

Referenced by fRun_6DOF_GY_KALMAN().

◆ FQVG_9DOF_GBY_KALMAN

#define FQVG_9DOF_GBY_KALMAN   1.2E-3

accelerometer sensor noise variance units g^2 defining minimum deviation from 1g sphere

Definition at line 58 of file fusion.h.

Referenced by fRun_6DOF_GY_KALMAN().

◆ FQVY_6DOF_GY_KALMAN

#define FQVY_6DOF_GY_KALMAN   2E2

gyro sensor noise variance units (deg/s)^2

Definition at line 46 of file fusion.h.

Referenced by fInit_6DOF_GY_KALMAN().

◆ FQVY_9DOF_GBY_KALMAN

#define FQVY_9DOF_GBY_KALMAN   2E2

gyro sensor noise variance units (deg/s)^2

Definition at line 57 of file fusion.h.

Referenced by fInit_9DOF_GBY_KALMAN().

◆ FQWB_6DOF_GY_KALMAN

#define FQWB_6DOF_GY_KALMAN   2E-2F

gyro offset random walk units (deg/s)^2

Definition at line 48 of file fusion.h.

Referenced by fInit_6DOF_GY_KALMAN().

◆ FQWB_9DOF_GBY_KALMAN

#define FQWB_9DOF_GBY_KALMAN   2E-2F

gyro offset random walk units (deg/s)^2

Definition at line 60 of file fusion.h.

Referenced by fInit_9DOF_GBY_KALMAN().

Function Documentation

◆ fFuseSensors()

void fFuseSensors ( struct SV_1DOF_P_BASIC pthisSV_1DOF_P_BASIC,
struct SV_3DOF_G_BASIC pthisSV_3DOF_G_BASIC,
struct SV_3DOF_B_BASIC pthisSV_3DOF_B_BASIC,
struct SV_3DOF_Y_BASIC pthisSV_3DOF_Y_BASIC,
struct SV_6DOF_GB_BASIC pthisSV_6DOF_GB_BASIC,
struct SV_6DOF_GY_KALMAN pthisSV_6DOF_GY_KALMAN,
struct SV_9DOF_GBY_KALMAN pthisSV_9DOF_GBY_KALMAN,
struct AccelSensor pthisAccel,
struct MagSensor pthisMag,
struct GyroSensor pthisGyro,
struct PressureSensor pthisPressure,
struct MagCalibration pthisMagCal 
)

◆ fInit_1DOF_P_BASIC()

void fInit_1DOF_P_BASIC ( struct SV_1DOF_P_BASIC pthisSV,
struct PressureSensor pthisPressure,
float  flpftimesecs 
)

◆ fInit_3DOF_B_BASIC()

void fInit_3DOF_B_BASIC ( struct SV_3DOF_B_BASIC pthisSV,
struct MagSensor pthisMag,
float  flpftimesecs 
)

◆ fInit_3DOF_G_BASIC()

void fInit_3DOF_G_BASIC ( struct SV_3DOF_G_BASIC pthisSV,
struct AccelSensor pthisAccel,
float  flpftimesecs 
)

Definition at line 179 of file fusion.c.

References f3DOFTiltAndroid(), f3DOFTiltNED(), f3DOFTiltWin8(), SV_3DOF_G_BASIC::fdeltat, AccelSensor::fGc, SV_3DOF_G_BASIC::flpf, SV_3DOF_G_BASIC::fLPq, SV_3DOF_G_BASIC::fLPR, fQuaternionFromRotationMatrix(), FUSION_HZ, and SV_3DOF_G_BASIC::resetflag.

Referenced by fRun_3DOF_G_BASIC().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fInit_3DOF_Y_BASIC()

void fInit_3DOF_Y_BASIC ( struct SV_3DOF_Y_BASIC pthisSV)

Definition at line 235 of file fusion.c.

References f3x3matrixAeqI(), SV_3DOF_Y_BASIC::fdeltat, SV_3DOF_Y_BASIC::fq, fqAeq1(), SV_3DOF_Y_BASIC::fR, FUSION_HZ, and SV_3DOF_Y_BASIC::resetflag.

Referenced by fRun_3DOF_Y_BASIC().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fInit_6DOF_GB_BASIC()

void fInit_6DOF_GB_BASIC ( struct SV_6DOF_GB_BASIC pthisSV,
struct AccelSensor pthisAccel,
struct MagSensor pthisMag,
float  flpftimesecs 
)

◆ fInit_6DOF_GY_KALMAN()

void fInit_6DOF_GY_KALMAN ( struct SV_6DOF_GY_KALMAN pthisSV,
struct AccelSensor pthisAccel,
struct GyroSensor pthisGyro 
)

◆ fInit_9DOF_GBY_KALMAN()

void fInit_9DOF_GBY_KALMAN ( struct SV_9DOF_GBY_KALMAN pthisSV,
struct AccelSensor pthisAccel,
struct MagSensor pthisMag,
struct GyroSensor pthisGyro,
struct MagCalibration pthisMagCal 
)

◆ fInitializeFusion()

void fInitializeFusion ( SensorFusionGlobals sfg)

Definition at line 33 of file fusion.c.

References SensorFusionGlobals::loopcounter.

Referenced by DecodeCommandBytes(), and initializeFusionEngine().

Here is the caller graph for this function:

◆ fRun_1DOF_P_BASIC()

void fRun_1DOF_P_BASIC ( struct SV_1DOF_P_BASIC pthisSV,
struct PressureSensor pthisPressure 
)

Definition at line 419 of file fusion.c.

References PressureSensor::fH, fInit_1DOF_P_BASIC(), SV_1DOF_P_BASIC::flpf, FLPFSECS_1DOF_P_BASIC, SV_1DOF_P_BASIC::fLPH, SV_1DOF_P_BASIC::fLPT, PressureSensor::fT, and SV_1DOF_P_BASIC::resetflag.

Referenced by fFuseSensors().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fRun_3DOF_B_BASIC()

void fRun_3DOF_B_BASIC ( struct SV_3DOF_B_BASIC pthisSV,
struct MagSensor pthisMag 
)

◆ fRun_3DOF_G_BASIC()

void fRun_3DOF_G_BASIC ( struct SV_3DOF_G_BASIC pthisSV,
struct AccelSensor pthisAccel 
)

◆ fRun_3DOF_Y_BASIC()

void fRun_3DOF_Y_BASIC ( struct SV_3DOF_Y_BASIC pthisSV,
struct GyroSensor pthisGyro 
)

◆ fRun_6DOF_GB_BASIC()

void fRun_6DOF_GB_BASIC ( struct SV_6DOF_GB_BASIC pthisSV,
struct MagSensor pthisMag,
struct AccelSensor pthisAccel 
)

◆ fRun_6DOF_GY_KALMAN()

void fRun_6DOF_GY_KALMAN ( struct SV_6DOF_GY_KALMAN pthisSV,
struct AccelSensor pthisAccel,
struct GyroSensor pthisGyro 
)

Definition at line 635 of file fusion.c.

References CHX, CHY, CHZ, f3x3matrixAeqB(), SV_6DOF_GY_KALMAN::fAccGl, SV_9DOF_GBY_KALMAN::fAccGl, SV_6DOF_GY_KALMAN::fAlphaOver2, SV_9DOF_GBY_KALMAN::fAlphaOver2, SV_6DOF_GY_KALMAN::fAlphaSqOver4, SV_9DOF_GBY_KALMAN::fAlphaSqOver4, SV_6DOF_GY_KALMAN::fAlphaSqQvYQwbOver12, SV_9DOF_GBY_KALMAN::fAlphaSqQvYQwbOver12, fAndroidAnglesDegFromRotationMatrix(), MagCalibration::fB, MagSensor::fBc, SV_6DOF_GY_KALMAN::fbErrPl, SV_9DOF_GBY_KALMAN::fbErrPl, SV_6DOF_GY_KALMAN::fbPl, SV_9DOF_GBY_KALMAN::fbPl, MagCalibration::fBSq, SV_6DOF_GY_KALMAN::fChiPl, SV_9DOF_GBY_KALMAN::fChiPl, SV_9DOF_GBY_KALMAN::fcosDeltaPl, GyroSensor::fDegPerSecPerCount, SV_9DOF_GBY_KALMAN::fDeltaPl, SV_6DOF_GY_KALMAN::fdeltat, SV_9DOF_GBY_KALMAN::fdeltat, SV_9DOF_GBY_KALMAN::fDisGl, feCompassAndroid(), feCompassNED(), feCompassWin8(), AccelSensor::fGc, SV_9DOF_GBY_KALMAN::fgdeltat, fInit_6DOF_GY_KALMAN(), fInit_9DOF_GBY_KALMAN(), SV_6DOF_GY_KALMAN::fK6x3, SV_9DOF_GBY_KALMAN::fK9x6, fmatrixAeqInvA(), FMAX_9DOF_GBY_BPL, SV_6DOF_GY_KALMAN::fMaxGyroOffsetChange, SV_9DOF_GBY_KALMAN::fMaxGyroOffsetChange, FMIN_9DOF_GBY_BPL, fNEDAnglesDegFromRotationMatrix(), SV_6DOF_GY_KALMAN::fOmega, SV_9DOF_GBY_KALMAN::fOmega, SV_6DOF_GY_KALMAN::fPhiPl, SV_9DOF_GBY_KALMAN::fPhiPl, SV_6DOF_GY_KALMAN::fPsiPl, SV_9DOF_GBY_KALMAN::fPsiPl, fqAeqNormqA(), SV_6DOF_GY_KALMAN::fqgErrPl, SV_9DOF_GBY_KALMAN::fqgErrPl, SV_9DOF_GBY_KALMAN::fqmErrPl, SV_6DOF_GY_KALMAN::fqPl, SV_9DOF_GBY_KALMAN::fqPl, fQuaternionFromRotationMatrix(), fQuaternionFromRotationVectorDeg(), SV_6DOF_GY_KALMAN::fQv, SV_9DOF_GBY_KALMAN::fQv6x1, FQVB_9DOF_GBY_KALMAN, FQVG_6DOF_GY_KALMAN, FQVG_9DOF_GBY_KALMAN, SV_6DOF_GY_KALMAN::fQw6x6, SV_9DOF_GBY_KALMAN::fQw9x9, SV_6DOF_GY_KALMAN::fQwbOver3, SV_9DOF_GBY_KALMAN::fQwbOver3, SV_6DOF_GY_KALMAN::fQwCT6x3, SV_9DOF_GBY_KALMAN::fQwCT9x6, SV_6DOF_GY_KALMAN::fRhoPl, SV_9DOF_GBY_KALMAN::fRhoPl, fRotationMatrixFromQuaternion(), fRotationVectorDegFromQuaternion(), SV_6DOF_GY_KALMAN::fRPl, SV_9DOF_GBY_KALMAN::fRPl, fRun_9DOF_GBY_KALMAN(), SV_6DOF_GY_KALMAN::fRVecPl, SV_9DOF_GBY_KALMAN::fRVecPl, SV_9DOF_GBY_KALMAN::fsinDeltaPl, SV_6DOF_GY_KALMAN::fThePl, SV_9DOF_GBY_KALMAN::fThePl, SV_9DOF_GBY_KALMAN::fVelGl, fveqconjgquq(), fveqRu(), fWin8AnglesDegFromRotationMatrix(), SV_6DOF_GY_KALMAN::fZErr, SV_9DOF_GBY_KALMAN::fZErr, GyroSensor::iFIFOCount, SV_9DOF_GBY_KALMAN::iFirstAccelMagLock, MagCalibration::iValidMagCal, GyroSensor::iYs, GyroSensor::iYsFIFO, ONEOVER12, Quaternion::q0, Quaternion::q1, Quaternion::q2, Quaternion::q3, qAeqAxB(), qAeqBxC(), SV_6DOF_GY_KALMAN::resetflag, and SV_9DOF_GBY_KALMAN::resetflag.

Referenced by fFuseSensors().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fRun_9DOF_GBY_KALMAN()

void fRun_9DOF_GBY_KALMAN ( struct SV_9DOF_GBY_KALMAN pthisSV,
struct AccelSensor pthisAccel,
struct MagSensor pthisMag,
struct GyroSensor pthisGyro,
struct MagCalibration pthisMagCal 
)

Referenced by fFuseSensors(), and fRun_6DOF_GY_KALMAN().

Here is the caller graph for this function: