class_docstr: VehiclePIDController is the combination of two PID controllers
  (lateral and longitudinal) to perform the
  low level control a vehicle from client side
docstr: Constructor method.
  
  :param vehicle: actor to apply to local planner logic onto
  :param args_lateral: dictionary of arguments to set the lateral PID controller
  using the following semantics:
      K_P -- Proportional term
      K_D -- Differential term
      K_I -- Integral term
  :param args_longitudinal: dictionary of arguments to set the longitudinal
  PID controller using the following semantics:
      K_P -- Proportional term
      K_D -- Differential term
      K_I -- Integral term
  :param offset: If different than zero, the vehicle will drive displaced from the center line.
  Positive values imply a right offset while negative ones mean a left one. Numbers high enough
  to cause the vehicle to drive through other lanes might break the controller.
docstr_tok: ["Constructor","method",".",":","param","vehicle",":","actor","to","apply","to","local","planner","logic","onto",":","param","args_lateral",":","dictionary","of","arguments","to","set","the","lateral","PID","controller","using","the","following","semantics",":","K_P","--","Proportional","term","K_D","--","Differential","term","K_I","--","Integral","term",":","param","args_longitudinal",":","dictionary","of","arguments","to","set","the","longitudinal","PID","controller","using","the","following","semantics",":","K_P","--","Proportional","term","K_D","--","Differential","term","K_I","--","Integral","term",":","param","offset",":","If","different","than","zero",",","the","vehicle","will","drive","displaced","from","the","center","line",".","Positive","values","imply","a","right","offset","while","negative","ones","mean","a","left","one",".","Numbers","high","enough","to","cause","the","vehicle","to","drive","through","other","lanes","might","break","the","controller","."]
code: def __init__(
      self,
      vehicle,
      args_lateral,
      args_longitudinal,
      offset=0,
      max_throttle=0.75,
      max_brake=0.3,
      max_steering=0.8,
  ):
      """
      Constructor method.
  
      :param vehicle: actor to apply to local planner logic onto
      :param args_lateral: dictionary of arguments to set the lateral PID controller
      using the following semantics:
          K_P -- Proportional term
          K_D -- Differential term
          K_I -- Integral term
      :param args_longitudinal: dictionary of arguments to set the longitudinal
      PID controller using the following semantics:
          K_P -- Proportional term
          K_D -- Differential term
          K_I -- Integral term
      :param offset: If different than zero, the vehicle will drive displaced from the center line.
      Positive values imply a right offset while negative ones mean a left one. Numbers high enough
      to cause the vehicle to drive through other lanes might break the controller.
      """
  
      self.max_brake = max_brake
      self.max_throt = max_throttle
      self.max_steer = max_steering
  
      self._vehicle = vehicle
      self._world = self._vehicle.get_world()
      self.past_steering = self._vehicle.get_control().steer
      self._lon_controller = PIDLongitudinalController(
          self._vehicle, **args_longitudinal
      )
      self._lat_controller = PIDLateralController(
          self._vehicle, offset, **args_lateral
      )
  
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 VehiclePIDController object  with example: obj = VehiclePIDController(vehicle, args_lateral, args_longitudinal, offset, max_throttle, max_brake, max_steering)