class_docstr: LocalPlanner implements the basic behavior of following a
  trajectory of waypoints that is generated on-the-fly.
  
  The low-level motion of the vehicle is computed by using two PID controllers,
  one is used for the lateral control and the other for the longitudinal control (cruise speed).
  
  When multiple paths are available (intersections) this local planner makes a random choice,
  unless a given global plan has already been specified.
class_docstr_tok: ["LocalPlanner","implements","the","basic","behavior","of","following","a","trajectory","of","waypoints","that","is","generated","on-the-fly",".","The","low-level","motion","of","the","vehicle","is","computed","by","using","two","PID","controllers",",","one","is","used","for","the","lateral","control","and","the","other","for","the","longitudinal","control","(","cruise","speed",")",".","When","multiple","paths","are","available","(","intersections",")","this","local","planner","makes","a","random","choice",",","unless","a","given","global","plan","has","already","been","specified","."]
docstr: Returns whether or not the planner has finished
  
  :return: boolean
docstr_tok: ["Returns","whether","or","not","the","planner","has","finished",":","return",":","boolean"]
code: def done(self):
      """
      Returns whether or not the planner has finished
  
      :return: boolean
      """
      return len(self._waypoints_queue) == 0
  
imports: from enum import IntEnum
  from collections import deque
  import random
  import carla
  from agents.navigation.controller import VehiclePIDController
  from agents.tools.misc import draw_waypoints, get_speed
label_desc: Use image node_id 12 for calling the LocalPlanner obj's underlying member method code with example usage: obj.done() and returns: unknown