0基础SUMO简单入门小实例
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简单入门小实例相关推荐
- 基于vue-cli、elementUI的Vue超简单入门小例子
基于vue-cli.elementUI的Vue超简单入门小例子 这个例子还是比较简单的,独立完成后,能大概知道vue是干嘛的,可以写个todoList的小例子. 开始写例子之前,先对环境的部署做点简单 ...
- wxpython中文教程_wxPython中文教程 简单入门加实例
wxPython中文教程简单入门加实例 博客分类: Python 2 / Wxpython wxPythonPython编程浏览器脚本 wx.Window 是一个基类,许多构件从它继承.包括 wx.F ...
- numpy基础篇-简单入门教程4
numpy基础篇-简单入门教程4 np.set_printoptions(precision=3),只显示小数点后三位 np.random.seed(100)rand_arr = np.random. ...
- (超多图)基于Android studio开发的一个简单入门小应用(超级详细!!)(建议收藏)
基于Android studio开发的一个简单入门小应用 一.前言 二.前期准备 三.开发一个小应用 五.运行应用 一.前言 在暑假期间,我学习JAVA基础,为了能早日实现自己用代码写出一个app的& ...
- 花188购买的0基础短视频入门实战培训文档,学了一周的总结。
花188购买的0基础短视频入门实战培训文档,学了一周的总结. 大家好,我是我赢助手,专注于自媒体短视频去水印.去重和文案提取运营! 为了更加专业的给大家讲讲短视频和自媒体,也为了能了解0基础怎么搞定短 ...
- plc维修入门与故障处理实例_电气控制基础+PLC编程入门+工程应用实例
以S7-300/400PLC为主线 电气控制基础+PLC编程入门+工程应用实例 点击图片 购买 编辑推荐1.西门子S7300/400PLC应用广.市场占有率高 2.本书通过大量的实验案例和真实的工程 ...
- plc模拟量与通信控制应用实践_电气控制基础+PLC编程入门+工程应用实例
以S7-300/400PLC为主线 电气控制基础+PLC编程入门+工程应用实例 点击图片 购买 编辑推荐1.西门子S7300/400PLC应用广.市场占有率高 2.本书通过大量的实验案例和真实的工程 ...
- Java Tread多线程(0)一个简单的多线程实例
作者 : 卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/39341887 本文演示,一个简单的多线程实例,并简单分析一下线程. 编程多 ...
- 只需20小时,让0基础的你掌握小程序云开发!这个暑假,约否?
今天的故事要从小开和小发这对好基友的假期说起...... 没错!他来了,他来了,云开发带着小程序开发夏令营最新情报向我们走来了! 为了让更多的童鞋享受高效率."在云上"掌握小程序开 ...
最新文章
- java获取date的时分秒_Java 之 Date 获取 年月日时分秒
- 性能测试回归测试_自动网站性能回归测试
- D - 邂逅明下 HDU - 2897(有点水平的巴什博奕)
- 数据结构:神奇的B树实现解析(有图有代码有真相!!!)
- JAVA发送邮件工具包_java mail 发送邮件工具包
- 对象数组快速掌拨 java 0913
- landset8各波段_landsat8波段
- 网络映射连接不上_Mac连接不上无线网络的解决方法
- 操作系统服务:其它模块
- 计算机视觉算法 面试必备知识点(2022)
- 计算机专业英文版模板简历,计算机专业英文简历模板
- 《操作系统》信号量机制
- js中的引号使用不正确导致js方法传入参数类型错误
- Microsoft Store连不上网解决办法
- springboot消费kafka Listener method could not be invoked with the incoming message
- 基于Java的学生兼职平台设计与实现
- 7 轮面试后,还是挂了 | Google 中国面经分享
- 1000个已成功入职的软件测试工程师简历经验总结:软件测试工程师简历项目经验怎么写?(含真实简历模板)
- VUE项目的e2e自动化测试超详细安装过程(保姆级)
- nowcoder 79F 小H和圣诞树 换根 DP + 根号分治
热门文章
- 制造linux安装系统老毛桃u盘
- 计算机信息专业考研院校排名,2017年电子信息工程专业考研院校排名
- 高新技术企业认定条件
- Frida hook零基础教程
- 分享一个快速下载百度网盘资源的方法
- 对金钱金额的处理--每三位间隔‘,‘,末尾保留两位小数
- 关于win10连网显示“网络使用较旧的安全标准。建议连接到其他网络”的解决方法
- 企业邮箱品牌选择,公司邮箱托管,外包企业邮箱哪个好?
- 软件腐化的七个特征之僵化性和脆弱性(设计模式原则的反面) (《敏捷软件开发》读书总结第一篇)
- Python BeautifulSoup