本次实验所使用的车辆交通环境仿真软件sumo的版本号是SUMO Version 0.32.0。运行在Ubuntu 18.04TLS上。本次实验的目的是实现sumo仿真软件上地图的更换,并且使用sumo提供的随机生成车辆路径以及交通网的方法实现车辆交通的仿真模拟。
选择需要的地图
在sumo的官方文档中,详细介绍了如何下载需要的地图,详见网站,概括来讲就是在OpenStreetMap这个网站上export你所需要的地图。下载下来的文件是osm格式的。下图为我所需要下载的地图(选取上海市的一小块地图):
转换地图格式
找到所下载的osm格式的地图。使用SUMO提供的方法完成地图的转换。
netconvert --osm-files map.osm -o shanghai.net.xml
在这一步中将会出现warning警告(如果最后出现success字样,可以不用管),提示SUMO_HOME没有设置,可以查找sumo中bin文件夹的位置,然后将路径export到~/.bashrc中去。
Warning: Environment variable SUMO_HOME is not set, using built in type maps.
Warning: Environment variable SUMO_HOME is not set, schema resolution will use slow website lookups.
最后成功生成地图网络文件shanghai.net.xml。
.rou.xaml车辆行为文件生成
利用sumo文件夹下tools文件夹中的脚本randomTrips.py根据道路状况随机化车辆行为(顺带提一下,选项-e是end time的缩写,代表车辆运行停止的时间,单位是秒。选项-I,代表根据道路的长度为车辆的路径选择设置权重,可以理解为路越长车辆出现在该路的该路的概率越大):
#/usr/share/sumo/tools/randomTrips.py -n shanghai.net.xml -e 100 -l
回车之后会在当前文件夹生成.trip.xml文件,此文件随机生成了车辆的路径,接下来将道路网络和车辆的路途信息文件合成车辆的行驶行为。这还需要需要randomTrips.py脚本来执行。
#/usr/share/sumo/tools/randomTrips.py -n shanghai.net.xml -r shanghai.rou.xml -e 100 -l
.poly.xml地形文件的生成
利用polyconvert工具将.net.xml文件和.osm文件生成地形文件,通过如下命令生成.poly.xml文件
polyconvert --net-file shanghai.net.xml --osm-files map.osm -o shanghai.poly.xml
.sumo.cfg 文件的生成
.sumo.cfg文件是配置文件,编写shanghai.sumo.cfg文件内容如下所示
<?xml version="1.0" encoding="iso-8859-1"?>
<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://sumo.sf.net/xsd/sumoConfiguration.xsd">
<input>
<net-file value="shanghai.net.xml"/>
<route-files value="shanghai.rou.xml"/>
<additional-files value="shanghai.poly.xml"/>
</input>
<time>
<begin value="0"/>
<end value="1000"/>
<step-length value="0.1"/>
</time>
<report>
<no-step-log value="true"/>
</report>
<gui_only>
<start value="true"/>
</gui_only>
</configuration>
完成.sumo.cfg文件的编写直接运行以下命令行,出现图形界面。
sumo-gui shanghai.sumo.cfg
图中黄色箭头代表系统自动生成的车辆,可以进行参数设置更改造型。