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"
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. More... | |
#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.
#define TRANSITION_TIME 3.f |
Definition at line 224 of file stabilization.c.
#define TRANSITION_TO_FORWARD true |
Definition at line 221 of file stabilization.c.
#define TRANSITION_TO_HOVER false |
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, 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().
|
static |
Definition at line 75 of file stabilization.c.
References Stabilization::cmd, dev, radio_control, RADIO_PITCH, RADIO_ROLL, RADIO_YAW, stabilization, stateGetNedToBodyEulers_i(), and RadioControl::values.
Referenced by stabilization_init().
struct StabilizationSetpoint stab_sp_from_eulers_f | ( | struct FloatEulers * | eulers | ) |
Definition at line 579 of file stabilization.c.
References ThrustSetpoint::format, MAX_PPRZ, ThrustSetpoint::sp, and ThrustSetpoint::type.
struct StabilizationSetpoint stab_sp_from_eulers_i | ( | struct Int32Eulers * | eulers | ) |
Definition at line 579 of file stabilization.c.
Referenced by guidance_module_run(), and vertical_ctrl_module_run().
struct StabilizationSetpoint stab_sp_from_ltp_f | ( | struct FloatVect2 * | vect, |
float | heading | ||
) |
Definition at line 579 of file stabilization.c.
struct StabilizationSetpoint stab_sp_from_ltp_i | ( | struct Int32Vect2 * | vect, |
int32_t | heading | ||
) |
Definition at line 579 of file stabilization.c.
struct StabilizationSetpoint stab_sp_from_quat_f | ( | struct FloatQuat * | quat | ) |
Definition at line 579 of file stabilization.c.
Referenced by stabilization_attitude_reset_rc().
struct StabilizationSetpoint stab_sp_from_quat_ff_rates_f | ( | struct FloatQuat * | quat, |
struct FloatRates * | rates | ||
) |
Definition at line 579 of file stabilization.c.
struct StabilizationSetpoint stab_sp_from_quat_i | ( | struct Int32Quat * | quat | ) |
Definition at line 579 of file stabilization.c.
struct StabilizationSetpoint stab_sp_from_rates_f | ( | struct FloatRates * | rates | ) |
Definition at line 579 of file stabilization.c.
Referenced by stabilization_indi_attitude_run().
struct StabilizationSetpoint stab_sp_from_rates_i | ( | struct Int32Rates * | rates | ) |
Definition at line 579 of file stabilization.c.
|
static |
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.
|
static |
Definition at line 242 of file stabilization.c.
struct FloatEulers stab_sp_to_eulers_f | ( | struct StabilizationSetpoint * | sp | ) |
Definition at line 314 of file stabilization.c.
References Stabilization::cmd, MAX_PPRZ, stabilization, and update_second_order_low_pass_int().
Referenced by stabilization_attitude_run().
struct Int32Eulers stab_sp_to_eulers_i | ( | struct StabilizationSetpoint * | sp | ) |
Definition at line 314 of file stabilization.c.
Referenced by reset_horizontal_vars(), stabilization_attitude_run(), and stabilization_indi_attitude_run().
struct FloatQuat stab_sp_to_quat_f | ( | struct StabilizationSetpoint * | sp | ) |
Definition at line 314 of file stabilization.c.
Referenced by stabilization_attitude_run(), and stabilization_indi_attitude_run().
struct Int32Quat stab_sp_to_quat_i | ( | struct StabilizationSetpoint * | sp | ) |
Definition at line 314 of file stabilization.c.
Referenced by stabilization_attitude_run(), and stabilization_indi_attitude_run().
struct FloatRates stab_sp_to_rates_f | ( | struct StabilizationSetpoint * | sp | ) |
Definition at line 314 of file stabilization.c.
Referenced by stabilization_indi_attitude_run(), stabilization_indi_rate_run(), and stabilization_rate_read_rc().
struct Int32Rates stab_sp_to_rates_i | ( | struct StabilizationSetpoint * | sp | ) |
Definition at line 314 of file stabilization.c.
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 138 of file stabilization.c.
References Stabilization::att_submode, 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 rc_cb().
|
static |
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_attitude_read_rc().
void stabilization_filter_commands | ( | void | ) |
Command filter for vibrating airframes.
Definition at line 314 of file stabilization.c.
Referenced by stab_sp_rotate_f().
struct StabilizationSetpoint stabilization_get_failsafe_sp | ( | void | ) |
Get stabilization setpoint for failsafe.
Definition at line 242 of file stabilization.c.
Referenced by autopilot_static_periodic().
void stabilization_init | ( | void | ) |
Init function.
Definition at line 94 of file stabilization.c.
References Stabilization::att_submode, Stabilization::cmd, DefaultPeriodic, 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.
Check mode change.
Definition at line 138 of file stabilization.c.
Referenced by autopilot_static_set_mode().
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.
Referenced by autopilot_static_periodic(), and guidance_module_run().
struct ThrustSetpoint th_sp_from_incr_f | ( | float | th_increment, |
uint8_t | axis | ||
) |
Definition at line 579 of file stabilization.c.
struct ThrustSetpoint th_sp_from_incr_i | ( | int32_t | th_increment, |
uint8_t | axis | ||
) |
Definition at line 579 of file stabilization.c.
struct ThrustSetpoint th_sp_from_incr_vect_f | ( | float | th_increment[3] | ) |
Definition at line 579 of file stabilization.c.
struct ThrustSetpoint th_sp_from_incr_vect_i | ( | int32_t | th_increment[3] | ) |
Definition at line 579 of file stabilization.c.
struct ThrustSetpoint th_sp_from_thrust_f | ( | float | thrust, |
uint8_t | axis | ||
) |
Definition at line 579 of file stabilization.c.
struct ThrustSetpoint th_sp_from_thrust_i | ( | int32_t | thrust, |
uint8_t | axis | ||
) |
Definition at line 579 of file stabilization.c.
Referenced by guidance_module_run(), and vertical_ctrl_module_run().
struct ThrustSetpoint th_sp_from_thrust_vect_f | ( | float | thrust[3] | ) |
Definition at line 579 of file stabilization.c.
struct ThrustSetpoint th_sp_from_thrust_vect_i | ( | int32_t | thrust[3] | ) |
Definition at line 579 of file stabilization.c.
float th_sp_to_incr_f | ( | struct ThrustSetpoint * | th, |
int32_t | thrust, | ||
uint8_t | axis | ||
) |
Definition at line 579 of file stabilization.c.
int32_t th_sp_to_incr_i | ( | struct ThrustSetpoint * | th, |
int32_t | thrust, | ||
uint8_t | axis | ||
) |
Definition at line 562 of file stabilization.c.
References ThrustSetpoint::format, MAX_PPRZ, ThrustSetpoint::sp, and ThrustSetpoint::type.
float th_sp_to_thrust_f | ( | struct ThrustSetpoint * | th, |
int32_t | thrust, | ||
uint8_t | axis | ||
) |
Definition at line 544 of file stabilization.c.
References ThrustSetpoint::format, MAX_PPRZ, ThrustSetpoint::sp, and ThrustSetpoint::type.
int32_t th_sp_to_thrust_i | ( | struct ThrustSetpoint * | th, |
int32_t | thrust, | ||
uint8_t | axis | ||
) |
Definition at line 527 of file stabilization.c.
References ThrustSetpoint::format, MAX_PPRZ, ThrustSetpoint::sp, and ThrustSetpoint::type.
Referenced by stabilization_attitude_run(), stabilization_direct_run(), stabilization_indi_rate_run(), and stabilization_rate_read_rc().
|
inlinestatic |
Definition at line 229 of file stabilization.c.
References Stabilization::rc_in, stabilization, transition_increment, Stabilization::transition_ratio, and AttitudeRCInput::transition_theta_offset.
Referenced by stab_sp_rotate_f().
|
static |
Definition at line 69 of file stabilization.c.
Referenced by stabilization_init().
struct Stabilization stabilization |
Definition at line 1 of file stabilization.c.
Referenced by autopilot_check_in_flight(), autopilot_in_flight_end_detection(), autopilot_static_periodic(), autopilot_static_set_mode(), 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_module_enter(), guidance_module_run(), guidance_v_run(), ins_flow_update(), logger_control_effectiveness_periodic(), 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_bebop_actuators(), send_rate(), send_tune_hover(), send_windtunnel_meas(), stab_sp_rotate_f(), stab_sp_to_eulers_f(), stabilization_attitude_read_rc(), stabilization_attitude_reset_rc(), stabilization_init(), transition_run(), and vertical_ctrl_module_run().
|
static |
Definition at line 227 of file stabilization.c.
Referenced by transition_run().