Skip to content

Feedback controllers and motion control algorithms for e-Yantra robotics projects.


PID Controller

The PID controller is the most commonly used feedback controller in robotics.

TermSymbolRole
ProportionalReacts to current error
IntegralEliminates steady-state error
DerivativeDampens oscillation
python
class PIDController:
    def __init__(self, kp, ki, kd, dt=0.01):
        self.kp, self.ki, self.kd = kp, ki, kd
        self.dt = dt
        self.prev_error = 0.0
        self.integral = 0.0

    def compute(self, setpoint, measurement):
        error = setpoint - measurement
        self.integral += error * self.dt
        derivative = (error - self.prev_error) / self.dt
        self.prev_error = error
        return self.kp * error + self.ki * self.integral + self.kd * derivative

Differential Drive Kinematics

python
def diff_drive_velocities(v, omega, wheel_base):
    v_r = v + (omega * wheel_base / 2)
    v_l = v - (omega * wheel_base / 2)
    return v_r, v_l

PID Tuning Guide

WARNING

Always tune PID in a safe, open environment. Start with all gains at zero.

StepAction
1Set , . Increase until oscillation.
2Reduce to ~60% of the oscillation value.
3Add gradually to reduce overshoot.
4Add slowly to remove steady-state error.

References

Released under the MIT License.