【问题标题】:Sumo, TraCI: Cannot add a vehicle after removing it without calling simulationStep()Sumo,TraCI:在不调用 SimulationStep() 的情况下移除车辆后无法添加车辆
【发布时间】:2021-03-15 03:01:30
【问题描述】:

我想编写一个通过 TraCI 重新初始化相扑模拟的方法。为此,我需要从模拟中移除所有车辆,然后再次添加其中一些车辆。

I do this by calling 
import traci

conn = traci.connect(port)
conn.vehicle.remove("55")
conn.vehicle.add("55", route_id)

# This throws an exception

引发的异常是:

traci.exceptions.TraCIException: The vehicle '55' to add already exists.

如果我在 remove 和 add 方法之间调用 conn.simulationStep(),则不会引发此异常。这在技术上是可行的,但我不希望在移除和添加车辆之间增加模拟。

当我删除车辆55 后输出traci.vehicles.getIDList() 时,我可以看到它已成功删除。那么,add 方法为什么会失败并告诉我这辆车确实存在?

【问题讨论】:

    标签: python sumo


    【解决方案1】:

    在当前模拟步骤中离开模拟的车辆仅在步骤结束时被移除,而 traci 命令在开始时被处理。这就是为什么目前无法在同一步骤中执行删除和添加(即使没有 traci)。一般来说,重用 id 不被认为是好的风格。 `getIDList' 的输出在这里不可靠,因为它只列出了可见的车辆(例如,它也排除了停车车辆)。

    毕竟,您最好尝试保存模拟状态并使用simulation.saveStatesimulation.loadState 重新加载它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-26
      • 2022-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多