From 24a471ff8f1fc8bf17d1da43552e3b955e848aa0 Mon Sep 17 00:00:00 2001 From: rmackay9 Date: Tue, 20 Mar 2012 11:51:15 +0900 Subject: [PATCH] AC_PID - added more paranoid checking that imax is positive in constructor, operator() and load_gains methods --- libraries/AC_PID/AC_PID.cpp | 1 + libraries/AC_PID/AC_PID.h | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/libraries/AC_PID/AC_PID.cpp b/libraries/AC_PID/AC_PID.cpp index 3034468352..c09478c3fa 100755 --- a/libraries/AC_PID/AC_PID.cpp +++ b/libraries/AC_PID/AC_PID.cpp @@ -120,6 +120,7 @@ AC_PID::load_gains() _ki.load(); _kd.load(); _imax.load(); + _imax = abs(_imax); } void diff --git a/libraries/AC_PID/AC_PID.h b/libraries/AC_PID/AC_PID.h index b0ff88cfca..536317335b 100755 --- a/libraries/AC_PID/AC_PID.h +++ b/libraries/AC_PID/AC_PID.h @@ -33,7 +33,7 @@ public: _kp (initial_p), _ki (initial_i), _kd (initial_d), - _imax(initial_imax) + _imax(abs(initial_imax)) { // no need for explicit load, assuming that the main code uses AP_Param::load_all. } @@ -78,7 +78,7 @@ public: const float i, const float d, const int16_t imaxval) { - _kp = p; _ki = i; _kd = d; _imax = imaxval; + _kp = p; _ki = i; _kd = d; _imax = abs(imaxval); } float kP() const { return _kp.get(); }