Paparazzi UAS
v5.18.0_stable
Paparazzi is a free software Unmanned Aircraft System.
|
#include "firmwares/fixedwing/guidance/energy_ctrl.h"
#include "state.h"
#include "firmwares/fixedwing/nav.h"
#include "generated/airframe.h"
#include "autopilot.h"
#include "subsystems/abi.h"
Go to the source code of this file.
Macros | |
#define | V_CTL_AUTO_GROUNDSPEED_MAX_SUM_ERR 100 |
#define | V_CTL_ALTITUDE_MAX_CLIMB 2; |
#define | STALL_AIRSPEED NOMINAL_AIRSPEED |
#define | V_CTL_GLIDE_RATIO 8. |
#define | AIRSPEED_SETPOINT_SLEW 1 |
#define | V_CTL_MAX_ACCELERATION 0.5 |
#define | V_CTL_ENERGY_IMU_ID ABI_BROADCAST |
#define | V_CTL_THROTTLE_SLEW 1. |
Functions | |
static void | ac_char_average (float *last_v, float new_v, int count) |
static void | ac_char_update (float throttle, float pitch, float climb, float accelerate) |
static void | accel_cb (uint8_t sender_id, uint32_t stamp, struct Int32Vect3 *accel) |
static void | body_to_imu_cb (uint8_t sender_id, struct FloatQuat *q_b2i_f) |
void | v_ctl_init (void) |
void | v_ctl_altitude_loop (void) |
outer loop More... | |
static float | low_pass_vdot (float v) |
void | v_ctl_climb_loop (void) |
Auto-throttle inner loop. More... | |
void | v_ctl_throttle_slew (void) |
Computes slewed throttle from throttle setpoint called at 20Hz. More... | |
Total Energy (speed + height) control for fixed wing vehicles.
Energy:
Equilibrium:
with:
Strategy:
Pseudo-Control Unit = dimensionless acceleration [g]
- pitch <-> pseudocontrol: sin(Theta) steers Vdot in [g] - throttle <-> pseudocontrol: motor characteristic as function of V x throttle steeds VDot
Definition in file energy_ctrl.c.
#define AIRSPEED_SETPOINT_SLEW 1 |
Definition at line 158 of file energy_ctrl.c.
#define STALL_AIRSPEED NOMINAL_AIRSPEED |
Definition at line 151 of file energy_ctrl.c.
#define V_CTL_ALTITUDE_MAX_CLIMB 2; |
Definition at line 146 of file energy_ctrl.c.
#define V_CTL_AUTO_GROUNDSPEED_MAX_SUM_ERR 100 |
Definition at line 129 of file energy_ctrl.c.
#define V_CTL_ENERGY_IMU_ID ABI_BROADCAST |
Definition at line 165 of file energy_ctrl.c.
#define V_CTL_GLIDE_RATIO 8. |
Definition at line 154 of file energy_ctrl.c.
#define V_CTL_MAX_ACCELERATION 0.5 |
Definition at line 161 of file energy_ctrl.c.
#define V_CTL_THROTTLE_SLEW 1. |
Definition at line 447 of file energy_ctrl.c.
|
static |
Definition at line 180 of file energy_ctrl.c.
Referenced by ac_char_update().
|
static |
Definition at line 185 of file energy_ctrl.c.
References ac_char_average(), ac_char_climb_count, ac_char_climb_max, ac_char_climb_pitch, ac_char_cruise_count, ac_char_cruise_pitch, ac_char_cruise_throttle, ac_char_descend_count, ac_char_descend_max, ac_char_descend_pitch, f, stateGetSpeedEnu_f(), and Int32Vect3::z.
Referenced by v_ctl_climb_loop().
|
static |
Definition at line 204 of file energy_ctrl.c.
References accel_imu_meas.
Referenced by v_ctl_init().
Definition at line 211 of file energy_ctrl.c.
References float_quat_invert(), and imu_to_body_quat.
Referenced by v_ctl_init().
|
static |
Definition at line 321 of file energy_ctrl.c.
References lp_vdot.
Referenced by v_ctl_climb_loop().
void v_ctl_altitude_loop | ( | void | ) |
outer loop
Computes v_ctl_climb_setpoint and sets v_ctl_auto_throttle_submode
Definition at line 298 of file energy_ctrl.c.
Referenced by navigation_task().
void v_ctl_climb_loop | ( | void | ) |
Auto-throttle inner loop.
Definition at line 336 of file energy_ctrl.c.
Referenced by attitude_loop().
void v_ctl_init | ( | void | ) |
Definition at line 217 of file energy_ctrl.c.
void v_ctl_throttle_slew | ( | void | ) |
Computes slewed throttle from throttle setpoint called at 20Hz.
Computes throttle_slewed from throttle_setpoint.
Definition at line 452 of file energy_ctrl.c.
Referenced by attitude_loop().
int ac_char_climb_count = 0 |
Definition at line 172 of file energy_ctrl.c.
Referenced by ac_char_update().
float ac_char_climb_max = 0.0f |
Definition at line 171 of file energy_ctrl.c.
Referenced by ac_char_update().
float ac_char_climb_pitch = 0.0f |
Definition at line 170 of file energy_ctrl.c.
Referenced by ac_char_update().
int ac_char_cruise_count = 0 |
Definition at line 178 of file energy_ctrl.c.
Referenced by ac_char_update().
float ac_char_cruise_pitch = 0.0f |
Definition at line 177 of file energy_ctrl.c.
Referenced by ac_char_update().
float ac_char_cruise_throttle = 0.0f |
Definition at line 176 of file energy_ctrl.c.
Referenced by ac_char_update().
int ac_char_descend_count = 0 |
Definition at line 175 of file energy_ctrl.c.
Referenced by ac_char_update().
float ac_char_descend_max = 0.0f |
Definition at line 174 of file energy_ctrl.c.
Referenced by ac_char_update().
float ac_char_descend_pitch = 0.0f |
Definition at line 173 of file energy_ctrl.c.
Referenced by ac_char_update().
|
static |
Definition at line 140 of file energy_ctrl.c.
Referenced by v_ctl_init().
|
static |
Definition at line 138 of file energy_ctrl.c.
Referenced by accel_cb(), and v_ctl_climb_loop().
|
static |
Definition at line 141 of file energy_ctrl.c.
Referenced by v_ctl_init().
|
static |
Definition at line 290 of file energy_ctrl.c.
Referenced by v_ctl_climb_loop().
|
static |
Definition at line 291 of file energy_ctrl.c.
Referenced by v_ctl_altitude_loop().
|
static |
Definition at line 137 of file energy_ctrl.c.
Referenced by body_to_imu_cb(), v_ctl_climb_loop(), and v_ctl_init().
float lp_vdot[5] |
Definition at line 318 of file energy_ctrl.c.
Referenced by low_pass_vdot().
float v_ctl_airspeed_pgain |
Definition at line 91 of file energy_ctrl.c.
Referenced by v_ctl_climb_loop(), and v_ctl_init().
float v_ctl_altitude_error |
in meters, (setpoint - alt) -> positive = too low
Definition at line 92 of file energy_ctrl.c.
Referenced by h_ctl_course_loop(), and v_ctl_altitude_loop().
float v_ctl_altitude_pgain |
Definition at line 90 of file energy_ctrl.c.
Referenced by v_ctl_altitude_loop(), and v_ctl_init().
float v_ctl_altitude_pre_climb |
Path Angle.
Definition at line 89 of file energy_ctrl.c.
Referenced by v_ctl_altitude_loop(), and v_ctl_init().
float v_ctl_altitude_setpoint |
in meters above MSL
Definition at line 88 of file energy_ctrl.c.
Referenced by callTCAS(), flight_benchmark_periodic(), nav_set_altitude(), send_desired(), v_ctl_altitude_loop(), and v_ctl_init().
float v_ctl_auto_airspeed_controlled |
Definition at line 123 of file energy_ctrl.c.
Referenced by send_airspeed(), v_ctl_climb_loop(), and v_ctl_init().
float v_ctl_auto_airspeed_setpoint |
in meters per second
Definition at line 121 of file energy_ctrl.c.
Referenced by flight_benchmark_periodic(), gls_run(), send_airspeed(), send_desired(), v_ctl_altitude_loop(), v_ctl_climb_loop(), and v_ctl_init().
float v_ctl_auto_airspeed_setpoint_slew |
Definition at line 122 of file energy_ctrl.c.
Referenced by v_ctl_climb_loop(), and v_ctl_init().
float v_ctl_auto_groundspeed_igain |
Definition at line 127 of file energy_ctrl.c.
Referenced by v_ctl_climb_loop(), and v_ctl_init().
float v_ctl_auto_groundspeed_pgain |
Definition at line 126 of file energy_ctrl.c.
Referenced by v_ctl_climb_loop(), and v_ctl_init().
float v_ctl_auto_groundspeed_setpoint |
in meters per second
Definition at line 125 of file energy_ctrl.c.
Referenced by send_airspeed(), v_ctl_climb_loop(), and v_ctl_init().
float v_ctl_auto_groundspeed_sum_err |
Definition at line 128 of file energy_ctrl.c.
Referenced by v_ctl_climb_loop(), and v_ctl_init().
float v_ctl_auto_pitch_of_airspeed_dgain |
Definition at line 113 of file energy_ctrl.c.
Referenced by v_ctl_climb_loop(), and v_ctl_init().
float v_ctl_auto_pitch_of_airspeed_igain |
Definition at line 112 of file energy_ctrl.c.
Referenced by v_ctl_climb_loop(), and v_ctl_init().
float v_ctl_auto_pitch_of_airspeed_pgain |
Definition at line 111 of file energy_ctrl.c.
Referenced by v_ctl_climb_loop(), and v_ctl_init().
float v_ctl_auto_throttle_climb_throttle_increment |
Definition at line 106 of file energy_ctrl.c.
Referenced by v_ctl_climb_loop(), and v_ctl_init().
float v_ctl_auto_throttle_cruise_throttle |
Definition at line 103 of file energy_ctrl.c.
Referenced by formation_flight(), potential_task(), start_formation(), and stop_formation().
float v_ctl_auto_throttle_nominal_cruise_pitch |
Definition at line 105 of file energy_ctrl.c.
Referenced by v_ctl_climb_loop(), and v_ctl_init().
float v_ctl_auto_throttle_nominal_cruise_throttle |
Definition at line 104 of file energy_ctrl.c.
Referenced by v_ctl_climb_loop(), and v_ctl_init().
float v_ctl_auto_throttle_of_airspeed_igain |
Definition at line 110 of file energy_ctrl.c.
Referenced by v_ctl_climb_loop(), and v_ctl_init().
float v_ctl_auto_throttle_of_airspeed_pgain |
Definition at line 109 of file energy_ctrl.c.
Referenced by v_ctl_climb_loop(), and v_ctl_init().
float v_ctl_auto_throttle_pitch_of_vz_pgain |
Definition at line 107 of file energy_ctrl.c.
Referenced by v_ctl_climb_loop(), and v_ctl_init().
uint8_t v_ctl_auto_throttle_submode = V_CTL_CLIMB_MODE_AUTO_THROTTLE |
Definition at line 76 of file energy_ctrl.c.
Referenced by h_ctl_course_loop(), nav_periodic_task(), and send_calibration().
float v_ctl_auto_throttle_sum_err = 0 |
Definition at line 77 of file energy_ctrl.c.
Referenced by send_calibration().
uint8_t v_ctl_climb_mode = V_CTL_CLIMB_MODE_AUTO_THROTTLE |
Definition at line 75 of file energy_ctrl.c.
float v_ctl_climb_setpoint |
Definition at line 98 of file energy_ctrl.c.
Referenced by gvf_parametric_low_level_control_3D(), send_desired(), v_ctl_altitude_loop(), v_ctl_climb_loop(), and v_ctl_init().
float v_ctl_desired_acceleration |
Definition at line 101 of file energy_ctrl.c.
Referenced by v_ctl_climb_loop().
float v_ctl_energy_diff_igain |
Definition at line 119 of file energy_ctrl.c.
Referenced by v_ctl_climb_loop(), and v_ctl_init().
float v_ctl_energy_diff_pgain |
Definition at line 118 of file energy_ctrl.c.
Referenced by v_ctl_climb_loop(), and v_ctl_init().
float v_ctl_energy_total_igain |
Definition at line 116 of file energy_ctrl.c.
Referenced by v_ctl_climb_loop(), and v_ctl_init().
float v_ctl_energy_total_pgain |
Definition at line 115 of file energy_ctrl.c.
Referenced by v_ctl_climb_loop(), and v_ctl_init().
float v_ctl_max_acceleration |
Definition at line 95 of file energy_ctrl.c.
Referenced by v_ctl_climb_loop(), and v_ctl_init().
float v_ctl_max_climb |
Definition at line 94 of file energy_ctrl.c.
Referenced by v_ctl_altitude_loop(), and v_ctl_init().
uint8_t v_ctl_mode = V_CTL_MODE_MANUAL |
Definition at line 74 of file energy_ctrl.c.
Referenced by attitude_loop(), gvf_parametric_low_level_control_3D(), h_ctl_pitch_loop(), nav_home(), nav_periodic_task(), nav_skid_landing_glide(), nav_without_gps(), navigation_task(), send_mode(), v_ctl_climb_loop(), and v_ctl_init().
float v_ctl_pitch_setpoint |
Definition at line 133 of file energy_ctrl.c.
Referenced by attitude_loop(), h_ctl_guidance_loop(), and v_ctl_climb_loop().
uint8_t v_ctl_speed_mode |
Definition at line 135 of file energy_ctrl.c.
Referenced by gvf_parametric_low_level_control_3D(), and v_ctl_init().
pprz_t v_ctl_throttle_setpoint |
Definition at line 131 of file energy_ctrl.c.
Referenced by attitude_loop(), autopilot_static_on_rc_frame(), h_ctl_roll_loop(), nav_home(), v_ctl_climb_loop(), v_ctl_init(), and v_ctl_throttle_slew().
pprz_t v_ctl_throttle_slewed |
Definition at line 132 of file energy_ctrl.c.
Referenced by attitude_loop(), and v_ctl_throttle_slew().