39 #include "generated/airframe.h"
43 #ifndef AHRS_MAG_NOISE_X
44 #define AHRS_MAG_NOISE_X 0.2
45 #define AHRS_MAG_NOISE_Y 0.2
46 #define AHRS_MAG_NOISE_Z 0.2
77 const float P0_a = 1.;
78 const float P0_b = 1e-4;
79 float P0[6][6] = {{ P0_a, 0., 0., 0., 0., 0. },
80 { 0., P0_a, 0., 0., 0., 0. },
81 { 0., 0., P0_a, 0., 0., 0. },
82 { 0., 0., 0., P0_b, 0., 0. },
83 { 0., 0., 0., 0., P0_b, 0. },
84 { 0., 0., 0., 0., 0., P0_b}
131 const float alpha = 0.92;
134 const struct FloatVect3 earth_g = {0., 0., -9.81 };
143 #if AHRS_MAG_UPDATE_ALL_AXES
170 #ifdef AHRS_PROPAGATE_LOW_PASS_RATES
172 const float alpha = 0.1;
196 float F[6][6] = {{ 1., dr, -dq, -dt, 0., 0. },
197 { -dr, 1., dp, 0., -dt, 0. },
198 { dq, -dp, 1., 0., 0., -dt },
199 { 0., 0., 0., 1., 0., 0. },
200 { 0., 0., 0., 0., 1., 0. },
201 { 0., 0., 0., 0., 0., 1. }
207 const float dt2 = dt * dt;
208 const float GQG[6] = {dt2 * 10e-3, dt2 * 10e-3, dt2 * 10e-3, dt2 * 9e-6, dt2 * 9e-6, dt2 * 9e-6 };
209 for (
int i = 0; i < 6; i++) {
231 float H[3][6] = {{ 0., -b_expected.
z, b_expected.
y, 0., 0., 0.},
232 { b_expected.
z, 0., -b_expected.
x, 0., 0., 0.},
233 { -b_expected.
y, b_expected.
x, 0., 0., 0., 0.}
257 float I6[6][6] = {{ 1., 0., 0., 0., 0., 0. },
258 { 0., 1., 0., 0., 0., 0. },
259 { 0., 0., 1., 0., 0., 0. },
260 { 0., 0., 0., 1., 0., 0. },
261 { 0., 0., 0., 0., 1., 0. },
262 { 0., 0., 0., 0., 0., 1. }
300 struct FloatVect3 i_h_2d = {i_expected->
y, -i_expected->
x, 0.f};
304 float H[3][6] = {{ 0., 0., b_yaw.
x, 0., 0., 0.},
305 { 0., 0., b_yaw.
y, 0., 0., 0.},
306 { 0., 0., b_yaw.
z, 0., 0., 0.}
330 float I6[6][6] = {{ 1., 0., 0., 0., 0., 0. },
331 { 0., 1., 0., 0., 0., 0. },
332 { 0., 0., 1., 0., 0., 0. },
333 { 0., 0., 0., 1., 0., 0. },
334 { 0., 0., 0., 0., 1., 0. },
335 { 0., 0., 0., 0., 0., 1. }