導航:首頁 > 源碼編譯 > euler源碼

euler源碼

發布時間:2024-02-25 05:35:07

① SUMO 中的車輛動力學模型

SUMO 中車輛動力學模型包括兩方面

longitudinal model : 縱向動力學模型,描述車輛加速和減速

lateral model :橫向動力學模型,描述車輛換道

在 longitudinal model 方面,由於 SUMO 主要用於研究車輛的外部行為、多車交互和交通流,對於單個車輛建模精度要求不高,可以近似看作質點,採用比較簡單的 car-following model (跟車模型) 來描述車輛速度和位置變化規律。car-following model 中包含兩種情況:無前車和有前車。

在 lateral model 方面,SUMO 採用 lane changing model ( 參考文獻 )。簡單地說就是以決策樹的方式設定諸多換道條件,只要滿足某些條件,就進行相應的換道操作。
默認的 lane changing model 是瞬間換道,即在一個 simulation step 中完成換道,直觀地看就是車輛在兩個車道之間瞬移。
更加精細的模型包括:

具體設置可以參考 https://sumo.dlr.de/wiki/Simulation/SublaneModel#Sublane-Model

本文主要介紹 car-following model.

要了解 SUMO 中默認使用的改進 Krauss model,需要先了解一下原始的 Krauss model 的建模思想。

Krauss model 來自文獻:

假設 為 leader 與 follower 車間距,其中 ​ 為車身長度。

如果要求車輛不相撞,需要滿足

其中

為了計算 ​ , 需要給出速度與剎車距離的函數表達式 ​和 。下邊用 ​ 函數在 ​ 處的 Taylor 展開近似替代 ​ 函數,忽略高階項得到

下邊的問題就是如何計算導數 ​ .

假設剎車時加速度為 ​,則有

其中的積分項對應了剎車加速度為 情況下的剎車距離。

一般我們在計算距離時習慣將積分區間設定為時間,而被積函數為速度。這里是將積分區間設定為速度的變化區間,對時間進行積分。這樣積分之後得到關於速度的函數,以便後續的操作。

將 式帶入 式中得

上述表達式右邊 ​ 含有​ ,所以需要再整理一下,得到 ​ 的顯式表達為

其中原本的 ​ 也替換為了最大剎車加速度 ​.

上述式子就是 SUMO 中 original Krauss model 的安全跟車速度表達式,部分 程序源碼 如下:

這里 式右邊就是安全跟車速度,記做 ​ 。但是,這一速度還不是最終車輛採用的跟車速度。與無前車情況類似,我們也要保證跟車速度不能超過允許的最大速度,因此要取安全速度和允許最大速度中的較小值,即

其中 ​ 為最大加速度, ​ 為模擬更新步長。

另外,可以引入隨機因子,表示車輛並不一定按照上述安全跟車速度行駛,可以取更小的值,即

其中 ​ 為外部設定的 imperfection parameter,表徵了偏離 ​ 的程度。

總結演算法步驟:

盡管 SUMO 中包含了上述原始 Krauss model,但是沒有作為默認 car-following model,而是做了較大改動。改進模型與原始的 Krauss 模型的出發點是相同的:在保證不碰撞的前提下,車速盡量的快。但在計算安全速度方面,與原始 Krauss 完全不同。

改進的 Krauss model 依然基於上述公式 ,但並沒有採用泰勒展開方式近似表達剎車距離函數 ,而是直接數值計算。步驟與源碼實現如下:

上式中 為前車速度減到 0 需要的時間。

在 SUMO 源碼中通過 brakeGapEuler 函數 實現上述計算過程。

這里需要注意的是,SUMO 默認採用 Euler 數值積分方式 ,在計算位置時公式如下:

即 時刻的位置等於 時刻的位置加上 時刻的速度造成的位置變化。

明白了這種積分方式才能更好的理解源碼中的計算公式。

得到安全跟車速度之後,其餘部分與原始的 Krauss model 類似的,要與允許的最大速度比較,並且考慮隨機因素。具體在 followSpeed 函數 和 dawdle2 函數 中實現。

閱讀全文

與euler源碼相關的資料

熱點內容
php網路工程師崗位職責 瀏覽:998
土豆伺服器風險怎麼樣 瀏覽:990
win11怎麼安裝安卓游戲 瀏覽:555
程序員報考內容 瀏覽:302
su3維文本命令 瀏覽:871
單片機存儲器類型 瀏覽:13
unix查看埠命令 瀏覽:21
程序員團建活動有哪些 瀏覽:67
libzip壓縮解壓 瀏覽:943
廣州銀行app如何導流水 瀏覽:385
什麼是寫命令 瀏覽:687
程序員眼中的道德 瀏覽:505
文件解壓後亂碼是什麼原因 瀏覽:730
php路徑轉換 瀏覽:188
php中flag 瀏覽:183
當程序員要做什麼准備 瀏覽:284
pinctrllinux 瀏覽:901
lzw壓縮工具 瀏覽:864
luae加密插件破解版 瀏覽:141
Python求導數和程序 瀏覽:223