我是SUMO的新手。我有一个.net,一个.rou(包含300辆具有车辆驶离,id,路线边缘属性的车辆),一个.trip和一个表示交通场景的.sumoconfig文件。我想将这300辆车创建为python车辆对象,从包含其他函数的Vehicle类中生成以相互通信。他们如何动态连接到相扑并链接到该场景中的那300辆车?我可以编写一个服务器来侦听这些对象并接受连接,但是将它们转发或链接到那些相扑场景工具的方式是什么?任何提示或引用或代码链接将不胜感激。
答案 0 :(得分:0)
最接近您想要实现的示例可能是CityMobil教程,请参见http://sumo.dlr.de/wiki/Tutorials/CityMobil,但可以归结为以下内容:
import traci
import traci.constants as tc
traci.start(["sumo", "my.sumocfg"])
traci.simulation.subscribe()
while True:
moveNodes = {}
traci.simulationStep()
# update the position of all running vehicles
for veh, subs in traci.vehicle.getAllSubscriptionResults().items():
moveNodes[veh] = (subs[tc.VAR_ROAD_ID], subs[tc.VAR_LANEPOSITION])
# add new departed vehicles
for v in traci.simulation.getSubscriptionResults()[tc.VAR_DEPARTED_VEHICLES_IDS]:
traci.vehicle.subscribe(v)
subs = traci.vehicle.getSubscriptionResults(v)
moveNodes[v] = (subs[tc.VAR_ROAD_ID], subs[tc.VAR_LANEPOSITION])
这为您提供了一张地图,其中存储了所有车辆的最新位置。请注意,地图是从头开始重建的,因此您无需担心离开车辆。如果您的车辆对象保留的时间更长,则在没有更多订阅结果的情况下,需要将其删除。