![]() |
Paparazzi UAS
v6.3_unstable
Paparazzi is a free software Unmanned Aircraft System.
|
Horizontal guidance for rotorcrafts. More...
#include "math/pprz_algebra_int.h"
#include "math/pprz_algebra_float.h"
#include "firmwares/rotorcraft/guidance/guidance_h_ref.h"
#include "firmwares/rotorcraft/stabilization.h"
#include "generated/airframe.h"
#include "std.h"
Go to the source code of this file.
Data Structures | |
struct | HorizontalGuidanceSetpoint |
struct | HorizontalGuidanceReference |
struct | HorizontalGuidance |
Macros | |
#define | GUIDANCE_H_USE_REF TRUE |
Use horizontal guidance reference trajectory. More... | |
#define | GUIDANCE_H_USE_SPEED_REF TRUE |
Use horizontal guidance speed reference. More... | |
#define | GUIDANCE_H_MODE_KILL 0 |
#define | GUIDANCE_H_MODE_RATE 1 |
#define | GUIDANCE_H_MODE_ATTITUDE 2 |
#define | GUIDANCE_H_MODE_HOVER 3 |
#define | GUIDANCE_H_MODE_NAV 4 |
#define | GUIDANCE_H_MODE_RC_DIRECT 5 |
#define | GUIDANCE_H_MODE_CARE_FREE 6 |
#define | GUIDANCE_H_MODE_FORWARD 7 |
#define | GUIDANCE_H_MODE_MODULE 8 |
#define | GUIDANCE_H_MODE_FLIP 9 |
#define | GUIDANCE_H_MODE_GUIDED 10 |
#define | GUIDANCE_H_MAX_BANK RadOfDeg(20) |
Max bank controlled by guidance. More... | |
#define | guidance_h_SetUseRef(_val) |
Functions | |
void | guidance_h_init (void) |
void | guidance_h_mode_changed (uint8_t new_mode) |
void | guidance_h_read_rc (bool in_flight) |
void | guidance_h_run (bool in_flight) |
void | guidance_h_run_enter (void) |
struct StabilizationSetpoint | guidance_h_run_pos (bool in_flight, struct HorizontalGuidance *gh) |
struct StabilizationSetpoint | guidance_h_run_speed (bool in_flight, struct HorizontalGuidance *gh) |
struct StabilizationSetpoint | guidance_h_run_accel (bool in_flight, struct HorizontalGuidance *gh) |
void | guidance_h_hover_enter (void) |
void | guidance_h_nav_enter (void) |
void | guidance_h_from_nav (bool in_flight) |
Set horizontal guidance from NAV and run control loop. More... | |
void | guidance_h_guided_run (bool in_flight) |
Run GUIDED mode control. More... | |
void | guidance_h_set_pos (float x, float y) |
Set horizontal position setpoint. More... | |
void | guidance_h_set_heading (float heading) |
Set heading setpoint. More... | |
void | guidance_h_set_body_vel (float vx, float vy) |
Set body relative horizontal velocity setpoint. More... | |
void | guidance_h_set_vel (float vx, float vy) |
Set horizontal velocity setpoint. More... | |
void | guidance_h_set_heading_rate (float rate) |
Set heading rate setpoint. More... | |
static void | guidance_h_SetMaxSpeed (float speed) |
static void | guidance_h_SetOmega (float omega) |
static void | guidance_h_SetZeta (float zeta) |
static void | guidance_h_SetTau (float tau) |
Variables | |
struct HorizontalGuidance | guidance_h |
int32_t | transition_percentage |
Horizontal guidance for rotorcrafts.
Definition in file guidance_h.h.
struct HorizontalGuidanceSetpoint |
Definition at line 75 of file guidance_h.h.
Data Fields | ||
---|---|---|
float | heading | |
float | heading_rate | |
uint8_t | mask | bit 5: vx & vy, bit 6: vz, bit 7: vyaw |
struct Int32Vect2 | pos |
horizontal position setpoint in NED. fixed point representation: Q23.8 accuracy 0.0039, range 8388km |
struct Int32Vect2 | speed | only used in HOVER mode if GUIDANCE_H_USE_SPEED_REF or in GUIDED mode |
struct HorizontalGuidanceReference |
Definition at line 87 of file guidance_h.h.
Data Fields | ||
---|---|---|
struct Int32Vect2 | accel | with INT32_ACCEL_FRAC |
struct Int32Vect2 | pos | with INT32_POS_FRAC |
struct Int32Vect2 | speed | with INT32_SPEED_FRAC |
struct HorizontalGuidance |
Definition at line 93 of file guidance_h.h.
Data Fields | ||
---|---|---|
uint8_t | mode | |
struct FloatEulers | rc_sp | remote control setpoint |
struct HorizontalGuidanceReference | ref | reference calculated from setpoints |
struct HorizontalGuidanceSetpoint | sp | setpoints |
bool | use_ref |
#define GUIDANCE_H_MAX_BANK RadOfDeg(20) |
Max bank controlled by guidance.
Definition at line 71 of file guidance_h.h.
#define GUIDANCE_H_MODE_ATTITUDE 2 |
Definition at line 58 of file guidance_h.h.
#define GUIDANCE_H_MODE_CARE_FREE 6 |
Definition at line 62 of file guidance_h.h.
#define GUIDANCE_H_MODE_FLIP 9 |
Definition at line 65 of file guidance_h.h.
#define GUIDANCE_H_MODE_FORWARD 7 |
Definition at line 63 of file guidance_h.h.
#define GUIDANCE_H_MODE_GUIDED 10 |
Definition at line 66 of file guidance_h.h.
#define GUIDANCE_H_MODE_HOVER 3 |
Definition at line 59 of file guidance_h.h.
#define GUIDANCE_H_MODE_KILL 0 |
Definition at line 56 of file guidance_h.h.
#define GUIDANCE_H_MODE_MODULE 8 |
Definition at line 64 of file guidance_h.h.
#define GUIDANCE_H_MODE_NAV 4 |
Definition at line 60 of file guidance_h.h.
#define GUIDANCE_H_MODE_RATE 1 |
Definition at line 57 of file guidance_h.h.
#define GUIDANCE_H_MODE_RC_DIRECT 5 |
Definition at line 61 of file guidance_h.h.
#define guidance_h_SetUseRef | ( | _val | ) |
Definition at line 159 of file guidance_h.h.
#define GUIDANCE_H_USE_REF TRUE |
Use horizontal guidance reference trajectory.
Default is TRUE, define to FALSE to always disable it.
Definition at line 45 of file guidance_h.h.
#define GUIDANCE_H_USE_SPEED_REF TRUE |
Use horizontal guidance speed reference.
This also allows to give velocity commands via RC in GUIDANCE_H_MODE_HOVER. Default is TRUE, define to FALSE to always disable it.
Definition at line 53 of file guidance_h.h.
void guidance_h_from_nav | ( | bool | in_flight | ) |
Set horizontal guidance from NAV and run control loop.
Definition at line 422 of file guidance_h.c.
References ANGLE_BFP_OF_REAL, RotorcraftNavigation::carrot, RotorcraftNavigation::cmd_pitch, RotorcraftNavigation::cmd_roll, RotorcraftNavigation::cmd_yaw, guidance_h, guidance_h_cmd, guidance_h_guided_run(), guidance_h_nav_enter(), guidance_h_run_accel(), guidance_h_run_pos(), guidance_h_run_speed(), guidance_h_set_heading(), guidance_h_set_pos(), guidance_h_set_vel(), guidance_h_update_reference(), RotorcraftNavigation::heading, RotorcraftNavigation::horizontal_mode, nav, NAV_HORIZONTAL_MODE_ATTITUDE, NAV_HORIZONTAL_MODE_GUIDED, NAV_HORIZONTAL_MODE_MANUAL, NAV_SETPOINT_MODE_ACCEL, NAV_SETPOINT_MODE_POS, NAV_SETPOINT_MODE_QUAT, NAV_SETPOINT_MODE_SPEED, Int32Eulers::phi, RotorcraftNavigation::pitch, Int32Eulers::psi, RotorcraftNavigation::quat, QUAT_BFP_OF_REAL, RotorcraftNavigation::roll, RotorcraftNavigation::setpoint_mode, RotorcraftNavigation::speed, stabilization_attitude_run(), stabilization_attitude_set_quat_setpoint_i(), stabilization_attitude_set_rpy_setpoint_i(), stabilization_attitude_set_stab_sp(), stabilization_cmd, Int32Eulers::theta, EnuCoor_f::x, and EnuCoor_f::y.
Referenced by guidance_h_run().
void guidance_h_guided_run | ( | bool | in_flight | ) |
Run GUIDED mode control.
Definition at line 535 of file guidance_h.c.
References guidance_h, guidance_h_cmd, guidance_h_hover_enter(), guidance_h_run_pos(), guidance_h_update_reference(), stabilization_attitude_run(), and stabilization_attitude_set_stab_sp().
Referenced by guidance_h_from_nav(), and guidance_h_run().
void guidance_h_hover_enter | ( | void | ) |
Definition at line 390 of file guidance_h.c.
References guidance_h, guidance_h_run_enter(), guidance_h_set_heading(), guidance_h_set_pos(), FloatEulers::psi, HorizontalGuidance::rc_sp, reset_guidance_reference_from_current_position(), HorizontalGuidance::sp, HorizontalGuidanceSetpoint::speed, stateGetNedToBodyEulers_f(), stateGetPositionNed_f(), FloatVect2::x, Int32Vect2::x, FloatVect2::y, and Int32Vect2::y.
Referenced by guidance_h_guided_run(), and guidance_h_mode_changed().
void guidance_h_init | ( | void | ) |
Definition at line 103 of file guidance_h.c.
References DefaultPeriodic, FLOAT_EULERS_ZERO, gh_ref_init(), guidance_h, GUIDANCE_H_MODE_KILL, guidance_h_module_init(), GUIDANCE_H_USE_REF, HorizontalGuidanceSetpoint::heading, HorizontalGuidanceSetpoint::heading_rate, INT_VECT2_ZERO, HorizontalGuidance::mode, HorizontalGuidanceSetpoint::pos, HorizontalGuidance::rc_sp, register_periodic_telemetry(), send_gh(), send_href(), send_tune_hover(), HorizontalGuidance::sp, transition_percentage, transition_theta_offset, and HorizontalGuidance::use_ref.
void guidance_h_mode_changed | ( | uint8_t | new_mode | ) |
Definition at line 145 of file guidance_h.c.
References guidance_flip_enter(), guidance_h, guidance_h_hover_enter(), GUIDANCE_H_MODE_ATTITUDE, GUIDANCE_H_MODE_CARE_FREE, GUIDANCE_H_MODE_FLIP, GUIDANCE_H_MODE_FORWARD, GUIDANCE_H_MODE_GUIDED, GUIDANCE_H_MODE_HOVER, GUIDANCE_H_MODE_KILL, GUIDANCE_H_MODE_MODULE, GUIDANCE_H_MODE_NAV, GUIDANCE_H_MODE_RATE, GUIDANCE_H_MODE_RC_DIRECT, guidance_h_module_enter(), guidance_h_nav_enter(), HorizontalGuidance::mode, stabilization_attitude_enter(), stabilization_attitude_reset_care_free_heading(), stabilization_none_enter(), and stabilization_rate_enter().
Referenced by autopilot_static_set_mode().
void guidance_h_nav_enter | ( | void | ) |
Definition at line 411 of file guidance_h.c.
References RotorcraftNavigation::carrot, guidance_h_run_enter(), guidance_h_set_heading(), guidance_h_set_pos(), RotorcraftNavigation::heading, nav, reset_guidance_reference_from_current_position(), EnuCoor_f::x, and EnuCoor_f::y.
Referenced by guidance_h_from_nav(), and guidance_h_mode_changed().
void guidance_h_read_rc | ( | bool | in_flight | ) |
Definition at line 218 of file guidance_h.c.
References FALSE, FLOAT_EULERS_ZERO, guidance_h, GUIDANCE_H_MODE_ATTITUDE, GUIDANCE_H_MODE_CARE_FREE, GUIDANCE_H_MODE_FLIP, GUIDANCE_H_MODE_FORWARD, GUIDANCE_H_MODE_HOVER, GUIDANCE_H_MODE_MODULE, GUIDANCE_H_MODE_NAV, GUIDANCE_H_MODE_RATE, GUIDANCE_H_MODE_RC_DIRECT, guidance_h_module_read_rc(), HorizontalGuidanceSetpoint::mask, HorizontalGuidance::mode, radio_control, RC_OK, HorizontalGuidance::rc_sp, read_rc_setpoint_speed_i(), HorizontalGuidance::sp, HorizontalGuidanceSetpoint::speed, stabilization_attitude_read_rc(), stabilization_attitude_read_rc_setpoint_eulers_f(), stabilization_none_read_rc(), stabilization_rate_read_rc(), stabilization_rate_read_rc_switched_sticks(), RadioControl::status, and TRUE.
Referenced by autopilot_static_on_rc_frame(), and ins_ekf2_publish_attitude().
void guidance_h_run | ( | bool | in_flight | ) |
Definition at line 277 of file guidance_h.c.
References guidance_flip_run(), guidance_h, guidance_h_from_nav(), guidance_h_guided_run(), GUIDANCE_H_MODE_ATTITUDE, GUIDANCE_H_MODE_CARE_FREE, GUIDANCE_H_MODE_FLIP, GUIDANCE_H_MODE_FORWARD, GUIDANCE_H_MODE_GUIDED, GUIDANCE_H_MODE_HOVER, GUIDANCE_H_MODE_MODULE, GUIDANCE_H_MODE_NAV, GUIDANCE_H_MODE_RATE, GUIDANCE_H_MODE_RC_DIRECT, guidance_h_module_run(), HorizontalGuidanceSetpoint::heading, INT32_PERCENTAGE_FRAC, HorizontalGuidance::mode, FloatEulers::psi, HorizontalGuidance::rc_sp, HorizontalGuidance::sp, stabilization_attitude_run(), stabilization_filter_commands(), stabilization_none_run(), stabilization_rate_run(), transition_percentage, and transition_run().
Referenced by autopilot_static_periodic().
struct StabilizationSetpoint guidance_h_run_accel | ( | bool | in_flight, |
struct HorizontalGuidance * | gh | ||
) |
void guidance_h_run_enter | ( | void | ) |
Referenced by guidance_h_hover_enter(), and guidance_h_nav_enter().
struct StabilizationSetpoint guidance_h_run_pos | ( | bool | in_flight, |
struct HorizontalGuidance * | gh | ||
) |
Referenced by guidance_h_from_nav(), and guidance_h_guided_run().
struct StabilizationSetpoint guidance_h_run_speed | ( | bool | in_flight, |
struct HorizontalGuidance * | gh | ||
) |
void guidance_h_set_body_vel | ( | float | vx, |
float | vy | ||
) |
Set body relative horizontal velocity setpoint.
vx | forward velocity (body frame) in meters/sec. |
vy | right velocity (body frame) in meters/sec. |
Definition at line 564 of file guidance_h.c.
References guidance_h_set_vel(), FloatEulers::psi, Int32Eulers::psi, and stateGetNedToBodyEulers_f().
Referenced by autopilot_guided_update(), and orange_avoider_guided_periodic().
void guidance_h_set_heading | ( | float | heading | ) |
Set heading setpoint.
heading | Setpoint in radians. |
Definition at line 557 of file guidance_h.c.
References FLOAT_ANGLE_NORMALIZE, guidance_h, HorizontalGuidanceSetpoint::heading, heading, HorizontalGuidanceSetpoint::mask, and HorizontalGuidance::sp.
Referenced by autopilot_guided_goto_ned(), autopilot_guided_move_ned(), autopilot_guided_update(), guidance_h_from_nav(), guidance_h_hover_enter(), guidance_h_nav_enter(), and orange_avoider_guided_periodic().
void guidance_h_set_heading_rate | ( | float | rate | ) |
Set heading rate setpoint.
rate | Heading rate in radians. |
Definition at line 579 of file guidance_h.c.
References guidance_h, HorizontalGuidanceSetpoint::heading_rate, HorizontalGuidanceSetpoint::mask, and HorizontalGuidance::sp.
Referenced by autopilot_guided_update(), and orange_avoider_guided_periodic().
void guidance_h_set_pos | ( | float | x, |
float | y | ||
) |
Set horizontal position setpoint.
x | North position (local NED frame) in meters. |
y | East position (local NED frame) in meters. |
Definition at line 550 of file guidance_h.c.
References guidance_h, HorizontalGuidanceSetpoint::mask, HorizontalGuidanceSetpoint::pos, POS_BFP_OF_REAL, HorizontalGuidance::sp, Int32Vect2::x, and Int32Vect2::y.
Referenced by autopilot_guided_goto_ned(), autopilot_guided_update(), guidance_h_from_nav(), guidance_h_hover_enter(), and guidance_h_nav_enter().
void guidance_h_set_vel | ( | float | vx, |
float | vy | ||
) |
Set horizontal velocity setpoint.
vx | North velocity (local NED frame) in meters/sec. |
vy | East velocity (local NED frame) in meters/sec. |
Definition at line 572 of file guidance_h.c.
References guidance_h, HorizontalGuidanceSetpoint::mask, HorizontalGuidance::sp, HorizontalGuidanceSetpoint::speed, SPEED_BFP_OF_REAL, Int32Vect2::x, and Int32Vect2::y.
Referenced by autopilot_guided_move_ned(), autopilot_guided_update(), guidance_h_from_nav(), and guidance_h_set_body_vel().
|
inlinestatic |
Definition at line 163 of file guidance_h.h.
References gh_set_max_speed().
|
inlinestatic |
Definition at line 168 of file guidance_h.h.
References gh_set_omega().
|
inlinestatic |
Definition at line 178 of file guidance_h.h.
|
inlinestatic |
Definition at line 173 of file guidance_h.h.
References gh_set_zeta().
|
extern |
Definition at line 1 of file guidance_h.c.
Referenced by gps_sim_hitl_event(), guidance_h_from_nav(), guidance_h_guided_run(), guidance_h_hover_enter(), guidance_h_init(), guidance_h_mode_changed(), guidance_h_read_rc(), guidance_h_run(), guidance_h_set_heading(), guidance_h_set_heading_rate(), guidance_h_set_pos(), guidance_h_set_vel(), guidance_h_update_reference(), ins_ekf2_publish_attitude(), orange_avoider_guided_periodic(), reset_guidance_reference_from_current_position(), send_fp(), send_gh(), send_hover_loop(), send_href(), send_status(), and stabilization_indi_set_wls_settings().
|
extern |
Definition at line 52 of file guidance_h.c.
Referenced by ctrl_eff_scheduling_periodic_a(), guidance_h_init(), guidance_h_run(), and transition_run().