deque index out of range
ccconquer opened this issue · comments
CARLA version: 0.9.15
Platform/OS: ubuntu20.04
Problem you have experienced: When use agents/navigation/behavior_agent.py, "deque index out of range" even if the vehicle didn't reach the real destination. How can i fix it?
Code:
import carla
from agents.navigation.behavior_agent import BehaviorAgent
def main():
vehicle_list = []
try:
client = carla.Client('127.0.0.1', 2000)
client.set_timeout(5.0)
world = client.load_world('town04')
world.set_weather(carla.WeatherParameters.ClearSunset)
origin_settings = world.get_settings()
settings = world.get_settings()
settings.synchronous_mode = True
settings.fixed_delta_seconds = 0.05
world.apply_settings(settings)
waypoints = world.get_map().generate_waypoints(distance = 1)
filter_waypoints_fr = []
filter_waypoints_d = []
filter_waypoints_rt = []
filter_waypoints_lf = []
for waypoint in waypoints:
if (waypoint.road_id == 16):
filter_waypoints_fr.append(waypoint)
if (waypoint.road_id == 17):
filter_waypoints_d.append(waypoint)
if (waypoint.road_id == 27):
filter_waypoints_rt.append(waypoint)
if (waypoint.road_id == 52):
filter_waypoints_lf.append(waypoint)
blueprint_library = world.get_blueprint_library()
vehicle_bp = blueprint_library.find('vehicle.audi.a2')
vehicle_bp.set_attribute('color', '0,0,255')
vehicle0 = world.spawn_actor(vehicle_bp, filter_waypoints_fr[0].transform)
vehicle_list.append(vehicle0)
world.tick()
# create the behavior agent
agent = BehaviorAgent(vehicle0, behavior='normal')
# set the destination spot
destination = filter_waypoints_d[60].transform
# generate the route
agent.set_destination(agent.vehicle.get_location(), destination.location, clean=True)
while True:
agent.update_information(vehicle0)
world.tick()
if len(agent._local_planner.waypoints_queue)<1:
print('======== Success, Arrivied at Target Point!')
break
# top view
spectator = world.get_spectator()
transform = vehicle0.get_transform()
spectator.set_transform(carla.Transform(transform.location + carla.Location(z=40),
carla.Rotation(pitch=-90)))
speed_limit = vehicle0.get_speed_limit()
agent.get_local_planner().set_speed(speed_limit)
control = agent.run_step(debug=True)
vehicle0.apply_control(control)
finally:
world.apply_settings(origin_settings)
for i in range(len(vehicle_list)):
vehicle_list[i].destroy()
if name == 'main':
try:
main()
except KeyboardInterrupt:
print(' - Exited by user.')