carla-simulator / carla

Open-source simulator for autonomous driving research.

Home Page:http://carla.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.')

Result:
错误