diff --git a/msg/versioned/AirspeedValidated.msg b/msg/versioned/AirspeedValidated.msg index a54e1510b6..c9d9eb2a61 100644 --- a/msg/versioned/AirspeedValidated.msg +++ b/msg/versioned/AirspeedValidated.msg @@ -1,22 +1,27 @@ +# Validated airspeed +# +# Provides information about airspeed (indicated, true, calibrated) and the source of the data. +# Used by controllers, estimators and for airspeed reporting to operator. + + uint32 MESSAGE_VERSION = 1 -uint64 timestamp # time since system start (microseconds) +uint64 timestamp # [us] Time since system start -float32 indicated_airspeed_m_s # [m/s] Indicated airspeed (IAS), set to NAN if invalid -float32 calibrated_airspeed_m_s # [m/s] Calibrated airspeed (CAS), set to NAN if invalid -float32 true_airspeed_m_s # [m/s] True airspeed (TAS), set to NAN if invalid +float32 indicated_airspeed_m_s # [m/s] [@invalid NaN] Indicated airspeed (IAS) +float32 calibrated_airspeed_m_s # [m/s] [@invalid NaN] Calibrated airspeed (CAS) +float32 true_airspeed_m_s # [m/s] [@invalid NaN] True airspeed (TAS) -int8 airspeed_source # Source of currently published airspeed values -int8 DISABLED = -1 -int8 GROUND_MINUS_WIND = 0 -int8 SENSOR_1 = 1 -int8 SENSOR_2 = 2 -int8 SENSOR_3 = 3 -int8 SYNTHETIC = 4 +int8 airspeed_source # [@enum SOURCE] Source of currently published airspeed values +int8 SOURCE_DISABLED = -1 # Disabled +int8 SOURCE_GROUND_MINUS_WIND = 0 # Ground speed minus wind +int8 SOURCE_SENSOR_1 = 1 # Sensor 1 +int8 SOURCE_SENSOR_2 = 2 # Sensor 2 +int8 SOURCE_SENSOR_3 = 3 # Sensor 3 +int8 SOURCE_SYNTHETIC = 4 # Synthetic airspeed -# debug states -float32 calibrated_ground_minus_wind_m_s # CAS calculated from groundspeed - windspeed, where windspeed is estimated based on a zero-sideslip assumption, set to NAN if invalid -float32 calibraded_airspeed_synth_m_s # synthetic airspeed in m/s, set to NAN if invalid -float32 airspeed_derivative_filtered # filtered indicated airspeed derivative [m/s/s] -float32 throttle_filtered # filtered fixed-wing throttle [-] -float32 pitch_filtered # filtered pitch [rad] +float32 calibrated_ground_minus_wind_m_s # [m/s] [@invalid NaN] CAS calculated from groundspeed - windspeed, where windspeed is estimated based on a zero-sideslip assumption +float32 calibraded_airspeed_synth_m_s # [m/s] [@invalid NaN] Synthetic airspeed +float32 airspeed_derivative_filtered # [m/s^2] Filtered indicated airspeed derivative +float32 throttle_filtered # [-] Filtered fixed-wing throttle +float32 pitch_filtered # [rad] Filtered pitch diff --git a/src/drivers/osd/msp_osd/uorb_to_msp.cpp b/src/drivers/osd/msp_osd/uorb_to_msp.cpp index 20caca3e38..bb2db04a16 100644 --- a/src/drivers/osd/msp_osd/uorb_to_msp.cpp +++ b/src/drivers/osd/msp_osd/uorb_to_msp.cpp @@ -319,7 +319,7 @@ msp_raw_gps_t construct_RAW_GPS(const sensor_gps_s &vehicle_gps_position, //raw_gps.hdop = vehicle_gps_position_struct.hdop raw_gps.numSat = vehicle_gps_position.satellites_used; - if (airspeed_validated.airspeed_source >= airspeed_validated_s::GROUND_MINUS_WIND + if (airspeed_validated.airspeed_source >= airspeed_validated_s::SOURCE_GROUND_MINUS_WIND && PX4_ISFINITE(airspeed_validated.indicated_airspeed_m_s) && airspeed_validated.indicated_airspeed_m_s > 0.f) { raw_gps.groundSpeed = airspeed_validated.indicated_airspeed_m_s * 100; diff --git a/src/modules/commander/HealthAndArmingChecks/checks/airspeedCheck.cpp b/src/modules/commander/HealthAndArmingChecks/checks/airspeedCheck.cpp index 8836febb8d..48c2dc8261 100644 --- a/src/modules/commander/HealthAndArmingChecks/checks/airspeedCheck.cpp +++ b/src/modules/commander/HealthAndArmingChecks/checks/airspeedCheck.cpp @@ -54,9 +54,9 @@ void AirspeedChecks::checkAndReport(const Context &context, Report &reporter) reporter.setIsPresent(health_component_t::differential_pressure); - const bool airspeed_from_sensor = airspeed_validated.airspeed_source == airspeed_validated_s::SENSOR_1 - || airspeed_validated.airspeed_source == airspeed_validated_s::SENSOR_2 - || airspeed_validated.airspeed_source == airspeed_validated_s::SENSOR_3; + const bool airspeed_from_sensor = airspeed_validated.airspeed_source == airspeed_validated_s::SOURCE_SENSOR_1 + || airspeed_validated.airspeed_source == airspeed_validated_s::SOURCE_SENSOR_2 + || airspeed_validated.airspeed_source == airspeed_validated_s::SOURCE_SENSOR_3; const float airspeed_calibrated_from_sensor = airspeed_from_sensor ? airspeed_validated.calibrated_airspeed_m_s : NAN; diff --git a/src/modules/ekf2/EKF2.cpp b/src/modules/ekf2/EKF2.cpp index 197179dc6d..ec2c975500 100644 --- a/src/modules/ekf2/EKF2.cpp +++ b/src/modules/ekf2/EKF2.cpp @@ -2085,10 +2085,10 @@ void EKF2::UpdateAirspeedSample(ekf2_timestamps_s &ekf2_timestamps) if (_airspeed_validated_sub.update(&airspeed_validated)) { if (PX4_ISFINITE(airspeed_validated.true_airspeed_m_s) - && (airspeed_validated.airspeed_source > airspeed_validated_s::GROUND_MINUS_WIND) + && (airspeed_validated.airspeed_source > airspeed_validated_s::SOURCE_GROUND_MINUS_WIND) ) { - _ekf.setSyntheticAirspeed(airspeed_validated.airspeed_source == airspeed_validated_s::SYNTHETIC); + _ekf.setSyntheticAirspeed(airspeed_validated.airspeed_source == airspeed_validated_s::SOURCE_SYNTHETIC); float cas2tas = 1.f; diff --git a/src/modules/fw_lateral_longitudinal_control/FwLateralLongitudinalControl.cpp b/src/modules/fw_lateral_longitudinal_control/FwLateralLongitudinalControl.cpp index 1c42f5838c..73df2a8683 100644 --- a/src/modules/fw_lateral_longitudinal_control/FwLateralLongitudinalControl.cpp +++ b/src/modules/fw_lateral_longitudinal_control/FwLateralLongitudinalControl.cpp @@ -607,7 +607,7 @@ void FwLateralLongitudinalControl::updateAirspeed() { // do not use synthetic airspeed as this would create a thrust loop if (PX4_ISFINITE(airspeed_validated.calibrated_airspeed_m_s) && PX4_ISFINITE(airspeed_validated.true_airspeed_m_s) - && airspeed_validated.airspeed_source != airspeed_validated_s::SYNTHETIC) { + && airspeed_validated.airspeed_source != airspeed_validated_s::SOURCE_SYNTHETIC) { _time_airspeed_last_valid = airspeed_validated.timestamp; _long_control_state.airspeed_eas = airspeed_validated.calibrated_airspeed_m_s; diff --git a/src/modules/fw_mode_manager/FixedWingModeManager.cpp b/src/modules/fw_mode_manager/FixedWingModeManager.cpp index 9d43e1f637..538961c324 100644 --- a/src/modules/fw_mode_manager/FixedWingModeManager.cpp +++ b/src/modules/fw_mode_manager/FixedWingModeManager.cpp @@ -166,7 +166,7 @@ FixedWingModeManager::airspeed_poll() // do not use synthetic airspeed as it's for the use here not reliable enough if (PX4_ISFINITE(airspeed_validated.calibrated_airspeed_m_s) - && airspeed_validated.airspeed_source != airspeed_validated_s::SYNTHETIC) { + && airspeed_validated.airspeed_source != airspeed_validated_s::SOURCE_SYNTHETIC) { _airspeed_eas = airspeed_validated.calibrated_airspeed_m_s; } diff --git a/src/modules/land_detector/FixedwingLandDetector.cpp b/src/modules/land_detector/FixedwingLandDetector.cpp index 0ca1523115..c53a99f670 100644 --- a/src/modules/land_detector/FixedwingLandDetector.cpp +++ b/src/modules/land_detector/FixedwingLandDetector.cpp @@ -93,9 +93,9 @@ bool FixedwingLandDetector::_get_landed_state() airspeed_validated_s airspeed_validated{}; _airspeed_validated_sub.copy(&airspeed_validated); - const bool airspeed_from_sensor = airspeed_validated.airspeed_source == airspeed_validated_s::SENSOR_1 - || airspeed_validated.airspeed_source == airspeed_validated_s::SENSOR_2 - || airspeed_validated.airspeed_source == airspeed_validated_s::SENSOR_3; + const bool airspeed_from_sensor = airspeed_validated.airspeed_source == airspeed_validated_s::SOURCE_SENSOR_1 + || airspeed_validated.airspeed_source == airspeed_validated_s::SOURCE_SENSOR_2 + || airspeed_validated.airspeed_source == airspeed_validated_s::SOURCE_SENSOR_3; bool airspeed_invalid = false; diff --git a/src/modules/mavlink/streams/VFR_HUD.hpp b/src/modules/mavlink/streams/VFR_HUD.hpp index 76af7fc39e..c7d5f014d2 100644 --- a/src/modules/mavlink/streams/VFR_HUD.hpp +++ b/src/modules/mavlink/streams/VFR_HUD.hpp @@ -82,9 +82,9 @@ private: airspeed_validated_s airspeed_validated{}; _airspeed_validated_sub.copy(&airspeed_validated); - const bool airspeed_from_sensor = airspeed_validated.airspeed_source == airspeed_validated_s::SENSOR_1 - || airspeed_validated.airspeed_source == airspeed_validated_s::SENSOR_2 - || airspeed_validated.airspeed_source == airspeed_validated_s::SENSOR_3; + const bool airspeed_from_sensor = airspeed_validated.airspeed_source == airspeed_validated_s::SOURCE_SENSOR_1 + || airspeed_validated.airspeed_source == airspeed_validated_s::SOURCE_SENSOR_2 + || airspeed_validated.airspeed_source == airspeed_validated_s::SOURCE_SENSOR_3; mavlink_vfr_hud_t msg{}; // display NAN in case of source not being one of the sensors diff --git a/src/modules/vtol_att_control/vtol_att_control_main.cpp b/src/modules/vtol_att_control/vtol_att_control_main.cpp index 081c5a8106..75c124d4fe 100644 --- a/src/modules/vtol_att_control/vtol_att_control_main.cpp +++ b/src/modules/vtol_att_control/vtol_att_control_main.cpp @@ -368,9 +368,9 @@ VtolAttitudeControl::Run() airspeed_validated_s airspeed_validated; if (_airspeed_validated_sub.copy(&airspeed_validated)) { - const bool airspeed_from_sensor = airspeed_validated.airspeed_source == airspeed_validated_s::SENSOR_1 - || airspeed_validated.airspeed_source == airspeed_validated_s::SENSOR_2 - || airspeed_validated.airspeed_source == airspeed_validated_s::SENSOR_3; + const bool airspeed_from_sensor = airspeed_validated.airspeed_source == airspeed_validated_s::SOURCE_SENSOR_1 + || airspeed_validated.airspeed_source == airspeed_validated_s::SOURCE_SENSOR_2 + || airspeed_validated.airspeed_source == airspeed_validated_s::SOURCE_SENSOR_3; const bool use_airspeed = _param_fw_use_airspd.get() && airspeed_from_sensor; _calibrated_airspeed = use_airspeed ? airspeed_validated.calibrated_airspeed_m_s : NAN;