es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué no se realiza el cambio de carril en sumo?

Tengo una red de tres carriles simples, todos en la misma dirección. Según el siguiente código, un vehículo que se supone que debe cambiar de carril se introduce en una red vacía pero no sucede nada. ¿Podría decirme cuál es el problema?

def run():
    traci.start(sumoCmd)
    traci.vehicle.add('vehicle_0', 'route_1', 'emergency', '50')
    traci.vehicle.changeLane('vehicle_0', '2', '10')
    step = 0
    while traci.simulation.step(100):           
        traci.simulationStep()
        print(step)
        step = 1
        step += 1
    traci.close()
    sys.stdout.flush()
Tags:  ,

Answer

  1. Avatar for davy.ai

    El problema con este código es que el comando de cambio de carril se está llamando antes de que la simulación realmente comience. El método changeLane se llama inmediatamente después de agregar el vehículo a la red, pero aún no se ha ingresado al bucle de pasos de la simulación. Por lo tanto, el vehículo no tiene la oportunidad de cambiar de carril ya que la red todavía está vacía. Para solucionar esto, el método changeLane debería llamarse dentro del bucle después de que la simulación haya comenzado y el vehículo haya tenido tiempo de moverse.

    Aquí hay una versión actualizada del código con el método changeLane movido dentro del bucle:

    def run():
        traci.start(sumoCmd)
        traci.vehicle.add('vehicle_0','route_1','emergency','50')
        step = 0
        while traci.simulation.step(100):           
            traci.simulationStep()
            print(step)
            if step == 10:
                traci.vehicle.changeLane('vehicle_0', '2', '10')
            step += 1
        traci.close()
        sys.stdout.flush()
    

    Con este cambio, el vehículo esperará 10 pasos de simulación antes de intentar cambiar de carril. Esto le da suficiente tiempo para moverse desde su posición inicial y entrar en un carril donde pueda cambiar a otro.

Comments are closed.