ACwing FC firmware
STM32WB55: attitude IEKF, altitude Kalman filter, flight core, protocol v2
Loading...
Searching...
No Matches
calib.h
Go to the documentation of this file.
1
12#ifndef CALIB_H
13#define CALIB_H
14
15#include <stdint.h>
16#include "iekf.h"
17
18#ifndef CALIB_MAX_SAMPLES
19#define CALIB_MAX_SAMPLES 256
20#endif
21
22typedef struct {
23 uint32_t n;
24 float acc[CALIB_MAX_SAMPLES][3];
25 float mag[CALIB_MAX_SAMPLES][3];
26 float gyro_sum[3];
28} calib_t;
29
37
38void calib_reset(calib_t *c);
40int calib_add(calib_t *c, const float acc[3], const float gyro[3], const float mag[3],
41 float gyro_still_thr);
42uint32_t calib_count(const calib_t *c);
43int calib_finish(const calib_t *c, float sigma_min, calib_result_t *out);
44float direction_noise_std(const float (*v)[3], uint32_t n);
45
46#endif /* CALIB_H */
void calib_reset(calib_t *c)
Definition calib.c:10
int calib_finish(const calib_t *c, float sigma_min, calib_result_t *out)
Definition calib.c:52
float direction_noise_std(const float(*v)[3], uint32_t n)
Definition calib.c:29
int calib_add(calib_t *c, const float acc[3], const float gyro[3], const float mag[3], float gyro_still_thr)
Returns 0 if the sample is compatible with "still", -1 if moving.
Definition calib.c:14
#define CALIB_MAX_SAMPLES
Definition calib.h:19
uint32_t calib_count(const calib_t *c)
Definition calib.c:12
uint32_t n
Definition calib_mgr.c:35
Attitude IEKF on SO(3), C port of iekfAttitude.m.
float sigma_acc_raw
measured values, for diagnostics
Definition calib.h:34
float sigma_mag
Definition calib.h:33
float sigma_acc
already lower-bounded by sigma_min
Definition calib.h:32
float sigma_mag_raw
Definition calib.h:35
iekf_seed_t seed
Definition calib.h:31
float gyro_norm_max
Definition calib.h:27
uint32_t n
Definition calib.h:23
Initial conditions, typically from calib_finish()
Definition iekf.h:87