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