計步器算法是如何實現的
計步(bu)算(suan)法(fa)可(ke)以分為四(si)大類,一(yi)是(shi)峰值(zhi)檢測(ce)算(suan)法(fa),二(er)是(shi)變換域算(suan)法(fa),三是(shi)濾(lv)波(bo)算(suan)法(fa),四(si)是(shi)模式識別算(suan)法(fa)。根(gen)據所設計的(de)計步(bu)器在人體(ti)上布放的(de)位置不同,如(ru)腕部、腰(yao)部、鞋底等,可(ke)以選(xuan)擇不同的(de)計步(bu)算(suan)法(fa)。以應用最為廣(guang)泛(fan)的(de)峰值(zhi)檢測(ce)算(suan)法(fa)為例(li):
1、獲取運動軌跡
用戶在(zai)運動中,可(ke)能把設備放置(zhi)(zhi)于口袋(dai)或(huo)者(zhe)包中,亦或(huo)拿在(zai)手中,所以(yi)設備的(de)(de)放置(zhi)(zhi)方向(xiang)不(bu)確定(ding)。那么首先,我們通過計(ji)算三個加(jia)速度的(de)(de)矢量長度,可(ke)以(yi)獲(huo)得一(yi)條步行運動的(de)(de)正弦曲線軌跡。
2、峰值檢測
我(wo)們記錄了上次矢(shi)量(liang)長度(du)和(he)運動方向,通過矢(shi)量(liang)長度(du)的(de)變(bian)化,可(ke)(ke)以判斷當前加速度(du)的(de)方向,并和(he)上一次保存的(de)加速度(du)方向進行(xing)比(bi)較。如(ru)果是(shi)相反的(de),即(ji)是(shi)剛過峰(feng)值(zhi)狀(zhuang)態,則進入計步(bu)(bu)邏輯進行(xing)計步(bu)(bu),否則就(jiu)舍(she)棄這段(duan)。通過對峰(feng)值(zhi)次數(shu)的(de)累加,那我(wo)們就(jiu)可(ke)(ke)得計算得到用戶步(bu)(bu)行(xing)的(de)步(bu)(bu)數(shu)。
3、去噪音(干擾)
手機(ji)或(huo)智(zhi)能手表等手持設(she)備會有一些低幅度和(he)快速的抽(chou)動狀態,即我(wo)們俗(su)稱的手抖,或(huo)者某個用戶想(xiang)通過短時快速反復搖(yao)動設(she)備來模擬人走路(lu),這些干擾(rao)數據(ju)如果不(bu)剔除,會影響記步的準確值,對于這種(zhong)干擾(rao),我(wo)們可以通過給檢測加上閾(yu)值和(he)步頻判斷(duan)來過濾(lv)。
目(mu)前人類(lei)(lei)最快(kuai)(kuai)的跑步(bu)(bu)頻(pin)(pin)率(lv)為(wei)5HZ(當然不排除人類(lei)(lei)借助其(qi)它設(she)備(bei)跑步(bu)(bu)頻(pin)(pin)率(lv)超(chao)過(guo)這(zhe)個頻(pin)(pin)率(lv)),也就是說相(xiang)鄰兩步(bu)(bu)的時間(jian)(jian)(jian)間(jian)(jian)(jian)隔(ge)的至少大于0.2秒,如圖(tu)中的計(ji)步(bu)(bu)時間(jian)(jian)(jian),若(ruo)兩次(ci)計(ji)步(bu)(bu)之間(jian)(jian)(jian)的時間(jian)(jian)(jian)間(jian)(jian)(jian)隔(ge)小于0.2秒,則不計(ji)步(bu)(bu)。這(zhe)樣我(wo)們就過(guo)濾了(le)高頻(pin)(pin)噪聲,即步(bu)(bu)頻(pin)(pin)過(guo)快(kuai)(kuai)的情況。同時我(wo)們通(tong)過(guo)和上次(ci)加(jia)速度(du)大小進(jin)行(xing)比較(jiao),設(she)置一定(ding)的閾值Threshold來判斷運動是否屬于有(you)效(如圖(tu)中的綠線),有(you)效運動才可進(jin)行(xing)記步(bu)(bu)。
4、推算運動狀態
如果已知(zhi)步(bu)(bu)行和跑(pao)步(bu)(bu)的(de)(de)步(bu)(bu)數,那么再通過(guo)人(ren)體身(shen)高,體重及性(xing)別就可(ke)以大(da)致知(zhi)道(dao)此人(ren)的(de)(de)步(bu)(bu)長,改進(jin)后即可(ke)變成一個測(ce)距(ju)離及測(ce)速(su)計(ji)。通過(guo)三軸加速(su)度傳(chuan)感器(qi)(qi)(qi),我們可(ke)以知(zhi)道(dao)用戶的(de)(de)運動狀態。除了計(ji)步(bu)(bu),還(huan)可(ke)以利用加速(su)度傳(chuan)感器(qi)(qi)(qi)與陀螺儀及磁(ci)傳(chuan)感器(qi)(qi)(qi)融合進(jin)行步(bu)(bu)行航跡推算,防(fang)止出現誤計(ji)步(bu)(bu)的(de)(de)現象。
智能計步器算法思想詳解
1、運動閾值
運動(dong)加速度一般呈現正弦變化,當運動(dong)速度提升,最大(da)值與最小值抬高時候,平均值也應當跟著軌(gui)跡變化。因此,運動(dong)閾值是一個動(dong)態值,具有自(zi)適應性,并且足夠快。
加速(su)度計不斷(duan)的(de)更新(xin)三軸數據,采集(ji)濾(lv)波(bo),判斷(duan)最大值(zhi)(zhi)與最小(xiao)值(zhi)(zhi)。我們以采樣50次(ci)為一組更新(xin)一次(ci)閾值(zhi)(zhi)。平均值(zhi)(zhi)(max+min)/2做為“運動(dong)閾值(zhi)(zhi)”。動(dong)態精度由(you)自己(ji)劃分,把運動(dong)變(bian)化量劃分等級,隨著運動(dong)閾值(zhi)(zhi)大小(xiao)判定當前精度值(zhi)(zhi)。
2、邁步判斷
(1)步(bu)伐邁出(chu)的條件(jian)定義:當加(jia)速(su)度(du)曲(qu)線跨過(guo)動態閥值(zhi)(zhi)上方(fang)時或(huo)者當加(jia)速(su)度(du)曲(qu)線跨過(guo)動態閥值(zhi)(zhi)下方(fang)時加(jia)速(su)度(du)的變(bian)化為(wei)正值(zhi)(zhi)或(huo)者為(wei)負值(zhi)(zhi)。
(2)利用線性位(wei)移寄(ji)存(cun)(cun)器(qi)和(he)動態(tai)(tai)閥值(zhi)和(he)動態(tai)(tai)精(jing)度(du)一(yi)起(qi)判(pan)(pan)斷(duan)個體(ti)是否(fou)邁出有(you)效的(de)一(yi)步。建立兩個寄(ji)存(cun)(cun),new寄(ji)存(cun)(cun)器(qi)和(he)old寄(ji)存(cun)(cun)器(qi);當(dang)(dang)前(qian)數據(ju)采集到后判(pan)(pan)斷(duan)是否(fou)移入(ru)new寄(ji)存(cun)(cun)器(qi),滿足移入(ru)條件:加速度(du)變(bian)化量大于(yu)當(dang)(dang)前(qian)的(de)動態(tai)(tai)精(jing)度(du)。就把(ba)當(dang)(dang)前(qian)采集的(de)數據(ju)移入(ru)new寄(ji)存(cun)(cun)器(qi),否(fou)則new保持不(bu)變(bian)。每當(dang)(dang)新數據(ju)到來時候,new寄(ji)存(cun)(cun)器(qi)的(de)值(zhi)無條件移入(ru)old寄(ji)存(cun)(cun)器(qi)。這樣(yang),就能夠避(bi)免高頻噪聲的(de)影(ying)響,提高判(pan)(pan)斷(duan)精(jing)度(du)。
(3)三軸(zhou)加速(su)度同時檢測,可(ke)以但是只(zhi)要一個軸(zhou)的加速(su)度變化最大,可(ke)以利(li)用(yong)該軸(zhou)當為(wei)運動方向,其他(ta)軸(zhou)忽略不(bu)計。
3、具體程序
(1)采樣濾波,求(qiu)(qiu)出(chu)3軸(zhou)的平均值(zhi),求(qiu)(qiu)出(chu)加速(su)度的最(zui)大(da),最(zui)小值(zhi)。
(2)每采樣50次,求出峰值,然后(hou)設置門限。
(3)計算精(jing)度。
(4)對(dui)采樣(yang)濾波的平均(jun)值進(jin)行處理(li)然(ran)后將(jiang)其與精度進(jin)行比(bi)較(通過(guo)移位(wei)寄存器來消(xiao)除高頻噪聲(sheng),使值更精確)。
(5)動態門限(xian)判(pan)定,對數值進行比較(jiao),然后將步數加1。
申明:以上方法源于程序系統索引或網民分享提供,僅供您參考使用,不代表本網站的研究觀點,證明有效,請注意甄別內容來源的真實性和權威性。