Disim 高速公路模擬器/簡介
外觀
要啟動 Disim,請開啟終端並鍵入
disim
根據您的安裝情況,您可能需要導航到 Disim 資料夾並使用以下命令啟動它
./disim

如果您使用圖形支援編譯了 Disim,則應該會出現一個類似於右側的視窗。如果您不需要圖形支援,您可以跳過此部分並轉到 命令列選項。
圖形介面允許您使用滑鼠在地圖中導航
- 左鍵:更改攝像頭的方向,
- 右鍵:水平平移攝像頭,
- 中鍵(或同時按住左右鍵):放大和縮小地圖,
- 滾輪:放大和縮小地圖,
- SHIFT + 任何按鈕:執行相同的操作但速度更快。
它允許您使用 CTRL 點選地圖上的任何元素以獲取有關該元素的資訊
- CTRL + 左鍵:選擇並顯示有關所點選元素的資訊(目前尚不支援此功能)。
視窗頂部有幾個選單
- 檔案
- 開啟:開啟一個檔案選擇視窗,您可以在其中選擇要載入到模擬器中的地圖。模擬將在新地圖上的時間零點重新開始。其他選項保持不變。
- 重新載入:重新開啟當前地圖並重新開始模擬。
- 退出:退出模擬器。
- 操作
- 暫停:停止時間。時間步長持續時間減少到零,但汽車繼續執行。此選項在除錯汽車行為時非常有用,正如我們將在本文件的教程部分中看到的那樣。
- 快速:透過將時間步長持續時間設定為固定值(預設情況下為 64 毫秒)來儘可能快地執行模擬。
- 無顯示:與快速相同,但停止 3D 顯示。
- 更慢:您可能希望以更低的速度執行,而不是即時執行。此選項減慢時間。
- 更快:與更慢相同,但加速時間。
獲取資訊:此選單目前不支援。
- 檢視
- 跟隨汽車:固定攝像頭以跟隨在道路網路上行駛的車輛。
- 上一輛車:跟隨上一輛車。
- 下一輛車:跟隨下一輛車。
- 顯示網格:在地圖上顯示十米網格。該網格的每個單元格都是一個 10 米乘 10 米的正方形。
- 顯示真實世界:顯示一個漂亮的地形。
- 顯示天空盒:顯示背景影像。
- 繪製陰影:顯示車輛的陰影。
- 天氣

Disim 中的雨和霧效果 - 下雨:將天氣更改為下雨。它實際上會降低每輛車的加速度和視野能力。
- 霧:將天氣更改為有霧。它實際上會降低每輛車的視野能力。
- 控制器
- 載入指令碼:允許您選擇一個 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)
在 下一部分中,我們將解釋如何建立自己的高速公路網路。
