入门指南

运行 SUMOPy#

在浏览器中双击脚本 sumopy_gui.py 启动。如果失败,请使用命令行应用程序,将目录切换到

SUMOHOME/tools/contributed/sumopy

并运行以下命令来启动 sumopy:

python sumopy_gui.py

如果所有必需的包都已正确安装,您将看到如此处所示的主窗口,但初始状态下网络为空。对象浏览器最初显示的是 SUMOPy 的主要对象:scenario(场景),其中包含所有其他信息。

fig_sumopy_gui_main.png

打开/创建场景#

SUMOPy 发行版中包含一个测试场景,位于

SUMO_HOME/tools/contributed/sumopy/testscenario

从仿真中获取结果的最快方法是导入现有的 xml 文件。如果以下 SUMO 网络、多边形和路线文件

demo.net.xml demo.poly.xml demo.rou.xml

位于目录

SUMO_HOME/tools/contributed/sumopy/testscenario

则可以通过将这些文件一次性导入 SUMOPy 来创建新场景:从主菜单中选择 Scenario>Create from xml...(场景>从 xml 创建...),并在表单中插入场景简称(Shortname)和工作目录(Workdir),如此处所示。

fig_sumopy_gui_newscenario.png

Name(名称)和 Description(描述)选项是自由文本字段。按下 Run(运行)按钮后,网络、建筑物和路线将被导入。如果行程文件 demo.trip.xml 存在,它也将被导入。

同样,也可以在菜单 Scenario>New...(场景>新建...)下创建一个空场景。

浏览场景#

对象浏览器允许浏览场景的所有信息。在一定程度上,可以修改数据。最重要的信息包括:

  • 包含边(edges)、节点(nodes)、交通信号灯系统等的网络。
  • 土地利用(landuse),包含来自 .poly 文件的建筑物信息以及背景地图(稍后将介绍如何导入它们)。
  • 需求(demand),包含可用的车辆类型、行程(trips)和路线(routes)的信息。

网络导航#

可以使用网络编辑器检查网络。初始编辑工具允许点击不同的网络元素,并在对象浏览器中检索相应信息。

使用网络编辑器下方的缩放按钮(+、-)可以获得不同的缩放级别。1:1 按钮将网络缩放至大致适应窗口边界。缩放按钮旁边是一个按钮,按下时会弹出一个菜单。从该菜单中,可以选择或取消选择要绘制的网络元素。

以下鼠标-键盘组合允许导航网络:

操作 按键-鼠标
放大/缩小 按住 Ctrl + 滚轮
平移 按住 Ctrl + Shift + 鼠标左键

模拟场景#

从主菜单中选择:

Simulation>Sumo>export routes and simulate...(仿真>Sumo>导出路线并仿真...)

通过此过程,demand.trips 中的当前行程和路线将自动导出为 SUMO .rou 文件。从 SUMO 弹出对话框中选择所需的仿真设置,如图 此处 所示。

fig_sumopy_gui_sumo.png

仿真参数是自解释的,只需将鼠标悬停在参数名称上即可。默认参数通常适合运行首次仿真。选择其中一个输出选项以获取特定的仿真结果。关于输出,不同输出的 Output Sampling Time(输出采样时间)可能值得关注。如果在仿真中观察到车辆在没有明显原因的情况下在路口被阻挡,则可以通过将 Teleport(瞬移)设置为正数时间(例如 10s)来解决冲突。

按下 run(运行)按钮后,sumo-gui 界面将弹出,准备进行仿真,如图 此处 所示。

fig_sumopy_gui_sumogui.png

调整延迟时间并按下开始(Start)按钮。仿真结束后,确认 OK 并关闭 sumo-gui 窗口。仿真结果现在已导入 SUMOPy,可以进行检查、可视化并以各种格式导出。

查看结果#

结果可以以表格格式和图形方式查看,参见 此处

fig_sumopy_gui_resultviewer.png

在对象浏览器中,可以查看每个行程的结果和每条边的结果。行程导向和边导向的结果表都可以导出为 CSV 格式,参见 Simulation>Results(仿真>结果)菜单。

保存场景时,结果不会保存。相反,必须使用以下命令单独保存结果:

Simulation>Results>Save as ...(仿真>结果>另存为...)

随时可以使用生成结果的场景重新打开结果,使用:

Simulation>Results>Open ...(仿真>结果>打开...)

如果安装了 Matplotlib 包,您可以生成各种格式的图表,选择菜单 Simulation>Results>Plot with matplotlib(仿真>结果>使用 matplotlib 绘图)。弹出对话框有助于配置 matplotlib 图表的图形细节。从 matplotlib 图形窗口,可以将图形结果导出为不同的文件格式(PNG、PDF、JPEG 等),示例 PNG 文件显示在下方

fig_demo_noise.png

启动 SUMOPy#

如上所述,可以从 SUMO XML 文件创建网络,或者加载二进制文件。这两种操作都可以从命令行执行。

启动时加载二进制场景#

可以使用命令行在启动时将先前保存的二进制场景(文件名为 scenario.obj|)加载到 SUMOPy 中:

python sumopy-gui.py workdir/scenario.obj|

启动时导入 SUMO XML 文件#

可以使用以下命令完成对现有 SUMO XML 文件的初始导入,这些文件的根名称为 scenario|,位于目录 workdir 中:

python sumopy-gui.py scenario workdir

导入和编辑网络#

如果需要,应在继续需求建模之前修改网络。

导入网络和建筑物#

可以使用以下命令从 SUMO net.xml 文件导入网络:

network>import>from sumo net.xml ...(网络>导入>从 sumo net.xml...)

网络可以从先前下载的 OSM 文件转换和导入,调用向导:

network>import>from osm.xml ...(网络>导入>从 osm.xml...)

不同类型的建筑物、公园、停车场、休闲区等(在 SUMOPy 中称为“设施”)是土地利用对象的属性,可以从 OSM 文件中提取和导入,菜单项为:

landuse>facilities>import from osm...(土地利用>设施>从 osm 导入...)

有时 XML 文件中的特殊字符会干扰 Python XML 解析器,导致导入过程中出错。如果发生这种情况,只需使用以下命令“清理”相应的 OSM 文件:

landuse>facilities>clean osm file...(土地利用>设施>清理 osm 文件...)

然后再导入它。

使用 SUMO 的 netedit 编辑#

推荐的网络编辑方式是通过 netedit,它从 0.25 版本开始随 SUMO 提供。可以通过选择菜单来调用 SUMO 的 netedit:

Network>Edit with netedit(网络>使用 netedit 编辑)

netedit 将启动,网络已准备好进行编辑。netedit 的使用文档记录在此处:https://sumo.dlr.de/docs/netedit.html。编辑后,必须在 netedit| 内保存网络,按下 Ctrl + s 或使用 File>save(文件>保存)。然后可以关闭 netedit,修改后的网络将被重新导入 SUMOPy。

在背景地图上使用 SUMO 的 netedit 编辑#

有一种可能性是在背景地图上使用 netedit| 编辑网络。目前这些是 Google 卫星地图。在使用背景地图编辑之前,必须为给定的网络区域下载地图。这可以通过向导完成,可以通过选择菜单项 [1] 来调用。

landuse>maps>download...(土地利用>地图>下载...)

该向导有助于下载覆盖网络区域的正方形图块。可以通过以米为单位设置图块宽度(和高度)来定义分辨率。图块大小(像素)最大为 1280(使用 Google 地图服务器)。分辨率是图块大小/图块宽度,单位为像素/米。

强烈建议在下载地图之前按下 Apply|(应用)按钮。这将计算将要下载的图块数量。这很重要,因为 Google 地图会阻止 IP 下载某个区域的过多地图。因此,不要超过约 300 个图块!另请注意,根据计算机的性能,netedit 在处理过大的地图区域时可能会遇到问题。

地图下载后,可以使用以下命令调用 netedit:

Network>Edit with netedit on map(网络>在地图上使用 netedit 编辑)

以便在地图上编辑 SUMO 网络。

使用 SUMOPy Networkeditor 编辑#

SUMOPy 内部的网络编辑器目前提供一些有限的网络编辑功能:

  • 可以操纵边和建筑物的几何形状:激活 Move|(移动)工具进行移动或 Stretch|(拉伸)以更改顶点。
  • 使用菜单 Network>Clean nodes(网络>清理节点)将所有进入节点的边“剪切回”到一定半径。此措施可能有助于验证路口车道之间的连接。
  1. 在 SUMOPy 中,地图由土地利用对象管理