class StopLines: def __init__(self, waypoint_positions, stopline_positions): self.waypoints = Waypoints(waypoint_positions) self.stopline_waypoints = self._calc_stopline_waypoints( stopline_positions) def _calc_stopline_waypoints(self, stopline_positions): return [ self.waypoints.find_closest(x, y) for x, y in stopline_positions ] def find_nearest_stopline(self, my_position): my_waypoint = self.waypoints.find_closest(my_position.x, my_position.y) min_distance = len(self.waypoints.waypoints) nearest_so_far = None for light_index, stopline_waypoint in enumerate( self.stopline_waypoints): distance = stopline_waypoint - my_waypoint if (distance >= 0) and (distance < min_distance): min_distance = distance nearest_so_far = (light_index, stopline_waypoint) return nearest_so_far
def update_base_waypoints(self, lane): self.waypoints = Waypoints(lane.waypoints)
def update_base_waypoints(self, lane): self.waypoints = Waypoints(lane.waypoints) self.stoplines = StopLines(lane.waypoints, self.config['stop_line_positions'])
def __init__(self, waypoint_positions, stopline_positions): self.waypoints = Waypoints(waypoint_positions) self.stopline_waypoints = self._calc_stopline_waypoints( stopline_positions)