class_docstr: PIDLateralController implements lateral control using a PID.
docstr: Execute one step of lateral control to steer
  the vehicle towards a certain waypoin.
  
      :param waypoint: target waypoint
      :return: steering control in the range [-1, 1] where:
      -1 maximum steering to left
      +1 maximum steering to right
docstr_tok: ["Execute","one","step","of","lateral","control","to","steer","the","vehicle","towards","a","certain","waypoin",".",":","param","waypoint",":","target","waypoint",":","return",":","steering","control","in","the","range","[","-1",",","1","]","where",":","-1","maximum","steering","to","left","+1","maximum","steering","to","right"]
code: def run_step(self, waypoint):
      """
      Execute one step of lateral control to steer
      the vehicle towards a certain waypoin.
  
          :param waypoint: target waypoint
          :return: steering control in the range [-1, 1] where:
          -1 maximum steering to left
          +1 maximum steering to right
      """
      return self._pid_control(waypoint, self._vehicle.get_transform())
  
imports: from collections import deque
  import math
  import numpy
  import carla
  from agents.tools.misc import get_speed
label_desc: Use image node_id 2 for calling the PIDLateralController obj's underlying member method code with example usage: obj.run_step(waypoint) and returns: self