Browse Source

AP_PI AP_Var change

using the If statement rather than Max to avoid potential AP_Var issues. I don't know if this is a real prob or not. Just being careful.
mission-4.1.18
Jason Short 13 years ago
parent
commit
6fd7c1dcda
  1. 8
      libraries/APM_PI/APM_PI.cpp

8
libraries/APM_PI/APM_PI.cpp

@ -11,8 +11,12 @@ long @@ -11,8 +11,12 @@ long
APM_PI::get_pi(int32_t error, float dt)
{
_integrator += ((float)error * _ki) * dt;
_integrator = min(_integrator, (float)_imax);
_integrator = max(_integrator, (float)-_imax);
if (_integrator < -_imax) {
_integrator = -_imax;
} else if (_integrator > _imax) {
_integrator = _imax;
}
return (float)error * _kp + _integrator;
}

Loading…
Cancel
Save