N K
/
GaNtroller
a fork of priustroller
Fork of priustroller_current by
meta/pidcontroller.cpp
- Committer:
- bwang
- Date:
- 2015-03-08
- Revision:
- 11:dccbaa9274c5
- Child:
- 21:da41c08e51bc
File content as of revision 11:dccbaa9274c5:
#include "includes.h" #include "filters.h" PidController::PidController(float ki, float kp, float kd, float out_max, float out_min) { _ki = ki; _kp = kp; _kd = kd; _last_in = 0.0f; _integral = 0.0f; _out_max = out_max; _out_min = out_min; } float PidController::Update(float ref, float in) { float error = ref - in; _integral += error; if (_integral * _ki > _out_max) _integral = _out_max / _ki; if (_integral * _ki < _out_min) _integral = _out_min / _ki; float deriv = _last_in - in; _last_in = in; float tmp = _ki * _integral + _kp * error + _kd * deriv; if (tmp > _out_max) tmp = _out_max; if (tmp < _out_min) tmp = _out_min; return tmp; }