Disim 高速公路模拟器/简介
外观
要启动 Disim,请打开终端并键入
disim
根据您的安装情况,您可能需要导航到 Disim 文件夹并使用以下命令启动它
./disim
如果您使用图形支持编译了 Disim,则应该会出现一个类似于右侧的窗口。如果您不需要图形支持,您可以跳过此部分并转到 命令行选项。
图形界面允许您使用鼠标在地图中导航
- 左键:更改摄像头的方向,
- 右键:水平平移摄像头,
- 中键(或同时按住左右键):放大和缩小地图,
- 滚轮:放大和缩小地图,
- SHIFT + 任何按钮:执行相同的操作但速度更快。
它允许您使用 CTRL 点击地图上的任何元素以获取有关该元素的信息
- CTRL + 左键:选择并显示有关所点击元素的信息(目前尚不支持此功能)。
窗口顶部有几个菜单
- 文件
- 打开:打开一个文件选择窗口,您可以在其中选择要加载到模拟器中的地图。模拟将在新地图上的时间零点重新开始。其他选项保持不变。
- 重新加载:重新打开当前地图并重新开始模拟。
- 退出:退出模拟器。
- 操作
- 暂停:停止时间。时间步长持续时间减少到零,但汽车继续运行。此选项在调试汽车行为时非常有用,正如我们将在本文档的教程部分中看到的那样。
- 快速:通过将时间步长持续时间设置为固定值(默认情况下为 64 毫秒)来尽可能快地运行模拟。
- 无显示:与快速相同,但停止 3D 显示。
- 更慢:您可能希望以更低的速度运行,而不是实时运行。此选项减慢时间。
- 更快:与更慢相同,但加速时间。
获取信息:此菜单目前不支持。
- 视图
- 跟随汽车:固定摄像头以跟随在道路网络上行驶的车辆。
- 上一辆车:跟随上一辆车。
- 下一辆车:跟随下一辆车。
- 显示网格:在地图上显示十米网格。该网格的每个单元格都是一个 10 米乘 10 米的正方形。
- 显示真实世界:显示一个漂亮的地形。
- 显示天空盒:显示背景图像。
- 绘制阴影:显示车辆的阴影。
- 天气
- 下雨:将天气更改为下雨。它实际上会降低每辆车的加速度和视野能力。
- 雾:将天气更改为有雾。它实际上会降低每辆车的视野能力。
- 控制器
- 加载脚本:允许您选择一个 LUA 脚本来控制每辆车的行为。
- 重新加载:重新加载 LUA 脚本。这在您需要在运行时更改脚本时很有用,正如我们将在本文档的教程部分中看到的那样。
- 卸载:卸载脚本并返回到一个虚拟的 C/C++ 控制器。
Disim 提供了许多命令行选项。可以通过图形界面激活的所有选项都有一个命令行对应项。在终端中键入disim --help将显示所有可用选项
./disim --help Disim 1.0a Simulates a complete highway traffic. Usage: Disim [OPTIONS]... -h, --help Print help and exit -V, --version Print version and exit --log[=STRING] Log file (default=`logs/log.txt') --record Whether to record data -v, --verbose-level=INT Verbose level (default=`4') -m, --map=STRING Map file (default=`./maps/default.map') -d, --duration=INT Duration of the experiment in seconds (default=`0') --fast Whether to start the simulation in fast mode --pause Whether to start the simulation in pause mode --nogui Whether to display the GUI (default=`1') --density=INT Initial density of cars at startup in veh/km (default=`0') --truck=DOUBLE Proportion of trucks at all times (default=`0.1') --weather=STRING The weather conditions. Either nice, rain, fog or rain+fog --time-step=DOUBLE The largest time-step in seconds (default=`0.064') --lua=STRING The LUA script to be executed as the car controller --luacontrol=STRING The LUA script to be executed as the infrastructure controller --ncpu=INT The number of cores on your computer (default=`0')
- log:指定一个日志文件,模拟器可以在其中记录正在发生的事情。记录在该日志文件中的内容取决于所选的详细级别。
- record:打开录制功能。所有道路传感器都将开始记录数据并将这些数据保存在logs文件夹中,其名称与其对应。我们将在教程部分更详细地介绍这一点。
- verbose-level:指定模拟器的详细程度,数值越高,详细程度越高。
- map:指定要加载到模拟器中的地图。
- duration:以秒为单位指定模拟的持续时间。当持续时间达到指定的时间时,Disim 会自动退出。0 秒的持续时间表示模拟不应停止。
- fast:在启动时打开无显示选项。
- pause:在启动时将模拟置于暂停状态。
- nogui:这可能是最重要的选项。它允许在没有图形界面情况下运行模拟,因此 Disim 不需要显示服务器来运行,并且可以在专用服务器上运行。
- density:以每公里车辆数为单位指定高速公路上初始存在的车辆密度。
- truck:指定高速公路上行驶的卡车比例。
- weather:指定天气状况。它可以是“晴朗”、“下雨”、“有雾”或“雨加雾”。
- time-step:以秒为单位指定最小时间步长。该值越高,模拟速度越快(在快速和nogui模式下),但该值越低,模拟的真实性越高。默认情况下为 64 毫秒,但请注意 500 毫秒可以产生相当不错的结果。
- lua:指定要运行的 LUA 脚本以控制车辆。有关详细信息,请参阅脚本编写部分或教程。
- luacontrol:指定要运行的 LUA 脚本以控制基础设施。
- ncpu:指定模拟车辆时要生成的额外线程数量。此数量应大致等于运行 Disim 的计算机上的 CPU 内核数量。此选项有效地将工作负载并行化到计算机上可用的不同处理器上,从而有可能使模拟速度更快。
以下是一个示例命令,该命令在 my_highway.map 文件中描述的道路网络上运行一小时的模拟器,并且没有图形界面,并且记录放置在高速公路上传感器的數據
./disim --nogui --record --map="./maps/my_highway.map" --duration=3600
下一个命令将启动 Disim,并使用 my_script.lua 中的脚本控制汽车行为,并将卡车比例设置为 50%
./disim --truck=0.5 --lua="./scripts/my_script.lua"
以下命令将使用ncpu和time-step选项在一小时模拟中显示 Disim 的实际运行时间。
time ./disim --lua="scripts/my_script.lua" --nogui --duration=3600 --time-step=0.064 --ncpu=0 real 9m49.858s time ./disim --lua="scripts/my_script.lua" --nogui --duration=3600 --time-step=0.064 --ncpu=6 real 4m55.867s (Gain: 2x) time ./disim --lua="scripts/my_script.lua" --nogui --duration=3600 --time-step=0.5 --ncpu=0 real 1m16.503s (Gain: 7.75x) time ./disim --lua="scripts/my_script.lua" --nogui --duration=3600 --time-step=0.5 --ncpu=6 real 0m37.891s (Gain: 15.9x)
在 下一部分中,我们将解释如何创建自己的高速公路网络。