黃飛璇,華志遠(yuǎn),李全彬
(1.江蘇師范大學(xué) 江蘇圣理工學(xué)院-中俄學(xué)院,江蘇 徐州 221100;2.江蘇師范大學(xué) 物理與電子工程學(xué)院,江蘇 徐州 221100)
在智能車競賽多車組和電磁組的賽道鋪設(shè)有中心電磁引導(dǎo)線。引導(dǎo)線為一條鋪設(shè)在賽道中心線上,直徑為0.1~1.0 mm的漆包線,其中通有20 kHz、100 mA 的交變電流。智能車需要通過電磁感應(yīng)檢測出引導(dǎo)線產(chǎn)生的交變磁場,進(jìn)行循跡和賽道元素識別。由于遠(yuǎn)離磁場時(shí)線圈產(chǎn)生的電動勢差會減小,在高速、長前瞻的情況下,智能車往往會沖出賽道。此外,在遇到一些特殊的賽道元素,如環(huán)島、岔路等,經(jīng)常由于識別速度過慢,導(dǎo)致賽車失控。
對于智能車來說,電磁循跡和元素識別算法將會極大地影響智能車的性能。穩(wěn)定的循跡和精確的識別相互影響、互相依賴。馬巖等人[1]分析了中心引導(dǎo)線圖像特點(diǎn)及前瞻影響,采用Bang-Bang & PID綜合控制方法對智能車行駛速度進(jìn)行控制,其分段控制策略有助于消除調(diào)速抖動,具有很好的參考價(jià)值。孫藝銘等[2]提出一種基于BP神經(jīng)網(wǎng)絡(luò)的電磁導(dǎo)航控制算法,可在滿足短前瞻條件下進(jìn)行精準(zhǔn)地控制,但需要提前訓(xùn)練精確的網(wǎng)絡(luò)模型。楊子義等[3]提出的三電磁方案可以準(zhǔn)確計(jì)算出智能車舵機(jī)的偏角,但是由于忽略了智能車行駛過程中賽道元素對電磁傳感器的影響,在智能車駛過特殊元素時(shí)電磁傳感器會出現(xiàn)一定的偏差,使得循跡會不穩(wěn)定。秦磊等[4]采用歸一化與“差比和”策略對舵機(jī)實(shí)現(xiàn)開環(huán)控制,采用傳統(tǒng)PID控制對電機(jī)進(jìn)行閉環(huán)控制,實(shí)現(xiàn)了智能車的電磁循跡。由于只使用了2個(gè)電感,定位算法比較簡單,傳感器容易出現(xiàn)丟線。朱昌平等[5]提出了一種智能車行駛的控制方案,針對智能車行駛過程中常見的三類問題(控制算法的選擇、車模機(jī)械改裝、電磁傳感器布局)提出了可行的解決方案,但沒有提供一個(gè)對于賽道元素的高精度識別方案。張曉峰等[6]提出的雙電磁方案使偏差曲線成為了一個(gè)單調(diào)函數(shù),由于忽略了電磁本身偏差的影響,導(dǎo)致在兩電感值初始值不同時(shí),循跡會偏于道路一邊?;诖耍疚幕陔p電感循跡與五電感識別,提出了一種簡化的KNN算法,結(jié)合比值法的改進(jìn),使智能車不但能夠穩(wěn)定行駛,在遇到賽道元素時(shí)也能準(zhǔn)確地識別。
K近鄰(K-Nearest Neighbor,KNN)是一種經(jīng)典的有監(jiān)督學(xué)習(xí)方法之一[7]。當(dāng)對測試樣本進(jìn)行分類時(shí),首先通過掃描訓(xùn)練樣本集,找到與該測試樣本最相似的個(gè)訓(xùn)練樣本,根據(jù)這個(gè)樣本的類別,投票確定測試樣本的類別,或通過個(gè)樣本與測試樣本的相似程度進(jìn)行加權(quán)投票。如果需要以測試樣本對應(yīng)每個(gè)類別的概率的形式輸出,可以通過個(gè)樣本中不同類別的樣本數(shù)量分布進(jìn)行估計(jì)。該算法分類器設(shè)計(jì)簡單,沒有顯式的學(xué)習(xí)過程或訓(xùn)練過程,是懶惰學(xué)習(xí)(Lazy Learning)。K近鄰算法既能夠用來解決分類問題,也能夠用來解決回歸問題。當(dāng)對數(shù)據(jù)的分布知之甚少或者沒有任何先驗(yàn)知識時(shí),K近鄰算法是一個(gè)不錯(cuò)的選擇[8]。
在智能車中往往先采集樣本集作為分類依據(jù),n為電感數(shù)量,k為樣本數(shù),即:
當(dāng)采集到電感數(shù)據(jù)時(shí),則為:
Y={y1,y2,...,yn}
然后對采集的數(shù)據(jù)進(jìn)行歐氏幾何距離計(jì)算:
最后將結(jié)果歸于距離最小的那個(gè)類別中。
KNN算法是判斷當(dāng)前樣本與數(shù)據(jù)集中k個(gè)樣本的相似度,如果與k個(gè)樣本中的大多數(shù)屬于同一類別,則該樣本也屬于這個(gè)類別。k值的選擇、距離度量和分類決策規(guī)則是K近鄰算法的三個(gè)基本要素[9-10]。當(dāng)三個(gè)要素確定后,對于任何一個(gè)新的輸入實(shí)例,它所屬的Y值也就確定了。但是在智能車的識別中,需要采集大量的樣本數(shù)據(jù)進(jìn)行訓(xùn)練,三個(gè)要素的計(jì)算會消耗單片機(jī)大量的算力以及內(nèi)存。在傳統(tǒng)KNN算法運(yùn)行時(shí),主程序運(yùn)算速度是20 次/s,占用了近30 KB的內(nèi)存,考慮到單片機(jī)內(nèi)存的限制,傳統(tǒng)的KNN算法并不適用于智能車場景。
為了增強(qiáng)單片機(jī)在賽道元素識別上的算力,節(jié)省內(nèi)存,本文對算法進(jìn)行簡化及改進(jìn)。本文將占用大量內(nèi)存的樣本集改進(jìn)為限定條件以及單一的樣本,然后根據(jù)采集數(shù)據(jù)與樣本的距離進(jìn)行歸類,實(shí)現(xiàn)識別元素的功能。
首先,采集每個(gè)賽道元素的電感特殊點(diǎn),利用采集的數(shù)據(jù)構(gòu)建樣本模板:
M={m1,m2,...,mn}
智能車行駛時(shí)實(shí)時(shí)采集到的數(shù)據(jù)為:
Y={y1,y2,...,yn}
計(jì)算模板值M和實(shí)時(shí)采集數(shù)據(jù)Y之間的距離為:
S2=(m1-y1)2+(m2-y2)2+...+(mn-yn)2
式中n為電感個(gè)數(shù)。當(dāng)距離小于閾值γ時(shí),視為識別到賽道元素。該算法只需要將車子放到想要識別的元素入口處,將采集到的電感值作為模板便可完成該算法的模板設(shè)置,實(shí)現(xiàn)元素的準(zhǔn)確識別。
目前智能車常用的循跡算法為差值法:
ΔE=E1-E2
在歸一化計(jì)算時(shí),偏差值和偏離距離的函數(shù)存在極值點(diǎn),并且在兩極值點(diǎn)外距離與偏差值的關(guān)系變?yōu)樨?fù)相關(guān),導(dǎo)致在高前瞻過急彎時(shí)會沖出賽道。為了解決這個(gè)問題,對電動勢分別開根號,求差值;然后用該差值除以兩者的和,就可以去除極值點(diǎn),使得距離與電勢差在整個(gè)取值范圍內(nèi)都呈正相關(guān),去除了錯(cuò)誤判斷的電磁數(shù)據(jù)處理算法,就是比值法[3],表達(dá)式為:
式中:E1和E2分別為左右電感的感應(yīng)電動勢;Bias為偏差值。
比值法要求左右兩個(gè)電感在中點(diǎn)測量的電動勢值必須相等才能得到準(zhǔn)確的結(jié)果。然而在實(shí)際比賽時(shí),由于場地以及電感質(zhì)量的限制,上述條件很難達(dá)到,以至于最后得到的偏差曲線會向某一邊發(fā)生偏移,這將導(dǎo)致智能車在行駛中向賽道的某一邊偏移,極易沖出彎道和漏檢賽道元素。圖1為實(shí)際測量的比值法偏差Bias和距離x之間的數(shù)據(jù)擬合,可以明顯地看出函數(shù)存在向x負(fù)半軸偏移的狀況。
圖1 比值法偏差Bias與距離x之間的函數(shù)
為了解決上述問題,本文對左右兩個(gè)電感采集到的值進(jìn)行歸一化處理,表達(dá)式為:
為了保證精度,將歸一化的值放大5 000倍,消除了偏移問題。圖2為歸一化后比值法偏差Bias與距離x之間的數(shù)據(jù)擬合,可以發(fā)現(xiàn)圖2中存在的偏移已經(jīng)消除。
圖2 歸一化后比值法偏差Bias與距離x之間的函數(shù)
根據(jù)比賽規(guī)則,本文設(shè)計(jì)了一個(gè)基于STC32的電磁循跡智能車,并使用圖3所示電感排布方案以及圖4所示測試場地。在識別元素的入口進(jìn)行樣本采集,構(gòu)建模板見表1所列。
圖3 電感排列
為了測試小車的穩(wěn)定性和識別率,本文通過調(diào)整速度和更換賽道元素,測試小車在不同速度方案下的穩(wěn)定性,具體數(shù)據(jù)見表2所列??梢钥闯?,本文中提出的循跡識別方案能夠在不同速度、不同元素(環(huán)島、岔道)場景下實(shí)現(xiàn)精準(zhǔn)的元素識別以及穩(wěn)定的循跡。
表2 不同速度不同元素方案下的識別結(jié)果
本文對智能車現(xiàn)有的循跡與識別算法進(jìn)行了改進(jìn),提出了一種更穩(wěn)定、更高效的循跡和元素識別算法。實(shí)驗(yàn)證明,本文方法不但能準(zhǔn)確循跡,還能快速準(zhǔn)確地識別出環(huán)島、岔道等特殊賽道元素,使得智能車的行駛速度更快、更平穩(wěn)。
物聯(lián)網(wǎng)技術(shù)2023年11期