From 22d5cbd0fac51a440749193cf5565ab71cf181f6 Mon Sep 17 00:00:00 2001 From: felsager <76905857+felsager@users.noreply.github.com> Date: Thu, 9 Oct 2025 11:10:44 -0700 Subject: [PATCH] PID: coefficients should be in front, i_rate should be i_dt (#36288) --- common/pid.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/common/pid.py b/common/pid.py index 99142280ca..ff5084781f 100644 --- a/common/pid.py +++ b/common/pid.py @@ -16,7 +16,7 @@ class PIDController: self.set_limits(pos_limit, neg_limit) - self.i_rate = 1.0 / rate + self.i_dt = 1.0 / rate self.speed = 0.0 self.reset() @@ -46,12 +46,12 @@ class PIDController: def update(self, error, error_rate=0.0, speed=0.0, feedforward=0., freeze_integrator=False): self.speed = speed - self.p = float(error) * self.k_p - self.f = feedforward * self.k_f - self.d = error_rate * self.k_d + self.p = self.k_p * float(error) + self.d = self.k_d * error_rate + self.f = self.k_f * feedforward if not freeze_integrator: - i = self.i + error * self.k_i * self.i_rate + i = self.i + self.k_i * self.i_dt * error # Don't allow windup if already clipping test_control = self.p + i + self.d + self.f