GLOSA

引言#

自 1.9.1 版本起,SUMO 支持通过 glosa 设备模拟绿灯最优速度提示 (GLOSA)。这允许车辆在信号灯相位即将切换时避免在红灯前停车。

Note

由于 glosa 功能仍在开发中,其状态可通过 Issue #7721 进行检查。

装备车辆#

要将 glosa 设备附加到车辆,可以使用 <device name>=glosa 应用标准设备装备程序

例如,单个车辆可以通过以下最小示例装备 glosa:

    <vehicle id="v0" route="route0" depart="0">
        <param key="has.glosa.device" value="true"/>
    </vehicle>

GLOSA 功能#

减速#

当车辆接近红灯时,系统会比较到达停车线的时间与信号灯(针对预期行驶方向)变为绿灯的时间。如果车辆在切换前到达停车线,则可能会执行减速操作(speedFactor 更改为较低的值)。

如果可以在合理范围内(glosa.min-speed)降低速度,则速度将降低到最大可能值,以便车辆在相位变更时到达停车线。速度调整遵循梯形曲线:

  1. 减速/加速至计算出的速度值
  2. 保持计算出的速度值
  3. 在通过交叉口前加速回期望的最大速度

加速#

当车辆接近绿灯且到达停车线的时间长于剩余绿灯相位持续时间时,可能会执行加速操作。

如果以较高的 speedFactor(配置为 glosa.max-speedfactor)行驶允许在剩余绿灯时间内到达停车线,则 speedFactor 将被设置为较高的值。

通过红绿灯后,speedFactor 将恢复为默认值。

队列长度计算(自 v1.22 起)#

默认情况下,配备 glosa 设备的车辆以最高可能速度接近停车线,并忽略已在红绿灯处排队的车辆。

为了估计排队等待车辆的队列长度,红绿灯可以配备传感器。此信息会发送给其他车辆,然后这些车辆会调整其到达时间。可以通过将参数 device.glosa.use-queue 设置为 true 来模拟此行为。

    <vehicle id="v0" route="route0" depart="0">
        <param key="has.glosa.device" value="true"/>
        <param key="device.glosa.use-queue" value="true"/>
    </vehicle>

红绿灯还需要配备检测器,例如通过将 tls 设置为 delay_based。最大检测长度可以通过 detectorRange 更改。

    <tlLogic id="C" type="delay_based" programID="0">
        <param key="detectorRange" value="100" />
    </tlLogic>

Note

尽管红绿灯可能是 delay_based 类型,但它仍然可以运行静态程序。

红绿灯#

所有类型的红绿灯都通过其相位的 duration 属性提供距离切换的时间信息。自 v1.22 起,glosa 设备不仅计算到下一个相位切换的时间,还会检索车辆到达交叉口时的相位(可能是多个相位切换之后)。

Caution

这可能会导致交通感应红绿灯(其相位持续时间可能变化)出现无效操作。

通信范围可以通过在 tlLogic 上设置参数 "device.glosa.range" 进行自定义。这也可以用于禁用特定交叉口的 glosa 功能。要更新嵌入在 .net.xml 文件中的程序的参数,可以通过 --additional-files 加载以下元素:

    <tlLogic id="C" programID="0">
        <param key="device.glosa.range" value="60"/>
    </tlLogic>

参数#

以下参数影响 glosa 设备的操作。

  • device.glosa.range: (glosa 功能激活时距离停车线的最大范围,默认 100)。如果当前红绿灯也设置了此参数,则使用设备和 tls 参数的最小值。
  • device.glosa.min-speed: 减速操作的最低速度(默认 5m/s)
  • device.glosa.max-speedfactor: 尝试赶上绿灯的最大 speedFactor(默认 1.1)。设置值为 1 将确保完全遵守速度限制,但仍可能导致开得慢的司机加速。
  • device.glosa.add-switchtime (v1.21): 配备 GLOSA 的车辆试图在信号灯变绿前以最大速度到达交叉口。这会导致较晚的刹车操作。通过向相位变更添加时间偏移量,车辆会晚 X 秒到达(默认 0 秒)。
  • device.glosa.override-safety (v1.21): 默认行为是配备 glosa 的车辆接收速度建议,司机尝试匹配该速度。当接近红灯时,尽管有更高的速度建议,司机会开始减速。这是因为我们无法确定红绿灯是否真的会切换。通过将此布尔参数设置为 true,车辆将忽略当前红绿灯相位并严格遵循速度建议(默认 false)。这在具备自动车辆和保证相位持续时间的情况下是可能的。
  • device.glosa.ignore-cfmodel (v1.21): 默认行为是配备 glosa 的车辆接收速度建议,该建议会更改 speedFactor。因此,车辆在下一步的速度取决于跟驰模型。通过将此布尔参数设置为 true,设备会计算特定的速度时间线(默认 false)。车辆会明确遵循该时间线。这在一定程度上模拟了自动车辆的行为。
  • device.glosa.use-queue (v1.22): 通过将此布尔参数设置为 true,车辆会考虑红绿灯前的队列长度(默认 false)。
  • jmDriveAfterYellowTime: 此交叉口模型参数编码了在黄灯期间继续行驶的意愿,取决于黄灯相位的运行持续时间(默认 0)。在检查加速操作的可行性时将考虑该值。

所有设备参数均可通过以下方式设置:

  • sumo 选项:--device.glosa.range 150
  • vType 参数:<param key="device.glosa.min-speed" value="6"/>
  • 车辆参数:<param key="device.max.speedfactor" value="1.2"/>

TraCI#

输出#

参数检索#