# 4 PART
上週 ADAS 跟這週所在的層級是 Application。
下面是這堂課所規劃的四個層級:
- [Part1]Preliminary
- [Part2]Applications
- [Part3]Intelligent Technology
- [Part4]Advanced Topic
更之前提到的 Timing Analysis 和 System Design 則是屬於 Part1 的部分。
Applications 的部分老師似乎都會用 5W1H 來介紹。
# Intersection Management
## 5W1H
- What is Intersection Management?
- 決定一個路口車子行走的順序
- 路口其實不侷限於十字路口,特殊的像是合併車道
- Why is Intersection Management?
- 讓路口更安全,讓交通更絲滑,更有效率
- When does Intersection Management work?
- 任何時候
- Where does Intersection Management work?
- Centralized 跟 Distributed 的運作地點不一樣
- Centralized 會有個中央的 Manager
- Distributed 則是大家共同協同運作
- Who develops Intersection Management?
- 基本上是由政府,或政府委託的外包廠商來做
- 進階的則是由自駕車跟車聯網來達成,但基本上目前尚未成真
- How does Intersection Management work?
- 就是本週的重頭戲
---
# Modeling
:::info
首先做名詞定義。下面提到的名詞在之後提到的 models 中會個別用到一些。
由於名詞定義大多有圖示,請詳閱老師的講義。
:::
- Tiels / Cells
- 把道路跟路口畫分成很多小區塊,用以方便定位、管理
- 劃分的越精細,可以做到更精細的調配,但要付出高複雜度的代價
- Trajectories
- 車子「預先規劃」的路徑,可以是直行、轉彎、或是圓環上的路
- Collision Zones / Conflict Regions / Conflict Zones
- Trajectories 的交點
- 不過車子通常具有體積所以大多會以該交點位於的 Tile 為 Zone
- Phase
- 一個路口中,車子可以行走的「方向」
- 例如如果是十字路口,可以「南北向直行或右轉」、「東西向直行或左轉」等等 Phase
- 上面是左駕
# Controlling Length of Traffic Lights
- Fixed Time Control
- 紅綠燈以固定的規律在運作
- Coordinated Control
- 除了固定的規律運作,同時考量到如果是同一個幹道,就讓幹道上的紅綠燈同時綠燈
- Adaptive Control
- 更進階的做法
- Design-Time approach
- 根據路段過往的流量資料,來制定紅綠燈的時間,例如上下班車流不一樣。
- Real-Time approach
- 根據即時的資料,例如車聯網或是路面感測器,來制定紅綠燈的時間
## Back-Pressure Method
這是一個最簡單的 Adaptive 做法。
下面是名詞定義:
- $\lambda_{i}$:道路的 index
- $Q_{i}$:道路 $i$ 的 Queue 長度,或者說道路上有多少車
- $P_{i}$:道路 $i$ 的 壓力
- 目前令 $P_{i}=Q_{i}$,但這就是下調味的地方
- $D_{i,j}:[0,1]$:是否有車正在道路 $i$ 等待,想開往 $j$
- $P_{i,j}$:道路 $i$ 往 $j$ 的壓力差
- $P_{i,j}=D_{i,j}\max(P_{i}-P_{j},0)$
- 首先要有車子想開過去才有壓力差
- 再來是 $i$ 一定要比 $j$ 更有通行壓力
有了上面的名詞,路口處在每個 Time slot 就是要挑選該路口的一種 Phase,使得:
$$
\sum_{i,j}V_{i,j}P_{i,j}
$$
達到最大。
:::warning
影片中有講解例子,也就是弄一個情境然後操作上面的模型。
$V_{i,j}$ 算是一個輔助的參數,他可以有很多用途;最基本的用途是,原本都令 $V_{i,j}=1$,但在某種 Phase 的時候,有些方向是不能通行的,此時就必須讓 $V_{i,j}=0$ 以免 $P_{i,j}$ 有值。
:::
:::info
- Capacity-aware Back-Pressure Control
- 上面的參數定義並沒有考慮到車道的「容量」,如果加以考量的話就要把 $P_i$ 修改的更複雜,例如車道快滿的話可能壓力就會特別大
- Adaptive Max-Pressure Control
- 會用某種機率分佈模擬車道的情形,使得 $P_i$ 的計算方法更複雜
:::
---
# Intelligent Intersection Management
:::warning
以下的所有 Approach 都是假設有車聯網並且有自駕功能
:::
## Goals
- 安全
- 交通效率
- 避免 deadlock 跟 starvation
- 溝通以及計算的複雜度要低
- 因為交通上分秒必爭
- 容易做「添加」
- 就像 CAN 容易添加新節點一樣
- 最好要有個標準協議
- 但是通常還是由政府帶領車廠來弄
# Centralized and Distributed Approaches
架構上都有四個模快:
- Receiver
- Sender
- Motion planning
- Controller
但是 Distributed 因為沒有 Manager,所以會多一個 Decision Making 的模快。
- Centralized:task 的週期以下面五個循環,但 Controller 為持續運作
- Communication:一開始先由車子跟 Manager 溝通
- Decision Making:接著由 Manager 做決定
- Communication:Manager 再將結果傳回車子
- Motion Planning:車子根據收到的信號決定如何動作
- Controller:執行新的動作
- Distributed:task 的週期以下面四個循環,但 Controller 為持續運作
- Communication:一開始先由車子跟外界的車子交換訊息
- Decision Making:接著由車子自己做決定
- Motion Planning:車子根據自己做的決定開始動作
- Controller:執行新的動作
## model 例子
這個是某個組織提出的 Centralized 的 model。
概念上就是在路口處有個 Manager,負責接收來車想通過路口的請求,然後 Manager 經過計算後做出回覆。
車子會有以下四種 Message types:
- REQUEST:向 Manager 請求通過路口,同時會傳大概幾秒之間抵達路口
- CHANGE-REQUEST:修改上一次的 REQUEST,例如將抵達路口的時間延後
- CANCEL:取消通過路口的請求
- DONE:通過路口後傳給 Manager 做確認
>要注意車子沒有說要靠近路口才傳訊息給 Manager。
Manager 會有以下四種 Message types:
- CONFIRM:告訴車子你可以通行,其中包含哪個時間點要在哪個 tile 等等資訊
- REJECT:拒絕車子的兩種 REQUEST ,要車子再等等,想通過的話請再次發出 REQUEST
- ACKNOWLEDGE:回應車子的 DONE 跟 CANCEL
- EMERGENCY-STOP:要所有車子立馬停下來
Manager 可能有以下的 Control Policies
- First Come First Serve
- 但是要先定義好何謂「先到」,例如檢查路口的第一輛車是誰
- Virtual stop sign
- 虛擬的 stop sign
- Virtual traffic light
- 虛擬的 traffic light
:::warning
- 上面的各種 message type 跟無線網路的 Protocols 一樣可以畫出狀態圖,請參見講義
- 由於車聯網依靠無線網路,所以一樣會有 Loss 跟 Delay 的問題,但是在交通中這兩點會更需要密切計算
:::
# Graph-Based Approach
核心上來說,就是將 Intersection Management 問題化為 Cycle-removal 問題。
但是 Graph-Based 不只可以解決 Intersection Management,只要是 Conflict-resolution Problem,例如兩條車要搶同個 tile,都可以轉換為 Cycle-removal 問題。
:::info
下面介紹時是搭配一個 Central Manager,不過 Graph-Based 也可以用在 Distributed 的情境,只要大家有相同處理 Graph 的演算法就好。
:::
## Timing Conflict Graph
此處參考講義的圖,請搭配服用。
在一個路口上,首先決定好 Conflict Zones,也就是上面提到 Trajectories 的交點所佔據的 tiles,不一樣的 tile 精分程度,就會產生不同的 Timing Conflict Graph。
- vertex 定義方式為 $V_{i,j}$,$i$ 是車子的 id,$j$ 是車子正處在的 conflict zone id
- edge 有三種:
- type 1:根據車子的 trajectories 經過的節點和順序所連成
- type 2:如果兩台車屬於相同的「路口」,經過了相同的 conflict zone
- 此時箭頭指向順位低的人,代表順位高的會先走
- type 3:兩台車屬於不同的「路口」,經過了相同的 conflict zone
- 就會有箭頭互相指著對方,箭頭一樣是指向順位低的
## Cycle Removal Algorithm
有了上面的 TCG,接著就是用一些 Cycle Removal Algorithm 把 type 3 的 edge 做修剪,來達成想要的目標:
- 可能是最小化最後一台車離開的時間
- 或是最小化車子平均的 delay 時間
演算法修剪完之後,因為去除了環所以可以確保不會有碰撞,但是 deadlock 則要透過一些方法來檢驗。
:::info
Deadlock 請參考講義的圖片。概念上就是有一台車 A 先進到的 conflict zone 1,擋住了另一輛也想進去的車 B,但是 A 想要前往下一個 conflict zone 2 必須要先等到 B 通過 conflict zone 2,可是 B 又會因為 A 卡在 conflict zone 1 過不去 conflict zone 2,產生 Deadlock。
:::
:::warning
這週不去細講如何修剪,這通常伴隨一些 heuristic 的做法;而是介紹如何驗證沒有 deadlock。
:::
## Resource Conflict Graph
TCG 沒有環,不能保證沒有 Deadlock,所以必須根據 TCG 建構出真的有「執行順序」意義的 Resource Conflict Graph。
Resource Conflict Graph 沒有環才確保沒有 Deadlock,有環的話就有 Deadlock。
建構方法如下:
- 對於 TCG 結構中所有的 type 1 箭頭,例如 $V_{i,j}\rightarrow V_{i,j'}$
- 就將他合併成一個節點 $V_{i,j,j'}$
- 例如 $V_{i,j}\rightarrow V_{i,j'}\rightarrow V_{i,j''}$,就可以合併成 $V_{i,j,j'}$ 跟 $V_{i,j',j''}$
- 因為這兩個節點共用了同個節點 $V_{i,j'}$,所以他們之間在 RCG 就有箭頭
- $V_{i,j,j'}\rightarrow V_{i,j',j''}$
- 如果合併後為 $V_{i,j,j'}$ 跟 $V_{i',k,k'}$
- 如果在 TCG 中 $V_{i,j}\rightarrow V_{i',k}$ 是 type 2 或 type 3 箭頭
- 對 $V_{i,j}$ 跟 $V_{i',k}$ 來說只要在 RCG 中有任何是由他們兩構成的 RCG node
- 就要有 $\rightarrow$ 的箭頭。例如 RCG 中有 $V_{i,j,j'}$ 跟 $V_{i',k,k'}$
- 那麼就要有 $V_{i,j,j'} \rightarrow V_{i',k,k'}$。代表 $V_{i,j,j'}$ 這個 RCG node 發生的順序是比較優先的。
- 別忘記箭頭指向順位低的
照上面的邏輯,就可以根據三種 type 的箭頭以及執行順序,構建出帶有實際先後意義的 RCG。
## Petri-Net-Based
這個是專門用來檢查 Deadlock 的酷東西,老師說有興趣可以去看看。
---
# Non-Cooperative Environment
如果現在的環境下車子不會互相合作,而是互相競爭,此時就可以套用 Game Theory。
Game Theory 有以下要件:
- Players:在這裡就是車子內的 Decision Makers,並且假設為理性的 Rational
- Actions:在這裡就是車子的抉擇 Decision
- Objectives:車子想要通過相同的路口或 tile
## Prisoner's dilemma
這是著名的一種遊戲理論。
| | 犯人 A 保持沉默 | 犯人 A 供出犯人 B |
|:---------------------:|:-----------------------:|:-----------------------:|
| **犯人 B 保持沉默** | A,B 都要坐牢 1 年 | A 可以釋放,B 判刑 3 年 |
| **犯人 B 供出犯人 A** | B 可以釋放,A 判刑 3 年 | 兩者都判刑 2 年(Nash Equilibrium) |
因為兩位犯人都是「理性的」,所以對 A 來說,如果沒有背叛 B,最糟會被判刑 3 年,如果背叛 B,最遭是被判刑 2 年,因此一定會選擇背叛 B,而 B 也同理。
因此最終兩者都會選擇背叛對方,該點又稱做 Nash Equilibrium。
## Two-Vehicle Scenario (without Manager)
如果是以車子的例子來講:
| | A 直接駛入 | A 停下 |
|:--------------:|:-----------:|:-------:|
| **B 直接駛入** | (-100,-100) | (-4,0) |
| **B 停下** | (0,-4) | (-3,-3) |
上面當中的 -4 代表要等待 4 個單位時間,停一次車需要 1 單位時間,等對方通過需要 4 單位時間。
兩者都停下會是 (-3,-3) 是因為兩個人都停一次車所以需要 2 單位時間,並且其中一人先通過需要 4 單位時間,兩個人平均來說就是要 (2 + 4) / 2 = 3 單位時間。
如果A,B具有優先順序,A>B,就會如下:
| | A 直接駛入 | A 停下 |
|:--------------:|:-----------:|:-------:|
| **B 直接駛入** | (-50,-150) | (-4,0) |
| **B 停下** | (0,-4) | (-1,-5) |
:::info
但是人往往是不理性的,上述理性的狀態只有在電腦上才辦的到
:::
## Three-Vehicle Scenario (with Manager)
Three-Vehicle strategy game。
下面是沒有人說謊的例子:
| Vehicle | Actual time | Reported time | Allocated time | Delay |
|:-------:|:-----------:|:-------------:|:--------------:|:-----:|
| A | 5 | 5 | 5 | 0 |
| B | 10 | 10 | 12 | 2 |
| C | 12 | 12 | 19 | 7 |
System Performance 為 2+7=9。
但如果 C 說謊:
| Vehicle | Actual time | Reported time | Allocated time | Delay |
|:-------:|:-----------:|:-------------:|:--------------:|:-----:|
| A | 5 | 5 | 5 | 0 |
| B | 10 | 10 | 19 | 9 |
| C | 12 | 6 | 12 | 0 |
System Performance 為 0+9=9
可以發現,C 雖然說了謊,但是系統的表現都一樣,這樣他就不會被 Manager 抓到。
---
# Lane Merging
路口的特例。
前提假設是車子都有 CACC,可以幫助車子在合併後持續跟車。
## 情境-Two-Lane Merging
- 假設現在左側有兩條路,要合併成右方一條路。
- 此時左方上車道有兩輛車,抵達路口的時間從左到右為 (3,1)
- 此時左方下車道有兩輛車,抵達路口的時間從左到右為 (4,2)
- 假設跟同車道的之間的間距只要 1 秒,跟不同車道的間距要 3 秒
有兩種方法:
- First-Come-First-Go
- 通常來說不會是最佳解
- 以上面情境來說,因為是上下車道交錯抵達,所以通過路口的時間會是(1,4,7,10),因為不同車道的車要等 3 秒後才可跟車
- Optimal shceduled
- 這可以使用 DP 求解
- 最佳的配置是上方車道兩輛車先過,再來是下方兩輛車,這樣通過的時間就會是 (1,3,6,7)
- 也就是只需要上下車道換一次而已
:::info
另外還有 Three-Lane Merging、Consecutive Two-Lane Merging 的情境。
:::