ACwing FC firmware
STM32WB55: attitude IEKF, altitude Kalman filter, flight core, protocol v2
Loading...
Searching...
No Matches
alt_est.h
Go to the documentation of this file.
1
24#ifndef ALT_EST_H
25#define ALT_EST_H
26
27#include <stdint.h>
28
29typedef struct {
30 float sigma_acc;
33 float sigma_baro;
34 float sigma_tof;
35 float tof_min_m, tof_max_m;
39
40typedef struct {
42 float x[4];
43 float P[4][4];
45 float p_ref;
46 float p_sum; uint16_t p_n;
47 uint8_t baro_ok;
48 float baro_alt;
49 float pressure;
51 float ground;
52 float tof_h;
53 uint8_t tof_valid;
54 uint8_t tof_ground;
55 uint8_t tof_rejects;
56 float tof_age_s;
57 uint8_t have_tof;
58 uint8_t valid;
59} alt_est_t;
60
62void alt_est_init(alt_est_t *e, const alt_est_cfg_t *c);
63void alt_est_predict(alt_est_t *e, float a_up, float dt);
64void alt_est_baro(alt_est_t *e, float pa);
66void alt_est_tof(alt_est_t *e, float range_m, uint8_t status_ok, float cos_tilt);
67void alt_est_zero(alt_est_t *e);
68
71float alt_est_accel_up(const float q[4], const float f_body_g[3], float nom_g);
72
73static inline float alt_est_h(const alt_est_t *e) { return e->x[0]; }
74static inline float alt_est_vz(const alt_est_t *e) { return e->x[1]; }
75
76#endif /* ALT_EST_H */
static float alt_est_vz(const alt_est_t *e)
Definition alt_est.h:74
void alt_est_baro(alt_est_t *e, float pa)
Definition alt_est.c:102
void alt_est_default_cfg(alt_est_cfg_t *c)
Definition alt_est.c:14
float alt_est_accel_up(const float q[4], const float f_body_g[3], float nom_g)
vertical acceleration (m/s^2, + up, gravity removed) from the attitude and the specific force in body...
Definition alt_est.c:35
void alt_est_init(alt_est_t *e, const alt_est_cfg_t *c)
Definition alt_est.c:27
static float alt_est_h(const alt_est_t *e)
Definition alt_est.h:73
void alt_est_zero(alt_est_t *e)
Definition alt_est.c:159
void alt_est_tof(alt_est_t *e, float range_m, uint8_t status_ok, float cos_tilt)
range_m: raw ToF range; status_ok: range status valid; cos_tilt: R33
Definition alt_est.c:120
void alt_est_predict(alt_est_t *e, float a_up, float dt)
Definition alt_est.c:47
float tof_offset_m
lens height above the floor when landed
Definition alt_est.h:37
float tof_max_tilt_cos
cos of the largest usable tilt
Definition alt_est.h:36
float sigma_acc_bias
m/s^2/sqrt(s), random walk
Definition alt_est.h:31
float sigma_acc
m/s^2, vertical acceleration noise
Definition alt_est.h:30
float sigma_baro
m, baro altitude noise
Definition alt_est.h:33
float sigma_tof
m, ToF noise at 0 m (+1 % of the range)
Definition alt_est.h:34
float tof_max_m
Definition alt_est.h:35
float sigma_baro_bias
m/sqrt(s), random walk (while ToF is valid)
Definition alt_est.h:32
alt_est_cfg_t c
Definition alt_est.h:41
uint8_t baro_ok
Definition alt_est.h:47
uint8_t tof_valid
last ToF sample used
Definition alt_est.h:53
uint8_t valid
an altitude source is initialised
Definition alt_est.h:58
uint16_t p_n
Definition alt_est.h:46
float baro_alt
last baro altitude (m, p_ref based)
Definition alt_est.h:48
uint8_t have_tof
a ToF sample was used at least once
Definition alt_est.h:57
uint8_t tof_ground
below the minimum range: on the floor
Definition alt_est.h:54
float tof_h
last height above the floor (m)
Definition alt_est.h:52
float ground
ToF.
Definition alt_est.h:51
float tof_age_s
since the last valid ToF sample
Definition alt_est.h:56
float pressure
last Pa
Definition alt_est.h:49
float p_ref
baro
Definition alt_est.h:45
uint8_t tof_rejects
Definition alt_est.h:55
float x[4]
Definition alt_est.h:42