![]() |
ACwing FC firmware
STM32WB55: attitude IEKF, altitude Kalman filter, flight core, protocol v2
|
#include <est_pipeline.h>
Data Fields | |
| uint8_t | gyro_per_step |
| 2 with ODR 1920 Hz, 1 with 960 Hz | |
| uint8_t | steps_per_acc |
| 4 -> acc update at 240 Hz | |
| uint16_t | calib_samples |
| mag samples while standing still | |
| float | calib_gyro_still |
| rad/s | |
| float | sigma_vec_min |
| iekf_config_t | ekf |
| sigma_acc/sigma_mag overwritten by calib | |
| float | mag_map [9] |
| LIS2MDL sensor -> body (LSM6DSV16X) | |
| float | mag_hard_iron [3] |
| uT, body frame | |
| float | mag_scale [3] |
| float | mag_latency_s |
| Age of the mag sample on arrival: the LIS2MDL converts at f_lis, the sensor hub re-reads it at f_sh > f_lis and duplicates are discarded, so the age is ~uniform in [0, 1/f_sh]: mean 0.5/f_sh, std (1/f_sh)/sqrt(12). | |
| float | mag_latency_std_s |
| float | still_acc_tol |
| Stillness detector: if |a| ~ nominal and |omega| small for still_time_s, an external acceleration is physically implausible -> the accelerometer NIS inflation is reset and the filter trusts it again at once (fast recovery from a true attitude error). | |
| float | still_gyro_thr |
| rad/s, e.g. | |
| float | still_time_s |
| e.g. | |
Definition at line 35 of file est_pipeline.h.
| uint8_t est_config_t::gyro_per_step |
2 with ODR 1920 Hz, 1 with 960 Hz
Definition at line 36 of file est_pipeline.h.
Referenced by app_est_config().
| uint8_t est_config_t::steps_per_acc |
4 -> acc update at 240 Hz
Definition at line 37 of file est_pipeline.h.
Referenced by app_est_config().
| uint16_t est_config_t::calib_samples |
mag samples while standing still
Definition at line 38 of file est_pipeline.h.
Referenced by app_est_config().
| float est_config_t::calib_gyro_still |
| float est_config_t::sigma_vec_min |
Definition at line 40 of file est_pipeline.h.
Referenced by app_est_config().
| iekf_config_t est_config_t::ekf |
sigma_acc/sigma_mag overwritten by calib
Definition at line 41 of file est_pipeline.h.
Referenced by app_est_config().
| float est_config_t::mag_map[9] |
LIS2MDL sensor -> body (LSM6DSV16X)
Definition at line 42 of file est_pipeline.h.
Referenced by ImuTask().
| float est_config_t::mag_hard_iron[3] |
uT, body frame
Definition at line 43 of file est_pipeline.h.
Referenced by ImuTask(), and take_calibrations().
| float est_config_t::mag_scale[3] |
Definition at line 44 of file est_pipeline.h.
Referenced by ImuTask(), and take_calibrations().
| float est_config_t::mag_latency_s |
Age of the mag sample on arrival: the LIS2MDL converts at f_lis, the sensor hub re-reads it at f_sh > f_lis and duplicates are discarded, so the age is ~uniform in [0, 1/f_sh]: mean 0.5/f_sh, std (1/f_sh)/sqrt(12).
The mean is compensated by rotating the measurement forward with the gyro; the random part enters as a variance proportional to |omega|^2.
Definition at line 51 of file est_pipeline.h.
Referenced by app_est_config().
| float est_config_t::mag_latency_std_s |
Definition at line 52 of file est_pipeline.h.
Referenced by app_est_config().
| float est_config_t::still_acc_tol |
Stillness detector: if |a| ~ nominal and |omega| small for still_time_s, an external acceleration is physically implausible -> the accelerometer NIS inflation is reset and the filter trusts it again at once (fast recovery from a true attitude error).
still_time_s = 0: disabled. relative deviation of |a|, e.g. 0.02
Definition at line 57 of file est_pipeline.h.
Referenced by app_est_config().
| float est_config_t::still_gyro_thr |
| float est_config_t::still_time_s |