交叉口处的车辆动力学由 SUMO 中描述的交叉口模型控制,详见 SUMO 中的道路交叉口模型,Krajzewicz 等人。当然,由于模型的持续演进,最新修订版中的模型可能会略有不同。本页概述了控制交叉口模型的配置选项。
内部链接 (Internal links)#
最重要的配置方面是是否对交叉口内部的动力学进行建模。这可以在构建网络时配置,或者在启动仿真时配置。 当仿真不使用内部链接时,车辆仍需遵守通行权规则(在交通信号灯处和次要道路上等待),但它们会在通过停车线后立即出现在交叉口的另一侧。 它们无法阻塞交叉口,无法在交叉口内等待左转,也不会在交叉口内发生碰撞。
Note
检查网络是否包含内部链接的最简单方法是在 sumo-gui 中加载网络,然后按 CTRL + J 以隐藏连接器形状。如果连接器内有狭窄的车道,则该网络包含内部链接(此设置也可在 gui-settings 对话框 的 Junctions 选项卡中找到)。
netconvert 选项 --no-internal-links#
当设置为 true 时,网络将不包含内部车道(交叉口内的车道)。相反,车辆将跳过交叉口。为了避免路线长度的系统性缩短,所有边缘的长度都会被人为设置为连接点中心之间的长度,而外观不会改变。当设置为 false(默认值)时,网络将包含交叉口内的车道,车辆将在这些车道上行驶,就像在普通车道上一样,尽管会受到一些阻塞限制的约束。
Note
可以通过使用 netconvert -s old.net.xml -o new.net.xml --no-internal-links BOOL 重新处理网络来更改网络中内部链接的存在,或者在 netedit 选项对话框 (F10) 中设置相应的选项。
sumo 选项 --no-internal-links#
当设置为 true 时,将忽略交叉口内的车道。如果网络本身就不包含内部车道,则不需要此选项。请注意,如果在包含内部车道的网络中忽略内部车道,路线长度将是错误的。
接近交叉口时的速度 (Speed when approaching the intersection)#
接近交叉口的车辆会区分 3 种情况:
- 既不发生穿越也不发生合流,或者车辆拥有通行权(linkState M, G 或 O):车辆直接通过交叉口,无需减速。
- 必须执行拉链式合流(仅在类型为 type="zipper" 的连接器处,linkState Z)。速度直接取决于邻近的交通流(仅在需要时才刹车)。
- 可能与其他交通流发生干扰(合流/穿越)且车辆没有通行权:车辆准备刹车,直到达到特定距离(对于每个位置,可使用连接属性 visibilityDistance 进行配置)。在该距离处,车辆会确定是否存在高优先级的交通流冲突,然后要么刹车,要么加速通过交叉口。
在上述任何一种情况下,如果另一辆车仍在交叉口内并挡住了去路,车辆也可能会减速。
在交叉口前等待 (Waiting before the Intersection)#
车辆会在其车道末端与交叉口相接处之前,根据上下文相关的偏移量进行等待。确切位置取决于以下几个因素。
车道形状 (Lane Shape)#
通常,车道正好在交叉口形状开始的地方结束。自定义每条车道确切位置的一种方法是编辑交叉口形状。另一种方法是为边缘设置自定义端点。
另一种可能性是为 <edge> 或 <lane> 元素设置 endOffset 属性。这将使边缘/车道缩短设定的量。
Note
使用 endOffset 目前不会影响连接器形状,因此在车道末端和连接器形状起点之间会出现可见的间隙。内部车道的形状将被拉长以补偿此间隙。
通行权 (Right-Of-Way)#
来自次要道路的车辆正好在车道末端等待,以便在交通流中找到合适间隙时,需要行驶的距离最小。在交通信号灯处等待的车辆会在车道末端前方 1 米的偏移处等待。
车辆类别 (Vehicle Class)#
每条边缘或车道都可以包含一个 stopOffset 子元素,以指定特定类别车辆的额外停车偏移量。这可用于定义自行车等候区。确切的语法在 stopOffset 中有解释。
在交叉口内等待 (Waiting Within the Intersection)#
在某些情况下,允许驾驶员在交叉口内等待敌对交通流的间隙。典型情况是来自优先方向的左转车辆等待对向车流,或者右转车辆必须等待直行的行人。在 SUMO 中,这是通过内部连接器来建模的。 内部连接器将内部车道分成两部分。到达交叉口后,驾驶员可以进入交叉口并行驶到第一部分的末端,尽管有敌对车辆接近。如果交叉口已被交叉口内的车辆阻塞,或者有红灯,则不允许他们进入交叉口。
在构建网络时,netconvert 会自动识别在交叉口内等待的常见情况,并在必要时创建内部连接器。在由交通信号灯控制的交叉口处,为每个具有绿色次要相位(深绿色)的交通流构建内部连接器。因此,在网络构建期间加载自定义交通信号灯计划可能会影响内部连接器的构建。
自版本 0.25.0 起,用户还可以选择自定义内部连接器的存在和位置。
通过交叉口时的速度 (Speed while passing the Intersection)#
所有车辆速度规则都适用,但还有一个附加功能来模拟转弯时的速度降低。自 SUMO 1.0 版本起,交叉口内的车道速度会根据其转弯半径而降低。这意味着,车辆将根据其individual speedFactor在转弯时降低速度。
速度限制的计算公式为:
speedLimit = sqrt(radius * factor)
其中 factor 由 --junctions.limit-turn-speed <FLOAT> 设置(默认值为 5.5)。如果 factor 设置为 0,则不应用转弯限制。
此外,计算出的速度永远不会超过该特定连接的源车道和目标车道的平均速度。
可以通过在 XML 输入中显式设置连接速度或通过 netedit 来覆盖该速度。
交叉口阻塞 (Junction Blocking)#
在大多数司法管辖区,如果出站道路拥堵,禁止驾驶员进入交叉口,以防止他们阻塞交叉口。默认情况下,SUMO 中的车辆会尝试防止阻塞交叉口。这是通过 no-block-heuristic 实现的,该启发式算法会阻止车辆驶入交叉口,如果它们可能会被困在那里。可以通过在仿真前修改仿真网络来禁用此启发式算法。
Note
no-block-heuristic 不适用于几何类节点(没有交叉交通流的节点)。
Note
当使用选项 --no-internal-links 时,不会发生交叉口阻塞。
netconvert 允许驾驶员驶入交叉口的选项#
- 设置选项 --default.junctions.keep-clear false(默认 true)将导致所有交叉口的 no-block-heuristic 被禁用。
- 设置
<node>-属性keepClear="false" - 设置
<connection>-属性keepClear="false"将导致通过该连接进入交叉口的车辆的 no-block-heuristic 被禁用。
允许驾驶员驶入交叉口的连接器模型属性#
通过在 <vType> 定义中设置连接器模型参数 jmIgnoreKeepClearTime,该类型的驾驶员将在其累积等待时间超过参数值(以秒为单位)后忽略 no-block-heuristic。
在一段时间后忽略阻塞车辆#
当 SUMO 中的车辆一段时间内无法移动时,它们将被传送以解决死锁。如果不希望这样,可以使用 sumo 选项 --ignore-junction-blocker <TIME> 来忽略在指定时间后仍在交叉车道上阻塞交叉口的车辆。这可用于模拟现实生活中最终找到绕过阻塞交叉口的违规车辆的行为。
自定义交叉口处的行为 (Customizing Behavior at Junctions)#
TraCI#
可以使用 speed 命令 设置车辆的速度。当与 speed mode 命令 结合使用时,可以禁用各种与安全相关的规则。其中包括用于以下功能的标志:
- 覆盖关于前导车辆或已在交叉口内的车辆的安全速度
- 忽略通行权规则
- 忽略红灯
驾驶员参数 (Driver Parameters)#
交叉口处的行为可以通过连接器模型参数进行配置。可以影响以下方面:
- 从未优先的道路合流时的激进程度(impatience)
- 与行人的距离保持
- 尽管存在#Junction_Blocking规则,仍驶入交叉口
- 忽略红灯 - 忽略红灯时的速度
