# SUMO 仿真建模

SUMO 仿真建模

作者说:作者研究SUMO软件一年有余了,从sumoV0.32版本开始,到现阶段的version 1.3.0,其中遇到很多坑,走过很多弯路,回想这一年的摸索,也有了一点心得体会和日常积累。同时在这过程中,发现靠谱的sumo技术帖子凤毛麟角,只能通过用户手册去一点一点的理解。为方便广大交通从业者使用sumo,我会专注写关于SUMO软件的一些技术帖子,和大家共同交流探讨。

公众号打算系统介绍一下SUMO软件的使用。公众号系列文章将以一个典型交叉口为例,从静态路网建模,交通需求加载,信号方案生成,到嵌入经典交通控制算法,A信控I算法,一步一步深入全面介绍sumo的知识。在此之后,公众号会横向拓展介绍,静态路网建模…AI信控算法的多种实现方式。最后,介绍大家可能接触不多,但是很重要的知识,如:仿真加速,并行仿真,仿真服务web可视化,仿真场景重现,中观与微观一体化仿真,大规模路网实时在线仿真等技术要点。最后呈现一个大规模在线实时仿真的demo。
作者提示:sumo运行环境: win10+sumoV1.2.0+python3.7

  1. SUMO 软件安装
    官网提供Windows和Linux版本
    软件包网址:http://sumo.sourceforge.net/userdoc/Downloads.html
    windos 下载: sumo-win64-1.3.1.msi 下载后直接安装就可以了。
    Linux 根据自己的系统选择,如ubantu,centos.
  2. 静态路网建模
    首先声明,sumo官方提供类似于vissim的一个可视化的路网建模工具NETEdit。大家可以用它搭建简单的仿真路网。本文介绍脚本形式搭建路网文件,前期阶段会稍微用到一点netedit工具,方便初学者使用,后期将完全抛弃netedit。
  3. 本篇公众号将介绍一个简单的十字交叉口仿真文件,并加载随机流量的案例。

首先介绍sumo中一个仿真模型的文件结构:更多信息:http://sumo.sourceforge.net/userdoc/Networks/PlainXML.html#joining_nodes

​ sumo中一个路网文件,分为路网net文件和交通需求(路径)route文件。

net文件由node文件和edge文件组成。其中node表示节点,如一个交叉口。

关系如下:

# SUMO 仿真建模_第1张图片

​ 现在我们新建一个十字交叉口0,平面坐标为(0m,0m),其东西南北四个进口方向的边缘节点分别为东边缘节点,结合交叉口的示意图,介绍sumo中节点(node.xml)和路段文件(edge.xml)的格式:

# SUMO 仿真建模_第2张图片

1、编写node.xml文件,文件名test.nod.xml

<nodes> 

  <node id="0" x="0.0" y="0.0" type="traffic_light"/> 

  <node id="1" x="500.0" y="0.0" type="priority"/> 
  <node id="2" x="-500.0" y="0.0" type="priority"/> 
  <node id="3" x="0.0" y="-500.0" type="priority"/> 
  <node id="4" x="0.0" y="+500.0" type="priority"/> 

nodes> 

指定节点类型为信控交叉口,节点属性设置为type=“traffic_light”,sumo自身会根据交叉口车道等信息,计算出一个默认的信控配时方案。后续文章会详细介绍sumo中的信控方案格式和常用操作技巧。更多关于节点的信息:https://sumo.dlr.de/docs/Networks/PlainXML.html#node_descriptions。

2、编写edge.xml文件,文件名及后缀test.edge.xml

<edges>

  <edge id="0_1" from="1" to="0" priority="2" numLanes="3" speed="11.11"/>
  <edge id="0_2" from="2" to="0" priority="2" numLanes="3" speed="11.11"/>
   <edge id="0_3" from="3" to="0" priority="2" numLanes="3" speed="11.11"/>
    <edge id="0_4" from="4" to="0" priority="2" numLanes="3" speed="11.11"/>   
    
  <edge id="1_2" from="0" to="1" priority="3" numLanes="3" speed="13.89"/>
  <edge id="2_1" from="0" to="2" priority="3" numLanes="3" speed="13.89"/>
  <edge id="3_4" from="0" to="3" priority="3" numLanes="3" speed="13.89"/>
  <edge id="4_3" from="0" to="4" priority="3" numLanes="3" speed="13.89"/>

edges>

​edge即为交通上的道路,路段。指定路段的起始节点和终止节点,并设置路段的优先级,车道数,车道限速(m/s)等属性.更多信息:https://sumo.dlr.de/docs/Networks/PlainXML.html#edge_descriptions 。

3、利用netconvert工具生成net.xml文件

netconvert --node-files=test.nod.xml --edge-files=test.edg.xml --output-file=test.net.xml

可在当前仿真文件所在目录下,打开cmd窗口,运行以上命令。netconvert工具的更多信息:https://sumo.dlr.de/docs/Networks/PlainXML.html#edge_descriptions 这个命令非常好用,可以好好研究一下。运行以上命令后,得到test.net.xml文件,我们通过netedit打开该文件,看到见下图所示,可以根据需要稍微修改一下连接器(交叉口进口道的车道类型,修改车道类型参考信息:https://sumo.dlr.de/docs/NETEDIT.html)

net文件截图(netedit打开)如需要手动修改一下车道类型,左直右等连接器

# SUMO 仿真建模_第3张图片

这里简单介绍一下如何利用netedit工具修改连接器:见下图三步走:

# SUMO 仿真建模_第4张图片

step1: 选中1所示图标

step2:选中(鼠标左键点击)索要修改的车道,比如图中2所示。此时路网颜色如图上所示:绿色表示当前联通的连接器,深绿表示可以联通,但是当前未联通,红色表示冲突。

step3:加入我们想去掉2车道的掉头连接器,则鼠标左键选中掉头所联通的车道(图中对应的是3)即可。

4、生成route.xml文件, 文件名:test.rou.xml

和生成net.xml一样,途径有很多,这里先介绍一个工具:randomtrips.py工具

工具地址:安装目录/tools下。更多信息https://sumo.dlr.de/docs/Tools/Trip.html#randomtripspy

例子:

python randomTrips.py -n test.net.xml -r route.rou.xml

具体的参数可以查看使用文档,或者 命令行:python randomTrips.py -h

5、直接运行sumo仿真文件或者生成配置文件
命令行运行仿真:

sumo-gui -n test.net.xml -r test.rou.xml     (gui界面手动控制仿真开启关闭)

sumo-gui -n test.net.xml -r test.rou.xml -S True -Q True (gui界面自动控制仿真开启关闭)

tips: 命令行模式可以控制仿真自动开始和结束,命令选项为 -S True -Q True。更多信息:https://sumo.dlr.de/docs/SUMO.html

  • 命令行保存生成配置文件
sumo  -n test.net.xml -r test.rou.xml -C test.sumocfg
  • 手写配置文件test.sumocfg,运行仿真
    配置文件也是一个xml,格式如下:


<configuration>
    <input>
        <net-file value="test.net.xml"/>
        <route-files value="test.rou.xml"/>
    input>
    
    <processing>
        <begin value="0"/> 
        <end  value="3600"/>
    processing>
    
configuration>

其他

    本人将致力于SUMO软件先关技术贴的写作交流,大家觉得有用,可以关注我的个人公众号,随时交流。公众号名:**林大的日常**

你可能感兴趣的:(sumo,交通仿真,信控仿真)