首页 > 解决方案 > 连接到一个相扑模拟的多个 python 客户端对象

问题描述

我是 SUMO 的新手。我有一个 .net、一个 .rou(包含 300 辆具有车辆出发、ID、路线边缘属性的车辆)、一个 .trip 和一个代表交通场景的 .sumoconfig 文件。我想将这 300 辆车创建为从 Vehicle 类生成的 python Vehicle 对象,该类包含其他功能以相互通信。他们如何动态连接到相扑并链接到场景中的那 300 辆汽车?我可以编写一个服务器来监听这些对象并接受连接,但是将它们转发或链接到那些相扑场景车辆的方式是什么?任何提示或参考或代码链接都将受到高度赞赏。

标签: pythonclient-serversumo

解决方案


最接近您想要实现的示例可能是 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])

这为您提供了存储所有车辆最新位置的地图。请注意,地图的每一步都是从头开始重建的,因此您无需担心离开车辆。如果您的车辆对象持续存在更长时间,您将需要在没有更多订阅结果后立即删除它们。


推荐阅读