VehiclePermissions

简介#

SUMO 允许通过预定义的所谓车辆类来建模访问限制。每辆车都有一个车辆类,每条仿真车道都允许一组车辆类。车辆只能在其车辆类被允许的车道上行驶。

这对于通过区分乘用车、自行车、有轨电车和行人来描述多模式交通场景非常有用。

车辆定义#

车辆的车辆类定义如下:首先定义一个具有适当车辆类车辆类型,然后将该类型分配给车辆。下面是一个示例:

<routes>
  <vType id="myType" vClass="bus"/>

  <vehicle id="veh0" type="myType" depart="0">
    <route edges="a b c"/>
  </vehicle>
</routes>

如果未给出此类定义,车辆类默认为 passenger(普通乘用车)。通过设置该属性,会自动分配一组默认类型参数,以更好地对应于该类别的典型车辆。

网络定义#

.net.xml 文件中,每条车道定义了一组允许的车辆类。此定义可以是:

为了可视化访问权限,可以使用 sumo-guinetedit

特殊情况#

车辆类 ignoring 可以在任何边上行驶。

车辆类 pedestrian 不应分配给车辆。相反,行人应建模为行走的人。在网络构建期间,不会在仅行人的车道之间建立直接连接。应使用构建行人交叉口的选项。

自定义访问限制#

默认车辆类(包括值 custom1custom2)可以处理建模网络访问限制的大多数要求。 但是,在某些领域,如航运(吃水、梁宽)和铁路(轴重、等级),可能需要提供细粒度的数值访问模型。

为此,duarouter 提供了选项 --restriction-params 来设置边和车辆类型通用参数名称的列表。

  • 只有那些限制参数值低于相应边参数值的车辆才被允许在边上移动。
  • 如果 <vType> 未定义限制参数,则其值初始化为 0
  • 如果 <edge> 未定义限制参数,则其值初始化为 1e40

船舶吃水限制可以按以下方式建模:

duarouter --restriction-params draught -n net.net.xml -r routes.rou.xml

其中 net.net.xml 定义了一个边,如下所示:

<edge id="E" from="beg" to="end" priority="-1">
        <lane id="E_0" index="0" allow="ship" speed="13.90" length="100"/>
        <param key="draught" value="10"/>
</edge>

routes.rou.xml 定义了以下类型:

    <vType id="0" vClass="ship">
        <param key="draught" value="5"/>
    </vType>
    <vType id="1" vClass="ship">
        <param key="draught" value="15"/>
    </vType>

在此示例中,类型为 "0" 的船舶将能够使用边 "E",而类型为 "1" 的船舶将被禁止。