mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-04-14 10:07:39 +08:00
238 lines
24 KiB
Markdown
238 lines
24 KiB
Markdown
---
|
|
pageClass: is-wide-page
|
|
---
|
|
|
|
# EstimatorStatus (UORB message)
|
|
|
|
**TOPICS:** estimator_status
|
|
|
|
## Fields
|
|
|
|
| Name | Type | Unit [Frame] | Range/Enum | Description |
|
|
| -------------------------------- | ------------ | ------------ | ---------- | -------------------------------------------------------------------------------------------------------------------------- |
|
|
| timestamp | `uint64` | | | time since system start (microseconds) |
|
|
| timestamp_sample | `uint64` | | | the timestamp of the raw data (microseconds) |
|
|
| output_tracking_error | `float32[3]` | | | return a vector containing the output predictor angular, velocity and position tracking error magnitudes (rad), (m/s), (m) |
|
|
| gps_check_fail_flags | `uint16` | | | Bitmask to indicate status of GPS checks - see definition below |
|
|
| control_mode_flags | `uint64` | | | Bitmask to indicate EKF logic state |
|
|
| filter_fault_flags | `uint32` | | | Bitmask to indicate EKF internal faults |
|
|
| pos_horiz_accuracy | `float32` | | | 1-Sigma estimated horizontal position accuracy relative to the estimators origin (m) |
|
|
| pos_vert_accuracy | `float32` | | | 1-Sigma estimated vertical position accuracy relative to the estimators origin (m) |
|
|
| hdg_test_ratio | `float32` | | | low-pass filtered ratio of the largest heading innovation component to the innovation test limit |
|
|
| vel_test_ratio | `float32` | | | low-pass filtered ratio of the largest velocity innovation component to the innovation test limit |
|
|
| pos_test_ratio | `float32` | | | low-pass filtered ratio of the largest horizontal position innovation component to the innovation test limit |
|
|
| hgt_test_ratio | `float32` | | | low-pass filtered ratio of the vertical position innovation to the innovation test limit |
|
|
| tas_test_ratio | `float32` | | | low-pass filtered ratio of the true airspeed innovation to the innovation test limit |
|
|
| hagl_test_ratio | `float32` | | | low-pass filtered ratio of the height above ground innovation to the innovation test limit |
|
|
| beta_test_ratio | `float32` | | | low-pass filtered ratio of the synthetic sideslip innovation to the innovation test limit |
|
|
| solution_status_flags | `uint16` | | | Bitmask indicating which filter kinematic state outputs are valid for flight control use. |
|
|
| reset_count_vel_ne | `uint8` | | | number of horizontal position reset events (allow to wrap if count exceeds 255) |
|
|
| reset_count_vel_d | `uint8` | | | number of vertical velocity reset events (allow to wrap if count exceeds 255) |
|
|
| reset_count_pos_ne | `uint8` | | | number of horizontal position reset events (allow to wrap if count exceeds 255) |
|
|
| reset_count_pod_d | `uint8` | | | number of vertical position reset events (allow to wrap if count exceeds 255) |
|
|
| reset_count_quat | `uint8` | | | number of quaternion reset events (allow to wrap if count exceeds 255) |
|
|
| time_slip | `float32` | | | cumulative amount of time in seconds that the EKF inertial calculation has slipped relative to system time |
|
|
| pre_flt_fail_innov_heading | `bool` | | |
|
|
| pre_flt_fail_innov_height | `bool` | | |
|
|
| pre_flt_fail_innov_pos_horiz | `bool` | | |
|
|
| pre_flt_fail_innov_vel_horiz | `bool` | | |
|
|
| pre_flt_fail_innov_vel_vert | `bool` | | |
|
|
| pre_flt_fail_mag_field_disturbed | `bool` | | |
|
|
| accel_device_id | `uint32` | | |
|
|
| gyro_device_id | `uint32` | | |
|
|
| baro_device_id | `uint32` | | |
|
|
| mag_device_id | `uint32` | | |
|
|
| health_flags | `uint8` | | | Bitmask to indicate sensor health states (vel, pos, hgt) |
|
|
| timeout_flags | `uint8` | | | Bitmask to indicate timeout flags (vel, pos, hgt) |
|
|
| mag_inclination_deg | `float32` | | |
|
|
| mag_inclination_ref_deg | `float32` | | |
|
|
| mag_strength_gs | `float32` | | |
|
|
| mag_strength_ref_gs | `float32` | | |
|
|
|
|
## Constants
|
|
|
|
| Name | Type | Value | Description |
|
|
| ----------------------------------------------------------------------------- | ------- | ----- | --------------------------------------------------------------------------------------------- |
|
|
| <a id="#GPS_CHECK_FAIL_GPS_FIX"></a> GPS_CHECK_FAIL_GPS_FIX | `uint8` | 0 | 0 : insufficient fix type (no 3D solution) |
|
|
| <a id="#GPS_CHECK_FAIL_MIN_SAT_COUNT"></a> GPS_CHECK_FAIL_MIN_SAT_COUNT | `uint8` | 1 | 1 : minimum required sat count fail |
|
|
| <a id="#GPS_CHECK_FAIL_MAX_PDOP"></a> GPS_CHECK_FAIL_MAX_PDOP | `uint8` | 2 | 2 : maximum allowed PDOP fail |
|
|
| <a id="#GPS_CHECK_FAIL_MAX_HORZ_ERR"></a> GPS_CHECK_FAIL_MAX_HORZ_ERR | `uint8` | 3 | 3 : maximum allowed horizontal position error fail |
|
|
| <a id="#GPS_CHECK_FAIL_MAX_VERT_ERR"></a> GPS_CHECK_FAIL_MAX_VERT_ERR | `uint8` | 4 | 4 : maximum allowed vertical position error fail |
|
|
| <a id="#GPS_CHECK_FAIL_MAX_SPD_ERR"></a> GPS_CHECK_FAIL_MAX_SPD_ERR | `uint8` | 5 | 5 : maximum allowed speed error fail |
|
|
| <a id="#GPS_CHECK_FAIL_MAX_HORZ_DRIFT"></a> GPS_CHECK_FAIL_MAX_HORZ_DRIFT | `uint8` | 6 | 6 : maximum allowed horizontal position drift fail - requires stationary vehicle |
|
|
| <a id="#GPS_CHECK_FAIL_MAX_VERT_DRIFT"></a> GPS_CHECK_FAIL_MAX_VERT_DRIFT | `uint8` | 7 | 7 : maximum allowed vertical position drift fail - requires stationary vehicle |
|
|
| <a id="#GPS_CHECK_FAIL_MAX_HORZ_SPD_ERR"></a> GPS_CHECK_FAIL_MAX_HORZ_SPD_ERR | `uint8` | 8 | 8 : maximum allowed horizontal speed fail - requires stationary vehicle |
|
|
| <a id="#GPS_CHECK_FAIL_MAX_VERT_SPD_ERR"></a> GPS_CHECK_FAIL_MAX_VERT_SPD_ERR | `uint8` | 9 | 9 : maximum allowed vertical velocity discrepancy fail |
|
|
| <a id="#GPS_CHECK_FAIL_SPOOFED"></a> GPS_CHECK_FAIL_SPOOFED | `uint8` | 10 | 10 : GPS signal is spoofed |
|
|
| <a id="#GPS_CHECK_FAIL_JAMMED"></a> GPS_CHECK_FAIL_JAMMED | `uint8` | 11 | 11 : GPS signal is jammed |
|
|
| <a id="#CS_TILT_ALIGN"></a> CS_TILT_ALIGN | `uint8` | 0 | 0 - true if the filter tilt alignment is complete |
|
|
| <a id="#CS_YAW_ALIGN"></a> CS_YAW_ALIGN | `uint8` | 1 | 1 - true if the filter yaw alignment is complete |
|
|
| <a id="#CS_GNSS_POS"></a> CS_GNSS_POS | `uint8` | 2 | 2 - true if GNSS position measurements are being fused |
|
|
| <a id="#CS_OPT_FLOW"></a> CS_OPT_FLOW | `uint8` | 3 | 3 - true if optical flow measurements are being fused |
|
|
| <a id="#CS_MAG_HDG"></a> CS_MAG_HDG | `uint8` | 4 | 4 - true if a simple magnetic yaw heading is being fused |
|
|
| <a id="#CS_MAG_3D"></a> CS_MAG_3D | `uint8` | 5 | 5 - true if 3-axis magnetometer measurement are being fused |
|
|
| <a id="#CS_MAG_DEC"></a> CS_MAG_DEC | `uint8` | 6 | 6 - true if synthetic magnetic declination measurements are being fused |
|
|
| <a id="#CS_IN_AIR"></a> CS_IN_AIR | `uint8` | 7 | 7 - true when thought to be airborne |
|
|
| <a id="#CS_WIND"></a> CS_WIND | `uint8` | 8 | 8 - true when wind velocity is being estimated |
|
|
| <a id="#CS_BARO_HGT"></a> CS_BARO_HGT | `uint8` | 9 | 9 - true when baro data is being fused |
|
|
| <a id="#CS_RNG_HGT"></a> CS_RNG_HGT | `uint8` | 10 | 10 - true when range finder data is being fused for height aiding |
|
|
| <a id="#CS_GPS_HGT"></a> CS_GPS_HGT | `uint8` | 11 | 11 - true when GPS altitude is being fused |
|
|
| <a id="#CS_EV_POS"></a> CS_EV_POS | `uint8` | 12 | 12 - true when local position data from external vision is being fused |
|
|
| <a id="#CS_EV_YAW"></a> CS_EV_YAW | `uint8` | 13 | 13 - true when yaw data from external vision measurements is being fused |
|
|
| <a id="#CS_EV_HGT"></a> CS_EV_HGT | `uint8` | 14 | 14 - true when height data from external vision measurements is being fused |
|
|
| <a id="#CS_BETA"></a> CS_BETA | `uint8` | 15 | 15 - true when synthetic sideslip measurements are being fused |
|
|
| <a id="#CS_MAG_FIELD"></a> CS_MAG_FIELD | `uint8` | 16 | 16 - true when only the magnetic field states are updated by the magnetometer |
|
|
| <a id="#CS_FIXED_WING"></a> CS_FIXED_WING | `uint8` | 17 | 17 - true when thought to be operating as a fixed wing vehicle with constrained sideslip |
|
|
| <a id="#CS_MAG_FAULT"></a> CS_MAG_FAULT | `uint8` | 18 | 18 - true when the magnetometer has been declared faulty and is no longer being used |
|
|
| <a id="#CS_ASPD"></a> CS_ASPD | `uint8` | 19 | 19 - true when airspeed measurements are being fused |
|
|
| <a id="#CS_GND_EFFECT"></a> CS_GND_EFFECT | `uint8` | 20 | 20 - true when when protection from ground effect induced static pressure rise is active |
|
|
| <a id="#CS_RNG_STUCK"></a> CS_RNG_STUCK | `uint8` | 21 | 21 - true when a stuck range finder sensor has been detected |
|
|
| <a id="#CS_GPS_YAW"></a> CS_GPS_YAW | `uint8` | 22 | 22 - true when yaw (not ground course) data from a GPS receiver is being fused |
|
|
| <a id="#CS_MAG_ALIGNED"></a> CS_MAG_ALIGNED | `uint8` | 23 | 23 - true when the in-flight mag field alignment has been completed |
|
|
| <a id="#CS_EV_VEL"></a> CS_EV_VEL | `uint8` | 24 | 24 - true when local frame velocity data fusion from external vision measurements is intended |
|
|
| <a id="#CS_SYNTHETIC_MAG_Z"></a> CS_SYNTHETIC_MAG_Z | `uint8` | 25 | 25 - true when we are using a synthesized measurement for the magnetometer Z component |
|
|
| <a id="#CS_VEHICLE_AT_REST"></a> CS_VEHICLE_AT_REST | `uint8` | 26 | 26 - true when the vehicle is at rest |
|
|
| <a id="#CS_GPS_YAW_FAULT"></a> CS_GPS_YAW_FAULT | `uint8` | 27 | 27 - true when the GNSS heading has been declared faulty and is no longer being used |
|
|
| <a id="#CS_RNG_FAULT"></a> CS_RNG_FAULT | `uint8` | 28 | 28 - true when the range finder has been declared faulty and is no longer being used |
|
|
| <a id="#CS_GNSS_VEL"></a> CS_GNSS_VEL | `uint8` | 44 | 44 - true if GNSS velocity measurement fusion is intended |
|
|
| <a id="#CS_GNSS_FAULT"></a> CS_GNSS_FAULT | `uint8` | 45 | 45 - true if GNSS measurements have been declared faulty and are no longer used |
|
|
| <a id="#CS_YAW_MANUAL"></a> CS_YAW_MANUAL | `uint8` | 46 | 46 - true if yaw has been set manually |
|
|
|
|
## Source Message
|
|
|
|
[Source file (GitHub)](https://github.com/PX4/PX4-Autopilot/blob/main/msg/EstimatorStatus.msg)
|
|
|
|
::: details Click here to see original file
|
|
|
|
```c
|
|
uint64 timestamp # time since system start (microseconds)
|
|
uint64 timestamp_sample # the timestamp of the raw data (microseconds)
|
|
|
|
float32[3] output_tracking_error # return a vector containing the output predictor angular, velocity and position tracking error magnitudes (rad), (m/s), (m)
|
|
|
|
uint16 gps_check_fail_flags # Bitmask to indicate status of GPS checks - see definition below
|
|
# bits are true when corresponding test has failed
|
|
uint8 GPS_CHECK_FAIL_GPS_FIX = 0 # 0 : insufficient fix type (no 3D solution)
|
|
uint8 GPS_CHECK_FAIL_MIN_SAT_COUNT = 1 # 1 : minimum required sat count fail
|
|
uint8 GPS_CHECK_FAIL_MAX_PDOP = 2 # 2 : maximum allowed PDOP fail
|
|
uint8 GPS_CHECK_FAIL_MAX_HORZ_ERR = 3 # 3 : maximum allowed horizontal position error fail
|
|
uint8 GPS_CHECK_FAIL_MAX_VERT_ERR = 4 # 4 : maximum allowed vertical position error fail
|
|
uint8 GPS_CHECK_FAIL_MAX_SPD_ERR = 5 # 5 : maximum allowed speed error fail
|
|
uint8 GPS_CHECK_FAIL_MAX_HORZ_DRIFT = 6 # 6 : maximum allowed horizontal position drift fail - requires stationary vehicle
|
|
uint8 GPS_CHECK_FAIL_MAX_VERT_DRIFT = 7 # 7 : maximum allowed vertical position drift fail - requires stationary vehicle
|
|
uint8 GPS_CHECK_FAIL_MAX_HORZ_SPD_ERR = 8 # 8 : maximum allowed horizontal speed fail - requires stationary vehicle
|
|
uint8 GPS_CHECK_FAIL_MAX_VERT_SPD_ERR = 9 # 9 : maximum allowed vertical velocity discrepancy fail
|
|
uint8 GPS_CHECK_FAIL_SPOOFED = 10 # 10 : GPS signal is spoofed
|
|
uint8 GPS_CHECK_FAIL_JAMMED = 11 # 11 : GPS signal is jammed
|
|
|
|
uint64 control_mode_flags # Bitmask to indicate EKF logic state
|
|
uint8 CS_TILT_ALIGN = 0 # 0 - true if the filter tilt alignment is complete
|
|
uint8 CS_YAW_ALIGN = 1 # 1 - true if the filter yaw alignment is complete
|
|
uint8 CS_GNSS_POS = 2 # 2 - true if GNSS position measurements are being fused
|
|
uint8 CS_OPT_FLOW = 3 # 3 - true if optical flow measurements are being fused
|
|
uint8 CS_MAG_HDG = 4 # 4 - true if a simple magnetic yaw heading is being fused
|
|
uint8 CS_MAG_3D = 5 # 5 - true if 3-axis magnetometer measurement are being fused
|
|
uint8 CS_MAG_DEC = 6 # 6 - true if synthetic magnetic declination measurements are being fused
|
|
uint8 CS_IN_AIR = 7 # 7 - true when thought to be airborne
|
|
uint8 CS_WIND = 8 # 8 - true when wind velocity is being estimated
|
|
uint8 CS_BARO_HGT = 9 # 9 - true when baro data is being fused
|
|
uint8 CS_RNG_HGT = 10 # 10 - true when range finder data is being fused for height aiding
|
|
uint8 CS_GPS_HGT = 11 # 11 - true when GPS altitude is being fused
|
|
uint8 CS_EV_POS = 12 # 12 - true when local position data from external vision is being fused
|
|
uint8 CS_EV_YAW = 13 # 13 - true when yaw data from external vision measurements is being fused
|
|
uint8 CS_EV_HGT = 14 # 14 - true when height data from external vision measurements is being fused
|
|
uint8 CS_BETA = 15 # 15 - true when synthetic sideslip measurements are being fused
|
|
uint8 CS_MAG_FIELD = 16 # 16 - true when only the magnetic field states are updated by the magnetometer
|
|
uint8 CS_FIXED_WING = 17 # 17 - true when thought to be operating as a fixed wing vehicle with constrained sideslip
|
|
uint8 CS_MAG_FAULT = 18 # 18 - true when the magnetometer has been declared faulty and is no longer being used
|
|
uint8 CS_ASPD = 19 # 19 - true when airspeed measurements are being fused
|
|
uint8 CS_GND_EFFECT = 20 # 20 - true when when protection from ground effect induced static pressure rise is active
|
|
uint8 CS_RNG_STUCK = 21 # 21 - true when a stuck range finder sensor has been detected
|
|
uint8 CS_GPS_YAW = 22 # 22 - true when yaw (not ground course) data from a GPS receiver is being fused
|
|
uint8 CS_MAG_ALIGNED = 23 # 23 - true when the in-flight mag field alignment has been completed
|
|
uint8 CS_EV_VEL = 24 # 24 - true when local frame velocity data fusion from external vision measurements is intended
|
|
uint8 CS_SYNTHETIC_MAG_Z = 25 # 25 - true when we are using a synthesized measurement for the magnetometer Z component
|
|
uint8 CS_VEHICLE_AT_REST = 26 # 26 - true when the vehicle is at rest
|
|
uint8 CS_GPS_YAW_FAULT = 27 # 27 - true when the GNSS heading has been declared faulty and is no longer being used
|
|
uint8 CS_RNG_FAULT = 28 # 28 - true when the range finder has been declared faulty and is no longer being used
|
|
uint8 CS_GNSS_VEL = 44 # 44 - true if GNSS velocity measurement fusion is intended
|
|
uint8 CS_GNSS_FAULT = 45 # 45 - true if GNSS measurements have been declared faulty and are no longer used
|
|
uint8 CS_YAW_MANUAL = 46 # 46 - true if yaw has been set manually
|
|
|
|
uint32 filter_fault_flags # Bitmask to indicate EKF internal faults
|
|
# 0 - true if the fusion of the magnetometer X-axis has encountered a numerical error
|
|
# 1 - true if the fusion of the magnetometer Y-axis has encountered a numerical error
|
|
# 2 - true if the fusion of the magnetometer Z-axis has encountered a numerical error
|
|
# 3 - true if the fusion of the magnetic heading has encountered a numerical error
|
|
# 4 - true if the fusion of the magnetic declination has encountered a numerical error
|
|
# 5 - true if fusion of the airspeed has encountered a numerical error
|
|
# 6 - true if fusion of the synthetic sideslip constraint has encountered a numerical error
|
|
# 7 - true if fusion of the optical flow X axis has encountered a numerical error
|
|
# 8 - true if fusion of the optical flow Y axis has encountered a numerical error
|
|
# 9 - true if fusion of the North velocity has encountered a numerical error
|
|
# 10 - true if fusion of the East velocity has encountered a numerical error
|
|
# 11 - true if fusion of the Down velocity has encountered a numerical error
|
|
# 12 - true if fusion of the North position has encountered a numerical error
|
|
# 13 - true if fusion of the East position has encountered a numerical error
|
|
# 14 - true if fusion of the Down position has encountered a numerical error
|
|
# 15 - true if bad delta velocity bias estimates have been detected
|
|
# 16 - true if bad vertical accelerometer data has been detected
|
|
# 17 - true if delta velocity data contains clipping (asymmetric railing)
|
|
|
|
float32 pos_horiz_accuracy # 1-Sigma estimated horizontal position accuracy relative to the estimators origin (m)
|
|
float32 pos_vert_accuracy # 1-Sigma estimated vertical position accuracy relative to the estimators origin (m)
|
|
|
|
float32 hdg_test_ratio # low-pass filtered ratio of the largest heading innovation component to the innovation test limit
|
|
float32 vel_test_ratio # low-pass filtered ratio of the largest velocity innovation component to the innovation test limit
|
|
float32 pos_test_ratio # low-pass filtered ratio of the largest horizontal position innovation component to the innovation test limit
|
|
float32 hgt_test_ratio # low-pass filtered ratio of the vertical position innovation to the innovation test limit
|
|
float32 tas_test_ratio # low-pass filtered ratio of the true airspeed innovation to the innovation test limit
|
|
float32 hagl_test_ratio # low-pass filtered ratio of the height above ground innovation to the innovation test limit
|
|
float32 beta_test_ratio # low-pass filtered ratio of the synthetic sideslip innovation to the innovation test limit
|
|
|
|
uint16 solution_status_flags # Bitmask indicating which filter kinematic state outputs are valid for flight control use.
|
|
# 0 - True if the attitude estimate is good
|
|
# 1 - True if the horizontal velocity estimate is good
|
|
# 2 - True if the vertical velocity estimate is good
|
|
# 3 - True if the horizontal position (relative) estimate is good
|
|
# 4 - True if the horizontal position (absolute) estimate is good
|
|
# 5 - True if the vertical position (absolute) estimate is good
|
|
# 6 - True if the vertical position (above ground) estimate is good
|
|
# 7 - True if the EKF is in a constant position mode and is not using external measurements (eg GPS or optical flow)
|
|
# 8 - True if the EKF has sufficient data to enter a mode that will provide a (relative) position estimate
|
|
# 9 - True if the EKF has sufficient data to enter a mode that will provide a (absolute) position estimate
|
|
# 10 - True if the EKF has detected a GPS glitch
|
|
# 11 - True if the EKF has detected bad accelerometer data
|
|
|
|
uint8 reset_count_vel_ne # number of horizontal position reset events (allow to wrap if count exceeds 255)
|
|
uint8 reset_count_vel_d # number of vertical velocity reset events (allow to wrap if count exceeds 255)
|
|
uint8 reset_count_pos_ne # number of horizontal position reset events (allow to wrap if count exceeds 255)
|
|
uint8 reset_count_pod_d # number of vertical position reset events (allow to wrap if count exceeds 255)
|
|
uint8 reset_count_quat # number of quaternion reset events (allow to wrap if count exceeds 255)
|
|
|
|
float32 time_slip # cumulative amount of time in seconds that the EKF inertial calculation has slipped relative to system time
|
|
|
|
bool pre_flt_fail_innov_heading
|
|
bool pre_flt_fail_innov_height
|
|
bool pre_flt_fail_innov_pos_horiz
|
|
bool pre_flt_fail_innov_vel_horiz
|
|
bool pre_flt_fail_innov_vel_vert
|
|
bool pre_flt_fail_mag_field_disturbed
|
|
|
|
uint32 accel_device_id
|
|
uint32 gyro_device_id
|
|
uint32 baro_device_id
|
|
uint32 mag_device_id
|
|
|
|
# legacy local position estimator (LPE) flags
|
|
uint8 health_flags # Bitmask to indicate sensor health states (vel, pos, hgt)
|
|
uint8 timeout_flags # Bitmask to indicate timeout flags (vel, pos, hgt)
|
|
|
|
float32 mag_inclination_deg
|
|
float32 mag_inclination_ref_deg
|
|
float32 mag_strength_gs
|
|
float32 mag_strength_ref_gs
|
|
```
|
|
|
|
:::
|