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