mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-07-15 15:10:35 +08:00
AirspeedSelector: enable changing ASPD_SCALE manually in-air mid-flight (#25817)
Includes a reset in wind estimator states if changed
This commit is contained in:
@@ -121,6 +121,7 @@ public:
|
||||
void set_tas_scale_apply(int tas_scale_apply) { _tas_scale_apply = tas_scale_apply; }
|
||||
void set_CAS_scale_validated(float scale) { _CAS_scale_validated = scale; }
|
||||
void set_scale_init(float scale) { _wind_estimator.set_scale_init(scale); }
|
||||
void reset_scale_estimator() { _wind_estimator.reset_scale_to_init(); }
|
||||
|
||||
void set_enable_data_stuck_check(bool enable) { _data_stuck_check_enabled = enable; }
|
||||
void set_enable_innovation_check(bool enable) { _innovation_check_enabled = enable; }
|
||||
|
||||
@@ -494,10 +494,24 @@ void AirspeedModule::update_params()
|
||||
param_get(_param_handle_fw_thr_max, &_param_fw_thr_max);
|
||||
}
|
||||
|
||||
const float prev_scale[MAX_NUM_AIRSPEED_SENSORS] = {
|
||||
_param_airspeed_scale[0],
|
||||
_param_airspeed_scale[1],
|
||||
_param_airspeed_scale[2]
|
||||
};
|
||||
|
||||
_param_airspeed_scale[0] = _param_airspeed_scale_1.get();
|
||||
_param_airspeed_scale[1] = _param_airspeed_scale_2.get();
|
||||
_param_airspeed_scale[2] = _param_airspeed_scale_3.get();
|
||||
|
||||
for (int i = 0; i < MAX_NUM_AIRSPEED_SENSORS; i++) {
|
||||
if (fabsf(_param_airspeed_scale[i] - prev_scale[i]) > FLT_EPSILON) {
|
||||
_airspeed_validator[i].set_scale_init(_param_airspeed_scale[i]);
|
||||
_airspeed_validator[i].reset_scale_estimator();
|
||||
_airspeed_validator[i].set_CAS_scale_validated(_param_airspeed_scale[i]);
|
||||
}
|
||||
}
|
||||
|
||||
_wind_estimator_sideslip.set_wind_process_noise_spectral_density(_param_aspd_wind_nsd.get());
|
||||
_wind_estimator_sideslip.set_tas_scale_process_noise_spectral_density(_param_aspd_scale_nsd.get());
|
||||
_wind_estimator_sideslip.set_tas_noise(_param_west_tas_noise.get());
|
||||
|
||||
@@ -95,7 +95,6 @@ PARAM_DEFINE_INT32(ASPD_SCALE_APPLY, 2);
|
||||
* @min 0.5
|
||||
* @max 2.0
|
||||
* @decimal 2
|
||||
* @reboot_required true
|
||||
* @group Airspeed Validator
|
||||
* @volatile
|
||||
*/
|
||||
@@ -109,7 +108,6 @@ PARAM_DEFINE_FLOAT(ASPD_SCALE_1, 1.0f);
|
||||
* @min 0.5
|
||||
* @max 2.0
|
||||
* @decimal 2
|
||||
* @reboot_required true
|
||||
* @group Airspeed Validator
|
||||
* @volatile
|
||||
*/
|
||||
@@ -123,7 +121,6 @@ PARAM_DEFINE_FLOAT(ASPD_SCALE_2, 1.0f);
|
||||
* @min 0.5
|
||||
* @max 2.0
|
||||
* @decimal 2
|
||||
* @reboot_required true
|
||||
* @group Airspeed Validator
|
||||
* @volatile
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user