隨著人們越來越注重日常鍛煉,計步作為一種有效記錄鍛煉的監控手段,被廣泛應用于移動終端及智能穿戴設備中。
目前,市面上的計步器主要分為兩大類:機械式計步器和電子計步器。其中,機械式計步器主要通過感應手臂或腰部的抖動來計步。
機械式計步器通常設有一個運動門限,當運動的加速度大于這個門限則能夠被內部的機械裝置感應到,進而開始計步。由于運動門限不可調,機械式計步器在某些情況下無法計步,如走路較慢時手臂甩動幅度較小,不會產生計步。
另外,非走路狀態下運動幅度大也會產生計步,如抬手撓頭等動作會產生誤計。電子計步器通常內置一個加速度傳感器(Accelerometer)和一個運算單元(MCU),通過加速度傳感器感應用戶的加速度變化,然后通過MCU來估算行走的步數。
電子式計步器通常采用三軸加速度傳感器,可以感應用戶在三維方向上的運動,且內置較為復雜的計步算法。相對于機械式計步器,電子計步器計步精度更高,抗干擾能力更強。目前智能手機和某些非智能手機都內置了加速度傳感器,只需要增加相應的軟件即可實現計步,無需增加硬件成本。
智能手表,智能手環類產品也都內置加速度傳感器和計步算法,方便用戶監控自己的運動量。以iOS設備為例,其三軸加速度傳感器的正方向如下圖所示。
iOS設備的三軸加速度傳感器
一、模型特征
以放置在手腕處的加速度傳感器為例。用戶在水平步行運動中,手腕處的加速度會收到重力加速度和甩手加速度的雙重影響。
在步行過程中,重力加速度始終垂直與大地,甩手動作帶來的加速度呈周期性變化。反映到圖表中,可以看到,在步行運動中,垂直和前進產生的加速度與時間大致為一個周期性信號。通過對軌跡的峰值進行檢測計算和加速度閥值決策,即可實時計算用戶運動的步數,還可依此進一步估算用戶步行距離。
二、計步算法
計步算法可以分為四大類,一是峰值檢測算法,二是變換域算法,如FFT,三是濾波算法,四是模式識別算法。
根據所設計的計步器在人體上布放的位置不同,如腕部、腰部、鞋底等,可以選擇不同的計步算法。峰值檢測類算法原理簡單,易于實現,應用較為廣泛。這里簡單介紹峰值檢測類算法。
用戶在運動中,可能把設備放置于口袋或者包中,亦或拿在手中。所以設備的放置方向不確定。
那么首先,我們通過計算三個加速度的矢量長度,可以獲得一條步行運動的正弦曲線軌跡。
第二步就是峰值檢測,我們記錄了上次矢量長度和運動方向,通過矢量長度的變化,可以判斷當前加速度的方向,并和上一次保存的加速度方向進行比較。如果是相反的,即是剛過峰值狀態,則進入計步邏輯進行計步,否則就舍棄這段。通過對峰值次數的累加,那我們就可得計算得到用戶步行的步數。
最后,就是去噪音(干擾)。手機或智能手表等手持設備會有一些低幅度和快速的抽動狀態,即我們俗稱的手抖,或者某個用戶想通過短時快速反復搖動設備來模擬人走路,這些干擾數據如果不剔除,會影響記步的準確值,對于這種干擾,我們可以通過給檢測加上閥值和步頻判斷來過濾。
目前人類最快的跑步頻率為5HZ(當然不排除人類借助其它設備跑步頻率超過這個頻率),也就是說相鄰兩步的時間間隔的至少大于0.2秒,如圖中的計步時間,若兩次計步之間的時間間隔小于0.2秒,則不計步。
這樣我們就過濾了高頻噪聲,即步頻過快的情況。同時我們通過和上次加速度大小進行比較,設置一定的閥值Threshold來判斷運動是否屬于有效(如圖中的綠線),有效運動才可進行記步。
三、計步器的擴展
上面的例子是一個依靠加速度測算的計步器實現原理,已知步行和跑步的步數,那么再通過人體身高,體重及性別就可以大致知道此人的步長,改進后即可變成一個測距離及測速計。通過三軸加速度傳感器,我們可以知道用戶的運動狀態。除了計步,還可以利用加速度傳感器與陀螺儀及磁傳感器融合進行步行航跡推算(PDR)。