多个python客户端对象连接到一个相扑模拟

时间:2019-01-03 00:09:47

标签: python client-server sumo

我是SUMO的新手。我有一个.net,一个.rou(包含300辆具有车辆驶离,id,路线边缘属性的车辆),一个.trip和一个表示交通场景的.sumoconfig文件。我想将这300辆车创建为python车辆对象,从包含其他函数的Vehicle类中生成以相互通信。他们如何动态连接到相扑并链接到该场景中的那300辆车?我可以编写一个服务器来侦听这些对象并接受连接,但是将它们转发或链接到那些相扑场景工具的方式是什么?任何提示或引用或代码链接将不胜感激。

1 个答案:

答案 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])

这为您提供了一张地图,其中存储了所有车辆的最新位置。请注意,地图是从头开始重建的,因此您无需担心离开车辆。如果您的车辆对象保留的时间更长,则在没有更多订阅结果的情况下,需要将其删除。