|
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"
Include dependency graph for guidance_hybrid.c: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().
Here is the call graph for this function:
Here is the caller graph for this function: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().
Here is the call graph for this function:
Here is the caller graph for this function: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().
Here is the call graph for this function:
Here is the caller graph for this function:| 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.
Here is the call graph for this function:| 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.
Here is the call graph for this function: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.
Here is the call graph for this function:| 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().
Here is the call graph for this function:
Here is the caller graph for this function:| 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().
Here is the call graph for this function:
Here is the caller graph for this function:| 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().
Here is the call graph for this function:| 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().
Here is the call graph for this function:| 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().
Here is the call graph for this function:| 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().
Here is the call graph for this function:
Here is the caller graph for this function:
|
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().
Here is the call graph for this function:
Here is the caller graph for this function:
|
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().