Paparazzi UAS  v5.8.2_stable-0-g6260b7c
Paparazzi is a free software Unmanned Aircraft System.
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
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_t stateIsLocalCoordinateValid (void)
 Test if local coordinates are valid. More...
 
static bool_t 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_t 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_t 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_t 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

#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 76 of file state.h.

Referenced by stateIsGlobalCoordinateValid().

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

Definition at line 75 of file state.h.

Referenced by stateIsLocalCoordinateValid(), and stateSetLocalUtmOrigin_f().

#define POS_UTM_I   4

Definition at line 69 of file state.h.

Function Documentation

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.

Definition at line 260 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, 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, 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, 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:

static struct EcefCoor_f* stateGetPositionEcef_f ( void  )
static

Get position in ECEF coordinates (float).

Definition at line 684 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:

static struct EcefCoor_i* stateGetPositionEcef_i ( void  )
static

Get position in ECEF coordinates (int).

Definition at line 639 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:

static struct EnuCoor_i* stateGetPositionEnu_i ( void  )
static

Get position in local ENU coordinates (int).

Definition at line 657 of file state.h.

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

Referenced by hott_update_eam_msg(), nav_advance_carrot(), nav_approaching_from(), nav_check_wp_time(), nav_circle(), nav_init_stage(), nav_route(), rotorcraft_cam_periodic(), run_avoid_navigation_onvision(), send_fp(), waypoint_set_here(), and waypoint_set_here_2d().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static struct LlaCoor_f* stateGetPositionLla_f ( void  )
static

Get position in LLA coordinates (float).

Definition at line 711 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(), mavlink_send_vfr_hud(), mf_daq_send_state(), parse_mf_daq_msg(), and pressure_abs_cb().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static struct LlaCoor_i* stateGetPositionLla_i ( void  )
static

Get position in LLA coordinates (int).

Definition at line 666 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(), push_gps_to_vision(), waypoint_set_here(), and waypoint_set_here_2d().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static struct NedCoor_f* stateGetPositionNed_f ( void  )
static

Get position in local NED coordinates (float).

Definition at line 693 of file state.h.

References State::ned_pos_f, POS_NED_F, State::pos_status, state, and stateCalcPositionNed_f().

Referenced by autopilot_guided_goto_body_relative(), autopilot_guided_goto_ned_relative(), CN_calculate_target(), guidance_indi_run(), and mavlink_send_local_position_ned().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static struct NedCoor_i* stateGetPositionNed_i ( void  )
static

Get position in local NED coordinates (int).

Definition at line 648 of file state.h.

References State::ned_pos_i, POS_NED_I, State::pos_status, state, and stateCalcPositionNed_i().

Referenced by georeference_project(), guidance_h_hover_enter(), guidance_h_traj_run(), guidance_v_mode_changed(), guidance_v_run(), ins_vectornav_propagate(), reset_guidance_reference_from_current_position(), run_hover_loop(), and video_usb_logger_periodic().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static bool_t stateIsGlobalCoordinateValid ( void  )
inlinestatic

Test if global coordinates are valid.

Definition at line 498 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:

static bool_t stateIsLocalCoordinateValid ( void  )
inlinestatic

Test if local coordinates are valid.

Definition at line 491 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 autopilot_guided_goto_body_relative(), autopilot_guided_goto_ned_relative(), dl_parse_msg(), and stateIsGlobalCoordinateValid().

+ Here is the caller graph for this function:

static void stateSetLocalOrigin_i ( struct LtpDef_i ltp_def)
inlinestatic

Set the local (flat earth) coordinate frame origin (int).

Definition at line 440 of file state.h.

Referenced by ins_float_invariant_init(), ins_gps_passthrough_init(), ins_init_origin_from_flightplan(), ins_reset_altitude_ref(), and ins_reset_local_origin().

+ Here is the caller graph for this function:

static void stateSetLocalUtmOrigin_f ( struct UtmCoor_f utm_def)
inlinestatic

Set the local (flat earth) coordinate frame origin from UTM (float).

Definition at line 460 of file state.h.

References ACCEL_NED_F, ACCEL_NED_I, State::accel_status, POS_LOCAL_COORD, State::pos_status, SPEED_LOCAL_COORD, State::speed_status, state, TRUE, State::utm_initialized_f, and State::utm_origin_f.

Referenced by ins_alt_float_init(), ins_float_invariant_init(), ins_gps_utm_init(), ins_reset_altitude_ref(), ins_reset_local_origin(), and ins_reset_utm_zone().

+ Here is the caller graph for this function:

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
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 538 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.

static void stateSetPositionEcef_f ( struct EcefCoor_f ecef_pos)
inlinestatic

Set position from ECEF coordinates (float).

Definition at line 573 of file state.h.

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

static void stateSetPositionEcef_i ( struct EcefCoor_i ecef_pos)
inlinestatic

Set position from ECEF coordinates (int).

Definition at line 506 of file state.h.

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

static void stateSetPositionEnu_f ( struct EnuCoor_f enu_pos)
inlinestatic

Set position from local ENU coordinates (float).

Definition at line 589 of file state.h.

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

static void stateSetPositionEnu_i ( struct EnuCoor_i enu_pos)
inlinestatic

Set position from local ENU coordinates (int).

Definition at line 522 of file state.h.

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

static void stateSetPositionLla_f ( struct LlaCoor_f lla_pos)
inlinestatic

Set position from LLA coordinates (float).

Definition at line 597 of file state.h.

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

static void stateSetPositionLla_i ( struct LlaCoor_i lla_pos)
inlinestatic

Set position from LLA coordinates (int).

Definition at line 530 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:

static void stateSetPositionNed_f ( struct NedCoor_f ned_pos)
inlinestatic

Set position from local NED coordinates (float).

Definition at line 581 of file state.h.

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

Referenced by ins_float_invariant_propagate().

+ Here is the caller graph for this function:

static void stateSetPositionNed_i ( struct NedCoor_i ned_pos)
inlinestatic

Set position from local NED coordinates (int).

Definition at line 514 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:

static void stateSetPositionUtm_f ( struct UtmCoor_f utm_pos)
inlinestatic

Set position from UTM coordinates (float).

Definition at line 565 of file state.h.

References State::pos_status, POS_UTM_F, state, and State::utm_pos_f.

Referenced by gps_cb(), ins_alt_float_init(), ins_alt_float_update_baro(), ins_alt_float_update_gps(), ins_float_invariant_init(), and ins_gps_utm_init().

+ Here is the caller graph for this function:

Variable Documentation

float State::alt_agl_f

Altitude above ground level.

Unit: meters

Definition at line 194 of file state.h.

Referenced by dc_send_command(), and write_serial_rot().

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 245 of file state.h.

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

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 181 of file state.h.

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

struct LlaCoor_f State::lla_pos_f
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 153 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().

struct LtpDef_f State::ned_origin_f

Definition of the local (flat earth) coordinate system.

Defines the origin of the local NorthEastDown coordinate system in ECEF (EarthCenteredEarthFixed) and LLA (LatitudeLongitudeAlt) coordinates and the roation matrix from ECEF to local frame. (float version)

Definition at line 216 of file state.h.

Referenced by ins_float_invariant_update_gps(), mavlink_send_global_position_int(), pressure_abs_cb(), stateCalcAccelEcef_f(), stateCalcAccelNed_f(), stateCalcHorizontalSpeedNorm_i(), stateCalcPositionEcef_f(), stateCalcPositionEcef_i(), stateCalcPositionEnu_f(), stateCalcPositionEnu_i(), stateCalcPositionLla_f(), stateCalcPositionNed_f(), stateCalcPositionNed_i(), stateCalcSpeedEcef_f(), stateCalcSpeedEnu_f(), and stateCalcSpeedNed_f().

struct LtpDef_i State::ned_origin_i
struct NedCoor_i State::ned_pos_i
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. (float version)

Definition at line 228 of file state.h.

Referenced by ins_float_invariant_update_gps(), ins_reset_altitude_ref(), nav_reset_alt(), nav_reset_reference(), stateCalcPositionEnu_f(), stateCalcPositionEnu_i(), stateCalcPositionNed_f(), stateCalcPositionNed_i(), stateCalcPositionUtm_f(), and stateSetLocalUtmOrigin_f().