SUMO入門(六) - 交通燈

SUMO入門(六) - 交通燈

Simulation/Traffic Lights
通常,NETCONVERT 和 NETGENERATE 在計算網絡期間爲交叉口生成交通信號燈和程序。 儘管如此,這些計算出的程序通常與現實中的程序不同。
要使用真實的交通燈程序提供模擬,可以使用其他程序定義運行SUMO / SUMO-GUI
此外,SUMO / SUMO-GUI允許加載定義,描述一組交通燈何時以及如何從一個程序切換到另一個程序

兩者都將在以下子章節中討論。 另一種可能性是在NETEDIT中直觀地編輯交通燈計劃。


自動生成的TLS程序

– 所有交通信號燈都以固定週期生成,默認週期時間爲90秒。可以使用選項 –tls.cycle.time 更改此設置。

– 所有綠色階段之後是黃色階段。黃色階段的長度是根據進入道路的最大速度計算的,但可以使用選項 –tls.yellow.time 進行自定義

– 如果交叉路口的速度低於70km/h的閾值(可通過選項 tls.minor-left.max-speed 進行配置),則允許左轉彎與迎面而來的直線交通同時發生但必須屈服。這被稱爲 green minor ,並在狀態定義中用 小寫 g 表示。否則,左轉流必須使用受保護的左轉相位(見下文)。如果由於沒有專用的轉彎車道而無法建造這樣的車道,則無論如何都允許綠色小車,但會發出警告。

– 實際上,通常存在所有流都是紅燈以允許清空交叉口的相位。 SUMO默認不構建這些相位。要使每個綠色相位都以全紅色相位開頭,可以使用選項 –tls.allred.time


默認的 4-arm 交叉口(layout opposites)

默認情況下,程序生成4個綠色相位:

– 直行相位
– 左轉相位(僅當有專門的左轉車道時)
– 與第一個方向正交的直行相位
– 與第一個方向正交的左轉相位(僅當有專用的左轉車道時)

根據上面說明的默認時序,綠色階段通常持續31秒。

如果節點類型設置爲 traffic_light_right_on_red 而不是 traffic_light,則在所有相位允許從所有側面右轉(在進入當前具有綠燈的交通流之前停止之後)。


交叉口 layout incoming

– 交叉口的每個進入edge都有一個單獨的綠色相位,允許所有方向移動
– 如果節點類型設置爲 traffic_light_right_on_red 而不是 traffic_light,則允許同時兼容的右轉彎


其他交叉路口

– 如果在十字路口有超過4條道路相遇,則會生成其他綠色相位
– 如果在交叉路口會合的道路在轉彎流上具有最高的道路優先級,則可以生成 layout incoming 而不是 layout opposites
– 如果交通燈路口沒有任何衝突的道路,則默認情況下不會出現紅色相位。通過設置選項 –tls.red.time 可以生成單個紅色相位


利用有關交通需求的知識改進生成的計劃

爲了獲得動態適應需求的交通燈,使用選項 –tls.default-type 啓動網絡。這將自動生成啓動的交通燈。要轉換現有的 .net.xml 文件以啓動所有交通信號燈,請執行以下步驟:

netconvert -s orig.net.xml --plain-output-prefix plain
netconvert -e plain.edg.xml -n plain.nod.xml -x plain.con.xml -o updated.net.xml --ignore-errors.edge-type --tls.default-type actuated

工具 tlsCycleAdaptation.py 可用於修改綠色階段持續時間以適應給定的交通需求。
tlsCoordinator.py 工具可用於修改程序偏移,以便爲給定的交通需求生成綠波。


定義新的TLS程序

您可以將交通燈的新定義作爲 additional-file 的一部分加載。 加載後,將使用最後一個程序。

可以通過 WAUTs / TraCI 在程序之間切換。 此外,可以使用 GUI上下文菜單 在它們之間切換。
additional-file 中紅綠燈程序的定義類似如下:

<additional>
   <tlLogic id="0" programID="my_program" offset="0" type="static">
      <phase duration="31" state="GGggrrrrGGggrrrr"/>
      <phase duration="5"  state="yyggrrrryyggrrrr"/>
      <phase duration="6"  state="rrGGrrrrrrGGrrrr"/>
      <phase duration="5"  state="rryyrrrrrryyrrrr"/>
      <phase duration="31" state="rrrrGGggrrrrGGgg"/>
      <phase duration="5"  state="rrrryyggrrrryygg"/>
      <phase duration="6"  state="rrrrrrGGrrrrrrGG"/>
      <phase duration="5"  state="rrrrrryyrrrrrryy"/>
   </tlLogic>
</additional>

注意:
要開始使用,您可以從 .net.xml 文件中複製要編輯的所有交通燈的 tlLogic 元素,並將它們放入新文件中。 然後,您只需要更改 programID 屬性,即可修改和加載程序。


< tlLogic > 屬性

tlLogic元素中使用以下屬性/元素:
在這裏插入圖片描述

< phase > 屬性

使用以下屬性定義每個相位:
加粗樣式

信號狀態定義

相位狀態中的每個字符描述交通信號燈的一個信號的狀態。
請注意,單個車道可能包含多個信號。例如一個用於車輛左轉,一個用於直行車輛。這意味着信號不控制 lanes,而是links,即每個連接一個進入交叉口的通道和一個從該交叉口輸出的通道。

在SUMO中,實現了信號和鏈路之間的一對一依賴關係,這意味着每個信號可以控制多個鏈路,儘管 NETCONVERT 或 NETGENERATE 生成的網絡通常每個鏈路使用一個信號。
使用 SUMO-GUI 可視化設置中的 “show link tls index” 選項,或 .net.xml 文件中 < connection > 元素的相應 linkIndex 屬性,可以獲取哪個紅綠燈信號控制哪些鏈接的信息。

使用以下信號顏色:
在這裏插入圖片描述
示例:當前狀態爲“GrGr”的交通燈。 最左邊的字母“G”對鏈接0的綠燈進行編碼,對於鏈接1爲綠色,對於鏈接2爲綠色,對於鏈接3爲紅色。通過在SUMO-GUI中激活show link tls index 展示鏈接號。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章