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