![]() |
Paparazzi UAS v7.0_unstable
Paparazzi is a free software Unmanned Aircraft System.
|
Fixedwing Navigation library. More...
#include "std.h"
#include "paparazzi.h"
#include "state.h"
#include "modules/nav/nav_survey_rectangle.h"
#include "modules/nav/common_flight_plan.h"
#include "modules/nav/common_nav.h"
#include "autopilot.h"
#include "pprzlink/pprzlink_device.h"
#include "pprzlink/pprzlink_transport.h"
Go to the source code of this file.
Enumerations | |
enum | oval_status { OR12 , OC2 , OR21 , OC1 } |
Fixedwing Navigation library.
This collection of macros and functions is used by the C code generated from the XML flight plan.
Definition in file nav.h.
#define GetAltRef | ( | ) | (ground_alt) |
Get current altitude reference for local coordinates.
This is the ground_alt from the flight plan at first, but might be updated later through a call to NavSetGroundReferenceHere() or NavSetAltitudeReferenceHere(), e.g. in the GeoInit flight plan block.
#define GetPosAlt | ( | ) | (stateGetPositionUtm_f()->alt) |
#define GetPosHeight | ( | ) | (stateGetPositionEnu_f()->z) |
#define GetPosX | ( | ) | (stateGetPositionEnu_f()->x) |
#define GetPosY | ( | ) | (stateGetPositionEnu_f()->y) |
#define nav_SetNavRadius | ( | x | ) | { if (x==1) nav_radius = DEFAULT_CIRCLE_RADIUS; else if (x==-1) nav_radius = -DEFAULT_CIRCLE_RADIUS; else nav_radius = x; } |
#define NavCircleCount | ( | ) | (fabs(nav_circle_radians) / (2*M_PI)) |
#define NavCircleCountNoRewind | ( | ) | (nav_circle_radians_no_rewind / (2*M_PI)) |
#define NavCircleQdr | ( | ) | ({ float qdr = DegOfRad(M_PI_2 - nav_circle_trigo_qdr); NormCourse(qdr); qdr; }) |
#define NavCircleWaypoint | ( | wp, | |
radius | |||
) | nav_circle_XY(waypoints[wp].x, waypoints[wp].y, radius) |
#define NavCourseCloseTo | ( | x | ) | CloseDegAngles(x, DegOfRad(stateGetHorizontalSpeedDir_f())) |
#define NAVIGATION_FREQUENCY 20 |
#define NavKillThrottle | ( | void | ) | { autopilot_set_kill_throttle(true); } |
#define NavQdrCloseTo | ( | x | ) | CloseDegAngles(x, NavCircleQdr()) |
#define NavVerticalAltitudeMode | ( | _alt, | |
_pre_climb | |||
) |
Set the vertical mode to altitude control with the specified altitude setpoint and climb pre-command.
Set the climb control to auto-pitch with the specified throttle pre-command.
Set the climb control to auto-throttle with the specified pitch pre-command.
Set the vertical mode to climb control with the specified climb setpoint.
Set the vertical mode to fixed throttle with the specified setpoint.
#define RCLost | ( | ) | RadioControlIsLost() |
#define RcRoll | ( | travel | ) | (radio_control_get(RADIO_ROLL) * (float)travel /(float)MAX_PPRZ) |
Definition at line 497 of file nav.c.
References DefaultChannel, DefaultDevice, DownlinkSendWp(), foo, and nb_waypoint.
Referenced by nav_catapult_run().
Computes desired_x, desired_y and desired_course.
Definition at line 356 of file nav.c.
References CARROT, desired_x, desired_y, foo, h_ctl_course_pgain, h_ctl_course_setpoint, h_ctl_roll_max_setpoint, h_ctl_roll_setpoint, lateral_mode, LATERAL_MODE_COURSE, LATERAL_MODE_ROLL, nav_mode, NAV_MODE_COURSE, s, stateGetHorizontalSpeedDir_f(), stateGetHorizontalSpeedNorm_f(), stateGetPositionEnu_f(), EnuCoor_f::x, and EnuCoor_f::y.
Referenced by formation_flight(), mission_nav_wp(), nav_circle_XY(), nav_route_xy(), and potential_task().
Decide if the UAV is approaching the current waypoint.
Computes dist2_to_wp and compare it to square carrot. Return true if it is smaller. Else computes by scalar products if uav has not gone past waypoint. approaching_time can be negative and in this case, the UAV will fly after the waypoint for the given number of seconds.
distance to waypoint in x
distance to waypoint in y
Definition at line 325 of file nav.c.
References dist2_to_wp, foo, stateGetHorizontalSpeedNorm_f(), stateGetPositionEnu_f(), EnuCoor_f::x, and EnuCoor_f::y.
Referenced by gvf_nav_survey_polygon_run(), mission_nav_path(), mission_nav_segment(), mission_nav_wp(), nav_catapult_run(), nav_eight(), nav_land_run(), nav_line_osam_run(), nav_oval(), nav_spiral_run(), nav_survey_disc_run(), nav_survey_poly_osam_run(), nav_survey_polygon_run(), nav_survey_zamboni_run(), nav_takeoff_run(), and snav_route().
Angle from center to mobile.
Angle from center to mobile.
Clockwise iff radius > 0
Computes a prebank. Go straight if inside or outside the circle
Definition at line 108 of file nav.c.
References CARROT, circle_bank, DistanceSquare, fly_to_xy(), foo, horizontal_mode, HORIZONTAL_MODE_CIRCLE, Min, nav_circle_radians, nav_circle_radians_no_rewind, nav_circle_radius, nav_circle_trigo_qdr, nav_circle_x, nav_circle_y, NAV_GRAVITY, nav_in_circle, nav_in_segment, nav_mode, NAV_MODE_COURSE, nav_shift, Square, stateGetHorizontalSpeedNorm_f(), stateGetPositionEnu_f(), EnuCoor_f::x, and EnuCoor_f::y.
Referenced by mission_nav_circle(), nav_eight(), nav_flower_run(), nav_lace_run(), nav_launcher_run(), nav_line_border_run(), nav_line_osam_run(), nav_line_run(), nav_oval(), nav_rosette_run(), nav_skid_landing_run(), nav_spiral_3D_run(), nav_spiral_run(), nav_survey_disc_run(), nav_survey_poly_osam_run(), nav_survey_polygon_run(), nav_survey_zamboni_run(), nav_trinity_run(), nav_vertical_raster_run(), snav_circle1(), snav_circle2(), and snav_on_time().
Definition at line 220 of file nav.c.
References point::a, baseleg_out_qdr, foo, nav_radius, waypoints, point::x, and point::y.
Navigation along a figure 8.
The cross center is defined by the waypoint [target], the center of one of the circles is defined by [c1]. Altitude is given by [target]. The navigation goes through 6 states: C1 (circle around [c1]), R1T, RT2 (route from circle 1 to circle 2 over [target]), C2 and R2T, RT1. If necessary, the [c1] waypoint is moved in the direction of [target] to be not far than [2*radius].
Definition at line 633 of file nav.c.
References point::a, UtmCoor_f::alt, C1, c1, C2, c2, CARROT, foo, InitStage, nav_approaching_xy(), nav_circle_XY(), nav_route_xy(), NavCircleWaypoint, NavQdrCloseTo, R1T, R2T, RT1, RT2, target, waypoints, point::x, and point::y.
Definition at line 158 of file nav.c.
References foo, nav_glide_alt(), and waypoints.
Definition at line 163 of file nav.c.
References foo, nav_leg_length, nav_leg_progress, NavVerticalAltitudeMode, and stateGetHorizontalSpeedNorm_f().
Referenced by nav_glide(), and nav_land_run().
Definition at line 762 of file nav.c.
References point::a, CARROT, foo, InitStage, LINE_START_FUNCTION, LINE_STOP_FUNCTION, nav_approaching_xy(), nav_circle_XY(), nav_oval_count, nav_route_xy(), NavQdrCloseTo, OC1, OC2, OR12, OR21, waypoints, point::x, and point::y.
Referenced by nav_register_oval(), and nav_register_oval().
Definition at line 756 of file nav.c.
References nav_oval_count, and OC2.
Referenced by nav_register_oval().
|
extern |
Definition at line 585 of file nav.c.
References dev, foo, nav_goto_block(), and SEND_NAVIGATION.
|
extern |
Definition at line 592 of file nav.c.
References LlaCoor_f::alt, dev, foo, LlaCoor_f::lat, LlaCoor_f::lon, nav_move_waypoint(), nav_utm_east0, nav_utm_north0, nav_utm_zone0, utm_of_lla_f(), waypoints, point::x, point::y, and UtmCoor_f::zone.
Computes the carrot position along the desired segment.
distance of carrot (in meter)
Definition at line 382 of file nav.c.
References CARROT, fly_to_xy(), foo, horizontal_mode, HORIZONTAL_MODE_ROUTE, nav_carrot_leg_progress, nav_in_circle, nav_in_segment, nav_leg_length, nav_leg_progress, nav_segment_x_1, nav_segment_x_2, nav_segment_y_1, nav_segment_y_2, nav_shift, stateGetPositionEnu_f(), EnuCoor_f::x, and EnuCoor_f::y.
Referenced by mission_nav_path(), mission_nav_segment(), nav_bungee_takeoff_run(), nav_eight(), nav_flower_run(), nav_lace_run(), nav_land_run(), nav_launcher_run(), nav_line_osam_run(), nav_oval(), nav_points(), nav_rosette_run(), nav_skid_landing_run(), nav_spiral_run(), nav_survey_disc_run(), nav_survey_poly_osam_run(), nav_survey_rectangle(), nav_survey_zamboni_run(), nav_trinity_run(), and snav_route().
Failsafe navigation without position estimation.
Just set attitude and throttle to FAILSAFE values to prevent the plane from crashing.
Definition at line 569 of file nav.c.
References foo, h_ctl_roll_setpoint, lateral_mode, LATERAL_MODE_ROLL, MAX_PPRZ, nav_pitch, nav_throttle_setpoint, TRIM_UPPRZ, v_ctl_mode, and V_CTL_MODE_AUTO_THROTTLE.
Referenced by navigation_task().
|
extern |
Definition at line 219 of file nav.c.
Referenced by nav_compute_baseleg(), and nav_land_run().
|
extern |
|
extern |
|
extern |
Definition at line 308 of file nav.c.
Referenced by cam_segment_periodic(), fly_to_xy(), formation_flight(), gvf_parametric_control_2D(), potential_task(), and send_desired().
float flight_altitude |
|
extern |
Definition at line 313 of file nav.c.
Referenced by nav_init().
|
extern |
Definition at line 311 of file nav.c.
Referenced by nav_init().
|
extern |
Definition at line 312 of file nav.c.
Referenced by nav_init().
|
extern |
Definition at line 70 of file nav.c.
Referenced by nav_circle_XY(), nav_route_xy(), and send_mode().
|
extern |
Definition at line 47 of file nav.c.
Referenced by gvf_nav_survey_polygon_run(), nav_init_stage(), and nav_survey_polygon_run().
|
extern |
Status on the current circle.
Definition at line 53 of file nav.c.
Referenced by nav_circle_XY(), and nav_init_stage().
|
extern |
Definition at line 54 of file nav.c.
Referenced by nav_circle_XY(), and nav_init_stage().
|
extern |
Definition at line 55 of file nav.c.
Referenced by nav_circle_XY(), and nav_land_run().
|
extern |
Definition at line 68 of file nav.c.
Referenced by flight_benchmark_periodic(), nav_circle_XY(), and send_circle().
|
extern |
Definition at line 83 of file nav.c.
Referenced by nav_init().
|
extern |
Definition at line 66 of file nav.c.
Referenced by calculate_wind_no_airspeed(), nav_circle_XY(), nav_init_stage(), nav_periodic_task(), nav_route_xy(), nav_survey_rectangle(), nav_survey_rectangle_rotorcraft_run(), and send_circle().
|
extern |
Definition at line 67 of file nav.c.
Referenced by nav_circle_XY(), nav_init_stage(), nav_route_xy(), nav_survey_rectangle(), nav_survey_rectangle_rotorcraft_run(), and send_segment().
|
extern |
Definition at line 90 of file nav.c.
Referenced by fly_to_xy(), nav_circle_XY(), and nav_init().
|
extern |
Navigation along a figure O.
One side leg is defined by waypoints [p1] and [p2]. The navigation goes through 4 states: OC1 (half circle next to [p1]), OR21 (route [p2] to [p1], OC2 (half circle next to [p2]) and OR12 (opposite leg).
Initial state is the route along the desired segment (OC2).
Definition at line 754 of file nav.c.
Referenced by nav_oval(), nav_oval(), and nav_oval_init().
|
extern |
Definition at line 310 of file nav.c.
Referenced by attitude_loop(), nav_home(), nav_without_gps(), v_ctl_climb_auto_throttle_loop(), v_ctl_climb_loop(), v_ctl_guidance_loop(), v_ctl_landing_loop(), and v_ctl_set_pitch().
|
extern |
Definition at line 56 of file nav.c.
Referenced by nav_compute_baseleg(), nav_flower_run(), nav_init(), and parachute_compute_approach().
|
extern |
Definition at line 69 of file nav.c.
Referenced by flight_benchmark_periodic(), nav_route_xy(), and send_segment().
|
extern |
Definition at line 56 of file nav.c.
Referenced by nav_circle_XY(), nav_init_stage(), and nav_route_xy().
|
extern |
Definition at line 88 of file nav.c.
Referenced by nav_periodic_task(), nav_survey_rectangle(), and send_survey().
|
extern |
Definition at line 86 of file nav.c.
Referenced by nav_init(), nav_survey_disc_run(), nav_survey_disc_setup(), nav_survey_poly_osam_run(), nav_survey_poly_run(), nav_survey_rectangle(), nav_survey_rectangle_init(), nav_survey_rectangle_rotorcraft_run(), and nav_survey_rectangle_rotorcraft_setup().
|
extern |
Definition at line 87 of file nav.c.
Referenced by nav_survey_rectangle(), nav_survey_rectangle_init(), nav_survey_rectangle_rotorcraft_run(), nav_survey_rectangle_rotorcraft_setup(), send_survey(), and send_survey().
|
extern |
Definition at line 309 of file nav.c.
Referenced by attitude_loop(), nav_without_gps(), and v_ctl_guidance_loop().
|
extern |