任帥男,王慶輝
(沈陽化工大學 信息工程學院,遼寧 沈陽 110142)
在智能小車領域,避障技術是智能小車最基本也是比較關鍵的一項技術,涉及嵌入式、傳感器、信息融合、自動控制以及人工智能等多種技術[1].近年來,隨著人工智能技術的不斷發(fā)展,智能控制系統(tǒng)得到了廣泛的應用.神經(jīng)網(wǎng)絡算法是人工智能領域舉足輕重的成員,其發(fā)展融合了多個學科,如心理學、計算機科學、生理學等[2],該算法可以處理難以用模型或規(guī)則描述的過程或系統(tǒng),無需知道控制對象的結構及參數(shù),具有較強的信息融合能力,并且在實際應用中便于硬件實現(xiàn),很適合應用在智能小車的避障領域.現(xiàn)階段一些智能小車雖實現(xiàn)了避障目的,但多數(shù)研究采用攝像頭作為避障傳感器,不僅成本較高,而且適用環(huán)境局限性較強,還有部分研究使用固定安裝位置的傳感器利用傳統(tǒng)算法進行避障處理,魯棒性較差.本研究使用神經(jīng)網(wǎng)絡算法進行深度實踐,將超聲波測距傳感器動態(tài)采集到的數(shù)據(jù)進行融合,不僅達到了精準避障的目的,又具有結構靈活、成本低、魯棒性強、擴展性好等優(yōu)點.
小車的硬件結構實物如圖1所示.
圖1 “搖頭”避障小車硬件平臺
小車主體為兩輪平衡車,兩輪平衡車相對于傳統(tǒng)四輪車轉向靈活,并可實現(xiàn)原地轉向動作,不需要轉向空間,在復雜環(huán)境中避障效果好,適合作為避障小車的載體.傳感器選用超聲波測距模塊,該模塊相比于攝像頭具有成本低廉、性能穩(wěn)定的優(yōu)勢,并且能夠在無光環(huán)境下正常工作.傳統(tǒng)智能避障小車傳感器安裝在固定位置,不但成本大大提高,而且方位固定,有測量死角,可拓展性差[3].該模塊搭載在舵機上與之協(xié)同工作,能夠采集各個方向角的距離信息,具有成本低、位置準確、控制靈活等優(yōu)點.
采樣頻率決定小車避障效果,采樣頻率越高,小車避障效果越好,但是會使小車運行速率降低,占用系統(tǒng)資源,增加運算負擔,采樣頻率太低則會使避障效果變差,甚至導致算法失效,所以選擇合適的采樣頻率尤為重要.
擬定仿真距離單位為毫米,如圖2所示,為了便于仿真驗證,小車看做勻速運行,每運行1 000 mm采樣一次,采樣過程中,舵機從左側平行小車方向為第1個采樣點,帶超聲波測距傳感器旋轉每30°讀取一次距離數(shù)據(jù),直到旋轉到右側平行小車方向為最后一個采樣點為止,一共7個距離信息.在這里,假定超聲波傳感器距離采樣最大值為5 000 mm.采樣結束后,通過神經(jīng)網(wǎng)絡算法輸出相對偏轉角來矯正小車運行方向.
圖2 避障小車采樣方法
BP神經(jīng)網(wǎng)絡是一種單向傳播的多層前向網(wǎng)絡,其基本結構如圖3所示.BP神經(jīng)網(wǎng)絡包括輸入層、隱層和輸出層,上下層之間實現(xiàn)全連接,而每層神經(jīng)元之間無連接[4].
圖3 BP神經(jīng)網(wǎng)絡結構
以小車“搖頭”時采集到的7組距離數(shù)據(jù)為神經(jīng)網(wǎng)絡的輸入,如圖2所示,從0°到180°記做x1、x2、x3、x4、x5、x6、x7.以相對偏轉角即小車下一時刻運動方向與小車現(xiàn)時刻左側平行方向的角度記做α作為神經(jīng)網(wǎng)絡的輸出.最終確立系統(tǒng)神經(jīng)網(wǎng)絡為7輸入1輸出.
神經(jīng)網(wǎng)絡隱層節(jié)點數(shù)對于神經(jīng)網(wǎng)絡至關重要.節(jié)點數(shù)不能太大,也不能太少,太大將增加計算的復雜度,太少則難以訓練神經(jīng)網(wǎng)絡[5].節(jié)點數(shù)的確定一般先通過經(jīng)驗公式生成,然后觀察訓練結果再進行調整.常用的經(jīng)驗公式為[6]
nimplicit=2ninput+1.
式中:nimplicit為隱層神經(jīng)元個數(shù);ninput為輸入神經(jīng)元個數(shù).
BP神經(jīng)網(wǎng)絡是通過學習樣本的輸入對各個鏈接神經(jīng)元的權值進行修正,通過不斷的誤差逆?zhèn)鞑バ拚咕W(wǎng)絡對輸入模式響應的正確率不斷上升,所以提供一組正確合理的訓練樣本尤為重要.如圖4所示,模擬了一個訓練環(huán)境,小車運動軌跡是根據(jù)經(jīng)驗人為繪制,通過該運行軌跡小車能夠由起點無碰撞的到達終點.
以該經(jīng)驗運行軌跡通過2.2節(jié)所介紹的采樣方式統(tǒng)計出來的數(shù)據(jù)為訓練樣本,如表1所示.
圖4 避障小車訓練環(huán)境及經(jīng)驗軌跡
表1 避障小車訓練樣本
為避免不同數(shù)量級的數(shù)據(jù)互相影響,神經(jīng)網(wǎng)絡訓練樣本數(shù)據(jù)需要進行歸一化處理,本系統(tǒng)采用Matlab中的mapminmax函數(shù)對數(shù)據(jù)進行歸一化處理,數(shù)據(jù)存儲在矩陣input和output中.
Matlab中有神經(jīng)網(wǎng)絡工具箱可供使用,工作區(qū)輸入nntool調出神經(jīng)網(wǎng)絡工具箱,將訓練樣本導入工具箱,新建神經(jīng)網(wǎng)絡,選擇BP神經(jīng)網(wǎng)絡,Trainbfg函數(shù)作為訓練函數(shù),Learngdm作為學習函數(shù),性能函數(shù)為MSE,層數(shù)為3層,分別構建隱層為5個節(jié)點、18個節(jié)點以及30個節(jié)點的神經(jīng)網(wǎng)絡,之后分別導入訓練樣本進行訓練,訓練結果如圖5、圖6和圖7所示.通過這3種典型的節(jié)點數(shù)訓練結果對比,5個隱層節(jié)點的神經(jīng)網(wǎng)絡經(jīng)過32個訓練周期才完成訓練,訓練周期較長,最佳驗證性能在第26周期,均方誤差為0.051 009°;30個隱層節(jié)點的神經(jīng)網(wǎng)絡經(jīng)過15個訓練周期完成訓練,最佳驗證性能在第9訓練周期,均方誤差較大,達到了0.252 38°;18個隱層節(jié)點的神經(jīng)網(wǎng)絡僅用7個周期就完成了神經(jīng)網(wǎng)絡的訓練,并且最佳驗證性能在第1個訓練周期,均方誤差較小,為0.017 327°,效果最佳.選擇合適的隱層節(jié)點對系統(tǒng)的訓練結果有很大影響,不能太多,也不能太少,此系統(tǒng)中選擇18個隱層節(jié)點的訓練結果作為小車的神經(jīng)網(wǎng)絡算法.
圖5 5個隱層節(jié)點訓練結果
圖6 18個隱層節(jié)點訓練結果
圖7 30個隱層節(jié)點訓練結果
為驗證算法的可行性,模擬了如圖8所示的仿真環(huán)境,其中不僅變換了障礙物的位置和距離,在小車運行途中還隨機加入了不同形狀的障礙物來模擬非結構化環(huán)境,將小車所處環(huán)境下傳感器采集到的距離數(shù)據(jù)輸入到訓練好的神經(jīng)網(wǎng)絡中進行分析,得到小車的模擬運行軌跡.由圖8可以看出:小車可以從起點無碰撞的安全到達終點,并且選擇的路線較為合理,對障礙物的識別能力較高.
圖8 避障小車在陌生環(huán)境下的運行軌跡
本文以兩輪平衡小車為主體,通過單超聲波傳感器配合舵機協(xié)同工作,使數(shù)據(jù)采集更加靈活多變.訓練樣本簡單易得.利用BP神經(jīng)網(wǎng)絡算法進行數(shù)據(jù)融合,仿真驗證了算法的可行性.此外,本文只列舉了一種采樣方法,在實際應用中可改變采樣方式比如增加采樣頻率,增加采樣角度個數(shù)都可以適應更復雜的非結構化環(huán)境,同時只需要改變神經(jīng)網(wǎng)絡的輸入量和隱層節(jié)點數(shù)便可以完成對小車的算法升級.