本次分享聚焦于高精地圖在自動駕駛中的應(yīng)用,主要分為以下兩部分:1. 高精地圖 High Definition Map.2. 定位 Localization
一.高精地圖 High Definition Map
★ 拓撲地圖 Topological Map / Road Graph
1.傳統(tǒng)地圖
我們先看下傳統(tǒng)地圖,這是從百度地圖里截出來的圖,從這張圖我們可以看到很多信息:
拓撲信息:我們可以看到北清路的主干道,可以看到北清路可以延伸到哪些道路上去,這些拓撲信息從人的角度來看是能夠識別出來的;
各類 POI:我們同時還能看到許多 POI 信息,包括中關(guān)村壹號-A1座,拉卡拉大廈等;
用戶是人
米級精度:精度是米級別的,這對人來說足夠了,因為人會自動判別周圍的環(huán)境,做出自己的變化。
但是這些信息對于自動駕駛的車輛來說,到底是不是必要的、準確的或者足夠的,那我們繼續(xù)往下看。
2.典型駕駛場景
這是一個典型的駕駛場景,假設(shè)我們正在駕駛的車輛是后面的白車,可以看到他的前面有輛自行車,那么對于白車來說,他可以有倆個決策:跟車或者變道。那么對于自動駕駛車輛來說, 我們作出決策的前提第一個是要知道全局的路線規(guī)劃信息,變道后是否還能夠到達終點,此外還需要知道很多具體的信息:
在哪條車道上以及當(dāng)前車道的具體位置
是否有隔壁車道,如果沒有車道你是變不過去的
是否允許變道:車道的類型,虛線實線,變道距離是否足夠長
自動駕駛車輛還不能夠像人一樣做出各種復(fù)雜的動作,這時需要有一些先驗的約束條件,這些信息的話都應(yīng)該從地圖中來。
3.HD Road Map
HD Road Graph 也就是高精地圖其中的一部分,又叫做拓撲地圖。HD Road Graph 以厘米級精度的描述道路細節(jié),主要包含:車道類型、車道連通性、交通標注/交通燈、人行橫道、道路幾何特征、其他更多語義信息。大家可以看下左邊這張圖,對里面的每一條路,也就是路級別,我們已經(jīng)精細到每條車道,包括直行的車道,左轉(zhuǎn)的車道,也包括周邊的一些幾何信息,總體上你會發(fā)現(xiàn)高精地圖上的信息要比傳統(tǒng)地圖大很多。
高精地圖在自動駕駛里有很多應(yīng)用,我們先看一個應(yīng)用場景:在自動駕駛里有感知系統(tǒng),那一個典型的應(yīng)用是我們會在地圖里面描述紅綠燈的位置,自動駕駛車輛到達路口后,可以根據(jù)當(dāng)前的位置,去正確的識別當(dāng)前的紅綠燈到底是紅色還是綠色,左邊我們可以看到是一個普通的場景,但是右邊這種特殊的場景有幾十個紅綠燈(現(xiàn)實情況基本不存在, 只是用來舉個例子),對人來講也很難去知道在哪個路口應(yīng)該去看哪個紅綠燈,那如果我們在離線地圖上能夠把上面的信息驗證準確的話,對自動駕駛的安全性、可靠性來說是起到很大幫助的。
我們再來看下決策規(guī)劃,剛才提到的一個典型場景,你需要知道一個全局的路徑信息,包括變道所需要的必要信息,那對右邊來說,這里主要是強調(diào)綠化帶,我們這里提供的信息,前面有提到過叫做語義信息,我們?yōu)槭裁匆诘貓D里包括這些語義信息呢?如果自動駕駛車輛可以提前知道旁邊是綠化帶,那么他可以幫助自動駕駛車輛做一些先驗的決策,他可以知道在那個時間段不會有人或者車直接從對向車道穿過來。所以從準確性來講他可以得到很大的提升,對性能來說也會有很大的提升,因為你不需要過多關(guān)心對面車道的物體,很明顯你的計算就會少,你會發(fā)現(xiàn)整個先驗信息對決策來說必不可少,并且是非常關(guān)鍵的。
我們再來看下我們當(dāng)前整體用到的 Pipeline,分為以下幾個環(huán)節(jié):
數(shù)據(jù)收集,地圖信息的采集
數(shù)據(jù)清洗/聚合
自動化識別,把地圖里所需要的必要信息處理出來,包括車道線、紅綠燈、十字路口等等各種信息
人工檢查/標注,現(xiàn)有的算法我們還做不到100%的自動抽取,所以還會加入人工檢查和標注的環(huán)節(jié)
后處理和驗證,整個數(shù)據(jù)出來之后,我們需要有后處理和驗證,因為數(shù)據(jù)出來之后怎么樣去保證你提供的信息是準確的,這是我們需要解決的問題,因為不能單靠人或者高成本的方式來驗證道路信息是否準確,假設(shè)一個紅綠燈位置標錯了,或者自動識別錯了,那可能會導(dǎo)致你在路測過程中會出現(xiàn)一些安全隱患,所以整個驗證環(huán)節(jié)占有很重要的部分
Release,整個驗證完之后,我們會進行 Data Release 數(shù)據(jù)的發(fā)布,數(shù)據(jù)會納入統(tǒng)一的管理中,每一版 release 的地圖的質(zhì)量已經(jīng)得到比較好的驗證
這是一個常規(guī)的發(fā)布流程。現(xiàn)實中整個路網(wǎng)結(jié)構(gòu)是不斷往外擴張的,且周圍環(huán)境會有變化,所以我們也會有增量的更新。
前面簡單介紹了整個 HD Road Graph 的 Pipeline,我們來看下 HD Road Graph 里面遇到的問題:
成本
厘米級別的精度:需要各類傳感器(LiDAR、cameras、GNSS/IMU),右邊是蘋果的一個地圖車,大家可以看到上面裝了很多傳感器,很明顯制造一輛高精地圖車輛的話成本非常昂貴
數(shù)據(jù)量:海量存儲資源和計算資源
覆蓋范圍:從局部區(qū)域逐步擴張,從中關(guān)村壹號附近地區(qū),擴張到海淀區(qū),再到北京市,甚至是半個中國,這里面的硬件成本和人力成本等,都會極劇增加
那么如何去解決成本問題?這需要我們在工作中想一些好的方式。
挑戰(zhàn)-復(fù)雜性
第二個是復(fù)雜性帶來的挑戰(zhàn),對于我們整個 Data Model 來說會包含三部分信息:
語義信息,從右邊的圖標志牌來看,你會發(fā)現(xiàn)有很多的交通標記,如何提高準確性,并且盡可能提高覆蓋度
空間信息,右圖中的立交橋是西直門立交橋,我們會發(fā)現(xiàn)通過導(dǎo)航軟件或者老司機的經(jīng)驗都未必能夠在某一條車道上找到準確位置,對我們來說就是如何能夠把整個空間信息描述好,然后集成到地圖中去
時間信息,在北京有一些潮汐街道,早高峰和晚高峰走的方向是不一樣的;對一些公交車道在早高峰的時候只能公交車去跑,自動駕駛車輛是不能跑的,很明顯需要把這些信息包含在地圖里面
這樣的話,決策模塊和感知模塊才能去準確的使用。
挑戰(zhàn)-擴展性
自動駕駛車輛行駛 1KM 會產(chǎn)生GB級別的原始數(shù)據(jù),處理這些數(shù)據(jù)在功能架構(gòu)上會面臨很大的挑戰(zhàn)
更新,從天級別到小時級別再到分鐘級別的更新,整個功能架構(gòu)是不一樣的,比如我需要對北京市地圖做小時級別的更新,到底能不能做到,這需要很多的優(yōu)化功能在里面
挑戰(zhàn)-實時性
交通管制、環(huán)境變化等怎么反饋到 HD Road Graph 上,如果今天某條路修路了,對于人來講我就可以直接繞過這條路,而這種信息怎么去反饋到自動駕駛里呢?是靠人去反饋,還是系統(tǒng)自動去識別,即使反饋之后,怎么實時更新到地圖數(shù)據(jù)里,我們需要打通 offline 到 online 的環(huán)節(jié),及時更新到我們正在運行的自動駕駛車輛里去。
★3D柵格地圖 3D Grid Map
1.3D Grid Map
前面介紹了拓撲地圖的部分,下面介紹我們的3D 柵格地圖(3D Grid Map)。
定義:我們認為一個真實的三維世界可以用一個概率模型來表示。比如像今天這個會場,我們會把他離散化成一個個立體方格,對每個方格里面我們會存儲一個概率,這個概率是說這個空間不為空的概率。
輸入:收集的激光點云數(shù)據(jù)
輸出:3D 網(wǎng)格的占據(jù)概率
用途:
定位,這個稍后會講
靜態(tài)環(huán)境感知,減少工作量,專心識別動態(tài)環(huán)境
這是我們做的一個 3D 柵格地圖,他并不是一個連續(xù)的描述,從數(shù)學(xué)的角度講,已經(jīng)把他離散化,我們會保留他的一些概率值和一些屬性。展現(xiàn)出來的話,他是一個厘米級精度的柵格,從這個圖我們可以很清楚看到周圍的環(huán)境,包括一些樹、建筑之類的。
2.SLAM
那么我們一般會怎么去做高精地圖呢?在傳統(tǒng)上有一個方式叫 SLAM,如果是做這個方向的同學(xué)會比較清楚,但是對于做工程的同學(xué)來講這個概念可能是第一次接觸。他是指運動物體根據(jù)傳感器的信息,一邊計算自身位置,一邊構(gòu)建環(huán)境地圖的過程。目前,SLAM 的應(yīng)用領(lǐng)域主要有機器人、虛擬現(xiàn)實和增強現(xiàn)實。其用途包括傳感器自身的定位,以及后續(xù)的路徑規(guī)劃、場景理解。
我們來看下傳統(tǒng)和自動駕駛 SLAM 的區(qū)別:
傳統(tǒng) SLAM:
2D
視覺傳感器,單靠攝像頭,在某個空間轉(zhuǎn)來轉(zhuǎn)去,然后通過一些算法來建模
沒有 GPS 信息,很多場景在室內(nèi)的話是收集不到 GPS 信息的
生成地圖和定位同時進行
自動駕駛:
3D,他描繪的是一個三維環(huán)境
激光傳感器,我們需要達到比較高的精度,所以我們一般采用激光傳感器
GPS 信息,室外的話我們有個優(yōu)勢就是很多時候我們是有 GPS 信息的
離線處理,最后我們的數(shù)據(jù)不需要在線處理,前面介紹過,在線的話我們有一些場景算法是不能很好的處理,所以我們需要抽取一些信息來做離線的驗證
相比于傳統(tǒng) Slam,我們來看下有哪些問題是需要解決的:
全局 GPS 信息并不總是好的,左下角的圖,大家可以清楚的看到,這個是我們建出的底圖,里面有當(dāng)時車輛的一個行駛軌跡,你會發(fā)現(xiàn)如果根據(jù) GPS 的行駛軌跡的話,車已經(jīng)開到馬路牙子(路肩)上了,跟實際的情況是不一樣的,當(dāng)你拿到這樣一份數(shù)據(jù),你在算法層需要做哪些優(yōu)化,把細節(jié)做好,這是需要我們考慮的一個問題
不同時間段的數(shù)據(jù)如何 align(校準),因為整個地圖的采集不可能是一次就完成的,你可能需要今天采集一次,明天再去采集一次,這就需要我們在算法層面上考慮如何把不同時間段的數(shù)據(jù) align 到一起
去除非靜態(tài)的物體,我們建的是一個概率的模型,對于很多非靜態(tài)的物體我們是不需要保留的,我們只需要保留一些靜態(tài)的物體給感知系統(tǒng)去使用,所以我們在處理完數(shù)據(jù)之后,需要把一些非靜態(tài)的物體去掉
3.Pose Graph
整體上我們可以認為這是一個優(yōu)化問題。如果我們把每一次采集的路線,按照時間去劃分,比如每隔4分鐘采一個點,我們可以得到不同的位置,舉個例子:我們在大廳里走來走去,我現(xiàn)在站在這里,一分鐘后我可能在那里,再繞一圈的話可能站在門口,我們把整個 GPS 得到的位置信息離散化之后,就可以得到一個個點,很明顯我們把當(dāng)時的點所看到的周圍的環(huán)境直接拼起來,就可能得到一個三維的地圖,因為每個點看到的角度都是不一樣的,那我們把不同位置的點都拼起來就可以了。但是直接拼起來會有很多問題,因為原始位置可能跟真實位置有偏差, 所以我們把這些點離散化之后,希望能夠把所有點都調(diào)整到準確的位置,那我們怎么去把最終的結(jié)果求正確?因為對整個圖來說, 除了頂點之外,還有邊,我們希望通過邊的約束把點調(diào)好,邊的約束你可以認為是個相對約束,假設(shè)我知道下個點的準確位置,那么我就可以倒推我這個點的準確位置。就是在有準確的相對位置的基礎(chǔ)上,加上一些比較少的絕對位置,我們直接可以得到一個全局的準確位置。
優(yōu)化目標:我們把整個圖離散化到一個點之后,我們會嘗試建立一些邊的約束,最終我們是希望通過優(yōu)化一些點的位置來滿足邊的約束,最終會轉(zhuǎn)化為一個優(yōu)化問題。
整體的數(shù)學(xué)模型看起來是比較簡單的,但是在整個細節(jié)里面是存在很多問題需要去做優(yōu)化的:
如何選擇頂點,比如是不是毫秒的點都要加進去,GPS 信號不好時的點要不要加進去
如何保證邊的準確性,一個頂點到另一個頂點的相對位置,我要通過什么方式去建立
如何求解非線性優(yōu)化,圖建好之后如何去做非線性的優(yōu)化
如何評估優(yōu)化效果,是否和真實的環(huán)境是一致的呢?如何評估我們的結(jié)果滿足要求
效率和資源,對于工程來講,數(shù)據(jù)量這么大,怎么去設(shè)計工程算法,能夠保證我們的效率和資源,比如說,是不是需要在算法基礎(chǔ)之上去做一些定制優(yōu)化,用 GPU 或者分布式的計算方式,這都是做工程時需要考慮的問題
上圖右邊其實是一個例子,左邊是原始的圖,有一個物體來回在球面上運動旋轉(zhuǎn),邊與邊之間我們已經(jīng)建立相對約束,最終優(yōu)化完之后,你會發(fā)現(xiàn)整個環(huán)境的重建就變成了一個比較理想、完整的球體,概括來說我們要做的事情就是需要把左邊的圖來變成右邊的圖。
4.ICP
我們前面提到我們要保證邊的約束,那我們怎么知道求出這個約束,業(yè)界用的比較多的傳統(tǒng)的經(jīng)典算法叫做 ICP(Iterative Closest Point algorithm)迭代最近點算法。
舉個例子:左邊是一個紅色的兔子,右邊是一個藍色的兔子,現(xiàn)實中這倆個兔子的位置是一樣的,但現(xiàn)在倆個兔子是不一樣的,說明位置存在偏差。他的輸入是倆組點云 A 和 B,輸出是倆組點云之間在空間上的旋轉(zhuǎn)和平移。
具體算法的思路大致是:找點云集合 A 中的每個點在 B 中的對應(yīng)點,通過求解最佳的剛體變換,不斷的迭代優(yōu)化,最終得到一個收斂解。
5.去除非靜態(tài)障礙物體
概率模型
點云處理,單純的概率模型是不夠的,比如有時候小區(qū)門口經(jīng)常是有車的,但是在某時刻他是開走的,只是恰好在我們采集數(shù)據(jù)的時候這些車都在,所以我們需要依賴離線點云處理
機器學(xué)習(xí),同時也可以利用機器學(xué)習(xí)算法去把非靜態(tài)的物體從地圖里面摳出來
這是一個簡單的對比圖,沒有做處理的話,你會發(fā)現(xiàn)右邊是有一些車的輪廓,當(dāng)從空間上去除之后,會變得比較清晰。
二.定位 Localization
接下來簡單介紹下定位,定位大家都比較熟悉,對于定位系統(tǒng)和傳統(tǒng)定位來說,他的位置和姿態(tài)有如下特點:
厘米級別的精度,需要精確到車在車道線的具體位置離左右邊線幾公分
高頻低延遲,需要毫秒級別的時間延遲,告訴我的車在什么地方,否則會出現(xiàn)安全事故
定位系統(tǒng)的幾種定位方式:
全球?qū)Ш叫l(wèi)星系統(tǒng) Global Navigation Satellite System
特征:
米級別精度
低頻
干擾或者遮擋
解決方法:RTK(Real - time kinematic,實時動態(tài))載波相位差分技術(shù),可以達到厘米級別。
相對定位:慣性測量單元 IMU(Inertial Measurement Unit)
特點:
加速度以及角速度
三個方向的加速度計和三軸的陀螺儀
高頻(通常100HZ)
累積誤差
解決方法:慣性導(dǎo)航系統(tǒng) Inertial Navigation System
點云定位
特點:
魯棒性好,不依賴于 GPS 信息
依賴于先驗地圖,那么這個地圖的準確性和實時性會導(dǎo)致一個定位誤差
弱特征環(huán)境?有些弱特征環(huán)境是需要解決的,比如說在橋上,往前開10米和往后開10米看到的場景都是類似的,對于這類環(huán)境來說,我們?nèi)绾稳フ业綔蚀_位置,這是需要考慮的一個問題
綜合來說,我們單靠單一傳感器是不夠的,所以采取的是多傳感器融合的方案,整體效果是會有更高的精度和更好的魯棒性,然后我們整體上是基于卡爾曼濾波模型。
簡單介紹下卡爾曼濾波(Kalman Filter)模型:
卡爾曼濾波是一種高效率的遞歸濾波器,它能夠從一系列的不完全及包含噪聲的測量中,估計動態(tài)系統(tǒng)的狀態(tài)。
我們把整個當(dāng)時的位置認為是高斯分布,對這個小車來說他大概在某個范圍之內(nèi),在中間的可能性是最大的,然后我們會有個預(yù)測(預(yù)測是根據(jù)自己的運動方程),比如我往前走了10米,他大概在這個位置,你會發(fā)現(xiàn)他的誤差值會變大,因為可能是 IMU 告訴你走了10米,但是傳感器本身也是有誤差的,那同時假設(shè)我有個 GPS,告訴我可能是在藍色的部分,他也是包含一定誤差的,這樣我其實有了倆個位置,那么我就可以把倆者合在一起得到一個比較準確的可信的結(jié)果,整體可以認為卡爾曼濾波是不斷的在更新迭代的,來最終得到一個比較準確的位置。
最終我們定位系統(tǒng)的目標是萬里無憂,對我們的挑戰(zhàn)是更低成本和更苛刻的外部環(huán)境。比如右邊這個圖,大堵車,這時候可能 GPS 不行,堵車堵了幾個小時,走走停停,會導(dǎo)致累積誤差,實時訊號又不好,你可能搜不到,這樣的環(huán)境你會發(fā)現(xiàn),他只能看到周圍的很多車,也沒辦法跟周圍的環(huán)境去做對比,知道自己在哪里,這種情況下,我們到底怎么去得到一個比較準確的定位效果,這需要我們把這些問題都解決好。
-
傳感器
+關(guān)注
關(guān)注
2550文章
51035瀏覽量
753067 -
3D
+關(guān)注
關(guān)注
9文章
2875瀏覽量
107480 -
自動駕駛
+關(guān)注
關(guān)注
784文章
13784瀏覽量
166382
原文標題:高精地圖和定位在自動駕駛的應(yīng)用
文章出處:【微信號:IV_Technology,微信公眾號:智車科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論