ISSDK  1.8
IoT Sensing Software Development Kit
Functions
fusion.c File Reference

Lower level sensor fusion interface. More...

#include "stdio.h"
#include "math.h"
#include "stdlib.h"
#include "sensor_fusion.h"
#include "fusion.h"
#include "orientation.h"
#include "matrix.h"
#include "approximations.h"
#include "drivers.h"
#include "control.h"
Include dependency graph for fusion.c:

Go to the source code of this file.

Functions

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)
 

Detailed Description

Lower level sensor fusion interface.

Definition in file fusion.c.

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: