這本文為Pony.ai Tech lead梁亞雄分享《自動駕駛中軌跡規劃的探索與挑戰》,從軌跡規劃的概念、決策、橫向規劃、縱向規劃四個方面介紹了軌跡規劃的難題。
編輯整理:孫昊
內容來源:Pony.ai & DataFun AI Talk
出品社區:DataFun
注:歡迎轉載,轉載請注明出處。
大家好,今天我們主要介紹一下軌跡規劃的探索和挑戰,我主要從四個方面介紹:
軌跡規劃的概念
決策
橫向規劃
縱向規劃
軌跡規劃的概念:
軌跡規劃的核心就是要解決車輛該怎么走的問題。比如我們知道了附近有行人、騎自行車的人以及前方的卡車,如果我們現在將要左轉,該怎么辦?這就是軌跡規劃該解決的問題。
軌跡規劃的輸入包括拓撲地圖,障礙物及障礙物的預測軌跡,交通信號燈的狀態,還有定位導航(因為要知道目的地是哪才能規劃路徑)、車輛狀態等其他信息。而軌跡規劃的輸出就是一個軌跡,軌跡是一個時間到位置的函數,就是在特定的時刻車輛在特定的位置上。在PPT上是t ->(x,y,z),把z標灰是因為目前為止我們的車不會飛。
軌跡規劃本質上來說是一個優化問題。談到優化問題,我們需要知道優化的約束和優化的目標。首先看約束,第一個約束就是車輛要遵守交規,這是強制性的約束;第二個約束是要避免碰撞;第三個約束是要使規劃的軌跡在控制上可實現,不能出現規劃了一個急彎的軌跡,車根本拐不過來的狀況。而優化的目標總的來說就是要跟人開的像,具體表現就是讓人乘坐起來感到舒適。但像人也有不同的優化目標,比如我們可以開的穩一點也可以開的急一點,像老司機一點。
這樣一個優化問題在數學上的性質是什么呢?我們關心一個優化問題首先看這個優化問題是不是凸的,因為凸的問題比較好解一些。什么是凸的?我們可以簡單描述對于一個問題它的兩個可行解,其線性組合也應該是可行的,而且不比這兩個解都要差。那么軌跡規劃是不是一個凸優化問題呢,并不是,它是非凸的。為什么呢?我們在對t ->(x,y)問題進行求解時,復雜度比較高計算量比較大。所以通常的做法是把他分成橫向規劃和縱向規劃。橫向規劃,是s ->(x,y),就是決定軌跡的形狀是什么??v向規劃是t ->s,也就是指在此形狀上運動的速度狀態,也就是時間與位移的關系。橫向規劃和縱向規劃聯合起來就是t ->(x,y)。那么橫向規劃是凸的嗎?如下圖,圖上沒有時間信息,這就是橫向規劃。兩條黑線代表不同的變道軌跡都是可行解,然后我們看其線性組合也就是中間的紅線,但明顯紅線的軌跡是不能用的,是很差的,他變道太慢,騎線行駛的距離太長了,所以橫向規劃是非凸的。
我們再來看縱向規劃,我們經常用t - s圖表示。t表示時間,s表示我們走過的路程。當一個人橫穿馬路時我們可以用白色矩形來在t - s圖上表示這個過程,左邊界表示人進入我們規劃路徑的時刻,右邊界表示離開規劃路徑的時刻。橫向上,上下邊界差可以理解為人在占用我們規劃路徑的寬度。對于這樣一個縱向規劃,有兩種選擇,一種是我們要讓人,既下邊的綠色路線,一種是車輛加速超過,既上邊的綠色路線。但它的線性組合可能是這條紅線,明顯這已經撞上了,所以這并不是一個凸的問題。
決策:
正是因為軌跡規劃是非凸的,所以我們需要用決策的模塊來解決。什么是決策呢?從數學上來講,決策就是限定非凸問題的解空間,將問題轉化為凸的。我們可以看下圖的例子,如果兩個人在穿馬路的話,我們大體上可以有四種不同的決策,既讓兩個人,超兩個人,讓一超一和超一讓一。而一旦決策確定,那么其實就可轉換為凸的問題,求解就會相對來說比較容易。決策也會使解更加穩定,因為一個單純的數值優化問題的求解,會很難保證每一幀的解是相對穩定的,不會出現第一幀要讓,而第二幀卻要沖的問題。但需要注意決策的問題是一個NP-hard 問題。有一些需要決策的場景,比如搶行還是讓行,是否要沖黃燈,在哪兩輛車之間變道、并線,是否要主動變道,是從左還是右繞行前方障礙物,只有做了決策才能使問題變為凸優化問題,便于求解。對于凸問題,有很多比較快速的算法進行計算了。線性規劃,二次規劃,序列二次規劃,都是數值求解優化問題的方式。我們可以看一下二次規劃中,如果Q正定,二次規劃就是凸的問題,有很快的方式求解它。
下邊就是看如何把自動駕駛中的問題轉化為優化問題。
首先是縱向規劃的決策,決策的方法我們已經談到了一些,比如動態規劃。這是一個NP-hard問題所以沒有一個簡單的算法進行精確求解。看下圖,如果有兩個人穿馬路,我們來研究一下如何走才是最優的,我們可以將T-S進行離散化,離散化之后,我們就可作出一個狀態轉移方程,而這個狀態轉移方程我們可以看作每一步的決策只與前邊的兩步有關系,所以有轉移方程。雖然這個方程在實際過程中比較難寫但確實是一種做法。雖然離散化t和s降低了精度,但降低精度也能降低了運行時間。注意,這種方法并不能保證最后的速度比較舒適,它只是大概的一個決策方法,既到底讓或者不讓。
我們再來看一下決策方面的挑戰。第一個挑戰上面已經講過了,決策問題是一個NP-hard問題,不易直接求解,有多種多樣的近似算法。第二個挑戰是很難用規則去擬合人的經驗,包括上述的狀態轉移方程中的cost也很難去表示。而一些解決的辦法是我們可以根據各種不同的情況去建立一個數學模型。以及用機器學習的方法去做一些決策。比如說下圖左邊的例子,我們已經打算繞行,但前車突然起步了,我們該怎么辦?我們是該變道還是跟在后邊走還是繼續繞行?這種情況確實很靠人的經驗。再看右邊的圖,我們要左轉,但是前邊這輛車停了很久也沒有走我們要不要變道呢?作為人類司機也很難判斷。場景的多變而復雜使得決策面臨著很多挑戰。
橫向規劃:
剛剛我們已經說過了,軌跡規劃可以拆成橫向和縱向的規劃。橫向規劃是一個方向的規劃,它可以看成一個如何打方向盤的規劃,它只決定了軌跡的形狀。這個問題通常的解法分兩種,一種是無車道的,比如說freespace中的規劃,或者說是停車之類的問題,它是沒有車道線信息或者說先驗信息的,大多都用OpenSpace路徑生成的方式去做,一般也是低速的。對于有車道的情況,雖然有車道線但是輸出s ->(x,y)這個函數難度也是比較大的,常見的做法是是離線生成參考線,之后我們就可以將s ->(x,y)這個問題變為一個求解s ->L的問題,L是指車輛在這個參考線上的橫向偏移量??梢钥吹较聢D右邊這張圖,本來是沿車道往前走,但由于有車輛的遮擋,我們就必須繞行它。即橫向偏移就可以了。
對于參考線的生成,很類似于開卡丁車時別人教你的過彎的最優路線,它也是一個優化問題,當然也要保證安全性和舒適性,但是方便的是有了地圖以后我們是可以離線去做的,所以可以用一些開銷比較大的算法做到非常優。它的約束是在車道線內,且控制上要可實現。優化目標就要接近車道中心,曲率不能太大且曲率變化率不大。
有了參考線之后我們就可以把參考線離散化,采一些點出來,那么就變成了解一個離參考線偏移距離的一個問題。就變成了s ->L的問題,約束是不跨越邊界,避免碰撞,而優化的目標是要離參考線近,要離障礙物遠,曲率不大,曲率變化率不大等等。
我們看下這個例子,那么這個問題就可以看成一個二次規劃QP的問題。0,-1,-2是我們車過去的路徑,0號點是我們車當前的位置,我們需要解的就是1,2,3,4,5,6這種點的相對于參考線的橫向偏移x,已知就是x[-2],x[-1],x[0],求解x[1],x[2]等,而約束就是他不能超過左右邊界包括馬路牙,實線,障礙物等。優化目標就是我們要離中心參考線近,方向盤不能打太多太快。下圖中的公式的形式就是一個關于x的二次的形式,所以它們可以去用QP的方法來解。
之后我們再來看看橫向規劃的挑戰。雖然大部分時候車都在一個有車道線的地方開,但比如像下圖左下部分的路口,這邊是三條直行的車道,而對面是四條條直行的車道,右邊的白車就不會按車道線開,會橫跨車道線擠你。右上的圖,是有輔路的情況,他是沒有車道線的,這種進輔路的問題更像是一種沒有參考線的freespace的規劃,這種都是比較大的挑戰,如果說沒有車道線或者說沒有人按車道線開,那么這樣的規劃就會比較難做一點。
另外一些挑戰就是環境的問題,因為周圍的環境是瞬息萬變的周圍的環境預測也是困難的,我們看下圖,本來車輛是要往左變道,而左下角黃色的塊表示摩托車,這個摩托車正在飛速的過來,所以車輛又進行了取消變道的決策,也就是生成平滑的曲線回到原來的道路上去,這樣的情況我如何能保證路徑光滑且在控制上可實現,也是一件很難的事情。
縱向規劃:
縱向規劃其實是對于我們設定好的路徑上的速度上的規劃,決定了在這整個軌跡上的運動過程。求解這種優化問題,有的約束第一就是遵守交規(信號燈、限速、停車讓行等),第二就是避免碰撞。優化的目標,想都可以想的到就是舒適,舒適就是速度變化率不大,加速度變化率不大,行駛也要盡量快一點,等等。
我們舉一些例子,前邊提到了行人橫穿馬路,行人就是這樣一個矩形,我們對應了兩種決策,決策完成后我們應該怎么辦呢?如果決定要搶行,我們就可以將矩形的約束條件擴展到最下部,這樣就是凸問題求最優解。如果是避讓我們就可從下邊過,但是如果是行人斜著穿過馬路呢?那么請大家想一下按s ->t圖是如何表示的呢?答案就是它是斜向上的平行四邊形。
再看一些類似的例子,如下圖。比如黃燈,黃燈是一個特殊的例子,如果決策要沖的話,需要盡快通過路口,否則的話很容易被逼停在路中間出不去,這種情況我們可以用一個這樣的s - t圖表示,左邊界是表示黃燈亮的時刻,大家看這樣的白色矩形有一個缺角,當黃燈亮起的時候,我們如果要盡快通過路口,t在增大的過程中s也要盡快的增大,增大的速率要超過缺角的斜率。
我們再看一些更高級的想法,我們在跟車的時候,假如前車在勻減速,在s - t,如下圖所示,如果能夠精確描述前車的運動的狀態,那么白色部分會有各種各樣的形狀,這樣就可以在解優化問題是解出一個好的速度曲線。
之后我們再看一下縱向規劃的挑戰。如下圖,比如我們綠燈左轉,而有一個電動車,在左側很快速的橫穿馬路,正常來說那么人應該怎么開呢?人會和電動車司機對一下眼神,通過眼神比較氣勢誰猛,然后誰就會主動的讓對方,開個玩笑。但在決策上是這個事情并不好處理,這是一個博弈的過程,并不能一開始就決定要無視他還是讓他,而要在一開始對他有一點反應,所以在很多時候要在激進和保守之間掌握一個平衡點,很多時候要有不同的參數和不同的模式去處理這個事情。
另一方面,感知和預測帶來的困難也會帶來縱向規劃的挑戰,可以看下邊這連續兩張圖,突然就有人從車前沖出來了,這個我們俗稱叫做鬼探頭,你要檢測到有盲區,需要在在檢測到有盲區的時候進行減速等等。還有問題就是預測,我們可以看到左下角的圖,右車道有一個面包車,而前邊有速度慢的一輛自行車,人一看就知道,這個面包車極有可能變道,但這對預測也提出了很大的挑戰,如果沒有預測那么你的反應就會比較慢。右下角的圖,你也無法判斷這輛左拐的車要拐到哪條車道上去。
還有一些極端的情況,需要考慮到橫縱向協調配合,比如下圖一個極限的車輛插入,你在高速行駛,而旁邊的車突然就要插進來,如果是人類司機他會打方向避讓,如果左邊沒有車,甚至會變道,左邊有車,他也會扭一點方向去避讓。這種就需要橫縱向的配合去一起解決這種極端的情況,從縱向規劃來說,這種情況,你已經不可能保持安全車距了,你更多的只能說保證不撞,然后盡快拉開車距,而不是一腳剎到底。
作者介紹:
梁亞雄,Pony.aiTechlead,清華大學計算機碩士,ACM-ICPC亞洲區賽金牌得主,此前任職于Hulu,目前在Pony.ai負責自動駕駛路徑規劃和控制模塊的技術研發。
-
機器學習
+關注
關注
66文章
8495瀏覽量
134199 -
自動駕駛
+關注
關注
788文章
14233瀏覽量
169841
原文標題:自動駕駛中軌跡規劃的探索和挑戰
文章出處:【微信號:IV_Technology,微信公眾號:智車科技】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
新能源車軟件單元測試深度解析:自動駕駛系統視角

動量感知規劃的端到端自動駕駛框架MomAD解析

從《自動駕駛地圖數據規范》聊高精地圖在自動駕駛中的重要性

一文聊聊自動駕駛測試技術的挑戰與創新

MEMS技術在自動駕駛汽車中的應用
馮興亞:自動駕駛技術已不再是靈魂


評論