mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-02-06 17:30:23 +08:00
msg: AirspeedValidated - uorb topic to standard (#25579)
* AirspeedValidated - uorb topic to standard * Apply suggestions from code review * Update msg/versioned/AirspeedValidated.msg * Fix up links to renamed uORB constants --------- Co-authored-by: PX4BuildBot <bot@pixhawk.org>
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user