![]() |
Paparazzi UAS v7.0_unstable
Paparazzi is a free software Unmanned Aircraft System.
|
Guidance controllers (horizontal and vertical) for Hybrid UAV configurations. More...
#include "firmwares/rotorcraft/guidance/guidance_hybrid.h"
#include "firmwares/rotorcraft/guidance/guidance_h.h"
#include "modules/radio_control/radio_control.h"
#include "firmwares/rotorcraft/stabilization/stabilization_attitude.h"
#include "firmwares/rotorcraft/guidance/guidance_v.h"
#include "firmwares/rotorcraft/guidance/guidance_pid.h"
#include "modules/datalink/telemetry.h"
Go to the source code of this file.
Macros | |
#define | MAX_AIRSPEED 15 |
#define | INT32_ANGLE_HIGH_RES_FRAC 18 |
#define | AIRSPEED_HOVER 4 |
#define | AIRSPEED_FORWARD 12 |
#define | CRUISE_THROTTLE 4000 |
#define | FWD_SPEED_P_GAIN 30 |
#define | FWD_ALT_THRUST_GAIN 0.35 |
#define | FWD_PID_DIV 2 |
#define | FWD_NOMINAL_PITCH 78.0 |
#define | FWD_PITCH_GAIN 2.1 |
#define | HOVER_P_GAIN 12 |
#define | INT32_ANGLE_HIGH_RES_NORMALIZE(_a) |
Guidance controllers (horizontal and vertical) for Hybrid UAV configurations.
Functionality: 1) hover with (helicopter) thrust vectoring and align the heading with the wind vector. 2) Forward flight with using pitch and a bit of thrust to control altitude and heading to control the velocity vector 3) Transition between the two, with the possibility to fly at any airspeed
Definition in file guidance_hybrid.c.
#define AIRSPEED_FORWARD 12 |
Definition at line 63 of file guidance_hybrid.c.
#define AIRSPEED_HOVER 4 |
Definition at line 62 of file guidance_hybrid.c.
#define CRUISE_THROTTLE 4000 |
Definition at line 64 of file guidance_hybrid.c.
#define FWD_ALT_THRUST_GAIN 0.35 |
Definition at line 66 of file guidance_hybrid.c.
#define FWD_NOMINAL_PITCH 78.0 |
Definition at line 68 of file guidance_hybrid.c.
#define FWD_PID_DIV 2 |
Definition at line 67 of file guidance_hybrid.c.
#define FWD_PITCH_GAIN 2.1 |
Definition at line 69 of file guidance_hybrid.c.
#define FWD_SPEED_P_GAIN 30 |
Definition at line 65 of file guidance_hybrid.c.
#define HOVER_P_GAIN 12 |
Definition at line 70 of file guidance_hybrid.c.
#define INT32_ANGLE_HIGH_RES_FRAC 18 |
Definition at line 51 of file guidance_hybrid.c.
Definition at line 150 of file guidance_hybrid.c.
#define MAX_AIRSPEED 15 |
Definition at line 47 of file guidance_hybrid.c.
void guidance_hybrid_airspeed_to_attitude | ( | struct Int32Eulers * | ypr_sp | ) |
Convert a required airspeed to a certain attitude for the Quadshot.
Convert a required airspeed to a certain attitude for the Hybrid.
if required speed is lower than 4 m/s act like a rotorcraft
if required speed is higher than 4 m/s act like a fixedwing
Definition at line 206 of file guidance_hybrid.c.
References AIRSPEED_FORWARD, AIRSPEED_HOVER, airspeed_sp_heading_disp, ANGLE_BFP_OF_REAL, ANGLE_FLOAT_OF_BFP, FLOAT_ANGLE_NORMALIZE, FLOAT_OF_BFP, foo, fwd_nominal_pitch, guidance_hybrid_airspeed_sp, guidance_hybrid_norm_ref_airspeed, guidance_hybrid_norm_ref_airspeed_f, guidance_hybrid_ref_airspeed, heading_diff_disp, high_res_psi, hover_p_gain, INT32_ANGLE_FRAC, INT32_ANGLE_HIGH_RES_FRAC, INT32_ANGLE_HIGH_RES_NORMALIZE, INT32_ANGLE_PI, INT32_POS_FRAC, INT32_TRIG_FRAC, int32_vect2_norm(), max_turn_bank, norm_sp_airspeed_disp, omega_disp, POS_FLOAT_OF_BFP, PPRZ_ITRIG_COS, PPRZ_ITRIG_SIN, turn_bank_gain, v_control_pitch, Int32Vect2::x, and Int32Vect2::y.
Referenced by guidance_hybrid_run().
Description.
Definition at line 385 of file guidance_hybrid.c.
References foo, guidance_hybrid_ref_airspeed, INT32_VECT2_RSHIFT, stateGetSpeedNed_i(), VECT2_DIFF, wind_estimate, wind_estimate_high_res, wind_gain, Int32Vect2::x, and Int32Vect2::y.
Referenced by guidance_hybrid_run().
Description.
Definition at line 324 of file guidance_hybrid.c.
References foo, force_forward_flight, guidance_hybrid_airspeed_sp, guidance_hybrid_groundspeed_sp, guidance_hybrid_ypr_sp, INT32_TRIG_FRAC, int32_vect2_norm(), INT_MULT_RSHIFT, INT_VECT2_ZERO, max_airspeed, POS_BFP_OF_REAL, POS_FLOAT_OF_BFP, PPRZ_ITRIG_COS, PPRZ_ITRIG_SIN, Int32Eulers::psi, VECT2_ADD, wind_estimate, Int32Vect2::x, and Int32Vect2::y.
Referenced by guidance_hybrid_run().
struct StabilizationSetpoint guidance_hybrid_h_run_accel | ( | bool in_flight | UNUSED, |
struct HorizontalGuidance *gh | UNUSED | ||
) |
Definition at line 179 of file guidance_hybrid.c.
References StabilizationSetpoint::sp.
struct StabilizationSetpoint guidance_hybrid_h_run_pos | ( | bool in_flight | UNUSED, |
struct HorizontalGuidance * | gh | ||
) |
Definition at line 163 of file guidance_hybrid.c.
References foo, guidance_h_pos_err, guidance_hybrid_groundspeed_sp, guidance_hybrid_run(), horizontal_speed_gain, stateGetPositionNed_i(), VECT2_DIFF, and VECT2_SDIV.
struct StabilizationSetpoint guidance_hybrid_h_run_speed | ( | bool in_flight | UNUSED, |
struct HorizontalGuidance * | gh | ||
) |
Definition at line 172 of file guidance_hybrid.c.
References foo, guidance_hybrid_groundspeed_sp, guidance_hybrid_run(), and VECT2_COPY.
Hybrid Guidance Initialization function.
Definition at line 123 of file guidance_hybrid.c.
References DefaultPeriodic, foo, force_forward_flight, guidance_hovering, guidance_hybrid_airspeed_ref, guidance_hybrid_airspeed_sp, guidance_hybrid_groundspeed_sp, guidance_hybrid_norm_ref_airspeed, guidance_hybrid_norm_ref_airspeed_f, guidance_hybrid_ref_airspeed, guidance_hybrid_ypr_sp, high_res_psi, horizontal_speed_gain, INT_EULERS_ZERO, INT_VECT2_ZERO, max_turn_bank, register_periodic_telemetry(), send_hybrid_guidance(), turn_bank_gain, wind_estimate, wind_estimate_high_res, and wind_gain.
struct StabilizationSetpoint guidance_hybrid_run | ( | void | ) |
Runs the Hybrid Guidance main functions.
Definition at line 155 of file guidance_hybrid.c.
References guidance_hybrid_airspeed_to_attitude(), guidance_hybrid_determine_wind_estimate(), guidance_hybrid_groundspeed_to_airspeed(), guidance_hybrid_set_cmd_i(), and guidance_hybrid_ypr_sp.
Referenced by guidance_hybrid_h_run_pos(), and guidance_hybrid_h_run_speed().
struct StabilizationSetpoint guidance_hybrid_set_cmd_i | ( | struct Int32Eulers * | sp_cmd | ) |
Creates the attitude set-points from an orientation vector.
sp_cmd | The orientation vector |
Definition at line 403 of file guidance_hybrid.c.
References ANGLE_FLOAT_OF_BFP, float_quat_of_orientation_vect(), foo, int32_quat_comp(), int32_quat_of_axis_angle(), QUAT_BFP_OF_REAL, stab_sp_from_quat_i(), FloatVect3::x, FloatVect3::y, and FloatVect3::z.
Referenced by guidance_hybrid_run().
struct ThrustSetpoint guidance_hybrid_v_run_accel | ( | bool | in_flight, |
struct VerticalGuidance * | gv | ||
) |
Definition at line 198 of file guidance_hybrid.c.
References foo, guidance_hybrid_vertical(), and guidance_pid_v_run_accel().
struct ThrustSetpoint guidance_hybrid_v_run_pos | ( | bool | in_flight, |
struct VerticalGuidance * | gv | ||
) |
Definition at line 186 of file guidance_hybrid.c.
References foo, guidance_hybrid_vertical(), and guidance_pid_v_run_pos().
struct ThrustSetpoint guidance_hybrid_v_run_speed | ( | bool | in_flight, |
struct VerticalGuidance * | gv | ||
) |
Definition at line 192 of file guidance_hybrid.c.
References foo, guidance_hybrid_vertical(), and guidance_pid_v_run_speed().
struct ThrustSetpoint guidance_hybrid_vertical | ( | struct ThrustSetpoint * | th | ) |
Take a thrust command as input and returns the modified value according to the current flight regime.
Description.
Definition at line 436 of file guidance_hybrid.c.
References AIRSPEED_FORWARD, AIRSPEED_HOVER, ANGLE_BFP_OF_REAL, cruise_throttle, foo, fwd_alt_thrust_gain, fwd_pid_div, fwd_pitch_gain, fwd_speed_p_gain, guidance_hybrid_norm_ref_airspeed_f, guidance_pid, guidance_v, GuidancePID::kd, GuidancePID::ki, GuidancePID::kp, MAX_PPRZ, VerticalGuidance::nominal_throttle, th_sp_from_thrust_i(), th_sp_to_thrust_i(), THRUST_AXIS_Z, and v_control_pitch.
Referenced by guidance_hybrid_v_run_accel(), guidance_hybrid_v_run_pos(), and guidance_hybrid_v_run_speed().
|
static |
Definition at line 102 of file guidance_hybrid.c.
References dev, foo, guidance_h_pos_err, guidance_hybrid_airspeed_sp, guidance_hybrid_norm_ref_airspeed, guidance_hybrid_ypr_sp, heading_diff_disp, Int32Eulers::phi, Int32Eulers::psi, stateGetPositionNed_i(), stateGetSpeedNed_i(), Int32Eulers::theta, wind_estimate, Int32Vect2::x, NedCoor_i::x, Int32Vect2::y, and NedCoor_i::y.
Referenced by guidance_hybrid_init().
|
static |
Definition at line 94 of file guidance_hybrid.c.
Referenced by guidance_hybrid_airspeed_to_attitude().
int32_t cruise_throttle = CRUISE_THROTTLE |
Definition at line 72 of file guidance_hybrid.c.
Referenced by guidance_hybrid_vertical().
bool force_forward_flight |
Definition at line 96 of file guidance_hybrid.c.
Referenced by guidance_hybrid_groundspeed_to_airspeed(), and guidance_hybrid_init().
float fwd_alt_thrust_gain = FWD_ALT_THRUST_GAIN |
Definition at line 74 of file guidance_hybrid.c.
Referenced by guidance_hybrid_vertical().
float fwd_nominal_pitch = FWD_NOMINAL_PITCH |
Definition at line 76 of file guidance_hybrid.c.
Referenced by guidance_hybrid_airspeed_to_attitude().
float fwd_pid_div = FWD_PID_DIV |
Definition at line 75 of file guidance_hybrid.c.
Referenced by guidance_hybrid_vertical().
float fwd_pitch_gain = FWD_PITCH_GAIN |
Definition at line 77 of file guidance_hybrid.c.
Referenced by guidance_hybrid_vertical().
int32_t fwd_speed_p_gain = FWD_SPEED_P_GAIN |
Definition at line 73 of file guidance_hybrid.c.
Referenced by guidance_hybrid_vertical().
|
static |
Definition at line 84 of file guidance_hybrid.c.
Referenced by guidance_hybrid_h_run_pos(), and send_hybrid_guidance().
|
static |
Definition at line 95 of file guidance_hybrid.c.
Referenced by guidance_hybrid_init().
|
static |
Definition at line 85 of file guidance_hybrid.c.
Referenced by guidance_hybrid_init().
|
static |
Definition at line 83 of file guidance_hybrid.c.
Referenced by guidance_hybrid_airspeed_to_attitude(), guidance_hybrid_groundspeed_to_airspeed(), guidance_hybrid_init(), and send_hybrid_guidance().
|
static |
Definition at line 81 of file guidance_hybrid.c.
Referenced by guidance_hybrid_groundspeed_to_airspeed(), guidance_hybrid_h_run_pos(), guidance_hybrid_h_run_speed(), and guidance_hybrid_init().
int32_t guidance_hybrid_norm_ref_airspeed |
Definition at line 54 of file guidance_hybrid.c.
Referenced by guidance_hybrid_airspeed_to_attitude(), guidance_hybrid_init(), and send_hybrid_guidance().
float guidance_hybrid_norm_ref_airspeed_f |
Definition at line 55 of file guidance_hybrid.c.
Referenced by guidance_hybrid_airspeed_to_attitude(), guidance_hybrid_init(), and guidance_hybrid_vertical().
|
static |
Definition at line 88 of file guidance_hybrid.c.
Referenced by guidance_hybrid_airspeed_to_attitude(), guidance_hybrid_determine_wind_estimate(), and guidance_hybrid_init().
|
static |
Definition at line 82 of file guidance_hybrid.c.
Referenced by guidance_hybrid_groundspeed_to_airspeed(), guidance_hybrid_init(), guidance_hybrid_run(), and send_hybrid_guidance().
|
static |
Definition at line 91 of file guidance_hybrid.c.
Referenced by guidance_hybrid_airspeed_to_attitude(), and send_hybrid_guidance().
|
static |
Definition at line 93 of file guidance_hybrid.c.
Referenced by guidance_hybrid_airspeed_to_attitude(), and guidance_hybrid_init().
int32_t horizontal_speed_gain |
Definition at line 58 of file guidance_hybrid.c.
Referenced by guidance_hybrid_h_run_pos(), and guidance_hybrid_init().
int32_t hover_p_gain = HOVER_P_GAIN |
Definition at line 78 of file guidance_hybrid.c.
Referenced by guidance_hybrid_airspeed_to_attitude().
int32_t max_airspeed = MAX_AIRSPEED |
Definition at line 56 of file guidance_hybrid.c.
Referenced by guidance_hybrid_groundspeed_to_airspeed(), and guidance_set_min_max_airspeed().
float max_turn_bank |
Definition at line 59 of file guidance_hybrid.c.
Referenced by guidance_hybrid_airspeed_to_attitude(), and guidance_hybrid_init().
|
static |
Definition at line 90 of file guidance_hybrid.c.
Referenced by guidance_hybrid_airspeed_to_attitude().
|
static |
Definition at line 92 of file guidance_hybrid.c.
Referenced by guidance_hybrid_airspeed_to_attitude().
float turn_bank_gain |
Definition at line 60 of file guidance_hybrid.c.
Referenced by guidance_hybrid_airspeed_to_attitude(), and guidance_hybrid_init().
|
static |
Definition at line 97 of file guidance_hybrid.c.
Referenced by guidance_hybrid_airspeed_to_attitude(), and guidance_hybrid_vertical().
|
static |
Definition at line 86 of file guidance_hybrid.c.
Referenced by guidance_hybrid_determine_wind_estimate(), guidance_hybrid_groundspeed_to_airspeed(), guidance_hybrid_init(), and send_hybrid_guidance().
|
static |
Definition at line 87 of file guidance_hybrid.c.
Referenced by guidance_hybrid_determine_wind_estimate(), and guidance_hybrid_init().
int32_t wind_gain |
Definition at line 57 of file guidance_hybrid.c.
Referenced by guidance_hybrid_determine_wind_estimate(), and guidance_hybrid_init().