本文旨在让大家快速的了解sumo,并给出运行一个简单的sumo的例子的教程,进而了解基本sumo工程的架构,使大家对该软件产生兴趣并持续学习下去,刚开始学习仿真的确枯燥,项目“跑起来”才是大家学习下去的动力,国内参考文献太少了,sumo官网又是纯英文,出于此产生了本篇教程,在写作过程中引用了几位CDDN博主的文章,还有两篇介绍车联网仿真模型的论文,就不一一列出了,知识共享,替大家感谢各位了,不会声明原创,我们都是搬运工!开始正题:

一.简单介绍sumo交通仿真器

SUMO是一个微观的,空间上连续,时间上离散的交通仿真软件,采用c++语言开发,其宏观特征包括带变道的多车道道路,基于道路交叉口的靠右侧行驶规则,支持动态路由,可以管理超过10000条街道的网络。其微观特征包括允许碰撞自由的车辆移动模式,支持单车路由。该软件特点是具有快速的OpenGL图形界面,支持多种网络格式输入,缺点是sumo本身不能提供网络仿真器所需要的轨迹文件。

SUMO可去官网下载,解压后就可以使用,图形界面软是在解压后bin文件夹下的sumo-gui.exe。使用前最好设置环境变量SUMO_HOME。其实不设置似乎也可以使用,但是会有警告。SUMO_HOME的内容就是安装文件的位置,也就是bin文件夹的上一级目录。

SUMO解压之后,作重要的是bin文件夹下的程序和tools文件夹下的程序。bin文件夹下大部分是可执行文件,但是并不像普通的可执行文件一样打开,而是需要用命令行打开,换句话说,整个功能程序并没有被包装起来,这是出于可裁剪和可维护性角度考虑的。tools下的工具则更多的是用phyton写的。

注:可能大家对于车载自主网仿真的一些概念生疏,可以先看两篇介绍的论文作为开胃菜,上知网搜索车载自主网的仿真研究综述和车辆自组织网仿真研究,写的都很好,是不错的车辆自组织网仿真入门的论文。

二.sumo工程结构

SUMO的仿真至少需要两个文件:

1.道路文件,或者叫路网文件(net.xml),就是对行车道路的描述文件;

2.车流文件(rou.xml),或者叫做车量行驶文件,用来描述车流量的行为。当然,更加高级的仿真可以加入别的文件,比如车辆描述文件,地形文件。

这个很容易理解,想要做仿真,最起码要有地图吧,这就是路网文件net,xml;有了地图后是不是还要产生几辆车呢,不管你怎么产生,总之得有车,产生车的规则随意定,这就是rou.xml文件的功能。

道路文件的产生有好多种方法,我们先简单的来了解两个,第一个是从开源的地图上下载osm地图文件,常用的是openstreetmap(osm是一种地图信息文件,可以去openstreetmap官网下载。网址:http://www.openstreetmap.org/),然后利用sumo自带的netconvert工具将osm文件转换为net.xml文件;第二个是自己"编写"net.xml文件,我目前学习到的并不是直接开始编写net.xml文件,因为在sumo规定中,道路是由节点和边组成的,也符合我们一贯的数学思维,所以我们会先编写nod.xml节点文件和edg.xml边文件,然后通过netconvert工具去将这两个文件结合成net.xml文件;除了这两种方法外还有通过OD矩阵啊,等等产生路网文件,不过我还没了解,所以先不做深入介绍,可以到官网查看,官网介绍的很详细,本文主要是做个快速教程。

车流行驶文件即规定车辆数量,车辆行驶规则等,实验目的不同,规则自然千变万化,所以rou.xml的产生自然也有很多的方法,本教程中使用的是sumo自带的一个radomTrips.py,它是一个工具,通过调用这个工具可以在已有的net.xml上产生车辆行驶规则,利用它和上面的net,xml就可以产生rou.xml文件,当然,本实验纯粹为了演示,所以利用的已有的随机路径

三 sumo工程的例子 详细教学

下面就开始进入实验环节,请大家一步一步按照要求来,绝对是可以出结果的

1.软件版本需求

windows系统(sumo在linux下运行效果更好)

不做要求,xp,7,8,10都可以

sumo版本

0.30及以上最好

Notepad++(为了查看和编辑xml文件)

可替换,只要能查看编辑xml即可

python环境

2.7及以上都可以,我用的3.6

2.从openstreetmap上下载相关osm地图文件,并做相应处理

上面的软件都安装以后,就可以开始正式进行sumo第一个项目了

(1)打开openstreetmap官网(https://www.openstreetmap.org),在左侧输入框搜索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”的那一行代码,然后保存为typemap.xml,把这个文件保存到上一步骤建的map文件中去,和osm地图文件放一起。

(3)打开sumo/bin/start-command-line.bat,然后就可以用命令行模式对osm文件做处理,会使用linux命令是前提条件,当然在这里你可以照着敲,先cd到map文件夹下进行操作,如果在别的路径下可能会出错

然后输入以下指令

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

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

这一步完成后就产生了map.net.xml和map.poly.xml文件

3.产生map.rou.xml文件

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

-n map.net.xml表示输入,-n表述输入的类型是net类型,其实-n等价于--net,-n是一种简写的方式。后面的-l -e 600是随机工具的配置,就像随机数生成函数需要一个种子一样。

但是,这样的一个过程生成的是一个旅程随机过程文件,而我们需要的是一个rou.xml文件。

所以,最后,我们把随机的旅程和道路信息结合起来就获得了车流文件(rou.xml)了。我们要用到的工具是bin文件夹下的duarouter.exe。

输入命令 python C:/mytest/sumo/tools/randomTrips.py -n map.net.xml -r map.rou.xml -e 100 -l

执行成功后可以在map文件夹下查看到map.rou.xml

4.编辑配置文件

编辑配置文件如下图,主要是更改input文件,可以在sumo文件夹中搜索test.sumo.cfg然后更改input文件,便可以得到如下图所示文件,然后把文件命名为map.sumo.cfg并保存到map文件夹中,到这一步,所有运行需要的文件就够了

5.运行map仿真例子

输入指令sumo-gui map.sumo.cfg

设置延时,可以设置在100到200之间,观察效果比较好

点后点击开始按钮,就可以观察仿真效果了,放大可以看到随机运动的车辆

好了,教程就到这里,如果想要了解更多的话,请参考sumo官方文档http://www.sumo.dlr.de/userdoc/SUMO-GUI.html

sumo快速运行简单仿真实例详细教程相关推荐

  1. sumo的简单应用_sumo快速运行简单仿真实例详细教程

    本文旨在让大家快速的了解sumo,并给出运行一个简单的sumo的例子的教程,进而了解基本sumo工程的架构,使大家对该软件产生兴趣并持续学习下去,刚开始学习仿真的确枯燥,项目"跑起来&quo ...

  2. Windows11安装安卓/Android子系统运行安卓应用程序详细教程

    Windows11安装安卓子系统运行安卓应用程序详细教程 Windows11安装安卓子系统运行安卓应用 开启虚拟化支持 下载安卓子系统 安装安卓子系统 下载安装配置abd环境 adb连接安卓子系统 安 ...

  3. OMNeT++ SUMO 学习记录(六)SUMO 路网生成及简单仿真实例

    一.SUMO 路网生成方式 1.外部导入 可以从开源地图集 openstreetmap 中下载地图生成 *.osm 文件,然后通过 sumo 自带的 netconvert 程序将其转换为路网文件 (* ...

  4. 怎么提取伴奏?只要三招即可快速搞定,附带详细教程

    有没有跟我一样喜欢唱歌的小伙伴呀?我闲暇时就喜欢在k歌平台上录歌并分享给好友,但有时因为一些个别原因,部分歌曲找不到伴奏,从各大音乐平台上下载下来的音频也是带有原唱,这可就无法展现我的唱歌" ...

  5. omnet++ 快速入门 | 计算机网络仿真 | omnet++ 入门教程

    文章目录 omnet 1 网络仿真软件综述 01 wsn仿真软件 02 为什么使用omnet 03 学习资料 04 目标 2 omnet介绍 1 omnet安装与启动 2 使用omnet仿真的一般步骤 ...

  6. 前后端分离必备工具:Swagger快速搞定(整合SpringBoot详细教程)

    本文根据狂神教学视屏同步所做笔记 目录 一.Swagger简介 1. 前后端分离 2. Swagger引入 二.SpringBoot集成Swagger 1. 新建springboot项目 2. 导入S ...

  7. 教你如何快速安装Pycharm2018——Pycharm2018安装详细教程(附激活软甲+永久破解)

    安装教程 下载pycharm 2018.3.2安装文件,可以直接点击下载网盘下载 激活码下载地址 http://demo.liuy88.cn/jp0616.html 下载完成后,双击exe即可开始安装 ...

  8. docker 添加端口映射_Docker快速搭建PHP开发环境详细教程

    想必作为一个web开发的程序员,近些年对docker技术一定不会陌生,docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux ...

  9. 学计算机U盘内存,用U盘启动盘快速检测电脑内存的详细教程

    内存作为电脑中重要的设备,影响着系统的运行,同时人们在自己选购机器中也可能遇到不良商家以次充好,那么我们有什么办法来检测电脑内存呢?今天小编为大家介绍借助U盘启动中的工具来完成内存检测. 1.备一个制 ...

最新文章

  1. 中科大硬核“毕业证”:“一生一芯”计划下,5位本科生带自研芯片毕业
  2. node.js安装初体验
  3. STM32F103 IAP编程调试记录
  4. java使用Executor(执行器)管理线程
  5. P2386 放苹果 方法一
  6. 洛谷 P3732 [HAOI2017]供给侧改革【trie树】
  7. 一个根据相似度的去重方法
  8. python中read() readline()以及readlines()用法
  9. NWT失败反省:做视频的多了,汝眼里怎么只有腾讯
  10. C语言基础进阶之 MessageBox()用法简介
  11. Linux文件系统:ext2/ext3
  12. 朴素贝叶斯模型、推导、拉普拉斯平滑
  13. 电子设计教程53:555定时器工作原理与常见应用
  14. 2019各种比赛总结
  15. 解决GREENPLUM某些版本gprecoverseg –r失败后镜像双坏,系统无法启动的问题
  16. java实现业务编排_手写实现一套流程编排规则引擎
  17. 编程创业赚钱-教你怎样开发热门配音程序
  18. 爬虫学习:实现对彼岸图4k图片的下载
  19. 提升: 建立一个如下的学生情况表,要求先依次输入学生数据元素,然后依次显示当前表中的学生数据元素。 学号 姓名 性别 年龄 2000001 张三 男 20 2000002
  20. C语言的关键字和标识符

热门文章

  1. c# 调整图片分辨率
  2. 房屋租赁系统 nodejs+vue微信小程序
  3. 安装爬虫框架Scrapy,安装后运行不了~
  4. 什么是CF , correlation filer ? 【无标题】
  5. 计算机领域哪个证值钱,最值钱且相对好考的证书有哪些?
  6. 【十四】【vlc-android】aout音频输出模块源码实现分析【Part 1】
  7. python对seo有什么用_pythonseo-python对于做SEO主要有什么作用
  8. 关于Ecshop小京东,手机管理后台,增加楼层右边分类不显示的问题
  9. 腾讯云CityBase产品白皮书 附下载地址
  10. 设计一可控同步四进制可逆计数器, 其由输入X1,X2控制, 用D触发器和74153及必要的门电路实现