金政,金宏平
(湖北汽車(chē)工業(yè)學(xué)院,湖北 十堰 442002)
自行小車(chē)懸掛輸送系統(tǒng)是按照預(yù)設(shè)軌道運(yùn)行的空中懸掛輸送系統(tǒng)[1]。傳統(tǒng)自行小車(chē)懸掛輸送系統(tǒng)大多采用行程開(kāi)關(guān)、認(rèn)址片、激光以及條碼帶等方式實(shí)現(xiàn)定位[2-3]。這些方式均能為自行小車(chē)提供較為準(zhǔn)確的定位,但是需要增加相應(yīng)的硬件設(shè)備,對(duì)信號(hào)的傳輸也提出了較高的要求。隨著無(wú)線(xiàn)通信技術(shù)在輸送系統(tǒng)中的應(yīng)用,采用無(wú)線(xiàn)定位技術(shù)實(shí)現(xiàn)自行小車(chē)的定位具有較好的應(yīng)用前景。Zig-Bee 技術(shù)在現(xiàn)代工廠(chǎng)智能化建設(shè)中因其組網(wǎng)方式靈活、響應(yīng)快、成本低、穩(wěn)定性強(qiáng)以及安全性好等優(yōu)勢(shì),能夠?qū)崿F(xiàn)懸掛自行小車(chē)輸送任務(wù)的同時(shí)利用4個(gè)固定位置的錨節(jié)點(diǎn),無(wú)需附加其他設(shè)備即可進(jìn)行自行小車(chē)的無(wú)線(xiàn)定位,為自行小車(chē)懸掛輸送系統(tǒng)提供了新的技術(shù)方案。無(wú)線(xiàn)定位技術(shù)通過(guò)無(wú)線(xiàn)傳感器網(wǎng)絡(luò)(wireless sensor networks,WSN)收集相關(guān)信息,采用合適的定位算法來(lái)實(shí)現(xiàn)定位。1998 年微軟公司為研究室內(nèi)定位,提出的RADAR[4]定位系統(tǒng),通過(guò)采集大量的測(cè)試信號(hào),利用指紋識(shí)別技術(shù)實(shí)現(xiàn)了精確度為2~3 m 的定位。得益于其便捷性及較高的靈活性,基于指紋的無(wú)線(xiàn)定位技術(shù)在近些年得到了廣泛的研究和發(fā)展。Angelos Chatzimichail[5]等針對(duì)接收信號(hào)強(qiáng)度指示(received signal strength indication,RSSI)數(shù)據(jù)采集過(guò)程中數(shù)量有限以及其他信號(hào)干擾的問(wèn)題,引入濾波技術(shù)提高了狹小環(huán)境室內(nèi)定位的精度,為文中數(shù)據(jù)的預(yù)處理提供了思路。Yu[6]等針對(duì)跳動(dòng)量較大的數(shù)據(jù)采用卡爾曼濾波算法對(duì)RSSI 數(shù)值進(jìn)行優(yōu)化,采用加權(quán)質(zhì)心定位算法實(shí)現(xiàn)了誤差不超過(guò)20%的定位。吳彥波[7]針對(duì)K 近鄰(k-nearst neighbor,KNN)算法在定位過(guò)程中位置信息丟失而造成定位精度降低的問(wèn)題,在指紋庫(kù)建立階段引入模糊C 均值(fuzzy cmeans,F(xiàn)CM)模糊聚類(lèi),其后利用KNN位置指紋算法提高了5%的定位精度。何海平[8]針對(duì)加權(quán)K 近鄰(weighted k-nearest neighbor,WKNN)算法定位精度不足的問(wèn)題,引入模糊聚類(lèi)算法通過(guò)閾值去除了跳變量較大的數(shù)據(jù),實(shí)現(xiàn)了平均精度為1.47 m的定位。以上研究表明室內(nèi)定位精度與實(shí)驗(yàn)數(shù)據(jù)的質(zhì)量直接相關(guān)。在指紋庫(kù)建立階段引入FCM聚類(lèi)算法與適當(dāng)?shù)臑V波算法對(duì)實(shí)驗(yàn)數(shù)據(jù)進(jìn)行預(yù)處理能夠有效提高數(shù)據(jù)質(zhì)量;由于自行小車(chē)懸掛輸送系統(tǒng)覆蓋面較廣,隨著參考節(jié)點(diǎn)數(shù)目以及待測(cè)區(qū)域的增加,上述定位算法測(cè)試過(guò)程中的累計(jì)誤差與邊緣效應(yīng)也隨之增大,因此并不適用于自行小車(chē)懸掛輸送系統(tǒng)的定位。由于自行小車(chē)信號(hào)在傳播過(guò)程中易受工廠(chǎng)環(huán)境的影響而產(chǎn)生反射、衍射等現(xiàn)象,且其他無(wú)線(xiàn)信號(hào)會(huì)對(duì)測(cè)試產(chǎn)生干擾,同時(shí)現(xiàn)有定位算法的靈活性以及精確性都有待提高。因此優(yōu)化指紋數(shù)據(jù)庫(kù)或定位算法成為了提高定位精度的主要研究方向。文中通過(guò)引入模糊聚類(lèi)、隸屬度分析等方法對(duì)WKNN 定位優(yōu)化算法進(jìn)行優(yōu)化,為自行小車(chē)輸送系統(tǒng)提供較高的無(wú)線(xiàn)定位精度。
位置指紋定位算法根據(jù)測(cè)試節(jié)點(diǎn)在空間中的分布情況、信號(hào)強(qiáng)度以及到錨節(jié)點(diǎn)的距離等參數(shù)表征該節(jié)點(diǎn)的位置特征。位置指紋定位法通常分為離線(xiàn)建庫(kù)和在線(xiàn)測(cè)試2個(gè)階段。在離線(xiàn)階段,采用相關(guān)設(shè)備采集目標(biāo)區(qū)域中參考節(jié)點(diǎn)的信號(hào)以及位置信息,建立相應(yīng)的指紋數(shù)據(jù)庫(kù)。在線(xiàn)階段根據(jù)實(shí)時(shí)采集到的測(cè)試節(jié)點(diǎn)的指紋信息,通過(guò)相應(yīng)的定位算法實(shí)現(xiàn)未知節(jié)點(diǎn)的定位。
KNN 以未知節(jié)點(diǎn)附近K個(gè)距離最近的參考節(jié)點(diǎn)作為定位依據(jù),通過(guò)計(jì)算K個(gè)參考節(jié)點(diǎn)的坐標(biāo)平均值得到最終的定位結(jié)果[9]。定位公式為
式中:(x,y)為未知節(jié)點(diǎn)的定位坐標(biāo);K為距離未知節(jié)點(diǎn)最近的參考節(jié)點(diǎn)個(gè)數(shù);(xi,yi)為第i個(gè)參考節(jié)點(diǎn)的坐標(biāo)。KNN能夠?yàn)榉植季鶆虻奈粗?jié)點(diǎn)提供較為準(zhǔn)確的定位,但針對(duì)測(cè)試區(qū)域邊緣的未知節(jié)點(diǎn)存在較大定位誤差。同時(shí)該算法需要大量的指紋數(shù)據(jù)作為定位依據(jù),對(duì)指紋庫(kù)的建立具有較高要求。
WKNN 算法是在KNN 算法的基礎(chǔ)上加以改進(jìn),將未知節(jié)點(diǎn)與錨節(jié)點(diǎn)之間的歐式距離的倒數(shù)作為權(quán)重w來(lái)計(jì)算未知節(jié)點(diǎn)的坐標(biāo),權(quán)重公式為
式中:wi為第i個(gè)附近參考節(jié)點(diǎn)的權(quán)重;di為第i個(gè)附近參考節(jié)點(diǎn)與未知節(jié)點(diǎn)間的歐氏距離。WKNN算法引入權(quán)重有效的區(qū)分了參考節(jié)點(diǎn)的遠(yuǎn)近對(duì)未知節(jié)點(diǎn)的影響程度,使定位算法更加合理,提高了定位精度。然而WKNN算法在計(jì)算過(guò)程中需要事先確定鄰近點(diǎn)個(gè)數(shù)K的值,在不同的應(yīng)用場(chǎng)合中,K值的選取同樣直接影響到未知節(jié)點(diǎn)的定位精度。因此,設(shè)計(jì)自適應(yīng)變更K值的WKNN 算法能夠?yàn)闊o(wú)線(xiàn)定位提供新的方案。
FCM 算法是基于目標(biāo)函數(shù)的聚類(lèi)算法,該算法在數(shù)據(jù)劃分過(guò)程中采用柔性的模糊劃分,能夠?qū)⑴c聚類(lèi)元素的相似程度通過(guò)FCM算法所得到的隸屬度向量表示[10]。常用目標(biāo)損失函數(shù)為
式中:k為聚類(lèi)的類(lèi)數(shù);n為樣本容量;b為平滑因子,取值為2;mj為每個(gè)類(lèi)的聚類(lèi)中心;xi為樣本向量;μj(xi)為第i個(gè)指紋樣本對(duì)應(yīng)第j類(lèi)的隸屬度函數(shù)。FCM算法的mj和μij可由式(4)表示:
式中:c為最終聚類(lèi)類(lèi)別數(shù)。
指紋定位過(guò)程中的關(guān)鍵在于如何利用定位算法從指紋庫(kù)中匹配到最為適合的定位結(jié)果。FCM算法將指紋庫(kù)與未知節(jié)點(diǎn)的數(shù)據(jù)以類(lèi)的方式進(jìn)行區(qū)分,在未知節(jié)點(diǎn)的坐標(biāo)解算過(guò)程中只針對(duì)相同類(lèi)別的指紋數(shù)據(jù)進(jìn)行計(jì)算,在保證定位精度的基礎(chǔ)上大大減少了定位算法的計(jì)算量。
采用FCM 聚類(lèi)算法對(duì)WKNN 算法進(jìn)行改進(jìn),利用FCM聚類(lèi)產(chǎn)生的μij值對(duì)聚類(lèi)結(jié)果進(jìn)行二次校正,實(shí)現(xiàn)WKNN 算法中K值的自適應(yīng)選取,定位過(guò)程如圖1所示。無(wú)線(xiàn)定位的離線(xiàn)階段,利用ZigBee模塊進(jìn)行室內(nèi)測(cè)試區(qū)域的信號(hào)采集,將采集到的信號(hào)進(jìn)行濾波后組成信號(hào)指紋庫(kù)。在線(xiàn)階段則將工作中采集到的未知節(jié)點(diǎn)的信號(hào)與指紋庫(kù)中的指紋數(shù)據(jù)進(jìn)行整合,并利用FCM算法進(jìn)行類(lèi)別判斷,確定該未知節(jié)點(diǎn)的所屬類(lèi)別后,將該類(lèi)別的所有指紋數(shù)據(jù)均記為未知節(jié)點(diǎn)的鄰近點(diǎn)。通過(guò)設(shè)定的隸屬度閾值R0對(duì)FCM算法求解所得的隸屬度進(jìn)行二次篩選,滿(mǎn)足閾值條件的鄰近點(diǎn)參與后續(xù)的WKNN算法定位計(jì)算。
圖1 定位算法模型
選用CC2530 模塊進(jìn)行測(cè)試區(qū)域的信號(hào)采集,采集設(shè)備如圖2a 所示。實(shí)驗(yàn)中,每個(gè)節(jié)點(diǎn)的采樣時(shí)間均設(shè)置為3 min。測(cè)試區(qū)域?yàn)? m的正方形區(qū)域,節(jié)點(diǎn)布置如圖2b所示,在正方形4個(gè)角上布置4 個(gè)錨節(jié)點(diǎn),其他均為參考節(jié)點(diǎn),實(shí)際測(cè)試場(chǎng)地如圖2c 所示。測(cè)試過(guò)程中,錨節(jié)點(diǎn)與參考節(jié)點(diǎn)進(jìn)行廣播通信,發(fā)送相關(guān)信息,介質(zhì)訪(fǎng)問(wèn)控制層通信的數(shù)據(jù)包格式均由域名、幀控制域、序列號(hào)、目的PANID、目的地址、源PANID和源地址組成。
圖2 實(shí)驗(yàn)布置
由于無(wú)線(xiàn)信號(hào)在傳輸過(guò)程中會(huì)受到物體表面的反射、衍射以及其他信號(hào)的干擾,因此RSSI值也隨之呈現(xiàn)出波動(dòng)的趨勢(shì),某個(gè)時(shí)間段采集的RSSI數(shù)據(jù)分布如圖3所示,可見(jiàn)RSSI的分布基本滿(mǎn)足高斯分布。因此對(duì)RSSI 數(shù)據(jù)進(jìn)行高斯濾波處理后,再與參考節(jié)點(diǎn)的物理坐標(biāo)組成指紋數(shù)據(jù)。
圖3 單采集點(diǎn)信號(hào)圖
為驗(yàn)證定位算法的精度,人為部署6個(gè)位置不同的未知節(jié)點(diǎn)并采集其RSSI信號(hào)。記錄這些未知節(jié)點(diǎn)的實(shí)際坐標(biāo)信息后,利用FCM 聚類(lèi)算法對(duì)采集到的未知節(jié)點(diǎn)的數(shù)據(jù)與指紋數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行聚類(lèi)。聚類(lèi)時(shí)設(shè)置聚類(lèi)類(lèi)別為4,并通過(guò)設(shè)定隸屬度閾值R0進(jìn)行聚類(lèi)結(jié)果的二次優(yōu)化。該方式能夠?qū)崿F(xiàn)WKNN 算法鄰近指紋點(diǎn)數(shù)量K的自適應(yīng)選取,具備良好的適用性,在一定程度上可以提高定位精度,滿(mǎn)足自行小車(chē)的定位要求。
采 用KNN 算 法、WKNN 算 法 以 及FCM 與WKNN混合算法進(jìn)行定位性能比較,結(jié)果如圖4所示。KNN算法采用鄰近節(jié)點(diǎn)坐標(biāo)的平均值作為其定位結(jié)果:如未知節(jié)點(diǎn)5,參與KNN 計(jì)算的4 個(gè)附近指紋點(diǎn)分別為指紋點(diǎn)5、6、11、12,在指紋點(diǎn)構(gòu)成相對(duì)規(guī)則的分布時(shí)利用該算法能夠獲得較高的定位精度,其定位誤差不高于0.2 m。但在通常情況下,所選參考節(jié)點(diǎn)分布不具備規(guī)則性,因此定位精度較差。而WKNN算法是在KNN的基礎(chǔ)上對(duì)鄰近節(jié)點(diǎn)的影響進(jìn)行加權(quán)平均,能夠反應(yīng)參考節(jié)點(diǎn)的遠(yuǎn)近對(duì)定位精度的影響。該方法在一定程度上反應(yīng)了未知節(jié)點(diǎn)附近指紋點(diǎn)的分布情況,提高了定位精度。但是在鄰近指紋點(diǎn)的選擇上局限性較大,不能夠表現(xiàn)出未知節(jié)點(diǎn)的整體分布特征。當(dāng)未知節(jié)點(diǎn)靠近測(cè)試區(qū)域的邊緣時(shí),如未知節(jié)點(diǎn)2、3、4 所示,選取得參考節(jié)點(diǎn)與未知節(jié)點(diǎn)相距較遠(yuǎn),定位誤差較大。采用FCM 與WKNN 混合算法進(jìn)行定位時(shí),未知節(jié)點(diǎn)1、3、5 的精度提高效果明顯,而未知節(jié)點(diǎn)2在定位過(guò)程中,由于選用2個(gè)類(lèi)別的所有參考節(jié)點(diǎn)作為鄰近節(jié)點(diǎn):指紋點(diǎn)2、3、7、8、10、20、21、23、26,在y方向上定位精度得到了明顯的提高;在x方向上由于僅有左側(cè)指紋點(diǎn),導(dǎo)致定位的橫坐標(biāo)向左偏差較大。綜合可知基于自適應(yīng)鄰近點(diǎn)K的WKNN算法在定位過(guò)程中能夠有效提高定位精度。
圖4 定位比對(duì)圖
為了評(píng)價(jià)各算法得定位精度,文中采用距離誤差來(lái)評(píng)價(jià)定位算法的性能,計(jì)算方法為
式中:(xi,y)i為定位算法測(cè)得的坐標(biāo);(x0,y0)為未知節(jié)點(diǎn)實(shí)際位置坐標(biāo)。各定位算法的定位誤差見(jiàn)圖5,可以看出,KNN 算法的最大定位誤差為0.63 m,平均定位誤差為0.47 m。WKNN 算法的最大定位誤差為0.66 m,平均定位誤差為0.46 m。FCM 與WKNN 混合算法的最大誤差、平均誤差分別為0.52 m 和0.36 m,相對(duì)于KNN 算法和WKNN 算法,該定位算法依據(jù)FCM聚類(lèi)隸屬度向量實(shí)現(xiàn)了鄰近指紋點(diǎn)個(gè)數(shù)的自適應(yīng)取值,同時(shí)對(duì)邊緣未知節(jié)點(diǎn)的定位具有一定的優(yōu)化作用。坐標(biāo)計(jì)算時(shí)更能夠體現(xiàn)出整個(gè)實(shí)驗(yàn)過(guò)程中指紋點(diǎn)的分布狀況,一定程度上使得WKNN所獲得的局部最優(yōu)解轉(zhuǎn)換成為了范圍更大的最優(yōu)解,定位精度有所提高。
圖5 定位誤差圖
采用指紋定位方法對(duì)RSSI值進(jìn)行高斯濾波處理,通過(guò)FCM聚類(lèi)確定未知節(jié)點(diǎn)所屬類(lèi)別,對(duì)聚類(lèi)結(jié)果進(jìn)行了修正。根據(jù)FCM的聚類(lèi)子樣本數(shù)設(shè)定WKNN 算法的K 值,實(shí)現(xiàn)了WKNN 算法的自適應(yīng)計(jì)算。實(shí)驗(yàn)結(jié)果表明,該方法的定位精度明顯優(yōu)于KNN算法和WKNN算法,其平均誤差不超過(guò)0.36 m。該定位方案在自行小車(chē)懸掛輸送系統(tǒng)上的應(yīng)用可以?xún)?yōu)化其系統(tǒng)的結(jié)構(gòu)以及穩(wěn)定性,定位精度較傳統(tǒng)定位算法有一定的提高,為自行小車(chē)懸掛輸送系統(tǒng)的定位起到輔助定位的作用。