LiSuM

简介#

LisaSumoIcon.png

LiSuM 是一个中间件,用于连接 LISA+ 和 SUMO,帮助在交叉口执行比 SUMO 原本允许的更复杂的交通控制。SUMO 通过 LiSuM 与 LISA+ 虚拟控制器通信。默认情况下,LiSuM 需要 LISA+ 7.2 版本,但也可以通过 --lisa-version 选项进行配置以支持旧版本。

LISA+ 是由 Schlothauer & Wauer 开发并商业化的专有软件工具,用于规划和评估复杂的交叉口。使用它创建的控制逻辑可以直接上传到真实控制器,或者使用 SUMO(通过 LiSuM)和 VISSIM(一种专有的微观 3D 交通模拟器)进行测试。

LiSuM 基于 Java 技术构建,因此可以在任何支持 Java 的操作系统上运行。LiSuM 的许可(与 SUMO 一样)遵循 EPLv2

flowws.png SUMO 通过 LiSuM 与 LISA+ 虚拟控制器通信

LiSuM 提供了两个版本:一个图形化版本称为 #LiSuM-GUI,以及一个适用于批处理的命令行版本称为 #LiSuM-Core。图形界面至少需要 Java 11 才能运行,LiSuM-Core(命令行版本)也可以使用 Java 8 运行。

LiSuM-GUI#

安装#

LISASumo.MainWindow.PNGLiSuM 主窗口

运行 LiSuM 需要在计算机上安装以下软件:

  • Java SE Runtime Environment(lisum-gui 需要 17 及以上版本,lisum-core 需要 7 及以上版本)
  • SUMO(1.0.1 或更高版本)
  • openjfx(仅限 Linux 下的 lisum-gui)

如果您下载了 Windows 安装程序或 Windows zip 包,LiSuM 应该已经包含在内,您只需运行:

java -jar "%SUMO_HOME%\bin\lisum-gui.jar"

您也可以尝试在 Linux 上下载并运行,但由于 Java 版本不匹配,最好按照以下描述自行编译。

编译 LiSuM#

这需要 Apache Maven 以及 SUMO 的源代码分发版或 git 仓库克隆。在命令行或终端窗口中,按顺序在 tools/contributed/traastools/contributed/lisum 文件夹中执行 mvn install。 要启动 lisum-core 或 lisum-gui,请找到 jar 文件,打开终端并使用 java -jar 命令执行它,例如:

java -jar $SUMO_HOME/tools/contributed/lisum/lisum-core/target/lisum-core-1.0.2-jar-with-dependencies.jar
java -jar $SUMO_HOME/tools/contributed/lisum/lisum-gui/target/lisum-gui-1.1.jar

入门指南#

当首次启动 LiSuM 时,系统会提示用户选择一个目录作为工作空间目录。工作空间是 LiSuM 查找现有模拟项目、存储新项目以及保存系统首选项的目录。如果需要,可以使用系统首选项窗口更改工作空间路径。

打开 LiSuM,在系统首选项对话框窗口中设置 SUMO 路径,并从工作空间中打开一个现有的模拟项目。在“工具”菜单中,选择“Start Lisa+ Virtual Controller”以启动 LISA+ 虚拟控制器的实例。按下 Ctrl + p 或点击工具栏上的“Play”按钮将打开 sumo-gui 的实例,该实例将接管系统控制。此时,LiSuM 的几乎所有菜单、工具栏和对话框窗口都会被锁定,从此时起,可以从 SUMO 开始、暂停、恢复和停止模拟。只有“控制单元管理”对话框窗口保持启用状态,因此可以在模拟执行期间更改控制单元设置。

为了更好地理解 LiSuM 的工作原理,您可以试用工作空间中的两个示例项目(sampleSimulation 和 simpleSampleSimulation)。

创建新的模拟项目#

模拟项目是一个包含以下内容的目录:

  • LiSuM 配置文件 (lisum.xml)
  • SUMO 文件 (*.add.xml, *.net.xml, *.rou.xml, *.sumocfg 等)
  • 包含 LISA+ 控制单元文件的目录(从 LISA+ 导出到 Vissim)

配置文件#

LiSuM 配置文件是一个 XML 文件(始终命名为 lisum.xml),其中包含控制 LISA+ 在模拟执行期间与 SUMO 通信方式的必要信息,它告诉 LiSuM 如何将控制单元、信号组和检测器相互匹配。配置文件基本上由强制性元素 inputcontrolUnits 组成,controlUnits 由两个非强制性标签 controlUnitsdetectors 组成。由于 LISA+ 和 SUMO 对其元素使用不同的命名约定,字段 controlUnitsdetectors 告诉 LiSuM 它们在每个系统中是如何命名的。

Classes.PNG

示例:

<simulation>
   <input>
      <lisa>lisaDirectory</lisa>
   </input>

   <controlUnits>
      <controlUnit  lisa="z1_fg1" sumo="gneJ1" >
         <signalGroups>
            <signalGroup  lisa="K1" sumo="0" />
            <signalGroup  lisa="K2" sumo="1" />
            <signalGroup  lisa="K3" sumo="2" />
            <signalGroup  lisa="K4" sumo="3" />
         </signalGroups>

         <detectors>
            <detector  lisa="D1" sumo="myLoop1" />
         </detectors>
      </controlUnit>

      <controlUnit  lisa="z1_fg2" sumo="gneJ2" >
         <signalGroups>
            <signalGroup lisa="K1" sumo="0,1,2" />
            <signalGroup lisa="K2" sumo="3,4" />
            <signalGroup lisa="K3" sumo="5,6,7"/>
            <signalGroup lisa="K4" sumo="8" main="K3" />
         </signalGroups>
      </controlUnit>
   </controlUnits>
</simulation>

LoggingLevels.PNG日志记录级别

上面显示的配置文件声明了以下内容:

  • LISA+ 控制单元文件位于目录 <SIMULATION_DIRECTORY>/lisaDirectory 中。
  • 有两个控制单元,其中...
    • 第一个控制单元...
      • 将 LISA+ 的控制单元 z1_fg1 与 SUMO 中的 gneJ1 匹配。
      • 由 LISA+ 的四个信号组和 SUMO 的四个信号组组成。
      • 包含一个在 LISA+ 中称为 D1、在 SUMO 中称为 myLoop1 的检测器。
    • 第二个控制单元...
      • 在 LISA+ 中称为 z1_fg2,在 SUMO 中称为 gneJ2
      • 同样包含 LISA+ 的四个信号组和 SUMO 的 9 个信号组,例如,LISA+ 信号组 K2 控制 SUMO 信号组编号 3 和 4 的行为。
      • 第四个信号组包含属性 main 设置为 K3。这意味着如果 LISA+ 信号组 K4 在周期的任何时间被禁用(OFF),SUMO 信号组编号 8 将采用 LISA+ 信号组 K3 的状态。

工具#

控制单元管理#

LISASumo.ControlUnitsOptionsWindow.PNG控制单元管理窗口

通过按下 Ctrl + M 或点击模拟工具栏上的“Grid”按钮可以打开控制单元管理对话框窗口。在此对话框中,可以通过打开和关闭、选择程序或启用或禁用程序设置(如 VA ("Verkehrsabhängig" = 感应式) 和 ÖV ("Öffentliche Verkehrsmittel" = 公共交通))来更改模拟中所有可用控制单元的行为。

也可以通过取消选中控制单元组合框右侧的复选框(下图)来停用与 LISA+ 的通信。默认情况下,未分配给任何 Sumo 交叉口的 LISA+ 控制单元显示为禁用。

Controlunits_on.PNG用于停用与 LISA+ 通信的复选框

LISA+ 虚拟控制器#

LISA+ 提供一个独立的可执行 Java JAR 文件,其中包含一个名为 LISA+ Virtual Controller 的应用程序,用于模拟控制单元设备并在其上运行控制逻辑。因此,运行 LiSuM 不需要安装 LISA+。此应用程序最初旨在与 Vissim 一起使用。与 LISA+ Virtual Controller 的通信通过 RESTful Web 服务进行,通信协议是 REST/HTTP,数据格式使用 WSDL/XSD 文件描述,这些文件用于描述 SOAP 服务。

在启动 SUMO 之前,必须打开并运行 LISA+ Virtual Controller 的实例(点击 菜单:工具 -> Start Lisa+ Virtual Controller 或按 Ctrl + r)。

默认情况下,LISA+ Virtual Controller 及其配置文件 (OmlFgServer.ini) 位于 LiSuM 安装目录下的 OmlFgServer 目录中。此路径可以在系统首选项窗口中更改(菜单:工具 -> 首选项)。

VirtualController.PNGLISA+ Virtual Controller (Windows 7)

模拟目录#

LiSuM 在包含已加载的 lisum.xml 文件的目录中搜索模拟输入文件。

LiSuM-Core#

示例#

示例输入可以在 [1] 找到。

其他#

相位状态匹配问题#

在现实世界和 LISA+ 中,特定流向的通行权规则可能由信号组合控制(黄色闪光灯、方向箭头等)。Lisum 将信号状态的组合转换为单个 sumo 信号状态。为此,lisum.xml 文件中的信号组必须按其优先级顺序给出。

示例:如果右转由一个可以显示(红、黄、绿)的头顶信号灯和一个可以显示(红、绿)的右转箭头标志控制,并且箭头具有优先权,那么右转箭头的信号组必须在头顶信号灯的信号组之前声明。

编译 LiSuM#

如果您想为源代码做出贡献或出于其他原因进行构建,请确保您的系统上安装了 maven 和兼容的 JDK(11 或更高版本)。cmake 配置步骤将创建一个 "lisum" 目标来构建 LiSuM-Core 和 LiSuM-GUI。只需使用 make(在 Linux 或 macOS 类环境中)或从您的 IDE(例如 Windows 上的 Visual Studio)运行该目标即可。