孫藝銘 林 雨 范佩升 張 麗
(河南理工大學電氣工程與自動化學院,河南 焦作454000)
在智能車的運動控制中,對其控制系統的穩定性和精度有著較高的要求[1],在賽道路線復雜的情況下,對控制系統的響應速度也有著極高的要求。PID 控制算法結合比例、積分和微分三種環節于一體的控制算法,它是連續系統中技術最為成熟、應用最為廣泛的一種控制算法[2]。因此,在智能車的控制中得到了大量的應用。但同時PID 控制器也存在諸多的缺點,在外界輸入經常變化的情況下表現出響應遲緩的現象,通常要犧牲車輛的體積,將傳感器的前瞻距離提高以補充系統的滯后,但在實際應用中會受到較大限制,若為了滿足應用限制而縮短前瞻,會使傳感器探測距離減少使智能車的運行穩定程度大幅降低。
為此,本文提出一種基于BP 神經網絡的電磁導航控制算法,通過事先訓練得到的網絡模型,可在滿足短前瞻條件下進行精準的控制。
在本文分析的智能車所運行的賽道中,賽道的中心線位置布有一根通有交變電流的導線,其電流大小為100mA,頻率為20kHz。采用高精度電感陣列來識別賽道中心布設的導線所產生的電磁場從而獲得賽道信息。如圖1 所示,我們在車身上設置了兩組傳感器,分別為由5 個電感組成的電感陣列A,由7 個電感組成的電感陣列B,其中電感陣列A 中的5 個電感均位于一條線上且水平等間距分布,距離前輪轉向機構30cm,電感A1-A5 距離為18cm,電感陣列B 中的B1-B5 的排列方式與A的相同,固定在車頭位置(距離前輪轉向機構約5cm),B6 和B7分別置于車身中部兩側,間距18cm。在本文的方法中,在模型訓練階段電感陣列B 用于采集訓練數據,電感陣列A 的作用為采集具有前瞻的賽道信息并使用傳統PID 算法進行導航控制,實現自動數據采集并避免了人工操作的不確定性,因此,在使用神經網絡模型作為智能車的控制系統時,可將電感陣列A 拆除僅使用電感陣列B 以達到短前瞻的要求。

圖1 車模電感排布
傳統的經典PID 控制方法使用長前瞻的電磁傳感器(圖1中電感陣列A)進行采樣,可得到向量Vlong,其維度為傳感器的數量,通過PID 控制器運算得到控制器輸出的控制舵機的轉向角度P,可表示為:

而在條件受限只能使用短前瞻電磁傳感器(即電感陣列B)進行采樣時得到向量Vshort,此時我們無法使用傳統的函數f 求得精準的轉向角度P,那么我們可以創建一個與Vshort與Vlong之間的函數映射,表示為:

則可依舊得到

其中,g(x)是未知的,因此我們對函數f(g(x))進行映射[3],得到新的函數,表示為:

則

此時,f''依舊是未知的。但是對于神經網絡模型而言,只要加以合適的訓練,就可以使這個網絡模型接近于任何函數。因此我們通過使用神經網絡訓練得到一個近似于f'的函數f'',即可使用短前瞻電磁傳感器采樣得到的向量Vshort來得到目標舵機控制角度P,從而實現在短前瞻的情況下智能車能夠達到傳統長前瞻情況下的效果。
2.2.1 算法的控制流程
本文算法控制模型采用三層的BP 神經網絡[4],其中輸入層包含7 個單元,用于輸入電感陣列B 部分的電磁傳感器采樣得到的向量Vshort;中間層由一層神經元數量為140 個使用tanh作為激活函數的隱含層,和另一層神經元數量為10 個、激活函數為ReLU 函數的隱含層構成;輸出僅含有一個神經元,用于輸出一個取值范圍在0~1 之間的值。將該值擴大至-128~127 區間,得到舵機控制角度。
基于這樣的控制模型,本文中的智能車導航控制流程如下:

圖2 智能車導航控制流程
2.2.2 算法的訓練
將車輛放置在包含多種元素的賽道上,如直道,彎道,s 型道路等;通過使用電感陣列A 獲得長前瞻時的賽道信息,使用傳統PID 控制器進行引導車輛前進。在智能車運動的過程中,采集電感陣列B 的數據和PID 控制器計算得到的當前舵機控制參數作為訓練樣本,為了避免因環境因素的干擾,采集數據的過程中對電感采集的數據首先進行歸一化處理,然后縮放至-128~+127 區間內。獲取到訓練數據集后設置學習率a=0.1,Dropout 率為0.25,使用均方差作為損失函數,對神經網絡進行訓練。本文中使用Keras 建立模型并訓練,設定20000 次最大訓練次數,繪制loss 曲線如圖3(a)在前5000 次的訓練中,BP 模型的收斂效果較優,損失迅速下降,但在5000 次之后的收斂較慢,幾乎停滯,不斷訓練至17500 次后達到了一個較優收斂效果,此時loss 為0.001。達到收斂要求后對模型進行驗證測試,如圖3(b),紅色曲線為訓練時輸入的控制角度,藍色曲線為訓練的神經網絡模型輸出的控制角度。

圖3 Loss 曲線及訓練驗證結果
從模型驗證測試中看出兩條曲線基本重合,達到如期的訓練目標。
實驗測試環境如圖4 所示,賽道寬度為45cm,全長45.4m,中心鋪設通有100mA,20kHz 交變電流的導線,實驗中分別測試了車輛在不同前瞻與算法時在1m/s 的速度下的控制效果和車輛在不同的速度在導航中偏移賽道中心的最大距離,測試運行賽道一圈,結果如表1、表2 所示。

圖4 實際賽道與神經網絡進行導航情況

表1 不同的前瞻與算法在1m/s 速度下控制結果

表2 不同的前瞻與算法在運行中偏離中心線的最大值
通過實驗測試數據可以看出使用神經網絡模型在短前瞻傳感器情況下進行導航的效果比使用PID 控制器在長前瞻傳感器條件進行導航的效果相差無幾,并且縮短了傳感器前瞻,提高了短前瞻狀態下的導航性能。但在以2m 的速度運行時在彎道部分車身會發生偏移過度的現象,經過分析后發現其原因在于高速時轉彎產生的向心力[5]造成的車輛需要更大的控制角度,大于了神經網絡模型輸出的控制角度,使得控制強度不足,造成轉向上的偏移。
本文采用BP 神經網絡算法進行智能車的自主導航,不僅實現了替代傳統PID 算法的控制效果,而且可以在保證控制精度的同時減少前瞻長度,減小車輛體積,也避免了因前瞻長易受環境電磁干擾的問題。
對于高速時轉彎時產生的向心力的所導致發生偏移過度的問題,在后續的實驗中,需要將速度因素考慮在內,如何使網絡模型在控制車輛轉向的同時控制車輛運行速度將成為下一步研究的方向。