43#define CARROT_DIST 2.f
47#ifndef NAVIGATION_FREQUENCY
48#if PERIODIC_FREQUENCY == 512
49#define NAVIGATION_FREQUENCY 16
51#define NAVIGATION_FREQUENCY 20
57#ifndef DEFAULT_CIRCLE_RADIUS
58#define DEFAULT_CIRCLE_RADIUS 6.0f
62#ifndef ARRIVED_AT_WAYPOINT
63#define ARRIVED_AT_WAYPOINT 3.0f
67#ifndef FAILSAFE_MODE_DISTANCE
68#define FAILSAFE_MODE_DISTANCE (1.2*MAX_DIST_FROM_HOME)
72#define NAV_MODE_WAYPOINT 0
73#define NAV_MODE_ROUTE 1
74#define NAV_MODE_CIRCLE 2
75#define NAV_MODE_HEADING 3
76#define NAV_MODE_MANUAL 4
134#define GetPosX() (stateGetPositionEnu_f()->x)
136#define GetPosY() (stateGetPositionEnu_f()->y)
138#define GetPosAlt() (stateGetPositionEnu_f()->z+stateGetHmslOrigin_f())
140#define GetPosHeight() (stateGetPositionEnu_f()->z)
147#define GetAltRef() (stateGetHmslOrigin_f())
151#define NormCourse(x) { \
152 while (x < 0) x += 360; \
153 while (x >= 360) x -= 360; \
156#define NormCourseRad(x) { \
157 while (x < 0) x += 2*M_PI; \
158 while (x >= 2*M_PI) x -= 2*M_PI; \
200#define NavSetFailsafe nav_set_failsafe
202#define NavSetGroundReferenceHere nav_reset_reference
203#define NavSetAltitudeReferenceHere nav_reset_alt
205#define NavSetWaypointHere waypoint_set_here_2d
206#define NavCopyWaypoint waypoint_copy
207#define NavCopyWaypointPositionOnly waypoint_position_copy
212#define NavCheckWaypointTime(wp, time) nav_check_wp_time(&waypoints[wp].enu_f, time)
220#define NavAttitude(_roll) { \
221 nav.mode = NAV_MODE_MANUAL; \
223 BoundAbs(nav.turn, 1.f); \
227#define NavVerticalThrottleMode(_speed) { \
228 nav.speed = _speed; \
229 BoundAbs(nav.speed, 1.f); \
233#define NavHeading nav_set_heading_rad
235#define NavSetMaxSpeed(_speed) {}
306#define navigation_IncreaseShift(x) { if (x==0) nav.shift = 0; else nav.shift += x; }
308#define navigation_SetNavRadius(x) { if (x==1) nav.radius = DEFAULT_CIRCLE_RADIUS; else if (x==-1) nav.radius = -DEFAULT_CIRCLE_RADIUS; else nav.radius = x; }
312#define NavFollow nav_follow(_id, _dist, _height) {}
318#define NavGlide(_start_wp, _wp) {}
319#define NavVerticalAutoThrottleMode(_pitch) {}
320#define NavVerticalAutoPitchMode(_throttle) {}
321#define NavVerticalAltitudeMode(_alt, _pre_climb) {}
322#define NavVerticalClimbMode(_climb) {}
uint8_t autopilot_get_mode(void)
get autopilot mode
bool autopilot_set_motors_on(bool motors_on)
turn motors on/off, eventually depending of the current mode set kill_throttle accordingly FIXME is i...
Core autopilot interface common to all firmwares.
Common flight_plan functions shared between fixedwing and rotorcraft.
struct point waypoints[NB_WAYPOINT]
size == nb_waypoint, waypoint 0 is a dummy waypoint
#define VECT3_COPY(_a, _b)
void nav_oval(uint8_t p1, uint8_t p2, float radius)
#define NavApproaching(wp, time)
#define NavCircleWaypoint(wp, radius)
#define NavGotoWaypoint(_wp)
#define NavApproachingFrom(wp, from, time)
#define NavSegment(_start, _end)
static void nav_goto(struct EnuCoor_f *wp)
static void nav_route(struct EnuCoor_f *wp_start, struct EnuCoor_f *wp_end)
static void nav_circle(struct EnuCoor_f *wp_center, float radius)
static bool nav_approaching(struct EnuCoor_f *wp, struct EnuCoor_f *from, float approaching_time)
Paparazzi floating point math for geodetic calculations.
vector in East North Up coordinates Units: meters
void nav_home(void)
Home mode navigation (circle around HOME)
void nav_reset_reference(void)
Reset the geographic reference to the current GPS fix.
void nav_register_oval(navigation_oval_init _nav_oval_init, navigation_oval nav_oval)
void nav_set_heading_current(void)
Set heading to the current yaw angle.
void nav_reset_alt(void)
Reset the altitude reference to the current GPS alt.
void nav_set_heading_towards_waypoint(uint8_t wp)
Set heading in the direction of a waypoint.
void compute_dist2_to_home(void)
Computes squared distance to the HOME waypoint potentially sets too_far_from_home.
bool nav_is_in_flight(void)
void nav_set_heading_towards(float x, float y)
Set heading to point towards x,y position in local coordinates.
struct RotorcraftNavigation nav
void nav_init(void)
Navigation Initialisation.
void nav_parse_MOVE_WP(uint8_t *buf)
void nav_register_circle(navigation_circle nav_circle)
void nav_register_goto_wp(navigation_goto nav_goto, navigation_route nav_route, navigation_approaching nav_approaching)
Register functions.
navigation_approaching nav_approaching
void nav_parse_BLOCK(uint8_t *buf)
navigation_circle nav_circle
void nav_set_heading_towards_target(void)
Set heading in the direction of the target.
static void nav_oval_init(void)
float get_dist2_to_point(struct EnuCoor_f *p)
Returns squared horizontal distance to given point.
navigation_oval_init nav_oval_init
static void NavKillThrottle(void)
void nav_set_heading_rad(float rad)
heading utility functions
static void NavResurrect(void)
void nav_set_heading_deg(float deg)
Set nav_heading in degrees.
navigation_route nav_route
bool nav_check_wp_time(struct EnuCoor_f *wp, uint16_t stay_time)
Check the time spent in a radius of 'ARRIVED_AT_WAYPOINT' around a wp
void nav_periodic_task(void)
Navigation main: call to the code generated from the XML flight plan.
float get_dist2_to_waypoint(uint8_t wp_id)
Returns squared horizontal distance to given waypoint.
struct EnuCoor_f target
final target position (in meters)
void nav_set_failsafe(void)
float failsafe_mode_dist2
maximum squared distance to home wp before going to failsafe mode
float turn
turn rate setpoint
void(* nav_rover_oval_init)(void)
struct EnuCoor_f carrot
carrot position
float shift
lateral shift (in meters)
float speed
speed setpoint
float dist2_to_home
squared distance to home waypoint
nav_rover_route nav_route
struct EnuCoor_f target
final target
bool too_far_from_home
too_far flag
void(* nav_rover_goto)(struct EnuCoor_f *wp)
void(* nav_rover_circle)(struct EnuCoor_f *wp_center, float radius)
void nav_set_manual(float speed, float turn)
struct EnuCoor_f last_pos
last stage position
nav_rover_circle nav_circle
float heading
heading setpoint (in radians)
#define NAV_MODE_WAYPOINT
Nav modes.
nav_rover_oval_init nav_oval_init
void(* nav_rover_route)(struct EnuCoor_f *wp_start, struct EnuCoor_f *wp_end)
void(* nav_rover_oval)(struct EnuCoor_f *wp1, struct EnuCoor_f *wp2, float radius)
nav_rover_approaching nav_approaching
bool(* nav_rover_approaching)(struct EnuCoor_f *wp_to, struct EnuCoor_f *wp_from, float approaching_time)
bool exception_flag[10]
array of flags that might be used in flight plans
void set_exception_flag(uint8_t flag_num)
float radius
radius setpoint
General Navigation structure.
API to get/set the generic vehicle states.
unsigned char uint8_t
Typedef defining 8 bit unsigned char type.