sumo搭建仿真环境(二)

OSM 网络向导概述:

(OSM Web Wizard)是开始使用 SUMO 的最简单的解决方案之一。通过选择开放街道地图(openstreetmap)地图节选,您可以配置随机交通需求,并在 sumo-gui 中运行和可视化该场景。本教程将一步一步地指导您从选择地图节选到定义交通需求,再到在 sumo-gui 中运行和可视化场景。

OSM 网络向导本质上是一组 python 脚本,位于 sumo 安装根目录下的 tools 目录中。在 tools 目录下调用以下命令即可启动 OSM 网络向导。

OSM使用:

需要到sumo的tools目录下调用该命令,官方的调用是这样的,但是作者目前还无法使用这个命令:

python osmWebWizard.py

作者的运行命令为:

ros@ros-virtual-machine:~/sumo/tools$ /usr/bin/python3 /home/ros/sumo/tools/osmWebWizard.py

成功运行的话会弹出如下界面:

Alt​​​

该地图显示的是柏林市中心。点击Select Area会出现如下的矩形框。

网络生成:

从 OSM 导入 SUMO 模拟的基础设施受不同向导选项的影响:

  • 默认情况下,"添加多边形 "复选框(Add
    Polygons)被选中,并生成道路交通模拟,但也会导入所有类型的道路和铁路(自行车道、人行道、铁路等)。
  • 如果启用了 "左侧交通 "复选框(Import Public
    Transport),则网络将按照左侧交通规则构建。对于大多数有此要求的地理区域,该功能将自动启用,但如果不启用,可使用该选项作为补救。
  • 如果启用了 "仅限轿车通行的网络 "复选框(Car-only
    Network),则只包括允许轿车通行的道路。这可以用来缩小网络规模,也有助于降低交叉路口的复杂性。
  • 如果启用了 "导入公共交通"复选框(Import Public Transport),则将导出公共汽车站和火车
    站。公共汽车、有轨电车和火车也将按照 OSM 中定义的公共交通路线生成(但它们将按照合成时间表运行)。
  • 如果 "自行车 "需求复选框(Satellite background)处于激活状态,则将在 OSM
    包含该信息的道路上添加额外的自行车道.

需求生成:

需求由需求生成面板确定。点击汽车象形图即可激活该面板。

Alt
Alt

SUMO 支持多种交通方式。在需求生成面板上,您可以通过点击相应的复选框来激活/禁用各种交通方式。对于每种交通方式,OSM 网络向导都会根据一定的概率分布随机生成需求量,该概率分布受两个参数的影响:

  • 每次生成新车辆时,OSM 网络向导都会随机选择车辆的出发和到达边缘。通过交通系数(Through Traffic
    Factor)定义了与完全位于模拟区域内的边缘相比,位于模拟区域边界的边缘被选中的可能性有多大。通过交通系数的值越大,意味着许多车辆在模拟区域的边界出发和到达,这与通过交通量大的情景相对应。
  • 计数参数定义了每小时和每车道公里产生的车辆数量。
    假设 网络包含 3 条边,总长度为 5 公里 每条边有 2 条车道,允许当前的交通模式
    并将计数值设为 90、 那么每小时将产生 5 * 2 * 90 = 900 辆车。这意味着随机行程参数为 p=4,即每 4 秒在网络中的某处插入一辆新车辆。

路型选择

在 OSM 网络向导的 "道路类型 "选项卡中,可以定义要下载和渲染的道路类型。
点击如下花圈选项则进入道路选择界面:
Alt
例如,只能选择高速公路、一级公路、二级公路和三级公路来模拟主要交通。这会影响 OSM 地图数据的文件大小。
默认情况下,所有道路类型都被选中,这意味着要下载和渲染所有道路。取消选中 "需求生成 "部分中的 "添加多边形 "复选框将禁止下载和渲染建筑物、水道等非道路对象,从而减小文件大小

生成和运行情景

接下来我们点击该选项,,生成运行场景:
Alt
生成的文件会放在该路径下:
Alt

点击控制面板中的 "生成场景 "后,将自动生成完整的场景。场景生成需要几秒钟或几分钟(取决于场景的大小等因素)。场景生成完成后,sumo-gui 将启动,按下 "播放 "按钮即可开始模拟。
作者在这里遇到一个有点棘手的bug,让我们来看看怎么解决的:
命令行中的报错信息如下:

ros@ros-virtual-machine:~/sumo/tools$ /bin/python3 /home/ros/sumo/tools/osmWebWizard.py
Building scenario in '/home/ros/sumo/tools/2023-11-29-18-58-22'.
Downloading map data
200 OK
####################################
/home/ros/sumo/tools/2023-11-29-18-58-22/osm_stops.add.xml
#########################
['${SUMO_HOME}/data/typemap/osmNetconvert.typ.xml', '${SUMO_HOME}/data/typemap/osmNetconvertAerialway.typ.xml']
#########################
 --geometry.remove,--roundabouts.guess,--ramps.guess,--junctions.join,--tls.guess-signals,--tls.discard-simple,--tls.join,--output.original-names,--junctions.corner-detail,5,--output.street-names,--tls.default-type,actuated,--ptstop-output,/home/ros/sumo/tools/2023-11-29-18-58-22/osm_stops.add.xml,--ptline-output,/home/ros/sumo/tools/2023-11-29-18-58-22/osm_ptlines.xml,--railway.topology.repair
Converting map data
Warning: Environment variable SUMO_HOME is not set properly, disabling XML validation. Set 'auto' or 'always' for web lookups.
Error: Could not open types-file '/usr/share/sumo/data/typemap/osmNetconvert.typ.xml'.
Error: No nodes loaded.
Quitting (on error).
Generating public transport schedule
generating trips...
Traceback (most recent call last):
  File "/home/ros/sumo/tools/osmWebWizard.py", line 513, in build
    builder.build()
  File "/home/ros/sumo/tools/osmWebWizard.py", line 298, in build
    ptlines2flows.main(ptlines2flows.get_options(ptOptions))
  File "/home/ros/sumo/tools/ptlines2flows.py", line 383, in main
    trpMap, stopNames = createTrips(options)
  File "/home/ros/sumo/tools/ptlines2flows.py", line 145, in createTrips
    for stop in sumolib.output.parse(options.ptstops, 'busStop'):
  File "/home/ros/sumo/tools/sumolib/xml.py", line 302, in parse
    for _, parsenode in ET.iterparse(_open(xmlfile, None), **kwargs):
  File "/usr/lib/python3.8/xml/etree/ElementTree.py", line 1248, in iterparse
    source = open(source, "rb")
FileNotFoundError: [Errno 2] No such file or directory: '/home/ros/sumo/tools/2023-11-29-18-58-22/osm_stops.add.xml'

[Errno 2] No such file or directory: '/home/ros/sumo/tools/2023-11-29-18-58-22/osm_stops.add.xml' Recovering
[Errno 2] No such file or directory: '/home/ros/sumo/tools/2023-11-29-18-58-22/osm_stops.add.xml' Recovering

这个报错也查看了一下github,获得了一些灵感,给出github的报错讨论如下:
https://github.com/eclipse-sumo/sumo/issues/6878
接下来让我们仔细看看bug,原因是因为无法打开这个文件,根据报错给出的路径,我们前往该位置查看,发现确实没有该文件。

Could not open types-file '/usr/share/sumo/data/typemap/osmNetconvert.typ.xml'.

Alt
根据我们的寻找,发现在另外一个路径下:/usr/local/share/sumo/data/typemap有该文件的信息,于是我们选择将整个data文件夹复制到/usr/share/sumo路径下,即解决了问题。
Alt
运行成功后得到路网文件如下:
Alt
看到流畅的运行结果,心里还是很开心的。

  • 29
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值