34 #include "generated/flight_plan.h"
38 #define BUFFER_ZONE_DIST 10
56 VECT3_SMUL(tmp_enu_point_f, tmp_enu_point_i, 0.01);
63 VECT2_DIFF(vect_from_home, tmp_enu_point_f, home);
68 if (dist_to_home > MAX_DIST_FROM_HOME) {
69 VECT2_SMUL(vect_from_home, vect_from_home, (MAX_DIST_FROM_HOME / dist_to_home));
73 point->z = tmp_enu_point_f.
z;
92 #ifdef MISSION_ALT_PROXIMITY
100 }
else {
return false; }
116 float radius = el->
element.mission_circle.radius;
139 #ifdef MISSION_ALT_PROXIMITY
147 }
else {
return false; }
163 if (el->
element.mission_path.nb == 0) {
167 if (el->
element.mission_path.path_idx == 0) {
172 else if (el->
element.mission_path.path_idx < el->
element.mission_path.nb) {
179 #ifdef MISSION_ALT_PROXIMITY
187 el->
element.mission_path.path_idx++;
189 }
else { el->
element.mission_path.path_idx++; }
195 }
else {
return false; }
214 #ifndef MISSION_WAIT_TIMEOUT
215 #define MISSION_WAIT_TIMEOUT 30
219 #if MISSION_WAIT_TIMEOUT
247 bool el_running =
false;
Core autopilot interface common to all firmwares.
static float float_vect2_norm(struct FloatVect2 *v)
#define VECT2_SMUL(_vo, _vi, _s)
#define VECT2_DIFF(_c, _a, _b)
#define VECT2_SUM(_c, _a, _b)
#define VECT3_SMUL(_vo, _vi, _s)
int32_t alt
in millimeters above WGS84 reference ellipsoid
void enu_of_lla_point_i(struct EnuCoor_i *enu, struct LtpDef_i *def, struct LlaCoor_i *lla)
Convert a point from LLA to local ENU.
vector in East North Up coordinates
vector in Latitude, Longitude and Altitude
static struct EnuCoor_f * stateGetPositionEnu_f(void)
Get position in local ENU coordinates (float).
bool ned_initialized_i
true if local int coordinate frame is initialsed
static struct LtpDef_i * stateGetNedOrigin_i(void)
Get the coordinate NED frame origin (int)
int32_t stateGetHmslOrigin_i(void)
Get the HMSL of the frame origin (int)
struct LlaCoor_i stateGetLlaOrigin_i(void)
Get the LLA position of the frame origin (int)
struct _mission_element * mission_get(void)
Get current mission element.
float params[MISSION_CUSTOM_MAX]
list of parameters
union _mission_element::@299 element
struct _mission_registered * reg
pointer to a registered custom mission element
mission_custom_cb cb
navigation/action function callback
uint8_t nb
number of parameters
float element_time
time in second spend in the current element
#define MISSION_ELEMENT_NB
Max number of elements in the tasks' list can be redefined.
float duration
time to spend in the element (<= 0 to disable)
uint8_t current_idx
current mission element index
static bool mission_wait_pattern(void)
struct EnuCoor_f last_mission_wp
static float mission_wait_time
static bool mission_nav_wp(struct _mission_element *el)
Navigation function to a single waypoint.
static bool mission_nav_segment(struct _mission_element *el)
Navigation function along a segment.
static bool mission_nav_circle(struct _mission_element *el)
Navigation function on a circle.
static bool mission_nav_custom(struct _mission_custom *custom, bool init)
Call custom navigation function.
int mission_run()
Run mission.
bool mission_point_of_lla(struct EnuCoor_f *point, struct LlaCoor_i *lla)
Utility function: converts lla (int) to local point (float)
static const float dt_navigation
#define MISSION_WAIT_TIMEOUT
Implement waiting pattern Only called when MISSION_WAIT_TIMEOUT is not 0.
static bool mission_nav_path(struct _mission_element *el)
Navigation function along a path.
static struct _mission_element mission_wait_wp
static bool mission_wait_started
float waypoint_get_x(uint8_t wp_id)
Get X/East coordinate of waypoint in meters.
float waypoint_get_y(uint8_t wp_id)
Get Y/North coordinate of waypoint in meters.
#define NAVIGATION_FREQUENCY
Default fixedwing navigation frequency.
#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.
vector in East North Up coordinates Units: meters
struct RotorcraftNavigation nav
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
Rotorcraft navigation functions.
navigation_approaching nav_approaching
navigation_circle nav_circle
#define CARROT
default approaching_time for a wp
navigation_route nav_route