Paparazzi UAS  v7.0_unstable
Paparazzi is a free software Unmanned Aircraft System.
discrete_ekf_no_north.h File Reference
#include "stdlib.h"
#include "string.h"
#include "math.h"
+ Include dependency graph for discrete_ekf_no_north.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  discrete_ekf_no_north
 

Macros

#define EKF_N   9
 
#define EKF_M   7
 
#define EKF_L   6
 

Functions

void extractPhiGamma (float **inmat, float **phi, float **gamma, int m, int n_a, int n_b)
 
void float_mat_combine (float **a, float **b, float **o, int m, int n_a, int n_b)
 
void c2d (int m, int nA, int nB, float **Fx, float **G, float dt, float **phi, float **gamma)
 
void discrete_ekf_no_north_fsym (float *statein, float *input, float *output)
 
void discrete_ekf_no_north_hsym (float *statein, float *output)
 
void discrete_ekf_no_north_Fx (float *statein, float *input, float **output)
 
void discrete_ekf_no_north_G (float *statein, float **output)
 
void discrete_ekf_no_north_Hx (float *statein, float **output)
 
void discrete_ekf_no_north_new (struct discrete_ekf_no_north *filter)
 
void discrete_ekf_no_north_predict (struct discrete_ekf_no_north *filter, float *U)
 
void discrete_ekf_no_north_update (struct discrete_ekf_no_north *filter, float *y)
 

Detailed Description

Author
Steven van der Helm, Mario Coppola Discrete Extended Kalman Filter for Relative Localization This implementation is was used in van der Helm et al. "On-board Range-based Relative Localization for Micro Aerial Vehicles in indoor Leader-Follower Flight." (2018). Available at https://arxiv.org/pdf/1805.07171.pdf

Definition in file discrete_ekf_no_north.h.


Data Structure Documentation

◆ discrete_ekf_no_north

struct discrete_ekf_no_north

Definition at line 40 of file discrete_ekf_no_north.h.

Data Fields
float dt
float Fx[EKF_N][EKF_N]
float G[EKF_N][EKF_L]
float Gamma[EKF_N][EKF_L]
float H[EKF_M][EKF_N]
float Ht[EKF_N][EKF_M]
float P[EKF_N][EKF_N]
float Phi[EKF_N][EKF_N]
float Q[EKF_N][EKF_N]
float R[EKF_M][EKF_M]
float tmp1[EKF_N][EKF_N]
float tmp2[EKF_N][EKF_N]
float tmp3[EKF_N][EKF_N]
float tmp4[EKF_N][EKF_N]
float X[EKF_N]
float Xp[EKF_N]
float Zp[EKF_M]

Macro Definition Documentation

◆ EKF_L

#define EKF_L   6

Definition at line 38 of file discrete_ekf_no_north.h.

◆ EKF_M

#define EKF_M   7

Definition at line 37 of file discrete_ekf_no_north.h.

◆ EKF_N

#define EKF_N   9

Definition at line 36 of file discrete_ekf_no_north.h.

Function Documentation

◆ c2d()

void c2d ( int  m,
int  nA,
int  nB,
float **  Fx,
float **  G,
float  dt,
float **  phi,
float **  gamma 
)

Definition at line 74 of file discrete_ekf_no_north.c.

References EKF_M, EKF_N, extractPhiGamma(), float_mat_combine(), float_mat_exp(), float_mat_scale(), simple_quad_sim::m, and MAKE_MATRIX_PTR.

Referenced by discrete_ekf_no_north_predict().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ discrete_ekf_no_north_fsym()

void discrete_ekf_no_north_fsym ( float *  statein,
float *  input,
float *  output 
)

Definition at line 101 of file discrete_ekf_no_north.c.

References gam, r1m, r2m, u1, u1dm, u2, u2dm, v1, v1dm, v2, v2dm, x12, and y12.

Referenced by discrete_ekf_no_north_predict().

+ Here is the caller graph for this function:

◆ discrete_ekf_no_north_Fx()

void discrete_ekf_no_north_Fx ( float *  statein,
float *  input,
float **  output 
)

Definition at line 130 of file discrete_ekf_no_north.c.

References EKF_N, float_mat_zero(), gam, MAKE_MATRIX_PTR, r1m, r2m, u2, and v2.

Referenced by discrete_ekf_no_north_predict().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ discrete_ekf_no_north_G()

void discrete_ekf_no_north_G ( float *  statein,
float **  output 
)

Definition at line 150 of file discrete_ekf_no_north.c.

References EKF_L, EKF_N, float_mat_zero(), MAKE_MATRIX_PTR, u1, u2, v1, v2, x12, and y12.

Referenced by discrete_ekf_no_north_predict().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ discrete_ekf_no_north_hsym()

void discrete_ekf_no_north_hsym ( float *  statein,
float *  output 
)

Definition at line 119 of file discrete_ekf_no_north.c.

References u1, u2, v1, v2, x12, y12, z1, and z2.

Referenced by discrete_ekf_no_north_predict().

+ Here is the caller graph for this function:

◆ discrete_ekf_no_north_Hx()

void discrete_ekf_no_north_Hx ( float *  statein,
float **  output 
)

Definition at line 168 of file discrete_ekf_no_north.c.

References EKF_M, EKF_N, float_mat_zero(), MAKE_MATRIX_PTR, x12, y12, z1, and z2.

Referenced by discrete_ekf_no_north_predict().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ discrete_ekf_no_north_new()

void discrete_ekf_no_north_new ( struct discrete_ekf_no_north filter)

Definition at line 192 of file discrete_ekf_no_north.c.

References discrete_ekf_no_north::dt, EKF_M, EKF_N, float_mat_diagonal_scal(), float_vect_zero(), MAKE_MATRIX_PTR, discrete_ekf_no_north::P, discrete_ekf_no_north::Q, discrete_ekf_no_north::R, and discrete_ekf_no_north::X.

Referenced by range_msg_callback().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ discrete_ekf_no_north_predict()

◆ discrete_ekf_no_north_update()

◆ extractPhiGamma()

void extractPhiGamma ( float **  inmat,
float **  phi,
float **  gamma,
int  m,
int  n_a,
int  n_b 
)

Definition at line 37 of file discrete_ekf_no_north.c.

References simple_quad_sim::m.

Referenced by c2d().

+ Here is the caller graph for this function:

◆ float_mat_combine()

void float_mat_combine ( float **  a,
float **  b,
float **  o,
int  m,
int  n_a,
int  n_b 
)

Definition at line 55 of file discrete_ekf_no_north.c.

References b, and simple_quad_sim::m.

Referenced by c2d().

+ Here is the caller graph for this function: