Paparazzi UAS  v7.0_unstable
Paparazzi is a free software Unmanned Aircraft System.
guidance_v.c File Reference

Vertical guidance for rotorcrafts. More...

+ Include dependency graph for guidance_v.c:

Go to the source code of this file.

Macros

#define GUIDANCE_V_NOMINAL_HOVER_THROTTLE   0.4
 
#define GUIDANCE_V_CLIMB_RC_DEADBAND   MAX_PPRZ/10
 
#define GUIDANCE_V_MAX_RC_CLIMB_SPEED   GUIDANCE_V_REF_MIN_ZD
 
#define GUIDANCE_V_MAX_RC_DESCENT_SPEED   GUIDANCE_V_REF_MAX_ZD
 
#define GUIDANCE_V_GUIDED_MODE_ZHOLD   0
 
#define GUIDANCE_V_GUIDED_MODE_CLIMB   1
 
#define GUIDANCE_V_GUIDED_MODE_THROTTLE   2
 

Functions

static void send_tune_vert (struct transport_tx *trans, struct link_device *dev)
 
void guidance_v_init (void)
 
void guidance_v_read_rc (void)
 
void guidance_v_mode_changed (uint8_t new_mode)
 
void guidance_v_notify_in_flight (bool in_flight)
 
static int32_t get_vertical_thrust_coeff (void)
 get the cosine of the angle between thrust vector and gravity vector More...
 
void guidance_v_thrust_adapt (bool in_flight)
 
void guidance_v_run (bool in_flight)
 
void guidance_v_z_enter (void)
 
void guidance_v_set_ref (int32_t pos, int32_t speed, int32_t accel)
 Set guidance ref parameters. More...
 
void guidance_v_update_ref (void)
 
void guidance_v_from_nav (bool in_flight)
 Set guidance setpoint from NAV and run hover loop. More...
 
void guidance_v_guided_enter (void)
 Enter GUIDED mode control. More...
 
void guidance_v_guided_run (bool in_flight)
 Run GUIDED mode control. More...
 
void guidance_v_set_z (float z)
 Set z position setpoint. More...
 
void guidance_v_set_vz (float vz)
 Set z velocity setpoint. More...
 
void guidance_v_set_th (float th)
 Set throttle setpoint. More...
 

Variables

struct VerticalGuidance guidance_v
 
static bool desired_zd_updated
 
static int guidance_v_guided_mode
 

Detailed Description

Vertical guidance for rotorcrafts.

Definition in file guidance_v.c.

Macro Definition Documentation

◆ GUIDANCE_V_CLIMB_RC_DEADBAND

#define GUIDANCE_V_CLIMB_RC_DEADBAND   MAX_PPRZ/10

Definition at line 48 of file guidance_v.c.

◆ GUIDANCE_V_GUIDED_MODE_CLIMB

#define GUIDANCE_V_GUIDED_MODE_CLIMB   1

Definition at line 64 of file guidance_v.c.

◆ GUIDANCE_V_GUIDED_MODE_THROTTLE

#define GUIDANCE_V_GUIDED_MODE_THROTTLE   2

Definition at line 65 of file guidance_v.c.

◆ GUIDANCE_V_GUIDED_MODE_ZHOLD

#define GUIDANCE_V_GUIDED_MODE_ZHOLD   0

Definition at line 63 of file guidance_v.c.

◆ GUIDANCE_V_MAX_RC_CLIMB_SPEED

#define GUIDANCE_V_MAX_RC_CLIMB_SPEED   GUIDANCE_V_REF_MIN_ZD

Definition at line 52 of file guidance_v.c.

◆ GUIDANCE_V_MAX_RC_DESCENT_SPEED

#define GUIDANCE_V_MAX_RC_DESCENT_SPEED   GUIDANCE_V_REF_MAX_ZD

Definition at line 56 of file guidance_v.c.

◆ GUIDANCE_V_NOMINAL_HOVER_THROTTLE

#define GUIDANCE_V_NOMINAL_HOVER_THROTTLE   0.4

Definition at line 42 of file guidance_v.c.

Function Documentation

◆ get_vertical_thrust_coeff()

static int32_t get_vertical_thrust_coeff ( void  )
static

get the cosine of the angle between thrust vector and gravity vector

Definition at line 175 of file guidance_v.c.

References BFP_OF_REAL, INT32_TRIG_FRAC, Int32RMat::m, and stateGetNedToBodyRMat_i().

Referenced by guidance_v_thrust_adapt().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ guidance_v_from_nav()

◆ guidance_v_guided_enter()

void guidance_v_guided_enter ( void  )

Enter GUIDED mode control.

Definition at line 349 of file guidance_v.c.

References guidance_v_run_enter(), guidance_v_set_z(), GuidanceVSetRef, stateGetPositionNed_f(), stateGetPositionNed_i(), and stateGetSpeedNed_i().

Referenced by guidance_v_mode_changed().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ guidance_v_guided_run()

◆ guidance_v_init()

◆ guidance_v_mode_changed()

◆ guidance_v_notify_in_flight()

void guidance_v_notify_in_flight ( bool  in_flight)

Definition at line 167 of file guidance_v.c.

References gv_adapt_init().

+ Here is the call graph for this function:

◆ guidance_v_read_rc()

◆ guidance_v_run()

◆ guidance_v_set_ref()

void guidance_v_set_ref ( int32_t  pos,
int32_t  speed,
int32_t  accel 
)

Set guidance ref parameters.

Definition at line 297 of file guidance_v.c.

References guidance_v, gv_set_ref(), VerticalGuidance::z_ref, VerticalGuidance::zd_ref, and VerticalGuidance::zdd_ref.

+ Here is the call graph for this function:

◆ guidance_v_set_th()

void guidance_v_set_th ( float  th)

Set throttle setpoint.

Parameters
thThrottle setpoint between 0. and 1.

Definition at line 411 of file guidance_v.c.

References guidance_v, guidance_v_guided_mode, GUIDANCE_V_GUIDED_MODE_THROTTLE, GuidanceVSetRef, MAX_PPRZ, stateGetPositionNed_i(), stateGetSpeedNed_i(), and VerticalGuidance::th_sp.

+ Here is the call graph for this function:

◆ guidance_v_set_vz()

void guidance_v_set_vz ( float  vz)

Set z velocity setpoint.

Parameters
vzSetpoint (down is positive) in meters/second.

Definition at line 403 of file guidance_v.c.

References guidance_v, guidance_v_guided_mode, GUIDANCE_V_GUIDED_MODE_CLIMB, SPEED_BFP_OF_REAL, and VerticalGuidance::zd_sp.

Referenced by autopilot_guided_move_ned(), autopilot_guided_update(), and autopilot_static_set_mode().

+ Here is the caller graph for this function:

◆ guidance_v_set_z()

void guidance_v_set_z ( float  z)

Set z position setpoint.

Parameters
zSetpoint (down is positive) in meters.

Definition at line 393 of file guidance_v.c.

References guidance_v, guidance_v_guided_mode, GUIDANCE_V_GUIDED_MODE_ZHOLD, POS_BFP_OF_REAL, VerticalGuidance::z_sp, and VerticalGuidance::zd_sp.

Referenced by autopilot_guided_goto_ned(), autopilot_guided_update(), and guidance_v_guided_enter().

+ Here is the caller graph for this function:

◆ guidance_v_thrust_adapt()

void guidance_v_thrust_adapt ( bool  in_flight)

Definition at line 203 of file guidance_v.c.

References desired_zd_updated, get_vertical_thrust_coeff(), guidance_v, gv_adapt_init(), gv_adapt_run(), INT32_TRIG_FRAC, stabilization_cmd, stateGetAccelNed_i(), VerticalGuidance::thrust_coeff, and VerticalGuidance::zd_ref.

Referenced by guidance_v_run().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ guidance_v_update_ref()

◆ guidance_v_z_enter()

void guidance_v_z_enter ( void  )

Definition at line 284 of file guidance_v.c.

References guidance_v, guidance_v_run_enter(), GuidanceVSetRef, stateGetPositionNed_i(), NedCoor_i::z, VerticalGuidance::z_sp, and VerticalGuidance::zd_sp.

+ Here is the call graph for this function:

◆ send_tune_vert()

static void send_tune_vert ( struct transport_tx *  trans,
struct link_device *  dev 
)
static

Definition at line 73 of file guidance_v.c.

References dev, guidance_v, stateGetPositionNed_i(), VerticalGuidance::z_ref, VerticalGuidance::z_sp, and VerticalGuidance::zd_ref.

Referenced by guidance_v_init().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Variable Documentation

◆ desired_zd_updated

bool desired_zd_updated
static

◆ guidance_v

◆ guidance_v_guided_mode

int guidance_v_guided_mode
static