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