Program Listing for File TBHController.cpp
↰ Return to documentation for file (src/LouLib/Controllers/TBHController.cpp
)
#include "TBHController.hpp"
#include "../Math/MathFunctions.hpp"
namespace LouLib {
namespace Controllers {
TBHController::TBHController(double _k) {
k = _k;
setpoint = 0;
maxOutput = 0;
minOutput = 0;
deltaTime = 0;
output = 0;
tbh = 0;
prevError = 0;
}
void TBHController::setSetpoint(double _setpoint) {
setpoint = _setpoint;
}
void TBHController::setOutputRange(double _minOutput, double _maxOutput) {
minOutput = _minOutput;
maxOutput = _maxOutput;
}
void TBHController::setDeltaTime(Units::Time _deltaTime) {
deltaTime = _deltaTime.to(Units::SECOND);
}
double TBHController::getOutput() {
return output;
}
void TBHController::update(double measurement) {
double error = setpoint - measurement;
output += error * deltaTime * k;
output = Math::clamp(output, minOutput, maxOutput);
if(Math::signum(error) != Math::signum(prevError)){
output = 0.5 * (output + tbh);
tbh = output;
prevError = error;
}
}
} // LouLib
} // Controllers