From ec9902d80214d9bc305c120c4b4172b31a7d1917 Mon Sep 17 00:00:00 2001 From: CarlOlsson Date: Sun, 3 Apr 2016 20:14:03 +0200 Subject: [PATCH] added fault status reporting --- EKF/airspeed_fusion.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/EKF/airspeed_fusion.cpp b/EKF/airspeed_fusion.cpp index d630fe6546..996531414e 100644 --- a/EKF/airspeed_fusion.cpp +++ b/EKF/airspeed_fusion.cpp @@ -89,7 +89,9 @@ void Ekf::fuseAirspeed() float _airspeed_innov_var_temp = (R_TAS + SH_TAS[2] * (P[3][3] * SH_TAS[2] + P[4][3] * SH_TAS[1] - P[22][3] * SH_TAS[2] - P[23][3] * SH_TAS[1] + P[5][3] * vd *SH_TAS[0]) + SH_TAS[1] * (P[3][4] * SH_TAS[2] + P[4][4] * SH_TAS[1] - P[22][4] * SH_TAS[2] - P[23][4] * SH_TAS[1] + P[5][4] * vd *SH_TAS[0]) - SH_TAS[2] * (P[3][22] * SH_TAS[2] + P[4][22] * SH_TAS[1] - P[22][22] * SH_TAS[2] - P[23][22] * SH_TAS[1] + P[5][22] * vd *SH_TAS[0]) - SH_TAS[1] * (P[3][23] * SH_TAS[2] + P[4][23] * SH_TAS[1] - P[22][23] * SH_TAS[2] - P[23][23] * SH_TAS[1] + P[5][23] * vd *SH_TAS[0]) + vd *SH_TAS[0] * (P[3][5] * SH_TAS[2] + P[4][5] * SH_TAS[1] - P[22][5] * SH_TAS[2] - P[23][5] * SH_TAS[1] + P[5][5] * vd *SH_TAS[0])); if (_airspeed_innov_var_temp >= R_TAS) { // Check for badly conditioned calculation SK_TAS[0] = 1.0f / _airspeed_innov_var_temp; + _fault_status.bad_airspeed = false; } else { // Reset the estimator + _fault_status.bad_airspeed = true; initialiseCovariance(); return; }