MCPcopy Create free account
hub / github.com/OpenDriveLab/DriveAdapter / PIDController

Class PIDController

leaderboard/team_code/pid_controller.py:6–28  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4
5
6class PIDController(object):
7 def __init__(self, K_P=1.0, K_I=0.0, K_D=0.0, n=20):
8 self._K_P = K_P
9 self._K_I = K_I
10 self._K_D = K_D
11
12 self._window = deque([0 for _ in range(n)], maxlen=n)
13 self._max = 0.0
14 self._min = 0.0
15
16 def step(self, error):
17 self._window.append(error)
18 self._max = max(self._max, abs(error))
19 self._min = -abs(self._max)
20
21 if len(self._window) >= 2:
22 integral = np.mean(self._window)
23 derivative = (self._window[-1] - self._window[-2])
24 else:
25 integral = 0.0
26 derivative = 0.0
27
28 return self._K_P * error + self._K_I * integral + self._K_D * derivative

Callers 1

_initMethod · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected