1 软件安装
1.1 软件说明
SUMO(Simulation of Urban Mobility):这是一个开源的、微观的、多模式的交通模拟软件,用于模拟城市交通流动情况。SUMO可以在Windows、Linux和Mac OS等多个操作系统上运行,提供了丰富的API和插件,可以轻松地扩展其功能和定制性。
1.2 软件下载
直接官网下载就好 下载链接
建议下载msi文件,换个路径一键安装就好
1.3 环境变量
(假如不需要在命令行中使用sumo,这一步可以跳过)
- 打开环境变量设置
- 设置变量名
在系统变量名中新建变量,如图所示
- 添加path路径
在系统变量Path中新建路径,如图所示
- 验证
win + r 之后输入cmd打开系统命令行,输入sumo进行验证,成功会弹出下图
2 运行配置
2.1 地图下载
打开openstreetmap官网,openstreetmap
选好指定的地方,点击右上角导出osm文件
2.2 对导出的地图进行处理
我们获得了osm文件,但是要解释 OSM 数据,需要一个额外的 typemap 文件,代码需要到官网上面下载(链接) 这边直接给出代码:
<polygonTypes>
<polygonType id="waterway" name="water" color=".71,.82,.82" layer="-4"/>
<polygonType id="natural" name="natural" color=".55,.77,.42" layer="-4"/>
<polygonType id="natural.water" name="water" color=".71,.82,.82" layer="-4"/>
<polygonType id="natural.wetland" name="water" color=".71,.82,.82" layer="-4"/>
<polygonType id="natural.wood" name="forest" color=".55,.77,.42" layer="-4"/>
<polygonType id="natural.land" name="land" color=".98,.87,.46" layer="-4"/>
<polygonType id="landuse" name="landuse" color=".76,.76,.51" layer="-3"/>
<polygonType id="landuse.forest" name="forest" color=".55,.77,.42" layer="-3"/>
<polygonType id="landuse.park" name="park" color=".81,.96,.79" layer="-3"/>
<polygonType id="landuse.residential" name="residential" color=".92,.92,.89" layer="-3"/>
<polygonType id="landuse.commercial" name="commercial" color=".82,.82,.80" layer="-3"/>
<polygonType id="landuse.industrial" name="industrial" color=".82,.82,.80" layer="-3"/>
<polygonType id="landuse.military" name="military" color=".60,.60,.36" layer="-3"/>
<polygonType id="landuse.farm" name="farm" color=".95,.95,.80" layer="-3"/>
<polygonType id="landuse.greenfield" name="farm" color=".95,.95,.80" layer="-3"/>
<polygonType id="landuse.village_green" name="farm" color=".95,.95,.80" layer="-3"/>
<polygonType id="tourism" name="tourism" color=".81,.96,.79" layer="-2"/>
<polygonType id="military" name="military" color=".60,.60,.36" layer="-2"/>
<polygonType id="sport" name="sport" color=".31,.90,.49" layer="-2"/>
<polygonType id="leisure" name="leisure" color=".81,.96,.79" layer="-2"/>
<polygonType id="leisure.park" name="tourism" color=".81,.96,.79" layer="-2"/>
<polygonType id="aeroway" name="aeroway" color=".50,.50,.50" layer="-2"/>
<polygonType id="aerialway" name="aerialway" color=".20,.20,.20" layer="-2"/>
<polygonType id="shop" name="shop" color=".93,.78,1.0" layer="-1"/>
<polygonType id="historic" name="historic" color=".50,1.0,.50" layer="-1"/>
<polygonType id="man_made" name="building" color="1.0,.90,.90" layer="-1"/>
<polygonType id="building" name="building" color="1.0,.90,.90" layer="-1"/>
<polygonType id="amenity" name="amenity" color=".93,.78,.78" layer="-1"/>
<polygonType id="amenity.parking" name="parking" color=".72,.72,.70" layer="-1"/>
<polygonType id="power" name="power" color=".10,.10,.30" layer="-1" discard="true"/>
<polygonType id="highway" name="highway" color=".10,.10,.10" layer="-1" discard="true"/>
<polygonType id="railway" name="railway" color=".10,.10,.10" layer="-1" discard="true"/>
<polygonType id="boundary" name="boundary" color="1.0,.33,.33" layer="0" fill="false" discard="true"/>
<polygonType id="admin_level" name="admin_level" color="1.0,.33,.33" layer="0" fill="false" discard="true"/>
</polygonTypes>
①: 创建一个 名字为typemap.xml的文件,把上面代码复制进去。
②: 创建一个文件夹project,把typemap.xml文件和osm文件放到同一个文件夹
③: 打开创建的文件夹project,直接在上面cmd进入命令行
④ :生成map.net.xml路网文件
在命令行中输入:netconvert --osm-files map.osm -o map.net.xml
⑤:生成map.poly.xml地形文件
输入: polyconvert --net-file map.net.xml --osm-files map.osm --type-file typemap.xml -o map.poly.xml
⑥:生成map.rou.xml 车流文件
输入:Python D:\CodeTool\sumo/tools/randomTrips.py -n map.net.xml -e 100 -l
(注意安装路径不同,大家自行修改一下)
-n map.net.xml表示输入,-n表述输入的类型是net类型,其实-n等价于–net,-n是一种简写的方式。后面的-l -e 100是随机工具的配置,就像随机数生成函数需要一个种子一样。但是,这样的一个过程生成的是一个旅程随机过程文件,而我们需要的是一个rou.xml文件。所以,最后,我们把随机的旅程和道路信息结合起来就获得了车流文件(rou.xml)了。
输入:Python D:\CodeTool\sumo/tools/randomTrips.py -n map.net.xml -r map.rou.xml -e 100 -l
⑦: 编写map.sumo.cfg 配置文件
创建一个txt文本,把代码复制一下,再把文件名改为map.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="map.net.xml"/>
<route-files value="map.rou.xml"/>
<additional-files value='map.poly.xml'/>
</input>
<time>
<begin value="0"/>
<end value="1000"/>
</time>
<!-- <report>
<no-duration-log value="true"/>
<no-step-log value="true"/>
</report> -->
</configuration>
3 开始仿真
- 打开sumo-gui.exe进入ui界面
- 点击open simulation
3.选择map.sumo.cfg文件,打开后设置延时,点击运行,结果如下:
参考:https://blog.csdn.net/JWsunshine/article/details/122022013#:~:text=%E9%80%9A%E8%BF%87SUMO%E7%9A%84%E4%BA%A4