從自動駕駛的架構出發往往最能夠理解自動駕駛的原理,大眾對自動駕駛最淺顯易懂的理解就是感知,決策,執行。所有機器人都是這樣的架構。
接下來我們深入一層,問題開始有一些複雜。
我們在日常生活中可能會直覺的認為,我每時每刻都在根據當下眼睛看到訊息決定我下一步的決策,但情況往往並非如此。從眼睛到腦袋再到手腳總是存在著一個時間的延遲,自動駕駛也是如此。但我們不曾感受到影響是因為大腦會自動處理「預測」這件事。就算只有幾毫秒,我們的決策也是根據對所見之物的預測來引導手腳運作的,這是我們維持正常機能的基礎。因此我們會在自動駕駛決策之前增加預測這個模組。
感知過程同樣內藏乾坤,仔細推敲也分成兩個階段「感測」與「感知」。 「感測」獲得的是感測器的原始資料例如圖片,而「感知」是從圖片中處理出的有用資訊(諸如圖裡有幾個人)。古語常說「眼見為實,耳聽為虛」。 「感知」的有用資訊可以繼續分為自車感知與外在感知,人亦或是自動駕駛汽車在處理這兩大類資訊時往往有不同的策略。
另外各類感測器經由演算法處理後的障礙物,車道等資訊常有矛盾。雷達看到了前方有一個障礙物而攝影機告訴你沒有,這時候就需要增加「融合」模組。對不一致的資訊作進一步的關聯和判斷。
這裡我們也常常把「融合與預測」歸納為「世界模型」。這個詞非常生動,無論你是唯物主義還是理想主義。 “世界”都不可能全部塞進你的腦子裡,而指導我們工作生活的是“世界”的“模型”,也就是通過對我們出生後的所見所謂加以處理,在腦中逐步構建的對世界的理解,道家稱之為「內部」。世界模型的核心職責就是透過「融合」來理解當下環境要素的屬性和關係,並配合「先驗的規律」作出「預測」為決策執行提供更從容的判斷,這個時間跨度可以從幾毫秒到幾小時。
由於世界模式的加入,整個架構變得更豐滿,但這裡還一個細節常常被忽略。也就是訊息的流向。簡單的理解,人是透過眼睛感知再到大腦處理最後交給手腳執行的單向過程,可實際的情況往往更加複雜。這裡有兩個典型的行為構成了一個完全相反的資訊流,那就是「目標達成的預案」以及「注意力的轉移」。
「目標達成的預案」如何理解?實際上思考的伊始並非感知而是「目標」。有目標才可以觸發一個有意義的「感知-決策-執行」過程,比方說你希望開車去一個目的地,可能你知道有幾個路線,而你最後會權衡擁堵情況選擇其中一個線路。擁堵情況屬於世界模型,而「到達目的地」屬於決策。這是一個決策傳遞給世界模型的過程。
「注意力的轉移」又如何理解?就算是一張圖片,無論是人類或機器都無法取得內部隱含的所有資訊。從一個需求和脈絡出發,我們往往會把注意力放在一個有限範圍和有限的品類上。這些資訊無法從圖片本身獲得,而是來自“世界模型”和“目標”,是一個從決策到世界模型再傳遞到感知的過程。
我們補充一些必要的信息,重新整理下整個架構,它變成瞭如下的模樣,是不是又複雜了一些。還沒完我們繼續看。
自動駕駛演算法和大腦一樣,有一個對處理時間的要求。一般的週期在10ms-100ms之間,可以滿足對環境變化的反應要求。但環境有時簡單有時卻非常複雜。很多演算法模組無法達成這個時間要求。例如思考一遍人生的意義可能不是100ms可以搞定的事情,如果每走一步路都要思考一次人生,對大腦一定是一種摧殘。計算機也是如此,存在著算力和運算速度的物理限制。解決方法就是引入分層框架。
這種分層機制越往上處理週期一般會縮短3-10倍,當然不一定需要完整出現在實際框架當中,工程上根據板上資源以及演算法使用情況可靈活調整。基本上,感知是上行過程,根據注意力不斷精細化特定要素,提供有「縱深和指向」的感知資訊。決策是下行過程,根據不同層次的世界模型逐層從目標分解動作到每個執行單元。世界模型一般沒有特定流向,用來建構不同粒度尺度的環境資訊。
根據處理任務的複雜度,人員分工以及通訊環境也會進行適當的閹割與合併。例如低階ADAS功能(ACC),算力較少,可以只設計一層。高階ADAS功能(AutoPilot)一般會有兩層的配置。而自動駕駛功能,複雜演算法較多,三層的設計有時是必須的。在軟體架構設計中,也存在同一層的世界模型與感知或是決策模組合併的情況。
各類自動駕駛公司或業界標準都會發布自己的軟體架構設計,但往往都是根據現狀閹割後的結果,並不具有普遍性,但為了方便大家理解,我還是把當下主流的功能模組代入進來,大家來看看對照關係,對理解原理更有幫助。
這裡需要提前註意下,雖然這已經有點軟體架構的意味,但仍然是一種對原理的描述,實際的軟體架構設計相較於此還要更為複雜,這裡並沒有展開所有細節,而是把容易混淆的部分重點做了展開。下面我們將重點放在梳理下。
」環境感知-ALL IN深度學習
為了確保無人車對環境的理解和把握,無人駕駛系統的環境感知部分通常需要獲取周圍環境的大量信息,包括障礙物的位置,速度,前方車道的精確形狀,標誌牌的位置類型等。通常是透過融合雷射雷達(Lidar),週視/環視相機(Camera),毫米波雷達(Millimeter Wave Radar)等多種感測器的數據來獲取這些資訊。
深度學習的發展,使得透過神經網路演算法完成自動駕駛搭建成為全行業共識。感知模組的演算法是整個深度學習化的“馬前卒”,是最早完成轉型的軟體模組。
定位地圖與V2X-自車感知與外在感知之間的關聯與差異
傳統意義上理解,外在感知是以GPS定位訊號為基礎,將高精地圖和車聯網訊息(V2X)等絕對座標系下的資訊轉換到自車座標系下,供車輛使用的感知源。和人使用的高德導航儀類似。配合原本就在自車座標系下的「自車感知」資訊綜合為自動駕駛提供環境資訊。
但實際的設計往往更為複雜,由於GPS不可靠,IMU需要持續修正,可量產的自動駕駛定位往往使用感知地圖的匹配來精確獲得精確的絕對位置,利用感知結果來修正IMU獲得精確的相對位置,和GPS-IMU組成的INS系統形成冗餘。因此「外部感知」所必須的定位訊號,往往依賴「自車感知」資訊。
另外雖然地圖嚴格意義上屬於「世界模型」的組成部分,但受限於GPS的敏感性,在國內進行軟體實施的過程中,會把定位模組和地圖模組進行整合,並加偏所有GPS數據,確保沒有敏感定位資訊的外洩。
融合預測模組-核心關注兩者的差異
#融合的核心是解決兩個問題,一個是時空同步問題,利用座標系轉換演算法和軟硬協同的時間同步演算法,首先將雷射雷達,相機和毫米波雷達等感知測量結果對齊到一個時空點上,確保整個環境感知原始資料的統一。另一個是解決關聯(Association)與異常剔除的問題,處理不同感測器映射到同一個「世界模型」元素(一個人/一條車道等)的關聯,並且剔除可能由於單一感測器誤檢導致的異常。但融合區別於預測的根本是其只處理過去以及當下時刻的訊息,並不會對外來時刻做處理。
而預測會基於融合的結果做出對未來時刻的判斷,這個未來的時刻從10ms-5分鐘皆有。其中包括對信號燈的預測,對周圍障礙物行駛路徑的預測或對遠處的過彎位置做出預測。不同週期的預測會給對應週期的規劃,做不同粒度的預判,為規劃的調整提供更大的空間。
規劃控制-層級化策略分解
#計畫是無人車為了某一目標而作出一些有目的性的決策的過程,對於無人駕駛車輛而言,這個目標通常是指從出發地到達目的地,同時避免障礙物,並且不斷優化駕駛軌跡和行為以確保乘客的安全舒適。規劃的結構總結就是根據不同粒度的環境融合訊息,從外部目標出發進行逐層的評估與分解,最終傳遞到執行器,形成完整的一次決策。
細分來看,規劃模組通常會分成三層:任務規劃(Mission Planning),行為規劃(Behavioral Planning)和動作規劃(Motion Planning)三層,任務規劃核心是基於路網和離散路徑搜尋演算法獲得全局路徑被給出大尺度的任務類型,往往週期較長,行為規劃是基於有限狀態機判斷在一個中周期上,車輛應該採取的具體行為(左換道,繞行避讓,E-STOP)並設定一些邊界參數和大致的路徑範圍。運動規劃層往往會基於採樣或是最優化的方法最終獲得滿足舒適性,安全性要求的唯一路徑。最後交由控制模組透過前饋預測和反饋控制演算法完成對唯一路徑的跟隨,並操縱制動,轉向,油門,車身等執行器最終執行命令。
不知道各位看官姥爺理解到了第幾層,但以上這些也只是自動駕駛原理的入門內容,當下自動駕駛的理論,演算法和架構發展都非常快,雖然上述內容是比較本源的知識點,很長時間內不會過時。但新增的需求為自動駕駛的架構和原理都帶來了許多全新的認知。
#以上是一文帶你簡單易懂地理解自動駕駛的詳細內容。更多資訊請關注PHP中文網其他相關文章!