3月31日,我們在北京舉辦了第三期自動駕駛公開課“Apollo2.0自動駕駛平臺—技術(shù)解析與應(yīng)用”,吸引了300多位來自車企、零部件廠商、軟件公司、自動駕駛初創(chuàng)企業(yè)的開發(fā)者參加。
來自百度的資深工程師楊凡、萬國偉及Apollo生態(tài)合作伙伴黃英君、李曉飛做了精彩的分享。從Apollo“云+端”開發(fā)模式及迭代代碼的解析、到Apollo2.0定位技術(shù)及子模塊功能使用、分布式計算平臺解決方案,以及低速自動駕駛落地解決方案做了深入淺出的講解和演示。開發(fā)者爭相提問,現(xiàn)場氣氛非常熱烈。
今天,我們將整理后的公開課視頻和資料分享給大家,沒能到達現(xiàn)場的開發(fā)者可以通過PPT資料來詳細了解課程內(nèi)容。
{ Apollo 2.0 實戰(zhàn)技術(shù)基礎(chǔ) }
百度自動駕駛事業(yè)部資深架構(gòu)師楊凡
非常高興有機會跟大家分享百度Apollo“云和端”的研發(fā)模式,接著幫助大家了解Apollo2.0演示方式的實戰(zhàn)以及車輛與循跡自動駕駛能力的實戰(zhàn);之后是本次公開課的核心部分,障礙物識別和路徑規(guī)劃能力的實戰(zhàn);在此基礎(chǔ)上介紹云端訓(xùn)練平臺訓(xùn)練紅綠燈感知能力,這是使用云端算法來加強自動駕駛能力的實戰(zhàn);最后簡要介紹用云端仿真能力來完成驗證實戰(zhàn)。
現(xiàn)在的AI自動駕駛能力來自云端,所以在云端要采用大量的數(shù)據(jù),進行標注和訓(xùn)練。以紅綠燈為例,來解釋AI的訓(xùn)練過程。一輛車在路上行駛,在安全方面嚴苛的要求,這種要求遠遠超過了對傳統(tǒng)汽車一般性的要求。要完成一套自動駕駛系統(tǒng)的安全性測試,如果利用100輛車,7×24小時的跑,大概要一百年才能夠測試完成。所以絕不是依靠真車來完成自動駕駛測試的,90%的測試工作需要在云端,通過仿真技術(shù)大規(guī)模的驗證實車能力,才能保證它的安全。
正因為要保證自動駕駛的安全是一件長期而艱難的事情,是一個復(fù)雜的系統(tǒng)工程,所以百度自動駕駛采取了開放策略。百度在自動駕駛方面做了長時間的探索,做的越久,就越發(fā)敬畏自動駕駛和汽車產(chǎn)業(yè)。一輛車有上萬個零件組成,自動駕駛更不是一個簡單的產(chǎn)業(yè)環(huán)節(jié),而是一個完整的產(chǎn)業(yè)鏈條,包括主機廠、零部件、通訊、感知、決策和控制系統(tǒng)等廠商。所以我們認為它是一個生態(tài),大家在一個完整的生態(tài)環(huán)境中,找尋自己的位置,合作完成自動駕駛系統(tǒng)的開發(fā)。
所以百度提出了Apollo開放戰(zhàn)略計劃。百度把多年積累的自動駕駛研究成果開放給生態(tài)鏈,讓大家可以共享技術(shù)和數(shù)據(jù),在此基礎(chǔ)上實現(xiàn)資源共享。使用的越多,分享的越多,大家收獲的越多,在生態(tài)里實現(xiàn)共贏。
Apollo技術(shù)框架由4層構(gòu)成。分別是:
? Reference Vehicle Platform(參考車輛平臺,指一輛能夠受電子信號控制的車,我們管它叫線控車)
? Reference Hardware Platform(參考硬件平臺,包含計算單元、GPS/IMU、Camera、激光雷達、毫米波雷達、人機交互設(shè)備、BlackBox等硬件)
? Open Software Platform(開放軟件平臺:包括實時操作系統(tǒng)、承載所有模塊的框架層、高精地圖與定位模塊、感知模塊、決策規(guī)劃模塊、控制模塊)
? Cloud Service Platform(云端服務(wù)平臺:包括高精地圖、模擬駕駛的仿真服務(wù)、數(shù)據(jù)平臺、安全和OTA服務(wù)等)
Apollo 2.0最新開放的模塊包括了Security、Camera、Radar和Black Box,這意味著Apollo平臺開放了云端服務(wù)、服務(wù)平臺、參考硬件平臺以及參考車輛平臺在內(nèi)的四大模塊。Apollo 2.0新開放的安全和OTA升級服務(wù),只允許正確和被保護的數(shù)據(jù)進入車內(nèi),并進一步強化了自定位、感知、規(guī)劃決策和云端方陣等能力。其中Black Box模塊包括了軟件和硬件系統(tǒng),能夠?qū)崿F(xiàn)安全存儲和大容量數(shù)據(jù)集傳輸,可以幫助我們及時發(fā)現(xiàn)異常情況,提升整個平臺的安全可靠性。
硬件方面,增加兩個前向攝像頭(長焦+短焦)主要用于識別紅綠燈,正前方保險杠上方新安裝了毫米波雷達。在Apollo 2.0開放了Camera和Radar的模塊后,整個平臺具備傳感器融合的初步能力,增強了對晝夜簡單城市道路工況的適應(yīng)能力。
在今年的春晚上,百度Apollo開放平臺率百余輛車隊上了港珠澳大橋,并在自動駕駛模式下完成“8”字交叉跑的高難度動作。
那么如何在短時間內(nèi)完成在大橋的自動駕駛demo的適配?先看一下Apollo的目錄結(jié)構(gòu),里面有Docs、Modules、Scripts等子目錄。Modules是Apollo所有模塊的位置;Scripts包括一些常用的操作工具腳本;Third-party涉及到一些官方庫,Tools則包含一些工具。
在Modules中,可以看到Apollo的各個主要模塊。
Apollo采用base class和class factory架構(gòu),具有新模塊、新功能的拓展能力。每一個開發(fā)者或者生態(tài)合作伙伴都可以很容易的把自己的部分添加到Apollo的框架里,從而得到有特色的自動駕駛能力。
主要模塊之間的關(guān)系如下圖所示:
由HD-Map支持的Localization模塊產(chǎn)生地圖和定位信息,整個系統(tǒng)都高精地圖和定位信息為基礎(chǔ);以此為基礎(chǔ),對周邊環(huán)境感知,障礙物的感知;與地圖結(jié)合可以做紅綠燈識別感知;預(yù)測模塊基于感知結(jié)果做障礙物的行為預(yù)測;Planning模塊根據(jù)障礙物預(yù)測的結(jié)果和Routing模塊的信息做路徑和速度的Trajectory決策規(guī)劃;Control模塊根據(jù)Planning的結(jié)果通過CANBUS模塊控制車輛行駛。
Apollo系統(tǒng)是基于ROS平臺的。ROS是大家在機器人領(lǐng)域非常熟悉的平臺,百度和ROS達成了深入合作來降低開發(fā)者的門檻。ROS的特點主要包括完整的開發(fā)工具包,完整的計算調(diào)度模型,還有眾多的調(diào)試工具以及已有的軟件系統(tǒng)等。為了增強ROS在自動駕駛方面的能力,Apollo做了多項定制優(yōu)化,如果在真實車輛上測試自動駕駛,建議開發(fā)者使用Apollo平臺提供的ROS版本。
ROS的通信是基于ROS Topic的,Apollo主要的ROS Topic如圖所示。開發(fā)者可以使用ROS原生工具查看調(diào)試Apollo。
有了這些基礎(chǔ)以后,如何一步一步構(gòu)建自動駕駛?
我們先演示一下沒有實際整車條件下,也可以了解和驗證Apollo的離線演示方式。
至此,就可以在瀏覽器上看到Apollo的DreamView演示。
車輛與循跡駕駛能力實戰(zhàn)
接下來介紹車輛與循跡駕駛能力實戰(zhàn),這個步驟可以驗證線控車和軟硬件集成的基礎(chǔ)能力。如上圖虛線框中所示,車輛循跡主要依靠的就是定位能力和控制能力。
如我們Apollo架構(gòu)中介紹的,車輛平臺需要由車廠來完成線控改裝。在車輛平臺上需要完成硬件設(shè)備的安裝以及工控機配置,具體的安裝方式可見Apollo的安裝指南。在車輛和硬件平臺之上,Apollo提供相應(yīng)的軟件能力支持,比如制動、動力、轉(zhuǎn)向控制以及一些信息交互。
(建議在Wi-Fi環(huán)境下觀看)
開發(fā)者可以通過Vehicle接口來增加自己的車輛,參見:
【https://github.com/ApolloAuto/apollo/blob/master/docs/howto/how_to_add_a_new_vehicle.md】
? 實現(xiàn)新車控制器
? 實現(xiàn)新消息管理器
? 在工廠類中注冊新車
? 更新配置文件:canbus/conf/canbus_conf.pb.txt
CANCard也有很多要求,對小車大車的控制是不一樣的,需要不同的算法。整體模塊具有可插拔、可靈活配置擴展的特性。
? 實現(xiàn)新CAN卡類CanClient
? 在工廠類CanClientFactory中注冊新CAN卡
? 更新配置文件:canbus/proto/can_card_parameter.proto
接下來創(chuàng)建一個控制器,在control_config文件中為新控制器添加配置,注冊新控制器。
在車輛的基礎(chǔ)上,Apollo提供高精度的定位能力,主要是通過多個傳感器的融合定位保證高精度。我們會有另外一個專題講定位技術(shù),這里就不多講了。
之后通過GPS Receiver接口增加車輛:
· 繼承Parse類,實現(xiàn)新GPS接收機的數(shù)據(jù)解析
· 在Parse類為新GPS接收機增加新接口
· 在配置文件config.proto,增加新GPS接收機的數(shù)據(jù)格式
· 為data_parser.cpp中方法 create_parser,增加新接收機的實現(xiàn)邏輯
以上這些都準備好后,就開始做循跡自動駕駛。首先是錄制,在Dreamview中的目錄Quick Record下,單擊Setup以啟動所有模塊并執(zhí)行硬件運行狀況檢查。如果硬件健康檢查通過,單擊 Start 按鈕開始記錄驅(qū)動程序軌跡。到達目的地后,點擊Stop 按鈕停止錄制。
其次是執(zhí)行,在Quick Play下,單擊 Setup 啟動所有模塊并執(zhí)行硬件運行狀況檢查。要確保駕駛員準備好了!點擊 Start按鈕開始自動駕駛。到達目的地后,點擊 Stop 按鈕停止重放錄制的軌跡。
(Apollo 1.0演示)
在這一系列工作完成后,就完成了Apollo 1.0的自動駕駛能力。可以看到,經(jīng)過高精定位能力的輸出,循跡自動駕駛可以完成非常精準的動作,兩車可以非常精準的交錯行駛。
障礙物感知和路徑規(guī)劃能力實戰(zhàn)
在Apollo 2.0里面提供了什么樣的自動駕駛能力? 如上圖虛線框所示,在定位和控制的基礎(chǔ)上,添加了感知和決策規(guī)劃控制,這樣就可以完成車輛的自動駕駛閉環(huán)。
主流的傳感器包括攝像頭、雷達和激光雷達。每一種傳感器都是既有長處也有短板。例如攝像頭對于障礙物分類有很好的表現(xiàn),但想對障礙物速度做準確判斷,攝像頭就很難做到了。
對于雷達(Radar)來說,在距離和速度判斷上有優(yōu)勢,穿透力非常好,但對于障礙物的分類能力,就比較弱了。
激光雷達通過主動發(fā)射能量,依靠回波來檢測,所以對于判斷障礙物的遠近,例如暗光條件下障礙物的狀態(tài)有優(yōu)勢。但是激光雷達目前還非常昂貴。
所以,我們要把這些傳感器融合在一起,發(fā)揮各自所長。
當使用多個傳感器的時候會碰到標定問題。由于傳感器都是高精傳感器,安裝操作很難做到特別精準。為了有效使用多個傳感器,我們需要對車輛上的傳感器完成標定。因為我們在車輛安裝時,很難把安裝做到極精密,通過標定就可以知道安裝的具體誤差,然后通過計算來補償。
LiDAR GNSS標定參考:
? 啟動64線激光雷達以及組合慣導(dǎo)系統(tǒng)。Novatel組合慣導(dǎo)初次上電時需要校準。此時應(yīng)將車在開闊地帶進行直行、左右轉(zhuǎn)彎等操作,直至慣導(dǎo)初始化完成。
? 確認傳感器數(shù)據(jù)的topic均有輸出。
? 標定的地點需要選擇無高樓遮擋、地面平坦、四周有平整的建筑物并且可以進行8字軌跡行駛的地方。
1 | bashlidar_calibration.sh start_record/stop_record |
? 程序會檢測所錄制的bag中是否含有所需的所有topics。檢測通過后,會將bag打包成 lidar_calib_data.tar.gz 文件,內(nèi)容包括錄制的rosbag以及對應(yīng)的MD5校驗和文件。
【 https://console.bce.baidu.com/apollo/calibrator/index/list】
1 | mkdir -pmodules/calibration/data/[CAR_ID]/ |
? 其他標定請參考:
【https://github.com/ApolloAuto/apollo/blob/master/docs/quickstart/apollo_2_0_sensor_calibration_guide_cn.md】
裝好傳感器以后要有感知系統(tǒng),而感知又分很多種,如:障礙物識別、障礙物分類、語義分割、目標跟蹤,我們是怎么做的呢?
在Apollo中,我們以3D障礙物檢測為例,介紹感知的流程。
基于LiDAR的3D障礙物感知,其好處是可以不分晝夜并連續(xù)檢測;我們在框架中使用深度學(xué)習(xí),這樣就可以很精準識別一些傳統(tǒng)規(guī)則并解決很多疑難問題;我們使用了NVIDIA GPU,這樣可以把巨大運算負載放在GPU上完成,從而高效率的進行感知處理。
為了識別一個障礙物,主要步驟是通過高精地圖配置一個ROI過濾器,過濾出我們認為有效的數(shù)據(jù);接著把特征值計算出來,通過CNN來完成每個區(qū)域的Segmentation,這樣就可以有效地識別出物體;通過MinBox,完成障礙物邊框構(gòu)建;最后通過HM對象跟蹤就可以感知到障礙物的軌跡,計算速度。
做三維檢測的時候需要處理激光點云,根據(jù)高精地圖把我們感興趣的部分過濾出來,激光點云做特征化后,導(dǎo)入CNN網(wǎng)絡(luò),通過邊緣識別合成一個一個物體,最后就可以把物體在坐標系中表達出來。通過把不同幀上的物體串聯(lián)在一起,可以完成對物體的追蹤。有了不同幀上的物體軌跡,就可以知道它的位置,它的速度是多少。
在Apollo上有Lidar的檢測,有毫米波的檢測,還有基于圖像的紅綠燈的識別,這些東西如何融合到一起?多傳感器融合,依賴于Perception fusion DAG框架。如上圖所示,通過構(gòu)造算法subnode,并且通過DAG描述連接到一起,開發(fā)者就可以完成定制的多傳感器感知和融合。
如何規(guī)劃一條有效的路徑來自動駕駛?以EM為例,如下圖所示,Planning Structure由ReferenceLine、HD-Map 、EM Planner的幾部分構(gòu)成。
通過DP路徑算法,得到成本最低的可調(diào)路徑。
我們將求解過程離散化。好處是:受道路中心線影響低;成本函數(shù)形式不單一,適應(yīng)復(fù)雜路況;天然適合并行化。解決了decision 的基于規(guī)則優(yōu)化的痛點。另一方面,這一步DP算法的結(jié)果,但并不完美,不是最優(yōu)解,銜接點處形式固定,即使平滑但路線較為僵硬,復(fù)雜情況處理不夠平滑。
如上圖,通過一樣的DP邏輯,我們可以完成s,t坐標系下的DP規(guī)劃。在此基礎(chǔ)上,進一步做QP優(yōu)化和迭代調(diào)整,就可以得到有效的Planning結(jié)果。
最后創(chuàng)建一個Planner:將新的Planner配置添加到modules/planning/conf/planning_config.pb.txt文件中;在module/planning/planning.cc中注冊新的Planner。
“云+端”研發(fā)迭代新模式 Cloud + Vehicles
從上面的自動駕駛開發(fā)過程可以看到,百度Apollo采用了“云+端”研發(fā)迭代新模式,加速自動駕駛汽車研發(fā)效率。百度在自動駕駛研發(fā)中積累海量的數(shù)據(jù),把這些積累的數(shù)據(jù)用云端的服務(wù)器集群高效地生成人工智能的模型,也就是車輛大腦。把汽車大腦更新到車輛上,車輛就被賦予了自動駕駛的能力。
自動駕駛數(shù)據(jù)可以分為四大類:
自動駕駛車輛產(chǎn)生的數(shù)據(jù)首先是原始數(shù)據(jù),主要是傳感器數(shù)據(jù)、車輛自身數(shù)據(jù)、駕駛行為數(shù)據(jù)等。這些數(shù)據(jù)的特點是數(shù)據(jù)量極大、類型多樣、以非結(jié)構(gòu)化半結(jié)構(gòu)化數(shù)據(jù)為主。無論對存儲、傳輸、處理都構(gòu)成比較大的挑戰(zhàn)。
數(shù)據(jù)平臺是百度支撐智能汽車的“云+端”研發(fā)迭代新模式的核心平臺。由數(shù)據(jù)采集與傳輸,自動駕駛數(shù)據(jù)倉庫,自動駕駛計算平臺三個部分構(gòu)成。首先是數(shù)據(jù)采集與傳輸部分。使用Data-Recorder會按Apollo數(shù)據(jù)規(guī)范產(chǎn)生,完整的、精確記錄的數(shù)據(jù)包,可以完成問題復(fù)現(xiàn),也同時完成數(shù)據(jù)積累。通過傳輸接口,可以將數(shù)據(jù)高效地傳輸?shù)竭\營點和云集群中。
接著是自動駕駛數(shù)據(jù)倉庫部分,會將全部海量數(shù)據(jù)成體系地組織在一起,快速搜索,靈活使用,為數(shù)據(jù)流水線和各業(yè)務(wù)應(yīng)用提供數(shù)據(jù)支撐。
自動駕駛計算平臺部分,基于云資源異構(gòu)計算硬件提供超強算力,通過細粒度容器調(diào)度提供多種計算模型,來支撐起各業(yè)務(wù)應(yīng)用。如訓(xùn)練平臺、仿真平臺、車輛標定平臺等等。
為了在深度學(xué)習(xí)中使用數(shù)據(jù),還需要大量標注數(shù)據(jù)。百度標記數(shù)據(jù)集中,主要有紅綠燈數(shù)據(jù)集,障礙物數(shù)據(jù)集(2D、3D),語義分割數(shù)據(jù)集,自由空間數(shù)據(jù)集,行為預(yù)測數(shù)據(jù)集等等。
為了刻畫自動駕駛行為,還需要將數(shù)據(jù)抽象成邏輯數(shù)據(jù)。主要是完美感知數(shù)據(jù),環(huán)境抽象數(shù)據(jù),車輛動力學(xué)模型等。
最后,我們還為仿真構(gòu)建仿真數(shù)據(jù),主要是參數(shù)模糊化數(shù)據(jù),三維重建數(shù)據(jù),互動行為數(shù)據(jù)等。
Apollo開放了6個標注數(shù)據(jù)集:
? 激光點云障礙物檢測分類
提供三維點云標注數(shù)據(jù),標注四類障礙物:行人、機動車、非機動車及其他,可用于障礙物檢測和分類算法的研發(fā)和評測。
? 紅綠燈檢測
提供了常見豎式紅綠燈的圖像數(shù)據(jù)。采集時段為白天,采集天氣覆蓋晴天、陰天和霧天,分辨率為1080P。
? Road Hackers
本數(shù)據(jù)集有兩種主要類型數(shù)據(jù),街景圖像和車輛運動狀態(tài)。街景圖像提供車前圖像,車輛運動狀態(tài)數(shù)據(jù)則包括車輛的當前速度和軌跡曲率。
? 基于圖像的障礙物檢測分類
數(shù)據(jù)采集涵蓋城市道路和高速場景,由人工標注出四大類障礙物:機動車、非機動車、行人及靜態(tài)障礙物,可用于視覺障礙物檢測識別算法的研發(fā)和評測。
? 障礙物軌跡預(yù)測
采樣數(shù)據(jù)來源于多源傳感器的綜合抽象特征,每組數(shù)據(jù)提供62維車輛和道路相關(guān)信息,可用于障礙物行為預(yù)測算法的研發(fā)和評測。
? 場景解析
數(shù)據(jù)包括了上萬幀的高分辨率RGB視頻和與其對應(yīng)的逐像素語義標注,同時,提供了具有語義分割測量級別的稠密點云、緊急情況的立體視頻以及立體全景圖像。
此外,我們還開放了ApolloScape數(shù)據(jù)集,目前規(guī)劃到20萬幀級別,在3月8日已經(jīng)開放了第一批,有8萬幀的數(shù)據(jù)集,是用相機以及激光雷達掃描的場景。
ApolloScape對整個學(xué)術(shù)界都會有比較大的幫助,已經(jīng)公開的數(shù)據(jù)中無論是數(shù)據(jù)本身還是質(zhì)量都有一些特色。我們還跟會在近期發(fā)布一些,希望大家也能參與到整個算法中來。【數(shù)據(jù)集下載:請訪問http://apolloscape.auto】
我們還通過Apollo訓(xùn)練平臺為每一個數(shù)據(jù)集提供類配套的計算能力。訓(xùn)練平臺的特色是:通過Docker+GPU集群,提供與車端的一致硬件計算能力。集成多種框架,提供完整的深度學(xué)習(xí)解決方案。通過交互式可視化結(jié)果分析,方便算法調(diào)試優(yōu)化。
在自動駕駛的算法開發(fā)中,最大的痛點之一就是需要對海量數(shù)據(jù)集,反復(fù)嘗試。通過將深度學(xué)習(xí)算法的研發(fā)流程(開發(fā)、訓(xùn)練、驗證、調(diào)試)在云端實現(xiàn),可以在充分利用云端大量計算資源的同時,將數(shù)據(jù)的流動僅在云端的服務(wù)器內(nèi)完成,從而大幅提高算法研發(fā)效率。具體來說,首先開發(fā)者在本地開發(fā)機中基于Docker開發(fā)算法,并部署依賴環(huán)境。接著將開發(fā)好的環(huán)境推到云端的私有Docker Repository中。
接下來在平臺上挑選數(shù)據(jù)集,發(fā)起訓(xùn)練任務(wù)。Apollo訓(xùn)練平臺的云計算調(diào)度就會將任務(wù)調(diào)度到計算集群上執(zhí)行。這個過程中,在云集群的內(nèi)部,開發(fā)者的程序使用數(shù)據(jù)獲取接口,獲得自動駕駛數(shù)據(jù)倉庫中的數(shù)據(jù)集。最終由業(yè)務(wù)管理框架將執(zhí)行過程、評估的結(jié)果和Model返回給可視化平臺,完成可視化的調(diào)試。
在云上訓(xùn)練出來算法,然后可以把算法運用到車上來,這相當于有無數(shù)輛車來跑,無數(shù)輛車在驗證和優(yōu)化算法。因為云有幾十萬臺服務(wù)器,可支持眾多車輛的驗證。
同時在Apollo開放平臺也有仿真器。這是一個紅綠燈檢測的DEMO算法。SSD: Single Shot MultiBox Detector
【https://arxiv.org/abs/1512.02325】
【https://github.com/weiliu89/caffe/tree/ssd】
每個朋友都可以上去注冊一個帳號來體驗整個流程,有各種各樣的場景,可以看到自己的模型和代碼在仿真器里跑起來。可以看到即使在下雨的狀況下,紅綠燈的識別也很好。
-
自動駕駛
+關(guān)注
關(guān)注
785文章
13932瀏覽量
167018 -
Apollo
+關(guān)注
關(guān)注
5文章
343瀏覽量
18510 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5516瀏覽量
121559
原文標題:自動駕駛公開課 | Apollo“云+端”研發(fā)迭代模式實戰(zhàn)
文章出處:【微信號:Apollo_Developers,微信公眾號:Apollo開發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論