SUMO仿真(二)--sumo工程例子

1.sumo的工程结构

        sumo解压之后可以得到四个文件夹(bin、data、docs和tools),bin文件夹下大部分为可执行文件,不同之处在于部分可执行文件并未封装,因此需要用命令行打开;docs文件夹主要包含examples和java、python等的帮助文档;tools中的工具多是用python编写。

        通过浏览examples中的例子发现,sumo的仿真至少需要三个文件:

        (1)道路文件,也称路网文件(.net.xml),该文件主要是对行车道路的描述文件;道路文件的形成有很多方法,在"SUMO仿真(一)"中详细介绍了如何从openstreetmap中导出.osm文件,利用sumo/bin中的netconvert工具可以将.osm地图转化为.net.xml文件;还有一种方法就是自己编写.net.xml文件,现在我也不会,所以不做介绍;

        (2)车流文件,也称车量行驶文件(.rou.xml),该文件主要对车辆数量,车辆行驶规则等的描述文件;高级仿真中还会加入其他文件,例如:车辆描述文件、地形描述文件等;车流文件的形成有很多方法,这里使用的是sumo自带的一个radomTrips.py,它是一个工具,通过调用这个工具可以在已有的net.xml上产生车辆行驶规则,利用它和上面的net,xml就可以产生rou.xml文件;

        (3)编辑配置文件(.sumo.cfg或.sumocfg),该文件主要对仿真过程配置的描述文件。

        (4)附加文件(additonal file),工程中一个或者多个additional文件主要用于加载其他实体,也可以没有。

                基础设施相关的东西:交通灯程序、感应回路和公共汽车站;

                附加可视化:POIs和polygons,(例如房屋或者河流);

                动态模拟控制结构:变速标志和reroutes;

                相关实体需求:车辆类型和路线;

2.工程例子

       (1)软件需求

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

xp,7,8,10都可以

sumo版本

0.30及以上最好

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

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

python环境

2.7及以上都可以

       (2)处理导出的.osm地图

        地图的保存:最好将地图保存在和sumo同一层次的文件夹中,例如我在F盘下解压了sumo,在同一个目录下新建了map文件夹,来保存地图文件及随后产生的各个xml等文件,方便查看和管理。

        地图的处理:下载的osm除了路网信息还包含别的东西,需要做简单处理;导出的osm地图不仅包含路网信息也包含大量的别的模块例如建筑和河流,这些模块可以用polyconvert工具添加到sumo-gui配置文件中。

        我们手动打开sumo-1.0.1\doc\userdoc\Networks\Import\OpenStreetMap.html文件,然后在打开的网页中间部分 Importing additional Polygons (Buildings, Water, etc.)的下面有一大段xml的代码,复制这些代码,然后在notepad++中级新建文件并把复制的代码粘贴到里面,在本实验中因为不需要,所以删除了下面的id=“power”的那一行代码,然后保存为typemap.xml,把这个文件保存到上一步骤建的map文件中去,和osm地图文件放一起。

SUMO仿真(二)--sumo工程例子_第1张图片

        (3)创建.net.xml文件、.poly.xml文件和.rou.xml文件

         打开sumo-1.0.1/bin/start-command-line.bat批处理,然后就可以用命令行模式对osm文件做处理,首先cd到map文件夹下进行操作。

代码:cd /d F:\software\sumo-win64-1.0.1\map

         然后利用bin中的netconvert可执行文件将.osm文件转化为.net.xml文件

代码:netconvert --osm-files interpreter.osm -o map.net.xml

        再然后利用bin中的polyconvert可执行文件将.osm文件转化为.poly.xml文件

代码:polyconvert --net-file map.net.xml --osm-files interpreter.osm --type-file typemap.xml -o map.poly.xml

        最后利用tools中的randomTrips.py产生map.rou.xml文件

代码:python F:\software\sumo-win64-1.0.1\sumo-1.0.1\tools\randomTrips.py -n map.net.xml -e 100 -l

        -n map.net.xml表示输入,-n表述输入的类型是net类型,其实-n等价于--net,-n是一种简写的方式。后面的-l -e 100是随机工具的配置(100表示100辆车),就像随机数生成函数需要一个种子一样,这样的一个过程生成的是一个旅程随机过程文件.trips.xml,我们还需要把随机的旅程和道路信息结合起来就获得了车流文件(rou.xml)了。我们要用到的工具是bin文件夹下的duarouter.exe。

代码:python F:\software\sumo-win64-1.0.1\sumo-1.0.1\tools\randomTrips.py -n map.net.xml -r map.rou.xml -e 100 -l

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

      (4)编辑.sumo.cfg配置文件

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

SUMO仿真(二)--sumo工程例子_第2张图片

      (5)运行sumo仿真

       打开sumo-gui,选择map文件夹中的map.sumo.cfg文件,下载的地图将自动加载到主视图窗口中,增加延时方便观察车辆的运动(建议100~200ms),运行仿真即可。第一次运行,建议不要下载特别大的地图,不方便观测车流信息。

你可能感兴趣的:(SUMO仿真(二)--sumo工程例子)