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