引言#
自 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)降低速度,则速度将降低到最大可能值,以便车辆在相位变更时到达停车线。速度调整遵循梯形曲线:
- 减速/加速至计算出的速度值
- 保持计算出的速度值
- 在通过交叉口前加速回期望的最大速度
加速#
当车辆接近绿灯且到达停车线的时间长于剩余绿灯相位持续时间时,可能会执行加速操作。
如果以较高的 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"/>
