diff --git a/src/modules/commander/failure_detector/FailureDetector.cpp b/src/modules/commander/failure_detector/FailureDetector.cpp index c0e7d55937..007528211b 100644 --- a/src/modules/commander/failure_detector/FailureDetector.cpp +++ b/src/modules/commander/failure_detector/FailureDetector.cpp @@ -329,9 +329,9 @@ void FailureDetector::updateImbalancedPropStatus() _imbalanced_prop_lpf.setParameters(dt, _imbalanced_prop_lpf_time_constant); - const float std_x = sqrtf(imu_status.var_accel[0]); - const float std_y = sqrtf(imu_status.var_accel[1]); - const float std_z = sqrtf(imu_status.var_accel[2]); + const float std_x = sqrtf(math::max(imu_status.var_accel[0], 0.f)); + const float std_y = sqrtf(math::max(imu_status.var_accel[1], 0.f)); + const float std_z = sqrtf(math::max(imu_status.var_accel[2], 0.f)); // Note: the metric is done using standard deviations instead of variances to be linear const float metric = (std_x + std_y) / 2.f - std_z;