class_docstr: PIDLateralController implements lateral control using a PID.
docstr: Constructor method.
  
      :param vehicle: actor to apply to local planner logic onto
      :param offset: distance to the center line. If might cause issues if the value
          is large enough to make the vehicle invade other lanes.
      :param K_P: Proportional term
      :param K_D: Differential term
      :param K_I: Integral term
      :param dt: time differential in seconds
docstr_tok: ["Constructor","method",".",":","param","vehicle",":","actor","to","apply","to","local","planner","logic","onto",":","param","offset",":","distance","to","the","center","line",".","If","might","cause","issues","if","the","value","is","large","enough","to","make","the","vehicle","invade","other","lanes",".",":","param","K_P",":","Proportional","term",":","param","K_D",":","Differential","term",":","param","K_I",":","Integral","term",":","param","dt",":","time","differential","in","seconds"]
code: def __init__(
      self, vehicle, offset=0, K_P=1.0, K_I=0.0, K_D=0.0, dt=0.03
  ):
      """
      Constructor method.
  
          :param vehicle: actor to apply to local planner logic onto
          :param offset: distance to the center line. If might cause issues if the value
              is large enough to make the vehicle invade other lanes.
          :param K_P: Proportional term
          :param K_D: Differential term
          :param K_I: Integral term
          :param dt: time differential in seconds
      """
      self._vehicle = vehicle
      self._k_p = K_P
      self._k_i = K_I
      self._k_d = K_D
      self._dt = dt
      self._offset = offset
      self._e_buffer = deque(maxlen=10)
  
imports: from collections import deque
  import math
  import numpy
  import carla
  from agents.tools.misc import get_speed
label_desc: Use image node_id 1 to create a new PIDLateralController object  with example: obj = PIDLateralController(vehicle, offset, K_P, K_I, K_D, dt)