Skip to content

File syn_sensor_fusion.c

FileList > sensor > syn_sensor_fusion.c

Go to the source code of this file

6-DOF IMU Mahony Sensor Fusion & AHRS Filter implementation.

  • #include "syn_sensor_fusion.h"
  • #include "../util/syn_assert.h"
  • #include "../util/syn_matrix.h"
  • #include <string.h>

Public Functions

Type Name
SYN_Status syn_sensor_fusion_get_euler (const SYN_SensorFusion * f, SYN_EulerAngles * euler)
Retrieve current Euler attitude angles (Roll, Pitch, Yaw).
SYN_Status syn_sensor_fusion_get_quaternion (const SYN_SensorFusion * f, SYN_Quaternion * q)
Retrieve current quaternion orientation estimate.
void syn_sensor_fusion_init (SYN_SensorFusion * f, q16_t Kp, q16_t Ki, q16_t dt)
Initialize the IMU sensor fusion filter.
void syn_sensor_fusion_reset (SYN_SensorFusion * f)
Reset filter state to initial identity orientation (q = [1, 0, 0, 0]).
SYN_Status syn_sensor_fusion_update (SYN_SensorFusion * f, q16_t gx, q16_t gy, q16_t gz, q16_t ax, q16_t ay, q16_t az)
Update orientation estimate using 6-axis IMU sample.

Public Functions Documentation

function syn_sensor_fusion_get_euler

Retrieve current Euler attitude angles (Roll, Pitch, Yaw).

SYN_Status syn_sensor_fusion_get_euler (
    const SYN_SensorFusion * f,
    SYN_EulerAngles * euler
) 

Parameters:

  • f Filter instance.
  • euler Output Euler angles pointer.

Returns:

SYN_OK on success, SYN_INVALID_PARAM if NULL.


function syn_sensor_fusion_get_quaternion

Retrieve current quaternion orientation estimate.

SYN_Status syn_sensor_fusion_get_quaternion (
    const SYN_SensorFusion * f,
    SYN_Quaternion * q
) 

Parameters:

  • f Filter instance.
  • q Output quaternion pointer.

Returns:

SYN_OK on success, SYN_INVALID_PARAM if NULL.


function syn_sensor_fusion_init

Initialize the IMU sensor fusion filter.

void syn_sensor_fusion_init (
    SYN_SensorFusion * f,
    q16_t Kp,
    q16_t Ki,
    q16_t dt
) 

Parameters:

  • f Filter instance.
  • Kp Proportional error gain (e.g., Q16_FROM_FLOAT(2.0)).
  • Ki Integral error gain (e.g., Q16_FROM_FLOAT(0.005)).
  • dt Sampling interval in seconds (e.g., Q16_FROM_FLOAT(0.01) for 100 Hz).

function syn_sensor_fusion_reset

Reset filter state to initial identity orientation (q = [1, 0, 0, 0]).

void syn_sensor_fusion_reset (
    SYN_SensorFusion * f
) 

Parameters:

  • f Filter instance.

function syn_sensor_fusion_update

Update orientation estimate using 6-axis IMU sample.

SYN_Status syn_sensor_fusion_update (
    SYN_SensorFusion * f,
    q16_t gx,
    q16_t gy,
    q16_t gz,
    q16_t ax,
    q16_t ay,
    q16_t az
) 

Parameters:

  • f Filter instance.
  • gx Gyroscope X rate in rad/s (Q16.16).
  • gy Gyroscope Y rate in rad/s (Q16.16).
  • gz Gyroscope Z rate in rad/s (Q16.16).
  • ax Accelerometer X acceleration in g or m/s² (Q16.16).
  • ay Accelerometer Y acceleration in g or m/s² (Q16.16).
  • az Accelerometer Z acceleration in g or m/s² (Q16.16).

Returns:

SYN_OK on success, SYN_INVALID_PARAM if NULL.



The documentation for this class was generated from the following file src/syntropic/sensor/syn_sensor_fusion.c