孫藝銘 林 雨 范佩升 張 麗
(河南理工大學(xué)電氣工程與自動(dòng)化學(xué)院,河南 焦作454000)
在智能車的運(yùn)動(dòng)控制中,對(duì)其控制系統(tǒng)的穩(wěn)定性和精度有著較高的要求[1],在賽道路線復(fù)雜的情況下,對(duì)控制系統(tǒng)的響應(yīng)速度也有著極高的要求。PID 控制算法結(jié)合比例、積分和微分三種環(huán)節(jié)于一體的控制算法,它是連續(xù)系統(tǒng)中技術(shù)最為成熟、應(yīng)用最為廣泛的一種控制算法[2]。因此,在智能車的控制中得到了大量的應(yīng)用。但同時(shí)PID 控制器也存在諸多的缺點(diǎn),在外界輸入經(jīng)常變化的情況下表現(xiàn)出響應(yīng)遲緩的現(xiàn)象,通常要犧牲車輛的體積,將傳感器的前瞻距離提高以補(bǔ)充系統(tǒng)的滯后,但在實(shí)際應(yīng)用中會(huì)受到較大限制,若為了滿足應(yīng)用限制而縮短前瞻,會(huì)使傳感器探測(cè)距離減少使智能車的運(yùn)行穩(wěn)定程度大幅降低。
為此,本文提出一種基于BP 神經(jīng)網(wǎng)絡(luò)的電磁導(dǎo)航控制算法,通過事先訓(xùn)練得到的網(wǎng)絡(luò)模型,可在滿足短前瞻條件下進(jìn)行精準(zhǔn)的控制。
在本文分析的智能車所運(yùn)行的賽道中,賽道的中心線位置布有一根通有交變電流的導(dǎo)線,其電流大小為100mA,頻率為20kHz。采用高精度電感陣列來識(shí)別賽道中心布設(shè)的導(dǎo)線所產(chǎn)生的電磁場(chǎng)從而獲得賽道信息。如圖1 所示,我們?cè)谲嚿砩显O(shè)置了兩組傳感器,分別為由5 個(gè)電感組成的電感陣列A,由7 個(gè)電感組成的電感陣列B,其中電感陣列A 中的5 個(gè)電感均位于一條線上且水平等間距分布,距離前輪轉(zhuǎn)向機(jī)構(gòu)30cm,電感A1-A5 距離為18cm,電感陣列B 中的B1-B5 的排列方式與A的相同,固定在車頭位置(距離前輪轉(zhuǎn)向機(jī)構(gòu)約5cm),B6 和B7分別置于車身中部?jī)蓚?cè),間距18cm。在本文的方法中,在模型訓(xùn)練階段電感陣列B 用于采集訓(xùn)練數(shù)據(jù),電感陣列A 的作用為采集具有前瞻的賽道信息并使用傳統(tǒng)PID 算法進(jìn)行導(dǎo)航控制,實(shí)現(xiàn)自動(dòng)數(shù)據(jù)采集并避免了人工操作的不確定性,因此,在使用神經(jīng)網(wǎng)絡(luò)模型作為智能車的控制系統(tǒng)時(shí),可將電感陣列A 拆除僅使用電感陣列B 以達(dá)到短前瞻的要求。
圖1 車模電感排布
傳統(tǒng)的經(jīng)典PID 控制方法使用長(zhǎng)前瞻的電磁傳感器(圖1中電感陣列A)進(jìn)行采樣,可得到向量Vlong,其維度為傳感器的數(shù)量,通過PID 控制器運(yùn)算得到控制器輸出的控制舵機(jī)的轉(zhuǎn)向角度P,可表示為:
而在條件受限只能使用短前瞻電磁傳感器(即電感陣列B)進(jìn)行采樣時(shí)得到向量Vshort,此時(shí)我們無法使用傳統(tǒng)的函數(shù)f 求得精準(zhǔn)的轉(zhuǎn)向角度P,那么我們可以創(chuàng)建一個(gè)與Vshort與Vlong之間的函數(shù)映射,表示為:
則可依舊得到
其中,g(x)是未知的,因此我們對(duì)函數(shù)f(g(x))進(jìn)行映射[3],得到新的函數(shù),表示為:
則
此時(shí),f''依舊是未知的。但是對(duì)于神經(jīng)網(wǎng)絡(luò)模型而言,只要加以合適的訓(xùn)練,就可以使這個(gè)網(wǎng)絡(luò)模型接近于任何函數(shù)。因此我們通過使用神經(jīng)網(wǎng)絡(luò)訓(xùn)練得到一個(gè)近似于f'的函數(shù)f'',即可使用短前瞻電磁傳感器采樣得到的向量Vshort來得到目標(biāo)舵機(jī)控制角度P,從而實(shí)現(xiàn)在短前瞻的情況下智能車能夠達(dá)到傳統(tǒng)長(zhǎng)前瞻情況下的效果。
2.2.1 算法的控制流程
本文算法控制模型采用三層的BP 神經(jīng)網(wǎng)絡(luò)[4],其中輸入層包含7 個(gè)單元,用于輸入電感陣列B 部分的電磁傳感器采樣得到的向量Vshort;中間層由一層神經(jīng)元數(shù)量為140 個(gè)使用tanh作為激活函數(shù)的隱含層,和另一層神經(jīng)元數(shù)量為10 個(gè)、激活函數(shù)為ReLU 函數(shù)的隱含層構(gòu)成;輸出僅含有一個(gè)神經(jīng)元,用于輸出一個(gè)取值范圍在0~1 之間的值。將該值擴(kuò)大至-128~127 區(qū)間,得到舵機(jī)控制角度。
基于這樣的控制模型,本文中的智能車導(dǎo)航控制流程如下:
圖2 智能車導(dǎo)航控制流程
2.2.2 算法的訓(xùn)練
將車輛放置在包含多種元素的賽道上,如直道,彎道,s 型道路等;通過使用電感陣列A 獲得長(zhǎng)前瞻時(shí)的賽道信息,使用傳統(tǒng)PID 控制器進(jìn)行引導(dǎo)車輛前進(jìn)。在智能車運(yùn)動(dòng)的過程中,采集電感陣列B 的數(shù)據(jù)和PID 控制器計(jì)算得到的當(dāng)前舵機(jī)控制參數(shù)作為訓(xùn)練樣本,為了避免因環(huán)境因素的干擾,采集數(shù)據(jù)的過程中對(duì)電感采集的數(shù)據(jù)首先進(jìn)行歸一化處理,然后縮放至-128~+127 區(qū)間內(nèi)。獲取到訓(xùn)練數(shù)據(jù)集后設(shè)置學(xué)習(xí)率a=0.1,Dropout 率為0.25,使用均方差作為損失函數(shù),對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練。本文中使用Keras 建立模型并訓(xùn)練,設(shè)定20000 次最大訓(xùn)練次數(shù),繪制loss 曲線如圖3(a)在前5000 次的訓(xùn)練中,BP 模型的收斂效果較優(yōu),損失迅速下降,但在5000 次之后的收斂較慢,幾乎停滯,不斷訓(xùn)練至17500 次后達(dá)到了一個(gè)較優(yōu)收斂效果,此時(shí)loss 為0.001。達(dá)到收斂要求后對(duì)模型進(jìn)行驗(yàn)證測(cè)試,如圖3(b),紅色曲線為訓(xùn)練時(shí)輸入的控制角度,藍(lán)色曲線為訓(xùn)練的神經(jīng)網(wǎng)絡(luò)模型輸出的控制角度。
圖3 Loss 曲線及訓(xùn)練驗(yàn)證結(jié)果
從模型驗(yàn)證測(cè)試中看出兩條曲線基本重合,達(dá)到如期的訓(xùn)練目標(biāo)。
實(shí)驗(yàn)測(cè)試環(huán)境如圖4 所示,賽道寬度為45cm,全長(zhǎng)45.4m,中心鋪設(shè)通有100mA,20kHz 交變電流的導(dǎo)線,實(shí)驗(yàn)中分別測(cè)試了車輛在不同前瞻與算法時(shí)在1m/s 的速度下的控制效果和車輛在不同的速度在導(dǎo)航中偏移賽道中心的最大距離,測(cè)試運(yùn)行賽道一圈,結(jié)果如表1、表2 所示。
圖4 實(shí)際賽道與神經(jīng)網(wǎng)絡(luò)進(jìn)行導(dǎo)航情況
表1 不同的前瞻與算法在1m/s 速度下控制結(jié)果
表2 不同的前瞻與算法在運(yùn)行中偏離中心線的最大值
通過實(shí)驗(yàn)測(cè)試數(shù)據(jù)可以看出使用神經(jīng)網(wǎng)絡(luò)模型在短前瞻傳感器情況下進(jìn)行導(dǎo)航的效果比使用PID 控制器在長(zhǎng)前瞻傳感器條件進(jìn)行導(dǎo)航的效果相差無幾,并且縮短了傳感器前瞻,提高了短前瞻狀態(tài)下的導(dǎo)航性能。但在以2m 的速度運(yùn)行時(shí)在彎道部分車身會(huì)發(fā)生偏移過度的現(xiàn)象,經(jīng)過分析后發(fā)現(xiàn)其原因在于高速時(shí)轉(zhuǎn)彎產(chǎn)生的向心力[5]造成的車輛需要更大的控制角度,大于了神經(jīng)網(wǎng)絡(luò)模型輸出的控制角度,使得控制強(qiáng)度不足,造成轉(zhuǎn)向上的偏移。
本文采用BP 神經(jīng)網(wǎng)絡(luò)算法進(jìn)行智能車的自主導(dǎo)航,不僅實(shí)現(xiàn)了替代傳統(tǒng)PID 算法的控制效果,而且可以在保證控制精度的同時(shí)減少前瞻長(zhǎng)度,減小車輛體積,也避免了因前瞻長(zhǎng)易受環(huán)境電磁干擾的問題。
對(duì)于高速時(shí)轉(zhuǎn)彎時(shí)產(chǎn)生的向心力的所導(dǎo)致發(fā)生偏移過度的問題,在后續(xù)的實(shí)驗(yàn)中,需要將速度因素考慮在內(nèi),如何使網(wǎng)絡(luò)模型在控制車輛轉(zhuǎn)向的同時(shí)控制車輛運(yùn)行速度將成為下一步研究的方向。