34 #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);
139 float divider, angle_rad = angle / 180.0 * M_PI;
141 if (angle < 0.0) { angle += 360.0; }
142 if (angle >= 360.0) { angle -= 360.0; }
156 if (angle <= 45.0 || angle >= 315.0) {
162 }
else if (angle <= 135.0) {
168 }
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 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
void nav_route_xy(float last_wp_x, float last_wp_y, float wp_x, float wp_y)
Computes the carrot position along the desired segment.
void nav_circle_XY(float x, float y, float radius)
Navigates around (x, y).
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 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 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
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
static void nav_points(struct FloatVect2 start, struct FloatVect2 end)
struct SurveyPolyAdv survey
bool nav_survey_polygon_run(void)
main navigation routine.
Advanced polygon survey for fixedwings from Uni Stuttgart.
struct FloatVect2 seg_center2
struct FloatVect2 seg_start
struct FloatVect2 ret_end
struct FloatVect2 seg_end
struct FloatVect2 sweep_vec
struct FloatVect2 entry_center
struct FloatVect2 ret_start
struct FloatVect2 rad_vec
struct FloatVect2 dir_vec
struct FloatVect2 seg_center1
#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.