mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-03 15:28:53 +08:00
Airspeed: Base sensor model on device ID from sensor
This commit is contained in:
@@ -158,7 +158,6 @@ int initialize_parameter_handles(ParameterHandles ¶meter_handles)
|
||||
parameter_handles.vibe_thresh = param_find("ATT_VIBE_THRESH");
|
||||
|
||||
parameter_handles.air_pmodel = param_find("CAL_AIR_PMODEL");
|
||||
parameter_handles.air_smodel = param_find("CAL_AIR_SMODEL");
|
||||
parameter_handles.air_tube_length = param_find("CAL_AIR_TUBELEN");
|
||||
|
||||
// These are parameters for which QGroundControl always expects to be returned in a list request.
|
||||
@@ -493,7 +492,6 @@ int update_parameters(const ParameterHandles ¶meter_handles, Parameters &par
|
||||
param_get(parameter_handles.vibe_thresh, ¶meters.vibration_warning_threshold);
|
||||
|
||||
param_get(parameter_handles.air_pmodel, ¶meters.air_pmodel);
|
||||
param_get(parameter_handles.air_smodel, ¶meters.air_smodel);
|
||||
param_get(parameter_handles.air_tube_length, ¶meters.air_tube_length);
|
||||
|
||||
return ret;
|
||||
|
||||
@@ -147,7 +147,6 @@ struct Parameters {
|
||||
float vibration_warning_threshold;
|
||||
|
||||
int32_t air_pmodel;
|
||||
int32_t air_smodel;
|
||||
float air_tube_length;
|
||||
|
||||
};
|
||||
@@ -232,7 +231,6 @@ struct ParameterHandles {
|
||||
param_t vibe_thresh; /**< vibration threshold */
|
||||
|
||||
param_t air_pmodel;
|
||||
param_t air_smodel;
|
||||
param_t air_tube_length;
|
||||
|
||||
};
|
||||
|
||||
@@ -823,16 +823,6 @@ PARAM_DEFINE_INT32(CAL_BARO_PRIME, 0);
|
||||
*/
|
||||
PARAM_DEFINE_INT32(CAL_AIR_PMODEL, 0);
|
||||
|
||||
/**
|
||||
* Airspeed sensor model
|
||||
*
|
||||
* @value 0 Membrane sensor
|
||||
* @value 1 Sensirion SDP3x
|
||||
*
|
||||
* @group Sensor Calibration
|
||||
*/
|
||||
PARAM_DEFINE_INT32(CAL_AIR_SMODEL, 0);
|
||||
|
||||
/**
|
||||
* Airspeed sensor tube length
|
||||
* @min 0.01
|
||||
|
||||
@@ -324,10 +324,29 @@ Sensors::diff_pres_poll(struct sensor_combined_s &raw)
|
||||
|
||||
_airspeed.confidence = _airspeed_validator.confidence(hrt_absolute_time());
|
||||
|
||||
enum AIRSPEED_SENSOR_MODEL smodel;
|
||||
|
||||
switch ((_diff_pres.device_id >> 16) & 0xFF) {
|
||||
case DRV_DIFF_PRESS_DEVTYPE_SDP31:
|
||||
|
||||
/* fallthrough */
|
||||
case DRV_DIFF_PRESS_DEVTYPE_SDP32:
|
||||
|
||||
/* fallthrough */
|
||||
case DRV_DIFF_PRESS_DEVTYPE_SDP33:
|
||||
/* fallthrough */
|
||||
smodel = AIRSPEED_SENSOR_MODEL_SDP3X;
|
||||
break;
|
||||
|
||||
default:
|
||||
smodel = AIRSPEED_SENSOR_MODEL_MEMBRANE;
|
||||
break;
|
||||
}
|
||||
|
||||
/* don't risk to feed negative airspeed into the system */
|
||||
_airspeed.indicated_airspeed_m_s = math::max(0.0f,
|
||||
calc_indicated_airspeed_corrected((enum AIRSPEED_PITOT_MODEL)_parameters.air_pmodel,
|
||||
(enum AIRSPEED_SENSOR_MODEL)_parameters.air_smodel, _parameters.air_tube_length,
|
||||
smodel, _parameters.air_tube_length,
|
||||
_diff_pres.differential_pressure_filtered_pa, _voted_sensors_update.baro_pressure(),
|
||||
air_temperature_celsius));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user