Generic PID Controller

Hello. PID controllers are very useful, you can use them for anything.
I have PID implmentations in everything from C to javascript. Here’s my python implementation, which I often use in blender when I need to control an objects speed, velocity, angle, etc.

class PID: 
 
    def __init__(self, position, target, Kp=1.0, Ki=1.0, Kd=1.0, integralCap=0): 
        self.position = position 
        self.target = target 
        self.derivative = position - position 
        self.integral = target - position 
        self.integralCap = integralCap 
        self.error = target - position 
 
        self.Kp = Kp 
        self.Ki = Ki 
        self.Kd = Kd 
 
    # Proportional control 
    def get_p(self): 
        return self.Kp * self.error 
 
    # Integral control 
    def get_i(self): 
        return self.Ki * self.integral 
 
    # Derivative control 
    def get_d(self): 
        return self.Kd * -self.derivative 
 
    # Updates integral component 
    def update_integral(self): 
        self.integral += self.error 
        if self.integralCap: 
            if self.integral > self.integralCap: 
                self.integral = self.integralCap 
            elif self.integral < -self.integralCap: 
                self.integral = -self.integralCap 
 
    # Update the controller with a new position 
    def update(self, position): 
        self.derivative = position - self.position 
        self.position = position 
        self.error = self.target - position 
        self.update_integral() 
 
    # Get the current controll value 
    def get_response(self, position): 
        self.update(position) 
        return self.get_p() + self.get_i() + self.get_d()


Thanks! I guess that I will need it…