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