定位在自動駕駛中佔據著不可替代的地位,而且未來有著可期的發展。目前自動駕駛中的定位都是依賴RTK配合高精地圖,這為自動駕駛的落地增加了不少成本與難度。試想一下人類開車,並非需要知道自己的全局高精定位及周圍的詳細環境,有一條全局導航路徑並配合車輛在該路徑上的位置,也就足夠了,而這裡牽涉到的,便是SLAM領域的關鍵技術。
SLAM (Simultaneous Localization and Mapping),也稱為CML (Concurrent Mapping and Localization),即時定位與地圖構建,或併發建圖與定位。問題可以描述為:將一個機器人放入未知環境中的未知位置,是否有辦法讓機器人一邊逐步描繪出此環境完全的地圖,同時一邊決定機器人應該往哪個方向行進。例如掃地機器人就是一個很典型的SLAM問題,所謂完整的地圖(a consistent map)是指不受障礙物行進到房間可進入的每個角落。
SLAM最早由Smith、Self和Cheeseman於1988年提出。由於其重要的理論與應用價值,被許多學者認為是實現真正全自主移動機器人的關鍵。
模擬人類來到一個陌生的環境時,為了迅速熟悉環境並完成自己的任務(例如找飯館,找旅館),這時應依次做以下事情:
a.用眼睛觀察周圍地標如建築、大樹、花壇等,並記住他們的特徵(特徵提取)
b.在自己的腦海中,根據雙眼獲得的信息,把特徵地標在三維地圖中重建出來(三維重建)
c.當自己在行走時,不斷獲取新的特徵地標,並且校正自己頭腦中的地圖模型(bundle adjustment or EKF)
d.根據自己前一段時間行走獲得的特徵地標,確定自己的位置(trajectory)
e.當無意中走了很長一段路的時候,和腦海中的以往地標進行匹配,看一看是否走回了原路(loop-closure detection)。實際這一步可有可無。以上五個步驟是同時進行的,因此是Simultaneous Localization and Mapping。
目前用在SLAM上的感測器主要分兩大類,光達與攝影機。光達有單線多線之分,角解析度及精度也各有千秋。
而VSLAM則主要以攝影機來實現,攝影機品種繁多,主要分為單目、雙眼、單目結構光、雙眼結構光、ToF幾大類。他們的核心都是獲取RGB和depth map(深度資訊)。由於受製成本的影響,視覺SLAM在近年來變得越來越流行,透過低成本的攝影機進行即時的建圖與定位,這裡面的技術難度也是非常之大。以ToF(Time of Flight),一種很有前景的深度獲取方法為例。
感測器發出經過調製的近紅外光,遇物體後反射,感測器透過計算光線發射和反射時間差或相位差,來換算被拍攝景物的距離,以產生深度訊息。類似雷達,或是想像蝙蝠,softkinetic的DS325採用的就是ToF方案(TI設計的)。但它的接收器微觀結構比較特殊,有2個或更多快門,測ps等級的時間差,但它的單位像素尺寸通常在100um的尺寸,所以目前解析度不高。
在有了深度圖之後呢,SLAM演算法就開始運作了,由於Sensor和需求的不同,SLAM的呈現形式略有差異。大致可分為雷射SLAM(也分為2D和3D)和視覺SLAM(也分為Sparse、semiDense、Dense),但其主要思路大同小異。
SLAM技術非常實用,同時難度也相當大,在時刻需要精確定位的自動駕駛領域,想要完成SLAM落地也是困難重重。一般來說,SLAM演算法在實作的時候主要考慮以下4個面向:
1、地圖表示問題,例如dense和sparse都是它的不同表達方式,這個需要根據實際場景需求去抉擇;
2、資訊感知問題,需要考慮如何全面的感知這個環境,RGBD攝影機FOV通常比較小,但雷射雷達比較大;
3、資料關聯問題,不同的sensor的資料型態、時間戳記、座標系表達方式各有不同,需要統一處理;
4、定位與構圖問題,就是指怎麼實現位姿估計和建模,這裡面涉及到很多數學問題,物理模型建立,狀態估計和優化;其他的還有回環檢測問題,探索問題(exploration),以及綁架問題(kidnapping)。
目前比較流行的視覺SLAM框架主要包含前端和後端:
前端
前端相當於VO(視覺里程計),研究影格與影格之間變換關係。
首先提取每幀影像特徵點,利用相鄰幀影像,進行特徵點匹配,然後利用RANSAC去除大噪聲,然後進行匹配,得到一個pose資訊(位置和姿態),同時可以利用IMU(Inertial measurement unit慣性測量單元)提供的姿態資訊進行濾波融合後端則主要是對前端出結果進行最佳化,利用濾波理論(EKF、UKF、PF)、或最佳化理論TORO、G2O進行樹或圖的優化。最終得到最優的位姿估計。
後端
#後端這邊難點比較多,涉及的數學知識也比較多,總的來說大家已經慢慢拋棄傳統的濾波理論走向圖優化去了。
因為基於濾波的理論,濾波器穩度成長太快,這對於需要頻繁求逆的EKF(擴展卡爾曼濾波器),PF壓力很大。
而基於圖的SLAM,通常以keyframe(關鍵影格)為基礎,建立多個節點和節點之間的相對變換關係,例如仿射變換矩陣,並不斷地進行關鍵節點的維護,保證圖的容量,在保證精度的同時,降低了計算量。
#Slam技術目前已經在多個領域都取得了不錯的落地效果與成績,包括室內的移動機器人,AR場景以及無人機等等。而在自動駕駛領域,SLAM技術卻一直未得到太多的重視,一方面由於定位在目前的自動駕駛行業中大多通過RTK來解決,並不會投入過多的資源去進行深入的研究,另一方面也是由於目前技術還不成熟,在自動駕駛這種關乎生命的領域,任何一種新技術都得經過時間的檢驗才能被接受。
在未來,隨著感測器精度的逐漸提升,SLAM也會在自動駕駛領域大顯身手,其成本的低昂性,性能的穩健性,都將為自動駕駛帶來革命性的改變。而隨著SLAM技術的逐漸火熱,也將有越來越多的定位人才湧進自動駕駛領域,為自動駕駛注入新血,帶來新的技術方向與研究領域。
以上是一文聊聊SLAM技術在自動駕駛的應用的詳細內容。更多資訊請關注PHP中文網其他相關文章!