AerialVehicleControl.jl
cont_types.h
Go to the documentation of this file.
1 /*******************************************************************************
2 * Copyright (C) Marcus Greiff 2020
3 *
4 * @file cont_types.h
5 * @author Marcus Greiff
6 * @date June 2020
7 *******************************************************************************/
8 #ifndef __CONT_TYPES_H__
9 #define __CONT_TYPES_H__
10 
11 #include <stdio.h>
12 #include <stdarg.h>
13 #include <stdlib.h>
14 #include <assert.h>
15 #include <string.h>
16 
18 /* Trace level and print options */
19 #ifndef TRACE_LEVEL
20 #define TRACE_LEVEL 5
21 #endif
22 #ifndef TRACE_LINES
23 #define TRACE_LINES 1
24 #endif
25 
26 /***************************************************************************/
29 void dbg_printf(const char *fmt, ...);
30 
31 /***************************************************************************/
36 #define TRACE(level, x) do {\
37 if (level <= TRACE_LEVEL) {\
38 if (1 == TRACE_LINES) {\
39 fprintf(stderr, "\033[0;34m--- %s - %d ---\033[0m\n", __FILE__, __LINE__);\
40 } dbg_printf x;}} while (0)
41 
43 /***************************************************************************/
50 typedef struct matrix_double_s {
51  int numRows;
52  int numCols;
53  double *pData;
55 
56 /***************************************************************************/
59 typedef struct dyn_state_qw_s {
60  double quaternion[4];
61  double omega[3];
63 
64 /***************************************************************************/
67 typedef struct con_state_qw_fsf_s {
68  int status;
69  double thrust;
70  double torque[3];
71  double inertia[9];
72  double gain_kR;
73  double gain_kc;
74  double gain_kw;
75  double gain_eps;
76  double gain_L;
77  double param_a;
78  double param_b;
79  double param_c;
80  double param_d;
81  double dist_Psi;
82  double dist_Gamma;
83  double dist_lyapunov;
85 
86 /***************************************************************************/
89 typedef struct con_state_qw_fof_s {
90  int status;
91  double torque[3];
92  double inertia[9];
93  double invinertia[9];
94  double gain_Kw[9];
95  double gain_ki[3];
96  double gain_Cw[9];
97  double gain_cw;
98  double gain_cR;
99  double param_a;
100  double param_b;
101  double param_c;
102  double param_d;
103  double measuredGyrorates[3];
105  double globalDirections[9];
107 
108 /***************************************************************************/
111 typedef struct ref_state_qw_s {
112  double quaternion[4];
113  double omega[3];
114  double alpha[3];
115  double thrust;
117 
118 /***************************************************************************/
123 void matrix_print( matrix_double_t *mat, char * variableName);
124 
125 /***************************************************************************/
133 double matrix_get( matrix_double_t *mat, int row, int column );
134 
135 /***************************************************************************/
143 void matrix_set( matrix_double_t *mat, int row, int column, double value );
144 
145 /***************************************************************************/
149 void matrix_zero( matrix_double_t *matrix );
150 
151 /***************************************************************************/
155 void matrix_identity( matrix_double_t *matrix );
156 
157 /***************************************************************************/
164 void matrix_allocate( matrix_double_t *matrix, int numRows, int numCols );
165 
166 /***************************************************************************/
174 void matrix_define( matrix_double_t *matrix, int numRows, int numCols, double *data );
175 
176 /***************************************************************************/
182 void matrix_copy(matrix_double_t *Amat, matrix_double_t *Bmat);
183 
184 #endif /* __CONT_TYPES_H__ */
con_state_qw_fsf_s::status
int status
Definition: cont_types.h:68
matrix_double_s::pData
double * pData
Definition: cont_types.h:59
con_state_qw_fof_s::measuredDirections
double measuredDirections[9]
Definition: cont_types.h:104
con_state_qw_fof_s::param_c
double param_c
Definition: cont_types.h:101
con_state_qw_fsf_s::torque
double torque[3]
Definition: cont_types.h:70
con_state_qw_fsf_s::gain_kc
double gain_kc
Definition: cont_types.h:73
matrix_allocate
void matrix_allocate(matrix_double_t *matrix, int numRows, int numCols)
Allocate memory for a matrix struct of given dimensions.
Definition: cont_types.c:65
con_state_qw_fof_s::gain_Cw
double gain_Cw[9]
Definition: cont_types.h:96
ref_state_qw_s::alpha
double alpha[3]
Definition: cont_types.h:114
ref_state_qw_s::omega
double omega[3]
Definition: cont_types.h:113
matrix_double_s::numRows
int numRows
Definition: cont_types.h:57
ref_state_qw_s::thrust
double thrust
Definition: cont_types.h:115
matrix_zero
void matrix_zero(matrix_double_t *matrix)
Set all antries of a matrix to zero.
Definition: cont_types.c:49
con_state_qw_fof_s::gain_cR
double gain_cR
Definition: cont_types.h:98
con_state_qw_fof_t
struct con_state_qw_fof_s con_state_qw_fof_t
Complete state of the attitude FOF on SO(3) or SU(2)
ref_state_qw_t
struct ref_state_qw_s ref_state_qw_t
Reference signal structure for the attitude FSF on S(3) or SU(2)
con_state_qw_fof_s::param_b
double param_b
Definition: cont_types.h:100
con_state_qw_fsf_s::gain_L
double gain_L
Definition: cont_types.h:76
matrix_double_s
Matrix object used for all matrix manipulation.
Definition: cont_types.h:50
dyn_state_qw_t
struct dyn_state_qw_s dyn_state_qw_t
Dynamical states, assumed known in the attitude FSF on SO(3) or SU(2)
dyn_state_qw_s::omega
double omega[3]
Definition: cont_types.h:61
con_state_qw_fsf_s::gain_kw
double gain_kw
Definition: cont_types.h:74
con_state_qw_fsf_s::param_c
double param_c
Definition: cont_types.h:79
con_state_qw_fof_s::gain_ki
double gain_ki[3]
Definition: cont_types.h:95
matrix_identity
void matrix_identity(matrix_double_t *matrix)
Set a square matrix to the identity matrix.
Definition: cont_types.c:59
ref_state_qw_s
Reference signal structure for the attitude FSF on S(3) or SU(2)
Definition: cont_types.h:111
matrix_double_s::numCols
int numCols
Definition: cont_types.h:58
con_state_qw_fsf_s::param_b
double param_b
Definition: cont_types.h:78
con_state_qw_fsf_s
Complete state of the attitude FSF on SO(3) or SU(2)
Definition: cont_types.h:67
con_state_qw_fsf_s::dist_Psi
double dist_Psi
Definition: cont_types.h:81
matrix_set
void matrix_set(matrix_double_t *mat, int row, int column, double value)
Set an entry of a matrix (irrespective of the used memory layout)
Definition: cont_types.c:40
matrix_copy
void matrix_copy(matrix_double_t *Amat, matrix_double_t *Bmat)
Copy one metrix into another Bmat <– Amat, overwriting Bmat.
Definition: cont_types.c:54
con_state_qw_fsf_s::gain_eps
double gain_eps
Definition: cont_types.h:75
matrix_define
void matrix_define(matrix_double_t *matrix, int numRows, int numCols, double *data)
Define a matrix to use already allocated memory.
Definition: cont_types.c:75
con_state_qw_fof_s
Complete state of the attitude FOF on SO(3) or SU(2)
Definition: cont_types.h:89
dyn_state_qw_s
Dynamical states, assumed known in the attitude FSF on SO(3) or SU(2)
Definition: cont_types.h:59
dyn_state_qw_s::quaternion
double quaternion[4]
Definition: cont_types.h:60
con_state_qw_fsf_s::param_d
double param_d
Definition: cont_types.h:80
matrix_double_t
struct matrix_double_s matrix_double_t
Matrix object used for all matrix manipulation.
con_state_qw_fsf_s::thrust
double thrust
Definition: cont_types.h:69
con_state_qw_fsf_s::param_a
double param_a
Definition: cont_types.h:77
con_state_qw_fof_s::measuredGyrorates
double measuredGyrorates[3]
Definition: cont_types.h:103
con_state_qw_fsf_s::dist_Gamma
double dist_Gamma
Definition: cont_types.h:82
con_state_qw_fof_s::gain_cw
double gain_cw
Definition: cont_types.h:97
con_state_qw_fof_s::invinertia
double invinertia[9]
Definition: cont_types.h:93
con_state_qw_fsf_s::gain_kR
double gain_kR
Definition: cont_types.h:72
con_state_qw_fof_s::globalDirections
double globalDirections[9]
Definition: cont_types.h:105
con_state_qw_fsf_s::inertia
double inertia[9]
Definition: cont_types.h:71
con_state_qw_fof_s::param_a
double param_a
Definition: cont_types.h:99
con_state_qw_fof_s::torque
double torque[3]
Definition: cont_types.h:91
matrix_print
void matrix_print(matrix_double_t *mat, char *variableName)
Print a matrix on a Matlab/Julia format.
Definition: cont_types.c:19
con_state_qw_fof_s::inertia
double inertia[9]
Definition: cont_types.h:92
con_state_qw_fof_s::param_d
double param_d
Definition: cont_types.h:102
con_state_qw_fof_s::gain_Kw
double gain_Kw[9]
Definition: cont_types.h:94
con_state_qw_fof_s::status
int status
Definition: cont_types.h:90
con_state_qw_fsf_t
struct con_state_qw_fsf_s con_state_qw_fsf_t
Complete state of the attitude FSF on SO(3) or SU(2)
con_state_qw_fsf_s::dist_lyapunov
double dist_lyapunov
Definition: cont_types.h:83
ref_state_qw_s::quaternion
double quaternion[4]
Definition: cont_types.h:112
matrix_get
double matrix_get(matrix_double_t *mat, int row, int column)
Get an entry of a matrix (irrespective of the used memory layout)
Definition: cont_types.c:32