title: setRoute()函数探索
author: Tang Hui
date: 2020-05-15 14:14:00 +0800
categories: [Blogging, SUMO]
tags: [sumo, traci]
traci.vehicle.setRoute()
正如所描述的那样,函数调用需要两个参数,第一个参数是车辆ID,第二个参数是车辆要经过的edgeID构成的列表,且列表内的第一个元素即为车辆生成点所在的edgeID。如果函数调用成功,新设置的车辆行驶路径将会代替rou.xml文件内初始设置的路径。
遇到的问题
函数调用设置主车新路径成功,并且明显看出来主车是按照新设置的路径行驶的(sumo-gui车辆在路口转弯会打转向灯),并且输出车辆行驶路径发现也是新设置的路径。
print(traci.vehicle.getRoute("1"))
但是在车辆即将通过第一个路口时,sumo-gui报错,gui停止运行。注意图片中橙色内容。
最终的方案
在设置别的函数时,在程序中加入了try和except函数,鬼使神差地把 traci.vehicle.setRoute()函数也加入到了try函数下。这样子运行sumo-gui地时候,主车经过第一个路口,虽然gui报出相同地错误,但是gui会继续运行下去,主车最后是成功地按照新设置地路径跑完直到消失。
try:
traci.vehicle.setRoute('1', ['33.0.00', '31.0.00', '-29.0.00', '-0.0.00'])
except:
pass