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

Horizontal guidance for rotorcrafts. More...

+ Include dependency graph for guidance_h.c:

Go to the source code of this file.

Macros

#define GUIDANCE_H_RC_ID   ABI_BROADCAST
 
#define GUIDANCE_H_SP_MAX_R   60.f
 
#define GUIDANCE_H_DEADBAND_R   200
 
#define YAW_DEADBAND_EXCEEDED(_rc)
 

Functions

static void guidance_h_update_reference (void)
 
static void rc_cb (uint8_t sender_id UNUSED, struct RadioControl *rc)
 
static void send_gh (struct transport_tx *trans, struct link_device *dev)
 
static void send_href (struct transport_tx *trans, struct link_device *dev)
 
void guidance_h_init (void)
 
static void reset_guidance_reference_from_current_position (void)
 
void guidance_h_mode_changed (uint8_t new_mode)
 
static void read_rc_setpoint_heading (struct HorizontalGuidanceRCInput *rc_sp, bool in_flight, struct RadioControl *rc)
 
static void read_rc_setpoint_speed_i (struct Int32Vect2 *speed_sp, bool in_flight, struct RadioControl *rc)
 read speed setpoint from RC More...
 
struct StabilizationSetpoint guidance_h_run (bool in_flight)
 
void guidance_h_hover_enter (void)
 
void guidance_h_nav_enter (void)
 
struct StabilizationSetpoint guidance_h_from_nav (bool in_flight)
 Set horizontal guidance from NAV and run control loop. More...
 
struct StabilizationSetpoint 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 acceleration setpoint. More...
 
void guidance_h_set_body_acc (float ax, float ay)
 Set body relative horizontal acceleration setpoint. More...
 
void guidance_h_set_acc (float ax, float ay)
 Set horizontal velocity setpoint. More...
 
void guidance_h_set_heading_rate (float rate)
 Set heading rate setpoint. More...
 

Variables

struct HorizontalGuidance guidance_h
 
struct StabilizationSetpoint guidance_h_cmd
 horizontal guidance command. More...
 
static abi_event rc_ev
 

Detailed Description

Horizontal guidance for rotorcrafts.

Definition in file guidance_h.c.

Macro Definition Documentation

◆ GUIDANCE_H_DEADBAND_R

#define GUIDANCE_H_DEADBAND_R   200

Definition at line 160 of file guidance_h.c.

◆ GUIDANCE_H_RC_ID

#define GUIDANCE_H_RC_ID   ABI_BROADCAST

Definition at line 55 of file guidance_h.c.

◆ GUIDANCE_H_SP_MAX_R

#define GUIDANCE_H_SP_MAX_R   60.f

Definition at line 155 of file guidance_h.c.

◆ YAW_DEADBAND_EXCEEDED

#define YAW_DEADBAND_EXCEEDED (   _rc)
Value:
(rc->values[RADIO_YAW] > GUIDANCE_H_DEADBAND_R || \
#define GUIDANCE_H_DEADBAND_R
Definition: guidance_h.c:160

Definition at line 163 of file guidance_h.c.

Function Documentation

◆ guidance_h_from_nav()

struct StabilizationSetpoint guidance_h_from_nav ( bool  in_flight)

Set horizontal guidance from NAV and run control loop.

Definition at line 364 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.

+ Here is the call graph for this function:

◆ guidance_h_guided_run()

struct StabilizationSetpoint guidance_h_guided_run ( bool  in_flight)

Run GUIDED mode control.

Definition at line 364 of file guidance_h.c.

◆ guidance_h_hover_enter()

◆ guidance_h_init()

◆ guidance_h_mode_changed()

void guidance_h_mode_changed ( uint8_t  new_mode)

Definition at line 128 of file guidance_h.c.

References guidance_h, guidance_h_hover_enter(), GUIDANCE_H_MODE_GUIDED, GUIDANCE_H_MODE_HOVER, GUIDANCE_H_MODE_NAV, guidance_h_nav_enter(), and HorizontalGuidance::mode.

Referenced by autopilot_static_set_mode(), and guidance_module_enter().

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

◆ guidance_h_nav_enter()

void guidance_h_nav_enter ( void  )

Definition at line 364 of file guidance_h.c.

Referenced by guidance_h_mode_changed().

+ Here is the caller graph for this function:

◆ guidance_h_run()

◆ guidance_h_set_acc()

void guidance_h_set_acc ( float  ax,
float  ay 
)

Set horizontal velocity setpoint.

Parameters
vxNorth velocity (local NED frame) in meters/sec.
vyEast velocity (local NED frame) in meters/sec.

Definition at line 498 of file guidance_h.c.

References HorizontalGuidanceSetpoint::accel, ACCEL_BFP_OF_REAL, guidance_h, HorizontalGuidanceSetpoint::h_mask, reset_guidance_reference_from_current_position(), HorizontalGuidance::sp, Int32Vect2::x, and Int32Vect2::y.

Referenced by guidance_h_set_body_acc().

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

◆ guidance_h_set_body_acc()

void guidance_h_set_body_acc ( float  ax,
float  ay 
)

Set body relative horizontal acceleration setpoint.

Parameters
vxforward acceleration (body frame) in meters/secĀ².
vyright acceleration (body frame) in meters/secĀ².

Definition at line 490 of file guidance_h.c.

References guidance_h_set_acc(), FloatEulers::psi, and stateGetNedToBodyEulers_f().

+ Here is the call graph for this function:

◆ guidance_h_set_body_vel()

void guidance_h_set_body_vel ( float  vx,
float  vy 
)

Set body relative horizontal velocity setpoint.

Parameters
vxforward velocity (body frame) in meters/sec.
vyright velocity (body frame) in meters/sec.

Definition at line 472 of file guidance_h.c.

References guidance_h_set_vel(), FloatEulers::psi, and stateGetNedToBodyEulers_f().

Referenced by orange_avoider_guided_periodic().

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

◆ guidance_h_set_heading()

void guidance_h_set_heading ( float  heading)

Set heading setpoint.

Parameters
headingSetpoint in radians.

Definition at line 465 of file guidance_h.c.

References FLOAT_ANGLE_NORMALIZE, guidance_h, HorizontalGuidanceSetpoint::heading, heading, HorizontalGuidance::sp, and HorizontalGuidanceSetpoint::yaw_mask.

Referenced by guidance_h_from_nav(), guidance_h_hover_enter(), and orange_avoider_guided_periodic().

+ Here is the caller graph for this function:

◆ guidance_h_set_heading_rate()

void guidance_h_set_heading_rate ( float  rate)

Set heading rate setpoint.

Parameters
rateHeading rate in radians.

Definition at line 508 of file guidance_h.c.

References guidance_h, HorizontalGuidanceSetpoint::heading_rate, HorizontalGuidance::sp, and HorizontalGuidanceSetpoint::yaw_mask.

Referenced by orange_avoider_guided_periodic().

+ Here is the caller graph for this function:

◆ guidance_h_set_pos()

void guidance_h_set_pos ( float  x,
float  y 
)

Set horizontal position setpoint.

Parameters
xNorth position (local NED frame) in meters.
yEast position (local NED frame) in meters.

Definition at line 455 of file guidance_h.c.

References guidance_h, HorizontalGuidanceSetpoint::h_mask, HorizontalGuidanceSetpoint::pos, POS_BFP_OF_REAL, reset_guidance_reference_from_current_position(), HorizontalGuidance::sp, Int32Vect2::x, and Int32Vect2::y.

Referenced by guidance_h_from_nav(), and guidance_h_hover_enter().

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

◆ guidance_h_set_vel()

void guidance_h_set_vel ( float  vx,
float  vy 
)

Set horizontal acceleration setpoint.

Parameters
vxNorth acceleration (local NED frame) in meters/secĀ².
vyEast acceleration (local NED frame) in meters/secĀ².

Definition at line 480 of file guidance_h.c.

References guidance_h, HorizontalGuidanceSetpoint::h_mask, reset_guidance_reference_from_current_position(), HorizontalGuidance::sp, HorizontalGuidanceSetpoint::speed, SPEED_BFP_OF_REAL, Int32Vect2::x, and Int32Vect2::y.

Referenced by guidance_h_set_body_vel().

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

◆ guidance_h_update_reference()

◆ rc_cb()

static void rc_cb ( uint8_t sender_id  UNUSED,
struct RadioControl rc 
)
static

Definition at line 219 of file guidance_h.c.

Referenced by guidance_h_init().

+ Here is the caller graph for this function:

◆ read_rc_setpoint_heading()

static void read_rc_setpoint_heading ( struct HorizontalGuidanceRCInput rc_sp,
bool  in_flight,
struct RadioControl rc 
)
static

◆ read_rc_setpoint_speed_i()

static void read_rc_setpoint_speed_i ( struct Int32Vect2 speed_sp,
bool  in_flight,
struct RadioControl rc 
)
static

read speed setpoint from RC

Todo:
calc proper scale while making sure a division by zero can't occur

Definition at line 189 of file guidance_h.c.

References GUIDANCE_H_REF_MAX_SPEED, INT32_TRIG_FRAC, MAX_PPRZ, PPRZ_ITRIG_COS, PPRZ_ITRIG_SIN, Int32Eulers::psi, RADIO_PITCH, RADIO_ROLL, SPEED_BFP_OF_REAL, speed_sp, stateGetNedToBodyEulers_i(), RadioControl::values, FloatVect3::x, and FloatVect3::y.

Referenced by guidance_h_run().

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

◆ reset_guidance_reference_from_current_position()

◆ send_gh()

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

Definition at line 64 of file guidance_h.c.

References dev, guidance_h, HorizontalGuidanceReference::pos, HorizontalGuidanceSetpoint::pos, HorizontalGuidance::ref, HorizontalGuidance::sp, stateGetPositionNed_i(), Int32Vect2::x, NedCoor_i::x, Int32Vect2::y, and NedCoor_i::y.

Referenced by guidance_h_init().

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

◆ send_href()

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

Variable Documentation

◆ guidance_h

◆ guidance_h_cmd

struct StabilizationSetpoint guidance_h_cmd

horizontal guidance command.

In north/east with INT32_ANGLE_FRAC

Definition at line 1 of file guidance_h.c.

◆ rc_ev

abi_event rc_ev
static

Definition at line 58 of file guidance_h.c.

Referenced by guidance_h_init().