天天看點

高精度地圖應用(一)自動駕駛初探

     以下都是我的個人了解,說的不對的歡迎狂怼。

     借用apollo的架構說事:

高精度地圖應用(一)自動駕駛初探

   自動駕駛由這7部分組成:

1.感覺。就是指傳感器的輸入,包括雷射雷達、視覺圖像、GPS、慣導、毫米波雷達等都可以歸類為感覺。

2.地圖。就是指高精度地圖,它與普通導航地圖的最大差別是:高精度地圖主要用于定位,是給機器看的。導航地圖主要用于路徑規劃,是給人看的。高精度地圖有着20cm絕對精度,5cm相對精度,具有全要素,車道集級等等,在我看來其就是對真實世界的标注而已,跟圖像标注沒有什麼本質差別。它的形似是多種多樣的,由純矢量的,比如:

高精度地圖應用(一)自動駕駛初探

也有點雲形式的(壓縮點雲),也叫定位圖層,它工作起來可能是這樣的:

高精度地圖應用(一)自動駕駛初探

當然,還有很多很多的形式,比如将圖像特征點存下來據說也可以定位,這裡就不贅述了。

3.定位。我認為定位子產品是這7個子產品裡最重要的子產品。顧名思義,定位就是确定無人車自身的位置,注意這裡的位置并不是指它在真實世界種的位置,而是它在高精度地圖種的位置,這也解釋了為什麼高精度地圖可以加偏,不必使用真實位置,否則國家測繪局肯定不幹的。一旦确定了無人車在高精度地圖中的位置,高精度地圖就像兩根鐵軌一樣,把無人車夾在裡面,就跟火車一樣,是不是比汽車要安全多了,就是這個道理。

        根據感覺傳感器的不同,定位方法也是不同的。比如傳感器是GPS+IMU,那定位方法就是組合導航,卡爾曼濾波。如果傳感器是點雲,那定位方法就是直方圖濾波NDT,它是将高精度地圖看成許多空間分布的集合,用的最多的是正态分布,點雲中每一個點映射到空間分布中,都可以得到一個機率值。不同的定位姿态會得到不同的映射,那最佳的定位姿态就是每個點機率值之和最大的那個姿态,這可以通過EM算法進行疊代優化,效率也很高,上面所講的定位圖層就是用了這種辦法。

       接下來講到本系列的重點:視覺定位,通常視覺定位就是指SLAM,它是指根據同名點計算後一幀相對于前一幀的相對位姿,進而将定位位姿傳導下去,擷取每一幀相對于第一幀的相對位姿的方法。根據求同名點的方法可以分為特征點法和直接法,根據前後位姿優化的不同可分為卡爾曼濾波和bunder adjustment。另外,它還通過回環檢測保證第二次進入場景與第一次進入時的位姿是一緻的。看起來它并不需要高精度地圖,但這也是他的緻命弱點,它隻能得到相對于前一幀的位姿,推下去也隻是知道相對于第一幀的位姿,它隻能知道自己有沒有變道,對于究竟處于第幾車道,前面100米還是200米需要變道沒有概念。而且随着誤差累計,它與第一幀的位姿也越來越不準确。它并沒有一個宏觀的認識,掃地機器人還好,畢竟就屁大點地方,多跑幾次就有了。在真實世界中往往隻給一次機會,是以光有幀間位姿是不夠的。而且對于單目SLAM來說,還有尺度漂移問題,有GPS+IMU作為修正會好一點。

      是以,我認為視覺定位也是需要高精度地圖的,高精度地圖就會提供給無人車一個參照。那麼問題來了,假如有了高精度地圖,那麼問題轉變為怎麼擷取無人車與高精度地圖的相對位姿,那它與第一幀的相對位姿就顯得不那麼重要了。我認為消耗那麼大算力去優化幀間相對誤差并沒有太大意義,我認為其意義在于可以平滑前後幀的位姿,而這也就用卡爾曼濾波就足夠了,不需要SLAM這麼重型的東西。

4.預測。無人車除了要知道自己的位置之外,還需要預測其他車的運動軌迹,人、自行車、機車等非靜态物接下來想要幹什麼,比如前方車要變道,你就要慢慢減速,等等。這個不難了解,我們人就是這樣的,知己知彼麼,開車不能隻管一股腦往前開,得随時變通。當然,這裡得預測隻是針對非靜态物,靜态物就不需要預測了,因為它是不會動的,這裡高精度地圖也有一個作用,它可以幫助無人車區分哪些是靜态物。因為高精度地圖就是靜态的,隻要能跟高精度地圖比對上的地物,那就不用預測了,這就減輕了預測的負擔,節省了算力,算力對無人車是極其重要的。

5.規劃、導航、控制。這三個我就不多講了,實際上我也不懂,大概就是路徑規劃,車輛控制等。

接下來,我要說一個我做過的項目,項目目的就是通過普通相機拍攝的照片、行車軌迹(隻有簡單的GPS位置)、高精度地圖三樣輸入,完成無人車定位的目的。

繼續閱讀