Browse Source

positionControl: add check on sign before sqrtf

release/1.12
Nicolas Martin 4 years ago committed by Daniel Agar
parent
commit
171bd6d784
  1. 7
      src/modules/mc_pos_control/PositionControl/PositionControl.cpp

7
src/modules/mc_pos_control/PositionControl/PositionControl.cpp

@ -164,7 +164,12 @@ void PositionControl::_velocityControl(const float dt) @@ -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);

Loading…
Cancel
Save