sumo快速运⾏简单仿真实例详细教程
本⽂旨在让⼤家快速的了解sumo,并给出运⾏⼀个简单的sumo的例⼦的教程,进⽽了解基本sumo⼯程的架构,使⼤家对该软件产⽣兴趣并持续学习下去,刚开始学习仿真的确枯燥,项⽬“跑起来”才是⼤家学习下去的动⼒,国内参考⽂献太少了,sumo官⽹⼜是纯英⽂,出于此产⽣了本篇教程,在写作过程中引⽤了⼏位CDDN博主的⽂章,还有两篇介绍车联⽹仿真模型的论⽂,就不⼀⼀列出了,知识共享,替⼤家感谢各位了,不会声明原创,我们都是搬运⼯!开始正题:
⼀.简单介绍sumo交通仿真器
SUMO是⼀个微观的,空间上连续,时间上离散的交通仿真软件,采⽤c++语⾔开发,其宏观特征包括带变道的多车道道路,基于道路交叉⼝的靠右侧⾏驶规则,⽀持动态路由,可以管理超过10000条街道的⽹络。其微观特征包括允许碰撞⾃由的车辆移动模式,⽀持单车路由。该软件特点是具有快速的OpenGL图形界⾯,⽀持多种⽹络格式输⼊,缺点是sumo本⾝不能提供⽹络仿真器所需要的轨迹⽂件。
SUMO可去官⽹下载,解压后就可以使⽤,图形界⾯软是在解压后bin⽂件夹下的。使⽤前最好设置环境变量SUMO_HOME。其实不设置似乎也可以使⽤,但是会有警告。SUMO_HOME的内容就是安装⽂件的位置,也就是bin⽂件夹的上⼀级⽬录。
SUMO解压之后,作重要的是bin⽂件夹下的程序和tools⽂件夹下的程序。bin⽂件夹下⼤部分是可执⾏⽂件,但是并不像普通的可执⾏⽂件⼀样打开,⽽是需要⽤命令⾏打开,换句话说,整个功能程序并没有被包装起来,这是出于可裁剪和可维护性⾓度考虑的。tools下的⼯具则更多的是⽤phyton写的。
注:可能⼤家对于车载⾃主⽹仿真的⼀些概念⽣疏,可以先看两篇介绍的论⽂作为开胃菜,上知⽹搜索车载⾃主⽹的仿真研究综述和车辆⾃组织⽹仿真研究,写的都很好,是不错的车辆⾃组织⽹仿真⼊门的论⽂。
⼆.sumo⼯程结构
SUMO的仿真⾄少需要两个⽂件:
1.道路⽂件,或者叫路⽹⽂件(l),就是对⾏车道路的描述⽂件;
2.车流⽂件(l),或者叫做车量⾏驶⽂件,⽤来描述车流量的⾏为。当然,更加⾼级的仿真可以加⼊别的⽂件,⽐如车辆描述⽂件,地形⽂件。
这个很容易理解,想要做仿真,最起码要有地图吧,这就是路⽹⽂件net,xml;有了地图后是不是还要产⽣⼏辆车呢,不管你怎么产⽣,总之得有车,产⽣车的规则随意定,这就是l⽂件的功能。
道路⽂件的产⽣有好多种⽅法,我们先简单的来了解两个,第⼀个是从开源的地图上下载osm地图⽂件,常⽤的是openstreetmap(osm是⼀种地图信息⽂件,可以去openstreetmap官⽹下载。⽹址:/),然后利⽤sumo⾃带的netconvert⼯具将osm ⽂件转换为l⽂件;第⼆个是⾃⼰"编写"l⽂件,我⽬前学习到的并不是直接开始编写l⽂件,因为在sumo规定中,道路是由节点和边组成的,也符合我们⼀贯的数学思维,所以我们会先编写l节点⽂件和l边⽂件,然后通过netconvert⼯具去将这两个⽂件结合成l⽂件;除了这两种⽅法外还有通过OD矩阵啊,等等产⽣路⽹⽂件,不过我还没了解,所以先不做深⼊介绍,可以到官⽹查看,官⽹介绍的很详细,本⽂主要是做个快速教程。
车流⾏驶⽂件即规定车辆数量,车辆⾏驶规则等,实验⽬的不同,规则⾃然千变万化,所以l的产⽣⾃然也有很多的⽅法,本教程中使⽤的是sumo⾃带的⼀个radomTrips.py,它是⼀个⼯具,通过调⽤这个⼯具可以在已有的l上产⽣车辆⾏驶规则,利⽤它和上⾯的net,xml就可以产⽣l⽂件,当然,本实验纯粹为了演⽰,所以利⽤的已有的随机路径
狮子座 歌词三 sumo⼯程的例⼦详细教学
下⾯就开始进⼊实验环节,请⼤家⼀步⼀步按照要求来,绝对是可以出结果的
1.软件版本需求
windows系统(sumo在linux下运⾏效果更好)不做要求,xp,7,8,10都可以
sumo版本0.30及以上最好
Notepad++(为了查看和编辑xml⽂件)可替换,只要能查看编辑xml即可
汽车仪表盘python环境 2.7及以上都可以,我⽤的3.6
2.从openstreetmap上下载相关osm地图⽂件,并做相应处理
上⾯的软件都安装以后,就可以开始正式进⾏sumo第⼀个项⽬了
2020法定节假日时间表(1)打开openstreetmap官⽹(),在左侧输⼊框搜索fiarfax VA,然后开始搜索,在出现的选项选择city开头的选项,然后右侧界⾯会显⽰你选择的城市的地图
确认之后在右侧可以看到选择的地图的详细情况,不规则红圈标⽰了范围,外⾯矩形红圈是我标的,左侧是关于地图的简单介绍
如果该地图不能导出,可以选择别的地⽅,⽐如北京,上海等城市,不影响实验结果!
最好将地图保存在和sumo同⼀层次的⽂件夹中,例如我在C盘下新建了mytest⽂件夹,把sumo解压
到mytest⽂件夹下,并且在mytest下新建了map⽂件,来保存地图⽂件及随后产⽣的各个xml等⽂件,⽅便查看和管理,推荐这样做!
(2)对导出的地图做处理
七年级期末考试试卷官⽹原⽂,即下载的osm除了路⽹信息还包含别的东西,需要做简单处理
OSM-data not only contains the road network but also a wide range of additional polygons such as buildings and rivers. These polygons can be imported using POLYCONVERT and then added to a sumo-gui-configuration.
导出的osm地图不仅包含路⽹信息也包含⼤量的别的模块例如建筑和河流,这些模块可以⽤polyconvert⼯具添加到sumo-gui配置⽂件中。
我们⼿动打开sumo\doc\userdoc\Networks\Import\OpenStreetMap.html⽂件,然后在打开的⽹页中间部分 Importing additional Polygons (Buildings, Water, etc.)的下⾯有⼀⼤段xml的代码,复制这些代码,然后在notepad++中级新建⽂件并把复制的代码粘贴到⾥⾯,在本实验中因为不需要,所以删除了下⾯的id=“power”的那⼀⾏代码,然后保存为l,把这个⽂件保存到上⼀步骤建的map⽂件中去,和osm地图⽂件放⼀起。
(3)打开sumo/bin/start-command-line.bat,然后就可以⽤命令⾏模式对osm⽂件做处理,会使⽤linux命令是前提条件,当然在这⾥你可以照着敲,先cd到map⽂件夹下进⾏操作,如果在别的路径下可能会出错
然后输⼊以下指令
netconvert --osm-files map.osm -l
polyconvert --l --osm-files map.osm --l -o l
这⼀步完成后就产⽣了l和l⽂件
3.产⽣l⽂件
输⼊命令 python C:/mytest/sumo/tools/randomTrips.py -l -e 100 -l
-l表⽰输⼊,-n表述输⼊的类型是net类型,其实-n等价于--net,-n是⼀种简写的⽅式。后⾯的-l -e 600是随机⼯具的配置,就像随机数⽣成函数需要⼀个种⼦⼀样。
但是,这样的⼀个过程⽣成的是⼀个旅程随机过程⽂件,⽽我们需要的是⼀个l⽂件。
所以,最后,我们把随机的旅程和道路信息结合起来就获得了车流⽂件(l)了。我们要⽤到的⼯具是bin⽂件夹下的。输⼊命令 python C:/mytest/sumo/tools/randomTrips.py -l -u.xml -e 100 -l
关于中秋节的作文200字执⾏成功后可以在map⽂件夹下查看到l
4.编辑配置⽂件
领带的系法编辑配置⽂件如下图,主要是更改input⽂件,可以在sumo⽂件夹中搜索test.sumo.cfg然后更改input⽂件,便可以得到如下图所⽰⽂件,然后把⽂件命名为map.sumo.cfg并保存到map⽂件夹中,到这⼀步,所有运⾏需要的⽂件就够了
5.运⾏map仿真例⼦
输⼊指令sumo-gui map.sumo.cfg
设置延时,可以设置在100到200之间,观察效果⽐较好
点后点击开始按钮,就可以观察仿真效果了,放⼤可以看到随机运动的车辆
好了,教程就到这⾥,如果想要了解更多的话,请参考sumo官⽅⽂档
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论