debugging the global router for basic_agent

This commit is contained in:
German Ros 2018-12-20 14:15:06 -08:00 committed by nsubiron
parent 1eada5f5e2
commit 466058b2ec
3 changed files with 39 additions and 14 deletions

View File

@ -43,7 +43,7 @@ class BasicAgent(object):
self._map = self._vehicle.get_world().get_map()
self._proximity_threshold = 10.0 # meters
self._state = AgentState.NAVIGATING
self._local_planner = LocalPlanner(self._vehicle)
self._local_planner = LocalPlanner(self._vehicle, plan=None)
# setting up global router
self._current_plan = None

View File

@ -13,6 +13,7 @@ from collections import deque
import random
from agents.navigation.controller import VehiclePIDController
from agents.navigation.global_route_planner import NavEnum
from agents.tools.misc import distance_vehicle, draw_waypoints
class RoadOption(Enum):
@ -39,7 +40,7 @@ class LocalPlanner(object):
# total distance)
MIN_DISTANCE_PERCENTAGE = 0.9
def __init__(self, vehicle, opt_dict={}):
def __init__(self, vehicle, opt_dict={}, plan=None):
"""
:param vehicle: actor to apply to local planner logic onto
:param opt_dict: dictionary of arguments with the following semantics:
@ -73,13 +74,13 @@ class LocalPlanner(object):
self._waypoints_queue = deque(maxlen=200)
#
self.init_controller(opt_dict)
self.init_controller(opt_dict, plan)
def __del__(self):
self._vehicle.destroy()
print("Destroying ego-vehicle!")
def init_controller(self, opt_dict):
def init_controller(self, opt_dict, plan):
"""
Controller initialization.
@ -131,7 +132,10 @@ class LocalPlanner(object):
self._target_road_option = RoadOption.LANEFOLLOW
# fill waypoint trajectory queue
self._compute_next_waypoints_global_plan(k=200)
if plan is None:
self._compute_next_waypoints(k=200)
else:
self._compute_next_waypoints_global_plan(k=200)
def set_speed(self, speed):
"""
@ -181,13 +185,16 @@ class LocalPlanner(object):
:return:
"""
# check we do not overflow the queue
print(self._global_plan)
available_entries = self._waypoints_queue.maxlen - len(self._waypoints_queue)
k = min(available_entries, k)
for _ in range(k):
for i in range(k):
last_waypoint = self._waypoints_queue[-1][0]
next_waypoints = list(last_waypoint.next(self._sampling_radius))
print(i)
if len(next_waypoints) == 1:
# only one option available ==> lanefollowing
next_waypoint = next_waypoints[0]
@ -197,13 +204,16 @@ class LocalPlanner(object):
road_options_list = retrieve_options(next_waypoints, last_waypoint)
planned_option = self._global_plan.pop(0)
print("--- PLanned option = {}".format(planned_option))
print("+++ List options = {}".format(road_options_list))
if planned_option == NavEnum.FOLLOW_LANE:
planned_option = RoadOption.LANEFOLLOW
if planned_option == NavEnum.LEFT:
planned_option = RedOption.LEFT
if planned_option == NavEnum.RIGHT:
planned_option = ReadOption.RIGHT
if planned_option == NavEnum.GO_STRAIGHT:
elif planned_option == NavEnum.LEFT:
planned_option = RoadOption.LEFT
elif planned_option == NavEnum.RIGHT:
planned_option = RoadOption.RIGHT
elif planned_option == NavEnum.GO_STRAIGHT:
planned_option = RoadOption.STRAIGHT
else:
planned_option = RoadOption.VOID
@ -214,12 +224,21 @@ class LocalPlanner(object):
print('Option not found!!')
import pdb; pdb.set_trace()
road_option = planned_option
self._waypoints_queue.append((next_waypoint, road_option))
def set_global_plan(self, current_plan):
self._waypoints_queue.clear()
self._global_plan = current_plan
self._global_plan.pop(0)
# compute initial waypoints
self._waypoints_queue.append((self._current_waypoint.next(self._sampling_radius)[0], RoadOption.LANEFOLLOW))
self._target_road_option = RoadOption.LANEFOLLOW
self._compute_next_waypoints_global_plan(k=100)
def run_step(self, debug=True):
"""
Execute one step of local planning which involves running the longitudinal and lateral PID controllers to
@ -231,7 +250,10 @@ class LocalPlanner(object):
# not enough waypoints in the horizon? => add more!
if len(self._waypoints_queue) < int(self._waypoints_queue.maxlen * 0.5):
self._compute_next_waypoints_global_plan(k=100)
if not self._global_plan:
self._compute_next_waypoints(k=100)
else:
self._compute_next_waypoints_global_plan(k=100)
# current vehicle waypoint
self._current_waypoint = self._map.get_waypoint(self._vehicle.get_location())

View File

@ -75,7 +75,9 @@ except IndexError:
import carla
from carla import ColorConverter as cc
from agents.navigation.roaming_agent import *
#from agents.navigation.roaming_agent import *
from agents.navigation.basic_agent import *
# ==============================================================================
@ -614,7 +616,8 @@ def game_loop(args):
world = World(client.get_world(), hud)
controller = KeyboardControl(world, False)
agent = RoamingAgent(world.vehicle)
agent = BasicAgent(world.vehicle)
agent.set_destination((0.8, 48.4))
clock = pygame.time.Clock()
while True: