神經網絡用于智能車控制的一點心得
說了半天,小車控制算法要解決的問題是: 輸入——>控制模型——>輸出控制參數。
2 WJ本人對神經網絡用于小車控制的一點思考。
(1)不要指望神經網絡的實時性。神經網絡最要命的耗費時間是訓練,神經網絡在車運行時進行一兩次成功的訓練即可。在小車跑直線時通過獲得的數據訓練,因為直線時CPU會有空閑時間。另外,相信大家經常用撥碼開關去選擇多種控制決策,這不失一種方法。但是,這個控制決策是死的,也是事先規(guī)劃好的,必定不能適應新的KT板的各種路徑。
(2)最好用片內FLASH或SD卡,數據的處理是很重要的,數據也非常寶貴的,把數據存起來,傳給PC,OFFLINE時研究神經網絡的算法(有無數種訓練算法),這是其一。其二,訓練好的網絡存在SD卡里,下次如果需要再訓練,從老的網絡開始(一般網絡權值是隨機開始),效率會高很多。
(3)正如數據融合一樣,有決策層和數據層的融合,神經網絡也一樣,有決策層和數據層的運用。由于小車的路徑是連續(xù)的,那么數據層的神經網絡肯定是用得著的。在圖像采集里,一般是40mS采集一次路徑并做控制判決,那么這40mS的時間不夠用怎么辦?大家常用的一種方法是干脆80mS采集一次。我的建議是前60ms采集一次圖像并作控制決策。后20ms運用前4Oms提取的路徑信息并用神網預測路徑的變化,這么一來相當于在20ms的時間里采集了一次圖像??上攵?,效率提高了。
(4)上面是從數據層采用神經網絡,這里講一下從決策層采作神經網絡。舉個例子,假如控制器的輸出-3 -2 -1 0 1 2 3分別代表舵機左偏30,左偏20,左偏10,直行,右偏10,右偏20,右偏30,而小車前7次的控制決策是:直行,右偏10,直行,左偏10,直行,右偏10,直行,(0 1 0 -1 0 1 0 )。。。。,那么第8次的決策通過神網應該就是左偏(-1)。如果實際需要的不是左偏的話,就應該把神網“懲罰”一下。
(5)尋找合適的誤差閾值。小車尋跡不像激光切割,精度要求并不高。其訓練的誤差值可以“商量”的。
(6)神網的訓練數據不是抓到一個就可以的,是要選擇的。但這個選擇也是要耗時間的,如果是在PC上,FCM(模糊聚類)是不錯的選擇。但是MCU是扛不起這個重任的,于是選擇合適的訓練數據和目標數據也是一個重要的研究話題。這里,如何優(yōu)化神網輸入不是重點,略過。
(7)重視歸一化處理和神經網絡訓練算法。這兩點很重要,歸一化可以理解為把(100 45 -67 90)歸一化為(1 0.45 -0.67 0.9),好處是改進數據的規(guī)范性,加快收斂。另外訓練算法的重要性不言而喻,如用梯度下降法訓練法使誤差達到最小,什么是梯度下降法呢?打個比方,你要下山,山前的坡度是30度,山后是懸崖坡度是90度,要下山快,當然是找坡度大的直接跳。這個下山坡度和訓練梯度是同一個含義
(8)個人覺得利用神經網絡進行速度控制有較大優(yōu)勢,比PID控制起來精度會有些缺陷,但速度快。由于摩阻力,小車動力性能,小車驅動性能,電池等原因,需要對速度閉環(huán)控制。假如:小車以單位時間10ms為節(jié)拍,速度從X1m/s->Y1m/s,需要PWM為d1%占空比,速度從X2m/s->Y2m/s,需要PWM為d2%占空比.......速度從Xn m/s->Yn m/s,需要PWM為dn%占空比,那么以(X,Y)為訓練輸入,(D)為訓練輸出,建立神經網絡并訓練,那么建立起PWM和速度控制之間的關系是非常輕易的事。
評論