Paparazzi UAS  v7.0_unstable
Paparazzi is a free software Unmanned Aircraft System.
stabilization_indi_simple.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) Ewoud Smeur <ewoud_smeur@msn.com>
3  * MAVLab Delft University of Technology
4  *
5  * This control algorithm is Incremental Nonlinear Dynamic Inversion (INDI)
6  *
7  * This is a simplified implementation of the (soon to be) publication in the
8  * journal of Control Guidance and Dynamics: Adaptive Incremental Nonlinear
9  * Dynamic Inversion for Attitude Control of Micro Aerial Vehicles
10  *
11  * This file is part of paparazzi.
12  *
13  * paparazzi is free software; you can redistribute it and/or modify
14  * it under the terms of the GNU General Public License as published by
15  * the Free Software Foundation; either version 2, or (at your option)
16  * any later version.
17  *
18  * paparazzi is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21  * GNU General Public License for more details.
22  *
23  * You should have received a copy of the GNU General Public License
24  * along with paparazzi; see the file COPYING. If not, write to
25  * the Free Software Foundation, 59 Temple Place - Suite 330,
26  * Boston, MA 02111-1307, USA.
27  */
28 
34 #ifndef STABILIZATION_INDI_SIMPLE_H
35 #define STABILIZATION_INDI_SIMPLE_H
36 
40 
41 extern struct Int32Quat stab_att_sp_quat;
42 extern struct Int32Eulers stab_att_sp_euler;
43 
44 struct Indi_gains {
45  struct FloatRates att;
46  struct FloatRates rate;
47 };
48 
52  float rate_d[3];
53  float rate_dd[3];
54  float u_d[3];
55  float u_dd[3];
56  struct FloatRates g1;
57  float g2;
58  float mu;
59 };
60 
61 struct IndiVariables {
62  float cutoff_r;
64  struct FloatRates du;
65  struct FloatRates u_in;
66  struct FloatRates u_act_dyn;
67  float rate_d[3];
68 
71  struct FloatRates g1;
72  float g2;
73  struct FloatRates act_dyn;
74 
75  struct Indi_gains gains;
76 
77  bool adaptive;
78  float max_rate;
80  struct IndiEstimation est;
81 };
82 
83 
84 extern struct IndiVariables indi;
85 extern void stabilization_indi_init(void);
86 extern void stabilization_indi_enter(void);
88 extern void stabilization_indi_set_rpy_setpoint_i(struct Int32Eulers *rpy);
89 extern void stabilization_indi_set_quat_setpoint_i(struct Int32Quat *quat);
92 extern void stabilization_indi_rate_run(struct FloatRates rates_sp, bool in_flight);
93 extern void stabilization_indi_attitude_run(struct Int32Quat quat_sp, bool in_flight);
94 extern void stabilization_indi_read_rc(bool in_flight, bool in_carefree, bool coordinated_turn);
95 extern void stabilization_indi_simple_reset_r_filter_cutoff(float new_cutoff);
96 
97 #endif /* STABILIZATION_INDI_SIMPLE_H */
98 
angular rates
euler angles
Rotation quaternion.
Simple first order low pass filter with bilinear transform.
Second order low pass filter structure.
General stabilization interface for rotorcrafts.
Rotorcraft attitude reference generation.
float max_rate
Maximum rate in rate control in rad/s.
struct Indi_gains gains
void stabilization_indi_read_rc(bool in_flight, bool in_carefree, bool coordinated_turn)
This function reads rc commands.
void stabilization_indi_enter(void)
Function that resets important values upon engaging INDI.
Butterworth2LowPass rate[3]
struct FloatRates act_dyn
struct IndiEstimation est
Estimation parameters for adaptive INDI.
void stabilization_indi_set_failsafe_setpoint(void)
Function that calculates the failsafe setpoint.
void stabilization_indi_attitude_run(struct Int32Quat quat_sp, bool in_flight)
runs stabilization indi
Butterworth2LowPass u[3]
void stabilization_indi_set_earth_cmd_i(struct Int32Vect2 *cmd, int32_t heading)
Set attitude setpoint from command in earth axes.
void stabilization_indi_simple_reset_r_filter_cutoff(float new_cutoff)
struct FloatRates du
struct Int32Eulers stab_att_sp_euler
with INT32_ANGLE_FRAC
Butterworth2LowPass u[3]
struct FloatRates u_act_dyn
struct FloatRates u_in
struct FloatRates rate
struct FloatRates angular_accel_ref
struct FloatRates att
void stabilization_indi_init(void)
Function that initializes important values upon engaging INDI.
void stabilization_indi_set_stab_sp(struct StabilizationSetpoint *sp)
Set attitude setpoint from stabilization setpoint struct.
struct FloatRates g1
void stabilization_indi_set_rpy_setpoint_i(struct Int32Eulers *rpy)
Set attitude quaternion setpoint from rpy.
bool adaptive
Enable adataptive estimation.
struct IndiVariables indi
void stabilization_indi_rate_run(struct FloatRates rates_sp, bool in_flight)
Does the INDI calculations.
struct Int32Quat stab_att_sp_quat
with INT32_QUAT_FRAC
struct FloatRates g1
float attitude_max_yaw_rate
Maximum yaw rate in atttiude control in rad/s.
void stabilization_indi_set_quat_setpoint_i(struct Int32Quat *quat)
Butterworth2LowPass rate[3]
Stabilization setpoint.
Definition: stabilization.h:42
int int32_t
Typedef defining 32 bit int type.
Definition: vl53l1_types.h:83
float heading
Definition: wedgebug.c:258