33#include "generated/flight_plan.h"
60 divider = (((b2 - a2) * (y.
x - x.
x)) + ((x.
y - y.
y) * (b1 - a1)));
61 if (
divider == 0) {
return false; }
62 fac = ((y.
x * (x.
y - a2)) + (x.
x * (a2 - y.
y)) + (a1 * (y.
y - x.
y))) /
divider;
63 if (
fac > 1.0) {
return false; }
64 if (
fac < 0.0) {
return false; }
66 p->x = a1 +
fac * (b1 - a1);
67 p->y = a2 +
fac * (b2 - a2);
142 if (angle < 0.0) { angle += 360.0; }
143 if (angle >= 360.0) { angle -= 360.0; }
163 }
else if (angle <= 135.0) {
169 }
else if (angle <= 225.0) {
Core autopilot interface common to all firmwares.
struct point waypoints[NB_WAYPOINT]
size == nb_waypoint, waypoint 0 is a dummy waypoint
uint8_t dc_survey(float interval, float x, float y)
Sets the dc control in distance mode.
uint8_t dc_stop(void)
Stop dc control.
Standard Digital Camera Control Interface.
#define FLOAT_VECT2_NORMALIZE(_v)
#define VECT2_SMUL(_vo, _vi, _s)
#define VECT2_DIFF(_c, _a, _b)
#define VECT2_COPY(_a, _b)
#define VECT2_SUM(_c, _a, _b)
static struct UtmCoor_f * stateGetPositionUtm_f(void)
Get position in UTM coordinates (float).
bool gvf_segment_XY1_XY2(float x1, float y1, float x2, float y2)
void gvf_set_direction(int8_t s)
bool gvf_ellipse_XY(float x, float y, float a, float b, float alpha)
Guidance algorithm based on vector fields.
bool nav_approaching_xy(float x, float y, float from_x, float from_y, float approaching_time)
Decide if the UAV is approaching the current waypoint.
void nav_init_stage(void)
needs to be implemented by fixedwing and rotorcraft seperately
Fixedwing Navigation library.
#define NavCourseCloseTo(x)
#define NavVerticalAltitudeMode(_alt, _pre_climb)
Set the vertical mode to altitude control with the specified altitude setpoint and climb pre-command.
#define NavVerticalAutoThrottleMode(_pitch)
Set the climb control to auto-throttle with the specified pitch pre-command.
static bool gvf_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
static bool gvf_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
void gvf_nav_direction_circle(float rad)
main navigation routine.
void gvf_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
struct gvf_SurveyPolyAdv gvf_survey
bool gvf_nav_survey_polygon_run(void)
static void gvf_nav_points(struct FloatVect2 start, struct FloatVect2 end)
struct FloatVect2 seg_center2
struct FloatVect2 rad_vec
struct FloatVect2 ret_end
struct FloatVect2 entry_center
struct FloatVect2 seg_end
enum gvf_SurveyStage stage
struct FloatVect2 dir_vec
struct FloatVect2 seg_start
struct FloatVect2 sweep_vec
struct FloatVect2 seg_center1
struct FloatVect2 ret_start
#define CARROT
default approaching_time for a wp
API to get/set the generic vehicle states.
unsigned char uint8_t
Typedef defining 8 bit unsigned char type.