diff --git a/src/modules/mc_pos_control/PositionControl/PositionControl.cpp b/src/modules/mc_pos_control/PositionControl/PositionControl.cpp index 70d23c7885..8cdafc2847 100644 --- a/src/modules/mc_pos_control/PositionControl/PositionControl.cpp +++ b/src/modules/mc_pos_control/PositionControl/PositionControl.cpp @@ -164,7 +164,12 @@ void PositionControl::_velocityControl(const float dt) // Get allowed horizontal thrust after prioritizing vertical control const float thrust_max_squared = _lim_thr_max * _lim_thr_max; const float thrust_z_squared = _thr_sp(2) * _thr_sp(2); - float thrust_max_xy = sqrtf(thrust_max_squared - thrust_z_squared); + const float thrust_max_xy_squared = thrust_max_squared - thrust_z_squared; + float thrust_max_xy = 0; + + if (thrust_max_xy_squared > 0) { + thrust_max_xy = sqrtf(thrust_max_xy_squared); + } // Saturate thrust in horizontal direction const Vector2f thrust_sp_xy(_thr_sp);