简介#
车道区域检测器(laneAreaDetector)用于捕获一条或多条车道上某个区域内的交通情况。在现实中,这类似于车辆追踪摄像头。与感应线圈不同,车道区域检测器具有一定的长度,该长度由 length 属性或 pos、endPos 属性指定。E2 检测器的输出专门用于测量排队的静止/拥堵车辆,并且它会跟踪当前在其区域内的所有车辆(参见下表中的 timeThreshold、speedThreshold 和 jamThreshold 属性)。此外,可以将 E2 检测器与交通信号灯耦合,参见 tl 和 to 属性。
在仿真中实例化#
可以在附加文件中通过以下方式之一定义车道区域检测器。
显式车道序列#
第一种变体将检测器的位置指定为一系列 lanes,检测器位于这些车道上,并且可选地指定第一车道上的起始位置和最后一车道上的结束位置(这些可以是负值,表示距车道末端的距离)。
<additional>
<laneAreaDetector id="<ID>" lanes="<LANE_ID1> <LANE_ID2> ... <LANE_IDN>"
pos="<START_POSITION_ON_FIRST_LANE>" endPos="<END_POSITION_ON_LAST_LANE>"
friendlyPos="<BOOL>" period="<AGGREGATION_TIME>" file="<OUTPUT_FILE>"
timeThreshold="<FLOAT>" speedThreshold="<FLOAT>" jamThreshold="<FLOAT>"
tl="<TRAFFIC_LIGHT_ID>" to="<LANE_ID>"/>
</additional>
Note
对于这种规范类型,要求车道形成连续的序列,即,序列中的每条车道都存在到下一条车道的连接。
锚定车道和长度#
另一种可能的规范允许给出单个锚定车道以及 pos、endPos 和 length 中的两个属性,如下所示:
<additional>
<laneAreaDetector id="<ID>" lane="<LANE_ID>"
pos="<START_POSITION_ON_LANE>" endPos="<END_POSITION_ON_LANE>" length="<DETECTOR_LENGTH>" // <- 仅需其中两个
friendlyPos="<BOOL>" period="<AGGREGATION_TIME>" file="<OUTPUT_FILE>"
timeThreshold="<FLOAT>" speedThreshold="<FLOAT>" jamThreshold="<FLOAT>"
tl="<TRAFFIC_LIGHT_ID>" to="<LANE_ID>"/>
</additional>
如果给出了起始位置和结束位置,则假定检测器位于单条车道上。如果给出了其中一个位置并同时给出了长度,则检测器会向一个方向扩展(如果给出了结束位置则向上游扩展,否则向下游扩展)。如果车道的延续出现歧义,则序列会启发式地扩展到最自然的前驱/后继车道。指定的位置会“吸附”到车道的起点和终点,避免覆盖或未覆盖的车道片段短于 0.1 米。
属性#
属性的完整列表如下:
| 属性名称 | 值类型 | 描述 |
|---|---|---|
| id | id (字符串) | 保存检测器 id 的字符串 |
| lane | 引用的车道 id | 检测器应铺设在其上的车道的 id。该车道必须是所用网络的一部分。此参数排除了 lanes 参数。 |
| lanes | 引用的车道 id 列表 | 由空格分隔的车道 id 列表,这些车道将被检测器覆盖。所有车道必须是网络的一部分并形成连续的序列。此参数排除了 lane 和 length 参数。 |
| pos | 浮点数 | 检测器覆盖的第一车道上的位置。有关详细信息,请参见检测器线圈描述中的相同属性。默认情况下,起始位置放置在第一车道的开始处。 |
| endPos | 浮点数 | 检测器覆盖的最后一车道上的结束位置。默认情况下,结束位置放置在最后一车道的末端。 |
| length | 浮点数 | 检测器的长度(米)。如果检测器延伸到车道末端,则会扩展到前驱/连续车道。 |
| file | 文件名 | 输出文件的路径。路径可以是相对路径。 |
| period (别名 freq) | int | 聚合收集数据的聚合周期。如果既未设置 period 也未设置 tl,则数据将在整个仿真过程中聚合 |
| tl | id | 在切换时触发聚合的交通信号灯。必须指定 period 或 tl 之一 |
| to | id | 出口车道的 id,该车道与交通信号灯切换结合触发聚合。这仅与 tl 一起使用。 |
| timeThreshold | 浮点数 | 基于时间的阈值,描述车辆被识别为停止所需经过的时间;单位:秒,默认值:1秒。 |
| speedThreshold | 浮点数 | 基于速度的阈值,描述车辆被识别为停止所需达到的慢速;单位:米/秒,默认值:5/3.6米/秒。 |
| jamThreshold | 浮点数 | 到下一辆静止车辆的最大距离,以使该车辆被计为拥堵的参与者;单位:米,默认值:10米。 |
| friendlyPos | bool | 如果设置,当检测器放置在车道后面时不会报告错误。相反,检测器将放置在距车道末端 0.1 米处,或者如果位置为负且乘以 -1 后大于车道长度,则放置在位置 0.1 处;默认值:false。 |
| vTypes | string | 要考虑的车辆类型 id 的空格分隔列表,"" 表示所有;默认 ""。 |
| nextEdges | stringList | 边 id 的列表,这些边必须全部是车辆未来路线的一部分才能被检测(默认 空) |
| detectPersons | string | 检测行人而不是车辆(行人或乘客) |
生成的输出#
模拟车道区域检测器输出中的单个数据行如下所示(该行在输出中不会换行):
<interval begin="<BEGIN_TIME>" end="<END_TIME>" id="<DETECTOR_ID>" sampledSeconds="<DATA_SAMPLES>" \
nVehEntered="<VAL>" nVehLeft="<VAL>" nVehSeen="<VAL>" meanSpeed="<MEAN_SPEED>" meanTimeLoss="<MEAN_TIMELOSS>" \
meanOccupancy="<MEAN_OCCUPANCY>" maxOccupancy="<MAX_OCCUPANCY>" meanMaxJamLengthInVehicles="<VAL>" meanMaxJamLengthInMeters="<VAL>" \
maxJamLengthInVehicles="<VAL>" maxJamLengthInMeters="<VAL>" jamLengthInVehiclesSum="<VAL>" jamLengthInMetersSum="<VAL>" \
meanHaltingDuration="<VAL>" maxHaltingDuration="<VAL>" haltingDurationSum="<VAL>" meanIntervalHaltingDuration="<VAL>" \
maxIntervalHaltingDuration="<VAL>" intervalHaltingDurationSum="<VAL>" startedHalts="<VAL>" meanVehicleNumber="<VAL>" maxVehicleNumber="<VAL>" />
为了解释这大量的度量,需要简要说明车道区域检测器的工作原理。车道区域检测器会记录进入该区域的每辆车。只要车辆没有完全离开该区域,其状态就会在间隔期间的每个时间步中被收集。在这种情况下,每个车辆状态被称为一个“数据样本”,车道区域检测器的输出由完整数据收集(“周期”)间隔期间区域内所有车辆的所有数据样本组成。
由于车道区域检测器覆盖一条车道,并且车辆在这些车道上排序,因此可以识别检测器区域内的拥堵并进行测量。因为同一时间在区域内可能发生不止一个拥堵,这些值既包含所有拥堵的平均度量("jamLengthIn...Sum"),也包含最长(最大)拥堵的显式度量。对于最长的拥堵,会写入平均值("meanMaxJamLengthIn...")和最大值("maxJamLengthIn...")。[注意] 注意
以米为单位的拥堵长度可能超过车辆长度的总和,因为车辆之间的空间也被考虑在内。
除了拥堵计算外,还收集了车辆停止的持续时间。它们既在整个车辆位于检测器区域的时间跨度内收集("...HaltingDuration" 和 "haltingDurationSum"),也针对每个间隔显式收集("...IntervalHaltingDuration" 和 "intervalHaltingDurationSum")。
这些值在下表中描述。
| 名称 | 类型 | 描述 |
|---|---|---|
| begin | (仿真) 秒 | 开始收集值的第一个时间步 |
| end | (仿真) 秒 | 收集值的最后一个时间步 + DELTA_T(可能等于 begin) |
| id | id | 检测器的 id(当多个检测器共享一个输出文件时需要) |
| sampledSeconds | 秒 | 所有贡献数据的车辆在检测器上的总时间。即使时间步长为一秒,这也可能是小数,因为车辆进入和离开的时间是插值的。 |
| nVehEntered | # | 在相应间隔内进入检测器的车辆数量。(车辆前部已通过 'pos') |
| nVehLeft | # | 在相应间隔内离开检测器的车辆数量。(车辆后部已通过 'endPos' / 已变道 / 已被传送 / 已停车) |
| nVehSeen | # | 在相应间隔内位于检测器上的车辆数量(被检测器“看到”)。 |
| meanSpeed | 米/秒 | 所有收集的数据样本的平均速度。 |
| meanTimeLoss | 秒 | 相应间隔内每辆车的平均时间损失。总时间损失可以通过将此值乘以 nVehSeen 获得。 |
| meanOccupancy | % | 检测器位置被车辆占据的百分比(0-100%),对每个时间步求和并按间隔时长取平均。 |
| maxOccupancy | % | 间隔期间检测器位置被车辆占据的最大百分比(0-100%)。 |
| meanMaxJamLengthInVehicles | #车辆 | 在每个步骤中识别的最长拥堵的长度,按间隔时长取平均。单位为参与这些拥堵的车辆数。 |
| meanMaxJamLengthInMeters | 米 | 同上,但单位为米(参见注释) |
| maxJamLengthInVehicles | #车辆 | 在间隔期间识别的最长拥堵的长度。单位为参与此拥堵的车辆数。 |
| maxJamLengthInMeters | 米 | 同上,但单位为米。这包括拥堵车辆之间的间隙 |
| jamLengthInVehiclesSum | #车辆 | 在间隔期间识别的所有拥堵的长度总和。单位为参与这些拥堵的车辆数。 |
| jamLengthInMetersSum | 米 | 同上,但单位为米。这包括拥堵车辆之间的间隙 |
| meanHaltingDuration | 秒 | 进入该区域并且仍在区域内或已在报告间隔内离开该区域的车辆的平均停止持续时间。 |
| maxHaltingDuration | 秒 | 进入该区域并且仍在区域内或已在报告间隔内离开该区域的车辆的最大停止持续时间。 |
| haltingDurationSum | 秒 | 进入该区域并且仍在区域内或已在报告间隔内离开该区域的车辆的所有停止持续时间之和。 |
| meanIntervalHaltingDuration | 秒 | 进入该区域并且仍在区域内或已在报告间隔内离开该区域的车辆的平均停止持续时间,从间隔开始计时。 |
| maxIntervalHaltingDuration | 秒 | 进入该区域并且仍在区域内或已在报告间隔内离开该区域的车辆的最大停止持续时间,从间隔开始计时。 |
| intervalHaltingDurationSum | 秒 | 进入该区域并且仍在区域内或已在报告间隔内离开该区域的车辆的所有停止持续时间之和,从间隔开始计时。 |
| startedHalts | # | 开始的停止次数。请注意,在一个间隔内,车辆可能停止停止并进入新的停止状态。 |
| meanVehicleNumber | # | 位于检测器上的车辆的平均数量(按间隔时长取平均)。 |
| maxVehicleNumber | # | 间隔期间位于检测器区域上的最大车辆数量。 |
可视化#
输出可以使用 plotXMLAttributes 表示,详见该处。
其他说明#
- 模拟的车道区域检测器可以使用 TraCI 访问。如果不需要 XML 输出,可以使用属性
file="NUL"。 - 您可以自动生成检测器定义。有关更多信息,请参见输出工具。
- 检测器给出的平均速度更像是长度除以平均行驶时间,因此即使所有车辆都以恒定速度行驶,结果也会与感应线圈的测量结果不同。
- 与多入口/多出口检测器不同,该检测器
- 考虑在检测器上开始或结束其路线的车辆(或通过传送进入/离开)
- 也计算仅接触检测器起始位置的车辆
