Paparazzi UAS
v5.8.2_stable-0-g6260b7c
Paparazzi is a free software Unmanned Aircraft System.
|
#include "modules/nav/nav_survey_poly_osam.h"
#include "firmwares/fixedwing/nav.h"
#include "state.h"
#include "autopilot.h"
#include "generated/flight_plan.h"
Go to the source code of this file.
Data Structures | |
struct | Point2D |
struct | Line |
Macros | |
#define | POLY_OSAM_DEFAULT_SIZE 5 |
#define | POLY_OSAM_DEFAULT_SWEEP 100 |
#define | POLY_OSAM_ENTRY_RADIUS 0 |
Default entry radius, if 0 default to half sweep. More... | |
#define | POLY_OSAM_MIN_RADIUS 30 |
if 0 never check for min radius More... | |
#define | POLY_OSAM_FIRST_SWEEP_DISTANCE 0 |
if 0 default to half sweep More... | |
#define | POLY_OSAM_POLYGONSIZE 10 |
maximum number of polygon corners More... | |
#define | POLY_OSAM_USE_FULL_CIRCLE TRUE |
#define | PolygonSize POLY_OSAM_POLYGONSIZE |
#define | MaxFloat 1000000000 |
#define | MinFloat -1000000000 |
#define | LINE_START_FUNCTION {} |
#define | LINE_STOP_FUNCTION {} |
Enumerations | |
enum | SurveyStatus { Init, Entry, Sweep, SweepCircle, Init, Entry, Sweep, Turn } |
This routine will cover the enitre area of any Polygon defined in the flightplan which is a convex polygon. More... | |
Functions | |
bool_t | nav_survey_poly_osam_setup_towards (uint8_t FirstWP, uint8_t Size, float Sweep, int SecondWP) |
Setup "dynamic" polygon survey with sweep orientation towards a waypoint. More... | |
static void | TranslateAndRotateFromWorld (struct Point2D *p, float Zrot, float transX, float transY) |
static void | RotateAndTranslateToWorld (struct Point2D *p, float Zrot, float transX, float transY) |
Rotates point round z by -Zrot then translates so (0,0) becomes (transX,transY) More... | |
static void | FindInterceptOfTwoLines (float *x, float *y, struct Line L1, struct Line L2) |
static float | EvaluateLineForX (float y, struct Line L) |
bool_t | nav_survey_poly_osam_setup (uint8_t EntryWP, uint8_t Size, float sw, float Orientation) |
Setup polygon survey. More... | |
bool_t | nav_survey_poly_osam_run (void) |
Run polygon survey. More... | |
Variables | |
uint8_t | Poly_Size = POLY_OSAM_DEFAULT_SIZE |
float | Poly_Sweep = POLY_OSAM_DEFAULT_SWEEP |
bool_t | use_full_circle = POLY_OSAM_USE_FULL_CIRCLE |
static enum SurveyStatus | CSurveyStatus |
static struct Point2D | SmallestCorner |
static struct Line | Edges [PolygonSize] |
static float | EdgeMaxY [PolygonSize] |
static float | EdgeMinY [PolygonSize] |
static float | SurveyTheta |
static float | dSweep |
static float | SurveyRadius |
static struct Point2D | SurveyToWP |
static struct Point2D | SurveyFromWP |
static struct Point2D | SurveyCircle |
static uint8_t | SurveyEntryWP |
static uint8_t | SurveySize |
static float | SurveyCircleQdr |
static float | MaxY |
uint16_t | PolySurveySweepNum |
uint16_t | PolySurveySweepBackNum |
float | EntryRadius |
struct Point2D |
Definition at line 44 of file nav_line_osam.c.
Data Fields | ||
---|---|---|
float | x | |
float | y |
struct Line |
Definition at line 87 of file nav_survey_poly_osam.c.
Data Fields | ||
---|---|---|
float | b | |
float | m | |
float | x |
#define LINE_START_FUNCTION {} |
Definition at line 99 of file nav_survey_poly_osam.c.
Referenced by nav_survey_poly_osam_run().
#define LINE_STOP_FUNCTION {} |
Definition at line 102 of file nav_survey_poly_osam.c.
Referenced by nav_survey_poly_osam_run(), and nav_survey_poly_osam_setup().
#define MaxFloat 1000000000 |
Definition at line 95 of file nav_survey_poly_osam.c.
Referenced by nav_survey_poly_osam_setup().
#define MinFloat -1000000000 |
Definition at line 96 of file nav_survey_poly_osam.c.
#define POLY_OSAM_DEFAULT_SIZE 5 |
Definition at line 39 of file nav_survey_poly_osam.c.
#define POLY_OSAM_DEFAULT_SWEEP 100 |
Definition at line 43 of file nav_survey_poly_osam.c.
#define POLY_OSAM_ENTRY_RADIUS 0 |
Default entry radius, if 0 default to half sweep.
Definition at line 48 of file nav_survey_poly_osam.c.
Referenced by nav_survey_poly_osam_setup().
#define POLY_OSAM_FIRST_SWEEP_DISTANCE 0 |
if 0 default to half sweep
Definition at line 58 of file nav_survey_poly_osam.c.
Referenced by nav_survey_poly_osam_setup().
#define POLY_OSAM_MIN_RADIUS 30 |
if 0 never check for min radius
Definition at line 53 of file nav_survey_poly_osam.c.
Referenced by nav_survey_poly_osam_run().
#define POLY_OSAM_POLYGONSIZE 10 |
maximum number of polygon corners
Definition at line 63 of file nav_survey_poly_osam.c.
#define POLY_OSAM_USE_FULL_CIRCLE TRUE |
Definition at line 67 of file nav_survey_poly_osam.c.
#define PolygonSize POLY_OSAM_POLYGONSIZE |
Definition at line 94 of file nav_survey_poly_osam.c.
enum SurveyStatus |
This routine will cover the enitre area of any Polygon defined in the flightplan which is a convex polygon.
Enumerator | |
---|---|
Init | |
Entry | |
Sweep | |
SweepCircle | |
Init | |
Entry | |
Sweep | |
Turn |
Definition at line 110 of file nav_survey_poly_osam.c.
|
static |
Definition at line 592 of file nav_survey_poly_osam.c.
References Line::b, and Line::m.
Referenced by nav_survey_poly_osam_run(), and nav_survey_poly_osam_setup().
Definition at line 585 of file nav_survey_poly_osam.c.
References Line::b, and Line::m.
Referenced by nav_survey_poly_osam_setup().
bool_t nav_survey_poly_osam_run | ( | void | ) |
Run polygon survey.
Definition at line 335 of file nav_survey_poly_osam.c.
References CSurveyStatus, dc_autoshoot, DC_AUTOSHOOT_STOP, dSweep, EdgeMaxY, EdgeMinY, Edges, Entry, EvaluateLineForX(), FALSE, Init, LINE_START_FUNCTION, LINE_STOP_FUNCTION, MaxY, nav_approaching_xy(), nav_circle_XY(), nav_init_stage(), nav_route_xy(), NavCircleCount, NavCircleCountNoRewind, NavQdrCloseTo, NavVerticalAltitudeMode, NavVerticalAutoThrottleMode, POLY_OSAM_MIN_RADIUS, PolySurveySweepBackNum, PolySurveySweepNum, RotateAndTranslateToWorld(), SmallestCorner, stateGetPositionEnu_f(), stateGetPositionUtm_f(), SurveyCircle, SurveyCircleQdr, SurveyEntryWP, SurveyFromWP, SurveyRadius, SurveySize, SurveyTheta, SurveyToWP, Sweep, SweepCircle, TranslateAndRotateFromWorld(), TRUE, use_full_circle, waypoints, Point2D::x, EnuCoor_f::x, Point2D::y, and EnuCoor_f::y.
Setup polygon survey.
FirstWP | first waypoint/corner of the polygon |
Size | number of waypoints/corners used to define the polygon |
Sweep | distance between scan lines |
Orientation | angle of scan lines in degrees (CCW, east) |
Definition at line 130 of file nav_survey_poly_osam.c.
References Line::b, CSurveyStatus, dSweep, EdgeMaxY, EdgeMinY, Edges, Entry, EntryRadius, EvaluateLineForX(), FALSE, FindInterceptOfTwoLines(), Init, LINE_STOP_FUNCTION, Line::m, MaxFloat, MaxY, POLY_OSAM_ENTRY_RADIUS, POLY_OSAM_FIRST_SWEEP_DISTANCE, PolySurveySweepBackNum, PolySurveySweepNum, SmallestCorner, SurveyCircle, SurveyCircleQdr, SurveyEntryWP, SurveyFromWP, SurveyRadius, SurveySize, SurveyTheta, SurveyToWP, TranslateAndRotateFromWorld(), TRUE, waypoints, point::x, Point2D::x, point::y, and Point2D::y.
Referenced by nav_survey_poly_osam_setup_towards().
bool_t nav_survey_poly_osam_setup_towards | ( | uint8_t | FirstWP, |
uint8_t | Size, | ||
float | Sweep, | ||
int | SecondWP | ||
) |
Setup "dynamic" polygon survey with sweep orientation towards a waypoint.
Computes the sweep orientation angle from the line FirstWP-SecondWP. If you pass zero for Size and/or Sweep it will use the global Poly_Size and Poly_Sweep variables respectively (which can be changed via telemetry/settings).
FirstWP | first waypoint/corner of the polygon |
Size | number of waypoints/corners used to define the polygon, if zero uses Poly_Size |
Sweep | distance between scan lines, if zero uses Poly_Sweep |
SecondWP | second waypoint towards which the sweep orientation is computed |
Definition at line 74 of file nav_survey_poly_osam.c.
References nav_survey_poly_osam_setup(), Poly_Size, Poly_Sweep, waypoints, point::x, and point::y.
|
static |
Rotates point round z by -Zrot then translates so (0,0) becomes (transX,transY)
Definition at line 574 of file nav_survey_poly_osam.c.
References Point2D::x, and Point2D::y.
Referenced by nav_survey_poly_osam_run().
|
static |
Definition at line 561 of file nav_survey_poly_osam.c.
References Point2D::x, and Point2D::y.
Referenced by nav_survey_poly_osam_run(), and nav_survey_poly_osam_setup().
|
static |
Definition at line 111 of file nav_survey_poly_osam.c.
Referenced by nav_survey_poly_osam_run(), and nav_survey_poly_osam_setup().
|
static |
Definition at line 117 of file nav_survey_poly_osam.c.
Referenced by nav_survey_poly_osam_run(), and nav_survey_poly_osam_setup().
|
static |
Definition at line 114 of file nav_survey_poly_osam.c.
Referenced by nav_survey_poly_osam_run(), and nav_survey_poly_osam_setup().
|
static |
Definition at line 115 of file nav_survey_poly_osam.c.
Referenced by nav_survey_poly_osam_run(), and nav_survey_poly_osam_setup().
|
static |
Definition at line 113 of file nav_survey_poly_osam.c.
Referenced by nav_survey_poly_osam_run(), and nav_survey_poly_osam_setup().
float EntryRadius |
Definition at line 128 of file nav_survey_poly_osam.c.
Referenced by nav_survey_poly_osam_setup().
|
static |
Definition at line 125 of file nav_survey_poly_osam.c.
Referenced by nav_survey_poly_osam_run(), and nav_survey_poly_osam_setup().
uint8_t Poly_Size = POLY_OSAM_DEFAULT_SIZE |
Definition at line 70 of file nav_survey_poly_osam.c.
Referenced by nav_survey_poly_osam_setup_towards().
float Poly_Sweep = POLY_OSAM_DEFAULT_SWEEP |
Definition at line 71 of file nav_survey_poly_osam.c.
Referenced by nav_survey_poly_osam_setup_towards().
uint16_t PolySurveySweepBackNum |
Definition at line 127 of file nav_survey_poly_osam.c.
Referenced by nav_survey_poly_osam_run(), and nav_survey_poly_osam_setup().
uint16_t PolySurveySweepNum |
Definition at line 126 of file nav_survey_poly_osam.c.
Referenced by nav_survey_poly_osam_run(), and nav_survey_poly_osam_setup().
|
static |
Definition at line 112 of file nav_survey_poly_osam.c.
Referenced by nav_survey_poly_osam_run(), and nav_survey_poly_osam_setup().
|
static |
Definition at line 121 of file nav_survey_poly_osam.c.
Referenced by nav_survey_poly_osam_run(), and nav_survey_poly_osam_setup().
|
static |
Definition at line 124 of file nav_survey_poly_osam.c.
Referenced by nav_survey_poly_osam_run(), and nav_survey_poly_osam_setup().
|
static |
Definition at line 122 of file nav_survey_poly_osam.c.
Referenced by nav_survey_poly_osam_run(), and nav_survey_poly_osam_setup().
|
static |
Definition at line 120 of file nav_survey_poly_osam.c.
Referenced by nav_survey_poly_osam_run(), and nav_survey_poly_osam_setup().
|
static |
Definition at line 118 of file nav_survey_poly_osam.c.
Referenced by nav_survey_poly_osam_run(), and nav_survey_poly_osam_setup().
|
static |
Definition at line 123 of file nav_survey_poly_osam.c.
Referenced by nav_survey_poly_osam_run(), and nav_survey_poly_osam_setup().
|
static |
Definition at line 116 of file nav_survey_poly_osam.c.
Referenced by nav_survey_poly_osam_run(), and nav_survey_poly_osam_setup().
|
static |
Definition at line 119 of file nav_survey_poly_osam.c.
Referenced by nav_survey_poly_osam_run(), and nav_survey_poly_osam_setup().
bool_t use_full_circle = POLY_OSAM_USE_FULL_CIRCLE |
Definition at line 72 of file nav_survey_poly_osam.c.
Referenced by nav_survey_poly_osam_run().