¿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()
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étodochangeLane
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: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.