上周,來自百度資深軟件工程師—Yifei Jiang,在Apollo開發者社群內分享了有關Apollo相對地圖的內容,通過基于人工駕駛路徑的實時地圖生成方案,和相對地圖模塊特點及應用等技術內容,進一步剖析了Apollo相對地圖,讓開發者了解相對地圖在自動駕駛中的使用及實際應用。
錯過社群直播的開發者可以從以下資料回顧干貨內容:
Apollo相對地圖
基于人工駕駛路徑的實時地圖生成
百度資深軟件工程師Yifei Jiang
相對地圖是在Apollo 2.5的時候第一次對外開放。在3.0的時候我們和長沙智能駕駛研究院一起合作研發,對相對地圖進行了功能和架構上的升級。今天我會給大家介紹什么是相對地圖,為什么我們要做相對地圖,以及相對地圖是如何設計和實現的。
本次分享將會從以下四個方面展開:
一、相對地圖的功能及特點
二、指引者的設計思想及在相對地圖中的作用
三、相對地圖在自動駕駛中的使用
四、相對地圖和指引者的設計細節及特點總結
在公眾號內回復“ PPT0731 ”獲取完整PPT
1相對地圖的功能及特點
這是Apollo一個簡單框架圖,在這張圖的底部是規劃和控制模塊,負責車輛行駛軌跡的規劃和執行。這個模塊依賴兩個重要的上游模塊高清地圖和感知。
感知模塊主要提供了動態障礙物的信息,比如車輛,行人及其他障礙物。由于感知模塊加入了視覺感知的能力,該模塊也能夠提供部分實時地圖信息,比如車輛的當前車道線,斑馬線,和紅綠燈停止線。這類信息通過實時計算得到,成本低,但是依賴于路面狀況及標識清晰度。
和實時地圖相對應的是高清地圖模塊提供的靜態地圖信息。相比實時地圖信息,靜態地圖信息是在線下提前收集和處理,這個信息由于是在線下制作,準確度高,信息種類更加豐富細致,而且不依賴于路面狀況,但是制作周期長,成本高。
為了將有不同特點和格式的實時地圖信息和靜態地圖信息更好的結合在一起,同時也為了給規劃和控制模塊提供統一的接口。我們設計和開發了相對地圖模塊。
相對地圖有如下兩個特點:
首先,產生的地圖數據是相對于車的車身坐標系,這也是為什么該模塊被命名為相對地圖;在車身坐標系下,車輛坐標永遠在原點,車頭方向永遠為0。
其次,地圖數據會根據車的位置和朝向的變化實時更新,更新頻率是10Hz。
相對地圖采用車身坐標系,而不是全局坐標系,有兩個原因:
第一,感知模塊的原始數據輸出是基于車身坐標系。采用車身坐標系,我們就不需要把感知的輸出再轉化成全局坐標系。這樣減少了轉化帶來的誤差,也減少了轉化的計算量。
第二,在相對地圖的一些模式下,只能使用車身坐標系,比如在定位不存在或者不準確的時候。為了使相對地圖能夠在所有模式下進行無縫實時切換,我們統一了坐標系到車身坐標系。同時規劃和控制模塊也能夠無感的處理不同的輸入和場景。
不管是基于實時地圖信息還是靜態地圖信息,相對地圖對規劃和控制模塊提供了接口統一的地圖數據。這些地圖數據約束和限制著規劃和控制模塊產生的軌跡和速度。比如,數據中的車道線限制規劃路徑要在左右車道線之間。再比如地圖中的紅綠燈停止線限制車輛在紅燈時不能超過停止線。
這種約束性的地圖信息,使得規劃和控制模塊能夠進行嚴謹而且精確的數學建型,然后進行數學優化,得到最優的規劃結果。但同時也帶來了一系列的問題。
第一,約束信息必須準確而且完整。因為缺失任何一個約束條件都會導致錯誤的規劃。這樣的要求會增加地圖的成本。
第二,每一個約束條件需要標注各種交規相關的屬性,比如,一個車道線,可能是白虛線,也可能是黃實線。不同的交規屬性會影響規劃和控制的輸出。另外每一種約束也可能會有它的物理屬性,比如一個路的邊界可能是一個馬路牙子,也可能是一道鐵柵欄,甚至是一個懸崖。這種物理屬性,也會影響規劃和控制的輸出。這些標注會增加地圖制作標注的復雜性。
第三,現實世界中,不是每一個約束都明顯的存在。比如在路口里面或者老舊的路面,車道線并沒有標示出來。因為約束的完整性要求,我們必須要填補這些缺失,而且在填補時,需要考慮規劃和控制的特性。這樣就增加了地圖制作的難度,也不能和規劃控制進行很好的解偶。
2指引者的設計思想及在相對地圖中的作用
因為約束性地圖信息帶來的上述問題,我們在設計相對地圖的時候一直在考慮,除了對規劃控制提供限制和約束,告訴規劃控制不可以做什么,我們能不能告訴規劃和控制模塊可以做什么,對規劃和控制模塊提出引導——這就是我們提出的引導性的地圖信息。
如上圖所示的一個形象的比喻,約束性地圖信息是就像在地面上擺交通錐,引導性的地圖信息就像為規劃和控制模塊建一個虛擬的鐵軌。
引導性信息有如下優點:
第一,簡化信息量,降低信息成本。因為能做的什么可能性就只有一個或者幾個,遠遠小于不能做什么的信息量。
第二,對約束的依賴很低,不需要收集和標注約束信息。因為引導的信息,已經考慮到了各種限制的影響。
第三,限制性的地圖信息,只對安全進行了限制,舒適性是由規劃和控制在安全的基礎上進行優化。但是引導信息不僅有安全性上的引導,而且有舒適性的引導。
具體到Apollo,引導性地圖信息就是我們引入了的指引線概念。指引線是基于線下收集的人工駕駛路徑生成的虛擬“軌道”, 如上圖的綠色線段所示。
指引線有如下優點:
首先,因為路徑是由人工駕駛產生的,兼顧了安全和舒適性。
其次,指引線的成本低。從人工駕駛路徑到指引線的生成,是一個全自動的過程,不需要任何的人工標注。
另外,整個指引線生成過程,是線下完成的。我們在同一路段,可以結合不同的人,不同場景下收集多段路徑,使得最終的指引線更加優化,減少偏差。
最后,我們可以為不同的車型,產生不同的指引線。比如說,大卡車和小轎車,尤其在拐彎的時候,路徑有很大的區別。這種區別就可以體現在不同的指引線上,同時降低我們對車輛模型的依賴。
為了在Apollo系統中引入指引線,我們加入了一個新的模塊,叫指引者。指引者連接者高清地圖和相對地圖,為相對地圖提供引導信息。 它即可以單獨使用也可以和高清地圖配合使用。這樣相對地圖為規劃和控制不僅可以提供約束,也提供了引導。
根據約束和引導的重要性的不同,相對地圖提供了兩大模式:模式1和模式2。
模式1是以約束為主:在這種模式下,相對地圖接入了指引線和高清地圖數據,為規劃和控制提供了引導和完整的約束。 這樣的模式適用于復雜駕駛場景,比如城市道路。
模式2是以引導為主:這種模式下,相對地圖不依賴高清地圖,只接入實時地圖信息和指引線,為規劃和控制提供了引導和基本約束。這種模式適用簡單駕駛場景。比如高速或者鄉村道路。由于不依賴高清地圖,這種模式下,開發者可以快速和低成本的部署Apollo進行真實道路測試和運營。
3相對地圖在自動駕駛中的使用
下面,我們用一個例子來說明相對地圖是如何應用到實際的路測中。在這個例子中我們將聚焦在模式2,即以引導為主,約束信息是來自感知的實時地圖信息。
上圖是我們在地圖上截取的一個路段。我們假設要在該路段部署自動駕駛。
在部署之前,我們首先要做的是收集人工駕駛軌跡。如上圖所示,紅色的軌跡是我們收集的軌跡數據,這個數據覆蓋了幾乎所有的車道及行車可能。
在實際操作中,可只收集用于無人駕駛的車道。這個收集過程可以由專業的司機專門來收集,駕駛過程中盡量避免換道,一個車道行駛一遍即可。
此外,這個過程也可以由普通用戶眾包完成,這種情況下,由于數據收集中可能存在噪音以及不可控的換道,每個車道需要收集多次行駛路徑。另外眾包的車型也要保證相似。
人工駕駛軌跡收集完成后會被自動轉化成指引線。這個過程是一個全自動的過程,無需任何人工標注。有噪音的數據,以及過于頻繁換道的數據在這個過程中也會被濾掉。
如上圖所示,最終生成的指引線(綠色)以車道為單位,也包含了車道之間的連接,比如掉頭和左右拐彎。以上就是我們部署自動駕駛前的準備工作。
有了指引線之后,我們就可以在該區域開始自動駕駛了。我們假設,車在A點,想要自動駕駛到B點。我們首先向普通導航地圖,比如百度地圖,請求道路級別的routing。
如上圖所示,道路中間的藍色線段,就是我們得到的從A點到B點的道路級別routing。
然后我們拿道路級別的routing去和之前生成的指引線進行匹配,得到A點到B點之間的指引線。
如上圖所示,我們拿到了三條橘黃色的指引線。給出三條指引線是為了給下游的規劃和控制模塊更多的靈活性。
比如,當A點和B點之間有障礙物時,無人車可以切換到相鄰車道繞過障礙物,再切換到和B點相連的車道。為了使規劃和控制模塊更好的執行換道的策略,我們為每一條指引線設置了不同的優先級,橫向越接近終點的指引線優先級越高。
無人車在進行無人駕駛的時候,相對地圖模塊根據指引線和實時車道線實時生成地圖,并以10Hz的頻率進行更新。
在這個過程中,指引線被轉化為車身坐標系,并作為車道中心線;從感知模塊的到的車道線作為車道的左右邊界;以上信息被融合在一起產生相對地圖。
在無人駕駛過程中,相對地圖會有兩種特殊情況。
第一種情況是由于定位不準,指引線暫時不可用。在這種情況下,相對地圖只根據感知的實時車道線來生成地圖信息,無人車可以繼續進行L3級別的無人駕駛,屬于車道保持或者自適應續航控制狀態。
這種情況適用于短暫的定位不準確,比如過隧道或者橋洞,一旦定位恢復,相對地圖會自動切換回正常的指引線+實時車道線模式。
第二種特殊情況是感知無法檢測到車道線,如上圖所示,車輛行駛在路口(或者老舊路面),沒有車道線。這時相對地圖的生成只根據指引線,車道邊界會根據歷史數據進行預測,或者根據左右側指引線進行估算。
從上面的例子,大家可以看出指引線在自動駕駛中起著多種不同的作用:
首先,指引線連提供了車道級別的導航,它接著出發點和目的地,保證無人車能夠達到終點。
第二,指引線會被規劃模塊用作路徑規劃的參考線,為路徑規劃提供安全性和舒適性的引導。
第三,指引線是高清地圖的載體。在進行自動駕駛時,我們無需加載整張高清地圖,而是沿著指引線,加載指引線周邊的高清地圖數據。
最后,指引線還是生成相對地圖的重要數據之一。
4相對地圖和指引者的設計細節及特點總結
下面,我們來看一下生成指引線的模塊,指引者,是如何設計和實現的。
指引者是一個云端服務,如上圖的中間部分所示,指引者有兩個數據庫,一個存放指引線數據,另外一個存放高清地圖數據。除此之外,還有一系列的數據處理及算法功能模塊。為了使指引者能夠提供指引線,我們首先要把線下采集的人工駕駛路徑數據上傳到云端(如圖中步驟1所示)。
指引者會對數據進行一系列的處理,最終生成指引線并存儲在數據庫中。之后,用戶會在Dreamview中選擇目的地發出導航請求(如圖所示步驟2)。
指引者中的導航請求處理器會接受導航請求并轉發給百度地圖API(圖中步驟3),并從百度地圖API得到道路級別的導航(步驟4)。
導航處理器會根據道路級別的導航進行指引線匹配(步驟5)得到指引線。
如果有相應的高清地圖數據存在,指引線會和周邊的高清地圖進行關聯(步驟6)。
最終,指引線會傳回給Dreamview(步驟7)。
Dreamview得到指引線數據后發送給下游模塊,比如預測模塊和規劃模塊。
除了云端服務,我們也提供了一個離線指引者的工具,供開發者在沒有網絡的情況下,或者在私人封閉測試場中使用指引線和相對地圖。這個工具可以把收集到的人工駕駛數據進行一系列的處理包括:路徑抽取,路徑平滑,和指引線產生。
最終把生成的指引線數據發送到 ROS topic “/apollo/navigation”。 這樣相對地圖就可以收到指引線,并產生相對地圖。 關于離線指引者的具體使用發法,大家可以參照我們Github上的文檔,鏈接列在了上圖中。
這個文檔是我們的外部開發者根據他們的實踐經驗總結的,寫的非常詳細。
在上面的使用相對地圖的例子中,我們多次提到百度地圖API。下面為大家總結一下,相對地圖是如何利用和集成百度地圖API,以及這樣的設計帶來的好處。
首先,我們利用百度地圖為用戶提供發送導航請求的界面。如上圖所示,用戶可以在地圖界面中選擇一個目的地,然后點擊左上角的紅色Route按鈕。這樣的一個體驗就像用戶在手機上使用百度地圖導航一樣。
其次,在無人駕駛過程中,我們會把無人車的位置實時顯示在地圖上,為乘客提供當前位置的信息。如上圖所示,百度地圖中間的紅色位置圖標就是無人車的當前位置。
最后,也是最重要的,我們利用百度地圖的導航API為指引者提供了道路級別的導航。這樣的道路級別導航保證了行車線路的準確性,同時也考慮了實時路況,為最終匹配到精確的合理的指引線提供了保障。
上面這張圖總結相對圖和指引者和Apollo中各個模塊之間的關系。這張圖的中間是相對地圖模塊,它依賴于感知,定位和指引線。指引線可以由云端指引線產生,也可以由離線的指引者工具產生。相對地圖會融合各種地圖信息,根據路況條件和輸入數據,工作在不同的模式下。生成的相對地圖數據,會傳給預測和規劃模塊。云端指引線連接著高清地圖和百度地圖API。
最后,總結一下相對地圖的三種工作模式:
圖中的模式1和模式2就是之前提到的指引線+高清地圖方案和指引線+基于感知的實時地圖信息方案。模式0是模式2的一種特例,只依賴于基于感知的實時地圖信息。
首先對于適用場景,模式0由于沒有指引線,適用于短時間的車道保持和巡航。模式1由于有高清地圖信息,適用于復雜的駕駛場景,比如城市道路。模式2由于只有一些基本的實時地圖信息,適用于簡單駕駛場景,比如高速或者鄉村道路。
對于自動駕駛級別,模式0屬于L3級別,模式1屬于L4級別。模式2由于有限的地圖信息,屬于前兩種模式之間。
關于部署成本,由于模式0只依賴于感知算法,沒有線下數據收集的需求,部署成本幾乎為零。模式1由于依賴高清地圖,部署成本高。模式2雖然依賴指引線,但指引線的制作成本低,總體部署成本也偏低。
關于對定位的依賴:由于模式0只使用感知數據,可以完全不依賴定位。模式1和模式2使用指引線或者高清地圖,所以對定位有強依賴。
最后,關于對道路標示的要求,即路面交通線的清晰程度:由于模式0是基于視覺對車道線進行識別,對標示清晰度要求高。其他兩種模式由于有了指引線或者高清地圖作為參考,對道路標示要求低。
以上就是對于相對地圖的介紹和分享。非常感謝大家的參加!更多Apollo相關的技術干貨也可以繼續關注后續的社群分享。
相關學習資料和自動駕駛相關技術內容,大家可以關注【Apollo開發者社區】的微信公眾號來獲取,也可以在Apollo GitHub上提出技術問題與我們互動,歡迎大家溝通交流!
Q&A
1
Q:相對地圖如何擴展成多車道,目前沒有車道線檢測是否也可以實時生成相對地圖,百度地圖的routing API怎么和相對地圖結合的?
A:需要采集多條指引線,每一個車道一條。沒有車道線檢測,也可以只依賴指引線生成相對地圖。在模擬器里的百度地圖的界面上選擇終點,點擊route就可以。前提是云端要有相應路段的指引線。
2
Q:Apollo有一個分支叫mobileeye_radar,為什么已經有十個月沒有更新了?請問是遇到了什么問題呢?
A:這個分支已經合入了master,所以沒有更新。這個分支里的主要更新可參照
https://github.com/ApolloAuto/apollo/tree/mobileye_radar/modules/third_party_perception
3
Q:Flocalization模塊中用于lidar定位的地圖需要rtk提供的高精pose 和對應的lidar數據來生成,鑒于rtk成本較高,請問這里能否用其他方式來提供足夠精度的pose?
A:我們也在探索和開發基于攝像頭/圖像的定位方法,不依賴RTK。
4
Q:使用相對地圖的規劃和使用高精度地圖的規劃有什么區別?使用相對地圖時如何實現變道行駛?
A:規劃是通用的,沒有區別。相對地圖支持多車道,可以在規劃和控制模塊中實現變道行駛。
5
Q:百度API提供的導航地圖、車道線、實時感知的三維場景,這三者的坐標都是經過坐標偏轉加密的嗎?
A:百度API的數據是經過坐標偏轉加密的。車道線和實時感知的數據是基于車身坐標系的。我們在系統中已經做了對齊。對開發者來說是無感的。
-
自動駕駛
+關注
關注
788文章
14174瀏覽量
169229 -
Apollo
+關注
關注
5文章
346瀏覽量
18683
原文標題:社群分享內容 | Apollo相對地圖:基于人工駕駛路徑的實時地圖生成
文章出處:【微信號:Apollo_Developers,微信公眾號:Apollo開發者社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
FPGA在自動駕駛領域有哪些優勢?
自動駕駛真的會來嗎?
3天造出自動駕駛汽車的百度Apollo,背后竟有50多個后臺
硅谷組建團隊、L3產品落地,想法多多的騰訊自動駕駛
自動駕駛汽車的定位技術
如何讓自動駕駛更加安全?
自動駕駛系統設計及應用的相關資料分享
Apollo 2.5推出了基于動態的實時相對地圖的解決方案

相對地圖和導航線在自動駕駛場景中是如何工作的?
Apollo與海航共同打造“小巨人”海航自動駕駛物流車
高精度地圖在自動駕駛中的應用優勢是什么
百度Apollo 5.5自動駕駛平臺發布,新增了什么功能呢
高精自動駕駛中的地圖匹配定位技術

評論