Paparazzi UAS  v5.10_stable-5-g83a0da5-dirty
Paparazzi is a free software Unmanned Aircraft System.
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
mission_common.h File Reference

mission planner library More...

#include "std.h"
#include "math/pprz_geodetic_float.h"
#include "math/pprz_geodetic_int.h"
+ Include dependency graph for mission_common.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  _mission_wp
 
struct  _mission_circle
 
struct  _mission_segment
 
struct  _mission_path
 
struct  _mission_element
 
struct  _mission
 
union  _mission_wp.wp
 
union  _mission_circle.center
 
union  _mission_segment.from
 
union  _mission_segment.to
 
union  _mission_path.path
 
union  _mission_element.element
 

Macros

#define MISSION_PATH_NB   5
 
#define MISSION_ELEMENT_NB   20
 Max number of elements in the tasks' list can be redefined. More...
 

Enumerations

enum  MissionType {
  MissionWP = 1, MissionCircle = 2, MissionSegment = 3, MissionPath = 4,
  MissionSurvey = 5, MissionEight = 6, MissionOval = 7
}
 
enum  MissionInsertMode { Append, Prepend, ReplaceCurrent, ReplaceAll }
 

Functions

void mission_init (void)
 Init mission structure. More...
 
bool mission_insert (enum MissionInsertMode insert, struct _mission_element *element)
 Insert a mission element according to the insertion mode. More...
 
bool mission_element_convert (struct _mission_element *el)
 Convert mission element's points format if needed. More...
 
struct _mission_elementmission_get (void)
 Get current mission element. More...
 
bool mission_point_of_lla (struct EnuCoor_f *point, struct LlaCoor_i *lla)
 Get the ENU component of LLA mission point This function is firmware specific. More...
 
int mission_run (void)
 Run mission. More...
 
void mission_status_report (void)
 Report mission status. More...
 
int mission_parse_GOTO_WP (void)
 Parsing functions called when a mission message is received. More...
 
int mission_parse_GOTO_WP_LLA (void)
 
int mission_parse_CIRCLE (void)
 
int mission_parse_CIRCLE_LLA (void)
 
int mission_parse_SEGMENT (void)
 
int mission_parse_SEGMENT_LLA (void)
 
int mission_parse_PATH (void)
 
int mission_parse_PATH_LLA (void)
 
int mission_parse_SURVEY (void)
 
int mission_parse_SURVEY_LLA (void)
 
int mission_parse_GOTO_MISSION (void)
 
int mission_parse_NEXT_MISSION (void)
 
int mission_parse_END_MISSION (void)
 

Variables

struct _mission mission
 

Detailed Description

mission planner library

Provide the generic interface for the mission control Handle the parsing of datalink messages

Definition in file mission_common.h.


Data Structure Documentation

struct _mission_wp

Definition at line 54 of file mission_common.h.

Data Fields
union _mission_wp wp
struct _mission_circle

Definition at line 61 of file mission_common.h.

Data Fields
union _mission_circle center
float radius
struct _mission_segment

Definition at line 70 of file mission_common.h.

Data Fields
union _mission_segment from
union _mission_segment to
struct _mission_path

Definition at line 83 of file mission_common.h.

Data Fields
uint8_t nb
union _mission_path path
uint8_t path_idx
struct _mission_element

Definition at line 93 of file mission_common.h.

Data Fields
float duration time to spend in the element (<= 0 to disable)
union _mission_element element
enum MissionType type
struct _mission

Definition at line 112 of file mission_common.h.

+ Collaboration diagram for _mission:
Data Fields
uint8_t current_idx current mission element index
float element_time time in second spend in the current element
struct _mission_element elements[MISSION_ELEMENT_NB]
uint8_t insert_idx inserstion index
union _mission_wp.wp

Definition at line 55 of file mission_common.h.

Data Fields
struct EnuCoor_f wp_f
struct EnuCoor_i wp_i
union _mission_circle.center

Definition at line 62 of file mission_common.h.

Data Fields
struct EnuCoor_f center_f
struct EnuCoor_i center_i
union _mission_segment.from

Definition at line 71 of file mission_common.h.

Data Fields
struct EnuCoor_f from_f
struct EnuCoor_i from_i
union _mission_segment.to

Definition at line 76 of file mission_common.h.

Data Fields
struct EnuCoor_f to_f
struct EnuCoor_i to_i
union _mission_path.path

Definition at line 84 of file mission_common.h.

Data Fields
struct EnuCoor_f path_f[MISSION_PATH_NB]
struct EnuCoor_i path_i[MISSION_PATH_NB]
union _mission_element.element

Definition at line 95 of file mission_common.h.

Data Fields
struct _mission_circle mission_circle
struct _mission_path mission_path
struct _mission_segment mission_segment
struct _mission_wp mission_wp

Macro Definition Documentation

#define MISSION_ELEMENT_NB   20

Max number of elements in the tasks' list can be redefined.

Definition at line 109 of file mission_common.h.

Referenced by mission_insert(), mission_parse_GOTO_MISSION(), mission_parse_NEXT_MISSION(), mission_run(), and mission_status_report().

#define MISSION_PATH_NB   5

Definition at line 82 of file mission_common.h.

Referenced by mission_parse_PATH(), and mission_parse_PATH_LLA().

Enumeration Type Documentation

Enumerator
Append 

add at the last position

Prepend 

add before the current element

ReplaceCurrent 

replace current element

ReplaceAll 

remove all elements and add the new one

Definition at line 47 of file mission_common.h.

Enumerator
MissionWP 
MissionCircle 
MissionSegment 
MissionPath 
MissionSurvey 
MissionEight 
MissionOval 

Definition at line 37 of file mission_common.h.

Function Documentation

bool mission_element_convert ( struct _mission_element el)

Convert mission element's points format if needed.

Parameters
elpointer to the mission element
Returns
return TRUE if conversion is succesful, FALSE otherwise

Definition at line 87 of file mission_common.c.

References _mission_element::element, ENU_BFP_OF_REAL, MissionCircle, MissionPath, MissionSegment, MissionWP, and _mission_element::type.

Referenced by mission_insert().

+ Here is the caller graph for this function:

struct _mission_element* mission_get ( void  )

Get current mission element.

Returns
return a pointer to the next mission element or NULL if no more elements

Definition at line 91 of file mission_common.c.

References _mission::current_idx, _mission::elements, _mission::insert_idx, and mission.

Referenced by mission_run().

+ Here is the caller graph for this function:

void mission_init ( void  )

Init mission structure.

Definition at line 38 of file mission_common.c.

References _mission::current_idx, _mission::element_time, _mission::insert_idx, and mission.

bool mission_insert ( enum MissionInsertMode  insert,
struct _mission_element element 
)

Insert a mission element according to the insertion mode.

Parameters
insertinsertion mode
elementmission element structure
Returns
return TRUE if insertion is succesful, FALSE otherwise

Definition at line 47 of file mission_common.c.

References Append, _mission::current_idx, _mission::elements, _mission::insert_idx, mission, mission_element_convert(), MISSION_ELEMENT_NB, Prepend, ReplaceAll, and ReplaceCurrent.

Referenced by mission_parse_CIRCLE(), mission_parse_CIRCLE_LLA(), mission_parse_GOTO_WP(), mission_parse_GOTO_WP_LLA(), mission_parse_PATH(), mission_parse_PATH_LLA(), mission_parse_SEGMENT(), and mission_parse_SEGMENT_LLA().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int mission_parse_CIRCLE ( void  )

Definition at line 162 of file mission_common.c.

References dl_buffer, _mission_element::duration, _mission_element::element, mission_insert(), MissionCircle, and _mission_element::type.

+ Here is the call graph for this function:

int mission_parse_CIRCLE_LLA ( void  )
int mission_parse_END_MISSION ( void  )

Definition at line 335 of file mission_common.c.

References _mission::current_idx, dl_buffer, _mission::insert_idx, and mission.

int mission_parse_GOTO_MISSION ( void  )

Definition at line 312 of file mission_common.c.

References _mission::current_idx, dl_buffer, mission, and MISSION_ELEMENT_NB.

int mission_parse_GOTO_WP ( void  )

Parsing functions called when a mission message is received.

Definition at line 126 of file mission_common.c.

References dl_buffer, _mission_element::duration, _mission_element::element, mission_insert(), MissionWP, and _mission_element::type.

+ Here is the call graph for this function:

int mission_parse_GOTO_WP_LLA ( void  )
int mission_parse_NEXT_MISSION ( void  )
int mission_parse_PATH ( void  )

Definition at line 243 of file mission_common.c.

References dl_buffer, _mission_element::duration, _mission_element::element, mission_insert(), MISSION_PATH_NB, MissionPath, and _mission_element::type.

+ Here is the call graph for this function:

int mission_parse_PATH_LLA ( void  )
int mission_parse_SEGMENT ( void  )

Definition at line 200 of file mission_common.c.

References dl_buffer, _mission_element::duration, _mission_element::element, mission_insert(), MissionSegment, and _mission_element::type.

+ Here is the call graph for this function:

int mission_parse_SEGMENT_LLA ( void  )
int mission_parse_SURVEY ( void  )
int mission_parse_SURVEY_LLA ( void  )
bool mission_point_of_lla ( struct EnuCoor_f point,
struct LlaCoor_i lla 
)

Get the ENU component of LLA mission point This function is firmware specific.

Parameters
pointpointer to the output ENU point (float)
llapointer to the input LLA coordinates (int)
Returns
TRUE if conversion is succesful, FALSE otherwise

Get the ENU component of LLA mission point This function is firmware specific.

TODO: don't convert to float, either use double or do completely in fixed point

Definition at line 38 of file mission_fw_nav.c.

References LlaCoor_i::alt, BUFFER_ZONE_DIST, UtmCoor_f::east, enu_of_lla_point_i(), float_vect2_norm(), LtpDef_i::hmsl, LtpDef_i::lla, LLA_FLOAT_OF_BFP, max_dist_from_home, nav_utm_east0, nav_utm_north0, nav_utm_zone0, State::ned_initialized_i, State::ned_origin_i, UtmCoor_f::north, state, utm_of_lla_f(), VECT2_DIFF, VECT2_SMUL, VECT2_SUM, VECT3_SMUL, waypoint_get_x(), waypoint_get_y(), waypoints, point::x, FloatVect2::x, EnuCoor_f::x, point::y, FloatVect2::y, EnuCoor_f::y, EnuCoor_f::z, and UtmCoor_f::zone.

Referenced by mission_parse_CIRCLE_LLA(), mission_parse_GOTO_WP_LLA(), mission_parse_PATH_LLA(), and mission_parse_SEGMENT_LLA().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int mission_run ( void  )

Run mission.

This function should be implemented into a dedicated file since navigation functions are different for different firmwares

Currently, this function should be called from the flight plan

Returns
return TRUE when the mission is running, FALSE when it is finished

Definition at line 142 of file mission_fw_nav.c.

References _mission::current_idx, dt_navigation, _mission_element::duration, _mission_element::element, _mission::element_time, mission, MISSION_ELEMENT_NB, mission_get(), mission_nav_circle(), mission_nav_path(), mission_nav_segment(), mission_nav_wp(), MissionCircle, MissionPath, MissionSegment, MissionWP, and _mission_element::type.

+ Here is the call graph for this function:

void mission_status_report ( void  )

Variable Documentation