無人駕駛車輛在執行中需要面對白天、黑夜、黃昏、大風、暴雨、霧霾等自然環境資訊,以及道路上行人、車輛、紅綠燈等物體資訊,車輛究竟是如何做到理解這些複雜的資訊?
本文用兩個基本問題為您解答無人駕駛車輛如何感知和理解這個世界。
無人車如何感知和理解這個世界?
人類駕駛員的感官主要依賴於雙眼,偶爾用到耳朵,而無人駕駛車輛的AI駕駛員的感官包括了鐳射雷達、毫米波雷達、攝像頭、差分GPS、慣性單元、輪速計等感測器。還有一個核心零部件是U-Drive自動駕駛控制器,我們也稱呼它為“車腦”,在“車腦”中會執行一整套的軟體或者演算法。
在一輛無人車上使用的各類感測器往往各有優缺點:
- 鐳射雷達:能夠直接獲取 3D 的點雲資料,精度高,成本也高
- 攝像頭:獲取二維影象資料,資訊豐富、成本低,但是對光照要求相對敏感
- 毫米波雷達:精度較低,極端天氣下表現較好
在無人車上需要將不同的感測器融合以獲取最佳的效果。當車腦收到這些感測器資料之後,就會進入兩個模組:一個是自車定位,另一個是環境感知。經過這兩個模組的演算法處理之後把結果輸出到下游的決策/規劃模組使用。
問題一:定位-我在哪裡?
現在人類出門開車基本上離不開導航,人類駕駛員對定位精度要求不高,只需要在10米級。而AI駕駛員要達到釐米級的高精度定位,需要讓車輛自身每時每刻知道“我在哪裡”,需要精確地分辨出當前車在哪個車道,距離車道的邊緣有多遠、方向如何,如此後面的規劃/控制模組才能做出正確的選擇。
實現高精度定位有以下幾種方式:
- 差分 GPS:差分 GPS 和手機上的普通 GPS 不一樣,它是一種特殊的高精度的定位裝置,它可以消除三類誤差:公有誤差、傳播延遲誤差、接收機固有誤差。透過消除這些誤差可以把定位精度提升到 2cm 左右。可是在現實中,道路旁邊有建築物、高架、樹木,這些都會影響差分 GPS 訊號的質量,所以還需要其他方式配合以獲得更高精度的定位。
- 基於視覺特徵點的定位是基於影象中區域性灰度的變化來發現影象中一些穩定的特徵點,利用這些特徵點對影象進行編碼,透過對環境持續觀察以達到實現對自車的精準定位。再透過重定位找到最佳定位匹配點。此外,在無人駕駛車輛行駛中會透過定位跟蹤模式持續獲得精準位姿。
- 鐳射雷達定位:鐳射雷達點雲定位是鐳射雷達透過掃描得到一系列單幀的點雲,透過匹配位姿最佳化生成地圖。和基於視覺特徵點的定位方式一致,鐳射雷達也需要進行重定位找到最佳定位匹配點。
- 語義定位:語義定位是對道路環境中存在的人類可識別的高階特徵標識進行識別並做自車定位,比如車道線、立柱、箭頭等各種標識。同樣,語義建圖包含三步:第一步,透過鐳射雷達與攝像頭融合的資料進行三維重建,得到彩色的點雲;第二步,對三維重建結果進行語義分割,標記點雲屬於什麼分類;第三步,自動提取出語義標識,從而完成語義地圖的構建。最終自車根據語義地圖來實現定位。
- 融合定位:融合定位是將所有的定位源輸出的結果和車體內部狀態融合在一起,如 IMU(慣性單元)、車身輪速計等,最終得出統一的自車定位資訊傳送給下游模組使用。
問題二:感知-我的周圍是什麼
無人駕駛車輛接收到攝像頭、鐳射雷達以及其他感知裝置輸入的資料,透過這些資料可以獲取周圍的目標物的位置、尺寸、分類資訊(車輛、行人等)和跟蹤資訊(速度、加速度、角速度等),還有未知分類的障礙物、目標車的尾燈、護欄、紅綠燈、植被等都需要被感知到。所有這些資訊都會輸出到到決策/規劃模組使用。
目標檢測中都會使用深度學習的方法,深度學習首先透過網路學習鐳射雷達三維點雲中的背景資訊、目標物和分類資訊。此外,無人車上有多種感測器,最主要的是鐳射雷達和攝像頭,將二者融合會在目標檢測的距離精度、分類精度、尺寸精度等方面都有顯著提升。
無人車要能夠安全、平順的行駛,對每個目標物的準確跟蹤、速度、加速度等都是必不可少的,這些資訊必須要連續幀上獲取,因此我們必須要目標檢測機制上進行匹配跟蹤、速度估計等等一系列工作。我們會獲得T – 1(上一幀)時刻的目標檢測結果,也會獲得當前時刻的結果,這些結果可以透過卡爾曼濾波演算法得出當前幀預測結果,再把這個預測結果和當前幀檢測結果透過相似度計算和匈牙利匹配關聯,可以透過這速度工具來獲取場景中目標物編號、速度、運動方向等資訊,這些資訊對車輛決策/規劃模組相當重要。
*卡爾曼濾波可以有效在時間線上對測量和預測進行合理加權的演算法。
*匈牙利演算法是一種求解最大匹配的演算法。
除了常見的目標檢測之外,環境中還有一些其他要素需要感知,比如之前提到的植被,無法用一個矩形框來表示,因此需要語義分割技術,它能夠獲得精細的感知結果。最終我們將目標檢測、跟蹤和語義分割融合在一起,作為整體輸出給下個模組。
無人車的定位感知能力如何持續進化
無人駕駛系統幾個最核心的要素:算力+感測器、演算法、資料。
算力+感測器主要依賴硬體持續升級驅動,其中包括車載控制晶片(每一代新的晶片誕生,算力都有數量級提升)、鐳射雷達(鐳射雷達效能越來越強,成本也逐步降低,進而推動定位感知能力的提升)、攝像頭(解析度不斷提升,進而為演算法提升奠定基礎)。
演算法主要依賴人腦驅動演進,從第一個角度看,深度學習依然是目前最重要的方法,但是我們在繼續演進的路上也面臨很多挑戰,後續網路規模還會變得更大、更復雜(現在最大的網路已經在接近小型哺乳動物的神經元個數),從而具有更高精度和更強功能;從第二個角度看,在工業界的實踐中,深度學習方法需要和其他的機器學習方法、非學習方法結合,以得到實際可用的、功能邊界清晰的、可靠的系統;從第三個角度看,需要持續擴充套件“執行設計域”(ODD)。
執行設計域簡單來說就是可正常執行的範圍,包含以下幾個要素:天氣(雨、雪、霧等極端天氣)、光照(黃昏、夜晚、陰天等)、道路(隧道、機坪、高架)、區域(園區、城區、高速),無人駕駛車輛需要在這些要素範圍內,從易到難進行持續擴充套件。
資料主要透過資料驅動系統演進驅動,資料驅動要解決的第一個問題就是長尾問題(長尾問題概念來自於網際網路,指個性化、零散的總和卻又比較大的客戶需求,在無人駕駛領域指很少見的場景,但是總和同樣較大)。長尾問題之所以難解決,演算法能力不夠強大是一個維度,這需要工業界和學術界進行持續提升,另一個維度是在先有演算法能力範圍內,需要透過無人駕駛系統來收集到最有價值的資料,用資料驅動的方式來迭代和提升系統能力。
資料驅動是如何解決長尾問題的?透過異常事件資料錄製-回傳-篩選及標註-模型訓練-模型驗證-部署,從而完成模型升級的迭代過程,異常事件包括人工接管(Robotaxi)、無人運營車輛的剮蹭、急剎車、目標物分類跳變等。
資料驅動的另一個方面:場景、業務、感測器類別非常多。無人車會在不同的城市、不同的道路和區域、承擔不同的業務(物流、計程車等),同時每種車型上的感測器配置也不一樣,這幾方面因素都會導致資料有明顯差異。因此我們提出了一個數據驅動的跨場景、業務和感測器的統一框架。這個框架可以綜合考慮不同場景、業務、感測器的資料,可以高效地、最大程度複用各場景中的資料價值,節省標註工作成本,並提升效率。
無人駕駛車輛感知與理解這個世界的背後是一項複雜的工程系統,惟有適者方能生存,在不停地認識世界的過程中無人駕駛車輛也在不停地實現自身的進化與演進,向著下一個進化節點跨步前進。