郝齊虹 韓 斌
(江蘇科技大學(xué) 鎮(zhèn)江 212003)
車身預(yù)判和控制是無人駕駛中的關(guān)鍵技術(shù),對自身進行位置預(yù)測并進行行駛控制,首先需獲取自身和周圍障礙物的狀態(tài),然后再結(jié)合相關(guān)算法對自身進行預(yù)測,得到運動軌跡或者修改運動方向[1]。
現(xiàn)在對于車輛預(yù)判主要分為兩種:一種是目標跟蹤預(yù)判,另一種是感應(yīng)障礙物預(yù)判[2]。目標跟蹤預(yù)判是使用定點攝像頭實時獲取的車輛視頻進行目標跟蹤,預(yù)測車輛的運行軌跡。感應(yīng)障礙物預(yù)判是通過車輛上的傳感器,判斷四周的障礙物距離,并根據(jù)距離變化預(yù)判是否有障礙物在當前的運行軌跡上,從而對車輛發(fā)送避讓或等待的信號。目前谷歌和百度無人車使用的都是感應(yīng)障礙物預(yù)判,其中百度無人車1 輛車1 天需要處理超過10T 的數(shù)據(jù)[3]。
本文提出了一種利用車輛自身的傳感器進行車輛預(yù)判和控制的方法,使用輪胎旋轉(zhuǎn)角、轉(zhuǎn)速、當前位置得到車輛狀態(tài),保存車輛的運動信息到數(shù)據(jù)庫,再通過神經(jīng)網(wǎng)絡(luò)與PID 控制結(jié)合的算法對車輛進行預(yù)判,計算使車輛通過目標路徑需要修改的參數(shù),并對車輛進行控制。
目標車輛的信息提取是車輛預(yù)測和控制的前提[4],本文使用的是直接從車輛上的傳感器獲取車輛信息,其中包括行駛速度、輪胎旋轉(zhuǎn)角度、車身旋轉(zhuǎn)角度以及單位時間車輛的位移,對車輛進行控制是對行駛速度和輪胎旋轉(zhuǎn)角度進行修改。
與從視頻流進行目標提取相比,使用車輛上的傳感器信息直接避免了多目標跟蹤問題,利用慣性位置傳感器可以得到需要的所有數(shù)據(jù),荷蘭Xsens公司的MTi-G-700 系列返回的數(shù)據(jù)不僅包括了速度、位移,還包括了加速度、經(jīng)緯度、海拔。
將所得的數(shù)據(jù)進行歸一化處理時,將三方向的速度、位移、加速度僅使用橫向和深向數(shù)據(jù),計算出大小和方向,保留縱向數(shù)據(jù)作為參考車輛是否處于有坡度的路面。將速度的方向記為輪胎的方向,位移的方向記為車身的方向,車身及輪胎的夾角記為輪胎的旋轉(zhuǎn)角度。LSTM 的輸入輸出均為0~1 之間的實數(shù)向量,表1顯示了各數(shù)據(jù)的統(tǒng)一單位。
表1 歸一化后各數(shù)據(jù)單位
本文使用的算法實際上是將LSTM 與PID 結(jié)合,基本思想是利用LSTM 實現(xiàn)車身方向及移動距離預(yù)測,而PID 控制可以利用比例、積分、微分元減少誤差[5],從而在長距離的預(yù)測上,累積的誤差不會影響對車輛的控制。為了實現(xiàn)對無人車的實時控制,也是不斷地從行駛中的無人車獲取數(shù)據(jù),并將真實數(shù)據(jù)輸入模型重新計算對無人車的控制[6]。
為了預(yù)測車輛的運行軌跡建立的模型實際分為預(yù)測位移和預(yù)測下一時刻的車輛狀態(tài)兩個部分。預(yù)測位移部分的輸入層r(t)包括速度大小vt、加速度大小at、速度方向rt、上一時刻位移方向rst-1,輸出層為車輛移動距離dt和當前時刻位移方向rst。預(yù)測車輛狀態(tài)的部分輸入層與預(yù)測位移部分的輸入相同,輸出層為vt+1、at+1、rt+1、rst。
圖1 為本文使用的兩種神經(jīng)網(wǎng)絡(luò)結(jié)合的方法,在模型訓(xùn)練時期,首先輸入無人車的狀態(tài),使用LSTM 神經(jīng)網(wǎng)絡(luò)得到初步的預(yù)測結(jié)果,將初步的預(yù)測結(jié)果和輸入層的數(shù)據(jù)傳輸?shù)絇ID 神經(jīng)元網(wǎng)絡(luò),利用PID 控制中的積分、微分神經(jīng)元對預(yù)測結(jié)果進行精細的調(diào)整[7~8],將預(yù)測結(jié)果發(fā)送到無人車上作為控制的依據(jù),將無人車狀態(tài)反饋給原始輸入,實現(xiàn)監(jiān)督學(xué)習(xí)。
圖1 LSTM與PID控制結(jié)合的方法
使用LSTM 神經(jīng)網(wǎng)絡(luò)而不是其它類型的神經(jīng)網(wǎng)絡(luò)是為了盡量減少車輛信息獲取時的干擾數(shù)據(jù)對模型訓(xùn)練的效果影響。與其他的神經(jīng)網(wǎng)絡(luò)模型相比,LSTM 可以存儲單元狀態(tài)用于決定當前的數(shù)據(jù)是否需要保存。
將LSTM 和PID 結(jié)合可以采用無監(jiān)督學(xué)習(xí)的方式,利用現(xiàn)有的大量經(jīng)驗數(shù)據(jù),確定網(wǎng)絡(luò)權(quán)重初值,再根據(jù)控制效果進行在線學(xué)習(xí)和調(diào)整,使系統(tǒng)具備較好的性能,也能使控制系統(tǒng)保持初始穩(wěn)定,從而達到系統(tǒng)的全向穩(wěn)定[9]。
在數(shù)據(jù)的預(yù)處理過程中,除了要將需要進行訓(xùn)練的數(shù)據(jù)提取出來并做歸一化處理,還需要去除數(shù)據(jù)來源中的干擾數(shù)據(jù),否則在訓(xùn)練模型時輸入的數(shù)據(jù)是帶有噪聲的,很有可能造成“過擬合”的現(xiàn)象,使在之后的控制中會針對預(yù)測出的噪聲進行控制[10~11]。
數(shù)據(jù)中的沖擊就是突然的極大極小值,由于數(shù)據(jù)的歸一化處理使得所有的數(shù)據(jù)都變成0~1 之間的常數(shù),數(shù)據(jù)間的差變小,而且突然的極大值有可能在經(jīng)過處理后是大于1 的常數(shù),所以這一類的噪聲需要在進行數(shù)據(jù)的歸一化處理之前就解決。
進行歸一化處理前的數(shù)據(jù)包括速度、加速度、輪胎方向、車身方向、位移[12]。判斷沖擊點即判斷該點是否是極值點,并且與左右相鄰點相比陡變。
以速度為例,進行沖擊的判斷及處理。以時間為橫坐標,速度為縱坐標作出速度的變化曲線。圖2(a)顯示的是標注曲線中所有的極大值和極小值點,判定條件是當前時間的速度值vt低于相鄰的速度值vt-1、vt+1即為極小值,用“*”標注。極大值的點用“o”標注。圖2(b)顯示的是去除不是沖擊的極大極小值點,判定標準為該點是否為突變。對極小值而言,若左右兩邊的曲線同為下降曲線或同為上升曲線,則該點必為沖擊;若該點與相鄰點連線的斜率均超過相隔一個點的連線的斜率,則該點為沖擊。圖2(c)顯示的是處理后的速度曲線,處理方法就是修改沖擊的值為相鄰時刻兩個值的均值。
對判定為沖擊點的處理辦法是取均值,處理后的點vm大小介于vm-1和vm+1之間,使得該點不再是極值點。相鄰的兩個點以vm-1為例,即使假設(shè)該點為極值點,從該點向后取點,該點與第一、第二個點位于同一條直線上,斜率相同,不滿足判定點陡變的。進行修改的后點不是沖擊,相鄰的兩個點也沒有變成新的沖擊。
圖2 速度的變化曲線
高斯白噪是指噪聲幅度滿足高斯分布,而頻率又是均勻分布的,可以使用多層數(shù)據(jù)平均去高斯白噪聲的方法[13]。在進行模擬去除高斯白噪時,先載入一部分數(shù)據(jù),此處為了顯示效果使用了一部分的速度數(shù)據(jù)。圖3(a)顯示的是該段數(shù)據(jù)添加高斯白噪聲后的波形圖,圖3(b)顯示的是原始的數(shù)據(jù)和去噪后數(shù)據(jù)的波形圖對比。
去除高斯白噪聲的方法是循環(huán)多次向原始數(shù)據(jù)中加入高斯白噪保存為新的數(shù)據(jù),將所有加入噪聲后的數(shù)據(jù)求和并除以循環(huán)次數(shù),這就是平均去高斯白噪聲的方法。因為高斯白噪聲分布均勻,多次加入這樣的噪聲能夠達到均衡的效果,所以可以使用這樣的去噪方法。
從圖3(b)中可以看出原始數(shù)據(jù)和去噪后的數(shù)據(jù)相比,所有的數(shù)值都更大,這是由于加入的噪聲產(chǎn)生的。如圖所示,數(shù)據(jù)越小,去噪后數(shù)據(jù)與原始數(shù)據(jù)更接近,可以利用這一點找到最接近的點的范圍,在以后的歸一化處理時,可以將數(shù)據(jù)處理為該范圍內(nèi)的值進行去噪后再還原成原值進行其他處理。
圖3 添加高斯白噪聲后和原始去噪后數(shù)據(jù)的波形圖對比
在本文中僅使用了一種神經(jīng)元網(wǎng)絡(luò),即PID 神經(jīng)元網(wǎng)絡(luò)。PID 神經(jīng)元網(wǎng)絡(luò)使用的PID 控制和LSTM 神經(jīng)元網(wǎng)絡(luò)結(jié)合,LSTM 實際上是對RNN 的隱層進行了較為復(fù)雜的修改,但是所有的輸入和輸出模式是相同的。
圖4 訓(xùn)練集輸入輸出關(guān)系
該模型的訓(xùn)練集包括了輸入和理想輸出,輸入為t時刻的速度vt、加速度at、速度方向rt、t-1時刻的位移方向rst-1,輸出為t 時刻的位移距離dt和位移方向rst,t+1 時刻的速度vt+1、加速度at+1、速度方向rt+1。所有輸入的都是理想輸出,在模型的訓(xùn)練過程中會不斷產(chǎn)生計算的實際輸出,用兩者的誤差不斷更新模型中的權(quán)重,使實際輸出不斷靠近理想輸出。
算法驗證使用了將xsense 公司的MTi-G-700系列放置在悅達起亞K3車輛上在公路上行駛采集到的數(shù)據(jù),并將數(shù)據(jù)分為了起步、直行、轉(zhuǎn)彎、變道、倒車、停止多種類別。為方便進行數(shù)據(jù)的訓(xùn)練,所以選擇讀取頻率為50Hz。對于車輛的預(yù)測方面使用Python 編輯神經(jīng)網(wǎng)絡(luò)的部分并加以訓(xùn)練得到模型,而控制方面是在把計算獲得的控制數(shù)據(jù)傳輸?shù)侥P椭泻螅瑴y試得到每一步的位移,利用Matlab 將車輛的位置記錄下來作為運動軌跡[14]。
在本文中使用該系統(tǒng)分別進行了使用正常數(shù)據(jù)和分別添加沖擊、高斯白噪聲的數(shù)據(jù)訓(xùn)練模型,在用該模型進行車輛預(yù)測和給定目標位置進行車輛控制的試驗。以下是使用正常數(shù)據(jù)進行訓(xùn)練得到的試驗效果。
圖5 中顯示的為車輛向右變道時預(yù)測的行駛軌跡。從圖中可以看出僅在車輛轉(zhuǎn)向的前期有較明顯的表示,其他時刻的預(yù)測軌跡與實際軌跡的誤差可以忽略不計。該系統(tǒng)可以不斷地預(yù)測和輸入實時數(shù)據(jù),從而更改自己的預(yù)測軌跡,這是在工作的同時進行無監(jiān)督學(xué)習(xí),可以使系統(tǒng)計算更準確[15]。
圖5 車輛變道軌跡預(yù)測
圖6 中的顯示為給定不同的目標位置后,模擬仿真得到的車輛運動軌跡。從圖中可知每一條軌跡都是可以到達目標位置,并且軌跡平滑,可以通過實際操作實現(xiàn),對于速度和方向的控制沒有突然的變化。但是從圖中可以看出,當目標位置在車輛速度的反向并且距離較遠時,控制選擇的路徑是倒車,速度與前進速度相同,既不能保障車輛安全,也超過了車輛倒車的速度極限。
本系統(tǒng)中對于干擾的處理是將突變的點都變?yōu)榉险麄€車輛狀態(tài)變化趨勢的值,使車輛的控制都是漸變的,并且所有的預(yù)測都是與車輛當前的狀態(tài)同時進行的[16]。當預(yù)測與車輛實際行駛有誤差時,會實時修改參考數(shù)據(jù),使預(yù)測向?qū)嶋H靠近。
第4 節(jié)中介紹了該模型對沖擊或者高斯噪聲型干擾作出的處理,經(jīng)過處理后的數(shù)據(jù)可以很好地進行車輛的行駛軌跡預(yù)測工作,證明了該系統(tǒng)具有良好的靠干擾能力。
圖6 控制的軌跡顯示結(jié)果
所有的系統(tǒng)設(shè)計最終目標都是投入到實際應(yīng)用中,本系統(tǒng)應(yīng)當可以應(yīng)用于更多場景,更復(fù)雜的道路環(huán)境。本文采用的算法在模型訓(xùn)練中所有的數(shù)據(jù)都是相對的,是當前時刻與前一時刻汽車狀態(tài)的變化值。所以從理論上來說,不同的車型在同一位置、同一狀態(tài)出發(fā),經(jīng)過相同的控制后,應(yīng)到達相同的位置并且車輛處于相同的狀態(tài)。
本文從汽車正常行駛中獲取數(shù)據(jù)并采用LSTM與PID 控制結(jié)合的方法訓(xùn)練得到模型,該模型可以很好地預(yù)測汽車行駛路線,同時可以在知道目的地后計算需要對車輛進行的一系列控制,并根據(jù)這些控制仿真運行到達目標位置。
由于本文采用的神經(jīng)元網(wǎng)絡(luò)和PID 控制結(jié)合的方法結(jié)構(gòu)復(fù)雜、不能避免神經(jīng)網(wǎng)絡(luò)自身缺陷,所以該算法訓(xùn)練復(fù)雜度高,訓(xùn)練速度慢,若出現(xiàn)了“過擬合”的現(xiàn)象,需要重新訓(xùn)練。在車輛控制方面還存在著問題,輸入的目標位置為當前行駛路線的反向時,預(yù)測的路線沒有包括車輛調(diào)轉(zhuǎn)方向的軌跡,并且在所有預(yù)測軌跡中,對方向進行修改都是在沒有控制車輛速度,不符合實際道路行駛要求,在今后的研究中需要先進行行駛軌跡的計算。