30 #include "physical_constants.h"
35 #define NUMX 13 // number of states, X is the state vector
36 #define NUMW 9 // number of plant noise inputs, w is disturbance noise vector
37 #define NUMV 10 // number of measurements, v is the measurement noise vector
38 #define NUMU 6 // number of deterministic inputs, U is the input vector
40 #if defined(GENERAL_COV)
43 #define COVARIANCE_PREDICTION_GENERAL
48 float Q[NUMW],
float dT,
float P[NUMX][NUMX]);
50 float Y[NUMV],
float P[NUMX][NUMX],
float X[NUMX],
51 uint16_t SensorsUsed);
80 for (
int i = 0;
i <
NUMX;
i++) {
81 for (
int j = 0;
j <
NUMX;
j++) {
89 for (
int j = 0;
j <
NUMV;
j++) {
102 P[0][0] =
P[1][1] =
P[2][2] = 25.0f;
103 P[3][3] =
P[4][4] =
P[5][5] = 5.0f;
104 P[6][6] =
P[7][7] =
P[8][8] =
P[9][9] = 1e-5
f;
105 P[10][10] =
P[11][11] =
P[12][12] = 1e-6
f;
107 X[0] =
X[1] =
X[2] =
X[3] =
X[4] =
X[5] = 0.0f;
109 X[7] =
X[8] =
X[9] = 0.0f;
110 X[10] =
X[11] =
X[12] = 0.0f;
112 Q[0] =
Q[1] =
Q[2] = 1e-5
f;
113 Q[3] =
Q[4] =
Q[5] = 1e-5
f;
117 R[0] =
R[1] = 0.004f;
119 R[3] =
R[4] = 0.004f;
121 R[6] =
R[7] =
R[8] = 0.005f;
166 gyro_bias[0] =
X[10];
167 gyro_bias[1] =
X[11];
168 gyro_bias[2] =
X[12];
172 accel_bias[0] = 0.0f;
173 accel_bias[1] = 0.0f;
174 accel_bias[2] = 0.0f;
184 for (uint32_t
i = 0;
i <
NUMX;
i++)
185 var_out[
i] =
P[
i][
i];
193 for (i=0;i<
NUMX;i++){
196 P[i][j]=
P[j][i]=0.0
f;
215 X[10] = gyro_bias[0];
216 X[11] = gyro_bias[1];
217 X[12] = gyro_bias[2];
222 for (
int i = 0;
i < 6;
i++) {
229 P[0][0] =
P[1][1] =
P[2][2] = 25;
230 P[3][3] =
P[4][4] =
P[5][5] = 5;
252 X[10] = gyro_bias[0];
253 X[11] = gyro_bias[1];
254 X[12] = gyro_bias[2];
278 R[6] = scaled_mag_var[0];
279 R[7] = scaled_mag_var[1];
280 R[8] = scaled_mag_var[2];
306 U[3] = accel_data[0];
307 U[4] = accel_data[1];
308 U[5] = accel_data[2];
313 qmag = sqrtf(
X[6] *
X[6] +
X[7] *
X[7] +
X[8] *
X[8] +
X[9] *
X[9]);
325 void INSCorrection(
const float mag_data[3],
const float Pos[3],
const float Vel[3],
326 float BaroAlt, uint16_t SensorsUsed)
353 qmag = sqrtf(
X[6] *
X[6] +
X[7] *
X[7] +
X[8] *
X[8] +
X[9] *
X[9]);
371 #ifdef COVARIANCE_PREDICTION_GENERAL
374 float Q[NUMW],
float dT,
float P[NUMX][NUMX])
383 for (i = 0; i <
NUMX; i++)
384 for (j = 0; j <
NUMX; j++) {
385 Dummy[
i][
j] =
P[
i][
j] / dT;
386 for (k = 0; k <
NUMX; k++)
387 Dummy[i][j] +=
F[i][k] *
P[k][j];
389 for (i = 0; i <
NUMX; i++)
390 for (j = i; j <
NUMX; j++) {
391 P[
i][
j] = Dummy[
i][
j] / dT;
392 for (k = 0; k <
NUMX; k++)
393 P[i][j] += Dummy[i][k] *
F[j][k];
394 for (k = 0; k <
NUMW; k++)
395 P[i][j] +=
Q[k] *
G[i][k] *
G[j][k];
403 float Q[NUMW],
float dT,
float P[NUMX][NUMX])
413 for (i = 0; i <
NUMX; i++)
414 for (j = i; j <
NUMX; j++)
418 P[0][0] = D[3][3] * Tsq + (2 * D[0][3]) * T + D[0][0];
420 D[3][4] * Tsq + (D[0][4] + D[1][3]) * T + D[0][1];
422 D[3][5] * Tsq + (D[0][5] + D[2][3]) * T + D[0][2];
424 (
F[3][6] * D[3][6] +
F[3][7] * D[3][7] +
F[3][8] * D[3][8] +
425 F[3][9] * D[3][9]) * Tsq + (D[3][3] +
F[3][6] * D[0][6] +
428 F[3][9] * D[0][9]) * T + D[0][3];
430 (
F[4][6] * D[3][6] +
F[4][7] * D[3][7] +
F[4][8] * D[3][8] +
431 F[4][9] * D[3][9]) * Tsq + (D[3][4] +
F[4][6] * D[0][6] +
434 F[4][9] * D[0][9]) * T + D[0][4];
436 (
F[5][6] * D[3][6] +
F[5][7] * D[3][7] +
F[5][8] * D[3][8] +
437 F[5][9] * D[3][9]) * Tsq + (D[3][5] +
F[5][6] * D[0][6] +
440 F[5][9] * D[0][9]) * T + D[0][5];
442 (
F[6][7] * D[3][7] +
F[6][8] * D[3][8] +
F[6][9] * D[3][9] +
443 F[6][10] * D[3][10] +
F[6][11] * D[3][11] +
444 F[6][12] * D[3][12]) * Tsq + (D[3][6] +
F[6][7] * D[0][7] +
447 F[6][10] * D[0][10] +
448 F[6][11] * D[0][11] +
449 F[6][12] * D[0][12]) * T +
452 (
F[7][6] * D[3][6] +
F[7][8] * D[3][8] +
F[7][9] * D[3][9] +
453 F[7][10] * D[3][10] +
F[7][11] * D[3][11] +
454 F[7][12] * D[3][12]) * Tsq + (D[3][7] +
F[7][6] * D[0][6] +
457 F[7][10] * D[0][10] +
458 F[7][11] * D[0][11] +
459 F[7][12] * D[0][12]) * T +
462 (
F[8][6] * D[3][6] +
F[8][7] * D[3][7] +
F[8][9] * D[3][9] +
463 F[8][10] * D[3][10] +
F[8][11] * D[3][11] +
464 F[8][12] * D[3][12]) * Tsq + (D[3][8] +
F[8][6] * D[0][6] +
467 F[8][10] * D[0][10] +
468 F[8][11] * D[0][11] +
469 F[8][12] * D[0][12]) * T +
472 (
F[9][6] * D[3][6] +
F[9][7] * D[3][7] +
F[9][8] * D[3][8] +
473 F[9][10] * D[3][10] +
F[9][11] * D[3][11] +
474 F[9][12] * D[3][12]) * Tsq + (D[3][9] +
F[9][6] * D[0][6] +
477 F[9][10] * D[0][10] +
478 F[9][11] * D[0][11] +
479 F[9][12] * D[0][12]) * T +
481 P[0][10] = P[10][0] = D[3][10] * T + D[0][10];
482 P[0][11] = P[11][0] = D[3][11] * T + D[0][11];
483 P[0][12] = P[12][0] = D[3][12] * T + D[0][12];
484 P[1][1] = D[4][4] * Tsq + (2 * D[1][4]) * T + D[1][1];
486 D[4][5] * Tsq + (D[1][5] + D[2][4]) * T + D[1][2];
488 (
F[3][6] * D[4][6] +
F[3][7] * D[4][7] +
F[3][8] * D[4][8] +
489 F[3][9] * D[4][9]) * Tsq + (D[3][4] +
F[3][6] * D[1][6] +
492 F[3][9] * D[1][9]) * T + D[1][3];
494 (
F[4][6] * D[4][6] +
F[4][7] * D[4][7] +
F[4][8] * D[4][8] +
495 F[4][9] * D[4][9]) * Tsq + (D[4][4] +
F[4][6] * D[1][6] +
498 F[4][9] * D[1][9]) * T + D[1][4];
500 (
F[5][6] * D[4][6] +
F[5][7] * D[4][7] +
F[5][8] * D[4][8] +
501 F[5][9] * D[4][9]) * Tsq + (D[4][5] +
F[5][6] * D[1][6] +
504 F[5][9] * D[1][9]) * T + D[1][5];
506 (
F[6][7] * D[4][7] +
F[6][8] * D[4][8] +
F[6][9] * D[4][9] +
507 F[6][10] * D[4][10] +
F[6][11] * D[4][11] +
508 F[6][12] * D[4][12]) * Tsq + (D[4][6] +
F[6][7] * D[1][7] +
511 F[6][10] * D[1][10] +
512 F[6][11] * D[1][11] +
513 F[6][12] * D[1][12]) * T +
516 (
F[7][6] * D[4][6] +
F[7][8] * D[4][8] +
F[7][9] * D[4][9] +
517 F[7][10] * D[4][10] +
F[7][11] * D[4][11] +
518 F[7][12] * D[4][12]) * Tsq + (D[4][7] +
F[7][6] * D[1][6] +
521 F[7][10] * D[1][10] +
522 F[7][11] * D[1][11] +
523 F[7][12] * D[1][12]) * T +
526 (
F[8][6] * D[4][6] +
F[8][7] * D[4][7] +
F[8][9] * D[4][9] +
527 F[8][10] * D[4][10] +
F[8][11] * D[4][11] +
528 F[8][12] * D[4][12]) * Tsq + (D[4][8] +
F[8][6] * D[1][6] +
531 F[8][10] * D[1][10] +
532 F[8][11] * D[1][11] +
533 F[8][12] * D[1][12]) * T +
536 (
F[9][6] * D[4][6] +
F[9][7] * D[4][7] +
F[9][8] * D[4][8] +
537 F[9][10] * D[4][10] +
F[9][11] * D[4][11] +
538 F[9][12] * D[4][12]) * Tsq + (D[4][9] +
F[9][6] * D[1][6] +
541 F[9][10] * D[1][10] +
542 F[9][11] * D[1][11] +
543 F[9][12] * D[1][12]) * T +
545 P[1][10] = P[10][1] = D[4][10] * T + D[1][10];
546 P[1][11] = P[11][1] = D[4][11] * T + D[1][11];
547 P[1][12] = P[12][1] = D[4][12] * T + D[1][12];
548 P[2][2] = D[5][5] * Tsq + (2 * D[2][5]) * T + D[2][2];
550 (
F[3][6] * D[5][6] +
F[3][7] * D[5][7] +
F[3][8] * D[5][8] +
551 F[3][9] * D[5][9]) * Tsq + (D[3][5] +
F[3][6] * D[2][6] +
554 F[3][9] * D[2][9]) * T + D[2][3];
556 (
F[4][6] * D[5][6] +
F[4][7] * D[5][7] +
F[4][8] * D[5][8] +
557 F[4][9] * D[5][9]) * Tsq + (D[4][5] +
F[4][6] * D[2][6] +
560 F[4][9] * D[2][9]) * T + D[2][4];
562 (
F[5][6] * D[5][6] +
F[5][7] * D[5][7] +
F[5][8] * D[5][8] +
563 F[5][9] * D[5][9]) * Tsq + (D[5][5] +
F[5][6] * D[2][6] +
566 F[5][9] * D[2][9]) * T + D[2][5];
568 (
F[6][7] * D[5][7] +
F[6][8] * D[5][8] +
F[6][9] * D[5][9] +
569 F[6][10] * D[5][10] +
F[6][11] * D[5][11] +
570 F[6][12] * D[5][12]) * Tsq + (D[5][6] +
F[6][7] * D[2][7] +
573 F[6][10] * D[2][10] +
574 F[6][11] * D[2][11] +
575 F[6][12] * D[2][12]) * T +
578 (
F[7][6] * D[5][6] +
F[7][8] * D[5][8] +
F[7][9] * D[5][9] +
579 F[7][10] * D[5][10] +
F[7][11] * D[5][11] +
580 F[7][12] * D[5][12]) * Tsq + (D[5][7] +
F[7][6] * D[2][6] +
583 F[7][10] * D[2][10] +
584 F[7][11] * D[2][11] +
585 F[7][12] * D[2][12]) * T +
588 (
F[8][6] * D[5][6] +
F[8][7] * D[5][7] +
F[8][9] * D[5][9] +
589 F[8][10] * D[5][10] +
F[8][11] * D[5][11] +
590 F[8][12] * D[5][12]) * Tsq + (D[5][8] +
F[8][6] * D[2][6] +
593 F[8][10] * D[2][10] +
594 F[8][11] * D[2][11] +
595 F[8][12] * D[2][12]) * T +
598 (
F[9][6] * D[5][6] +
F[9][7] * D[5][7] +
F[9][8] * D[5][8] +
599 F[9][10] * D[5][10] +
F[9][11] * D[5][11] +
600 F[9][12] * D[5][12]) * Tsq + (D[5][9] +
F[9][6] * D[2][6] +
603 F[9][10] * D[2][10] +
604 F[9][11] * D[2][11] +
605 F[9][12] * D[2][12]) * T +
607 P[2][10] = P[10][2] = D[5][10] * T + D[2][10];
608 P[2][11] = P[11][2] = D[5][11] * T + D[2][11];
609 P[2][12] = P[12][2] = D[5][12] * T + D[2][12];
611 (
Q[3] *
G[3][3] *
G[3][3] +
Q[4] *
G[3][4] *
G[3][4] +
612 Q[5] *
G[3][5] *
G[3][5] +
F[3][9] * (
F[3][9] * D[9][9] +
616 F[3][6] * (
F[3][6] * D[6][6] +
F[3][7] * D[6][7] +
617 F[3][8] * D[6][8] +
F[3][9] * D[6][9]) +
618 F[3][7] * (
F[3][6] * D[6][7] +
F[3][7] * D[7][7] +
619 F[3][8] * D[7][8] +
F[3][9] * D[7][9]) +
620 F[3][8] * (
F[3][6] * D[6][8] +
F[3][7] * D[7][8] +
621 F[3][8] * D[8][8] +
F[3][9] * D[8][9])) * Tsq +
622 (2 *
F[3][6] * D[3][6] + 2 *
F[3][7] * D[3][7] +
623 2 *
F[3][8] * D[3][8] + 2 *
F[3][9] * D[3][9]) * T + D[3][3];
626 (
F[3][9] * D[9][9] +
F[3][6] * D[6][9] +
F[3][7] * D[7][9] +
627 F[3][8] * D[8][9]) +
F[4][6] * (
F[3][6] * D[6][6] +
631 F[4][7] * (
F[3][6] * D[6][7] +
F[3][7] * D[7][7] +
632 F[3][8] * D[7][8] +
F[3][9] * D[7][9]) +
633 F[4][8] * (
F[3][6] * D[6][8] +
F[3][7] * D[7][8] +
634 F[3][8] * D[8][8] +
F[3][9] * D[8][9]) +
635 G[3][3] *
G[4][3] *
Q[3] +
G[3][4] *
G[4][4] *
Q[4] +
636 G[3][5] *
G[4][5] *
Q[5]) * Tsq + (
F[3][6] * D[4][6] +
643 F[4][9] * D[3][9]) * T +
647 (
F[3][9] * D[9][9] +
F[3][6] * D[6][9] +
F[3][7] * D[7][9] +
648 F[3][8] * D[8][9]) +
F[5][6] * (
F[3][6] * D[6][6] +
652 F[5][7] * (
F[3][6] * D[6][7] +
F[3][7] * D[7][7] +
653 F[3][8] * D[7][8] +
F[3][9] * D[7][9]) +
654 F[5][8] * (
F[3][6] * D[6][8] +
F[3][7] * D[7][8] +
655 F[3][8] * D[8][8] +
F[3][9] * D[8][9]) +
656 G[3][3] *
G[5][3] *
Q[3] +
G[3][4] *
G[5][4] *
Q[4] +
657 G[3][5] *
G[5][5] *
Q[5]) * Tsq + (
F[3][6] * D[5][6] +
664 F[5][9] * D[3][9]) * T +
668 (
F[3][9] * D[9][9] +
F[3][6] * D[6][9] +
F[3][7] * D[7][9] +
669 F[3][8] * D[8][9]) +
F[6][10] * (
F[3][9] * D[9][10] +
672 F[3][8] * D[8][10]) +
673 F[6][11] * (
F[3][9] * D[9][11] +
F[3][6] * D[6][11] +
674 F[3][7] * D[7][11] +
F[3][8] * D[8][11]) +
675 F[6][12] * (
F[3][9] * D[9][12] +
F[3][6] * D[6][12] +
676 F[3][7] * D[7][12] +
F[3][8] * D[8][12]) +
677 F[6][7] * (
F[3][6] * D[6][7] +
F[3][7] * D[7][7] +
678 F[3][8] * D[7][8] +
F[3][9] * D[7][9]) +
679 F[6][8] * (
F[3][6] * D[6][8] +
F[3][7] * D[7][8] +
680 F[3][8] * D[8][8] +
F[3][9] * D[8][9])) * Tsq +
681 (
F[3][6] * D[6][6] +
F[3][7] * D[6][7] +
F[6][7] * D[3][7] +
682 F[3][8] * D[6][8] +
F[6][8] * D[3][8] +
F[3][9] * D[6][9] +
683 F[6][9] * D[3][9] +
F[6][10] * D[3][10] +
684 F[6][11] * D[3][11] +
F[6][12] * D[3][12]) * T + D[3][6];
687 (
F[3][9] * D[9][9] +
F[3][6] * D[6][9] +
F[3][7] * D[7][9] +
688 F[3][8] * D[8][9]) +
F[7][10] * (
F[3][9] * D[9][10] +
691 F[3][8] * D[8][10]) +
692 F[7][11] * (
F[3][9] * D[9][11] +
F[3][6] * D[6][11] +
693 F[3][7] * D[7][11] +
F[3][8] * D[8][11]) +
694 F[7][12] * (
F[3][9] * D[9][12] +
F[3][6] * D[6][12] +
695 F[3][7] * D[7][12] +
F[3][8] * D[8][12]) +
696 F[7][6] * (
F[3][6] * D[6][6] +
F[3][7] * D[6][7] +
697 F[3][8] * D[6][8] +
F[3][9] * D[6][9]) +
698 F[7][8] * (
F[3][6] * D[6][8] +
F[3][7] * D[7][8] +
699 F[3][8] * D[8][8] +
F[3][9] * D[8][9])) * Tsq +
700 (
F[3][6] * D[6][7] +
F[7][6] * D[3][6] +
F[3][7] * D[7][7] +
701 F[3][8] * D[7][8] +
F[7][8] * D[3][8] +
F[3][9] * D[7][9] +
702 F[7][9] * D[3][9] +
F[7][10] * D[3][10] +
703 F[7][11] * D[3][11] +
F[7][12] * D[3][12]) * T + D[3][7];
706 (
F[3][9] * D[9][9] +
F[3][6] * D[6][9] +
F[3][7] * D[7][9] +
707 F[3][8] * D[8][9]) +
F[8][10] * (
F[3][9] * D[9][10] +
710 F[3][8] * D[8][10]) +
711 F[8][11] * (
F[3][9] * D[9][11] +
F[3][6] * D[6][11] +
712 F[3][7] * D[7][11] +
F[3][8] * D[8][11]) +
713 F[8][12] * (
F[3][9] * D[9][12] +
F[3][6] * D[6][12] +
714 F[3][7] * D[7][12] +
F[3][8] * D[8][12]) +
715 F[8][6] * (
F[3][6] * D[6][6] +
F[3][7] * D[6][7] +
716 F[3][8] * D[6][8] +
F[3][9] * D[6][9]) +
717 F[8][7] * (
F[3][6] * D[6][7] +
F[3][7] * D[7][7] +
718 F[3][8] * D[7][8] +
F[3][9] * D[7][9])) * Tsq +
719 (
F[3][6] * D[6][8] +
F[3][7] * D[7][8] +
F[8][6] * D[3][6] +
720 F[8][7] * D[3][7] +
F[3][8] * D[8][8] +
F[3][9] * D[8][9] +
721 F[8][9] * D[3][9] +
F[8][10] * D[3][10] +
722 F[8][11] * D[3][11] +
F[8][12] * D[3][12]) * T + D[3][8];
725 (
F[3][9] * D[9][10] +
F[3][6] * D[6][10] +
726 F[3][7] * D[7][10] +
F[3][8] * D[8][10]) +
727 F[9][11] * (
F[3][9] * D[9][11] +
F[3][6] * D[6][11] +
728 F[3][7] * D[7][11] +
F[3][8] * D[8][11]) +
729 F[9][12] * (
F[3][9] * D[9][12] +
F[3][6] * D[6][12] +
730 F[3][7] * D[7][12] +
F[3][8] * D[8][12]) +
731 F[9][6] * (
F[3][6] * D[6][6] +
F[3][7] * D[6][7] +
732 F[3][8] * D[6][8] +
F[3][9] * D[6][9]) +
733 F[9][7] * (
F[3][6] * D[6][7] +
F[3][7] * D[7][7] +
734 F[3][8] * D[7][8] +
F[3][9] * D[7][9]) +
735 F[9][8] * (
F[3][6] * D[6][8] +
F[3][7] * D[7][8] +
736 F[3][8] * D[8][8] +
F[3][9] * D[8][9])) * Tsq +
737 (
F[9][6] * D[3][6] +
F[9][7] * D[3][7] +
F[9][8] * D[3][8] +
738 F[3][9] * D[9][9] +
F[9][10] * D[3][10] +
739 F[9][11] * D[3][11] +
F[9][12] * D[3][12] +
740 F[3][6] * D[6][9] +
F[3][7] * D[7][9] +
741 F[3][8] * D[8][9]) * T + D[3][9];
742 P[3][10] = P[10][3] =
743 (
F[3][9] * D[9][10] +
F[3][6] * D[6][10] +
F[3][7] * D[7][10] +
744 F[3][8] * D[8][10]) * T + D[3][10];
745 P[3][11] = P[11][3] =
746 (
F[3][9] * D[9][11] +
F[3][6] * D[6][11] +
F[3][7] * D[7][11] +
747 F[3][8] * D[8][11]) * T + D[3][11];
748 P[3][12] = P[12][3] =
749 (
F[3][9] * D[9][12] +
F[3][6] * D[6][12] +
F[3][7] * D[7][12] +
750 F[3][8] * D[8][12]) * T + D[3][12];
752 (
Q[3] *
G[4][3] *
G[4][3] +
Q[4] *
G[4][4] *
G[4][4] +
753 Q[5] *
G[4][5] *
G[4][5] +
F[4][9] * (
F[4][9] * D[9][9] +
757 F[4][6] * (
F[4][6] * D[6][6] +
F[4][7] * D[6][7] +
758 F[4][8] * D[6][8] +
F[4][9] * D[6][9]) +
759 F[4][7] * (
F[4][6] * D[6][7] +
F[4][7] * D[7][7] +
760 F[4][8] * D[7][8] +
F[4][9] * D[7][9]) +
761 F[4][8] * (
F[4][6] * D[6][8] +
F[4][7] * D[7][8] +
762 F[4][8] * D[8][8] +
F[4][9] * D[8][9])) * Tsq +
763 (2 *
F[4][6] * D[4][6] + 2 *
F[4][7] * D[4][7] +
764 2 *
F[4][8] * D[4][8] + 2 *
F[4][9] * D[4][9]) * T + D[4][4];
767 (
F[4][9] * D[9][9] +
F[4][6] * D[6][9] +
F[4][7] * D[7][9] +
768 F[4][8] * D[8][9]) +
F[5][6] * (
F[4][6] * D[6][6] +
772 F[5][7] * (
F[4][6] * D[6][7] +
F[4][7] * D[7][7] +
773 F[4][8] * D[7][8] +
F[4][9] * D[7][9]) +
774 F[5][8] * (
F[4][6] * D[6][8] +
F[4][7] * D[7][8] +
775 F[4][8] * D[8][8] +
F[4][9] * D[8][9]) +
776 G[4][3] *
G[5][3] *
Q[3] +
G[4][4] *
G[5][4] *
Q[4] +
777 G[4][5] *
G[5][5] *
Q[5]) * Tsq + (
F[4][6] * D[5][6] +
784 F[5][9] * D[4][9]) * T +
788 (
F[4][9] * D[9][9] +
F[4][6] * D[6][9] +
F[4][7] * D[7][9] +
789 F[4][8] * D[8][9]) +
F[6][10] * (
F[4][9] * D[9][10] +
792 F[4][8] * D[8][10]) +
793 F[6][11] * (
F[4][9] * D[9][11] +
F[4][6] * D[6][11] +
794 F[4][7] * D[7][11] +
F[4][8] * D[8][11]) +
795 F[6][12] * (
F[4][9] * D[9][12] +
F[4][6] * D[6][12] +
796 F[4][7] * D[7][12] +
F[4][8] * D[8][12]) +
797 F[6][7] * (
F[4][6] * D[6][7] +
F[4][7] * D[7][7] +
798 F[4][8] * D[7][8] +
F[4][9] * D[7][9]) +
799 F[6][8] * (
F[4][6] * D[6][8] +
F[4][7] * D[7][8] +
800 F[4][8] * D[8][8] +
F[4][9] * D[8][9])) * Tsq +
801 (
F[4][6] * D[6][6] +
F[4][7] * D[6][7] +
F[6][7] * D[4][7] +
802 F[4][8] * D[6][8] +
F[6][8] * D[4][8] +
F[4][9] * D[6][9] +
803 F[6][9] * D[4][9] +
F[6][10] * D[4][10] +
804 F[6][11] * D[4][11] +
F[6][12] * D[4][12]) * T + D[4][6];
807 (
F[4][9] * D[9][9] +
F[4][6] * D[6][9] +
F[4][7] * D[7][9] +
808 F[4][8] * D[8][9]) +
F[7][10] * (
F[4][9] * D[9][10] +
811 F[4][8] * D[8][10]) +
812 F[7][11] * (
F[4][9] * D[9][11] +
F[4][6] * D[6][11] +
813 F[4][7] * D[7][11] +
F[4][8] * D[8][11]) +
814 F[7][12] * (
F[4][9] * D[9][12] +
F[4][6] * D[6][12] +
815 F[4][7] * D[7][12] +
F[4][8] * D[8][12]) +
816 F[7][6] * (
F[4][6] * D[6][6] +
F[4][7] * D[6][7] +
817 F[4][8] * D[6][8] +
F[4][9] * D[6][9]) +
818 F[7][8] * (
F[4][6] * D[6][8] +
F[4][7] * D[7][8] +
819 F[4][8] * D[8][8] +
F[4][9] * D[8][9])) * Tsq +
820 (
F[4][6] * D[6][7] +
F[7][6] * D[4][6] +
F[4][7] * D[7][7] +
821 F[4][8] * D[7][8] +
F[7][8] * D[4][8] +
F[4][9] * D[7][9] +
822 F[7][9] * D[4][9] +
F[7][10] * D[4][10] +
823 F[7][11] * D[4][11] +
F[7][12] * D[4][12]) * T + D[4][7];
826 (
F[4][9] * D[9][9] +
F[4][6] * D[6][9] +
F[4][7] * D[7][9] +
827 F[4][8] * D[8][9]) +
F[8][10] * (
F[4][9] * D[9][10] +
830 F[4][8] * D[8][10]) +
831 F[8][11] * (
F[4][9] * D[9][11] +
F[4][6] * D[6][11] +
832 F[4][7] * D[7][11] +
F[4][8] * D[8][11]) +
833 F[8][12] * (
F[4][9] * D[9][12] +
F[4][6] * D[6][12] +
834 F[4][7] * D[7][12] +
F[4][8] * D[8][12]) +
835 F[8][6] * (
F[4][6] * D[6][6] +
F[4][7] * D[6][7] +
836 F[4][8] * D[6][8] +
F[4][9] * D[6][9]) +
837 F[8][7] * (
F[4][6] * D[6][7] +
F[4][7] * D[7][7] +
838 F[4][8] * D[7][8] +
F[4][9] * D[7][9])) * Tsq +
839 (
F[4][6] * D[6][8] +
F[4][7] * D[7][8] +
F[8][6] * D[4][6] +
840 F[8][7] * D[4][7] +
F[4][8] * D[8][8] +
F[4][9] * D[8][9] +
841 F[8][9] * D[4][9] +
F[8][10] * D[4][10] +
842 F[8][11] * D[4][11] +
F[8][12] * D[4][12]) * T + D[4][8];
845 (
F[4][9] * D[9][10] +
F[4][6] * D[6][10] +
846 F[4][7] * D[7][10] +
F[4][8] * D[8][10]) +
847 F[9][11] * (
F[4][9] * D[9][11] +
F[4][6] * D[6][11] +
848 F[4][7] * D[7][11] +
F[4][8] * D[8][11]) +
849 F[9][12] * (
F[4][9] * D[9][12] +
F[4][6] * D[6][12] +
850 F[4][7] * D[7][12] +
F[4][8] * D[8][12]) +
851 F[9][6] * (
F[4][6] * D[6][6] +
F[4][7] * D[6][7] +
852 F[4][8] * D[6][8] +
F[4][9] * D[6][9]) +
853 F[9][7] * (
F[4][6] * D[6][7] +
F[4][7] * D[7][7] +
854 F[4][8] * D[7][8] +
F[4][9] * D[7][9]) +
855 F[9][8] * (
F[4][6] * D[6][8] +
F[4][7] * D[7][8] +
856 F[4][8] * D[8][8] +
F[4][9] * D[8][9])) * Tsq +
857 (
F[9][6] * D[4][6] +
F[9][7] * D[4][7] +
F[9][8] * D[4][8] +
858 F[4][9] * D[9][9] +
F[9][10] * D[4][10] +
859 F[9][11] * D[4][11] +
F[9][12] * D[4][12] +
860 F[4][6] * D[6][9] +
F[4][7] * D[7][9] +
861 F[4][8] * D[8][9]) * T + D[4][9];
862 P[4][10] = P[10][4] =
863 (
F[4][9] * D[9][10] +
F[4][6] * D[6][10] +
F[4][7] * D[7][10] +
864 F[4][8] * D[8][10]) * T + D[4][10];
865 P[4][11] = P[11][4] =
866 (
F[4][9] * D[9][11] +
F[4][6] * D[6][11] +
F[4][7] * D[7][11] +
867 F[4][8] * D[8][11]) * T + D[4][11];
868 P[4][12] = P[12][4] =
869 (
F[4][9] * D[9][12] +
F[4][6] * D[6][12] +
F[4][7] * D[7][12] +
870 F[4][8] * D[8][12]) * T + D[4][12];
872 (
Q[3] *
G[5][3] *
G[5][3] +
Q[4] *
G[5][4] *
G[5][4] +
873 Q[5] *
G[5][5] *
G[5][5] +
F[5][9] * (
F[5][9] * D[9][9] +
877 F[5][6] * (
F[5][6] * D[6][6] +
F[5][7] * D[6][7] +
878 F[5][8] * D[6][8] +
F[5][9] * D[6][9]) +
879 F[5][7] * (
F[5][6] * D[6][7] +
F[5][7] * D[7][7] +
880 F[5][8] * D[7][8] +
F[5][9] * D[7][9]) +
881 F[5][8] * (
F[5][6] * D[6][8] +
F[5][7] * D[7][8] +
882 F[5][8] * D[8][8] +
F[5][9] * D[8][9])) * Tsq +
883 (2 *
F[5][6] * D[5][6] + 2 *
F[5][7] * D[5][7] +
884 2 *
F[5][8] * D[5][8] + 2 *
F[5][9] * D[5][9]) * T + D[5][5];
887 (
F[5][9] * D[9][9] +
F[5][6] * D[6][9] +
F[5][7] * D[7][9] +
888 F[5][8] * D[8][9]) +
F[6][10] * (
F[5][9] * D[9][10] +
891 F[5][8] * D[8][10]) +
892 F[6][11] * (
F[5][9] * D[9][11] +
F[5][6] * D[6][11] +
893 F[5][7] * D[7][11] +
F[5][8] * D[8][11]) +
894 F[6][12] * (
F[5][9] * D[9][12] +
F[5][6] * D[6][12] +
895 F[5][7] * D[7][12] +
F[5][8] * D[8][12]) +
896 F[6][7] * (
F[5][6] * D[6][7] +
F[5][7] * D[7][7] +
897 F[5][8] * D[7][8] +
F[5][9] * D[7][9]) +
898 F[6][8] * (
F[5][6] * D[6][8] +
F[5][7] * D[7][8] +
899 F[5][8] * D[8][8] +
F[5][9] * D[8][9])) * Tsq +
900 (
F[5][6] * D[6][6] +
F[5][7] * D[6][7] +
F[6][7] * D[5][7] +
901 F[5][8] * D[6][8] +
F[6][8] * D[5][8] +
F[5][9] * D[6][9] +
902 F[6][9] * D[5][9] +
F[6][10] * D[5][10] +
903 F[6][11] * D[5][11] +
F[6][12] * D[5][12]) * T + D[5][6];
906 (
F[5][9] * D[9][9] +
F[5][6] * D[6][9] +
F[5][7] * D[7][9] +
907 F[5][8] * D[8][9]) +
F[7][10] * (
F[5][9] * D[9][10] +
910 F[5][8] * D[8][10]) +
911 F[7][11] * (
F[5][9] * D[9][11] +
F[5][6] * D[6][11] +
912 F[5][7] * D[7][11] +
F[5][8] * D[8][11]) +
913 F[7][12] * (
F[5][9] * D[9][12] +
F[5][6] * D[6][12] +
914 F[5][7] * D[7][12] +
F[5][8] * D[8][12]) +
915 F[7][6] * (
F[5][6] * D[6][6] +
F[5][7] * D[6][7] +
916 F[5][8] * D[6][8] +
F[5][9] * D[6][9]) +
917 F[7][8] * (
F[5][6] * D[6][8] +
F[5][7] * D[7][8] +
918 F[5][8] * D[8][8] +
F[5][9] * D[8][9])) * Tsq +
919 (
F[5][6] * D[6][7] +
F[7][6] * D[5][6] +
F[5][7] * D[7][7] +
920 F[5][8] * D[7][8] +
F[7][8] * D[5][8] +
F[5][9] * D[7][9] +
921 F[7][9] * D[5][9] +
F[7][10] * D[5][10] +
922 F[7][11] * D[5][11] +
F[7][12] * D[5][12]) * T + D[5][7];
925 (
F[5][9] * D[9][9] +
F[5][6] * D[6][9] +
F[5][7] * D[7][9] +
926 F[5][8] * D[8][9]) +
F[8][10] * (
F[5][9] * D[9][10] +
929 F[5][8] * D[8][10]) +
930 F[8][11] * (
F[5][9] * D[9][11] +
F[5][6] * D[6][11] +
931 F[5][7] * D[7][11] +
F[5][8] * D[8][11]) +
932 F[8][12] * (
F[5][9] * D[9][12] +
F[5][6] * D[6][12] +
933 F[5][7] * D[7][12] +
F[5][8] * D[8][12]) +
934 F[8][6] * (
F[5][6] * D[6][6] +
F[5][7] * D[6][7] +
935 F[5][8] * D[6][8] +
F[5][9] * D[6][9]) +
936 F[8][7] * (
F[5][6] * D[6][7] +
F[5][7] * D[7][7] +
937 F[5][8] * D[7][8] +
F[5][9] * D[7][9])) * Tsq +
938 (
F[5][6] * D[6][8] +
F[5][7] * D[7][8] +
F[8][6] * D[5][6] +
939 F[8][7] * D[5][7] +
F[5][8] * D[8][8] +
F[5][9] * D[8][9] +
940 F[8][9] * D[5][9] +
F[8][10] * D[5][10] +
941 F[8][11] * D[5][11] +
F[8][12] * D[5][12]) * T + D[5][8];
944 (
F[5][9] * D[9][10] +
F[5][6] * D[6][10] +
945 F[5][7] * D[7][10] +
F[5][8] * D[8][10]) +
946 F[9][11] * (
F[5][9] * D[9][11] +
F[5][6] * D[6][11] +
947 F[5][7] * D[7][11] +
F[5][8] * D[8][11]) +
948 F[9][12] * (
F[5][9] * D[9][12] +
F[5][6] * D[6][12] +
949 F[5][7] * D[7][12] +
F[5][8] * D[8][12]) +
950 F[9][6] * (
F[5][6] * D[6][6] +
F[5][7] * D[6][7] +
951 F[5][8] * D[6][8] +
F[5][9] * D[6][9]) +
952 F[9][7] * (
F[5][6] * D[6][7] +
F[5][7] * D[7][7] +
953 F[5][8] * D[7][8] +
F[5][9] * D[7][9]) +
954 F[9][8] * (
F[5][6] * D[6][8] +
F[5][7] * D[7][8] +
955 F[5][8] * D[8][8] +
F[5][9] * D[8][9])) * Tsq +
956 (
F[9][6] * D[5][6] +
F[9][7] * D[5][7] +
F[9][8] * D[5][8] +
957 F[5][9] * D[9][9] +
F[9][10] * D[5][10] +
958 F[9][11] * D[5][11] +
F[9][12] * D[5][12] +
959 F[5][6] * D[6][9] +
F[5][7] * D[7][9] +
960 F[5][8] * D[8][9]) * T + D[5][9];
961 P[5][10] = P[10][5] =
962 (
F[5][9] * D[9][10] +
F[5][6] * D[6][10] +
F[5][7] * D[7][10] +
963 F[5][8] * D[8][10]) * T + D[5][10];
964 P[5][11] = P[11][5] =
965 (
F[5][9] * D[9][11] +
F[5][6] * D[6][11] +
F[5][7] * D[7][11] +
966 F[5][8] * D[8][11]) * T + D[5][11];
967 P[5][12] = P[12][5] =
968 (
F[5][9] * D[9][12] +
F[5][6] * D[6][12] +
F[5][7] * D[7][12] +
969 F[5][8] * D[8][12]) * T + D[5][12];
971 (
Q[0] *
G[6][0] *
G[6][0] +
Q[1] *
G[6][1] *
G[6][1] +
972 Q[2] *
G[6][2] *
G[6][2] +
F[6][9] * (
F[6][9] * D[9][9] +
973 F[6][10] * D[9][10] +
974 F[6][11] * D[9][11] +
975 F[6][12] * D[9][12] +
978 F[6][10] * (
F[6][9] * D[9][10] +
F[6][10] * D[10][10] +
979 F[6][11] * D[10][11] +
F[6][12] * D[10][12] +
980 F[6][7] * D[7][10] +
F[6][8] * D[8][10]) +
981 F[6][11] * (
F[6][9] * D[9][11] +
F[6][10] * D[10][11] +
982 F[6][11] * D[11][11] +
F[6][12] * D[11][12] +
983 F[6][7] * D[7][11] +
F[6][8] * D[8][11]) +
984 F[6][12] * (
F[6][9] * D[9][12] +
F[6][10] * D[10][12] +
985 F[6][11] * D[11][12] +
F[6][12] * D[12][12] +
986 F[6][7] * D[7][12] +
F[6][8] * D[8][12]) +
987 F[6][7] * (
F[6][7] * D[7][7] +
F[6][8] * D[7][8] +
988 F[6][9] * D[7][9] +
F[6][10] * D[7][10] +
989 F[6][11] * D[7][11] +
F[6][12] * D[7][12]) +
990 F[6][8] * (
F[6][7] * D[7][8] +
F[6][8] * D[8][8] +
991 F[6][9] * D[8][9] +
F[6][10] * D[8][10] +
992 F[6][11] * D[8][11] +
F[6][12] * D[8][12])) * Tsq +
993 (2 *
F[6][7] * D[6][7] + 2 *
F[6][8] * D[6][8] +
994 2 *
F[6][9] * D[6][9] + 2 *
F[6][10] * D[6][10] +
995 2 *
F[6][11] * D[6][11] + 2 *
F[6][12] * D[6][12]) * T +
999 (
F[6][9] * D[9][9] +
F[6][10] * D[9][10] +
1000 F[6][11] * D[9][11] +
F[6][12] * D[9][12] +
1001 F[6][7] * D[7][9] +
F[6][8] * D[8][9]) +
1002 F[7][10] * (
F[6][9] * D[9][10] +
F[6][10] * D[10][10] +
1003 F[6][11] * D[10][11] +
F[6][12] * D[10][12] +
1004 F[6][7] * D[7][10] +
F[6][8] * D[8][10]) +
1005 F[7][11] * (
F[6][9] * D[9][11] +
F[6][10] * D[10][11] +
1006 F[6][11] * D[11][11] +
F[6][12] * D[11][12] +
1007 F[6][7] * D[7][11] +
F[6][8] * D[8][11]) +
1008 F[7][12] * (
F[6][9] * D[9][12] +
F[6][10] * D[10][12] +
1009 F[6][11] * D[11][12] +
F[6][12] * D[12][12] +
1010 F[6][7] * D[7][12] +
F[6][8] * D[8][12]) +
1011 F[7][6] * (
F[6][7] * D[6][7] +
F[6][8] * D[6][8] +
1012 F[6][9] * D[6][9] +
F[6][10] * D[6][10] +
1013 F[6][11] * D[6][11] +
F[6][12] * D[6][12]) +
1014 F[7][8] * (
F[6][7] * D[7][8] +
F[6][8] * D[8][8] +
1015 F[6][9] * D[8][9] +
F[6][10] * D[8][10] +
1016 F[6][11] * D[8][11] +
F[6][12] * D[8][12]) +
1017 G[6][0] *
G[7][0] *
Q[0] +
G[6][1] *
G[7][1] *
Q[1] +
1018 G[6][2] *
G[7][2] *
Q[2]) * Tsq + (
F[7][6] * D[6][6] +
1024 F[6][10] * D[7][10] +
1025 F[7][10] * D[6][10] +
1026 F[6][11] * D[7][11] +
1027 F[7][11] * D[6][11] +
1028 F[6][12] * D[7][12] +
1029 F[7][12] * D[6][12]) * T +
1033 (
F[6][9] * D[9][9] +
F[6][10] * D[9][10] +
1034 F[6][11] * D[9][11] +
F[6][12] * D[9][12] +
1035 F[6][7] * D[7][9] +
F[6][8] * D[8][9]) +
1036 F[8][10] * (
F[6][9] * D[9][10] +
F[6][10] * D[10][10] +
1037 F[6][11] * D[10][11] +
F[6][12] * D[10][12] +
1038 F[6][7] * D[7][10] +
F[6][8] * D[8][10]) +
1039 F[8][11] * (
F[6][9] * D[9][11] +
F[6][10] * D[10][11] +
1040 F[6][11] * D[11][11] +
F[6][12] * D[11][12] +
1041 F[6][7] * D[7][11] +
F[6][8] * D[8][11]) +
1042 F[8][12] * (
F[6][9] * D[9][12] +
F[6][10] * D[10][12] +
1043 F[6][11] * D[11][12] +
F[6][12] * D[12][12] +
1044 F[6][7] * D[7][12] +
F[6][8] * D[8][12]) +
1045 F[8][6] * (
F[6][7] * D[6][7] +
F[6][8] * D[6][8] +
1046 F[6][9] * D[6][9] +
F[6][10] * D[6][10] +
1047 F[6][11] * D[6][11] +
F[6][12] * D[6][12]) +
1048 F[8][7] * (
F[6][7] * D[7][7] +
F[6][8] * D[7][8] +
1049 F[6][9] * D[7][9] +
F[6][10] * D[7][10] +
1050 F[6][11] * D[7][11] +
F[6][12] * D[7][12]) +
1051 G[6][0] *
G[8][0] *
Q[0] +
G[6][1] *
G[8][1] *
Q[1] +
1052 G[6][2] *
G[8][2] *
Q[2]) * Tsq + (
F[6][7] * D[7][8] +
1058 F[6][10] * D[8][10] +
1059 F[8][10] * D[6][10] +
1060 F[6][11] * D[8][11] +
1061 F[8][11] * D[6][11] +
1062 F[6][12] * D[8][12] +
1063 F[8][12] * D[6][12]) * T +
1067 (
F[6][9] * D[9][10] +
F[6][10] * D[10][10] +
1068 F[6][11] * D[10][11] +
F[6][12] * D[10][12] +
1069 F[6][7] * D[7][10] +
F[6][8] * D[8][10]) +
1070 F[9][11] * (
F[6][9] * D[9][11] +
F[6][10] * D[10][11] +
1071 F[6][11] * D[11][11] +
F[6][12] * D[11][12] +
1072 F[6][7] * D[7][11] +
F[6][8] * D[8][11]) +
1073 F[9][12] * (
F[6][9] * D[9][12] +
F[6][10] * D[10][12] +
1074 F[6][11] * D[11][12] +
F[6][12] * D[12][12] +
1075 F[6][7] * D[7][12] +
F[6][8] * D[8][12]) +
1076 F[9][6] * (
F[6][7] * D[6][7] +
F[6][8] * D[6][8] +
1077 F[6][9] * D[6][9] +
F[6][10] * D[6][10] +
1078 F[6][11] * D[6][11] +
F[6][12] * D[6][12]) +
1079 F[9][7] * (
F[6][7] * D[7][7] +
F[6][8] * D[7][8] +
1080 F[6][9] * D[7][9] +
F[6][10] * D[7][10] +
1081 F[6][11] * D[7][11] +
F[6][12] * D[7][12]) +
1082 F[9][8] * (
F[6][7] * D[7][8] +
F[6][8] * D[8][8] +
1083 F[6][9] * D[8][9] +
F[6][10] * D[8][10] +
1084 F[6][11] * D[8][11] +
F[6][12] * D[8][12]) +
1085 G[9][0] *
G[6][0] *
Q[0] +
G[9][1] *
G[6][1] *
Q[1] +
1086 G[9][2] *
G[6][2] *
Q[2]) * Tsq + (
F[9][6] * D[6][6] +
1090 F[9][10] * D[6][10] +
1091 F[6][10] * D[9][10] +
1092 F[9][11] * D[6][11] +
1093 F[6][11] * D[9][11] +
1094 F[9][12] * D[6][12] +
1095 F[6][12] * D[9][12] +
1097 F[6][8] * D[8][9]) * T +
1099 P[6][10] = P[10][6] =
1100 (
F[6][9] * D[9][10] +
F[6][10] * D[10][10] +
1101 F[6][11] * D[10][11] +
F[6][12] * D[10][12] +
1102 F[6][7] * D[7][10] +
F[6][8] * D[8][10]) * T + D[6][10];
1103 P[6][11] = P[11][6] =
1104 (
F[6][9] * D[9][11] +
F[6][10] * D[10][11] +
1105 F[6][11] * D[11][11] +
F[6][12] * D[11][12] +
1106 F[6][7] * D[7][11] +
F[6][8] * D[8][11]) * T + D[6][11];
1107 P[6][12] = P[12][6] =
1108 (
F[6][9] * D[9][12] +
F[6][10] * D[10][12] +
1109 F[6][11] * D[11][12] +
F[6][12] * D[12][12] +
1110 F[6][7] * D[7][12] +
F[6][8] * D[8][12]) * T + D[6][12];
1112 (
Q[0] *
G[7][0] *
G[7][0] +
Q[1] *
G[7][1] *
G[7][1] +
1113 Q[2] *
G[7][2] *
G[7][2] +
F[7][9] * (
F[7][9] * D[9][9] +
1114 F[7][10] * D[9][10] +
1115 F[7][11] * D[9][11] +
1116 F[7][12] * D[9][12] +
1118 F[7][8] * D[8][9]) +
1119 F[7][10] * (
F[7][9] * D[9][10] +
F[7][10] * D[10][10] +
1120 F[7][11] * D[10][11] +
F[7][12] * D[10][12] +
1121 F[7][6] * D[6][10] +
F[7][8] * D[8][10]) +
1122 F[7][11] * (
F[7][9] * D[9][11] +
F[7][10] * D[10][11] +
1123 F[7][11] * D[11][11] +
F[7][12] * D[11][12] +
1124 F[7][6] * D[6][11] +
F[7][8] * D[8][11]) +
1125 F[7][12] * (
F[7][9] * D[9][12] +
F[7][10] * D[10][12] +
1126 F[7][11] * D[11][12] +
F[7][12] * D[12][12] +
1127 F[7][6] * D[6][12] +
F[7][8] * D[8][12]) +
1128 F[7][6] * (
F[7][6] * D[6][6] +
F[7][8] * D[6][8] +
1129 F[7][9] * D[6][9] +
F[7][10] * D[6][10] +
1130 F[7][11] * D[6][11] +
F[7][12] * D[6][12]) +
1131 F[7][8] * (
F[7][6] * D[6][8] +
F[7][8] * D[8][8] +
1132 F[7][9] * D[8][9] +
F[7][10] * D[8][10] +
1133 F[7][11] * D[8][11] +
F[7][12] * D[8][12])) * Tsq +
1134 (2 *
F[7][6] * D[6][7] + 2 *
F[7][8] * D[7][8] +
1135 2 *
F[7][9] * D[7][9] + 2 *
F[7][10] * D[7][10] +
1136 2 *
F[7][11] * D[7][11] + 2 *
F[7][12] * D[7][12]) * T +
1140 (
F[7][9] * D[9][9] +
F[7][10] * D[9][10] +
1141 F[7][11] * D[9][11] +
F[7][12] * D[9][12] +
1142 F[7][6] * D[6][9] +
F[7][8] * D[8][9]) +
1143 F[8][10] * (
F[7][9] * D[9][10] +
F[7][10] * D[10][10] +
1144 F[7][11] * D[10][11] +
F[7][12] * D[10][12] +
1145 F[7][6] * D[6][10] +
F[7][8] * D[8][10]) +
1146 F[8][11] * (
F[7][9] * D[9][11] +
F[7][10] * D[10][11] +
1147 F[7][11] * D[11][11] +
F[7][12] * D[11][12] +
1148 F[7][6] * D[6][11] +
F[7][8] * D[8][11]) +
1149 F[8][12] * (
F[7][9] * D[9][12] +
F[7][10] * D[10][12] +
1150 F[7][11] * D[11][12] +
F[7][12] * D[12][12] +
1151 F[7][6] * D[6][12] +
F[7][8] * D[8][12]) +
1152 F[8][6] * (
F[7][6] * D[6][6] +
F[7][8] * D[6][8] +
1153 F[7][9] * D[6][9] +
F[7][10] * D[6][10] +
1154 F[7][11] * D[6][11] +
F[7][12] * D[6][12]) +
1155 F[8][7] * (
F[7][6] * D[6][7] +
F[7][8] * D[7][8] +
1156 F[7][9] * D[7][9] +
F[7][10] * D[7][10] +
1157 F[7][11] * D[7][11] +
F[7][12] * D[7][12]) +
1158 G[7][0] *
G[8][0] *
Q[0] +
G[7][1] *
G[8][1] *
Q[1] +
1159 G[7][2] *
G[8][2] *
Q[2]) * Tsq + (
F[7][6] * D[6][8] +
1165 F[7][10] * D[8][10] +
1166 F[8][10] * D[7][10] +
1167 F[7][11] * D[8][11] +
1168 F[8][11] * D[7][11] +
1169 F[7][12] * D[8][12] +
1170 F[8][12] * D[7][12]) * T +
1174 (
F[7][9] * D[9][10] +
F[7][10] * D[10][10] +
1175 F[7][11] * D[10][11] +
F[7][12] * D[10][12] +
1176 F[7][6] * D[6][10] +
F[7][8] * D[8][10]) +
1177 F[9][11] * (
F[7][9] * D[9][11] +
F[7][10] * D[10][11] +
1178 F[7][11] * D[11][11] +
F[7][12] * D[11][12] +
1179 F[7][6] * D[6][11] +
F[7][8] * D[8][11]) +
1180 F[9][12] * (
F[7][9] * D[9][12] +
F[7][10] * D[10][12] +
1181 F[7][11] * D[11][12] +
F[7][12] * D[12][12] +
1182 F[7][6] * D[6][12] +
F[7][8] * D[8][12]) +
1183 F[9][6] * (
F[7][6] * D[6][6] +
F[7][8] * D[6][8] +
1184 F[7][9] * D[6][9] +
F[7][10] * D[6][10] +
1185 F[7][11] * D[6][11] +
F[7][12] * D[6][12]) +
1186 F[9][7] * (
F[7][6] * D[6][7] +
F[7][8] * D[7][8] +
1187 F[7][9] * D[7][9] +
F[7][10] * D[7][10] +
1188 F[7][11] * D[7][11] +
F[7][12] * D[7][12]) +
1189 F[9][8] * (
F[7][6] * D[6][8] +
F[7][8] * D[8][8] +
1190 F[7][9] * D[8][9] +
F[7][10] * D[8][10] +
1191 F[7][11] * D[8][11] +
F[7][12] * D[8][12]) +
1192 G[9][0] *
G[7][0] *
Q[0] +
G[9][1] *
G[7][1] *
Q[1] +
1193 G[9][2] *
G[7][2] *
Q[2]) * Tsq + (
F[9][6] * D[6][7] +
1197 F[9][10] * D[7][10] +
1198 F[7][10] * D[9][10] +
1199 F[9][11] * D[7][11] +
1200 F[7][11] * D[9][11] +
1201 F[9][12] * D[7][12] +
1202 F[7][12] * D[9][12] +
1204 F[7][8] * D[8][9]) * T +
1206 P[7][10] = P[10][7] =
1207 (
F[7][9] * D[9][10] +
F[7][10] * D[10][10] +
1208 F[7][11] * D[10][11] +
F[7][12] * D[10][12] +
1209 F[7][6] * D[6][10] +
F[7][8] * D[8][10]) * T + D[7][10];
1210 P[7][11] = P[11][7] =
1211 (
F[7][9] * D[9][11] +
F[7][10] * D[10][11] +
1212 F[7][11] * D[11][11] +
F[7][12] * D[11][12] +
1213 F[7][6] * D[6][11] +
F[7][8] * D[8][11]) * T + D[7][11];
1214 P[7][12] = P[12][7] =
1215 (
F[7][9] * D[9][12] +
F[7][10] * D[10][12] +
1216 F[7][11] * D[11][12] +
F[7][12] * D[12][12] +
1217 F[7][6] * D[6][12] +
F[7][8] * D[8][12]) * T + D[7][12];
1219 (
Q[0] *
G[8][0] *
G[8][0] +
Q[1] *
G[8][1] *
G[8][1] +
1220 Q[2] *
G[8][2] *
G[8][2] +
F[8][9] * (
F[8][9] * D[9][9] +
1221 F[8][10] * D[9][10] +
1222 F[8][11] * D[9][11] +
1223 F[8][12] * D[9][12] +
1225 F[8][7] * D[7][9]) +
1226 F[8][10] * (
F[8][9] * D[9][10] +
F[8][10] * D[10][10] +
1227 F[8][11] * D[10][11] +
F[8][12] * D[10][12] +
1228 F[8][6] * D[6][10] +
F[8][7] * D[7][10]) +
1229 F[8][11] * (
F[8][9] * D[9][11] +
F[8][10] * D[10][11] +
1230 F[8][11] * D[11][11] +
F[8][12] * D[11][12] +
1231 F[8][6] * D[6][11] +
F[8][7] * D[7][11]) +
1232 F[8][12] * (
F[8][9] * D[9][12] +
F[8][10] * D[10][12] +
1233 F[8][11] * D[11][12] +
F[8][12] * D[12][12] +
1234 F[8][6] * D[6][12] +
F[8][7] * D[7][12]) +
1235 F[8][6] * (
F[8][6] * D[6][6] +
F[8][7] * D[6][7] +
1236 F[8][9] * D[6][9] +
F[8][10] * D[6][10] +
1237 F[8][11] * D[6][11] +
F[8][12] * D[6][12]) +
1238 F[8][7] * (
F[8][6] * D[6][7] +
F[8][7] * D[7][7] +
1239 F[8][9] * D[7][9] +
F[8][10] * D[7][10] +
1240 F[8][11] * D[7][11] +
F[8][12] * D[7][12])) * Tsq +
1241 (2 *
F[8][6] * D[6][8] + 2 *
F[8][7] * D[7][8] +
1242 2 *
F[8][9] * D[8][9] + 2 *
F[8][10] * D[8][10] +
1243 2 *
F[8][11] * D[8][11] + 2 *
F[8][12] * D[8][12]) * T +
1247 (
F[8][9] * D[9][10] +
F[8][10] * D[10][10] +
1248 F[8][11] * D[10][11] +
F[8][12] * D[10][12] +
1249 F[8][6] * D[6][10] +
F[8][7] * D[7][10]) +
1250 F[9][11] * (
F[8][9] * D[9][11] +
F[8][10] * D[10][11] +
1251 F[8][11] * D[11][11] +
F[8][12] * D[11][12] +
1252 F[8][6] * D[6][11] +
F[8][7] * D[7][11]) +
1253 F[9][12] * (
F[8][9] * D[9][12] +
F[8][10] * D[10][12] +
1254 F[8][11] * D[11][12] +
F[8][12] * D[12][12] +
1255 F[8][6] * D[6][12] +
F[8][7] * D[7][12]) +
1256 F[9][6] * (
F[8][6] * D[6][6] +
F[8][7] * D[6][7] +
1257 F[8][9] * D[6][9] +
F[8][10] * D[6][10] +
1258 F[8][11] * D[6][11] +
F[8][12] * D[6][12]) +
1259 F[9][7] * (
F[8][6] * D[6][7] +
F[8][7] * D[7][7] +
1260 F[8][9] * D[7][9] +
F[8][10] * D[7][10] +
1261 F[8][11] * D[7][11] +
F[8][12] * D[7][12]) +
1262 F[9][8] * (
F[8][6] * D[6][8] +
F[8][7] * D[7][8] +
1263 F[8][9] * D[8][9] +
F[8][10] * D[8][10] +
1264 F[8][11] * D[8][11] +
F[8][12] * D[8][12]) +
1265 G[9][0] *
G[8][0] *
Q[0] +
G[9][1] *
G[8][1] *
Q[1] +
1266 G[9][2] *
G[8][2] *
Q[2]) * Tsq + (
F[9][6] * D[6][8] +
1270 F[9][10] * D[8][10] +
1271 F[8][10] * D[9][10] +
1272 F[9][11] * D[8][11] +
1273 F[8][11] * D[9][11] +
1274 F[9][12] * D[8][12] +
1275 F[8][12] * D[9][12] +
1277 F[8][7] * D[7][9]) * T +
1279 P[8][10] = P[10][8] =
1280 (
F[8][9] * D[9][10] +
F[8][10] * D[10][10] +
1281 F[8][11] * D[10][11] +
F[8][12] * D[10][12] +
1282 F[8][6] * D[6][10] +
F[8][7] * D[7][10]) * T + D[8][10];
1283 P[8][11] = P[11][8] =
1284 (
F[8][9] * D[9][11] +
F[8][10] * D[10][11] +
1285 F[8][11] * D[11][11] +
F[8][12] * D[11][12] +
1286 F[8][6] * D[6][11] +
F[8][7] * D[7][11]) * T + D[8][11];
1287 P[8][12] = P[12][8] =
1288 (
F[8][9] * D[9][12] +
F[8][10] * D[10][12] +
1289 F[8][11] * D[11][12] +
F[8][12] * D[12][12] +
1290 F[8][6] * D[6][12] +
F[8][7] * D[7][12]) * T + D[8][12];
1292 (
Q[0] *
G[9][0] *
G[9][0] +
Q[1] *
G[9][1] *
G[9][1] +
1293 Q[2] *
G[9][2] *
G[9][2] +
F[9][10] * (
F[9][10] * D[10][10] +
1294 F[9][11] * D[10][11] +
1295 F[9][12] * D[10][12] +
1296 F[9][6] * D[6][10] +
1297 F[9][7] * D[7][10] +
1298 F[9][8] * D[8][10]) +
1299 F[9][11] * (
F[9][10] * D[10][11] +
F[9][11] * D[11][11] +
1300 F[9][12] * D[11][12] +
F[9][6] * D[6][11] +
1301 F[9][7] * D[7][11] +
F[9][8] * D[8][11]) +
1302 F[9][12] * (
F[9][10] * D[10][12] +
F[9][11] * D[11][12] +
1303 F[9][12] * D[12][12] +
F[9][6] * D[6][12] +
1304 F[9][7] * D[7][12] +
F[9][8] * D[8][12]) +
1305 F[9][6] * (
F[9][6] * D[6][6] +
F[9][7] * D[6][7] +
1306 F[9][8] * D[6][8] +
F[9][10] * D[6][10] +
1307 F[9][11] * D[6][11] +
F[9][12] * D[6][12]) +
1308 F[9][7] * (
F[9][6] * D[6][7] +
F[9][7] * D[7][7] +
1309 F[9][8] * D[7][8] +
F[9][10] * D[7][10] +
1310 F[9][11] * D[7][11] +
F[9][12] * D[7][12]) +
1311 F[9][8] * (
F[9][6] * D[6][8] +
F[9][7] * D[7][8] +
1312 F[9][8] * D[8][8] +
F[9][10] * D[8][10] +
1313 F[9][11] * D[8][11] +
F[9][12] * D[8][12])) * Tsq +
1314 (2 *
F[9][10] * D[9][10] + 2 *
F[9][11] * D[9][11] +
1315 2 *
F[9][12] * D[9][12] + 2 *
F[9][6] * D[6][9] +
1316 2 *
F[9][7] * D[7][9] + 2 *
F[9][8] * D[8][9]) * T + D[9][9];
1317 P[9][10] = P[10][9] =
1318 (
F[9][10] * D[10][10] +
F[9][11] * D[10][11] +
1319 F[9][12] * D[10][12] +
F[9][6] * D[6][10] +
1320 F[9][7] * D[7][10] +
F[9][8] * D[8][10]) * T + D[9][10];
1321 P[9][11] = P[11][9] =
1322 (
F[9][10] * D[10][11] +
F[9][11] * D[11][11] +
1323 F[9][12] * D[11][12] +
F[9][6] * D[6][11] +
1324 F[9][7] * D[7][11] +
F[9][8] * D[8][11]) * T + D[9][11];
1325 P[9][12] = P[12][9] =
1326 (
F[9][10] * D[10][12] +
F[9][11] * D[11][12] +
1327 F[9][12] * D[12][12] +
F[9][6] * D[6][12] +
1328 F[9][7] * D[7][12] +
F[9][8] * D[8][12]) * T + D[9][12];
1329 P[10][10] =
Q[6] * Tsq + D[10][10];
1330 P[10][11] = P[11][10] = D[10][11];
1331 P[10][12] = P[12][10] = D[10][12];
1332 P[11][11] =
Q[7] * Tsq + D[11][11];
1333 P[11][12] = P[12][11] = D[11][12];
1334 P[12][12] =
Q[8] * Tsq + D[12][12];
1355 float Y[NUMV],
float P[NUMX][NUMX],
float X[NUMX],
1356 uint16_t SensorsUsed)
1358 float HP[
NUMX], HPHR, Error;
1361 for (m = 0; m <
NUMV; m++) {
1363 if (SensorsUsed & (0x01 << m)) {
1365 for (j = 0; j <
NUMX; j++) {
1367 for (k = 0; k <
NUMX; k++)
1368 HP[j] +=
H[m][k] *
P[k][j];
1371 for (k = 0; k <
NUMX; k++)
1372 HPHR += HP[k] *
H[m][k];
1374 for (k = 0; k <
NUMX; k++)
1375 K[k][m] = HP[k] / HPHR;
1377 for (i = 0; i <
NUMX; i++) {
1378 for (j = i; j <
NUMX; j++)
1380 P[i][j] -
K[i][m] * HP[j];
1383 Error = Z[m] - Y[m];
1384 for (i = 0; i <
NUMX; i++)
1385 X[i] =
X[i] +
K[i][m] * Error;
1405 for (i = 0; i <
NUMX; i++)
1409 for (i = 0; i <
NUMX; i++)
1410 X[i] = Xlast[i] + dT2 *
K1[i];
1412 for (i = 0; i <
NUMX; i++)
1413 X[i] = Xlast[i] + dT2 * K2[i];
1415 for (i = 0; i <
NUMX; i++)
1416 X[i] = Xlast[i] + dT * K3[i];
1420 for (i = 0; i <
NUMX; i++)
1422 Xlast[i] + dT * (
K1[i] + 2.0
f * K2[i] + 2.0
f * K3[i] +
1447 float ax, ay, az, wx, wy, wz, q0, q1, q2, q3;
1468 (q0 * q0 + q1 * q1 - q2 * q2 - q3 * q3) * ax + 2.0
f * (q1 * q2 -
1470 ay + 2.0f * (q1 * q3 + q0 * q2) * az;
1472 2.0f * (q1 * q2 + q0 * q3) * ax + (q0 * q0 - q1 * q1 + q2 * q2 -
1473 q3 * q3) * ay + 2 * (q2 * q3 -
1477 2.0f * (q1 * q3 - q0 * q2) * ax + 2 * (q2 * q3 + q0 * q1) * ay +
1478 (q0 * q0 - q1 * q1 - q2 * q2 + q3 * q3) * az + GRAVITY;
1481 Xdot[6] = (-q1 * wx - q2 * wy - q3 * wz) / 2.0
f;
1482 Xdot[7] = (q0 * wx - q3 * wy + q2 * wz) / 2.0
f;
1483 Xdot[8] = (q3 * wx + q0 * wy - q1 * wz) / 2.0
f;
1484 Xdot[9] = (-q2 * wx + q1 * wy + q0 * wz) / 2.0
f;
1487 Xdot[10] = Xdot[11] = Xdot[12] = 0;
1491 float G[NUMX][NUMW])
1493 float ax, ay, az, wx, wy, wz, q0, q1, q2, q3;
1508 F[0][3] =
F[1][4] =
F[2][5] = 1.0f;
1511 F[3][6] = 2.0f * (q0 * ax - q3 * ay + q2 * az);
1512 F[3][7] = 2.0f * (q1 * ax + q2 * ay + q3 * az);
1513 F[3][8] = 2.0f * (-q2 * ax + q1 * ay + q0 * az);
1514 F[3][9] = 2.0f * (-q3 * ax - q0 * ay + q1 * az);
1515 F[4][6] = 2.0f * (q3 * ax + q0 * ay - q1 * az);
1516 F[4][7] = 2.0f * (q2 * ax - q1 * ay - q0 * az);
1517 F[4][8] = 2.0f * (q1 * ax + q2 * ay + q3 * az);
1518 F[4][9] = 2.0f * (q0 * ax - q3 * ay + q2 * az);
1519 F[5][6] = 2.0f * (-q2 * ax + q1 * ay + q0 * az);
1520 F[5][7] = 2.0f * (q3 * ax + q0 * ay - q1 * az);
1521 F[5][8] = 2.0f * (-q0 * ax + q3 * ay - q2 * az);
1522 F[5][9] = 2.0f * (q1 * ax + q2 * ay + q3 * az);
1531 F[6][7] = -wx / 2.0f;
1532 F[6][8] = -wy / 2.0f;
1533 F[6][9] = -wz / 2.0f;
1534 F[7][6] = wx / 2.0f;
1536 F[7][8] = wz / 2.0f;
1537 F[7][9] = -wy / 2.0f;
1538 F[8][6] = wy / 2.0f;
1539 F[8][7] = -wz / 2.0f;
1541 F[8][9] = wx / 2.0f;
1542 F[9][6] = wz / 2.0f;
1543 F[9][7] = wy / 2.0f;
1544 F[9][8] = -wx / 2.0f;
1548 F[6][10] = q1 / 2.0f;
1549 F[6][11] = q2 / 2.0f;
1550 F[6][12] = q3 / 2.0f;
1551 F[7][10] = -q0 / 2.0f;
1552 F[7][11] = q3 / 2.0f;
1553 F[7][12] = -q2 / 2.0f;
1554 F[8][10] = -q3 / 2.0f;
1555 F[8][11] = -q0 / 2.0f;
1556 F[8][12] = q1 / 2.0f;
1557 F[9][10] = q2 / 2.0f;
1558 F[9][11] = -q1 / 2.0f;
1559 F[9][12] = -q0 / 2.0f;
1562 G[3][3] = -q0 * q0 - q1 * q1 + q2 * q2 + q3 * q3;
1563 G[3][4] = 2.0f * (-q1 * q2 + q0 * q3);
1564 G[3][5] = -2.0f * (q1 * q3 + q0 * q2);
1565 G[4][3] = -2.0f * (q1 * q2 + q0 * q3);
1566 G[4][4] = -q0 * q0 + q1 * q1 - q2 * q2 + q3 * q3;
1567 G[4][5] = 2.0f * (-q2 * q3 + q0 * q1);
1568 G[5][3] = 2.0f * (-q1 * q3 + q0 * q2);
1569 G[5][4] = -2.0f * (q2 * q3 + q0 * q1);
1570 G[5][5] = -q0 * q0 + q1 * q1 + q2 * q2 - q3 * q3;
1573 G[6][0] = q1 / 2.0f;
1574 G[6][1] = q2 / 2.0f;
1575 G[6][2] = q3 / 2.0f;
1576 G[7][0] = -q0 / 2.0f;
1577 G[7][1] = q3 / 2.0f;
1578 G[7][2] = -q2 / 2.0f;
1579 G[8][0] = -q3 / 2.0f;
1580 G[8][1] = -q0 / 2.0f;
1581 G[8][2] = q1 / 2.0f;
1582 G[9][0] = q2 / 2.0f;
1583 G[9][1] = -q1 / 2.0f;
1584 G[9][2] = -q0 / 2.0f;
1589 float q0, q1, q2, q3;
1606 (q0 * q0 + q1 * q1 - q2 * q2 - q3 * q3) * Be[0] +
1607 2.0
f * (q1 * q2 + q0 * q3) * Be[1] + 2.0f * (q1 * q3 -
1610 2.0f * (q1 * q2 - q0 * q3) * Be[0] + (q0 * q0 - q1 * q1 +
1611 q2 * q2 - q3 * q3) * Be[1] +
1612 2.0f * (q2 * q3 + q0 * q1) * Be[2];
1614 2.0f * (q1 * q3 + q0 * q2) * Be[0] + 2.0
f * (q2 * q3 -
1616 (q0 * q0 - q1 * q1 - q2 * q2 + q3 * q3) * Be[2];
1619 Y[9] = -1.0f *
X[2];
1624 float q0, q1, q2, q3;
1632 H[0][0] =
H[1][1] =
H[2][2] = 1.0f;
1634 H[3][3] =
H[4][4] =
H[5][5] = 1.0f;
1637 H[6][6] = 2.0f * (q0 * Be[0] + q3 * Be[1] - q2 * Be[2]);
1638 H[6][7] = 2.0f * (q1 * Be[0] + q2 * Be[1] + q3 * Be[2]);
1639 H[6][8] = 2.0f * (-q2 * Be[0] + q1 * Be[1] - q0 * Be[2]);
1640 H[6][9] = 2.0f * (-q3 * Be[0] + q0 * Be[1] + q1 * Be[2]);
1641 H[7][6] = 2.0f * (-q3 * Be[0] + q0 * Be[1] + q1 * Be[2]);
1642 H[7][7] = 2.0f * (q2 * Be[0] - q1 * Be[1] + q0 * Be[2]);
1643 H[7][8] = 2.0f * (q1 * Be[0] + q2 * Be[1] + q3 * Be[2]);
1644 H[7][9] = 2.0f * (-q0 * Be[0] - q3 * Be[1] + q2 * Be[2]);
1645 H[8][6] = 2.0f * (q2 * Be[0] - q1 * Be[1] + q0 * Be[2]);
1646 H[8][7] = 2.0f * (q3 * Be[0] - q0 * Be[1] - q1 * Be[2]);
1647 H[8][8] = 2.0f * (q0 * Be[0] + q3 * Be[1] - q2 * Be[2]);
1648 H[8][9] = 2.0f * (q1 * Be[0] + q2 * Be[1] + q3 * Be[2]);
void INSGetState(float *pos, float *vel, float *attitude, float *gyro_bias, float *accel_bias)
Get the current state estimate.
Include file of the INSGPS exposed functionality.
void INSSetAccelBias(const float gyro_bias[3])
static float H[NUMV][NUMX]
static void RungeKutta(float X[NUMX], float U[NUMU], float dT)
void INSGetVariance(float *p)
static void StateEq(float X[NUMX], float U[NUMU], float Xdot[NUMX])
void INSSetMagVar(const float scaled_mag_var[3])
static void MeasurementEq(float X[NUMX], float Be[3], float Y[NUMV])
void INSSetPosVelVar(float PosVar, float VelVar, float VertPosVar)
void INSSetGyroBias(const float gyro_bias[3])
static void LinearizeH(float X[NUMX], float Be[3], float H[NUMV][NUMX])
static float T[3]
Scales used in NED transform (local tangent plane approx).
static float accel_bias[3]
void INSStatePrediction(const float gyro_data[3], const float accel_data[3], float dT)
Compute an update of the state estimate.
void INSSetMagNorth(const float B[3])
static float K[NUMX][NUMV]
void INSSetBaroVar(float baro_var)
static void LinearizeFG(float X[NUMX], float U[NUMU], float F[NUMX][NUMX], float G[NUMX][NUMW])
void INSSetState(const float pos[3], const float vel[3], const float q[4], const float gyro_bias[3], const float accel_bias[3])
void INSGPSInit()
Reset the internal state variables and variances.
static float P[NUMX][NUMX]
void INSCorrection(const float mag_data[3], const float Pos[3], const float Vel[3], float BaroAlt, uint16_t SensorsUsed)
Correct the state and covariance estimate based on the sensors that were updated. ...
void INSSetArmed(bool armed)
Set the current flight state.
void INSResetP(const float *PDiag)
static void CovariancePrediction(float F[NUMX][NUMX], float G[NUMX][NUMW], float Q[NUMW], float dT, float P[NUMX][NUMX])
static void SerialUpdate(float H[NUMV][NUMX], float R[NUMV], float Z[NUMV], float Y[NUMV], float P[NUMX][NUMX], float X[NUMX], uint16_t SensorsUsed)
void INSCovariancePrediction(float dT)
Compute an update of the state covariance.
static float F[NUMX][NUMX]
uint16_t ins_get_num_states()
void INSSetGyroVar(const float gyro_var[3])
void INSSetAccelVar(const float accel_var[3])
void INSPosVelReset(const float pos[3], const float vel[3])
static float G[NUMX][NUMW]