古詩詞大全網 - 成語用法 - SUMO 中的車輛動力學模型

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 函數 中實現。