張東愛
(北京大學(xué),北京100871)
得益于計算機計算性能的大幅提高和人工智能的高速發(fā)展,自動駕駛技術(shù)在最近的幾年內(nèi)得到快速的發(fā)展[1]。無論是傳統(tǒng)車企或者大型互聯(lián)網(wǎng)公司都開始布局自動駕駛的研發(fā)。Apollo 是百度公司于2017 年4月推出的開源的自動駕駛軟件平臺,旨在向汽車行業(yè)及自動駕駛領(lǐng)域的合作伙伴提供一個開放、完整、安全的軟件平臺,幫助合作伙伴結(jié)合車輛和硬件系統(tǒng),快速搭建一套完整的自動駕駛系統(tǒng)。截止到2019 年1 月已發(fā)布5 個版本。其中,2018 年4 月發(fā)布的Apollo2.5版本中首次引入了相對地圖的實現(xiàn)方案,因其使用的地圖模式易采集和制作,非常適合于封閉園區(qū)和高速場景的低成本自動駕駛方案。相對地圖的路線長度依賴于車輛運行場景的道路長度,道路過長勢必會導(dǎo)致路線數(shù)據(jù)的加載和刷新的效率低下,進而影響計算平臺的計算效率,可能導(dǎo)致計算平臺無法及時處理傳感器數(shù)據(jù),造成延遲增大,進而影響自動駕駛車輛的安全性和乘坐體驗。因此,本文設(shè)計了一種Apollo 相對地圖的局部加載方案,該方案不依賴于路線長度,能夠保證計算平臺在任何時間點只計算部分的,等長的路線,從而節(jié)省計算資源且保證計算平臺的平穩(wěn)運行。
自動駕駛領(lǐng)域遵循的首要目標是安全[2]。為了讓自動駕駛車輛比人類駕駛車輛更加安全,車輛需要能夠精確地定位,實時地刷新地圖數(shù)據(jù),快速感知到周圍障礙物和障礙物變化,精確預(yù)測障礙物的移動軌跡等。為了達到這個目的,要求車輛的計算平臺能夠低延遲的完成數(shù)據(jù)輸入、算法運算和數(shù)據(jù)輸出等工作。
Apollo 低成本的自動駕駛方案的軟件架構(gòu)可以分為定位、感知、預(yù)測、規(guī)劃、控制、Canbus、相對地圖、人機交互界面等主要模塊。各模塊間數(shù)據(jù)通訊流程如圖1 所示。
在相對地圖的加載方案中,將從車輛當前位置到路線終點的數(shù)據(jù)全部作為前方的路線進行計算,并發(fā)布到下游的計算模塊。這導(dǎo)致所有依賴地圖數(shù)據(jù)的模塊的數(shù)據(jù)計算量隨著路線長度增加而增加。
另外,低成本的自動駕駛方案的計算平臺通常選用安全、小巧且價格相對低廉的嵌入式計算機。但是計算性能卻遠比不上其他昂貴的工控機[3]。
軟件架構(gòu)復(fù)雜,數(shù)據(jù)量大,計算資源緊缺是目前低成本自動駕駛方案的現(xiàn)狀。這可能導(dǎo)致計算平臺無法及時處理數(shù)據(jù),導(dǎo)致車輛的反應(yīng)延遲增大,進而增加自動駕駛的危險系數(shù)和影響乘坐體驗。
圖1 模塊間數(shù)據(jù)通訊流程
在使用Apollo 的相對地圖方案實施自動駕駛的測試前,首先需要確定車輛運行的場景和路線。相對地圖中的地圖數(shù)據(jù)是車輛在人工駕駛的狀態(tài)下錄制的一條數(shù)據(jù)序列,該數(shù)據(jù)序列經(jīng)過平滑處理后作為地圖輸入數(shù)據(jù)傳輸給規(guī)劃模塊,規(guī)劃模塊根據(jù)地圖數(shù)據(jù)和當前車輛位置規(guī)劃出一條車輛可以運行的路線,進而控制車輛的自動駕駛。
在確定運行路線后,首先開啟Apollo 的定位模塊和Canbus 模塊,其中定位模塊用來收集車輛的位置數(shù)據(jù),Canbus 模塊用來收集車輛的底盤狀態(tài)數(shù)據(jù)。然后由人工駕駛車輛在一個車道內(nèi)從起點行駛至終點,為了減少路線的不可控狀態(tài),行駛過程中應(yīng)盡量避免換道。每個車道錄制一遍即可。錄制的數(shù)據(jù)會實時保存到地圖數(shù)據(jù)包中,該數(shù)據(jù)包中記錄了車輛行駛過程中定位的位置數(shù)據(jù)和速度。
地圖數(shù)據(jù)包錄制完畢后,使用Apollo 提供的工具生成相對地圖的指引線數(shù)據(jù)。指引線中包含了之前車輛在人工駕駛狀態(tài)下的位置數(shù)據(jù),以每行作為單位記錄位置數(shù)據(jù),并經(jīng)過了平滑處理,確保點與點之間的平滑過渡。人工駕駛過程中錄入的噪聲數(shù)據(jù),例如車輛的抖動和不規(guī)則換道等,在平滑處理階段會被剔除掉,以確保自動駕駛階段的平穩(wěn)性。生成的地圖數(shù)據(jù)是相對于車的車身坐標系。在車身坐標系下,車輛坐標永遠在原點,車頭方向永遠為0。所以,在地圖上表現(xiàn)出來的指引線和人工駕駛階段的路線是十分吻合的。
在生成了相對地圖方案的指引線數(shù)據(jù)后,可以進行車輛的自動駕駛測試。在Apollo 的相對地圖實現(xiàn)方案中,將指引線數(shù)據(jù)加載進內(nèi)存,以10Hz 的頻率將車輛當前位置到路線終點的地圖數(shù)據(jù)發(fā)送到規(guī)劃模塊,規(guī)劃模塊以地圖數(shù)據(jù)為路線基礎(chǔ),結(jié)合感知模塊感知到的障礙物信息、車道線信息和紅綠燈信息,結(jié)合預(yù)測模塊對移動的障礙物的移動軌跡預(yù)判結(jié)果規(guī)劃出一條可供車輛運行的路線。規(guī)劃出的路線數(shù)據(jù)將發(fā)送給控制模塊,控制模塊根據(jù)路線數(shù)據(jù)和車輛的位置、狀態(tài)計算出車輛運行的方向(方向盤轉(zhuǎn)角)、速度(油門量和剎車量),將控制指令通過Canbus 模塊發(fā)送給車輛底盤,進而驅(qū)動車輛自動的行駛。
地圖數(shù)據(jù)的加載,路線的規(guī)劃,車輛的控制形成了一個車輛自動駕駛的數(shù)據(jù)閉環(huán),確保車輛能夠按照相對地圖的既定路線安全平穩(wěn)的行駛到終點。
計算平臺采用在人工智能領(lǐng)域應(yīng)用廣泛,并且在Apollo 的低成本方案中推薦的一款單模塊計算機:NVIDIA Jetson TX2。其主要性能參數(shù)如圖2 所示。
圖2 NVIDIA Jetson TX2主要性能參數(shù)
測試環(huán)境選擇在封閉園區(qū)內(nèi)200 米的路況進行測試。
以10Hz 的頻率,對200 米的內(nèi)部道路進行測試后,相對地圖方案的主要性能表現(xiàn)詳見表1。
表1
根據(jù)上述的測試數(shù)據(jù)可以看出,CPU 一直處于高負荷運載的狀態(tài)[4-5],導(dǎo)致無法及時地處理傳感器數(shù)據(jù)和檢測車輛的異常狀態(tài),存在較大的安全隱患。同時,測試過程中,乘坐體驗較差,明顯感到車輛無法很快地感知到環(huán)境變化并快速做出反應(yīng)。
其中,相對地圖模塊、規(guī)劃模塊和刷新模塊占用了較多的計算資源,存在很大的優(yōu)化空間[5]。通過對相對地圖模塊、規(guī)劃模塊和刷新模塊的實現(xiàn)分析得知,這三個模塊都強依賴于相對地圖的地圖數(shù)據(jù),地圖數(shù)據(jù)越大則需要處理的數(shù)據(jù)越多,需要處理的時間則越長。所以,減少相對地圖的路線長度會減少需要處理的數(shù)據(jù)量,減輕相對地圖模塊、規(guī)劃模塊和刷新模塊的數(shù)據(jù)計算壓力。
在車輛自動駕駛的數(shù)據(jù)閉環(huán)中,有一個環(huán)節(jié)是將從車輛當前位置到路線終點的地圖數(shù)據(jù)發(fā)送到規(guī)劃模塊。實現(xiàn)方案是讀取指引線數(shù)據(jù)文件的所有行,相對精確地匹配當前車輛位置和指引線中的某一行,將從這一行開始到文件結(jié)尾的所有行作為地圖數(shù)據(jù)發(fā)送到規(guī)劃模塊??紤]對此環(huán)節(jié)進行局部加載的優(yōu)化。即,將從車輛當前位置到車輛前方一段距離的地圖數(shù)據(jù)發(fā)送到規(guī)劃模塊。
實施局部加載的優(yōu)化方案需要額外解決兩個問題。
首先是確定預(yù)加載路線的距離。指引線數(shù)據(jù)文件中記錄的是車輛在人工駕駛的位置數(shù)據(jù),并且已經(jīng)經(jīng)過平滑處理,行與行數(shù)據(jù)之前的方差很小。該位置數(shù)據(jù)無法準確地量化到距離數(shù)據(jù),但是基本上行數(shù)越多表示距離越遠。所以,局部加載的數(shù)據(jù)是從車輛當前位置到前方指引線某些行的地圖數(shù)據(jù)。
其次是使加載長度的配置更加便捷。考慮到不同測試環(huán)境會需要不同的局部加載方案,為了方便用戶的配置和管理,局部加載的行數(shù)配置在配置文件中。
將局部加載的方案應(yīng)用到相對地圖方案中后,以200 米的路況為例,每次刷新前方1500 行的地圖數(shù)據(jù),車輛自動駕駛狀態(tài)下的主要性能表現(xiàn)詳見表2。
表2
可以看出,實施局部加載方案后,模塊的CPU 占用率顯著的降低,CPU 總體的利用率也顯著降低。測試時乘坐體驗也得到很大的改善,車輛能夠做到對周圍環(huán)境的快速感知和反應(yīng)。
本文采用的測試路況環(huán)境為封閉的園區(qū)環(huán)境,是眾多開發(fā)者經(jīng)常采用的測試環(huán)境;軟件架構(gòu)選用了針對低成本園區(qū)方案設(shè)計的相對地圖方案;計算平臺選用支持Apollo 運行的低成本計算平臺NVIDIA Jetson TX2。在該測試條件下,未實施本文探討的優(yōu)化方案前,計算平臺的計算資源幾乎被全部占用,無法繼續(xù)進行有效的開發(fā)和測試。在實施優(yōu)化方案后,顯著節(jié)省了CPU 資源,可以對自動駕駛方案進行更多方面的改進和測試。讀者可以在實施優(yōu)化方案后對自動駕駛的算法,軟件架構(gòu)進行進一步的優(yōu)化。