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