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

Advanced polygon survey for fixedwings from Uni Stuttgart. More...

#include "nav_survey_polygon.h"
#include "firmwares/fixedwing/nav.h"
#include "state.h"
#include "autopilot.h"
#include "generated/flight_plan.h"
+ Include dependency graph for nav_survey_polygon.c:

Go to the source code of this file.

Functions

static void nav_points (struct FloatVect2 start, struct FloatVect2 end)
 
static bool intercept_two_lines (struct FloatVect2 *p, struct FloatVect2 x, struct FloatVect2 y, float a1, float a2, float b1, float b2)
 intercept two lines and give back the point of intersection More...
 
static bool get_two_intersects (struct FloatVect2 *x, struct FloatVect2 *y, struct FloatVect2 a, struct FloatVect2 b)
 intersects a line with the polygon and gives back the two intersection points More...
 
void nav_survey_polygon_setup (uint8_t first_wp, uint8_t size, float angle, float sweep_width, float shot_dist, float min_rad, float altitude)
 initializes the variables needed for the survey to start More...
 
bool nav_survey_polygon_run (void)
 main navigation routine. More...
 

Variables

struct SurveyPolyAdv survey
 

Detailed Description

Advanced polygon survey for fixedwings from Uni Stuttgart.

Definition in file nav_survey_polygon.c.

Function Documentation

◆ get_two_intersects()

static bool get_two_intersects ( struct FloatVect2 x,
struct FloatVect2 y,
struct FloatVect2  a,
struct FloatVect2  b 
)
static

intersects a line with the polygon and gives back the two intersection points

Returns
TRUE if two intersection can be found, else FALSE
Parameters
x,yintersection points
a,bdefine the line to intersection

Definition at line 78 of file nav_survey_polygon.c.

References b, SurveyPolyAdv::dir_vec, intercept_two_lines(), SurveyPolyAdv::poly_count, SurveyPolyAdv::poly_first, survey, waypoints, FloatVect2::x, point::x, FloatVect2::y, and point::y.

Referenced by nav_survey_polygon_run(), and nav_survey_polygon_setup().

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

◆ intercept_two_lines()

static bool intercept_two_lines ( struct FloatVect2 p,
struct FloatVect2  x,
struct FloatVect2  y,
float  a1,
float  a2,
float  b1,
float  b2 
)
static

intercept two lines and give back the point of intersection

Returns
FALSE if no intersection can be found or intersection does not lie between points a and b else TRUE
Parameters
preturns intersection
x,yfirst line is defined by point x and y (goes through this points)
a1,a2,b1,b2second line by coordinates a1/a2, b1/b2

Definition at line 55 of file nav_survey_polygon.c.

References logger_uart_parse::a1, logger_uart_parse::a2, p, FloatVect2::x, and FloatVect2::y.

Referenced by get_two_intersects().

+ Here is the caller graph for this function:

◆ nav_points()

static void nav_points ( struct FloatVect2  start,
struct FloatVect2  end 
)
static

Definition at line 42 of file nav_survey_polygon.c.

References nav_route_xy(), FloatVect2::x, and FloatVect2::y.

Referenced by nav_survey_polygon_run().

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

◆ nav_survey_polygon_run()

◆ nav_survey_polygon_setup()

void nav_survey_polygon_setup ( uint8_t  first_wp,
uint8_t  size,
float  angle,
float  sweep_width,
float  shot_dist,
float  min_rad,
float  altitude 
)

initializes the variables needed for the survey to start

Parameters
first_wpthe first Waypoint of the polygon
sizethe number of points that make up the polygon
angleangle in which to do the flyovers
sweep_widthdistance between the sweeps
shot_distdistance between the shots
min_radminimal radius when navigating
altitudethe altitude that must be reached before the flyover starts

Definition at line 135 of file nav_survey_polygon.c.

References altitude, SurveyPolyAdv::dir_vec, ENTRY, SurveyPolyAdv::entry_center, ERR, FLOAT_VECT2_NORMALIZE, get_two_intersects(), NavVerticalAltitudeMode, NavVerticalAutoThrottleMode, SurveyPolyAdv::poly_count, SurveyPolyAdv::poly_first, SurveyPolyAdv::psa_altitude, SurveyPolyAdv::psa_min_rad, SurveyPolyAdv::psa_shot_dist, SurveyPolyAdv::psa_sweep_width, SurveyPolyAdv::rad_vec, SurveyPolyAdv::return_angle, SurveyPolyAdv::seg_end, SurveyPolyAdv::seg_start, SurveyPolyAdv::segment_angle, SurveyPolyAdv::stage, survey, sweep, SurveyPolyAdv::sweep_vec, VECT2_COPY, VECT2_DIFF, VECT2_SMUL, VECT2_SUM, waypoints, FloatVect2::x, point::x, FloatVect2::y, and point::y.

+ Here is the call graph for this function:

Variable Documentation

◆ survey

struct SurveyPolyAdv survey