Paparazzi UAS  v5.18.0_stable
Paparazzi is a free software Unmanned Aircraft System.
gvf.h File Reference
#include "std.h"
+ Include dependency graph for gvf.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  gvf_con
 
struct  gvf_tra
 
struct  gvf_seg
 
struct  gvf_grad
 
struct  gvf_Hess
 

Macros

#define GVF_GRAVITY   9.806
 

Enumerations

enum  trajectories { LINE = 0, ELLIPSE, SIN, NONE = 255 }
 

Functions

void gvf_init (void)
 
void gvf_control_2D (float ke, float kn, float e, struct gvf_grad *, struct gvf_Hess *)
 
void gvf_set_direction (int8_t s)
 
bool gvf_line_XY_heading (float x, float y, float heading)
 
bool gvf_line_XY1_XY2 (float x1, float y1, float x2, float y2)
 
bool gvf_line_wp1_wp2 (uint8_t wp1, uint8_t wp2)
 
bool gvf_segment_loop_XY1_XY2 (float x1, float y1, float x2, float y2, float d1, float d2)
 
bool gvf_segment_loop_wp1_wp2 (uint8_t wp1, uint8_t wp2, float d1, float d2)
 
bool gvf_segment_XY1_XY2 (float x1, float y1, float x2, float y2)
 
bool gvf_segment_wp1_wp2 (uint8_t wp1, uint8_t wp2)
 
bool gvf_line_wp_heading (uint8_t wp, float heading)
 
bool gvf_ellipse_wp (uint8_t wp, float a, float b, float alpha)
 
bool gvf_ellipse_XY (float x, float y, float a, float b, float alpha)
 
bool gvf_sin_XY_alpha (float x, float y, float alpha, float w, float off, float A)
 
bool gvf_sin_wp1_wp2 (uint8_t wp1, uint8_t wp2, float w, float off, float A)
 
bool gvf_sin_wp_alpha (uint8_t wp, float alpha, float w, float off, float A)
 

Variables

gvf_con gvf_control
 
gvf_tra gvf_trajectory
 

Detailed Description

Guidance algorithm based on vector fields

Definition in file gvf.h.


Data Structure Documentation

◆ gvf_con

struct gvf_con

Definition at line 42 of file gvf.h.

Data Fields
float error
float ke
float kn
int8_t s

◆ gvf_tra

struct gvf_tra

Definition at line 58 of file gvf.h.

Data Fields
float p[16]
enum trajectories type

◆ gvf_seg

struct gvf_seg

Definition at line 71 of file gvf.h.

Data Fields
int seg
float x1
float x2
float y1
float y2

◆ gvf_grad

struct gvf_grad

Definition at line 81 of file gvf.h.

Data Fields
float nx
float ny
float nz

◆ gvf_Hess

struct gvf_Hess

Definition at line 87 of file gvf.h.

Data Fields
float H11
float H12
float H13
float H21
float H22
float H23
float H31
float H32
float H33

Macro Definition Documentation

◆ GVF_GRAVITY

#define GVF_GRAVITY   9.806

Definition at line 31 of file gvf.h.

Enumeration Type Documentation

◆ trajectories

Enumerator
LINE 
ELLIPSE 
SIN 
NONE 

Definition at line 51 of file gvf.h.

Function Documentation

◆ gvf_control_2D()

void gvf_control_2D ( float  ke,
float  kn,
float  e,
struct gvf_grad ,
struct gvf_Hess  
)

◆ gvf_ellipse_wp()

bool gvf_ellipse_wp ( uint8_t  wp,
float  a,
float  b,
float  alpha 
)

Definition at line 397 of file gvf.c.

References alpha, b, gvf_ellipse_XY(), and waypoints.

+ Here is the call graph for this function:

◆ gvf_ellipse_XY()

bool gvf_ellipse_XY ( float  x,
float  y,
float  a,
float  b,
float  alpha 
)

◆ gvf_init()

void gvf_init ( void  )

Definition at line 139 of file gvf.c.

References DefaultPeriodic, gvf_control, gvf_trajectory, gvf_con::ke, gvf_con::kn, NONE, register_periodic_telemetry(), gvf_con::s, send_circle(), send_gvf(), send_segment(), and gvf_tra::type.

+ Here is the call graph for this function:

◆ gvf_line_wp1_wp2()

bool gvf_line_wp1_wp2 ( uint8_t  wp1,
uint8_t  wp2 
)

Definition at line 274 of file gvf.c.

References gvf_line_XY1_XY2(), waypoints, point::x, and point::y.

+ Here is the call graph for this function:

◆ gvf_line_wp_heading()

bool gvf_line_wp_heading ( uint8_t  wp,
float  heading 
)

Definition at line 349 of file gvf.c.

References b, gvf_line_XY_heading(), heading, waypoints, point::x, and point::y.

+ Here is the call graph for this function:

◆ gvf_line_XY1_XY2()

bool gvf_line_XY1_XY2 ( float  x1,
float  y1,
float  x2,
float  y2 
)

Definition at line 257 of file gvf.c.

References gvf_line_XY_heading(), gvf_segment, horizontal_mode, HORIZONTAL_MODE_ROUTE, gvf_seg::seg, gvf_seg::x1, gvf_seg::x2, gvf_seg::y1, and gvf_seg::y2.

Referenced by gvf_line_wp1_wp2(), and gvf_segment_XY1_XY2().

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

◆ gvf_line_XY_heading()

bool gvf_line_XY_heading ( float  x,
float  y,
float  heading 
)

Definition at line 250 of file gvf.c.

References b, gvf_line(), gvf_set_direction(), and heading.

Referenced by gvf_line_wp_heading(), and gvf_line_XY1_XY2().

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

◆ gvf_segment_loop_wp1_wp2()

bool gvf_segment_loop_wp1_wp2 ( uint8_t  wp1,
uint8_t  wp2,
float  d1,
float  d2 
)

Definition at line 307 of file gvf.c.

References d1, d2, gvf_segment_loop_XY1_XY2(), waypoints, point::x, and point::y.

+ Here is the call graph for this function:

◆ gvf_segment_loop_XY1_XY2()

bool gvf_segment_loop_XY1_XY2 ( float  x1,
float  y1,
float  x2,
float  y2,
float  d1,
float  d2 
)

Definition at line 284 of file gvf.c.

References alpha, d1, d2, gvf_control, gvf_line(), gvf_segment, horizontal_mode, HORIZONTAL_MODE_ROUTE, out_of_segment_area(), s, gvf_con::s, gvf_seg::seg, gvf_seg::x1, gvf_seg::x2, gvf_seg::y1, and gvf_seg::y2.

Referenced by gvf_segment_loop_wp1_wp2().

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

◆ gvf_segment_wp1_wp2()

bool gvf_segment_wp1_wp2 ( uint8_t  wp1,
uint8_t  wp2 
)

Definition at line 339 of file gvf.c.

References gvf_segment_XY1_XY2(), waypoints, point::x, and point::y.

+ Here is the call graph for this function:

◆ gvf_segment_XY1_XY2()

bool gvf_segment_XY1_XY2 ( float  x1,
float  y1,
float  x2,
float  y2 
)

Definition at line 317 of file gvf.c.

References gvf_line_XY1_XY2(), p, and stateGetPositionEnu_f().

Referenced by gvf_nav_points(), and gvf_segment_wp1_wp2().

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

◆ gvf_set_direction()

void gvf_set_direction ( int8_t  s)

Definition at line 222 of file gvf.c.

References gvf_control, s, and gvf_con::s.

Referenced by gvf_line_XY_heading(), and gvf_nav_direction_circle().

+ Here is the caller graph for this function:

◆ gvf_sin_wp1_wp2()

bool gvf_sin_wp1_wp2 ( uint8_t  wp1,
uint8_t  wp2,
float  w,
float  off,
float  A 
)

Definition at line 428 of file gvf.c.

References A, alpha, gvf_sin_XY_alpha(), waypoints, point::x, and point::y.

+ Here is the call graph for this function:

◆ gvf_sin_wp_alpha()

bool gvf_sin_wp_alpha ( uint8_t  wp,
float  alpha,
float  w,
float  off,
float  A 
)

Definition at line 447 of file gvf.c.

References A, alpha, gvf_sin_XY_alpha(), waypoints, point::x, and point::y.

+ Here is the call graph for this function:

◆ gvf_sin_XY_alpha()

bool gvf_sin_XY_alpha ( float  x,
float  y,
float  alpha,
float  w,
float  off,
float  A 
)

Definition at line 405 of file gvf.c.

References A, alpha, b, gvf_con::error, gvf_control, gvf_control_2D(), gvf_sin_info(), gvf_sin_par, gvf_trajectory, gvf_con::ke, gvf_s_par::ke, gvf_s_par::kn, gvf_tra::p, and gvf_tra::type.

Referenced by gvf_sin_wp1_wp2(), and gvf_sin_wp_alpha().

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

Variable Documentation

◆ gvf_control

◆ gvf_trajectory