|  | Paparazzi UAS v7.0_unstable
    Paparazzi is a free software Unmanned Aircraft System. | 
General stabilization interface for rotorcrafts. More...
#include "firmwares/rotorcraft/stabilization.h"#include "firmwares/rotorcraft/stabilization/stabilization_attitude_rc_setpoint.h"#include "firmwares/rotorcraft/stabilization/stabilization_attitude_quat_transformations.h"#include "firmwares/rotorcraft/stabilization/stabilization_direct.h"#include "firmwares/rotorcraft/stabilization/stabilization_rate.h"#include "firmwares/rotorcraft/stabilization/stabilization_attitude.h"#include "modules/radio_control/radio_control.h"#include "modules/core/abi.h"#include "autopilot.h"#include "state.h"#include "modules/datalink/telemetry.h" Include dependency graph for stabilization.c:
 Include dependency graph for stabilization.c:Go to the source code of this file.
| Macros | |
| #define | STABILIZATION_RC_ID ABI_BROADCAST | 
| #define | TRANSITION_TO_HOVER false | 
| Transition from 0 to 100%, used for pitch offset of hybrids. | |
| #define | TRANSITION_TO_FORWARD true | 
| #define | TRANSITION_TIME 3.f | 
| Variables | |
| struct Stabilization | stabilization | 
| static abi_event | rc_ev | 
| static const float | transition_increment = 1.f / (TRANSITION_TIME * PERIODIC_FREQUENCY) | 
General stabilization interface for rotorcrafts.
Definition in file stabilization.c.
| #define STABILIZATION_RC_ID ABI_BROADCAST | 
Definition at line 66 of file stabilization.c.
Definition at line 224 of file stabilization.c.
Definition at line 221 of file stabilization.c.
Transition from 0 to 100%, used for pitch offset of hybrids.
Definition at line 220 of file stabilization.c.
| 
 | static | 
Definition at line 184 of file stabilization.c.
References Stabilization::att_submode, autopilot_in_flight(), FALSE, foo, Stabilization::mode, Stabilization::rc_sp, stabilization, STABILIZATION_ATT_SUBMODE_CARE_FREE, STABILIZATION_ATT_SUBMODE_FORWARD, STABILIZATION_ATT_SUBMODE_HEADING, stabilization_attitude_read_rc(), stabilization_direct_read_rc(), STABILIZATION_MODE_ATTITUDE, STABILIZATION_MODE_DIRECT, STABILIZATION_MODE_RATE, stabilization_rate_read_rc(), and TRUE.
Referenced by stabilization_init().
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
Definition at line 75 of file stabilization.c.
References Stabilization::cmd, dev, foo, radio_control, RADIO_PITCH, RADIO_ROLL, RADIO_YAW, stabilization, stateGetNedToBodyEulers_i(), and RadioControl::values.
Referenced by stabilization_init().
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| struct StabilizationSetpoint stab_sp_from_eulers_f | ( | struct FloatEulers * | eulers | ) | 
Definition at line 638 of file stabilization.c.
References StabilizationSetpoint::format, StabilizationSetpoint::sp, StabilizationSetpoint::STAB_SP_EULERS, StabilizationSetpoint::STAB_SP_FLOAT, and StabilizationSetpoint::type.
Referenced by control_mixing_heewing_attitude_plane(), control_mixing_heewing_nav_run(), guidance_h_from_nav(), guidance_plane_attitude_from_nav(), and stabilization_get_failsafe_sp().
 Here is the caller graph for this function:
 Here is the caller graph for this function:| struct StabilizationSetpoint stab_sp_from_eulers_i | ( | struct Int32Eulers * | eulers | ) | 
Definition at line 628 of file stabilization.c.
References StabilizationSetpoint::format, StabilizationSetpoint::sp, StabilizationSetpoint::STAB_SP_EULERS, StabilizationSetpoint::STAB_SP_INT, and StabilizationSetpoint::type.
Referenced by guidance_module_run(), and vertical_ctrl_module_run().
 Here is the caller graph for this function:
 Here is the caller graph for this function:| struct StabilizationSetpoint stab_sp_from_ltp_f | ( | struct FloatVect2 * | vect, | 
| float | heading | ||
| ) | 
Definition at line 659 of file stabilization.c.
References StabilizationSetpoint::format, heading, StabilizationSetpoint::sp, StabilizationSetpoint::STAB_SP_FLOAT, StabilizationSetpoint::STAB_SP_LTP, and StabilizationSetpoint::type.
| struct StabilizationSetpoint stab_sp_from_ltp_i | ( | struct Int32Vect2 * | vect, | 
| int32_t | heading | ||
| ) | 
Definition at line 648 of file stabilization.c.
References StabilizationSetpoint::format, heading, StabilizationSetpoint::sp, StabilizationSetpoint::STAB_SP_INT, StabilizationSetpoint::STAB_SP_LTP, and StabilizationSetpoint::type.
Referenced by guidance_pid_h_run().
 Here is the caller graph for this function:
 Here is the caller graph for this function:| struct StabilizationSetpoint stab_sp_from_quat_f | ( | struct FloatQuat * | quat | ) | 
Definition at line 607 of file stabilization.c.
References StabilizationSetpoint::format, StabilizationSetpoint::sp, StabilizationSetpoint::STAB_SP_FLOAT, StabilizationSetpoint::STAB_SP_QUAT, and StabilizationSetpoint::type.
Referenced by guidance_h_from_nav(), guidance_indi_run(), stabilization_attitude_read_rc(), and stabilization_attitude_reset_rc().
 Here is the caller graph for this function:
 Here is the caller graph for this function:| struct StabilizationSetpoint stab_sp_from_quat_ff_rates_f | ( | struct FloatQuat * | quat, | 
| struct FloatRates * | rates | ||
| ) | 
Definition at line 617 of file stabilization.c.
References StabilizationSetpoint::format, StabilizationSetpoint::r_sp, StabilizationSetpoint::sp, StabilizationSetpoint::STAB_SP_FLOAT, StabilizationSetpoint::STAB_SP_QUAT_FF_RATE, and StabilizationSetpoint::type.
Referenced by guidance_indi_run().
 Here is the caller graph for this function:
 Here is the caller graph for this function:| struct StabilizationSetpoint stab_sp_from_quat_i | ( | struct Int32Quat * | quat | ) | 
Definition at line 597 of file stabilization.c.
References StabilizationSetpoint::format, StabilizationSetpoint::sp, StabilizationSetpoint::STAB_SP_INT, StabilizationSetpoint::STAB_SP_QUAT, and StabilizationSetpoint::type.
Referenced by guidance_hybrid_set_cmd_i().
 Here is the caller graph for this function:
 Here is the caller graph for this function:| struct StabilizationSetpoint stab_sp_from_rates_f | ( | struct FloatRates * | rates | ) | 
Definition at line 680 of file stabilization.c.
References StabilizationSetpoint::format, StabilizationSetpoint::r_sp, StabilizationSetpoint::sp, StabilizationSetpoint::STAB_SP_FLOAT, StabilizationSetpoint::STAB_SP_RATES, and StabilizationSetpoint::type.
Referenced by stabilization_indi_attitude_run(), and stabilization_rate_read_rc().
 Here is the caller graph for this function:
 Here is the caller graph for this function:| struct StabilizationSetpoint stab_sp_from_rates_i | ( | struct Int32Rates * | rates | ) | 
Definition at line 670 of file stabilization.c.
References StabilizationSetpoint::format, StabilizationSetpoint::r_sp, StabilizationSetpoint::sp, StabilizationSetpoint::STAB_SP_INT, StabilizationSetpoint::STAB_SP_RATES, and StabilizationSetpoint::type.
| 
 | static | 
Definition at line 301 of file stabilization.c.
References foo, heading, FloatEulers::phi, FloatEulers::psi, stateGetNedToBodyEulers_f(), and FloatEulers::theta.
Referenced by stab_sp_to_eulers_f(), and stab_sp_to_eulers_i().
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
Definition at line 287 of file stabilization.c.
References foo, heading, INT32_TRIG_FRAC, Int32Eulers::phi, PPRZ_ITRIG_COS, PPRZ_ITRIG_SIN, Int32Eulers::psi, stateGetNedToBodyEulers_i(), and Int32Eulers::theta.
Referenced by stab_sp_to_eulers_f(), and stab_sp_to_eulers_i().
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| struct FloatEulers stab_sp_to_eulers_f | ( | struct StabilizationSetpoint * | sp | ) | 
Definition at line 454 of file stabilization.c.
References EULERS_FLOAT_OF_BFP, float_eulers_of_quat(), QUAT_FLOAT_OF_BFP, stab_sp_rotate_f(), and stab_sp_rotate_i().
Referenced by stabilization_attitude_plane_pid_run(), stabilization_attitude_run(), and stabilization_attitude_run().
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| struct Int32Eulers stab_sp_to_eulers_i | ( | struct StabilizationSetpoint * | sp | ) | 
Definition at line 415 of file stabilization.c.
References EULERS_BFP_OF_REAL, int32_eulers_of_quat(), QUAT_BFP_OF_REAL, stab_sp_rotate_f(), and stab_sp_rotate_i().
Referenced by reset_horizontal_vars(), stabilization_attitude_run(), stabilization_attitude_run(), and stabilization_indi_attitude_run().
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| struct FloatQuat stab_sp_to_quat_f | ( | struct StabilizationSetpoint * | sp | ) | 
Definition at line 373 of file stabilization.c.
References EULERS_FLOAT_OF_BFP, float_quat_identity(), float_quat_of_eulers(), QUAT_FLOAT_OF_BFP, quat_from_earth_cmd_f(), and quat_from_earth_cmd_i().
Referenced by stabilization_attitude_run(), and stabilization_indi_attitude_run().
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| struct Int32Quat stab_sp_to_quat_i | ( | struct StabilizationSetpoint * | sp | ) | 
Definition at line 331 of file stabilization.c.
References EULERS_BFP_OF_REAL, int32_quat_identity(), int32_quat_of_eulers(), QUAT_BFP_OF_REAL, quat_from_earth_cmd_f(), and quat_from_earth_cmd_i().
Referenced by stabilization_attitude_run(), stabilization_attitude_run(), and stabilization_indi_attitude_run().
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| struct FloatRates stab_sp_to_rates_f | ( | struct StabilizationSetpoint * | sp | ) | 
Definition at line 510 of file stabilization.c.
References RATES_FLOAT_OF_BFP.
Referenced by stabilization_indi_attitude_run(), stabilization_indi_rate_run(), and stabilization_rate_run().
 Here is the caller graph for this function:
 Here is the caller graph for this function:| struct Int32Rates stab_sp_to_rates_i | ( | struct StabilizationSetpoint * | sp | ) | 
Definition at line 493 of file stabilization.c.
References RATES_BFP_OF_REAL.
| struct StabilizationSetpoint WEAK stabilization_attitude_read_rc | ( | bool | in_flight, | 
| bool | carefree, | ||
| bool | coordinated_turn, | ||
| struct RadioControl * | rc | ||
| ) | 
Retrun attitude setpoint from RC as euler angles.
weak function that can be re-implemeted if needed
| [in] | in_flight | true if in flight | 
| [in] | in_carefree | true if in carefree mode | 
| [in] | coordinated_turn | true if in horizontal mode forward | 
| [in] | rc | pointer to radio control structure | 
Definition at line 172 of file stabilization.c.
References foo, Stabilization::rc_in, AttitudeRCInput::rc_quat, stab_sp_from_quat_f(), stabilization, stabilization_attitude_read_rc_setpoint(), and stabilization_attitude_read_rc_setpoint_earth_bound().
Referenced by rc_cb().
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:Definition at line 132 of file stabilization.c.
References Stabilization::rc_in, Stabilization::rc_sp, stab_sp_from_quat_f(), stabilization, stabilization_attitude_reset_rc_setpoint(), and stateGetNedToBodyQuat_f().
Referenced by stabilization_mode_changed().
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:Command filter for vibrating airframes.
Definition at line 314 of file stabilization.c.
References Stabilization::cmd, foo, MAX_PPRZ, stabilization, and update_second_order_low_pass_int().
Referenced by stabilization_run().
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| struct StabilizationSetpoint stabilization_get_failsafe_sp | ( | void | ) | 
Get stabilization setpoint for failsafe.
Definition at line 275 of file stabilization.c.
References foo, FloatEulers::phi, FloatEulers::psi, stab_sp_from_eulers_f(), and stateGetNedToBodyEulers_f().
Referenced by autopilot_static_periodic().
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:Init function.
Definition at line 94 of file stabilization.c.
References Stabilization::att_submode, Stabilization::cmd, DefaultPeriodic, foo, SecondOrderLowPass_int::i, init_second_order_low_pass_int(), Stabilization::mode, rc_cb(), rc_ev, Stabilization::rc_in, Stabilization::rc_sp, register_periodic_telemetry(), send_tune_hover(), STAB_SP_SET_EULERS_ZERO, stabilization, STABILIZATION_ATT_SUBMODE_HEADING, stabilization_attitude_rc_setpoint_init(), STABILIZATION_MODE_NONE, and STABILIZATION_RC_ID.
 Here is the call graph for this function:
 Here is the call graph for this function:Check mode change.
Definition at line 138 of file stabilization.c.
References Stabilization::att_submode, foo, Stabilization::mode, Stabilization::rc_in, stabilization, STABILIZATION_ATT_SUBMODE_CARE_FREE, stabilization_attitude_enter(), stabilization_attitude_reset_care_free_heading(), stabilization_attitude_reset_rc(), stabilization_direct_enter(), STABILIZATION_MODE_ATTITUDE, STABILIZATION_MODE_DIRECT, STABILIZATION_MODE_NONE, STABILIZATION_MODE_RATE, and stabilization_rate_enter().
Referenced by autopilot_static_set_mode(), control_mixing_heewing_attitude_direct_enter(), control_mixing_heewing_attitude_plane_enter(), and control_mixing_heewing_nav_enter().
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| void stabilization_run | ( | bool | in_flight, | 
| struct StabilizationSetpoint * | sp, | ||
| struct ThrustSetpoint * | thrust, | ||
| int32_t * | cmd | ||
| ) | 
Call default stabilization control.
| [in] | in_flight | true if rotorcraft is flying | 
| [in] | sp | pointer to the stabilization setpoint, computed in guidance or from RC | 
| [in] | thrust | pointer to thrust setpoint computed by vertical guidance | 
| [out] | cmd | pointer to the output command vector | 
Definition at line 242 of file stabilization.c.
References Stabilization::att_submode, Stabilization::mode, StabilizationSetpoint::sp, Stabilization::sp, stabilization, STABILIZATION_ATT_SUBMODE_FORWARD, stabilization_attitude_run(), stabilization_direct_run(), stabilization_filter_commands(), STABILIZATION_MODE_ATTITUDE, STABILIZATION_MODE_DIRECT, STABILIZATION_MODE_RATE, stabilization_rate_run(), transition_run(), TRANSITION_TO_FORWARD, and TRANSITION_TO_HOVER.
Referenced by autopilot_static_periodic(), control_mixing_heewing_attitude_direct(), control_mixing_heewing_attitude_plane(), control_mixing_heewing_nav_run(), and guidance_module_run().
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| struct ThrustSetpoint th_sp_from_incr_f | ( | float | th_increment, | 
| uint8_t | axis | ||
| ) | 
Definition at line 720 of file stabilization.c.
References foo, ThrustSetpoint::format, ThrustSetpoint::sp, ThrustSetpoint::THRUST_INCR_SP, ThrustSetpoint::THRUST_SP_FLOAT, and ThrustSetpoint::type.
| struct ThrustSetpoint th_sp_from_incr_i | ( | int32_t | th_increment, | 
| uint8_t | axis | ||
| ) | 
Definition at line 710 of file stabilization.c.
References foo, ThrustSetpoint::format, ThrustSetpoint::sp, ThrustSetpoint::THRUST_INCR_SP, ThrustSetpoint::THRUST_SP_INT, and ThrustSetpoint::type.
| struct ThrustSetpoint th_sp_from_incr_vect_f | ( | float | th_increment[3] | ) | 
Definition at line 766 of file stabilization.c.
References foo, ThrustSetpoint::format, ThrustSetpoint::sp, ThrustSetpoint::THRUST_INCR_SP, ThrustSetpoint::THRUST_SP_FLOAT, and ThrustSetpoint::type.
Referenced by guidance_indi_run().
 Here is the caller graph for this function:
 Here is the caller graph for this function:| struct ThrustSetpoint th_sp_from_incr_vect_i | ( | int32_t | th_increment[3] | ) | 
Definition at line 754 of file stabilization.c.
References foo, ThrustSetpoint::format, ThrustSetpoint::sp, ThrustSetpoint::THRUST_INCR_SP, ThrustSetpoint::THRUST_SP_INT, and ThrustSetpoint::type.
| struct ThrustSetpoint th_sp_from_thrust_f | ( | float | thrust, | 
| uint8_t | axis | ||
| ) | 
Definition at line 700 of file stabilization.c.
References foo, ThrustSetpoint::format, ThrustSetpoint::sp, ThrustSetpoint::THRUST_SP, ThrustSetpoint::THRUST_SP_FLOAT, and ThrustSetpoint::type.
| struct ThrustSetpoint th_sp_from_thrust_i | ( | int32_t | thrust, | 
| uint8_t | axis | ||
| ) | 
Definition at line 690 of file stabilization.c.
References foo, ThrustSetpoint::format, ThrustSetpoint::sp, ThrustSetpoint::THRUST_SP, ThrustSetpoint::THRUST_SP_INT, and ThrustSetpoint::type.
Referenced by autopilot_static_periodic(), control_mixing_heewing_attitude_plane(), guidance_hybrid_vertical(), guidance_indi_run(), guidance_module_run(), guidance_pid_v_run(), guidance_plane_thrust_from_nav(), guidance_v_from_nav(), guidance_v_guided_run(), guidance_v_run(), vertical_ctrl_module_run(), and vertical_ctrl_module_run().
 Here is the caller graph for this function:
 Here is the caller graph for this function:| struct ThrustSetpoint th_sp_from_thrust_vect_f | ( | float | thrust[3] | ) | 
Definition at line 742 of file stabilization.c.
References ThrustSetpoint::format, ThrustSetpoint::sp, ThrustSetpoint::THRUST_SP, ThrustSetpoint::THRUST_SP_FLOAT, and ThrustSetpoint::type.
| struct ThrustSetpoint th_sp_from_thrust_vect_i | ( | int32_t | thrust[3] | ) | 
Definition at line 730 of file stabilization.c.
References ThrustSetpoint::format, ThrustSetpoint::sp, ThrustSetpoint::THRUST_SP, ThrustSetpoint::THRUST_SP_INT, and ThrustSetpoint::type.
| float th_sp_to_incr_f | ( | struct ThrustSetpoint * | th, | 
| int32_t | thrust, | ||
| uint8_t | axis | ||
| ) | 
Definition at line 579 of file stabilization.c.
Referenced by stabilization_indi_rate_run().
 Here is the caller graph for this function:
 Here is the caller graph for this function:| int32_t th_sp_to_incr_i | ( | struct ThrustSetpoint * | th, | 
| int32_t | thrust, | ||
| uint8_t | axis | ||
| ) | 
Definition at line 562 of file stabilization.c.
| float th_sp_to_thrust_f | ( | struct ThrustSetpoint * | th, | 
| int32_t | thrust, | ||
| uint8_t | axis | ||
| ) | 
Definition at line 544 of file stabilization.c.
| int32_t th_sp_to_thrust_i | ( | struct ThrustSetpoint * | th, | 
| int32_t | thrust, | ||
| uint8_t | axis | ||
| ) | 
Definition at line 527 of file stabilization.c.
Referenced by guidance_hybrid_vertical(), stabilization_attitude_plane_pid_run(), stabilization_attitude_run(), stabilization_attitude_run(), stabilization_direct_run(), stabilization_indi_rate_run(), and stabilization_rate_run().
 Here is the caller graph for this function:
 Here is the caller graph for this function:Definition at line 229 of file stabilization.c.
References foo, Stabilization::rc_in, stabilization, transition_increment, Stabilization::transition_ratio, and AttitudeRCInput::transition_theta_offset.
Referenced by stabilization_run().
 Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
Definition at line 69 of file stabilization.c.
Referenced by stabilization_init().
| struct Stabilization stabilization | 
Definition at line 41 of file stabilization.c.
Referenced by autopilot_check_in_flight(), autopilot_in_flight_end_detection(), autopilot_static_periodic(), autopilot_static_set_mode(), control_mixing_heewing_attitude_direct(), control_mixing_heewing_attitude_plane(), control_mixing_heewing_nav_run(), ctrl_module_run(), ctrl_module_run(), direct_memory_logger_periodic(), draw_osd(), eff_scheduling_generic_periodic(), eff_scheduling_periodic_a(), guidance_flip_run(), guidance_indi_enter(), guidance_indi_hybrid_set_wls_settings(), guidance_indi_run(), guidance_module_enter(), guidance_module_run(), guidance_pid_h_run(), guidance_v_thrust_adapt(), ins_flow_update(), logger_file_write_row(), nav_heli_spinup_run(), nav_heli_spinup_setup(), oneloop_andi_run(), rc_cb(), reset_horizontal_vars(), rotwing_state_hover_motors_idling(), rotwing_state_periodic(), send_att(), send_att(), send_att(), send_att(), send_att(), send_bebop_actuators(), send_rate(), send_rate(), send_tune_hover(), send_windtunnel_meas(), stabilization_attitude_read_rc(), stabilization_attitude_reset_rc(), stabilization_filter_commands(), stabilization_init(), stabilization_mode_changed(), stabilization_run(), transition_run(), and vertical_ctrl_module_run().
| 
 | static | 
Definition at line 227 of file stabilization.c.
Referenced by transition_run().