戴洪德張笑宇劉 偉*郭家豪鄭百東呂 游
(1.海軍航空大學(xué)航空基礎(chǔ)學(xué)院,山東 煙臺(tái) 264001;2.海軍航空大學(xué)岸防兵學(xué)院,山東 煙臺(tái) 264001;3.海軍航空大學(xué)教練機(jī)模擬訓(xùn)練中心,葫蘆島 125000)
微機(jī)電系統(tǒng)(MEMS)的興起極大地促進(jìn)了MEMS慣性傳感器在導(dǎo)航領(lǐng)域應(yīng)用的發(fā)展?;贛EMS慣性器件的慣性導(dǎo)航系統(tǒng)的發(fā)展有效彌補(bǔ)了衛(wèi)星導(dǎo)航系統(tǒng)在室內(nèi)、井下和隧道等特殊環(huán)境下無(wú)法導(dǎo)航的缺陷,成為了導(dǎo)航系統(tǒng)領(lǐng)域重要的研究方向。
為了克服行人慣性導(dǎo)航系統(tǒng)的誤差累積問(wèn)題,Elwell等人根據(jù)行人運(yùn)動(dòng)時(shí)腳相對(duì)地面周期性靜止的特點(diǎn),提出了一種以零速作為觀測(cè)量進(jìn)行周期性誤差修正的算法,即零速修正(zero velocity update,ZUPT)算法[1-2]。零速修正算法的提出為基于慣性的行人導(dǎo)航理論提供了新的研究思路,并逐漸成為慣性行人導(dǎo)航系統(tǒng)的主流研究方向。獲取行人步態(tài)周期內(nèi)的零速區(qū)間是進(jìn)行零速修正的前提。根據(jù)零速區(qū)間的步態(tài)特征,國(guó)內(nèi)外學(xué)者提出了出了一系列的零速檢測(cè)算法,如加速度移動(dòng)方差檢測(cè)算法(acceleration moving variance detector,)[3-4],加速度幅值檢測(cè)算法(acceleration magnitude detector)[3,5],角速率能量檢測(cè)算法(angular rate energy detector)[6-7]等,作者課題組也提出了一種基于偽標(biāo)準(zhǔn)差和N-P準(zhǔn)則的行人導(dǎo)航零速檢測(cè)算法[8]。由于上述幾種算法采用固定閾值進(jìn)行零速檢測(cè),因此只能對(duì)單一的運(yùn)動(dòng)狀態(tài)進(jìn)行零速檢測(cè),適應(yīng)性差。為了解決零速檢測(cè)算法適應(yīng)性差的問(wèn)題,國(guó)內(nèi)外學(xué)者提出了出了一系列具有自適應(yīng)特性的零速檢測(cè)算法[9-11],Isaac Skog提出了一種基于貝葉斯的自適應(yīng)閾值零速檢測(cè)算法[12](BAT),孫偉也提出了步態(tài)特征提取的K均值聚類自適應(yīng)判別算法[13](KCA)。
Isaac Skog提出的基于貝葉斯的自適應(yīng)閾值零速區(qū)間檢測(cè)算法(BAT)雖然利用設(shè)定閾值的衰減規(guī)律在一定程度上實(shí)現(xiàn)了在多種運(yùn)動(dòng)狀態(tài)下的零速檢測(cè),但是設(shè)定的閾值變化規(guī)律在遇到預(yù)期之外的運(yùn)動(dòng)狀態(tài)時(shí),很難確保零速檢測(cè)的精度。孫偉提出的步態(tài)特征提取的K均值聚類自適應(yīng)判別算法(KCA)通過(guò)K-means算法對(duì)每個(gè)步態(tài)周期內(nèi)的所有數(shù)據(jù)點(diǎn)進(jìn)行聚類,有效地減小了閾值對(duì)零速檢測(cè)精度的影響,具有良好的適應(yīng)性,但是還存在Kmeans算法聚類點(diǎn)數(shù)過(guò)多,計(jì)算量大,導(dǎo)致計(jì)算時(shí)間過(guò)長(zhǎng)的問(wèn)題。因此,本論文提出了一種基于改進(jìn)Kmeans聚類的零速檢測(cè)算法(IKC),通過(guò)K-means聚類算法獲取聚類中心點(diǎn)。然后利用聚類中心點(diǎn)實(shí)現(xiàn)對(duì)零速區(qū)間的檢測(cè)。相比于步態(tài)特征提取的K均值聚類自適應(yīng)判別算法(KCA),本文提出的IKC算法根據(jù)同一運(yùn)動(dòng)狀態(tài)下聚類中心點(diǎn)相對(duì)穩(wěn)定的特點(diǎn),依據(jù)數(shù)據(jù)點(diǎn)與中心點(diǎn)距離差異劃分零速區(qū)間,簡(jiǎn)化了聚類流程。該算法有效減小了計(jì)算量,縮短了計(jì)算時(shí)間。本文還將Isaac Skog提出的基于貝葉斯的自適應(yīng)閾值零速檢測(cè)算法(BAT)、孫偉提出的步態(tài)特征提取的K均值聚類自適應(yīng)判別算法(KCA)與本文提出的基于改進(jìn)K-means聚類的零速檢測(cè)算法(IKC)進(jìn)行對(duì)比分析。理論分析和實(shí)際行人導(dǎo)航實(shí)驗(yàn),都驗(yàn)證了本文所提方法的有效性。
通常將行走過(guò)程中行人從一側(cè)腳跟著地開始,經(jīng)兩只腳步態(tài)交替變換,到該側(cè)腳跟再次著地時(shí)所經(jīng)歷的過(guò)程定義為一個(gè)完整的步態(tài)周期。其中,當(dāng)一條腿承重時(shí),其腳底與地面完全接觸,此時(shí),將腳與地面完全接觸的時(shí)間段稱為零速區(qū)間。零速區(qū)間如圖1所示[14]。
圖1 步態(tài)周期
當(dāng)行人處于零速區(qū)間時(shí),其步態(tài)特征為:足部的角速度及水平加速度值近似為零,豎直方向的加速度值近似為重力加速度。
本文研究的存在多種運(yùn)動(dòng)狀態(tài)變換的行人運(yùn)動(dòng)均是在平地上進(jìn)行,已有研究證明在平地上運(yùn)動(dòng)陀螺儀提供的角速度數(shù)據(jù)足以完成零速檢測(cè)任務(wù)[15]。因此,在本文后續(xù)的實(shí)驗(yàn)中只采用了來(lái)自陀螺儀提供的角速度數(shù)據(jù)進(jìn)行零速檢測(cè)。
聚類是一種發(fā)現(xiàn)數(shù)據(jù)內(nèi)在結(jié)構(gòu)的無(wú)監(jiān)督學(xué)習(xí)技術(shù),應(yīng)用聚類算法對(duì)行人行走時(shí)的運(yùn)動(dòng)狀態(tài)進(jìn)行劃分,可以在不依賴閾值的情況下實(shí)現(xiàn)零速檢測(cè)。
聚類技術(shù)包含劃分法、層次法、基于密度的方法、基于網(wǎng)格的方法和基于模型的方法等多種算法。這些方法各有優(yōu)缺點(diǎn)。其中,K-means聚類方法具有簡(jiǎn)潔高效的優(yōu)點(diǎn),也存在需要預(yù)先設(shè)定K值的缺點(diǎn)。
K-means聚類的具體流程是:先隨機(jī)選取K個(gè)數(shù)據(jù)點(diǎn)作為初始的聚類中心。然后計(jì)算每個(gè)數(shù)據(jù)點(diǎn)與各個(gè)聚類中心之間的距離,把每個(gè)數(shù)據(jù)點(diǎn)分配給距離它最近的聚類中心。聚類中心以及分配給它們的對(duì)象就代表一個(gè)聚類,稱為簇。一旦全部對(duì)象都被分配了,每個(gè)聚類的聚類中心會(huì)根據(jù)聚類中現(xiàn)有的對(duì)象被重新計(jì)算。這個(gè)過(guò)程將不斷重復(fù)直到滿足某個(gè)終止條件。終止條件可以是以下任何一個(gè):①?zèng)]有(或最小數(shù)目)對(duì)象被重新分配給不同的聚類。②沒(méi)有(或最小數(shù)目)聚類中心再發(fā)生變化。③誤差平方和局部最小。
可以看出,在K-means聚類方法中只需要設(shè)定K值就可以實(shí)現(xiàn)數(shù)據(jù)點(diǎn)的聚類,相比于其他聚類方法的條件更加容易滿足。
KCA算法將零速檢測(cè)轉(zhuǎn)化為一種劃分零速區(qū)間與非零速區(qū)間的二分類問(wèn)題,所以將K值明確取為2。K-means聚類方法如圖2所示。
圖2 K-means聚類示意圖
為了解決固定閾值無(wú)法對(duì)步態(tài)特征進(jìn)行自適應(yīng)判別的問(wèn)題,孫偉提出了步態(tài)特征提取的K均值聚類自適應(yīng)判別算法[13](KCA)。
此算法通過(guò)初步檢測(cè)將步態(tài)周期分為初始動(dòng)態(tài)與初始靜態(tài),然后分別進(jìn)行K-means聚類,分別選取初始動(dòng)態(tài)與初始靜態(tài)持續(xù)時(shí)間最長(zhǎng)的動(dòng)態(tài)與靜態(tài)部分作為真動(dòng)態(tài)與真靜態(tài),其余部分作為假動(dòng)態(tài)與假靜態(tài)。
然后,根據(jù)Dunn指數(shù)作為聚類結(jié)果的指標(biāo),將真靜態(tài)與真動(dòng)態(tài)進(jìn)行對(duì)比。Dunn指數(shù)的具體公式如下:
式中:dmin(C i,C j)=minx i∈c i,x j∈c jdist(x i,x j);diam(Cl)=max1≤i≤j≤|C|dist(x i,x j)。dmin(C i,C j)反映簇與簇最近樣本間的距離;diam(Cl)反映簇內(nèi)樣本間的最遠(yuǎn)距離;dist(xi,x j)表示樣本之間的距離。由于樣本為各狀態(tài)持續(xù)時(shí)間長(zhǎng)度,因此采用絕對(duì)值距離。
若真靜態(tài)的Dunn指數(shù)較大,則表明靜態(tài)聚類效果優(yōu)于動(dòng)態(tài)聚類,應(yīng)按靜態(tài)聚類結(jié)果將假靜態(tài)糾正為動(dòng)態(tài);反之,則將假動(dòng)態(tài)糾正為靜態(tài)。
KCA算法在實(shí)驗(yàn)中表現(xiàn)出較好的實(shí)驗(yàn)結(jié)果,解算得到的位置相對(duì)誤差優(yōu)于2%[13]。其具體流程圖如圖3所示。
圖3 KCA算法
KCA算法雖然有效解決了零速檢測(cè)結(jié)果過(guò)于依賴閾值的問(wèn)題,但是無(wú)論是在計(jì)算時(shí)間還是檢測(cè)精度上仍具有較大的提升空間。因此,本文根據(jù)K-means聚類算法的特點(diǎn),對(duì)其進(jìn)行了改進(jìn),在縮短計(jì)算時(shí)間的同時(shí)提高了導(dǎo)航精度。
本文通過(guò)對(duì)角速度數(shù)據(jù)的分析發(fā)現(xiàn)在非零速區(qū)間陀螺儀輸出的角速度變化范圍大,存在正負(fù)之分,而在零速區(qū)間內(nèi)陀螺儀輸出的角速度理論上為零,取K值為2易將部分非零速區(qū)間劃分到零速區(qū)間。
在KCA算法中,為了避免出現(xiàn)上述問(wèn)題,會(huì)先通過(guò)其他零速檢測(cè)方法進(jìn)行初始檢測(cè)。這雖然在一定程度上確保了聚類精度,但是多次的零速檢測(cè)導(dǎo)致KCA算法計(jì)算量過(guò)大,不利于實(shí)時(shí)檢測(cè)。
因此,本文根據(jù)角速度的數(shù)據(jù)變化規(guī)律在將運(yùn)動(dòng)劃分為零速區(qū)間與非零速區(qū)間的基礎(chǔ)上又將非零速區(qū)間劃分為正負(fù)兩個(gè)部分,將K值取為3,旨在通過(guò)劃分三個(gè)部分減少引入到零速區(qū)間的誤差。陀螺儀輸出如圖4所示。
圖4 陀螺儀輸出
KCA算法對(duì)步態(tài)周期內(nèi)的每個(gè)數(shù)據(jù)點(diǎn)都進(jìn)行了K-means聚類,目的是通過(guò)這種方法擺脫零速檢測(cè)對(duì)閾值選取的依賴。但是由于整個(gè)運(yùn)動(dòng)過(guò)程中獲取的數(shù)據(jù)點(diǎn)過(guò)多,產(chǎn)生了計(jì)算量過(guò)大,實(shí)時(shí)性不高的問(wèn)題。
針對(duì)上述問(wèn)題,本文提出了一種改進(jìn)的Kmeans聚類算法。該算法根據(jù)同一運(yùn)動(dòng)狀態(tài)下,聚類中心點(diǎn)相對(duì)穩(wěn)定的特點(diǎn),依靠聚類中心點(diǎn)進(jìn)行零速檢測(cè)。其具體做法是首先對(duì)處在同一運(yùn)動(dòng)狀態(tài)下的部分運(yùn)動(dòng)數(shù)據(jù)進(jìn)行K-means聚類獲得聚類中心點(diǎn)。然后,依據(jù)聚類中心點(diǎn)對(duì)同一運(yùn)動(dòng)狀態(tài)下的運(yùn)動(dòng)進(jìn)行零速檢測(cè),這里零速檢測(cè)的數(shù)據(jù)包括在上一步為獲取聚類中心點(diǎn)所使用的數(shù)據(jù)。
當(dāng)某一數(shù)據(jù)點(diǎn)滿足如下條件時(shí):
則判斷該數(shù)據(jù)點(diǎn)屬于零速區(qū)間,否則,該數(shù)據(jù)點(diǎn)屬于非零速區(qū)間。其中,D0是數(shù)據(jù)點(diǎn)到零速區(qū)間聚類中心點(diǎn)的距離,D1和D2為數(shù)據(jù)點(diǎn)到非零速區(qū)間正負(fù)兩個(gè)部分的聚類中心點(diǎn)的距離,α和β則是對(duì)應(yīng)的比例系數(shù)。
本文根據(jù)先驗(yàn)信息確定了α和β的取值范圍。首先根據(jù)圖像與數(shù)據(jù)特點(diǎn)區(qū)分出每個(gè)步態(tài)周期的零速區(qū)間與非零速區(qū)間的數(shù)據(jù)點(diǎn);然后計(jì)算出這些數(shù)據(jù)點(diǎn)的中心點(diǎn);計(jì)算數(shù)據(jù)點(diǎn)到零速區(qū)間中心點(diǎn)的距離與到非零速區(qū)間中心點(diǎn)距離的比值,即可求出比例系數(shù)的取值范圍。
式中:α和β則是第k個(gè)步態(tài)周期對(duì)應(yīng)的比例系數(shù);D0k是第k個(gè)步態(tài)周期內(nèi),零速區(qū)間數(shù)據(jù)點(diǎn)到零速區(qū)間聚類中心點(diǎn)的距離;D1k和D2k為第k個(gè)步態(tài)周期內(nèi),非零速區(qū)間正負(fù)兩個(gè)部分?jǐn)?shù)據(jù)點(diǎn)到對(duì)應(yīng)部分的聚類中心點(diǎn)的距離。
改進(jìn)K-means分類結(jié)果如圖5所示。
圖5 改進(jìn)K-means聚類示意圖
考慮到零速區(qū)間內(nèi)部點(diǎn)的緊密程度要遠(yuǎn)高于零速區(qū)間數(shù)據(jù)點(diǎn)與非零速區(qū)間數(shù)據(jù)點(diǎn)的緊密程度。因此,零速區(qū)間內(nèi)部數(shù)據(jù)點(diǎn)到零速區(qū)間聚類中心的距離遠(yuǎn)小于零速區(qū)間內(nèi)部數(shù)據(jù)點(diǎn)到非零速區(qū)間聚類中心的距離。據(jù)此,本文設(shè)計(jì)了α和β作為比例系數(shù)體現(xiàn)不同區(qū)間內(nèi)點(diǎn)的緊密程度。
由于K-means聚類算法是對(duì)點(diǎn)的數(shù)據(jù)進(jìn)行聚類,且陀螺儀輸出的角速度數(shù)據(jù)在非零速區(qū)間變化時(shí)存在零角速度的數(shù)據(jù)點(diǎn),因此,易將非零速區(qū)間內(nèi)零角速度的數(shù)據(jù)點(diǎn)誤判為零速區(qū)間的數(shù)據(jù)點(diǎn)。具體表現(xiàn)在聚類結(jié)果不符合實(shí)際情況,短時(shí)間內(nèi)檢測(cè)得到的多個(gè)零速區(qū)間。
在KCA算法中,會(huì)將通過(guò)K-means聚類算法得到的多個(gè)零速區(qū)間中持續(xù)時(shí)間最長(zhǎng)的作為真靜態(tài),然后通過(guò)Dunn指數(shù)與真動(dòng)態(tài)進(jìn)行比較。但是,由于零速區(qū)間內(nèi)的數(shù)據(jù)點(diǎn)遠(yuǎn)比非零速區(qū)間內(nèi)的數(shù)據(jù)點(diǎn)更密集,導(dǎo)致在大多數(shù)情況下,真靜態(tài)更易被判斷為好。
在IKC算法中,由于增設(shè)了比例系數(shù),因此,只有將非零速區(qū)間內(nèi)零角速度的數(shù)據(jù)點(diǎn)誤判為零速區(qū)間的數(shù)據(jù)點(diǎn)時(shí)才會(huì)在短時(shí)間內(nèi)檢測(cè)得到的多個(gè)零速區(qū)間的情況,且錯(cuò)誤的零速區(qū)間持續(xù)時(shí)間遠(yuǎn)小于實(shí)際零速區(qū)間的持續(xù)時(shí)間。
因此,本文對(duì)得到的零速區(qū)間進(jìn)行檢驗(yàn),當(dāng)滿足如下條件時(shí):
則判斷該零速區(qū)間有效,否則該零速區(qū)間無(wú)效且變更為非零速區(qū)間。其中,Qt為零速區(qū)間的結(jié)束時(shí)對(duì)應(yīng)的數(shù)據(jù)點(diǎn)編號(hào),Q t-1為零速區(qū)間的開始時(shí)對(duì)應(yīng)的數(shù)據(jù)點(diǎn)編號(hào);f為采樣頻率;T1為設(shè)定的零速區(qū)間持續(xù)時(shí)間最小值。
由于改進(jìn)的K-means聚類算法是在同一運(yùn)動(dòng)狀態(tài)下進(jìn)行的,因此,當(dāng)運(yùn)動(dòng)狀態(tài)發(fā)生變化時(shí),需要重新獲取聚類中心點(diǎn)。
為了判斷行人運(yùn)動(dòng)狀態(tài)是否發(fā)生變化,本文根據(jù)行人的運(yùn)動(dòng)特點(diǎn),選取行人在非零速區(qū)間時(shí)由抬腳運(yùn)動(dòng)變?yōu)槁淠_運(yùn)動(dòng)的時(shí)刻作為統(tǒng)一的判斷運(yùn)動(dòng)狀態(tài)的時(shí)刻。當(dāng)行人處于該時(shí)刻時(shí),行人的速度即為水平方向上的速度,計(jì)算行人的速度,通過(guò)比較相鄰兩個(gè)步態(tài)周期行人速度的大小判斷運(yùn)動(dòng)狀態(tài)是否發(fā)生變化。當(dāng)滿足如下條件時(shí):
判斷運(yùn)動(dòng)狀態(tài)沒(méi)有改變,若不滿足條件則認(rèn)為運(yùn)動(dòng)狀態(tài)發(fā)生了改變。
其中,a z表示加速度計(jì)z軸數(shù)據(jù),V k表示第k個(gè)步態(tài)周期行人的速度,γ為設(shè)定的速度波動(dòng)范圍,γ越小運(yùn)動(dòng)狀態(tài)檢測(cè)的靈敏度越高,但是也會(huì)增加檢測(cè)的計(jì)算量。
同時(shí),為了防止運(yùn)動(dòng)狀態(tài)逐步變化導(dǎo)致前后兩次對(duì)比無(wú)法發(fā)現(xiàn)運(yùn)動(dòng)狀態(tài)改變的情況,本文還在此基礎(chǔ)上設(shè)定了固定的檢測(cè)時(shí)間。當(dāng)判斷行人維持某一運(yùn)動(dòng)狀態(tài)時(shí)間T超過(guò)時(shí)間T2時(shí),則同樣進(jìn)行檢測(cè)。
基于改進(jìn)的K-means聚類零速檢測(cè)算法的具體流程圖如圖6所示。
圖6 基于改進(jìn)K-means聚類的零速檢測(cè)算法
相比于KCA算法,本文提出的IKC算法有效的減小了零速檢測(cè)的計(jì)算量,具有更好的實(shí)時(shí)性;IKC算法通過(guò)比例系數(shù),有效避免了K-means聚類產(chǎn)生的誤差,提高了零速檢測(cè)精度,并使得算法驗(yàn)證部分更加簡(jiǎn)潔,進(jìn)一步縮短了計(jì)算時(shí)間。
本文在實(shí)驗(yàn)過(guò)程中采用荷蘭Xsens公司生產(chǎn)的Mti-G-710系列MEMS慣性傳感器作為行人導(dǎo)航慣性元件,其內(nèi)置了三個(gè)相互垂直的加速度計(jì)和陀螺儀,能夠?qū)崟r(shí)測(cè)量載體運(yùn)動(dòng)的加速度以及角速度。加速度計(jì)的量程為±50 m/s2,陀螺儀的量程為±450°/s,慣性傳感器的工作頻率設(shè)置200 Hz。慣性傳感器如圖7所示。
圖7 Mti-G-710系列MEMS慣性傳感器
本文中使用的所有實(shí)驗(yàn)數(shù)據(jù),均是通過(guò)將該傳感器固定在腳后跟處[14]進(jìn)行相應(yīng)的運(yùn)動(dòng)得到的。
K的取值是影響本文提出的IKC算法結(jié)果的關(guān)鍵。本文提出的IKC算法并沒(méi)有對(duì)全部數(shù)據(jù)進(jìn)行K-means聚類,這在減小計(jì)算量的同時(shí)也導(dǎo)致算法缺少對(duì)整體數(shù)據(jù)情況的把控。因此,本文根據(jù)陀螺儀輸出的角速度數(shù)據(jù)特點(diǎn),設(shè)定K值為3,以此來(lái)增加改進(jìn)K-means聚類算法對(duì)整體數(shù)據(jù)的把控。
由于在KCA算法中,比例系數(shù)固定為1,為了驗(yàn)證K的取值,本文在設(shè)定IKC算法的比例系數(shù)均為1,其他實(shí)驗(yàn)流程相同的前提下,分別對(duì)同一組數(shù)據(jù)進(jìn)行取K值為2和3基于改進(jìn)K-means聚類的零速檢測(cè)實(shí)驗(yàn)以及KCA算法實(shí)驗(yàn)。其結(jié)果如圖8、圖9與圖10所示。
圖8 KCA算法零速檢測(cè)
圖9 IKC(K=2)算法零速檢測(cè)
圖10 IKC(K=3)算法零速檢測(cè)
圖8至圖10中,縱坐標(biāo)為陀螺儀的輸出角速度數(shù)據(jù)以及零速檢測(cè)的結(jié)果Q。當(dāng)Q為零時(shí),表示行人處于非零速區(qū)間,Q為非零時(shí),表示行人處于零速區(qū)間。橫坐標(biāo)為運(yùn)動(dòng)數(shù)據(jù)的時(shí)間點(diǎn)。
將圖9與圖10中的零速檢測(cè)結(jié)果分別與圖8的進(jìn)行對(duì)比,結(jié)合圖中角速度數(shù)據(jù)的波動(dòng)情況,可以發(fā)現(xiàn)當(dāng)K=3時(shí),本文提出的IKC算法檢測(cè)得到的零速區(qū)間更加符合實(shí)際情況,驗(yàn)證了本文提出算法取K值為3的合理性。
結(jié)合陀螺儀輸出的角速度數(shù)據(jù)可以看出,在圖9與圖10中,改進(jìn)的K-means聚類算法得到的零速區(qū)間持續(xù)時(shí)間還是要略長(zhǎng)于實(shí)際零速區(qū)間的持續(xù)時(shí)間。這是由于零速區(qū)間內(nèi)的數(shù)據(jù)點(diǎn)相比于非零速區(qū)間內(nèi)的數(shù)據(jù)點(diǎn)更加緊密,而無(wú)論是K-means聚類還是上述的改進(jìn)的K-means聚類只考慮了各個(gè)數(shù)據(jù)點(diǎn)到中心點(diǎn)的距離,而缺乏對(duì)數(shù)據(jù)點(diǎn)實(shí)際分布情況的考慮。因此,本文在改進(jìn)的K-means聚類的基礎(chǔ)上增加了比例系數(shù),旨在通過(guò)零速區(qū)間與非零速區(qū)間數(shù)據(jù)點(diǎn)分布密度的差異進(jìn)一步提高獲得的零速區(qū)間的精度。
本文根據(jù)式(2)和式(3),可以確定最佳比例系數(shù)的取值范圍。為了對(duì)比例系數(shù)的作用進(jìn)行分析,本文在圖10比例系數(shù)為1的基礎(chǔ)上,又分別取比例系數(shù)為0.5和0.05進(jìn)行實(shí)驗(yàn),其中0.05屬于最佳比例系數(shù)的取值范圍,其結(jié)果如圖11與圖12所示。
圖11 IKC(0.5)算法零速檢測(cè)
圖12 IKC(0.05)算法零速檢測(cè)
結(jié)合圖11與圖12的輔助虛線可以看出,比例系數(shù)為0.05時(shí)的IKC算法的零速檢測(cè)效果要明顯優(yōu)于比例系數(shù)為0.5和1時(shí)的IKC算法的零速檢測(cè)效果。因此,證明可以通過(guò)設(shè)置比例系數(shù)來(lái)提高IKC算法零速檢測(cè)的靈敏度,進(jìn)而提高零速檢測(cè)精度,從而有利于提高導(dǎo)航精度。
為了進(jìn)一步驗(yàn)證比例系數(shù)對(duì)導(dǎo)航精度的驗(yàn)證,本文通過(guò)卡爾曼濾波算法對(duì)上述三種不同比例系數(shù)得到的零速區(qū)間進(jìn)行位置解算。
在本文路徑實(shí)驗(yàn)中采用的所有實(shí)驗(yàn)數(shù)據(jù),其運(yùn)動(dòng)軌跡均為矩形,每次矩形運(yùn)動(dòng),會(huì)有多次運(yùn)動(dòng)狀態(tài)變化,并要求在結(jié)束運(yùn)動(dòng)時(shí),盡可能確保安裝有傳感器的腳回到運(yùn)動(dòng)初始點(diǎn)。位置解算得到的運(yùn)動(dòng)路徑圖像如圖13所示。圖13中,點(diǎn)線代表比例系數(shù)為0.05時(shí)的IKC算法,點(diǎn)劃線代表比例系數(shù)為0.5時(shí)的IKC算法,虛線代表比例系數(shù)為1時(shí)的IKC算法,黑線代表行人實(shí)際的運(yùn)動(dòng)路徑。從圖13中可以看出,點(diǎn)線與點(diǎn)劃線的軌跡相比于虛線更符合實(shí)際運(yùn)動(dòng)軌跡,進(jìn)一步證明比例系數(shù)能有效提高導(dǎo)航精度。
圖13 實(shí)驗(yàn)路徑對(duì)比
本文提出的IKC算法只在運(yùn)動(dòng)狀態(tài)發(fā)生變化時(shí)才進(jìn)行完整的K-means聚類,在同一運(yùn)動(dòng)狀態(tài)下的零速檢測(cè)都是依靠K-means聚類獲得的中心點(diǎn)實(shí)現(xiàn)的,而KCA算法對(duì)整個(gè)運(yùn)動(dòng)過(guò)程中的所有數(shù)據(jù)點(diǎn)進(jìn)行了完整的K-means聚類。因此,理論上本文提出的基于改進(jìn)K-means聚類的零速檢測(cè)算法的計(jì)算量更小,計(jì)算時(shí)間會(huì)更短,更符合實(shí)時(shí)導(dǎo)航的需求。
為了驗(yàn)證本文提出的IKC算法的計(jì)算速度優(yōu)于KCA算法,本文在同一電腦上,取了五組運(yùn)動(dòng)數(shù)據(jù),分別采用IKC算法、BAT算法以及KCA算法三種算法進(jìn)行零速檢測(cè),記錄算法運(yùn)行時(shí)間。
T1表示IKC算法的計(jì)算時(shí)間;T2表示BAT算法的計(jì)算時(shí)間;T3表示KCA算法的計(jì)算時(shí)間。實(shí)驗(yàn)結(jié)果如表1。
表1 運(yùn)行時(shí)間結(jié)果 單位:s
從表1中可以看出,本文提出的IKC算法有效減小了計(jì)算量,在計(jì)算時(shí)間上略優(yōu)于BAT算法,而相比于KCA算法則是顯著地減小了計(jì)算時(shí)間。
為了驗(yàn)證本文提出的IKC算法對(duì)行人導(dǎo)航精度的影響,本文對(duì)同一運(yùn)動(dòng)分別采用IKC算法和KCA算法進(jìn)行零速檢測(cè),并采用基于Kalman濾波的零速修正算法進(jìn)行位置解算,最終實(shí)現(xiàn)導(dǎo)航精度對(duì)比實(shí)驗(yàn)。
由于BAT算法無(wú)法適應(yīng)運(yùn)動(dòng)狀態(tài)變化導(dǎo)致的數(shù)據(jù)的劇烈波動(dòng),因此,在位置精度對(duì)比中未采用BAT算法進(jìn)行零速檢測(cè)。通過(guò)IKC算法和KCA算法得到的運(yùn)動(dòng)路徑圖像如圖14所示。圖14中,虛線代表采用了IKC算法得到的運(yùn)動(dòng)路徑,點(diǎn)劃線代表采用了KCA得到的運(yùn)動(dòng)路徑,黑線代表行人實(shí)際的運(yùn)動(dòng)路徑。從圖14中可以看出,IKC相比于KCA算法導(dǎo)航精度更高。
圖14 實(shí)驗(yàn)的路徑對(duì)比
為了定量對(duì)比IKC算法和KCA算法的導(dǎo)航精度,本文取相應(yīng)的轉(zhuǎn)折點(diǎn)及終點(diǎn),作為實(shí)際行走軌跡參考點(diǎn)在解算軌跡中的對(duì)應(yīng)點(diǎn)。對(duì)應(yīng)點(diǎn)與參考點(diǎn)的位置誤差定義為:
式中:r d表示對(duì)應(yīng)點(diǎn)位置,r c表示參考點(diǎn)位置。
分別計(jì)算四個(gè)對(duì)應(yīng)點(diǎn)與四個(gè)參考點(diǎn)的位置誤差,將四個(gè)位置誤差取平均值,作為解算軌跡與實(shí)際軌跡的導(dǎo)航軌跡誤差平均值;對(duì)四個(gè)位置誤差求標(biāo)準(zhǔn)差,作為解算軌跡與實(shí)際軌跡的導(dǎo)航軌跡誤差標(biāo)準(zhǔn)差,計(jì)算方法為:
通過(guò)導(dǎo)航軌跡誤差平均值以及標(biāo)準(zhǔn)差兩個(gè)定量指標(biāo),即可量化IKC算法和KCA算法解算軌跡與實(shí)際軌跡的接近程度,從而評(píng)估IKC算法和KCA算法導(dǎo)航的準(zhǔn)確性和穩(wěn)定性。
由于矩形實(shí)驗(yàn)中涉及的行走軌跡為標(biāo)準(zhǔn)的矩形,解算得到的軌跡也較為接近矩形,因此可以通過(guò)上述四個(gè)參考點(diǎn)的位置誤差平均值以及標(biāo)準(zhǔn)差來(lái)描述整個(gè)軌跡的導(dǎo)航誤差,對(duì)于其他較為復(fù)雜的行走路徑,則應(yīng)該選擇軌跡中多個(gè)具有代表性的點(diǎn)來(lái)描述導(dǎo)航軌跡誤差。
從表2中的計(jì)算結(jié)果可以發(fā)現(xiàn),在同一運(yùn)動(dòng)過(guò)程中,IKC算法具有更小的導(dǎo)航軌跡誤差平均值ΔR,平均僅為0.57 m,只占總路程的1.14%,相對(duì)KCA算法減小了0.97%,表明IKC算法導(dǎo)航的精度更高,驗(yàn)證了IKC算法提高了零速檢測(cè)的準(zhǔn)確性。
表2 三種算法位置誤差與導(dǎo)航軌跡誤差
本文提出的基于改進(jìn)K-means聚類的零速檢測(cè)算法在解決零速檢測(cè)自適應(yīng)問(wèn)題的同時(shí),有效減小了計(jì)算量,縮短了計(jì)算時(shí)間。相比于步態(tài)特征提取的K均值聚類自適應(yīng)判別算法以及基于貝葉斯的自適應(yīng)閾值零速檢測(cè)算法,IKC算法更能適應(yīng)在變速情況下的零速檢測(cè)。