杜慶東, 范 玨
(沈陽師范大學(xué) 軟件學(xué)院, 沈陽 110034)
目前,室外定位[1]廣泛應(yīng)用于我們的生活當(dāng)中,由于室內(nèi)GPS信號會受各種因素(如建筑物遮擋、信號穿透力弱等)的影響,導(dǎo)致室內(nèi)信號接收受限,所以在室內(nèi)精準(zhǔn)定位仍是一個挑戰(zhàn)。許多室內(nèi)定位方法都基于無線電系統(tǒng),例如Wi-Fi[2]、射頻識別[3]、超寬帶[4]和藍(lán)牙[5]。這些定位方法可以分為2種類型[6]:三角測量和路徑識別。除了基于無線電的方法外,還有基于行人軌跡推算(pedestrian dead reckoning,PDR)[7-8]的室內(nèi)定位方法,通過將計算出的位移與之前的位置相結(jié)合來推導(dǎo)出當(dāng)前位置,而不需要借助外部基礎(chǔ)設(shè)施。PDR定位誤差主要取決于步數(shù)檢測、步長估計和步行方向估計的準(zhǔn)確性。
在不同的步行模式中實(shí)際應(yīng)用步數(shù)檢測和步長估計,仍是一個具有挑戰(zhàn)性的問題。例如,當(dāng)行人處于原地踏步狀態(tài)時,傳統(tǒng)的步數(shù)檢測方法很難計算步數(shù),因?yàn)槊恳徊蕉加卸鄠€近似的峰值和峰谷。當(dāng)行人處于原地踏步、正常行走或快步走狀態(tài)時,步長估計模型都是不同的,這些模式具有不同的步行特性(例如,原地踏步模式的步幅應(yīng)該為0)。本文的目的是設(shè)計一種基于魯棒算法的步數(shù)檢測和步長估計方法,可以適應(yīng)步行模式、手機(jī)姿勢和用戶的變化。著重考慮一種姿勢----將手機(jī)放到褲袋中的3種行走模式:正常行走(NW)、原地踏步(MP)、快步行走(QW)的步數(shù)檢測算法。
本文提出了一種魯棒步數(shù)檢測算法,基于動態(tài)時間扭曲(DTW),將峰值預(yù)測與過零檢測結(jié)合來準(zhǔn)確檢測出不同步行模式中的邊界。將本文的方法與傳統(tǒng)的步數(shù)檢測和步長估計方法進(jìn)行對比,證明本文方法優(yōu)于傳統(tǒng)的方法。
現(xiàn)有的步數(shù)檢測算法分為3類:時域方法[9-14]、頻域方法[15-16]和特征聚類方法[17-20]。由于本文的方法屬于時域方法,因而專注于時域中的步數(shù)檢測方法。時域方法包括閾值檢測[9]、峰值檢測[10]、過零檢測[11]、關(guān)聯(lián)檢測[12]等。閾值檢測通過判斷傳感器數(shù)據(jù)是否超過預(yù)定義的閾值來計算步數(shù)。雖然閾值方法最為簡單,但很難為所有情況預(yù)設(shè)一個最佳的閾值。峰值檢測根據(jù)一系列傳感器數(shù)據(jù)中的峰值數(shù)量來估計步數(shù),但由于噪聲的干擾,會影響峰值檢測的結(jié)果。過零檢測通過檢測傳感器數(shù)據(jù)中零點(diǎn)的數(shù)量來衡量步長,但由于干擾和噪聲,會存在很多假零點(diǎn)。由于目前實(shí)際傳感器信號的復(fù)雜性,僅用一種方法很難達(dá)到滿意的標(biāo)準(zhǔn)精度。因此,提出了組合方法來改善精度。結(jié)合過零和峰值檢測,限制2個零點(diǎn)之間的間隔,減少假零點(diǎn)。動態(tài)時間扭曲(DTW)方法[21]可以很好地解決這個問題,用于評估三軸加速度的相關(guān)性,減少因步行速度發(fā)生變化而導(dǎo)致的問題。
日常行走過程中,人們有著許多的行走方式,例如正常行走(NW)、原地踏步(MP)、快步行走(QW)等各種各樣的方式,而不同的行走方式對應(yīng)的步行模式是不同的,行走速度及每一步的長度也是不同的,對最終的步數(shù)檢測和步長估計有著很大的影響。可以使用具有新特征和CP的RF算法來識別步行模式,以減少步數(shù)檢測和步長估計的誤差。
目前已經(jīng)有人使用了慣性傳感器來感知人類活動,包括行人步行模式。Susi等[22]提出了一種基于決策樹的分類器來識別4種運(yùn)動模式。Niu等[23]提出了一個隱藏的基于馬爾科夫模型的步行模式識別,共有72種模式,其中步行模式是步行速度和方向的組合。使用支持向量機(jī)和決策樹可以成功識別運(yùn)動狀態(tài)和電話姿勢的組合。Datal等[24-25]利用J48決策樹、多層感知器和邏輯回歸技術(shù),將這些分類器與概率平均值組合規(guī)律相結(jié)合,以識別人類活動。最近,有關(guān)深度學(xué)習(xí)的活動受到了很多關(guān)注,Hassan等[26-27]提出了一種基于深度學(xué)習(xí)方法,使用來自智能設(shè)備上可用的多個傳感器的數(shù)據(jù)進(jìn)行活動識別。文獻(xiàn)[28]采用深度學(xué)習(xí)方法來識別不同的步行速度和手機(jī)攜帶方式。Zhou等[29]使用新的卷積神經(jīng)網(wǎng)絡(luò)提出了基于智能手機(jī)的動作識別,該網(wǎng)絡(luò)可以識別9種動作,用作室內(nèi)定位的地標(biāo)。
Weinberg提出了一個著名的步長估計模型,該模型的關(guān)鍵在于每一步內(nèi)的最大和最小加速度。Alvarez等[30]將人類步態(tài)視為倒立擺動模型,將步幅建模為身高和腿長的函數(shù)。Wei等[31]提出了一種基于計算機(jī)視覺的步長估計系統(tǒng)評估帕金森患者的運(yùn)動,提出了一種基于小波變換的步長估計方法。Zhu等[32]提出了一種根據(jù)行人的運(yùn)動狀態(tài),即步行或者跑步的自適應(yīng)步長估計方法。雙積分是步長估計算法[33]的另一個重要方法。當(dāng)前可用慣性傳感器一定會有測量誤差存在,所以最大限度地減少智能手機(jī)中低精度傳感器數(shù)據(jù)漂移仍是一個待解決的問題。隨著機(jī)器學(xué)習(xí)的最新進(jìn)展,已經(jīng)提出了基于機(jī)器學(xué)習(xí)的步長估計方法。
慣性傳感器靜止時輸出的噪聲包括靜態(tài)漂移噪聲和動態(tài)漂移噪聲。系統(tǒng)對慣性傳感器進(jìn)行初始校準(zhǔn),將模塊保持靜止?fàn)顟B(tài),保存一段時間內(nèi)的測量數(shù)據(jù),取其均值作為零偏數(shù)據(jù)。使用離散傅里葉變換的快速算法對校準(zhǔn)后的數(shù)據(jù)進(jìn)行頻域分析,獲取信號的頻率結(jié)構(gòu)以及各諧波和相位的信息。
頻域分析表明正常速度行走時的步頻為1~3 Hz,故保留低頻分量,頻率高于5 Hz的數(shù)據(jù)判定為干擾,使用低通濾波器對糾正零偏后的傳感器數(shù)據(jù)進(jìn)行濾波處理,經(jīng)過校準(zhǔn)后的輸出數(shù)據(jù)趨近于真實(shí)的零值,濾除了大部分的漂移噪聲。
數(shù)據(jù)預(yù)處理用于降低噪聲和干擾的影響。原始導(dǎo)出的加速度計數(shù)據(jù)包括X,Y和Z值,本文使用加速度幅度來檢測步行狀態(tài),如下所示:
(1)
其中:ax,t,ay,t,az,t分別是在時間t獲取的x軸,y軸和z軸的加速度計讀數(shù);g是重力加速度常數(shù),為9.8 m·s-2。原始加速度可能包含干擾和噪聲信號,這會影響后續(xù)的步數(shù)檢測和步行模式識別表現(xiàn)。因此,采用截止頻率為wc=0.2π的四階巴特斯沃?jǐn)?shù)字低通濾波器對at的高頻分量進(jìn)行濾波。
步數(shù)檢測要計算出不同步行模式下的具體步數(shù),并能夠正確分割每一步的數(shù)據(jù),為后續(xù)的步行模式識別奠定基礎(chǔ)。為了實(shí)現(xiàn)這2個目標(biāo),所提出的步數(shù)檢測方法是將基于動態(tài)時間扭曲(DTW)的峰值預(yù)測與過零檢測相結(jié)合。前者實(shí)現(xiàn)不同步行模式下的準(zhǔn)確計步,后者可識別每一步的起點(diǎn)和終點(diǎn)。
由于人在步行過程中手臂和腳的運(yùn)動是同步的[34],因此根據(jù)步態(tài)模型,每一步的起點(diǎn)或終點(diǎn)應(yīng)該是加速度信號中的零點(diǎn)。然而由于采樣頻率、行走速度和噪聲的影響,采樣的加速度信號可能沒有零點(diǎn),或者零點(diǎn)可能不是真正的起點(diǎn)或終點(diǎn)。本文將通過零的點(diǎn)記錄為零點(diǎn),過零檢測中所有潛在起點(diǎn)和終點(diǎn)都標(biāo)記為集合S1,如式(2)所示。
S1={t|at×at-1≤0}
(2)
然而,過零檢測方法一般具有假零點(diǎn)問題。本文結(jié)合峰值檢測和過零檢測來排除來自集合S1的錯誤零點(diǎn)。
步數(shù)檢測最常用的方法就是峰值預(yù)測,但此方法很容易受到假峰值的影響,尤其是當(dāng)行人處于原地踏步模式時。針對這一問題,提出了基于DTW的峰值預(yù)測方法,通過計算相鄰2步加速度信號的相似度預(yù)測峰值的范圍。
基于DTW的峰值預(yù)測方法由3個關(guān)鍵模塊組成:周期性約束、DTW約束和搜索最大峰值。
1) 周期性約束
一般來說,同一步行模式中相鄰的2個步驟的周期具有相似性。這里的周期是指2個連續(xù)的真實(shí)峰值時刻之間的差值,其定義如下:
(3)
t∈((1-θ)*Ti-1,(1+θ)*Ti-1)
(4)
其中:θ是相似度參數(shù);Ti是周期模板。為提高Ti的準(zhǔn)確度,更新如下:
(5)
根據(jù)周期性約束,可以初步推導(dǎo)出下一個峰值的范圍。
2) DTW約束
DTW用來計算距離或相似度時域[21]中長度不同的2個序列。在本文中,使用DTW來預(yù)測當(dāng)前真實(shí)峰值的加速度。
本文將2個峰值之間的加速度序列視為匹配序列μ,如式(6)所示。特別是第1個序列μ0是使用傳統(tǒng)的峰值檢測方法獲得的。
(6)
本文將Rp中的最新峰值到第1個樣本點(diǎn)的加速度數(shù)據(jù)作為第1個測試序列v1,Rp中最新峰值到第2個樣本點(diǎn)的加速度數(shù)據(jù)作為第2個測試序列v2……,以此類推,得到1個測試序列集V={v1,v2,…,vj,…,vk}。然后計算μ和vj的DTW距離DTW(μ,vj),得到DTW距離D={DTW(μ,v1),(μ,v2),…,(μ,vk)}。根據(jù)同一步行模式中每一步的相似性,當(dāng)測試序列中的最新樣本點(diǎn)接近下一個真實(shí)峰值時,DTW距離會明顯變小。因此,滿足式(7)中條件的Rp點(diǎn)j被輸出到候選峰集RD,即下一個真峰的預(yù)測范圍。
RD={j|j∈RD,DTW(μ,vj)<φ,DTW(μ,vj)-Dmin<τ}
(7)
其中φ和τ用于控制RD中元素的數(shù)量。另外,由于DTW約束時利用同一步行模式中的每一步的相似性,所以當(dāng)行人改變步行模式時,RD將為空。
3) 搜索最大峰值
獲得下一個真實(shí)峰值的預(yù)測范圍RD后,RD中最大的加速度對應(yīng)于真實(shí)峰值時刻,如式(8)所示。
(8)
其中tpeak代表當(dāng)前的真實(shí)峰值時刻。
基于DTW的峰值預(yù)測過程,其改進(jìn)在于NW,MP和QW模式參數(shù)θ,φ和τ相同, 以及Ti和μ根據(jù)同一步行模式下每一步的相似度自動建立和更新,一旦檢測到模式變化,將重新建立μ0。因此,基于DTW的峰值預(yù)測方法可以適應(yīng)不同的步行模式。
采用基于DTW的峰值預(yù)測方法獲得峰值時刻,而峰谷是2個峰值時刻之間最小加速度值所對應(yīng)的時刻。使用峰谷時刻來預(yù)測真正的零點(diǎn)時刻tzero,由式(9)定義
(9)
通過在S1中找到最接近預(yù)測零點(diǎn)的點(diǎn),得到真正的零點(diǎn)集S2,其中S1是過零檢測確定的零點(diǎn)集。假設(shè)S1={t(1),t(2),t(3),…,t(i),…} 并且tzero是預(yù)測的零點(diǎn),那么t是真正的零點(diǎn):
(10)
每一步的起點(diǎn)和終點(diǎn)可以表示為{ti,ti+1}。從每一對起點(diǎn)和終點(diǎn)提取出每一步的完整信息,構(gòu)成了步行模式識別特征分析和特征提取的基礎(chǔ)。
將本文所研究的步數(shù)檢測方法與通過結(jié)合過零點(diǎn)和峰值檢測的方法來限制2個零點(diǎn)之間的間隔、減少加零點(diǎn)的發(fā)生率的算法以及將周期性、相似性和連續(xù)性應(yīng)用于峰值檢測以消除假峰值并提高計步精度的算法的性能進(jìn)行了比較。結(jié)果表明本文的步數(shù)檢測方法優(yōu)于另外2種方法。無論是前者的方法還是后者的方法,都無法適應(yīng)不同的步行模式。本文使用DTW進(jìn)行峰值預(yù)測的方法,結(jié)合周期性約束和自適應(yīng)閾值來適應(yīng)不同的步行模式,所呈現(xiàn)的效果是最精準(zhǔn)的。
為了驗(yàn)證本文提出的方法,在清河實(shí)驗(yàn)中學(xué)進(jìn)行了一系列實(shí)驗(yàn)。8名志愿者使用2部智能手機(jī)(華為Mate 8和谷歌Nexus 5)收集數(shù)據(jù)。其中4名拿華為Mate 8,另外4名拿谷歌Nexues 5。實(shí)驗(yàn)數(shù)據(jù)收集方法類似于文獻(xiàn)[27]。這2款智能手機(jī)都內(nèi)置了采樣頻率為50 Hz的三軸加速度計。在數(shù)據(jù)收集過程中,志愿者需要記住他們每個步行模式中走了多少步。每個志愿者要將手機(jī)放置在褲袋中沿著2條路徑以3種步行模式(MP,NW和QW)行走固定步數(shù),共100步。本文沒有嚴(yán)格要求志愿者的步行速度,只要求根據(jù)自己的習(xí)慣行走。有48條軌跡,每條軌跡對應(yīng)一種模式和一種路徑。當(dāng)志愿者用恒定的速度行走時,每一步的步長大致相同。然后通過路徑長度除以行走的步數(shù)來獲得步長估計的真實(shí)步長。在測試數(shù)據(jù)收集中,志愿者要沿著另一條路徑以固定步數(shù)進(jìn)行3次連續(xù)的運(yùn)動。連續(xù)運(yùn)動由3種步行模式組成。因此有12條軌跡,每條軌跡包括3種步行模式和一種手機(jī)擺放位置。本文使用元組〈步行模式、步數(shù)〉來描述連續(xù)運(yùn)動的一部分。因此,測試路徑中行走模式的順序?yàn)椤碞W,20〉→〈MP,20〉→〈NW,20〉→〈QW,20〉。
如圖1所示,本文的步數(shù)檢測方法優(yōu)于另外2種方法。文獻(xiàn)[13]的方法明顯不適用于原地踏步,錯誤率明顯高于其他2種步行模式,并且行走過程中智能手機(jī)的擺放位置影響了閾值,導(dǎo)致快速行走模式下步數(shù)檢測的結(jié)果不準(zhǔn)確。文獻(xiàn)[35]的方法在正常行走模式中檢測結(jié)果比較準(zhǔn)確,但其步數(shù)檢測結(jié)果在原地踏步和快速行走模式中的誤差較大。本文使用 DTW方法進(jìn)行峰值預(yù)測,結(jié)合周期性約束和自適應(yīng)閾值以適應(yīng)不同的步行模式,在3種步行模式中均表現(xiàn)最佳,其誤差分別為1.1%,2.9% 和2.2%。
圖1 步數(shù)檢測性能的比較Fig.1 Step detection performance comparison
本文使用智能手機(jī)的內(nèi)置慣性傳感器來識別3種步行模式,為PDR提出了一種魯棒的步數(shù)檢測和步長估計方法。所提出的步數(shù)檢測方法,融合了基于動態(tài)時間扭曲(DTW)的峰值預(yù)測和過零檢測,可以準(zhǔn)確識別每個步驟的起點(diǎn)和終點(diǎn)。將本文的方法與傳統(tǒng)的方法進(jìn)行比較,顯示本文的方法優(yōu)于傳統(tǒng)的方法。以后會考慮更多的走路方式和手機(jī)放置位置,比如上樓、下樓、搖手機(jī)以及將手機(jī)放在胸口等,以擴(kuò)大該方法的應(yīng)用范圍。