|
|
|
@ -631,25 +631,25 @@ void AttitudeEstimatorQ::task_main()
@@ -631,25 +631,25 @@ void AttitudeEstimatorQ::task_main()
|
|
|
|
|
|
|
|
|
|
ctrl_state.airspeed_valid = false; |
|
|
|
|
|
|
|
|
|
// use estimated velocity for airspeed estimate
|
|
|
|
|
if (_airspeed_mode == 1) { |
|
|
|
|
if (hrt_absolute_time() - _gpos.timestamp < 1e6) { |
|
|
|
|
ctrl_state.airspeed = sqrtf(_gpos.vel_n * _gpos.vel_n + _gpos.vel_e * _gpos.vel_e + _gpos.vel_d * _gpos.vel_d); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// do nothing, airspeed has been declared as non-valid above, controllers will handle this assuming always trim airspeed
|
|
|
|
|
|
|
|
|
|
} else if (_airspeed_mode == 2) { |
|
|
|
|
|
|
|
|
|
// use the measured airspeed
|
|
|
|
|
} else { |
|
|
|
|
/* Airspeed - take airspeed measurement directly here as no wind is estimated */ |
|
|
|
|
if (_airspeed_mode == control_state_s::AIRSPD_MODE_MEAS) { |
|
|
|
|
// use measured airspeed
|
|
|
|
|
if (PX4_ISFINITE(_airspeed.indicated_airspeed_m_s) && hrt_absolute_time() - _airspeed.timestamp < 1e6 |
|
|
|
|
&& _airspeed.timestamp > 0) { |
|
|
|
|
ctrl_state.airspeed = _airspeed.indicated_airspeed_m_s; |
|
|
|
|
ctrl_state.airspeed_valid = true; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
else if (_airspeed_mode == control_state_s::AIRSPD_MODE_EST) { |
|
|
|
|
// use estimated body velocity as airspeed estimate
|
|
|
|
|
if (hrt_absolute_time() - _gpos.timestamp < 1e6) { |
|
|
|
|
ctrl_state.airspeed = sqrtf(_gpos.vel_n * _gpos.vel_n + _gpos.vel_e * _gpos.vel_e + _gpos.vel_d * _gpos.vel_d); |
|
|
|
|
ctrl_state.airspeed_valid = true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} else if (_airspeed_mode == control_state_s::AIRSPD_MODE_DISABLED) { |
|
|
|
|
// do nothing, airspeed has been declared as non-valid above, controllers
|
|
|
|
|
// will handle this assuming always trim airspeed
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* the instance count is not used here */ |
|
|
|
|