From 647db728cea5cc3d7f36a33bad3bd805f8f32eb0 Mon Sep 17 00:00:00 2001 From: priseborough Date: Sun, 18 Jun 2017 19:02:06 +1000 Subject: [PATCH] AP_NavEKF2: Improve is flying check for non fly forward vehicles Will enable use of EK3_MAG_TYPE = 0 for coptersAP_NavEKF2: --- .../AP_NavEKF2/AP_NavEKF2_VehicleStatus.cpp | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/libraries/AP_NavEKF2/AP_NavEKF2_VehicleStatus.cpp b/libraries/AP_NavEKF2/AP_NavEKF2_VehicleStatus.cpp index 2bcdf39510..e88ea66c7b 100644 --- a/libraries/AP_NavEKF2/AP_NavEKF2_VehicleStatus.cpp +++ b/libraries/AP_NavEKF2/AP_NavEKF2_VehicleStatus.cpp @@ -357,14 +357,22 @@ void NavEKF2_core::detectFlight() onGround = true; } - // If height has increased since exiting on-ground, then we definitely are flying - if (!onGround && ((stateStruct.position.z - posDownAtTakeoff) < -1.5f)) { - inFlight = true; - } + if (!onGround) { + // If height has increased since exiting on-ground, then we definitely are flying + if ((stateStruct.position.z - posDownAtTakeoff) < -1.5f) { + inFlight = true; + } + + // If rangefinder has increased since exiting on-ground, then we definitely are flying + if ((rangeDataNew.rng - rngAtStartOfFlight) > 0.5f) { + inFlight = true; + } + + // If more than 15 seconds armed since exiting on-ground, then we definitely are flying + if ((imuSampleTime_ms - timeAtArming_ms) > 15000) { + inFlight = true; + } - // If rangefinder has increased since exiting on-ground, then we definitely are flying - if (!onGround && ((rangeDataNew.rng - rngAtStartOfFlight) > 0.5f)) { - inFlight = true; } }