|
Paparazzi UAS v7.1_unstable
Paparazzi is a free software Unmanned Aircraft System.
|
#include "firmwares/rotorcraft/stabilization.h"#include "firmwares/rotorcraft/stabilization/stabilization_attitude_common_int.h"#include "firmwares/rotorcraft/stabilization/stabilization_attitude_ref_quat_int.h"#include "generated/airframe.h"#include "filters/low_pass_filter.h"#include "filters/notch_filter_float.h"
Include dependency graph for oneloop_andi.h:
This graph shows which files directly or indirectly include this file:Go to the source code of this file.
Data Structures | |
| struct | guidance_indi_hybrid_params |
| struct | OneloopGuidanceRef |
| struct | OneloopGuidanceState |
| struct | OneloopStabilizationRef |
| struct | OneloopStabilizationState |
| struct | OneloopGeneral |
| struct | PolePlacement |
| struct | Gains3rdOrder |
| struct | Gains2ndOrder |
| struct | LP_t |
| struct | Oneloop_LP_t |
| struct | Oneloop_DynFilt_t |
| union | LP_t.meas_filt |
Macros | |
| #define | ANDI_NUM_ACT COMMANDS_NB_REAL |
| #define | ANDI_NUM_VIRTUAL_ACT COMMANDS_NB_VIRTUAL |
| #define | ANDI_NUM_VIRTUAL_ACT 2 |
| #define | ANDI_NUM_ACT_TOT (ANDI_NUM_ACT + ANDI_NUM_VIRTUAL_ACT) |
| #define | ANDI_OUTPUTS 6 |
| #define | ANDI_G_SCALING 1000.0f |
| #define | CTRL_ANDI 0 |
| Control types. | |
| #define | CTRL_INDI 1 |
Enumerations | |
| enum | FilterType { LOWPASS_1 , BUTTERWORTH_2 , BUTTERWORTH_4 , NOTCH } |
Functions | |
| void | oneloop_andi_init (void) |
| Init function of Oneloop ANDI controller | |
| void | oneloop_andi_enter (bool half_loop_sp, int ctrl_type) |
| Function that resets important values upon engaging Oneloop ANDI. | |
| void | oneloop_andi_set_failsafe_setpoint (void) |
| void | oneloop_andi_run (bool in_flight, bool half_loop, struct FloatVect3 PSA_des, int rm_order_h, int rm_order_v) |
| Main function that runs the controller and performs control allocation. | |
| void | oneloop_andi_RM (bool half_loop, struct FloatVect3 PSA_des, int rm_order_h, int rm_order_v, bool in_flight_oneloop) |
| Function to generate the reference signals for the oneloop controller. | |
| void | oneloop_andi_read_rc (bool in_flight, bool in_carefree, bool coordinated_turn) |
| void | oneloop_from_nav (bool in_flight) |
| Function that maps navigation inputs to the oneloop controller for the generated autopilot. | |
| void | guidance_set_min_max_airspeed (float min_airspeed, float max_airspeed) |
| void | guidance_set_max_bank_angle (float max_bank) |
| Guidance limit setters called by rotwing_state (also implemented by guidance_indi_hybrid). | |
| void | guidance_set_max_climb_speed (float max_climb_speed_quad, float max_climb_speed_fwd) |
| void | guidance_set_max_descend_speed (float max_descend_speed_quad, float max_descend_speed_fwd) |
Definition in file oneloop_andi.h.
| struct guidance_indi_hybrid_params |
Definition at line 80 of file guidance_indi_hybrid.h.
| Data Fields | ||
|---|---|---|
| float | climb_vspeed_fwd | |
| float | climb_vspeed_quad | |
| float | descend_vspeed_fwd | |
| float | descend_vspeed_quad | |
| float | heading_bank_gain | |
| float | liftd_asq | |
| float | liftd_p50 | |
| float | liftd_p80 | |
| float | max_airspeed | |
| float | min_airspeed | |
| float | pos_gain | |
| float | pos_gainz | |
| float | speed_gain | |
| float | speed_gainz | |
| float | stall_protect_gain | |
| struct OneloopGuidanceRef |
| struct OneloopGuidanceState |
Definition at line 116 of file oneloop_andi.h.
| Data Fields | ||
|---|---|---|
| float | acc[3] | |
| float | pos[3] | |
| float | vel[3] | |
| struct OneloopStabilizationRef |
| struct OneloopStabilizationState |
Definition at line 127 of file oneloop_andi.h.
| Data Fields | ||
|---|---|---|
| float | att[3] | |
| float | att_2d[3] | |
| float | att_d[3] | |
| struct OneloopGeneral |
Definition at line 132 of file oneloop_andi.h.
Collaboration diagram for OneloopGeneral:| Data Fields | ||
|---|---|---|
| int | ctrl_type | |
| struct OneloopGuidanceRef | gui_ref | |
| struct OneloopGuidanceState | gui_state | |
| bool | half_loop | |
| struct OneloopPushnB | push_nB | |
| struct OneloopStabilizationnBState | sta_nB_state | |
| struct OneloopStabilizationRef | sta_ref | |
| struct OneloopStabilizationState | sta_state | |
| struct PolePlacement |
Definition at line 143 of file oneloop_andi.h.
| Data Fields | ||
|---|---|---|
| float | omega_n | |
| float | p3 | |
| float | zeta | |
| struct Gains3rdOrder |
Definition at line 148 of file oneloop_andi.h.
| Data Fields | ||
|---|---|---|
| float | k1[3] | |
| float | k2[3] | |
| float | k3[3] | |
| struct Gains2ndOrder |
Definition at line 153 of file oneloop_andi.h.
| Data Fields | ||
|---|---|---|
| float | k2 | |
| float | k3 | |
| struct LP_t |
Definition at line 184 of file oneloop_andi.h.
| Data Fields | ||
|---|---|---|
| float | bandwidth | |
| enum FilterType | filter_type | |
| float | freq | |
| float | freq_set | |
| float | meas | |
| union LP_t | meas_filt | |
| union LP_t.meas_filt | meas_filt | |
| float | meas_prev | |
| float | out | |
| float | tau | |
| struct Oneloop_LP_t |
| struct Oneloop_DynFilt_t |
| union LP_t.meas_filt |
Definition at line 267 of file oneloop_nB.h.
| Data Fields | ||
|---|---|---|
| Butterworth2LowPass | bw2 | |
| Butterworth2LowPass | bw2 | |
| Butterworth4LowPass | bw4 | |
| Butterworth4LowPass | bw4 | |
| struct FirstOrderLowPass | lp1 | |
| struct FirstOrderLowPass | lp1 | |
| struct SecondOrderNotchFilter | notch | |
| struct SecondOrderNotchFilter | notch | |
| #define ANDI_G_SCALING 1000.0f |
Definition at line 59 of file oneloop_andi.h.
| #define ANDI_NUM_ACT COMMANDS_NB_REAL |
Definition at line 39 of file oneloop_andi.h.
| #define ANDI_NUM_ACT_TOT (ANDI_NUM_ACT + ANDI_NUM_VIRTUAL_ACT) |
Definition at line 53 of file oneloop_andi.h.
| #define ANDI_NUM_VIRTUAL_ACT COMMANDS_NB_VIRTUAL |
Definition at line 43 of file oneloop_andi.h.
| #define ANDI_NUM_VIRTUAL_ACT 2 |
Definition at line 43 of file oneloop_andi.h.
| #define ANDI_OUTPUTS 6 |
Definition at line 57 of file oneloop_andi.h.
| #define CTRL_ANDI 0 |
Control types.
Definition at line 62 of file oneloop_andi.h.
| #define CTRL_INDI 1 |
Definition at line 63 of file oneloop_andi.h.
| Enumerator | |
|---|---|
| LOWPASS_1 | |
| BUTTERWORTH_2 | |
| BUTTERWORTH_4 | |
| NOTCH | |
Definition at line 178 of file oneloop_andi.h.
Guidance limit setters called by rotwing_state (also implemented by guidance_indi_hybrid).
The one loop controller uses its own limits, so these are no-ops here.
Definition at line 388 of file guidance_indi_hybrid.c.
Definition at line 392 of file guidance_indi_hybrid.c.
|
extern |
Definition at line 397 of file guidance_indi_hybrid.c.
Definition at line 383 of file guidance_indi_hybrid.c.
Function that resets important values upon engaging Oneloop ANDI.
FIXME: Ideally we should distinguish between the "stabilization" and "guidance" needs because it is unlikely to switch stabilization in flight, and there are multiple modes that use (the same) stabilization. Resetting the controller is not so nice when you are flying.
Definition at line 1680 of file oneloop_andi.c.
References ANDI_OUTPUTS, bwls_1l, calc_normalization(), OneloopGeneral::ctrl_type, EFF_MAT_G, ele_min, eulers_zxy, foo, G1G2_oneloop(), OneloopGeneral::half_loop, init_controller_gains(), multiple_chirp_run, oneloop_andi, FloatEulers::psi, psi_des_deg, psi_des_rad, and reinit_controller().
Referenced by oneloop_from_nav(), and stabilization_attitude_enter().
Here is the call graph for this function:
Here is the caller graph for this function:Init function of Oneloop ANDI controller
Definition at line 1621 of file oneloop_andi.c.
References act_dynamics, actuator_state_1l, andi_du, ANDI_NUM_ACT_TOT, ANDI_OUTPUTS, andi_u, andi_u_n, OneloopStabilizationRef::att, OneloopStabilizationRef::att_2d, OneloopStabilizationRef::att_3d, OneloopStabilizationRef::att_d, bwls_1l, calc_normalization(), CTRL_ANDI, OneloopGeneral::ctrl_type, DefaultPeriodic, dynFilter_init(), EFF_MAT_G, eulers_zxy_des, float_vect_zero(), foo, G1G2_oneloop(), OneloopGeneral::half_loop, init_all_LP(), init_controller_gains(), init_filter(), init_poles(), mu_mL, mu_mR, nav_target, nav_target_new, nu, nu_n, oneloop_andi, FloatEulers::phi, positive_non_zero(), FloatEulers::psi, register_periodic_telemetry(), send_eff_mat_guid_oneloop_andi(), send_eff_mat_stab_oneloop_andi(), send_guidance_oneloop_andi(), send_oneloop_andi(), send_oneloop_debug(), send_wls_u_oneloop(), send_wls_v_oneloop(), OneloopGeneral::sta_ref, and FloatEulers::theta.
Here is the call graph for this function:
|
extern |
Function to generate the reference signals for the oneloop controller.
| half_loop | In half-loop mode the controller is used for stabilization only |
| PSA_des | Desired position/speed/acceleration |
| rm_order_h | Order of the reference model for horizontal guidance |
| rm_order_v | Order of the reference model for vertical guidance |
Definition at line 1724 of file oneloop_andi.c.
References A_chirp, a_thrust, OneloopGuidanceRef::acc, OneloopGuidanceState::acc, act_dyn_ctrl, ANDI_NUM_ACT, OneloopStabilizationRef::att, OneloopStabilizationRef::att_2d, OneloopStabilizationState::att_2d, OneloopStabilizationRef::att_3d, OneloopStabilizationRef::att_d, OneloopStabilizationState::att_d, chirp_axis, chirp_call(), chirp_first_call, chirp_n_counter, chirp_n_repeat, chirp_on, CTRL_ANDI, OneloopGeneral::ctrl_type, delay_counter, drop_yaw, dt_1l, EFF_MAT_RW, eulers_zxy, eulers_zxy_des, f0_chirp, f1_chirp, firing_counter, float_vect_copy(), float_vect_zero(), foo, OneloopGeneral::gui_ref, OneloopGeneral::gui_state, heading_manual, OneloopGuidanceRef::jer, Gains3rdOrder::k1, Gains3rdOrder::k2, Gains3rdOrder::k3, k_att_rm, k_pos_rm, max_a_nav, max_j_lin, MAX_PPRZ, max_r, max_v_nav, max_v_nav_v, multiple_chirp_run, nav_target, nav_target_new, oneloop_andi, ONELOOP_ANDI_MAX_PHI, ONELOOP_ANDI_MAX_THETA, oneloop_andi_model, oneloop_andi_sideslip(), p_ref_0, FloatEulers::phi, phi_vec, OneloopGuidanceRef::pos, OneloopGuidanceState::pos, FloatEulers::psi, psi_des_deg, psi_des_rad, psi_vec, radio_control_get(), RADIO_PITCH, RADIO_ROLL, RADIO_THROTTLE, RADIO_YAW, reshape_wind(), rm_1st_pos(), rm_2nd_pos(), rm_3rd_attitude(), rm_3rd_pos(), RW_aD, sta_bounds, OneloopGeneral::sta_ref, OneloopGeneral::sta_state, t_0_chirp, t_chirp, FloatEulers::theta, time_elapsed_chirp, OneloopGuidanceRef::vel, OneloopGuidanceState::vel, WLS_one_p, WLS_t::Wv, Wv_backup, and yaw_stick_in_auto.
Referenced by oneloop_andi_run().
Here is the call graph for this function:
Here is the caller graph for this function:
|
extern |
Main function that runs the controller and performs control allocation.
| half_loop | In half-loop mode the controller is used for stabilization only |
| in_flight | The drone is in flight |
| PSA_des | Desired position/speed/acceleration |
| rm_order_h | Order of the reference model for horizontal guidance |
| rm_order_v | Order of the reference model for vertical guidance |
Definition at line 1963 of file oneloop_andi.c.
References a_thrust, OneloopGuidanceRef::acc, OneloopGuidanceState::acc, act_dyn_ctrl, act_dynamics, act_max, act_min, ANDI_NUM_ACT, ANDI_NUM_ACT_TOT, ANDI_OUTPUTS, andi_u, andi_u_n, OneloopStabilizationRef::att, OneloopStabilizationState::att, OneloopStabilizationRef::att_2d, OneloopStabilizationState::att_2d, OneloopStabilizationRef::att_3d, OneloopStabilizationRef::att_d, OneloopStabilizationState::att_d, autopilot, Oneloop_LP_t::ax, Oneloop_LP_t::ay, Oneloop_LP_t::az, bwls_1l, calc_normalization(), chirp_on, Stabilization::cmd, COMMAND_PITCH, COMMAND_ROLL, commands, CTRL_ANDI, CTRL_INDI, ctrl_off, OneloopGeneral::ctrl_type, RW_skew::deg, drop_aD, drop_aE, drop_aN, drop_pitch, drop_roll, drop_yaw, dynFilter_run(), ec_3rd_att(), ec_3rd_pos(), EFF_MAT_G, RW_Model::ele_pref, eul_of_acc(), eulers_zxy, eulers_zxy_des, rotwing_state_t::fail_pusher_motor, foo, G1G2_oneloop(), g2_ff, G2_RW, get_act_state_oneloop(), OneloopGeneral::gui_ref, OneloopGeneral::gui_state, heading_manual, rotwing_state_t::hover_motors_enabled, init_controller_gains(), OneloopGuidanceRef::jer, Gains3rdOrder::k1, Gains3rdOrder::k2, Gains3rdOrder::k3, k_att_e, k_att_e_indi, k_D, k_I, k_P, k_pos_e, k_pos_e_indi, LP, max_a_nav, MAX_PPRZ, max_v_nav, Oneloop_DynFilt_t::mu_c, mu_mL, mu_mR, nav, RotorcraftNavigation::nav_altitude, normalize_nu(), nu, num_thrusters_oneloop, SecondOrderLowPass::o, oneloop_andi, oneloop_andi_bound_disturbance(), ONELOOP_ANDI_DEBUG_MODE, ONELOOP_ANDI_MAX_PHI, ONELOOP_ANDI_MAX_THETA, oneloop_andi_model, oneloop_andi_model_filt, oneloop_andi_propagate_filters(), oneloop_andi_RM(), oneloop_andi_sigma, oneloop_calc_model_disturbance(), LP_t::out, Oneloop_LP_t::p, Oneloop_LP_t::p_dot, FloatEulers::phi, pitch_pref, OneloopGuidanceRef::pos, OneloopGuidanceState::pos, POS_BFP_OF_REAL, POS_FLOAT_OF_BFP, Pos_PID(), FloatEulers::psi, psi_des_deg, psi_des_rad, Oneloop_LP_t::q, Oneloop_LP_t::q_dot, Oneloop_LP_t::r, Oneloop_LP_t::r_dot, RADIO_AUX4, RADIO_AUX5, radio_control, radio_control_get(), RADIO_THROTTLE, ratio_u_un, reinit_controller(), rotwing_state, RW, RW_aD, RW_aE, RW_aN, RW_ap, RW_aq, RW_ar, shape_vector(), RW_Model::skew, sta_bounds, OneloopGeneral::sta_ref, OneloopGeneral::sta_state, stabilization, stateGetNedToBodyEulersZxy_f(), stateGetPositionNed_f(), stateGetSpeedNed_f(), sys_id_doublet_running(), RotorcraftNavigation::target, FloatEulers::theta, theta_pref_max, pprz_autopilot::throttle, WLS_t::u, u_filt, WLS_t::u_max, WLS_t::u_min, u_pref, WLS_t::u_pref, use_dyn_filter, RadioControl::values, OneloopGuidanceRef::vel, OneloopGuidanceState::vel, wls_alloc(), WLS_one_p, WLS_t::Wu, Wu_backup, Wu_quad_motors_fwd, NedCoor_f::x, EnuCoor_f::x, NedCoor_f::y, EnuCoor_f::y, and NedCoor_f::z.
Referenced by guidance_oneloop_run_mode(), oneloop_from_nav(), and stabilization_attitude_run().
Here is the call graph for this function:
Here is the caller graph for this function:Function that maps navigation inputs to the oneloop controller for the generated autopilot.
Definition at line 2568 of file oneloop_andi.c.
|
extern |
Definition at line 524 of file oneloop_andi.c.
Referenced by oneloop_andi_RM().
|
extern |
|
extern |
Definition at line 290 of file oneloop_andi.c.
|
extern |
Definition at line 285 of file oneloop_andi.c.
|
extern |
Definition at line 284 of file oneloop_andi.c.
|
extern |
Definition at line 525 of file oneloop_andi.c.
|
extern |
Definition at line 517 of file oneloop_andi.c.
Referenced by chirp_call(), oneloop_andi_RM(), and oneloop_andi_run().
|
extern |
Definition at line 460 of file oneloop_andi.c.
|
extern |
Definition at line 475 of file oneloop_andi.c.
|
extern |
Definition at line 362 of file oneloop_andi.c.
|
extern |
Definition at line 521 of file oneloop_andi.c.
Referenced by oneloop_andi_RM().
|
extern |
Definition at line 522 of file oneloop_andi.c.
Referenced by oneloop_andi_RM().
|
extern |
Definition at line 376 of file oneloop_andi.c.
|
extern |
|
extern |
Definition at line 248 of file guidance_indi_hybrid.c.
|
extern |
Definition at line 112 of file guidance_indi_hybrid.c.
|
extern |
Definition at line 309 of file oneloop_andi.c.
|
extern |
Definition at line 505 of file oneloop_andi.c.
|
extern |
Definition at line 506 of file oneloop_andi.c.
|
extern |
Definition at line 498 of file oneloop_andi.c.
|
extern |
Definition at line 499 of file oneloop_andi.c.
|
extern |
Definition at line 509 of file oneloop_andi.c.
|
extern |
|
extern |
|
extern |
Definition at line 508 of file oneloop_andi.c.
|
extern |
Definition at line 500 of file oneloop_andi.c.
|
extern |
Definition at line 501 of file oneloop_andi.c.
|
extern |
Definition at line 189 of file oneloop_andi.c.
|
extern |
Definition at line 407 of file oneloop_andi.c.
|
extern |
Definition at line 531 of file oneloop_andi.c.
Referenced by oneloop_andi_enter(), and oneloop_andi_RM().
|
extern |
Definition at line 287 of file oneloop_andi.c.
|
extern |
Definition at line 132 of file oneloop_andi.c.
Referenced by chirp_pos(), get_act_state_oneloop(), guidance_oneloop_run_mode(), oneloop_andi_bound_disturbance(), oneloop_andi_enter(), oneloop_andi_init(), oneloop_andi_RM(), oneloop_andi_run(), oneloop_calc_model_disturbance(), oneloop_from_nav(), reinit_controller(), reshape_wind(), send_guidance_oneloop_andi(), send_oneloop_andi(), and stabilization_attitude_run().
|
extern |
Definition at line 194 of file oneloop_andi.c.
Referenced by chirp_pos(), and oneloop_andi_run().
|
extern |
Definition at line 492 of file oneloop_andi.c.
|
extern |
Definition at line 493 of file oneloop_andi.c.
|
extern |
Definition at line 485 of file oneloop_andi.c.
|
extern |
Definition at line 487 of file oneloop_andi.c.
|
extern |
Definition at line 495 of file oneloop_andi.c.
|
extern |
Definition at line 496 of file oneloop_andi.c.
|
extern |
Definition at line 489 of file oneloop_andi.c.
|
extern |
Definition at line 490 of file oneloop_andi.c.
|
extern |
Definition at line 365 of file oneloop_andi.c.
|
extern |
Definition at line 364 of file oneloop_andi.c.
|
extern |
Definition at line 523 of file oneloop_andi.c.
Referenced by chirp_call(), chirp_pos(), and oneloop_andi_RM().
|
extern |
Definition at line 193 of file oneloop_andi.c.
Referenced by oneloop_andi_run().
|
extern |
Definition at line 315 of file oneloop_andi.c.