一、SUMO 简介
SUMO,全称“Simulation of Urban Mobility“,是一个开源的、微观的、多模式的交通模拟软件。
1.1 SUMO 功能特点及研究应用
SUMO 可以模拟由单个车辆组成的在给定交通需求的情况下,该车辆如何通过给定的道路网络。SUMO 模拟允许处理大量的交通流量数据,可以管理具有多个 10000 条边(街道)的网络,并且在 1GHz 的机器上,车辆更新速度高达十万次每秒。同时它还是纯微观的,每辆车都可以被明确地建模,有自己的路线,并在网络中单独移动。
它的具体功能和特点如下:
- 路网建模:它可以管理万级规模的街道路网,实现机动车道、非机动车道等路网元素;并且能够实现对不同类型的出行对象的模拟,同时支持用户以个体或者集计的方式加载出行需求。
- 策略评估:支持多种管控措施并且能够输出基于车辆、路段或者交叉口等不同对象的交通数据。
- 接口拓展:提供了 Traci(Traffic Control Interface)接口,使其可以与其他外部应用交互协同工作,并且用户可以通过该接口动态检索仿真对象信息等。
而自 2001 年起,SUMO 已经在多个国家和国际研究项目中使用。这些应用包括:
- 交通信号灯评价
- 路线选择和改道
- 交通监测方法评估
- 车辆通信仿真
- 交通预测
1.2 SUMO 仿真运行机理
运行过程主要涉及到三个内容:仿真输入、仿真配置以及仿真输出,均是以 xml 文件的格式来描述。其中输入的内容包含仿真路网、交通需求和其他的附加定义(例如信号配时),在完成相应的输入后,我们要进行仿真配置,输出.sumocfg 文件,从而可以在 SUMO-gui.exe 上运行仿真过程,在仿真结束后,可以从仿真软件上获取仿真的输出和评价。在 sumo-gui 的界面上,可以分成 6 个功能区,如下图所示:
二、SUMO 基础城市路网仿真建模
2.1 路网构建
2.1.1 路网基本组成
仿真道路的路网文件以”.net.xml”作为后缀名,通过 XML 格式来描述路网中不同对象以及层级之间的关系,其中仿真的对象主要分成 4 部分,分别是车道元素,交叉口,车道连接器以及有向路段的描述。样例如下:
2.1.2 路网构建与参数调整
我们可以通过 netedit.exe 编辑器中,可以对路网进行构建,构建各种路网对象,设置路网参数在路网文件中,并且 SUMO 提供了自动化用于转换的工具、创建仿真路网,可以将其他格式的路网转换为 SUMO 路网,同时还可以用 netgenerate.exe 来快速创建三类抽象路网:网格状路网、蛛网状路网以及随机路网。
对于路网的参数,我们在 net.xml 中对不同道路对象的属性值进行调整,通过调整路网的参数,例如路段名称、车道宽度、车道长度、车道形状等,来调整后续的路径规划,控制车辆的行驶权利等等。
2.2 需求创建
对于 SUMO 仿真需求文件,一般以“.rou.xml”作为后缀名,通过对 XML 格式中的交通出行需求中不同元素以及层级关系进行描述,来表达交通的需求。其中需要描述的对象有:机动车,非机动车,行人;描述的颗粒度有:个体,集计级+OD 级以及路径级。
对于车辆的出行,我们需要描述机动车的车辆类型,对于个体车辆,需要描述其 OD 出行需求,或者路径级别的出行需求,或者通过对集计级别的出行需求;面向居民的出行,我们需要描述居民个体级的出行需求,或者是居民 OD 级的出行需求,同时还需要描述居民出行流量。
对于 SUMO 的车辆运动模型,对于跟驰模型,默认情况下使用 Krauss 模型作为跟驰模型,相应的模型如下:
{
v
s
a
f
e
=
−
b
t
+
(
b
t
)
2
+
v
l
2
+
2
b
g
v
d
e
s
=
min
{
v
m
a
x
,
v
(
t
−
1
)
+
α
Δ
t
,
v
s
a
f
e
}
v
(
t
)
=
max
{
0
,
v
d
e
s
−
r
a
n
d
(
0
,
σ
α
)
}
}
\left\{ \begin{matrix} v_{safe} & = & -bt+\sqrt{(bt)^2+v_l^2+2bg} \\ v_{des} & = &\min \{ v_{max},v(t-1)+\alpha \Delta t, v_{safe}\} \\ v(t) &=&\max \{ 0,v_{des}−rand(0,\sigma \alpha) \} \end{matrix} \right\}
⎩
⎨
⎧vsafevdesv(t)===−bt+(bt)2+vl2+2bgmin{vmax,v(t−1)+αΔt,vsafe}max{0,vdes−rand(0,σα)}⎭
⎬
⎫
Krauss 模型为安全距离类模型,模型基本参数包括:道路允许最大速度 v_max、车辆最大加速度 a、车辆最大减速度 b、最小车间距 g、平均车头时距 τ、驾驶生疏程度 σ 等。对于换道模型,SUMO 中使用 LC2013 模型,其中换道目的分为战略换道、协议换道、战术换道和基于法规换道,对应的换道行为为:lc Straight、lc Cooperative、lc SpeedGain、lc KeepRight。在仿真需求文件中,我们可以通过设置各种需求元素的属性值来对仿真需求以及运动参数进行调整。例如车辆类型、发车时刻、车辆轨迹等等。
最后,在需求创建的方式上,主要用的有:1、netedit 编辑器;2、自动化工具。其中 netedit 编辑器提供了可视化的界面,可以设置车辆、居民的不同颗粒度的出行需求以及相关参数的设置(包含 OD 级集计流量和个体出行需求以及路径级集计流量和个体出行需求),对于自动化的工具,SUMO 提供了 randomTrips.py 文件,可以指定仿真路网的文件,来随机生成 OD 级个体出行需求文件,还有 Duarouter.exe 文件,可以根据指定的仿真路网文件和 OD 级出行需求文件,生成路径级出行需求文件。
2.3 信控设置
对于 SUMO 的仿真信控文件,一般以”.add.xml“作为后缀名、通过对 XML 格式中的交叉口信控方案中不同元素以及层级关系进行描述。其中设计到的元素及描述的仿真对象包括:
-
<additional>元素:描述所有的信控方案
-
<tlLogic>元素:描述一个具体的信控方案
- <phase>元素:描述相位
-
<WAUT>元素:描述信控方案切换方式
- <wautSwitch>元素:描述信控方案切换过程
-
<wautJunction>元素:描述信控交叉口关联关系
我们可以在仿真信控文件中,设置各个信控相关元素的属性值,来对仿真信控方案的相关参数进行调整,例如相位时长、信控方案类型等等。而在信控设置上,也主要是通过 netedit 编辑器或者自动化工具来创建,netedit 提供了可视化的界面,可以设置信控交叉口并创建默认信控方案、取消设置信控交叉口以及修改信控方案等。而自动化工具包含交叉口信控生成工具和交叉口信控调整工具。
对于生成工具,netconvert.exe 可以通过指定的仿真路网文件,计算并设置信控交叉口以及控制方案,netgenerate.exe 主要创建仿真路网,但是在调用该工具的时候设置”–tls.guess“选项时,可以创建路中同时设置信控交叉口以及信控方案。
对于信控调整工具,tlsCoordinatior.py 可以根据给定的路网文件和出行需求文件,计算并创建绿波信控方案,tlsCycleAdaptation.py 则是计算并设置基于 Webster 方法的信控方案。
2.4 仿真运行
SUMO 仿真运行需要有仿真配置文件,对于仿真配置文件,是以”.sumocfg“作为后缀名的 XML 格式文件,可以通过 sumo-gui 打开。在仿真配置文件中需要设置好仿真的输入以及仿真输出,并且配置相关选项,其中设计到的元素主要包括仿真开始、结束时间、输入文件(包含路网文件、需求文件、信控文件)以及仿真输出信息(GPS 轨迹数据等)。在运行仿真的时候,相关的操作如下:
1、使用 sumo-gui:双击仿真配置文件;
2、使用命令行运行:
使用 sumo.exe:sumo.exe -c _.sumocfg,或使用 sumo-gui.exe:sumo-gui.exe -c _.sumocfg;
3、使用 TraCI 接口函数运行:
主要涉及到的函数有启动仿真:traci.start();单步运行仿真:traci.simulationStep()和结束仿真:traci.close()。
三、综合实验
3.1 构建仿真路网
-
单向路段的车道数:3
-
路段长度:500m
-
将路网文件命名为“mynet.net.xml
通过创建边(create edge),将相应的道路框架搭建完成后,选择道路的节点,通过修改节点的位置,让路网的结构更加美观。而后选择不同的道路,修改道路的车道数,以及道路的长度,让创建后的结果如下图所示:
3.2 设置信控方案
对于“mynet.net.xml”路网文件,为中间节点设置 8 相位定时信控方案,令各进口道的右转相位始终为绿灯状态,并将信控方案保存为文件“mysignal.add.xml”
相位 1:东西直行绿灯相位,20s
相位 2:东西直行黄灯相位,3s
相位 3:东西左转绿灯相位,20s
相位 4:东西左转黄灯相位,3s
相位 5:南北直行绿灯相位,20s
相位 6:南北直行黄灯相位,3s
相位 7:南北左转绿灯相位,20s
相位 8:南北左转黄灯相位,3s
对于上述要求,我们选择信号灯编辑(Edit Traffice Light),选择对应的交叉口,按照相应的信号灯状态调整相位,并设置相应的相位时间。最终的结果如下所示:
3.3 创建出行需求
基于“mynet.net.xml”路网文件:
创建机动车路径级随机出行需求文件
车辆生成时长:2h
路网中的发车辆:3600 辆/h
将需求文件命名为“myroutes1.rou.xml”
按照要求,在 netedit 编辑器的菜单栏中选择需求(Demand),再在列表中选择车辆(Vehicles),选择车流(根据边)(flow (from-to edges)),按照上述的要求设定完后,如下所示:
3.4 仿真配置
Step4. 仿真配置
创建仿真配置文件“sim.sumocfg”,并设置:
仿真时长:2h
仿真输入文件: mynet.net.xml、mysignal.add.xml、myroutes.rou.xml
仿真输出信息及输出文件:输出 GPS 轨迹数据,并将输出文件指定为“output.xml”
在 netedit 编辑器中,导出 sumocfg 文件,再打开相应的文件,设置好仿真的时间,同时设置好输出的文件,具体情况如下所示:
3.5 仿真运行
运行”test1.sumocfg“的情况如下所示:
导出的结果如下所示:
四、参考资料
[1] SUMO 官方文档:Documentation - SUMO Documentation (dlr.de)
[2] netedit 编辑器使用文档:netedit - SUMO Documentation (dlr.de)
[3] SUMO 下载安装:Downloads - SUMO Documentation (dlr.de)