File syn_sensor_fusion.h¶
File List > sensor > syn_sensor_fusion.h
Go to the documentation of this file
#ifndef SYN_SENSOR_FUSION_H
#define SYN_SENSOR_FUSION_H
#include "../common/syn_defs.h"
#include "../util/syn_qmath.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct {
q16_t w;
q16_t x;
q16_t y;
q16_t z;
} SYN_Quaternion;
typedef struct {
q16_t roll_rad;
q16_t pitch_rad;
q16_t yaw_rad;
} SYN_EulerAngles;
typedef struct {
q16_t Kp;
q16_t Ki;
q16_t dt;
SYN_Quaternion q;
q16_t e_int[3];
} SYN_SensorFusion;
void syn_sensor_fusion_init(SYN_SensorFusion *f, q16_t Kp, q16_t Ki, q16_t dt);
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);
SYN_Status syn_sensor_fusion_get_quaternion(const SYN_SensorFusion *f, SYN_Quaternion *q);
SYN_Status syn_sensor_fusion_get_euler(const SYN_SensorFusion *f, SYN_EulerAngles *euler);
void syn_sensor_fusion_reset(SYN_SensorFusion *f);
#ifdef __cplusplus
}
#endif
#endif /* SYN_SENSOR_FUSION_H */