Paparazzi UAS  v7.0_unstable
Paparazzi is a free software Unmanned Aircraft System.
Position representations
+ Collaboration diagram for Position representations:

Macros

#define POS_ECEF_I   0
 
#define POS_NED_I   1
 
#define POS_ENU_I   2
 
#define POS_LLA_I   3
 
#define POS_UTM_I   4
 
#define POS_ECEF_F   5
 
#define POS_NED_F   6
 
#define POS_ENU_F   7
 
#define POS_LLA_F   8
 
#define POS_UTM_F   9
 
#define POS_LOCAL_COORD   ((1<<POS_NED_I)|(1<<POS_NED_F)|(1<<POS_ENU_I)|(1<<POS_ENU_F))
 
#define POS_GLOBAL_COORD   ((1<<POS_ECEF_I)|(1<<POS_ECEF_F)|(1<<POS_LLA_I)|(1<<POS_LLA_F)|(1<<POS_UTM_I)|(1<<POS_UTM_F))
 

Functions

void stateCalcPositionEcef_i (void)
 
void stateCalcPositionNed_i (void)
 
void stateCalcPositionEnu_i (void)
 
void stateCalcPositionLla_i (void)
 Calculate LLA (int) from any other available representation. More...
 
void stateCalcPositionUtm_f (void)
 
void stateCalcPositionEcef_f (void)
 
void stateCalcPositionNed_f (void)
 
void stateCalcPositionEnu_f (void)
 
void stateCalcPositionLla_f (void)
 
static void stateSetLocalOrigin_i (struct LtpDef_i *ltp_def)
 Set the local (flat earth) coordinate frame origin (int). More...
 
static void stateSetLocalUtmOrigin_f (struct UtmCoor_f *utm_def)
 Set the local (flat earth) coordinate frame origin from UTM (float). More...
 
static bool stateIsLocalCoordinateValid (void)
 Test if local coordinates are valid. More...
 
static bool stateIsGlobalCoordinateValid (void)
 Test if global coordinates are valid. More...
 
static void stateSetPositionEcef_i (struct EcefCoor_i *ecef_pos)
 Set position from ECEF coordinates (int). More...
 
static void stateSetPositionNed_i (struct NedCoor_i *ned_pos)
 Set position from local NED coordinates (int). More...
 
static void stateSetPositionEnu_i (struct EnuCoor_i *enu_pos)
 Set position from local ENU coordinates (int). More...
 
static void stateSetPositionLla_i (struct LlaCoor_i *lla_pos)
 Set position from LLA coordinates (int). More...
 
static void stateSetPosition_i (struct EcefCoor_i *ecef_pos, struct NedCoor_i *ned_pos, struct EnuCoor_i *enu_pos, struct LlaCoor_i *lla_pos)
 Set multiple position coordinates (int). More...
 
static void stateSetPositionUtm_f (struct UtmCoor_f *utm_pos)
 Set position from UTM coordinates (float). More...
 
static void stateSetPositionEcef_f (struct EcefCoor_f *ecef_pos)
 Set position from ECEF coordinates (float). More...
 
static void stateSetPositionNed_f (struct NedCoor_f *ned_pos)
 Set position from local NED coordinates (float). More...
 
static void stateSetPositionEnu_f (struct EnuCoor_f *enu_pos)
 Set position from local ENU coordinates (float). More...
 
static void stateSetPositionLla_f (struct LlaCoor_f *lla_pos)
 Set position from LLA coordinates (float). More...
 
static void stateSetPosition_f (struct EcefCoor_f *ecef_pos, struct NedCoor_f *ned_pos, struct EnuCoor_f *enu_pos, struct LlaCoor_f *lla_pos, struct UtmCoor_f *utm_pos)
 Set multiple position coordinates (float). More...
 
static struct EcefCoor_istateGetPositionEcef_i (void)
 Get position in ECEF coordinates (int). More...
 
static struct NedCoor_istateGetPositionNed_i (void)
 Get position in local NED coordinates (int). More...
 
static struct EnuCoor_istateGetPositionEnu_i (void)
 Get position in local ENU coordinates (int). More...
 
static struct LlaCoor_istateGetPositionLla_i (void)
 Get position in LLA coordinates (int). More...
 
static struct UtmCoor_fstateGetPositionUtm_f (void)
 Get position in UTM coordinates (float). More...
 
static struct EcefCoor_fstateGetPositionEcef_f (void)
 Get position in ECEF coordinates (float). More...
 
static struct NedCoor_fstateGetPositionNed_f (void)
 Get position in local NED coordinates (float). More...
 
static struct EnuCoor_fstateGetPositionEnu_f (void)
 Get position in local ENU coordinates (float). More...
 
static struct LlaCoor_fstateGetPositionLla_f (void)
 Get position in LLA coordinates (float). More...
 

Variables

uint16_t State::pos_status
 Holds the status bits for all position representations. More...
 
struct EcefCoor_i State::ecef_pos_i
 Position in EarthCenteredEarthFixed coordinates. More...
 
struct LlaCoor_i State::lla_pos_i
 Position in Latitude, Longitude and Altitude. More...
 
struct LtpDef_i State::ned_origin_i
 Definition of the local (flat earth) coordinate system. More...
 
bool State::ned_initialized_i
 true if local int coordinate frame is initialsed More...
 
struct NedCoor_i State::ned_pos_i
 Position in North East Down coordinates. More...
 
struct EnuCoor_i State::enu_pos_i
 Position in East North Up coordinates. More...
 
struct UtmCoor_f State::utm_pos_f
 Position in UTM coordinates. More...
 
float State::alt_agl_f
 Altitude above ground level. More...
 
struct LlaCoor_f State::lla_pos_f
 Position in Latitude, Longitude and Altitude. More...
 
struct EcefCoor_f State::ecef_pos_f
 Position in EarthCenteredEarthFixed coordinates. More...
 
struct LtpDef_f State::ned_origin_f
 Definition of the local (flat earth) coordinate system. More...
 
bool State::ned_initialized_f
 True if local float coordinate frame is initialsed. More...
 
struct UtmCoor_f State::utm_origin_f
 Definition of the origin of Utm coordinate system. More...
 
bool State::utm_initialized_f
 True if utm origin (float) coordinate frame is initialsed. More...
 
struct NedCoor_f State::ned_pos_f
 Position in North East Down coordinates. More...
 
struct EnuCoor_f State::enu_pos_f
 Position in East North Up coordinates. More...
 

Detailed Description

Macro Definition Documentation

◆ POS_ECEF_F

#define POS_ECEF_F   5

Definition at line 72 of file state.h.

◆ POS_ECEF_I

#define POS_ECEF_I   0

Definition at line 67 of file state.h.

◆ POS_ENU_F

#define POS_ENU_F   7

Definition at line 74 of file state.h.

◆ POS_ENU_I

#define POS_ENU_I   2

Definition at line 69 of file state.h.

◆ POS_GLOBAL_COORD

#define POS_GLOBAL_COORD   ((1<<POS_ECEF_I)|(1<<POS_ECEF_F)|(1<<POS_LLA_I)|(1<<POS_LLA_F)|(1<<POS_UTM_I)|(1<<POS_UTM_F))

Definition at line 78 of file state.h.

◆ POS_LLA_F

#define POS_LLA_F   8

Definition at line 75 of file state.h.

◆ POS_LLA_I

#define POS_LLA_I   3

Definition at line 70 of file state.h.

◆ POS_LOCAL_COORD

#define POS_LOCAL_COORD   ((1<<POS_NED_I)|(1<<POS_NED_F)|(1<<POS_ENU_I)|(1<<POS_ENU_F))

Definition at line 77 of file state.h.

◆ POS_NED_F

#define POS_NED_F   6

Definition at line 73 of file state.h.

◆ POS_NED_I

#define POS_NED_I   1

Definition at line 68 of file state.h.

◆ POS_UTM_F

#define POS_UTM_F   9

Definition at line 76 of file state.h.

◆ POS_UTM_I

#define POS_UTM_I   4

Definition at line 71 of file state.h.

Function Documentation

◆ stateCalcPositionEcef_f()

◆ stateCalcPositionEcef_i()

◆ stateCalcPositionEnu_f()

◆ stateCalcPositionEnu_i()

◆ stateCalcPositionLla_f()

◆ stateCalcPositionLla_i()

void stateCalcPositionLla_i ( void  )

Calculate LLA (int) from any other available representation.

Note that since LLA in float has bad precision this is the last choice. So we mostly first convert to ECEF and then use lla_of_ecef_i which provides higher precision but is currently using the double function internally. When using UTM coordinates, NED/ENU are abused as "local" UTM.

Definition at line 286 of file state.c.

References ECEF_BFP_OF_REAL, ecef_of_enu_pos_i(), ecef_of_ned_pos_i(), State::ecef_pos_f, State::ecef_pos_i, ENU_BFP_OF_REAL, ENU_FLOAT_OF_BFP, State::enu_pos_f, State::enu_pos_i, LLA_BFP_OF_REAL, lla_of_ecef_i(), lla_of_utm_f(), State::lla_pos_f, State::lla_pos_i, NED_BFP_OF_REAL, NED_FLOAT_OF_BFP, State::ned_initialized_i, State::ned_origin_i, State::ned_pos_f, State::ned_pos_i, POS_ECEF_F, POS_ECEF_I, POS_ENU_F, POS_ENU_I, POS_LLA_F, POS_LLA_I, POS_NED_F, POS_NED_I, State::pos_status, POS_UTM_F, state, State::utm_initialized_f, UTM_OF_ENU_ADD, UTM_OF_NED_ADD, State::utm_origin_f, and State::utm_pos_f.

Referenced by stateGetPositionLla_i().

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

◆ stateCalcPositionNed_f()

◆ stateCalcPositionNed_i()

◆ stateCalcPositionUtm_f()

◆ stateGetPositionEcef_f()

static struct EcefCoor_f* stateGetPositionEcef_f ( void  )
inlinestatic

Get position in ECEF coordinates (float).

Definition at line 701 of file state.h.

References State::ecef_pos_f, POS_ECEF_F, State::pos_status, state, and stateCalcPositionEcef_f().

+ Here is the call graph for this function:

◆ stateGetPositionEcef_i()

static struct EcefCoor_i* stateGetPositionEcef_i ( void  )
inlinestatic

Get position in ECEF coordinates (int).

Definition at line 656 of file state.h.

References State::ecef_pos_i, POS_ECEF_I, State::pos_status, state, and stateCalcPositionEcef_i().

Referenced by ins_vectornav_propagate().

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

◆ stateGetPositionEnu_f()

static struct EnuCoor_f* stateGetPositionEnu_f ( void  )
inlinestatic

Get position in local ENU coordinates (float).

Definition at line 719 of file state.h.

References State::enu_pos_f, POS_ENU_F, State::pos_status, state, and stateCalcPositionEnu_f().

Referenced by ballistic_touchdown_run(), baro_cb(), bf_getEstimatedAltitudeCm(), calculate_new_heading(), calculateForwards(), cam_nadir(), cam_target(), check_parachute_arming(), cloud_sim_detect(), collective_tracking_control(), compute_dist2_to_home(), compute_points_from_bungee(), ctc_target_send_info_to_nei(), dc_ctrl_parrot_mykonos_autoshoot(), dc_ctrl_parrot_mykonos_command(), dc_periodic(), dc_survey(), decawave_anchorless_communication_periodic(), distributed_circular(), draw_osd(), flight_benchmark_periodic(), fly_to_xy(), formation_flight(), formation_pre_call(), get_dist2_to_point(), get_time_to_home(), gls_run(), gvf_ellipse_info(), gvf_line_info(), gvf_parametric_control_2D(), gvf_segment_XY1_XY2(), gvf_sin_info(), hackhd_autoshoot(), hackhd_command(), home_direction(), jevois_send_state(), mission_nav_path(), mission_nav_segment(), mission_nav_wp(), mission_wait_pattern(), nav_advance_carrot(), nav_approaching(), nav_approaching_xy(), nav_bungee_takeoff_run(), nav_catapult_run(), nav_check_wp_time(), nav_circle(), nav_circle_XY(), nav_flower_run(), nav_flower_setup(), nav_glide_points(), nav_hybrid_approaching(), nav_hybrid_circle(), nav_hybrid_goto(), nav_hybrid_route(), nav_init_stage(), nav_lace_setup(), nav_land_here(), nav_land_run(), nav_launcher_run(), nav_launcher_setup(), nav_line_osam_run(), nav_rosette_setup(), nav_route(), nav_route_xy(), nav_set_heading_towards(), nav_skid_landing_glide(), nav_spiral_run(), nav_spiral_setup(), nav_survey_disc_setup(), nav_survey_hybrid_run(), nav_survey_poly_osam_run(), nav_survey_poly_run(), nav_survey_rectangle(), nav_survey_rectangle_init(), nav_survey_rectangle_rotorcraft_run(), nav_survey_rectangle_rotorcraft_setup(), nav_takeoff_from_here(), nav_takeoff_from_wp(), nav_takeoff_run(), nav_trinity_setup(), out_of_segment_area(), potential_task(), process_data(), range_msg_callback(), reset_all_vars(), rover_guidance_run(), snav_init(), snav_on_time(), sonar_adc_read(), sonar_pwm_read(), sonar_vl53l1x_read(), stereo_avoid_run(), tcas_periodic_task_1Hz(), tfmini_i2c_periodic(), and vertical_ctrl_module_run().

+ Here is the call graph for this function:

◆ stateGetPositionEnu_i()

static struct EnuCoor_i* stateGetPositionEnu_i ( void  )
inlinestatic

Get position in local ENU coordinates (int).

Definition at line 674 of file state.h.

References State::enu_pos_i, POS_ENU_I, State::pos_status, state, and stateCalcPositionEnu_i().

Referenced by calculateForwards(), follow_wp(), hott_update_eam_msg(), logger_control_effectiveness_periodic(), rotorcraft_cam_periodic(), run_avoid_navigation_onvision(), send_fp(), send_fp_min(), waypoint_set_here(), and waypoint_set_here_2d().

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

◆ stateGetPositionLla_f()

static struct LlaCoor_f* stateGetPositionLla_f ( void  )
inlinestatic

Get position in LLA coordinates (float).

Definition at line 728 of file state.h.

References State::lla_pos_f, POS_LLA_F, State::pos_status, state, and stateCalcPositionLla_f().

Referenced by air_data_get_amsl(), cv_target_localization_report_mark(), mavlink_send_vfr_hud(), mf_daq_send_state(), nav_takeoff_from_loc(), parse_mf_daq_msg(), pressure_abs_cb(), send_amsl(), and send_minimal_com().

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

◆ stateGetPositionLla_i()

static struct LlaCoor_i* stateGetPositionLla_i ( void  )
inlinestatic

Get position in LLA coordinates (int).

Definition at line 683 of file state.h.

References State::lla_pos_i, POS_LLA_I, State::pos_status, state, and stateCalcPositionLla_i().

Referenced by dc_info(), dc_send_command(), dc_send_shot_position(), mavlink_send_global_position_int(), meteo_stick_send_data(), push_gps_to_vision(), put_lat(), put_lon(), send_cloud_sensor_data(), waypoint_set_here(), and waypoint_set_here_2d().

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

◆ stateGetPositionNed_f()

◆ stateGetPositionNed_i()

static struct NedCoor_i* stateGetPositionNed_i ( void  )
inlinestatic

◆ stateGetPositionUtm_f()

◆ stateIsGlobalCoordinateValid()

static bool stateIsGlobalCoordinateValid ( void  )
inlinestatic

Test if global coordinates are valid.

Definition at line 515 of file state.h.

References POS_GLOBAL_COORD, State::pos_status, state, and stateIsLocalCoordinateValid().

Referenced by pressure_abs_cb().

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

◆ stateIsLocalCoordinateValid()

static bool stateIsLocalCoordinateValid ( void  )
inlinestatic

Test if local coordinates are valid.

Definition at line 508 of file state.h.

References State::ned_initialized_f, State::ned_initialized_i, POS_LOCAL_COORD, State::pos_status, state, and State::utm_initialized_f.

Referenced by copilot_parse_move_wp_dl(), nav_parse_MOVE_WP(), and stateIsGlobalCoordinateValid().

+ Here is the caller graph for this function:

◆ stateSetLocalOrigin_i()

◆ stateSetLocalUtmOrigin_f()

static void stateSetLocalUtmOrigin_f ( struct UtmCoor_f utm_def)
inlinestatic

◆ stateSetPosition_f()

static void stateSetPosition_f ( struct EcefCoor_f ecef_pos,
struct NedCoor_f ned_pos,
struct EnuCoor_f enu_pos,
struct LlaCoor_f lla_pos,
struct UtmCoor_f utm_pos 
)
inlinestatic

◆ stateSetPosition_i()

static void stateSetPosition_i ( struct EcefCoor_i ecef_pos,
struct NedCoor_i ned_pos,
struct EnuCoor_i enu_pos,
struct LlaCoor_i lla_pos 
)
inlinestatic

Set multiple position coordinates (int).

Definition at line 555 of file state.h.

References State::ecef_pos_i, State::enu_pos_i, LLA_COPY, State::lla_pos_i, State::ned_pos_i, POS_ECEF_I, POS_ENU_I, POS_LLA_I, POS_NED_I, State::pos_status, state, and VECT3_COPY.

◆ stateSetPositionEcef_f()

static void stateSetPositionEcef_f ( struct EcefCoor_f ecef_pos)
inlinestatic

Set position from ECEF coordinates (float).

Definition at line 590 of file state.h.

References State::ecef_pos_f, POS_ECEF_F, State::pos_status, state, and VECT3_COPY.

◆ stateSetPositionEcef_i()

static void stateSetPositionEcef_i ( struct EcefCoor_i ecef_pos)
inlinestatic

Set position from ECEF coordinates (int).

Definition at line 523 of file state.h.

References State::ecef_pos_i, POS_ECEF_I, State::pos_status, state, and VECT3_COPY.

◆ stateSetPositionEnu_f()

static void stateSetPositionEnu_f ( struct EnuCoor_f enu_pos)
inlinestatic

Set position from local ENU coordinates (float).

Definition at line 606 of file state.h.

References State::enu_pos_f, POS_ENU_F, State::pos_status, state, and VECT3_COPY.

◆ stateSetPositionEnu_i()

static void stateSetPositionEnu_i ( struct EnuCoor_i enu_pos)
inlinestatic

Set position from local ENU coordinates (int).

Definition at line 539 of file state.h.

References State::enu_pos_i, POS_ENU_I, State::pos_status, state, and VECT3_COPY.

◆ stateSetPositionLla_f()

static void stateSetPositionLla_f ( struct LlaCoor_f lla_pos)
inlinestatic

Set position from LLA coordinates (float).

Definition at line 614 of file state.h.

References LLA_COPY, State::lla_pos_f, POS_LLA_F, State::pos_status, and state.

◆ stateSetPositionLla_i()

static void stateSetPositionLla_i ( struct LlaCoor_i lla_pos)
inlinestatic

Set position from LLA coordinates (int).

Definition at line 547 of file state.h.

References LLA_COPY, State::lla_pos_i, POS_LLA_I, State::pos_status, and state.

Referenced by ins_vectornav_propagate().

+ Here is the caller graph for this function:

◆ stateSetPositionNed_f()

static void stateSetPositionNed_f ( struct NedCoor_f ned_pos)
inlinestatic

Set position from local NED coordinates (float).

Definition at line 598 of file state.h.

References State::ned_pos_f, POS_NED_F, State::pos_status, state, and VECT3_COPY.

Referenced by ekf_run(), ins_ekf2_update(), ins_float_invariant_propagate(), set_state_from_ins(), and sim_overwrite_ins().

+ Here is the caller graph for this function:

◆ stateSetPositionNed_i()

static void stateSetPositionNed_i ( struct NedCoor_i ned_pos)
inlinestatic

Set position from local NED coordinates (int).

Definition at line 531 of file state.h.

References State::ned_pos_i, POS_NED_I, State::pos_status, state, and VECT3_COPY.

Referenced by gps_cb(), and ins_ned_to_state().

+ Here is the caller graph for this function:

◆ stateSetPositionUtm_f()

static void stateSetPositionUtm_f ( struct UtmCoor_f utm_pos)
inlinestatic

Variable Documentation

◆ alt_agl_f

float State::alt_agl_f

Altitude above ground level.

Unit: meters

Definition at line 198 of file state.h.

Referenced by dc_send_command().

◆ ecef_pos_f

◆ ecef_pos_i

◆ enu_pos_f

struct EnuCoor_f State::enu_pos_f

Position in East North Up coordinates.

with respect to ned_origin_i (flat earth) Units: meters

Definition at line 236 of file state.h.

Referenced by stateCalcPositionEnu_f(), stateCalcPositionEnu_i(), stateCalcPositionLla_f(), stateCalcPositionLla_i(), stateCalcPositionNed_f(), stateCalcPositionNed_i(), stateCalcPositionUtm_f(), stateGetPositionEnu_f(), stateSetPosition_f(), and stateSetPositionEnu_f().

◆ enu_pos_i

struct EnuCoor_i State::enu_pos_i

Position in East North Up coordinates.

with respect to ned_origin_i (flat earth) Units: m in BFP with INT32_POS_FRAC

Definition at line 171 of file state.h.

Referenced by stateCalcPositionEnu_f(), stateCalcPositionEnu_i(), stateCalcPositionLla_f(), stateCalcPositionLla_i(), stateCalcPositionNed_f(), stateCalcPositionNed_i(), stateCalcPositionUtm_f(), stateGetPositionEnu_i(), stateSetPosition_i(), and stateSetPositionEnu_i().

◆ lla_pos_f

struct LlaCoor_f State::lla_pos_f

◆ lla_pos_i

struct LlaCoor_i State::lla_pos_i

Position in Latitude, Longitude and Altitude.

Units lat,lon: degrees*1e7 Units alt: milimeters above reference ellipsoid

Definition at line 144 of file state.h.

Referenced by stateCalcPositionEcef_f(), stateCalcPositionEcef_i(), stateCalcPositionEnu_f(), stateCalcPositionEnu_i(), stateCalcPositionLla_i(), stateCalcPositionNed_f(), stateCalcPositionNed_i(), stateCalcPositionUtm_f(), stateGetPositionLla_i(), stateSetPosition_i(), and stateSetPositionLla_i().

◆ ned_initialized_f

◆ ned_initialized_i

◆ ned_origin_f

struct LtpDef_f State::ned_origin_f

◆ ned_origin_i

◆ ned_pos_f

◆ ned_pos_i

struct NedCoor_i State::ned_pos_i

◆ pos_status

◆ utm_initialized_f

◆ utm_origin_f

struct UtmCoor_f State::utm_origin_f

Definition of the origin of Utm coordinate system.

Defines the origin of the local NorthEastDown coordinate system in UTM coordinates, used as a reference when ned_origin is not initialized. Altitude is height above MSL. (float version)

Definition at line 223 of file state.h.

Referenced by acInfoCalcPositionEnu_f(), acInfoCalcPositionEnu_i(), acInfoCalcPositionUtm_f(), acInfoCalcPositionUtm_i(), gps_cb(), ins_float_invariant_update_gps(), ins_reset_altitude_ref(), nav_land_at_loc(), nav_reset_alt(), nav_reset_reference(), nav_takeoff_from_loc(), set_ac_info_utm(), stateCalcPositionEnu_f(), stateCalcPositionEnu_i(), stateCalcPositionLla_f(), stateCalcPositionLla_i(), stateCalcPositionNed_f(), stateCalcPositionNed_i(), stateCalcPositionUtm_f(), stateInit(), and stateSetLocalUtmOrigin_f().

◆ utm_pos_f