HD Map 高精地圖 – 【知識筆記】

研究專長因為移動測繪技術 (Mobile Mapping System, MMS),而側重在導航定位,但身為測量系畢業的學生,地圖是基礎知識。高精地圖 (HD Map) 近年為了迎合自動駕駛從傳統地圖演化而來,本篇整理自己的理解與比較。

註:本篇 Scope 太大,高精地圖反而不夠深入,未來再補充。

傳統地圖

HD Map 的出現,與測繪技術的變革密不可分,可以參考我介紹 IMU 的文章,內有分享國立成功大學測量及空間資訊學系的影片,有介紹測繪技術的演變。

https://mapostech.com/imu/

古代地圖可以略分為「計里畫方」與「方誌附圖」兩種:前者有比例尺概念,但受限當時技術,繪製困難,數量很少;後者較多,但更傾向是一種示意圖,多基於書面資料與臆測繪製。兩者雖說不同程度上也有角度、距離與高程的概念,但精度都不高。

尤其是「方誌附圖」更多的是體現”相對”的概念,也就是某個地區相對於某個地區的關係,實際距離、方位或面積都不是很精確。圖上看起來一樣遠的地方,實際上路程可能差很多天。所以我們經常看到下面這類古代地圖,與現今我們認知的實況有不小差異。這類測繪技術比較像考古,我也不熟,可以參考本篇的引用資料,或自行上網查詢,資源都很豐富。

沒有衛星 古人如何繪製地圖 不靠科技也能畫精準

古代中國如何繪製地圖?

特別想提一下清代的皇輿全覽圖,是中國歷史上第一個大規模用科學方法繪製的地圖,引進了西方的測繪技術,繪製了10多年!小時候跟爸爸看電視劇「康熙帝國」,整個很震撼!其測繪的方式,已經相當接近於近現代的測量方法,只是受限於儀器設備的精度與性能罷了。

康熙王朝
https://www.youtube.com/watch?v=64Gx3dniVu0

接續前段,這個時期引進的西方技術,包含光學測量設備等(可從上面影片中看到),類似下圖中西元1950年代的水準儀與經緯儀,能夠以光學瞄準及機械結構的方式,進行高程與水平垂直角度的量測,搭配指北針與測距工具,最後將距離、高程、方位等數據繪製到圖紙上,完成較精確的地圖測繪。

內政部國土測繪中心

近現代以測繪儀器的另一個代表是平板儀,同樣能夠描繪方向線,求取距離及高程,並 “直接” 繪製在圖紙上,故而稱為圖解法。從下圖可以看出距離、方位與面積等變得更為精確。

但因為平板儀不是電子儀器,過程需要大量人工描繪與計算,精度雖夠,但依舊耗時耗力,此時繪製地圖仍是成本非常高的工作,類似於戶口普查,往往是數年一度的大工程,覆蓋範圍也不高,多以人口稠密區為優先。

台北地政e博物館

現代地圖

接著電子化的全站儀出現了,透過幾個按鈕,「自動」量測距離、角度甚至計算面積,測量複雜度大減。加上採用光學雷射量測,距離及測角精度很高,計算過程也多數電子化,減少大量人工失誤,因此整體地圖精度又再度提升。

另一方面因為數據的電子化,相應的電腦製圖軟體應運而生,地圖變成是在電腦處理、繪製及編修,最後才以紙面出圖。與繪製紙本再掃描電子圖檔的圖解法相反,故而稱為數值法。因此,電子地圖的概念誕生了,原則上即是由點 (坐標) 、線、面加上其對應屬性的概念為基礎。

AutoDesk

伴隨其他科技的進步,出現了航空攝影測量 (Aerial photogrammetry),可以透過空拍影像的立體量測技術,直接對光學相片或數位影像進行測繪,使得地圖的製作 90% 可以在室內完成(實務上還是需要輔以部分地面量測,提供控制點訊息),同時便捷的進行大面積的地圖測繪。

成大航測與遙測實驗室

攝影測量的介紹可以參考之前的文章:

https://mapostech.com/photogrammetry/

隨著衛星影像的出現,配合航空攝影測量,對全地球的地圖或地形測繪已不再是難事,先前介紹過的 Google 工具 Google Earth,一個數位化的地球,即是一個很好的例證:

https://mapostech.com/ros-gps/

現代導航與路徑規劃 (Navigation and Routing) 的應用,亦隨著基於坐標與屬性概念建立的電子地圖而誕生。在沒有電子地圖的時代,導航即是拿著紙本地圖,配合指北針,與圖上標記的特徵,模糊判斷自己的位置並前往目的地。對於自己詳細的位置與目的地的距離,都只能是很模糊的描述,像是某地的南邊,距離大約三天路程等等。

當使用有坐標概念的電子地圖後,配合 GNSS 等定位技術,就可以導入路徑規劃演算法,例如經典的 A* 與 Dijkstra 算法,計算最短路徑與目標距離等。同時配合道路線段帶有的速限屬性,能夠做到速度警示;搭配地標的坐標,能夠做到附近景點的推播。

此外,地圖在此時已能用來輔助定位演算法,在 GNSS 等定位結果具有誤差漂移時,透過地圖匹配 (Map Matching) 將位置約束在道路上,以消去誤差,最基本的即是線性投影方法,其他更深入的算法這邊就不多介紹。

這種模式即構成常見的導航系統,如車上的導航機。但此時的導航電子地圖,精度大約在10米內,屬於道路級,換言之,地圖無法區分同一道路上的多條車道。同時也不具備更精細的周圍物件,例如欄杆、紅綠燈位置等,以及更詳細的道路連結或交通規則。

HD Map
將偏離道路的紅點投影到路上的黃點,即最簡單的地圖匹配

高精地圖 HD Map

但因為近年自動駕駛技術的發展,前述的導航、定位技術 (GNSS + 道路級地圖匹配),以及導航電子地圖所涵蓋的資訊種類,已不能滿足如 ADAS ISA (Intelligent Speed Assistance) 、iACC (Intelligent Adaptive Cruise Control)、LKA (Lane Keeping Assist) ,甚至 L3 ~ L4 自動駕駛的需求。

地圖需要更準確,且具備更多的物件類型與屬性。例如道路曲率、坡度、紅綠燈號誌,甚至道路周圍的影像與點雲資料庫 (Point Cloud Data, PCD) 。恰好此時移動測繪系統 (Mobile Mapping System, MMS) 也發展成熟,相較於傳統航測的單片幅相機或人工地面量測,MMS 透過搭載精密定位定向系統,以及測繪級光達與更多的相機,採車載動態模式做地面測繪,有效彌補航空攝影測量對於地面物件觀測的不足,同時較人工地面量測方法大幅提升效率,故能夠快速蒐集更多精確的資訊。

因此,高精地圖 HD Map 就出現了。除了資訊的豐富度增加以外,圖資的精準度也提升到 1-20公分的等級,環境影像與 PCD 也能提供除車道以外,另一種的定位匹配對象,大幅強化輔助車輛定位的效益。

OpenDrive 、 Lanelet2 與 NDS (Navigation Data Standards) 是較常見的 HD Map 格式,簡單來說,即是以 xml 格式 (如同 OpenStreetMap OSM 這種電子地圖),階層化的建立高精地圖,如下圖範例:

OpenDrive 使用基於道路的數據結構,通過路段/車道 ( Road Segment / Lane ) 和交匯處 ( Junction ) 來描述道路 (如上圖中紅線),將道路拆解成數種單元物件,逐層向下遞推,最底層是道路組成單元的幾何與其連結關聯。

換言之,OpenDrive 使用離散的網格來表示道路形狀與連接關係。細節不多贅述,可以自行參考官方說明 OpenDrive User Guide

相對於 OpenDrive 從上而下的結構, Lanelet2 則是由下而上。 Lanelet2 使用基於圖形的數據結構,道路元素 (如車道、路口) 之間的關係是通過邊 ( Edge ) 和節點 ( Node ) 來描述的 (如下圖中紅線),透過節點的組合,使用曲線和折線等連續曲線來表示道路形狀。

而這種連續曲線表示法可以更好地捕捉道路的曲線和變化。故某種程度上, Lanelet2 更精細,也更適合自駕車閱讀。細節可以參考 Lanelet2 官方 Git,還提供有路徑規劃等實作函式。

HD Map

NDS 則是歐洲圖資商 Here 主導的格式,我研究不多,但基本上概念大同小異,是從導航機用的電子地圖演變而來。

前述這種 xml 階層式的結構數據,對於自駕軟體來說,是難以直接閱讀並處理的,因此勢必經過一個抽象化或是物件化的程序,來取用這些 xml 中的屬性。在程式中最常以點 ( point / waypoints ) 或是路段 ( section / segment ) 的形式,建立物件結構,以方便程式進行後續的演算。

以自動駕駛模擬器 Carla 為例,其基於 OpenDrive xml 的內容,產生帶屬性的 waypoints (相關 API 結構關聯稍嫌複雜,我自己覺得不是很容易閱讀) ,再基於坐標點模式,開發後續的操作,如導航或自駕定位演算。百度 Apollo 也是基於 OpenDriver 格式,建立相關 API 將地圖訊息物件化,並帶有交通規則等屬性,另外則由第三方像是 Proj4 來提供坐標轉換等,官方說明在這

lanelet2 因為本身是由下而上以節點組成的結構,這個物件化過程就不是特別明顯 (或不太需要),Autoware 軟體 (最大的自駕開源軟體) 即是基於這個格式,關於地圖的操作 API 皆由 lanelet2 project 提供,可以參考官方影片。

https://www.youtube.com/watch?v=cl9m6O4Yt0Y

相同的物件化概念,也可以在 ADASIS 組織訂定的 ADASIS 規範中找到。ADASIS V2 是基於CANBUS 的 Protocol,發布 POSITION Message 、 SEGMENT Message 、 STUB message 與 PROFILE Message 等,延伸出所謂的 ADAS Map , 是現今 ADAS 常用的地圖形式,介於傳統導航電子地圖與高精地圖之間,其在導航電子地圖的基礎上,增加了前述的部分物件與屬性 (例如對 ADAS 較為重要的曲率與坡度),專門供給 ADAS 的需求。

物件化發生在將地圖轉為 ADASIS V2 Protocol的過程,ADASIS 將其取名為 ADAS Horizon Provider。任何格式或階層結構的地圖,經過 ADAS Horizon Provider 轉換為 ADASIS V2 Protocol 後,會變成以 「Path」為主體的形式,Message 會包含路徑規劃後,車輛前方一定範圍內,所有具優先順序的 Path ( SEGMENT ),以及各 Path index 的連結路口 ( STUB ) 及 屬性 ( PROFILE ) 。例如車輛的位置是以相對 Path 起點的 offset 表示,曲率也是透過 Path 起終點坐標與曲率值,內插目標位置的曲率,再進一步做計算應用。

受限於 CANBUS 的傳輸效率,ADASIS V2 無法傳輸更豐富的資訊,更不用說環境影像跟 PCD。最新的 ADASIS V3 則基於乙太網,仰賴高速傳輸,能夠容納更多訊息,使內容愈趨於高精地圖。關於 ADASIS V2 Protocol,因官方文件屬於 Proprietary and Confidential,因此僅提供其他參考資源:

  1. ADASIS Protocol介绍
  2. ADASIS Protocol介绍 (2) 信号解析

HD Map 結語

本篇屬於概略性的介紹,如有錯誤或模糊不清以至於令人誤解的地方,再請不吝指正。未來有機會再針對各細項做主題介紹。

補上台灣高精地圖研究發展中心(我的指導教授)針對這幾種地圖的精度比較:

http://hdmap.geomatics.ncku.edu.tw/qanda/questions3-TW.php

HD Map

網站還整理了許多 QA 科普基礎知識喔!