dRonin  adbada4
dRonin firmware
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
lqg.c File Reference

LQG Control algorithm. More...

#include "lqg.h"

Go to the source code of this file.

Data Structures

struct  rtkf_state
 
struct  lqr_state
 
struct  lqg_state
 

Macros

#define SOLVER_MIN   100
 
#define SOLVER_MAX   11000
 
#define SOLVER_KF_TORQUE_EPSILON   0.000000001f
 
#define SOLVER_KF_BIAS_EPSILON   0.000000001f
 
#define SOLVER_LQR_RATE_EPSILON   0.00000001f
 
#define SOLVER_LQR_TORQUE_EPSILON   0.000001f
 
#define P00   P[0][0]
 
#define P10   P[1][0]
 
#define P20   P[2][0]
 
#define P01   P[0][1]
 
#define P11   P[1][1]
 
#define P21   P[2][1]
 
#define P02   P[0][2]
 
#define P12   P[1][2]
 
#define P22   P[2][2]
 
#define A00   A[0][0]
 
#define A10   A[1][0]
 
#define A20   A[2][0]
 
#define A01   A[0][1]
 
#define A11   A[1][1]
 
#define A21   A[2][1]
 
#define A02   A[0][2]
 
#define A12   A[1][2]
 
#define A22   A[2][2]
 
#define Q00   Q[0][0]
 
#define Q10   Q[1][0]
 
#define Q20   Q[2][0]
 
#define Q01   Q[0][1]
 
#define Q11   Q[1][1]
 
#define Q21   Q[2][1]
 
#define Q02   Q[0][2]
 
#define Q12   Q[1][2]
 
#define Q22   Q[2][2]
 
#define B0   B[0]
 
#define B1   B[1]
 
#define B2   B[2]
 
#define X0   X[0]
 
#define X1   X[1]
 
#define X2   X[2]
 
#define K0   K[0]
 
#define K1   K[1]
 
#define K2   K[2]
 

Functions

bool rtkf_calculate_covariance_3x3 (float A[3][3], float K[3], float P[3][3], float Q[3][3], float R)
 
void rtkf_stabilize_covariance (rtkf_t rtkf, int iterations)
 
void rtkf_prediction_step (float A[3][3], float B[3], float K[3], float X[3], float signal, float input)
 
void rtkf_predict_axis (rtkf_t rtkf, float signal, float input, float Xout[3])
 
void rtkf_initialize_matrices_int (float A[3][3], float B[3], float beta, float tau, float Ts)
 
rtkf_t rtkf_create (float beta, float tau, float Ts, float R, float q1, float q2, float q3, float biaslim)
 
int rtkf_solver_status (rtkf_t rtkf)
 
bool lqr_calculate_covariance_2x2 (float A[2][2], float B[2], float K[2], float P[2][2], float Q[2][2], float R)
 
void lqr_stabilize_covariance (lqr_t lqr, int iterations)
 
int lqr_solver_status (lqr_t lqr)
 
void lqr_initialize_matrices_int (float A[2][2], float B[2], float beta, float tau, float Ts)
 
lqr_t lqr_create (float beta, float tau, float Ts, float q1, float q2, float r)
 
void lqr_update (lqr_t lqr, float q1, float q2, float r)
 
void lqr_get_gains (lqr_t lqr, float K[2])
 
float lqg_controller (lqg_t lqg, float signal, float setpoint)
 
lqg_t lqg_create (rtkf_t rtkf, lqr_t lqr)
 
void lqg_get_rtkf_state (lqg_t lqg, float *rate, float *torque, float *bias)
 
void lqg_set_x0 (lqg_t lqg, float x0)
 
int lqg_solver_status (lqg_t lqg)
 
rtkf_t lqg_get_rtkf (lqg_t lqg)
 
lqr_t lqg_get_lqr (lqg_t lqg)
 
void lqg_run_covariance (lqg_t lqg, int iter)
 

Detailed Description

LQG Control algorithm.

Author
dRonin, http://dronin.org, Copyright (C) 2018
See Also
The GNU Public License (GPL) Version 3

Definition in file lqg.c.