sumo实例搭建

  • 一、SUMO框架简介
  • 二、静态net——OpensStreetMap获取
    • 1.到OpenStrreMap官网选择道路
    • 2.net文件和poly文件获取
    • 3.rou文件获取
    • 4.cfg文件获取
    • 5.开始仿真
  • 总结

一、SUMO框架简介

sumo的文字资料、安装教程在官网和csdn一抓一大把,不再赘述,我根据自己理解做了个流程框图如下。记得把sumo设置环境变量,and后面的实验是基于Win10做的。


注:图中netconverter、Random trips、duarouter以及后面提到的poly处理工具都是sumo自带的的。

一言以蔽之,先做静态的路,再在路的基础上添加各种动态因素(车、人、交通灯),如果是从现实地图导入路网的话还要进一步处理。然后搞个xml把静态的net和动态rou、附加文件合成cfg完事,之后就可以用GUI打开cfg文件可视化。

二、静态net——OpensStreetMap获取

1.到OpenStrreMap官网选择道路

官网在这里https://www.openstreetmap.org/#map=15/40.0414/116.2870


打开界面大概是这样,显示位置可能不一样,我这个大概在中关村软件园附近。然后按照图中红框指示,点击导出,再手动选择你需要的区域,导出就可以得到.osm文件,默认名字是map.osm,我后面用的都是默认名字。

2.net文件和poly文件获取

为了方便后面的处理,可以在sumo文件夹里建立一个project子文件夹。把刚刚得到的.osm文件放入。

用windows命令行进入project文件夹,执行下列命令,得到net文件。

netconvert --osm-files map.osm -o map.net.xml

然后,因为用的osm,所以做一步poly多余处理,具体原理没搞,希望了解的大佬讲解一下。
还是在project文件夹下,新建txt命名为typemap.xml,里面输入下列代码:

<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>

这里看的其他教程没有这一步,导致会报 **Error: Cannot read file ‘typemap.xml’!**这个错,所以,自己建一个就可以了。
然后在命令行终端执行下列命令:

polyconvert --net-files map.net.xml --osm-files map.osm --type-file typemap.xml -o map.poly.xml

到此为止,得到了map.net.xml和map.poly.xml文件。

3.rou文件获取

继续在命令行执行以下命令,注意 py文件路径替换一下。

python C:/mytest/sumo/tools/randomTrips.py -n map.net.xml -e 100 -l

这样就产生了随机过程文件,还差一个车流文件,emm按理说应该用到duarouter程序,但看到好多教程没用,执行(注意替换文件路径):

 C:\sumo\bin\duarouter -n map.net.xml -t map.trips.xml -o map.rou.xml --ignore-errors

至此就得到了rou文件。

4.cfg文件获取

cfg文件就是把上述信息整合,一般有模板,我用的最简单的,如下。用的话直接建一个.xml,复制进去即可。

<?xml version="1.0" encoding="UTF-8"?><!-- generated on 2022-03-23 17:04:08 by Eclipse SUMO GUI Version 1.12.0
--><configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://sumo.dlr.de/xsd/sumoConfiguration.xsd"><input><net-file value="D:\sumo\project\crossroad\map.net.xml"/><route-files value="D:\sumo\project\crossroad\map.rou.xml"/><additional-files value="D:\sumo\project\crossroad\map.poly.xml"/></input></configuration>

核心就是中间的input层,定义了需要整合的文件路径。

5.开始仿真

命令行输入 sumo-gui,打开gui。然后open刚刚建立的.sumo.cfg文件,界面如下。

开始后可能立马结束,因为太快了,通过进度条把速度搞慢即可,放大可以找到车,不过默认好像车都是三角形,从上面任务栏 Edit-Edit Visualization 改成 车的形状。
在车流生成时的参数估计有点小,车比较少,得仔细查找。

总结

主要从操作角度讲了一下步骤,原理没咋讲,网上资料太多了。后面再试试Traci调试下。

万里长城第二块砖,期待后面把sumo交通流导入VTD。

0基础SUMO简单入门小实例相关推荐

  1. 基于vue-cli、elementUI的Vue超简单入门小例子

    基于vue-cli.elementUI的Vue超简单入门小例子 这个例子还是比较简单的,独立完成后,能大概知道vue是干嘛的,可以写个todoList的小例子. 开始写例子之前,先对环境的部署做点简单 ...

  2. wxpython中文教程_wxPython中文教程 简单入门加实例

    wxPython中文教程简单入门加实例 博客分类: Python 2 / Wxpython wxPythonPython编程浏览器脚本 wx.Window 是一个基类,许多构件从它继承.包括 wx.F ...

  3. numpy基础篇-简单入门教程4

    numpy基础篇-简单入门教程4 np.set_printoptions(precision=3),只显示小数点后三位 np.random.seed(100)rand_arr = np.random. ...

  4. (超多图)基于Android studio开发的一个简单入门小应用(超级详细!!)(建议收藏)

    基于Android studio开发的一个简单入门小应用 一.前言 二.前期准备 三.开发一个小应用 五.运行应用 一.前言 在暑假期间,我学习JAVA基础,为了能早日实现自己用代码写出一个app的& ...

  5. 花188购买的0基础短视频入门实战培训文档,学了一周的总结。

    花188购买的0基础短视频入门实战培训文档,学了一周的总结. 大家好,我是我赢助手,专注于自媒体短视频去水印.去重和文案提取运营! 为了更加专业的给大家讲讲短视频和自媒体,也为了能了解0基础怎么搞定短 ...

  6. plc维修入门与故障处理实例_电气控制基础+PLC编程入门+工程应用实例

    以S7-300/400PLC为主线 电气控制基础+PLC编程入门+工程应用实例 点击图片  购买 编辑推荐1.西门子S7300/400PLC应用广.市场占有率高 2.本书通过大量的实验案例和真实的工程 ...

  7. plc模拟量与通信控制应用实践_电气控制基础+PLC编程入门+工程应用实例

    以S7-300/400PLC为主线 电气控制基础+PLC编程入门+工程应用实例 点击图片  购买 编辑推荐1.西门子S7300/400PLC应用广.市场占有率高 2.本书通过大量的实验案例和真实的工程 ...

  8. Java Tread多线程(0)一个简单的多线程实例

    作者 : 卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/39341887 本文演示,一个简单的多线程实例,并简单分析一下线程. 编程多 ...

  9. 只需20小时,让0基础的你掌握小程序云开发!这个暑假,约否?

    今天的故事要从小开和小发这对好基友的假期说起...... 没错!他来了,他来了,云开发带着小程序开发夏令营最新情报向我们走来了! 为了让更多的童鞋享受高效率."在云上"掌握小程序开 ...

最新文章

  1. java获取date的时分秒_Java 之 Date 获取 年月日时分秒
  2. 性能测试回归测试_自动网站性能回归测试
  3. D - 邂逅明下 HDU - 2897(有点水平的巴什博奕)
  4. 数据结构:神奇的B树实现解析(有图有代码有真相!!!)
  5. JAVA发送邮件工具包_java mail 发送邮件工具包
  6. 对象数组快速掌拨 java 0913
  7. landset8各波段_landsat8波段
  8. 网络映射连接不上_Mac连接不上无线网络的解决方法
  9. 操作系统服务:其它模块
  10. 计算机视觉算法 面试必备知识点(2022)
  11. 计算机专业英文版模板简历,计算机专业英文简历模板
  12. 《操作系统》信号量机制
  13. js中的引号使用不正确导致js方法传入参数类型错误
  14. Microsoft Store连不上网解决办法
  15. springboot消费kafka Listener method could not be invoked with the incoming message
  16. 基于Java的学生兼职平台设计与实现
  17. 7 轮面试后,还是挂了 | Google 中国面经分享
  18. 1000个已成功入职的软件测试工程师简历经验总结:软件测试工程师简历项目经验怎么写?(含真实简历模板)
  19. VUE项目的e2e自动化测试超详细安装过程(保姆级)
  20. nowcoder 79F 小H和圣诞树 换根 DP + 根号分治

热门文章

  1. 制造linux安装系统老毛桃u盘
  2. 计算机信息专业考研院校排名,2017年电子信息工程专业考研院校排名
  3. 高新技术企业认定条件
  4. Frida hook零基础教程
  5. 分享一个快速下载百度网盘资源的方法
  6. 对金钱金额的处理--每三位间隔‘,‘,末尾保留两位小数
  7. 关于win10连网显示“网络使用较旧的安全标准。建议连接到其他网络”的解决方法
  8. 企业邮箱品牌选择,公司邮箱托管,外包企业邮箱哪个好?
  9. 软件腐化的七个特征之僵化性和脆弱性(设计模式原则的反面) (《敏捷软件开发》读书总结第一篇)
  10. Python BeautifulSoup