android 计步器acc,基于加速度的门限检测计步算法设计
1. 引言
步行運(yùn)動(dòng)是一項(xiàng)普遍的,門檻低的全民健身運(yùn)動(dòng),在諸多方面對(duì)人體有益,但是過多運(yùn)動(dòng)也會(huì)對(duì)人體產(chǎn)生損傷,因而有效計(jì)步顯得十分重要。計(jì)步器可以記錄步行的步數(shù),在孕婦健康管理、體育教學(xué)、反映能量消耗、增強(qiáng)運(yùn)動(dòng)等方面發(fā)揮著巨大的作用。微機(jī)電系統(tǒng)(Micro-electro Mechanical Systems, MEMS)以體積小、重量輕、功耗低、耐用性好、價(jià)格低廉等優(yōu)點(diǎn)廣泛應(yīng)用于智能手機(jī)傳感器模塊中。目前大多數(shù)計(jì)步算法都是圍繞加速度實(shí)現(xiàn)的,而智能手機(jī)內(nèi)置的加速度傳感器能夠方便獲取加速度。
對(duì)于精確計(jì)步問題,很多學(xué)者已經(jīng)進(jìn)行了研究,涌現(xiàn)出了很多方法。
文獻(xiàn) [1] 提出多級(jí)自適應(yīng)門限計(jì)步算法,先檢測(cè)加速度信號(hào)中的峰值點(diǎn)和谷值點(diǎn),接著基于獲得的峰值點(diǎn)和谷值點(diǎn),計(jì)算人物的步頻特征,根據(jù)所得步頻特征判斷人物的運(yùn)動(dòng)狀態(tài),最后,針對(duì)每種運(yùn)動(dòng)狀態(tài),自適應(yīng)分配對(duì)應(yīng)的時(shí)間差閾值和動(dòng)態(tài)峰谷值差值閾值,實(shí)現(xiàn)多級(jí)自適應(yīng)。該算法的準(zhǔn)確率能達(dá)到95%以上,但對(duì)波峰或者波谷的檢測(cè)準(zhǔn)確度要求很高。文獻(xiàn) [2] 提出了一種基于加速度傳感器的自適應(yīng)計(jì)步算法,通過對(duì)加速度傳感器采集的信號(hào)數(shù)據(jù)進(jìn)行一系列處理,然后利用人工免疫算法對(duì)處理后提取的特征值進(jìn)行判斷,確定人的運(yùn)動(dòng)狀態(tài),再進(jìn)行計(jì)步。該算法改進(jìn)了特征值提取方法,摒棄了傳統(tǒng)的貝葉斯分類算法,采用人工免疫分類算法有效地提高了計(jì)步的準(zhǔn)確率,但是運(yùn)動(dòng)狀態(tài)的判定對(duì)樣本數(shù)據(jù)庫有較強(qiáng)的依賴性。
文獻(xiàn) [3] 設(shè)計(jì)了一種基于MPU6050加速度傳感器的自適應(yīng)采樣計(jì)步器,該計(jì)步器通過MPU6050加速度傳感器采集步態(tài)信號(hào),運(yùn)用滑動(dòng)濾波算法對(duì)傳感器輸出的數(shù)字步態(tài)信號(hào)進(jìn)行濾波與降噪處理,采用動(dòng)態(tài)閥值算法對(duì)行人的跑步和走路兩種狀態(tài)進(jìn)行自動(dòng)識(shí)別,并根據(jù)人體不同的運(yùn)動(dòng)狀態(tài)自動(dòng)調(diào)整采樣速率,計(jì)步精度可以達(dá)到95%以上。文獻(xiàn) [4] 利用MEMES-IMU多種特征值,提出了行走和跑步的兩種步態(tài)檢測(cè)算法。在行走狀態(tài)下,采用加速度、角速度,足部著地和跨步時(shí)間的多條件約束實(shí)現(xiàn)零速區(qū)間檢測(cè)。在跑步狀態(tài)時(shí),通過步伐探測(cè)和跨步探測(cè)的方法,并結(jié)合多條件約束,實(shí)現(xiàn)零速區(qū)間檢測(cè)。檢測(cè)精度達(dá)到99%以上,但未將行走狀態(tài)與跑步狀態(tài)算法統(tǒng)一。
針對(duì)以上算法出現(xiàn)的問題,本文提出了基于加速度的門限檢測(cè)算法,在波谷檢測(cè)算法的基礎(chǔ)上改進(jìn)和優(yōu)化。算法運(yùn)用卡爾曼濾波算法對(duì)傳感器輸出的步態(tài)信號(hào)進(jìn)行濾波和降噪等預(yù)處理,然后根據(jù)狀態(tài)門限閾值判定行人的運(yùn)動(dòng)狀態(tài),比如跑步、行走或者靜止,針對(duì)不同的運(yùn)動(dòng)狀態(tài)分別設(shè)置步頻時(shí)間差閾值和峰谷值時(shí)間差閾值,滿足閾值條件則計(jì)步。該算法計(jì)步精度可以達(dá)到96%以上,可以有效應(yīng)用于計(jì)步器、室內(nèi)定位等領(lǐng)域,測(cè)量不同狀態(tài)下的步數(shù),滿足工程應(yīng)用的需求。
2. 計(jì)步原理
步態(tài)周期可以分為支撐期和擺動(dòng)期,是指行走過程中一側(cè)足跟著地至該側(cè)足跟再次著地時(shí)所經(jīng)過的時(shí)間 [5]。
如圖1所示,在一個(gè)步態(tài)周期中,人由于大腿的擺動(dòng),垂直加速度先增大后減小,前向加速度在邁步過程中增大,在提腳過程中減小。
通過Android手機(jī)的三軸加速度傳感器獲取手機(jī)坐標(biāo)系(如圖2(a)所示,x軸沿手機(jī)左右方向,y軸沿手機(jī)上下方向,z軸沿垂直于手機(jī)屏幕的方向)下的加速度數(shù)據(jù),如圖2(b)所示。加速度數(shù)據(jù)的變化可以反映出行人運(yùn)動(dòng)的全過程,因而基于加速度的算法實(shí)現(xiàn)計(jì)步是可行的。
Figure 1. The law of acceleration change during a gait cycle
圖1. 一個(gè)步態(tài)周期過程中加速度變化規(guī)律
Figure 2. Acceleration changes in the mobile phone coordinate system and a gait cycle
圖2. 手機(jī)坐標(biāo)系和一個(gè)步態(tài)周期里加速度變化
3. 算法設(shè)計(jì)
3.1. 預(yù)處理
acc_z (z軸加速度)盡管能夠反映出行人運(yùn)動(dòng)的加速度變化,但是單軸加速度對(duì)噪聲的抗干擾能力較差,不穩(wěn)定.在實(shí)際生活中,行人握持手機(jī)的姿勢(shì)或者手機(jī)的擺放位置不盡相同,而且手機(jī)加速度的方向與行人行走方向并不相同。對(duì)此,大部分研究采用三軸合一加速度,如公式(1)所示:
(1)
其中acc_x表示側(cè)向加速度,acc_y表示垂直加速度,acc_z表示前向加速度 [5]。
三軸合一的加速度結(jié)果如圖3所示。
Figure 3. Three-axis combined acceleration
圖3. 三軸合一加速度
3.2. 卡爾曼濾波
在數(shù)據(jù)的采集過程中,由于傳感器的噪聲和手機(jī)的擺動(dòng)或者與衣服的摩擦,不可避免會(huì)產(chǎn)生錯(cuò)誤的數(shù)據(jù)(如圖4(a)所示),因此需要對(duì)采集的數(shù)據(jù)進(jìn)行濾波,矯正錯(cuò)誤的數(shù)據(jù).本文采用卡爾曼濾波算法 [6]。
圖4(b)是經(jīng)過卡爾曼濾波后的波形圖,從圖中可以看出卡爾曼濾波模型有效地消除了偽波峰或波谷,提高了計(jì)步的準(zhǔn)確性,同時(shí)也使得波形更加平滑,趨近于實(shí)際加速度的變化趨勢(shì)。
(a)
(b)
Figure 4. (a) Before Kalman filtering; (b) After Kalman filtering
圖4. (a) 卡爾曼濾波前;(b) 卡爾曼濾波后
3.3. 門限檢測(cè)計(jì)步算法
傳統(tǒng)的波峰波谷計(jì)步算法由于只檢測(cè)峰值或者谷值對(duì)噪聲抗干擾能力較弱,當(dāng)濾波過程中無法完全消除偽波峰或者偽波谷,那么就會(huì)出現(xiàn)多次計(jì)步的情況,降低計(jì)步的準(zhǔn)確性。本文在傳統(tǒng)波峰波谷計(jì)步算法上做出改進(jìn),兼顧波峰和波谷檢測(cè),同時(shí)引入波峰時(shí)間自更新,避免由于行人停留使得相鄰兩波峰或波谷的時(shí)間差大大超過閾值而無法計(jì)步的情況,有效提高了計(jì)步的準(zhǔn)確性。
3.3.1. 狀態(tài)門限閾值設(shè)置
行人在慢走、快走或者跑步過程中的步頻是不一樣的,一步所需的時(shí)間也不同,因而在計(jì)步前需要判斷行人的運(yùn)動(dòng)狀態(tài)。本文區(qū)分靜止、行走和跑步這3中狀態(tài),約定靜止?fàn)顟B(tài)state = 0,行走狀態(tài)state = 1,跑步狀態(tài)state = 2。為描述狀態(tài)判斷的過程,引入如下符號(hào):
still_peak:靜止時(shí)加速度的峰值最大閾值,即行走時(shí)加速度的峰值最小閾值;
walk_peak:行走時(shí)加速度的峰值最大閾值,即跑步時(shí)加速度的峰值最小閾值;
still_valley:行走時(shí)加速度的谷值最小閾值,即行走時(shí)加速度的谷值最大閾值;
walk_valley:行走時(shí)加速度的谷值最小閾值,即跑步時(shí)加速度的谷值最大閾值;
在8個(gè)歷元的滑動(dòng)窗口中取出最大值Max和最小值Min (一般重力加速度g取9.8 m/s2,滿足最大值大于重力加速度,最小值小于重力加速度),狀態(tài)轉(zhuǎn)移方程如(2)所示:
(2)
如圖5所示,行人在不同狀態(tài)運(yùn)動(dòng)時(shí),峰值和谷值都有明顯的差別,對(duì)人行走和跑步時(shí)的數(shù)據(jù)多次采樣,繪制加速度幅值分布情況圖,由實(shí)驗(yàn)統(tǒng)計(jì)結(jié)果可知:行人在正常行走情況下加速度峰值幅值分布在[1.1 g, 2 g],谷值幅值分布在[0.4 g, 0.9 g]的比重達(dá)到98%以上;跑步狀態(tài)下加速度峰值幅值大于2 g,谷值幅值小于0.4 g的比重達(dá)到99%以上,因此取still_peak為11.1 m/s2,walk_peak為20 m/s2,still_valley為9.3 m/s2,walk_valley為4 m/s2。
Figure 5. Acceleration waveforms in different motion states
圖5. 不同運(yùn)動(dòng)狀態(tài)下的加速度波形
狀態(tài)判定函數(shù)Judge_State()的偽代碼如下。
Dim state AS INTERGER
state=1
input(acc)
if acc<9.8 Then
do 狀態(tài)轉(zhuǎn)
Endif
if acc>9.8 Then
do 狀態(tài)轉(zhuǎn)移
Endif
3.3.2. 時(shí)間差門限閾值設(shè)置
通常情況下,正常人行走的頻率為1~2.5 Hz,跑步時(shí)的頻率不超過5 Hz,所以設(shè)置行走時(shí)的時(shí)間差門限閾值為[0.4 s, 1 s],設(shè)置跑步時(shí)的時(shí)間差門限閾值為[0.2 s, 0.5 s];記行走時(shí)相鄰兩波谷的時(shí)間差為delta_1,跑步時(shí)相鄰兩波谷的時(shí)間差為delta_2,通過檢測(cè)delta_1或者delta_2是否在門限閾值范圍內(nèi)進(jìn)行一次判斷,如果小于閾值下限,表示存在偽波谷(如圖6波谷2所示,波谷2中兩個(gè)波谷的時(shí)間差小于閾值),如果大于閾值上限,可能行人停止行走或休息,此時(shí)需要更新前一個(gè)谷值時(shí)間,避免影響后續(xù)計(jì)步。
Figure 6. Two types of pseudo-valley
圖6. 兩種偽波谷類型
記相鄰的波峰與波谷的時(shí)間差為delta;如圖6所示,盡管波谷1達(dá)到閾值要求,但是波峰1沒有達(dá)到閾值要求,在計(jì)步過程中并不能計(jì)成一步,因而需要通過delta來進(jìn)行二次判斷消除這種情況的偽波谷的影響。錯(cuò)誤率與delta的關(guān)系如圖8所示,當(dāng)delta取值過小,會(huì)導(dǎo)致一步內(nèi)波峰與波谷的檢測(cè)時(shí)間差過小,從而忽略如慢走的步數(shù),降低了計(jì)步準(zhǔn)確性;當(dāng)delta取值過大,會(huì)導(dǎo)致本次判斷失效,不能消除圖6中偽波谷1。根據(jù)實(shí)驗(yàn)數(shù)據(jù)的統(tǒng)計(jì),如圖7所示,當(dāng)delta取0.4時(shí),錯(cuò)誤率最低即計(jì)步的準(zhǔn)確率最高。
Figure 7. Relationship between step error rate and delta
圖7. 計(jì)步的錯(cuò)誤率與delta的關(guān)系
閾值判斷的峰值和谷值盡管在窗口里是最值,但仍需判斷是否是前后鄰域的最值,窗口兩側(cè)的最值不滿足要求,需要摒棄,這是第三次判斷.當(dāng)三次判斷都滿足條件時(shí),計(jì)步并更新前一個(gè)谷值時(shí)間,進(jìn)入下一輪讀取,算法偽代碼如下所示。
input(acc)
input(time)
do 潛在峰值和谷值獲取
if峰值:
state= Judge_State(Max)
if 時(shí)間閾值判定成立 Then
do 計(jì)步
Endif
Endif
if 谷值:
state = Judge_State(Min)
if 時(shí)間閾值判定成立 Then
do 計(jì)步
Endif
Endif
4. 實(shí)驗(yàn)與結(jié)果分析
4.1. 實(shí)驗(yàn)設(shè)計(jì)
為了獲取行人在運(yùn)動(dòng)過程中握持Android手機(jī)時(shí)的加速度,編寫了一款A(yù)PP讀取三軸加速度的數(shù)值.選取物聯(lián)網(wǎng)工程學(xué)院寬闊的走廊作為實(shí)驗(yàn)的場(chǎng)地(如圖8所示),便于實(shí)驗(yàn)。
Figure 8. Experimental corridor
圖8. 實(shí)驗(yàn)走廊
實(shí)驗(yàn)使用的手機(jī)是HUAWEI Honor 10,系統(tǒng)為Android9.0.1。實(shí)驗(yàn)區(qū)別靜止、行走和跑步三種狀態(tài),每種狀態(tài)均采用門限檢測(cè)計(jì)步算法,采集三組數(shù)據(jù),每組數(shù)據(jù)的實(shí)際步數(shù)都是100步。
4.2. 實(shí)驗(yàn)結(jié)果分析
經(jīng)過行人運(yùn)動(dòng)時(shí)加速度數(shù)據(jù)的采集,預(yù)處理,濾波,計(jì)步算法等過程進(jìn)行了隨機(jī)測(cè)試,測(cè)試的結(jié)果如表1所示。通過門限檢測(cè)算法可以有效實(shí)現(xiàn)計(jì)步,行走狀態(tài)下的準(zhǔn)確率可達(dá)100%,最低為93%;跑步狀態(tài)下的準(zhǔn)確率可達(dá)99%,最低為95%;靜止?fàn)顟B(tài)下的行人可以100%識(shí)別;在實(shí)際生活應(yīng)用中可以作為室內(nèi)定位或者計(jì)步器的一部分,準(zhǔn)確提供行人的步數(shù)信息。
Table 1. Step detection results
表1. 步數(shù)檢測(cè)結(jié)果
4.3. 與傳統(tǒng)波峰檢測(cè)算法比較
文獻(xiàn) [7] 采用傳統(tǒng)峰值檢測(cè)實(shí)現(xiàn)計(jì)步,選取統(tǒng)一的時(shí)間窗口[0.2 s, 2 s],比較上一峰值與此峰值的時(shí)間間隔,如果處于時(shí)間窗口內(nèi),則視為有效信號(hào)。此算法對(duì)噪聲的抗干擾能力較弱,只能一次性計(jì)步,計(jì)步過程中不能過長(zhǎng)停留,否則會(huì)形成累積誤差,無法計(jì)步。如圖9所示,紅線以上部分均達(dá)到峰值要求,計(jì)步是前3個(gè)峰值計(jì)步有效,但第三個(gè)與第四個(gè)峰值間有較長(zhǎng)的時(shí)間間隔,且超過時(shí)間閾值,第四個(gè)峰值以及往后的峰值都是無效的。
Figure 9. Results of step counting in [7]
圖9. 文獻(xiàn) [7] 計(jì)步結(jié)果
對(duì)于本文的算法和文獻(xiàn) [7] 的算法分別進(jìn)行10次行走和跑步測(cè)試.將2種算法計(jì)算的總步數(shù)與實(shí)際行走的步數(shù)進(jìn)行比較,可以得到如圖10所示的誤差比較。
由圖10可知,測(cè)試10次之后,文獻(xiàn) [7] 傳統(tǒng)峰值檢測(cè)算法計(jì)算出的總步數(shù)與實(shí)際的步數(shù)誤差較大,跑步狀態(tài)下步態(tài)周期短,誤差范圍大于等于3%占比60%,均在5%以內(nèi)。行走狀態(tài)下步態(tài)周期相對(duì)變長(zhǎng),此時(shí)誤差范圍大于等于3%占比90%,大于等于5%占比60%。而本文算法測(cè)試10次,跑步狀態(tài)下誤差范圍大于等于3%占比30%,均在5%以內(nèi)。行走狀態(tài)下誤差范圍大于等于3%占比30%,均在5%以內(nèi)。由實(shí)驗(yàn)結(jié)果表明:本文的算法優(yōu)于傳統(tǒng)的峰值檢測(cè)算法,有效地提高了計(jì)步的精度。
Figure 10. Experimental error comparison
圖10. 實(shí)驗(yàn)誤差比較
5. 結(jié)束語
本文討論了基于加速度的門限檢測(cè)計(jì)步算法,在傳統(tǒng)的波峰波谷檢測(cè)算法的基礎(chǔ)上做出改進(jìn),提高了計(jì)步的準(zhǔn)確性。本文也討論了卡爾曼濾波原理,對(duì)原始的加速度數(shù)據(jù)進(jìn)行過濾,降低了噪聲的干擾。在狀態(tài)判斷的基礎(chǔ)上進(jìn)行三次門限檢測(cè)有效對(duì)偽波峰和偽波谷起到抑制作用。實(shí)驗(yàn)表明本算法能夠滿足計(jì)步器、室內(nèi)定位等方向的精度要求,在此后的工作里,我們團(tuán)隊(duì)將致力于濾波方法的改進(jìn),進(jìn)一步提高精度,降低噪聲對(duì)實(shí)驗(yàn)的影響。
參考文獻(xiàn)
總結(jié)
以上是生活随笔為你收集整理的android 计步器acc,基于加速度的门限检测计步算法设计的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Data-structures-and-
- 下一篇: 制冷行业人人必备的设计与仿真软件大全!(