文章目录(Table of Contents)
简介
我们在 使用 SUMO 进行仿真(3)-车流的生成(Route 文件)中详细介绍了如何生成车流。但是在那一篇中,我们着重介绍了如何生成 route
文件,如何去定义「有多少车」,「从哪里开到哪里」,「转向率」是多少。
但是那一篇生成的车辆的类型都是一样的。这一篇我们会详细介绍一下如何去定义车辆的类型,使得可以有不同类型的车辆。同时我们会介绍一部分关于安全的指标(注意尽量将 SUMO
更新到最新的)。
下面是主要的两个参考文献:
- SUMO-Definition of Vehicles, Vehicle Types, and Routes,详细介绍车辆属性;
- SUMO-Safety,介绍
SUMO
中安全的指标;
如果我们想要在仿真过程中对车辆的属性进行修改,或是实时获取车辆的属性,则可以使用 traci
来完成。这部分的内容会在之后讲到。
车辆属性
我们使用 vType
来定义车辆的类型。下面是一个定义车辆类型的例子,定义了 type1
这个类型,接着定义车辆的属性。
- <routes>
- <vType id="type1" accel="2.6" decel="4.5" sigma="0.5" length="5" maxSpeed="70"/>
- <vehicle id="veh1" type="type1" depart="0">
- <route edges="edge1 edge2 edge3"/>
- </vehicle>
- </routes>
设置启动损失
例如我们可以通过调整 startupDelay
来设置车辆的启动损失。例如从「红灯变为绿灯」,车辆不会马上启动,而是会有一个反应时间。下面的 rou
文件定义了两种类型的车辆,一个是有「启动损失」的,另外一个是没有「启动损失」。
- <routes>
- <vType id="type1" accel="0.8" decel="4.5" sigma="0.5" length="5" maxSpeed="70"/>
- <vType id="type2" accel="0.8" decel="4.5" sigma="0.5" length="5" maxSpeed="70" startupDelay="1"/>
- <route id="route0" color="1,1,0" edges="2fi 2si 1o"/>
- <route id="route1" color="1,1,0" edges="1fi 1si 2o"/>
- <!-- 没有启动延迟, type="type1" route="route0" -->
- <!-- 有启动延迟, type="type2" route="route1" -->
- <vehicle id="0_0" type="type1" route="route0" depart="0" color="0,1,0"/>
- <vehicle id="1_0" type="type2" route="route1" depart="0" color="1,0,0"/>
- <vehicle id="0_1" type="type1" route="route0" depart="2" color="0,1,0"/>
- <vehicle id="1_1" type="type2" route="route1" depart="2" color="1,0,0"/>
- <vehicle id="0_2" type="type1" route="route0" depart="4" color="0,1,0"/>
- <vehicle id="1_2" type="type2" route="route1" depart="4" color="1,0,0"/>
- <vehicle id="0_3" type="type1" route="route0" depart="6" color="0,1,0"/>
- <vehicle id="1_3" type="type2" route="route1" depart="6" color="1,0,0"/>
- <vehicle id="0_4" type="type1" route="route0" depart="8" color="0,1,0"/>
- <vehicle id="1_4" type="type2" route="route1" depart="8" color="1,0,0"/>
- <vehicle id="0_5" type="type1" route="route0" depart="10" color="0,1,0"/>
- <vehicle id="1_5" type="type2" route="route1" depart="10" color="1,0,0"/>
- </routes>
最终的仿真结果如下所示,其中「从左到右」是有「启动损失」的(也就是红色的车辆)。这里为了突出效果,把启动损失调整的比较大(3s)。这里是每辆车都会有启动损失。例如离路口最近的车,在绿灯亮之后,会有等待。后面一辆车,在看到前面的车移动之后,还是会有启动时间。
可以看到下面绿灯亮了之后,「绿色」的车会马上启动,而「红色」的车会有一定的延迟。

关于启动损失可以查看 Github Issue,Startup loss time/reaction time #7832
SSM Device 介绍
设置 SSM Device
我们可以为车辆可以配备 SSM Device
,用于记录车辆的一些安全性数据。下面是方式可以将 SSM Device
部署在一辆车上面:
- <routes>
- ...
- <vehicle id="v0" route="route0" depart="0">
- <param key="has.ssm.device" value="true"/>
- </vehicle>
- ....
- </routes>
我们也可以将 SSM Device
部署在一类车上面,从而可以使得一类车都具有 SSM Device
。
- <routes>
- <vType id="type1" accel="0.8" decel="4.5" sigma="0.5" length="5" maxSpeed="70">
- <param key="has.ssm.device" value="true"/>
- <param key="device.ssm.measures" value="TTC DRAC PET BR SGAP TGAP"/>
- <param key="device.ssm.thresholds" value="3.0 3.0 2.0 0.0 0.2 0.5"/>
- <param key="device.ssm.range" value="50.0" />
- <param key="device.ssm.extratime" value="5.0" />
- <param key="device.ssm.file" value="ssm_v0.xml" /> <!-- 输出文件 -->>
- <param key="device.ssm.trajectories" value="false" />
- <param key="device.ssm.geo" value="false" />
- <param key="device.ssm.write-positions" value="false" />
- </vType>
- <route id="route0" color="1,1,0" edges="2fi 2si 1o"/>
- <vehicle id="0_0" type="type1" route="route0" depart="0" color="0,1,0"/>
- <vehicle id="0_1" type="type1" route="route0" depart="2" color="0,1,0"/>
- <vehicle id="0_2" type="type1" route="route0" depart="4" color="0,1,0"/>
- <vehicle id="0_3" type="type1" route="route0" depart="6" color="0,1,0"/>
- <vehicle id="0_4" type="type1" route="route0" depart="8" color="0,1,0"/>
- <vehicle id="0_5" type="type1" route="route0" depart="10" color="0,1,0"/>
- </routes>
输出文件
- 微信公众号
- 关注微信公众号
-
- QQ群
- 我们的QQ群号
-
评论