Cleanup PIDController (#597)

This commit is contained in:
Caleb Smith
2017-11-22 21:56:35 -05:00
committed by Peter Johnson
parent ba879f4663
commit 0431cf97ff
3 changed files with 14 additions and 10 deletions

View File

@@ -332,6 +332,7 @@ void PIDController::SetInputRange(double minimumInput, double maximumInput) {
std::lock_guard<wpi::mutex> lock(m_mutex);
m_minimumInput = minimumInput;
m_maximumInput = maximumInput;
m_inputRange = maximumInput - minimumInput;
}
SetSetpoint(m_setpoint);
@@ -502,8 +503,7 @@ bool PIDController::OnTarget() const {
std::lock_guard<wpi::mutex> lock(m_mutex);
switch (m_toleranceType) {
case kPercentTolerance:
return std::fabs(error) <
m_tolerance / 100 * (m_maximumInput - m_minimumInput);
return std::fabs(error) < m_tolerance / 100 * m_inputRange;
break;
case kAbsoluteTolerance:
return std::fabs(error) < m_tolerance;
@@ -640,12 +640,11 @@ void PIDController::InitTable(std::shared_ptr<nt::NetworkTable> subtable) {
* @return Error for continuous inputs.
*/
double PIDController::GetContinuousError(double error) const {
if (m_continuous &&
std::fabs(error) > (m_maximumInput - m_minimumInput) / 2) {
if (m_continuous && std::fabs(error) > m_inputRange / 2) {
if (error > 0) {
return error - (m_maximumInput - m_minimumInput);
return error - m_inputRange;
} else {
return error + (m_maximumInput - m_minimumInput);
return error + m_inputRange;
}
}