Paparazzi UAS  v5.18.0_stable
Paparazzi is a free software Unmanned Aircraft System.
waypoints.h File Reference
#include "std.h"
#include "math/pprz_geodetic_int.h"
#include "math/pprz_geodetic_float.h"
+ Include dependency graph for waypoints.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  Waypoint
 

Macros

#define WP_FLAG_GLOBAL   0
 
#define WP_FLAG_ENU_I   1
 
#define WP_FLAG_ENU_F   2
 
#define WP_FLAG_LLA_I   3
 
#define WaypointX(_wp)   waypoint_get_x(_wp)
 
#define WaypointY(_wp)   waypoint_get_y(_wp)
 
#define WaypointAlt(_wp)   waypoint_get_alt(_wp)
 
#define Height(_h)   (_h)
 

Functions

void waypoints_init (void)
 initialize global and local waypoints More...
 
bool waypoint_is_global (uint8_t wp_id)
 
void waypoint_set_global_flag (uint8_t wp_id)
 
void waypoint_clear_global_flag (uint8_t wp_id)
 
float waypoint_get_x (uint8_t wp_id)
 Get X/East coordinate of waypoint in meters. More...
 
float waypoint_get_y (uint8_t wp_id)
 Get Y/North coordinate of waypoint in meters. More...
 
float waypoint_get_alt (uint8_t wp_id)
 Get altitude of waypoint in meters (above reference) More...
 
struct LlaCoor_iwaypoint_get_lla (uint8_t wp_id)
 Get LLA coordinates of waypoint. More...
 
void waypoint_set_enu (uint8_t wp_id, struct EnuCoor_f *enu)
 Set local ENU waypoint coordinates. More...
 
void waypoint_set_alt (uint8_t wp_id, float alt)
 Set altitude of waypoint in meters (above reference) More...
 
void waypoint_set_here (uint8_t wp_id)
 set waypoint to current location and altitude More...
 
void waypoint_set_here_2d (uint8_t wp_id)
 set waypoint to current horizontal location without modifying altitude More...
 
void waypoint_set_enu_i (uint8_t wp_id, struct EnuCoor_i *enu)
 
void waypoint_set_xy_i (uint8_t wp_id, int32_t x, int32_t y)
 Set only local XY coordinates of waypoint without update altitude. More...
 
void waypoint_set_alt_i (uint8_t wp_id, int32_t alt)
 
void waypoint_set_lla (uint8_t wp_id, struct LlaCoor_i *lla)
 
void waypoint_set_latlon (uint8_t wp_id, struct LlaCoor_i *lla)
 set waypoint latitude/longitude without updating altitude More...
 
void waypoint_copy (uint8_t wp_dest, uint8_t wp_src)
 copy one waypoint to another, this includes all flags from the source waypoint More...
 
void waypoint_position_copy (uint8_t wp_dest, uint8_t wp_src)
 
void waypoint_move_here_2d (uint8_t wp_id)
 
void waypoint_move_enu_i (uint8_t wp_id, struct EnuCoor_i *new_pos)
 
void waypoint_move_xy_i (uint8_t wp_id, int32_t x, int32_t y)
 
void waypoint_move_lla (uint8_t wp_id, struct LlaCoor_i *lla)
 
void waypoint_globalize (uint8_t wp_id)
 update global LLA coordinates from its ENU coordinates More...
 
void waypoint_localize (uint8_t wp_id)
 update local ENU coordinates from its LLA coordinates More...
 
void waypoints_localize_all (void)
 update local ENU coordinates of all global waypoints More...
 

Variables

const uint8_t nb_waypoint
 
struct Waypoint waypoints []
 size == nb_waypoint, waypoint 0 is a dummy waypoint More...
 

Data Structure Documentation

◆ Waypoint

struct Waypoint

Definition at line 38 of file waypoints.h.

+ Collaboration diagram for Waypoint:
Data Fields
struct EnuCoor_f enu_f
struct EnuCoor_i enu_i with INT32_POS_FRAC
uint8_t flags bitmask encoding valid representations and if local or global
struct LlaCoor_i lla

Macro Definition Documentation

◆ Height

#define Height (   _h)    (_h)

Definition at line 53 of file waypoints.h.

◆ WaypointAlt

#define WaypointAlt (   _wp)    waypoint_get_alt(_wp)

Definition at line 52 of file waypoints.h.

◆ WaypointX

#define WaypointX (   _wp)    waypoint_get_x(_wp)

Definition at line 50 of file waypoints.h.

◆ WaypointY

#define WaypointY (   _wp)    waypoint_get_y(_wp)

Definition at line 51 of file waypoints.h.

◆ WP_FLAG_ENU_F

#define WP_FLAG_ENU_F   2

Definition at line 35 of file waypoints.h.

◆ WP_FLAG_ENU_I

#define WP_FLAG_ENU_I   1

Definition at line 34 of file waypoints.h.

◆ WP_FLAG_GLOBAL

#define WP_FLAG_GLOBAL   0

Definition at line 33 of file waypoints.h.

◆ WP_FLAG_LLA_I

#define WP_FLAG_LLA_I   3

Definition at line 36 of file waypoints.h.

Function Documentation

◆ waypoint_clear_global_flag()

void waypoint_clear_global_flag ( uint8_t  wp_id)

Definition at line 70 of file waypoints.c.

References nb_waypoint, waypoints, and WP_FLAG_GLOBAL.

◆ waypoint_copy()

void waypoint_copy ( uint8_t  wp_dest,
uint8_t  wp_src 
)

copy one waypoint to another, this includes all flags from the source waypoint

Definition at line 323 of file waypoints.c.

References nb_waypoint, and waypoints.

Referenced by drop_zone_set().

+ Here is the caller graph for this function:

◆ waypoint_get_alt()

float waypoint_get_alt ( uint8_t  wp_id)

Get altitude of waypoint in meters (above reference)

Definition at line 93 of file waypoints.c.

References Waypoint::enu_f, nb_waypoint, waypoints, and EnuCoor_f::z.

Referenced by stereocam_droplet_periodic().

+ Here is the caller graph for this function:

◆ waypoint_get_lla()

struct LlaCoor_i* waypoint_get_lla ( uint8_t  wp_id)

Get LLA coordinates of waypoint.

If the waypoint does not have its global coordinates set, the LLA representation is computed if the local origin is set.

Parameters
wp_idwaypoint id
Returns
pointer to waypoint LLA coordinates, NULL if invalid

Definition at line 310 of file waypoints.c.

References Waypoint::lla, nb_waypoint, waypoint_globalize(), waypoint_is_global(), waypoints, and WP_FLAG_LLA_I.

Referenced by mavlink_send_wp(), and put_lat_lon_home().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ waypoint_get_x()

float waypoint_get_x ( uint8_t  wp_id)

Get X/East coordinate of waypoint in meters.

Definition at line 77 of file waypoints.c.

References Waypoint::enu_f, nb_waypoint, waypoints, and EnuCoor_f::x.

Referenced by distance_to_wall(), draw_osd(), home_direction(), mission_point_of_lla(), and stereocam_droplet_periodic().

+ Here is the caller graph for this function:

◆ waypoint_get_y()

float waypoint_get_y ( uint8_t  wp_id)

Get Y/North coordinate of waypoint in meters.

Definition at line 85 of file waypoints.c.

References Waypoint::enu_f, nb_waypoint, waypoints, and EnuCoor_f::y.

Referenced by distance_to_wall(), draw_osd(), home_direction(), mission_point_of_lla(), and stereocam_droplet_periodic().

+ Here is the caller graph for this function:

◆ waypoint_globalize()

void waypoint_globalize ( uint8_t  wp_id)

update global LLA coordinates from its ENU coordinates

Definition at line 265 of file waypoints.c.

References ecef_of_enu_pos_i(), Waypoint::enu_i, lla_of_ecef_i(), State::ned_initialized_i, State::ned_origin_i, state, waypoints, and WP_FLAG_LLA_I.

Referenced by waypoint_get_lla(), waypoint_set_alt(), waypoint_set_alt_i(), waypoint_set_enu(), waypoint_set_enu_i(), and waypoint_set_xy_i().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ waypoint_is_global()

bool waypoint_is_global ( uint8_t  wp_id)

◆ waypoint_localize()

void waypoint_localize ( uint8_t  wp_id)

update local ENU coordinates from its LLA coordinates

Definition at line 276 of file waypoints.c.

References ENU_FLOAT_OF_BFP, Waypoint::enu_i, enu_of_lla_point_i(), Waypoint::lla, State::ned_initialized_i, State::ned_origin_i, POS_BFP_OF_REAL, state, waypoints, WP_FLAG_ENU_F, WP_FLAG_ENU_I, EnuCoor_i::x, EnuCoor_i::y, and EnuCoor_i::z.

Referenced by waypoint_set_latlon(), waypoint_set_lla(), and waypoints_localize_all().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ waypoint_move_enu_i()

void waypoint_move_enu_i ( uint8_t  wp_id,
struct EnuCoor_i new_pos 
)

Definition at line 125 of file waypoints.c.

References DefaultChannel, DefaultDevice, nb_waypoint, waypoint_set_enu_i(), EnuCoor_i::x, EnuCoor_i::y, and EnuCoor_i::z.

+ Here is the call graph for this function:

◆ waypoint_move_here_2d()

void waypoint_move_here_2d ( uint8_t  wp_id)

Definition at line 246 of file waypoints.c.

References LlaCoor_i::alt, DefaultChannel, DefaultDevice, Waypoint::enu_i, LtpDef_i::hmsl, LlaCoor_i::lat, Waypoint::lla, LtpDef_i::lla, LlaCoor_i::lon, nb_waypoint, State::ned_origin_i, state, waypoint_is_global(), waypoints, EnuCoor_i::y, and EnuCoor_i::z.

Referenced by mav_exercise_periodic(), and orange_avoider_periodic().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ waypoint_move_lla()

void waypoint_move_lla ( uint8_t  wp_id,
struct LlaCoor_i lla 
)

Definition at line 189 of file waypoints.c.

References LlaCoor_i::alt, DefaultChannel, DefaultDevice, Waypoint::enu_i, LtpDef_i::hmsl, LlaCoor_i::lat, LtpDef_i::lla, LlaCoor_i::lon, nb_waypoint, State::ned_origin_i, state, waypoint_is_global(), waypoint_set_lla(), waypoints, EnuCoor_i::y, and EnuCoor_i::z.

Referenced by firmware_parse_msg().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ waypoint_move_xy_i()

void waypoint_move_xy_i ( uint8_t  wp_id,
int32_t  x,
int32_t  y 
)

Definition at line 150 of file waypoints.c.

References DefaultChannel, DefaultDevice, nb_waypoint, waypoint_set_xy_i(), and waypoints.

Referenced by detection_cb(), and moveWaypoint().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ waypoint_position_copy()

void waypoint_position_copy ( uint8_t  wp_dest,
uint8_t  wp_src 
)

◆ waypoint_set_alt()

void waypoint_set_alt ( uint8_t  wp_id,
float  alt 
)

Set altitude of waypoint in meters (above reference)

Definition at line 169 of file waypoints.c.

References LlaCoor_i::alt, Waypoint::enu_f, Waypoint::enu_i, nb_waypoint, POS_BFP_OF_REAL, waypoint_globalize(), waypoints, EnuCoor_f::z, and EnuCoor_i::z.

Referenced by follow_me().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ waypoint_set_alt_i()

void waypoint_set_alt_i ( uint8_t  wp_id,
int32_t  alt 
)

Definition at line 159 of file waypoints.c.

References LlaCoor_i::alt, Waypoint::enu_f, Waypoint::enu_i, nb_waypoint, POS_FLOAT_OF_BFP, waypoint_globalize(), waypoints, EnuCoor_f::z, and EnuCoor_i::z.

Referenced by georeference_project().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ waypoint_set_enu()

void waypoint_set_enu ( uint8_t  wp_id,
struct EnuCoor_f enu 
)

Set local ENU waypoint coordinates.

Definition at line 113 of file waypoints.c.

References ENU_BFP_OF_REAL, Waypoint::enu_f, nb_waypoint, waypoint_globalize(), waypoints, WP_FLAG_ENU_F, WP_FLAG_ENU_I, and WP_FLAG_LLA_I.

Referenced by mavlink_wp_message_handler(), stereocam_droplet_periodic(), and waypoints_init().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ waypoint_set_enu_i()

void waypoint_set_enu_i ( uint8_t  wp_id,
struct EnuCoor_i enu 
)

Definition at line 101 of file waypoints.c.

References ENU_FLOAT_OF_BFP, Waypoint::enu_i, nb_waypoint, waypoint_globalize(), waypoints, WP_FLAG_ENU_F, WP_FLAG_ENU_I, and WP_FLAG_LLA_I.

Referenced by follow_wp(), waypoint_move_enu_i(), and waypoint_set_here().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ waypoint_set_global_flag()

void waypoint_set_global_flag ( uint8_t  wp_id)

Definition at line 63 of file waypoints.c.

References nb_waypoint, waypoints, and WP_FLAG_GLOBAL.

Referenced by waypoints_init().

+ Here is the caller graph for this function:

◆ waypoint_set_here()

void waypoint_set_here ( uint8_t  wp_id)

set waypoint to current location and altitude

Definition at line 221 of file waypoints.c.

References nb_waypoint, stateGetPositionEnu_i(), stateGetPositionLla_i(), waypoint_is_global(), waypoint_set_enu_i(), and waypoint_set_lla().

+ Here is the call graph for this function:

◆ waypoint_set_here_2d()

void waypoint_set_here_2d ( uint8_t  wp_id)

set waypoint to current horizontal location without modifying altitude

Definition at line 234 of file waypoints.c.

References nb_waypoint, stateGetPositionEnu_i(), stateGetPositionLla_i(), waypoint_is_global(), waypoint_set_latlon(), and waypoint_set_xy_i().

+ Here is the call graph for this function:

◆ waypoint_set_latlon()

void waypoint_set_latlon ( uint8_t  wp_id,
struct LlaCoor_i lla 
)

set waypoint latitude/longitude without updating altitude

Definition at line 209 of file waypoints.c.

References LlaCoor_i::lat, Waypoint::lla, LlaCoor_i::lon, nb_waypoint, waypoint_localize(), waypoints, and WP_FLAG_LLA_I.

Referenced by waypoint_set_here_2d().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ waypoint_set_lla()

void waypoint_set_lla ( uint8_t  wp_id,
struct LlaCoor_i lla 
)

Definition at line 179 of file waypoints.c.

References Waypoint::lla, nb_waypoint, waypoint_localize(), waypoints, and WP_FLAG_LLA_I.

Referenced by mavlink_wp_message_handler(), waypoint_move_lla(), waypoint_set_here(), and waypoints_init().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ waypoint_set_xy_i()

void waypoint_set_xy_i ( uint8_t  wp_id,
int32_t  x,
int32_t  y 
)

Set only local XY coordinates of waypoint without update altitude.

Todo:
: how to handle global waypoints?

Definition at line 138 of file waypoints.c.

References Waypoint::enu_f, Waypoint::enu_i, nb_waypoint, POS_FLOAT_OF_BFP, waypoint_globalize(), waypoints, EnuCoor_f::x, EnuCoor_i::x, EnuCoor_f::y, and EnuCoor_i::y.

Referenced by georeference_filter(), georeference_project(), run_avoid_navigation_onvision(), waypoint_move_xy_i(), and waypoint_set_here_2d().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ waypoints_init()

void waypoints_init ( void  )

initialize global and local waypoints

Definition at line 35 of file waypoints.c.

References Waypoint::flags, nb_waypoint, waypoint_set_enu(), waypoint_set_global_flag(), waypoint_set_lla(), and waypoints.

Referenced by nav_init().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ waypoints_localize_all()

void waypoints_localize_all ( void  )

update local ENU coordinates of all global waypoints

update local ENU coordinates of all global waypoints

Definition at line 293 of file waypoints.c.

References nb_waypoint, waypoint_is_global(), and waypoint_localize().

Referenced by main_init(), nav_reset_alt(), and nav_reset_reference().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Variable Documentation

◆ nb_waypoint

◆ waypoints

struct Waypoint waypoints[]

size == nb_waypoint, waypoint 0 is a dummy waypoint

Definition at line 38 of file common_nav.c.

Referenced by collective_tracking_waypoint(), compute_dist2_to_home(), copilot_parse_move_wp_dl(), distributed_circular(), DownlinkSendWp(), draw_osd(), firmware_parse_msg(), get_dist2_to_waypoint(), get_time_to_home(), get_two_intersects(), gvf_ellipse_wp(), gvf_get_two_intersects(), gvf_line_wp1_wp2(), gvf_line_wp_heading(), gvf_nav_survey_polygon_setup(), gvf_parametric_2D_trefoil_wp(), gvf_parametric_3D_ellipse_wp(), gvf_parametric_3D_ellipse_wp_delta(), gvf_parametric_3D_lissajous_wp_center(), gvf_segment_loop_wp1_wp2(), gvf_segment_wp1_wp2(), gvf_sin_wp1_wp2(), gvf_sin_wp_alpha(), mission_point_of_lla(), nav_compute_baseleg(), nav_compute_final_from_glide(), nav_cube_run(), nav_cube_setup(), nav_eight(), nav_flower_run(), nav_glide(), nav_home(), nav_init(), nav_line_border_run(), nav_line_osam_run(), nav_line_run(), nav_move_waypoint(), nav_oval(), nav_skid_landing_glide(), nav_skid_landing_run(), nav_skid_landing_setup(), nav_spiral_setup(), nav_survey_computefourth_corner(), nav_survey_disc_run(), nav_survey_losange_carto(), nav_survey_losange_carto_init(), nav_survey_poly_osam_run(), nav_survey_poly_osam_setup(), nav_survey_poly_osam_setup_towards(), nav_survey_poly_run(), nav_survey_poly_setup(), nav_survey_poly_setup_towards(), nav_survey_polygon_setup(), nav_survey_rectangle(), nav_survey_rectangle_rotorcraft_run(), nav_survey_rectangle_rotorcraft_setup(), nav_survey_zamboni_setup(), nav_update_waypoints_alt(), nav_vertical_raster_run(), NavApproaching(), NavApproachingFrom(), NavCircleWaypoint(), NavGlide(), NavGotoWaypoint(), NavGotoWaypointHeading(), navigation_update_wp_from_speed(), NavSegment(), Oval(), parachute_compute_approach(), put_lat_lon_home(), rotorcraft_cam_periodic(), send_wp_moved(), vPoint(), waypoint_clear_global_flag(), waypoint_copy(), waypoint_get_alt(), waypoint_get_lla(), waypoint_get_x(), waypoint_get_y(), waypoint_globalize(), waypoint_is_global(), waypoint_localize(), waypoint_move_here_2d(), waypoint_move_lla(), waypoint_move_xy_i(), waypoint_position_copy(), waypoint_set_alt(), waypoint_set_alt_i(), waypoint_set_enu(), waypoint_set_enu_i(), waypoint_set_global_flag(), waypoint_set_latlon(), waypoint_set_lla(), waypoint_set_xy_i(), and waypoints_init().