Categories
程式開發

自動駕駛重卡在規劃和控制中的技術難點與挑戰


導讀:自動駕駛重卡本身系統模型複雜,高速場景對系統的實時,安全和穩定性有更高的要求。在有限感知,定位以及計算能力情況下,如何在動態變化的環境中,滿足安全,舒適,節油等多種目標條件,規劃和控制重型卡車的運動,是一個巨大的挑戰,同時帶來了很多有趣的問題值得研究和探索。今天分享題目是自動駕駛重卡在規劃和控制上的技術難點與挑戰。

分享的內容包括:

  1. 概述
  2. 挑戰
  3. 嘗試

01# 概述

相信瀏覽本文的讀者都是自動駕駛領域的,或是對自動駕駛感興趣的愛好者,對自動駕駛領域已經有了一定的了解,前面我們的同事也分享了很多自動駕駛基本的概念、軟件架構、硬件架構,這裡主要聚焦在Planning和Control方面。 Planning在學界不同的領域有著不同的視角,比如:

  1. 在機器人學領域,Planning問題可以定義為:在機器人的位形空間內尋找一個滿足約束條件的,從起點到終點的一條最優路徑;
  2. 在人工智能領域,Planning問題又可以定義為:給定係統的state action尋找最優的policy;
  3. 在自動駕駛領域,規劃和控制問題,相當於一個人的腦和身體,在給定感知和定位的情況下,自動駕駛車輛需要知道如何地實現安全和舒適的自主運動。

傳統規劃框架

自動駕駛重卡在規劃和控制中的技術難點與挑戰 23

典型的自動駕駛規劃模塊一般採用分層結構,主要層級分為global級和local級。

  1. Global級和目前的導航軟件一樣,主要提供全局路由的規劃,屬於路級別的規劃信息;
  2. Local級的規劃又可以分為Behavioral Layer和Motion Planning。
    • Behavioral Layer的等級比較高一點,主要提供一些描述性的策略,比如向左轉還是向右轉,亦或加速減速,它並不提供具體的像Motion級別車的state描述。
    • Motion Planning,提供的是車當前的狀態序列,比如車在t刻要以速度v和加速度a到達s位置,最後,Planning生成的動作序列發給Control模塊,Control再對Planning的序列進行跟踪。

行為規劃方法

接下來,簡單介紹下,比較常用的Behavioral Planning和Motion Planning方法:

① Rule based method

自動駕駛重卡在規劃和控制中的技術難點與挑戰 24

現在最常用的Behavioral Planning方法是有限狀態機 ( FSM,Finite State Machine ),就是有限狀態機模型的Rule based method,它為什麼是最常用的呢?因為其簡單、有效、明確,主要通過定義一些狀態,以及定義一些狀態之間的轉移條件和狀態之間相互約束的條件,最後,通過有限狀態的模型來處理我們面對的未知的複雜的環境,可以使機器人在沒有遇到過的環境中做出比較正確的決策。如上圖,DARPA挑戰賽的時候,斯坦福團隊的Junior就採用了有限狀態機模型防止交通擁堵;另外在Apollo代碼中,也通過有限的scenario以及stage之間的transform來實現在道路上不同的運動之間的決策。這種方法的好處是簡單明確,缺點是很難通過定義有限的狀態來處理一個很複雜的事情。因為實際道路上,可能會遇到很多很複雜的情況,很多都沒有遇到過,只是採用有限的狀態和有限的行為,很難把它處理的很好。

② POMDP

自動駕駛重卡在規劃和控制中的技術難點與挑戰 25

另一個比較常用的方法是POMDP,是一個將uncertainty考慮到decision making過程中的框架。所謂uncertainty,對於有規劃經驗的人,經常會抱怨,因為我們的上游是感知組,感知可不可以準點,不要有那麼多噪音,感知的同學又說到,傳感器能不能給準點,大家都有抱怨。但實際情況是,世界肯定是不確定的,所有感知的結果,包括感知的類型、位置,(如左圖,可以看到左邊的來車,它的位置在這個區域內是服從一定的概率分佈的,並不是一個確定的結果,包括它未來的行為,有可能左轉、右轉或者直行,它的intention和軌跡都是不確定的。我們在規劃時,怎樣把這種不確定性考慮到規劃中?

對於左圖的場景,一個典型人類駕駛員的行為,會邊開邊看,邊看邊動,然後再根據當前情況再去行動。 POMDP也採用了同樣的方法,POMDP將每個狀態表示成一個belief,然後通過觀察來update belief,最終通過一些方法來求得一個在當前belief下的最優的Policy。[3][4]是一些Online/Offline POMDP求解方法,POMDP很好地解決了uncertainty問題,但是它主要的問題是計算量比較大,實際應用過程中需要很多的工程優化,才能取得比較好的成果。

③ Learning based methods

自動駕駛重卡在規劃和控制中的技術難點與挑戰 26

Learning based methods,前面我們的很多專家已經介紹過了,包括Deep Learning、Deep Q-Learning、MCTS這些方法,這裡不在詳細介紹。這裡提一點,Deep Learning的效果非常好,比前面兩種方法效果都好,它的問題是Data Collection和Pipeline要求非常高。首先要有足夠多的數據,然後整個Pipeline上要有足夠完善的工具,包括仿真工具的完善程度,對系統的依賴程度比較高,並不是簡單的寫幾行代碼,制定一個規則就可以快速應用的。當然你可以得到一個很初步的版本,但是實際效果Input,背後訓練的代價還是很大的。所以需要有很多的車輛配合來獲取數據,得到數據的過程和處理數據的過程比寫一套代碼的工作量還是要大很多的。

④ 傳統的Motion Planning methods

自動駕駛重卡在規劃和控制中的技術難點與挑戰 27

接下來,介紹一些傳統的Motion Planning methods,主要分為:search based、sample based、optimization based。

1. Search based:把規劃問題轉化成圖搜索問題,首先將規劃問題建立成圖,如Dijkstra、Lattices、A*都是將規劃問題建立成圖,然後採用一些search method在圖中尋找一個從起點到終點的最優路徑。 Search based的好處是可以得到一個全局層面的最優解,只要將規劃問題建立成圖,圖上就存在著唯一的最優解,它的問題是只適用於比較低維數的規劃問題,當規劃問題state的維數比較高之後,search起來就比較耗時,面臨著指數爆炸的問題。對於我們正常的縱向規劃,需要同時規劃車輛的位置、速度、加速度以及時間,一般在4~5維以上就用不了這種search method。

2. Sample based:面對高維的運動規劃問題,我們一般採用sample based方法,就會在state space進行sample,然後對這些sample的點進行cost等連接方法,比較常用的是RRT、PRM的一些方法,或者是RRT的改進方法,圖(e)是MIT做的一個RRT方法。 Sample based的優點是可以同時處理比較高維數的運動規劃,然後可以將dynamic model也放在規劃過程中;缺點是只能得到一個概率層面上的最優,只要有足夠多的求解時間,就會得到一個接近於概率1的最優解,顯然實際過程中不可能給出足夠多的時間,或者一會兒就要重新規劃了。在有限時間內,得到的就不是一個最優解,導致規劃之後的結果可能比較粗糙,還需要一些後優化的方法和後處理的方法。

3. Optimization based:對於自動駕駛車輛,optimization based會將規劃的結果通過曲線的形式來表示,比如Polynomial、Bezier、Spline,通過多段的具有解析解的曲線形式來表示,從而將規劃問題轉化成求解曲線的參數問題,這樣比較好處理加一些想要的約束,轉化成優化問題,對於優化問題,我們有很多的求解方法,比如NLP、QP等。 optimization based方法的好處是可以有很多不同的function,可以滿足不同的目標,並且很直觀求解速度也很快;它的問題是多個目標的權重如何加?求解的最優解一般都比較貼近約束的邊界,如何來處理這些問題?而且並不能把所有的問題都很好地轉化成一個​​優化問題,也不是所有的優化問題都有解,比如非線性優化求解起來比較麻煩,是不是凸的、非凸的,這都是一些問題。

02# 挑戰

剛剛介紹了常用的規劃方法,接下來介紹下重卡(重型卡車)自動駕駛,給我帶來哪些新的特性和挑戰。

重卡自動駕駛是什麼樣的體驗

自動駕駛重卡在規劃和控制中的技術難點與挑戰 28

我們可以想像下,這種重型卡車的乘坐體驗。面對這種重型卡車,第一反應就是車特別高,然後跟小車相比它的視角也不太一樣,比如當前面有輛車,重卡在剎車的時候給你的感覺就像你要從前面車碾過去一樣。當重卡帶掛之後,如上圖,這是我們在美國機場的測試,帶了掛之後,整體看起來特別龐大、笨重。

無人重卡規劃控制算法的目標

  1. 安全:如何能做到比人類司機更安全?例如大於164000miles才出一次事故
  2. 效率:如何能做到與人類司機相當的駕駛效率?
  3. 節能:如何可以做到比人類司機平均水平更高的燃油經濟性?

這些對無人重卡規劃控制算法提出了很高的要求。

更加複雜的動力學模型

自動駕駛重卡在規劃和控制中的技術難點與挑戰 29

另外,無人重卡的動力學模型會更加複雜,可以理解成這個人比較胖,跑起來比較費勁,沒有那麼靈活。我們一般對重卡建模會把它拆分成幾個系統,動力系統、剎車系統、轉向系統和輪胎模型來分別建模。這些系統的動態響應特性比乘用車的響應特性是差很多的,也就是它的動力學特性比較複雜,響應沒有那麼好,不是想讓它停就停。

掛車帶來的挑戰

自動駕駛重卡在規劃和控制中的技術難點與挑戰 30

當重卡帶掛運行時,掛車本身會對卡車帶來很大的影響,會導致很多的失穩狀態。主要的影響因素有:

  1. 重卡與掛車鉸鏈連接
  2. 大車重的慣性
  3. 負載的不同質量和物質特性差異

帶載情況不同加速度階躍響應曲線

自動駕駛重卡在規劃和控制中的技術難點與挑戰 31

上圖是掛不同的載重,對系統的動力學特性影響也比較多。比如同樣的階躍響應,不同的質量下,可以看到曲線的差異很大。直觀說,同樣踩剎車,載重大的可能就剎不住,當然在我們控製過程中,可能會引入更多的問題。

自動駕駛重卡在規劃和控制中的技術難點與挑戰 32

如何省油,這是從一個文獻中截取的如何省油的可能措施。比如可以利用道路的坡度信息,上坡提前減檔、提前加速,下坡可以讓它溜一溜,提前感知道路前面車流的速度,提前減速,或者是信號燈提前委託等等。通過經濟性駕駛,採用不同的自動駕駛策略,可以節能15%,看起來這些技術還是比較可觀的。不過,節油的一些策略,會帶來一些安全性上的隱患,比如最常用的溜坡,能不能溜?這對我們的要求還是很高的。

03# 嘗試

最後給大家展示一下我們在自動駕駛上的一些嘗試:

  1. 自主變道:因為前車的車速比較低,我們嘗試自主變到左道上去,先是超車,然後再自主變回來。
  2. 匯入:我們在匯入主道時,左後方車輛提前進入,進來之後,從我們左側超了過去,這時我們會主動進行避讓。
  3. 考慮帶掛規劃:

http://mpvideo.qpic.cn/0bf234aaeaaa5aaas42wl5pfbx6dalpqaaqa.f10002.mp4?dis_k=41b2a642022bdbdf73bc13defd23e784&dis_t=1582878446

這裡展示的是在規劃過程中如何考慮帶掛的規劃,小框是實際的車頭,大框是掛車的車尾,假設路邊有一個長條形障礙,需要我們去避讓,如何把掛車模型加進來,考慮避讓。這個做法跟MPC類似,我們把掛車的模型加到整個路徑規劃的模型中,然後做一個向前的Prediction,然後選一個best trajectory,說起來比較容易,實際上,因為掛車加了掛之後,它的模型就變得比較複雜,做Prediction時,整個的運算量就比較大,如何能選一個最好的policy,還需要一些工程的手段。

自動駕駛重卡在規劃和控制中的技術難點與挑戰 33

這就是我們在上匝道時,可以看到掛車隨著匝道有一定的擺動。掛車在匝道上開的時候跟小車開是不太一樣的,需要考慮後邊的長長的掛載,不能拐彎的時候撞到路肩上,這需要我們做一些帶掛的規劃。

今天的分享就到這裡,謝謝大家。

作者介紹

楊帆,智加科技技術專家

本文來自 DataFunTalk

原文鏈接

https://mp.weixin.qq.com/s?__biz=MzU1NTMyOTI4Mw==&mid=2247497706&idx=1&sn=a5027a576758026f00b9ab5f0960ea4d&chksm=fbd74586cca0cc9081214312d254f5b7ef89bc403376dd259a7a7b70c85e5682d1c5821a7b55&scene=27#wechat_redirect