計步器算法是如何實現的
計步算法可以分為四大類,一是峰值檢測算法,二是變換域算法,三是濾波算法,四是模式識別算法。根據所設計的計步器在人體上布放的位置不同,如腕部、腰部、鞋底等,可以選擇不同的計步算法。以應用最為廣泛的峰值檢測算法為例:
1、獲取運動軌跡
用戶在運動中,可能把設備放置于口袋或者包中,亦或拿在手中,所以設備的放置方向不確定。那么首先,我們通過計算三個加速度的矢量長度,可以獲得一條步行運動的正弦曲線軌跡。
2、峰值檢測
我們記錄了上次矢量長度和運動方向,通過矢量長度的變化,可以判斷當前加速度的方向,并和上一次保存的加速度方向進行比較。如果是相反的,即是剛過峰值狀態,則進入計步邏輯進行計步,否則就舍棄這段。通過對峰值次數的累加,那我們就可得計算得到用戶步行的步數。

3、去噪音(干擾)
手機或智能手表等手持設備會有一些低幅度和快速的抽動狀態,即我們俗稱的手抖,或者某個用戶想通過短時快速反復搖動設備來模擬人走路,這些干擾數據如果不剔除,會影響記步的準確值,對于這種干擾,我們可以通過給檢測加上閾值和步頻判斷來過濾。
目前人類最快的跑步頻率為5HZ(當然不排除人類借助其它設備跑步頻率超過這個頻率),也就是說相鄰兩步的時間間隔的至少大于0.2秒,如圖中的計步時間,若兩次計步之間的時間間隔小于0.2秒,則不計步。這樣我們就過濾了高頻噪聲,即步頻過快的情況。同時我們通過和上次加速度大小進行比較,設置一定的閾值Threshold來判斷運動是否屬于有效(如圖中的綠線),有效運動才可進行記步。
4、推算運動狀態
如果已知步行和跑步的步數,那么再通過人體身高,體重及性別就可以大致知道此人的步長,改進后即可變成一個測距離及測速計。通過三軸加速度傳感器,我們可以知道用戶的運動狀態。除了計步,還可以利用加速度傳感器與陀螺儀及磁傳感器融合進行步行航跡推算,防止出現誤計步的現象。
智能計步器算法思想詳解
1、運動閾值
運動加速度一般呈現正弦變化,當運動速度提升,最大值與最小值抬高時候,平均值也應當跟著軌跡變化。因此,運動閾值是一個動態值,具有自適應性,并且足夠快。
加速度計不斷的更新三軸數據,采集濾波,判斷最大值與最小值。我們以采樣50次為一組更新一次閾值。平均值(max min)/2做為“運動閾值”。動態精度由自己劃分,把運動變化量劃分等級,隨著運動閾值大小判定當前精度值。
2、邁步判斷
(1)步伐邁出的條件定義:當加速度曲線跨過動態閥值上方時或者當加速度曲線跨過動態閥值下方時加速度的變化為正值或者為負值。
(2)利用線性位移寄存器和動態閥值和動態精度一起判斷個體是否邁出有效的一步。建立兩個寄存,new寄存器和old寄存器;當前數據采集到后判斷是否移入new寄存器,滿足移入條件:加速度變化量大于當前的動態精度。就把當前采集的數據移入new寄存器,否則new保持不變。每當新數據到來時候,new寄存器的值無條件移入old寄存器。這樣,就能夠避免高頻噪聲的影響,提高判斷精度。
(3)三軸加速度同時檢測,可以但是只要一個軸的加速度變化最大,可以利用該軸當為運動方向,其他軸忽略不計。
3、具體程序
(1)采樣濾波,求出3軸的平均值,求出加速度的最大,最小值。
(2)每采樣50次,求出峰值,然后設置門限。
(3)計算精度。
(4)對采樣濾波的平均值進行處理然后將其與精度進行比較(通過移位寄存器來消除高頻噪聲,使值更精確)。
(5)動態門限判定,對數值進行比較,然后將步數加1。
聲明:以上方法源于程序系統索引或網民分享提供,僅供您參考使用,不代表本網站的研究觀點,證明有效,請注意甄別內容來源的真實性和權威性。申請刪除>> 糾錯>>