Browse Source

VtolLandDetector add airspeed finite check

sbg
Daniel Agar 7 years ago
parent
commit
25300a6b11
  1. 8
      src/modules/land_detector/VtolLandDetector.cpp

8
src/modules/land_detector/VtolLandDetector.cpp

@ -88,8 +88,10 @@ bool VtolLandDetector::_get_landed_state()
bool landed = MulticopterLandDetector::_get_landed_state(); bool landed = MulticopterLandDetector::_get_landed_state();
// for vtol we additionally consider airspeed // for vtol we additionally consider airspeed
if (hrt_elapsed_time(&_airspeed.timestamp) < 500 * 1000) { if (hrt_elapsed_time(&_airspeed.timestamp) < 500 * 1000 && _airspeed.confidence > 0.99f
_airspeed_filtered = 0.95f * _airspeed_filtered + 0.05f * _airspeed.true_airspeed_m_s; && PX4_ISFINITE(_airspeed.indicated_airspeed_m_s)) {
_airspeed_filtered = 0.95f * _airspeed_filtered + 0.05f * _airspeed.indicated_airspeed_m_s;
} else { } else {
// if airspeed does not update, set it to zero and rely on multicopter land detector // if airspeed does not update, set it to zero and rely on multicopter land detector
@ -98,7 +100,7 @@ bool VtolLandDetector::_get_landed_state()
// only consider airspeed if we have been in air before to avoid false // only consider airspeed if we have been in air before to avoid false
// detections in the case of wind on the ground // detections in the case of wind on the ground
if (_was_in_air && _airspeed_filtered > _params.maxAirSpeed) { if (_was_in_air && (_airspeed_filtered > _params.maxAirSpeed)) {
landed = false; landed = false;
} }

Loading…
Cancel
Save