1. 程式人生 > >百度Apollo計劃跟蹤:深度解析Apollo無人車感知和定位技術

百度Apollo計劃跟蹤:深度解析Apollo無人車感知和定位技術

有關無人車的定位有兩種,一種稱之為絕對定位,不依賴任何參照物,直接給出無人車相對地球座標或者說WGS84座標系,也就是座標(B,L,H),其中B為緯度,L為經度,H為大地高即是到WGS-84橢球面的高度, WGS-84座標系是美國國防部研製確定的大地座標系,是一種協議地球座標系。 

WGS-84座標系的定義是:原點是地球的質心,空間直角座標系的Z軸指向BIH(1984.0)定義的地極(CTP)方向,即國際協議原點CIO,它由IAU和IUGG共同推薦。X軸指向BIH定義的零度子午面和CTP赤道的交點,Y軸和Z,X軸構成右手座標系。WGS-84橢球採用國際大地測量與地球物理聯合會第17屆大會測量常數推薦值,採用的兩個常用基本幾何引數:  長半軸a=6378137m;扁率f=1:298.257223563。座標系非常複雜,GPS的測量結果與我國的54系或80系座標相差幾十米至一百多米,隨區域不同,差別也不同。

經粗略統計,我國西部相差70米左右,東北部140米左右,南部75米左右,中部45米左右。在中國,國家出於安全的考慮,在地圖釋出和出版的時候,對84座標進行了一次非線性加偏,得到的座標我們稱之為GCJ02座標系。國內許多地圖公司,可能是由於業務的需求,或者是商業競爭的某些原因,在GCJ02座標的基礎上又進行了一次非線性加偏,得到了自己的座標系統。百度就是這麼一家公司。百度在GCJ02的基礎上進行了BD-09二次非線性加偏,得到了自己的百度座標系統。 

傳統的GPS定位精度只有3-7米,我國城市主幹道單一車道寬一般是3.75米,也就是說GPS無法做到車道線級定位。在城市道路或峽谷中,精度會進一步下降。即便是美國及北約國家,民用系統也不可能用GPS獲得亞米級定位。GPS衛星廣播的訊號包括三種訊號分量:載波、測距碼和資料碼。測距碼又分為P碼(精碼)和C/A碼,通常也會把C/A碼叫做民碼,P碼叫軍碼。P碼會再分為明碼和W碼,想要破解是完全不可能的。後來在新一代GPS上老美又提出了專門的M(Military)碼,具體細節仍處於高度保密中,只知道速率為5.115 MHz,碼長未知。北斗的定位精度目前還不如GPS。 

無人車的車道線級絕對定位是個難題,無人車需要更高精度的釐米級定位。日本為解決這個問題,研發準天頂衛星系統(QZSS),在2010年發射了一顆衛星,2017年又陸續發射了3顆衛星,構成了三顆人造衛星透過時間轉移完成全球定位系統區域性功能的衛星擴增系統,今年4月1日將正式商用,配合GPS系統,QZSS可以做到6釐米級定位。QZSS系統的L5訊號頻點也是採用1176.45MHz,而且採用的碼速率與GPS在該頻點的碼速率一樣,都是10.23MHz。意味著晶片廠商在原有支援GPS系統晶片上無需改動硬體,只需在軟體處理上作更改就可以實現對Galileo、QZSS系統的相容,相當於軟體實現上需要多搜尋幾顆導航衛星。幾乎不增加成本,而北斗系統是需要改硬體的,非常麻煩。因為日本國土面積小,4顆衛星就夠了,如果換成中國或美國,可能需要35顆-40顆衛星。 

國內大部分廠家都採用GPS RTK做絕對定位,不過RTK缺點也是很明顯的。RTK確定整週模糊度的可靠性為95~99%,在穩定性方面不及全站儀,這是由於RTK較容易受衛星狀況、天氣狀況、資料鏈傳輸狀況影響的緣故。首先,GPS在中、低緯度地區每天總有兩次盲區(中國一般都是在下午),每次20~30分鐘,盲區時衛星幾何圖形結構強度低,RTK測量很難得到固定解。其次,白天中午,受電離層干擾大,共用衛星數少,因而初始化時間長甚至不能初始化,也就無法進行測量。根據實際經驗,每天中午12點~13點,RTK測量很難得到固定解。再次,依賴GPS訊號,在隧道內和高樓密集區無法使用。 

Apollo的定位技術

先進的無人車方案肯定不能完全基於RTK,百度Apollo系統使用了鐳射雷達、RTK與IMU融合的方案,多種感測器融合加上一個誤差狀態卡爾曼濾波器使得定位精度可以達到5-10釐米,且具備高可靠性和魯棒性,達到了全球頂級水平。市區允許最高時速超過每小時60公里。 

image001.jpg

上圖為百度Apollo自動駕駛感測器、計算單元、控制前的連線圖,計算系統使用臺灣Neousys Nuvo-6108GC工控機,這款工控機使用英特爾雙至強E5-2658 V3 12核CPU。主要用來處理鐳射雷達雲點和影象資料。 

GPS定位和慣性測量單元方面,IMU 為NovAtel IMU-IGM-A1 ,GPS接收機為NovAtelProPak6。鐳射雷達使用的是Velodyne HDL-64E S3,通過乙太網連線工控機,水平視野360°,垂直視野26.9°,水平角度解析度為0.08°,距離精度小於2cm,可探測到120m的汽車或樹木。視覺系統使用Leopard ImagingLI-USB30-AR023ZWDR with 3.0 case,通過USB連線到工控機。使用安森美的200萬畫素1080p感測器AR0230AT和AP0202 ISP。FOV為廣角58度,有效距離大約60-70米。毫米波雷達採用的是Continental ARS408-21,連線至CAN卡。CAN卡為德國ESD CAN-PCIe/402-B4。 

image003.png

上圖為百度無人車定位模組框架,融合了IMU、GNSS和鐳射雷達等感測器(紫色),以及一個預先製作好的定位地圖(黃色)。最上層的是SINS系統,就是Strap-down InertialNavigation。捷聯慣導系統是在平臺式慣導系統基礎上發展而來的,它是一種無框架系統,由三個速率陀螺、三個線加速度計和處理器組成。SINS使用IMU測量得到的加速度和角速度積分得到位置、速度、姿態等,在卡爾曼濾波器的傳播階段作為預測模型;相應地,卡爾曼濾波器會對IMU的加速度和角速度進行矯正,位置、速度和姿態等誤差也反饋給SINS。RTK定位和鐳射雷達點雲定位結果作為卡爾曼濾波器的量測更新。 

image005.png

上圖為百度的鐳射雷達點雲定位地圖。首先要提前製作一幅無人車將要行駛地區的鐳射雷達點雲定位地圖,包含有鐳射雷達強度成像圖和高度分佈圖,這張圖通常是地圖廠家用測繪級鐳射雷達完成的。目前全球絕大多數廠家包括Waymo、福特、通用等都是如此。b為鐳射雷達反射強度成像圖,c為高度分佈圖。這張圖覆蓋範圍3.3*3.1平方公里。 

鐳射點雲定位演算法描述如下:

image007.png

表面上看高精度定位很複雜,實際計算中,耗費的運算資源並不算多,基於鐳射雷達的運算量遠低於基於影象的運算量。這套系統在將來也可以用傳統的汽車級SoC完成,如瑞薩的R-Car H3,恩智浦的I.MX8或S32A258C。成本有望大幅度降低。64線鐳射雷達也有望在未來由flash固態鐳射雷達取代,進而大幅度降低成本。 

百度無人車定位團隊的一篇關於多感測器融合定位的學術論文“Robust and Precise VehicleLocalization based on Multi-sensor Fusion in Diverse City Scenes”已被機器人頂級會議ICRA 2018錄用,初稿可從arXiv上下載。 

Apollo的感知技術

在 Apollo 中感知模組有以下幾個職能:探測目標(是否有障礙物)、對目標分類(障礙物是什麼)、語義分割 (在整幀畫面中將障礙物分類渲染)、目標追蹤 (障礙物追蹤)。

image010.jpg

Apollo 2.0系統使用了多感測器融合的方式做環境感知,攝像頭負責紅綠燈的檢測,毫米波雷達最大的作用是提供目標的運動速度,目標識別主要靠鐳射雷達完成的。 

2016年10月,百度與清華聯合發表了論文Multi-View 3D ObjectDetection Network for Autonomous Driving ,地址https://arxiv.org/pdf/1611.07759.pdf,論文以鐳射雷達與攝像頭融合的方式做目標識別,不過在2017年5月百度發表的論文Vehicle Detection from 3DLidar Using Fully Convolutional Network,地址https://arxiv.org/pdf/1608.07916.pdf,這篇論文裡放棄與攝像頭融合。在2017年10月,加入毫米波雷達融合。 

2017年11月,蘋果發表論文,VoxelNet: End-to-EndLearning for Point Cloud Based 3D Object Detection,也只用鐳射雷達識別目標,並且與百度和清華Multi-View 3D ObjectDetection Network for Autonomous Driving做了對比,顯示出單純用鐳射雷達效果更好。究其原因,鐳射雷達資料處理速度比攝像頭要快,時間同步很有難度,兩者還需要座標統一;其次是攝像頭對光線太敏感,可靠性低,遠距離尤其明顯。百度在Apollo 2.0裡使用了鐳射雷達與毫米波雷達融合的方案。

image012.jpg

鐳射雷達物體識別最大的優點是可以完全排除光線的干擾,無論白天還是黑夜,無論是樹影斑駁的林蔭道,還是光線急劇變化的隧道出口,都沒有問題。其次,鐳射雷達可以輕易獲得深度資訊,而對攝像頭系統來說這非常困難。再次,鐳射雷達的有效距離遠在攝像頭之上,更遠的有效距離等於加大了安全冗餘。最後,鐳射雷達的3D雲點與攝像頭的2D影象,兩者在做深度學習目標識別時,2D影象容易發生透視變形。簡單地說透視變形指的是一個物體及其周圍區域與標準鏡頭中看到的相比完全不同,由於遠近特徵的相對比例變化,發生了彎曲或變形。這是透鏡的固有特性(凸透鏡匯聚光線、凹透鏡發散光線),所以無法消除,只能改善。而3D就不會有這個問題,所以3D影象的深度學習使用的神經網路可以更加簡單一點。 

另外,鐳射雷達也可以識別顏色和車道線。 

無人車領域對目標影象的識別不僅僅是識別,還包括分割和追蹤。分割就是用物體框框出目標。對於2D影象來說,只能用2D框分割出目標,而鐳射雷達影象則可以做到3D框,安全性更高。追蹤則是預測出車輛或行人可能的運動軌跡。 

image014.jpg

很明顯,3D的分割框要比2D的有價值的多,這也是Waymo和百度都用鐳射雷達識別車輛的原因之一。 

目標檢測與識別領域早期用DPM。 2013年11月,目標檢測領域公認的大神Ross Girshick推出R-CNN,2015年4月進化為Fast R-CNN,2015年6月進化為Faster R-CNN,成為今日目標檢測與識別領域公認最好的方法,也是可以完全端對端地實現。 

鐳射雷達的目標檢測與識別也用FasterR-CNN。Faster R-CNN 從2015年底至今已經有接近兩年了,但依舊還是ObjectDetection領域的主流框架之一,雖然後續推出了R-FCN,Mask R-CNN 等改進框架,但基本結構變化不大。同時不乏有SSD,YOLO等新作,但精度上依然以Faster R-CNN為最好。從RCNN到fast RCNN,再到本文的faster RCNN,目標檢測的四個基本步驟(候選區域生成,特徵提取,分類,位置精修)終於被統一到一個深度網路框架之內。所有計算沒有重複,完全在GPU中完成,大大提高了執行速度。  

image015.png

影象語義分割可以說是影象理解的基石性技術,在自動駕駛系統(具體為街景識別與理解,判斷可行駛區域)、無人機應用(著陸點判斷)以及穿戴式裝置應用中舉足輕重。影象是由許多畫素組成,而「語義分割」顧名思義就是將畫素按照影象中表達語義含義的不同進行分組(Grouping)/分割(Segmentation)。語義分割有時會是最難的一部分,因為這要用到NLP自然語言處理領域的技能,而大部分玩CNN的對NLP不甚瞭解。

image017.png

上圖為斯坦福大學的鐳射雷達語義分割流程圖,最後是用3D FC-CRF,也就是全連通條件隨機場,另一種常用的方法是MRF,馬爾科夫隨機場。條件隨機場用於序列標註,資料分割等自然語言處理中,表現出很好的效果。在中文分詞、中文人名識別和歧義消解等任務中都有應用。 

百度的語義分割主要是為了更好地理解交通場景,為行為決策提供依據。低成本的無人駕駛也可以用攝像頭的2D影象做語義分割,為無人車找出可行駛區域,光線良好的情況下可以用這種低成本的方案。 

2018CES展示的Apollo2.0無人車頂部除了鐳射雷達外,新增了兩個攝像頭,一個長焦、一個短焦,主要目的是為了識別道路上的紅綠燈。

自動駕駛訓練資料集

KITTI資料集由德國卡爾斯魯厄理工學院和豐田美國技術研究院聯合創辦的自動駕駛場景下的計算機視覺演算法評測資料集。該資料集用於評測立體影象(stereo),光流(optical flow),視覺測距(visual odometry),3D物體檢測(object detection)和3D跟蹤(tracking)等計算機視覺技術在車載環境下的效能。KITTI包含市區、鄉村和高速公路等場景採集的真實影象資料,每張影象中最多達15輛車和30個行人,還有各種程度的遮擋與截斷。 

image020.jpg

Cityscapes資料集則是由賓士主推,提供無人駕駛環境下的影象分割資料集。用於評估視覺演算法在城區場景語義理解方面的效能。Cityscapes包含50個城市不同場景、不同背景、不同季節的街景,提供5000張精細標註的影象、20000張粗略標註的影象、30類標註物體。 

3月8日,百度正式開放ApolloScape大規模自動駕駛資料集。ApolloScape擁有比Cityscapes等同類資料集大10倍以上的資料量,包括感知、模擬場景、路網資料等數十萬幀逐畫素語義分割標註的高解析度影象資料,進一步涵蓋更復雜的環境、天氣和交通狀況等。ApolloScape資料集涵蓋了更復雜的道路狀況,比如單張影象中最高可達162輛交通工具或80名行人 ,同時開放資料集採用了逐畫素語義分割標註的方式。 

Kitti,Cityscapes和ApolloScape的資料例項對比

image021.png

對我國傳統車廠來說,自建訓練資料集恐怕是最大的難題,與百度合作是最好的選擇。 

3月31日北京《Hello Apollo,自動駕駛公開課》

2018年CES上,百度釋出了Apollo 2.0,搭載了百度Apollo 2.0系統的自動駕駛汽車將擁有簡單城市道路的自動駕駛能力。Apollo 2.0 的釋出,也意味著百度整體的自動駕駛系統被開放出來,其中包括了雲服務平臺、軟體平臺、參考硬體平臺以及參考車輛平臺。 

Apollo自動駕駛公開課第3期,即將於3月31日在北京舉辦,將引導自動駕駛開發者深入應用Apollo2.0。本次公開課邀請了百度自動駕駛事業部的資深工程師,以及Apollo的老使用者,一起與開發者們交流,快速掌握Apollo2.0的最新功能。 

百度自動駕駛事業部資深架構師,負責產品化解決方案的楊凡將介紹Apollo開放平臺簡介、Apollo能力開放簡介、Apollo資源開放與研發迭代新模式、Apollo生態階段性成果。 

百度無人車定位技術負責人,設計並搭建了Apollo多感測器融合定位系統的萬國偉將介紹《Apollo2.0多感測器融合定位模組》。無人車定位技術是自動駕駛領域的基礎技術之一,其難點在於如何保證高精準度和高魯棒性。Apollo2.0的多感測器融合定位模組自適應地使用GNSS、LiDAR及IMU等感測器,在許多有挑戰的場景(例如市區、隧道等)都達到了釐米級定位。萬國偉的演講將分享定位模組的框架,以及各子模組的演算法原理。 

長沙智慧駕駛研究院公司產品部負責人黃英君,從事智慧駕駛方面總體解決方案與產品研發工作,將在沙龍上介紹《Apollo的分散式可擴充套件計算平臺探索》。黃英君的分享主要包括:在 Jetson TX2上進行Docker擴充套件,執行Apollo;在Apollo on Jetson TX2中配置TensorRT和VisionWorks適配,進行視覺演算法優化與加速。 

智行者科技聯合創始人&技術研發部總監李曉飛將在沙龍上分享《低速自動駕駛專用車產品落地之智行者-Apollo合作案例》,主要包括自動駕駛落地場景及應用挑戰、智行者AVOS系統研發、智行者與Apollo的技術合作三個部分。

演講嘉賓簡介

image026.jpg

楊凡:百度自動駕駛事業部資深架構師,負責產品化解決方案。 

演講摘要:Apollo開放平臺簡介、Apollo能力開放簡介、Apollo資源開放與研發迭代新模式、Apollo生態階段性成果。 

image028.jpg

萬國偉:百度無人車定位技術負責人,Apollo 核心演算法技術負責人,設計並搭建了Apollo多感測器融合定位系統。 

演講摘要:無人車定位技術是自動駕駛領域的基礎技術之一,其難點在於如何保證高精準度和高魯棒性。Apollo2.0的多感測器融合定位模組自適應地使用GNSS、LiDAR及IMU等感測器,在許多有挑戰的場景(例如市區、隧道等)都達到了釐米級定位。本次演講將分享定位模組的框架,以及各子模組的演算法原理。 

image030.jpg

黃英君:長沙智慧駕駛研究院公司產品部負責人,從事智慧駕駛方面總體解決方案與產品研發工作,對Apollo的分散式擴充套件方面進行了探索。 

演講摘要:智慧駕駛的技術平臺和系統架構飛速發展,多個廠家都提出了自己的系統架構和解決方案,目前並沒有一個統治性的方案。Apollo集中執行感知、決策、控制模組,對資源、實時性、可靠性需求是不同的,對計算平臺、作業系統、執行環境的要求也各不相同。我們分享將這些模組進行解耦,分散式整合執行在不同的計算平臺和作業系統上,即在一個高可靠的雙機備份低成本平臺上執行決策與控制模組,在多個低成本高效能技術平臺上執行感知模組,實現一個分散式可擴充套件的解決方案。本次分享主要包括:在 Jetson TX2上進行Docker擴充套件,執行Apollo;在Apollo on Jetson TX2中配置TensorRT和VisionWorks適配,進行視覺演算法優化與加速。 

image032.jpg

李曉飛:智行者科技聯合創始人&技術研發部總監。 

演講摘要:風起雲湧,自動駕駛產品落地之路為何困難重重?撲朔迷離,自動駕駛應用場景究竟出路何方?眾志成城,智行者和Apollo如何攜手並進?主要講述自動駕駛落地場景及應用挑戰,智行者AVOS系統研發,智行者與Apollo的技術合作三個部分。