當前位置:
首頁 > 最新 > 探秘:計步器是如何記下步數的?

探秘:計步器是如何記下步數的?

隨著社會的發展,很多朋友越來越注重自己的健康,跑步成為一種方便而又有效的鍛煉方式。但是如何知道自己跑了多少步,多遠的路程?計步器可以幫助人們實時掌握鍛煉情況。它的主要功能是檢測步數,通過步數和步幅可計算行走的路程。步幅信息可通過行走固定的距離來計算或是直接輸入,高級的計步器還可以計算人體消耗的熱量。

但這些計算的主要依據是步數的檢測。那麼一個小小的手環或手機APP是如何知道你每天運動的步數的呢?今天,我們就一起來看一看,計步器是怎麼工作的。

你知道嗎?計步器最早是由義大利的倫納德·達芬奇醞釀的,但現存的最早的計步器是在達芬奇之後150年,即1667年製作的。

在日本,計步器已經使用了40多年,主要用於體育運動和分析記錄行走步調。最初的計步器通常利用百種原理作為記步技術,利用加重的機械開關檢測步伐,並帶有一個簡單的計數器。如果晃動這些裝置,就可以聽到有一個金屬球來回滑動,或者一個擺鐘左右擺動敲響當塊。現在,這種機械式的計步器早已淡出歷史,取而代之的是電子式的計步器。

一. 計步器的工作原理

路,是一步一步走出來的。即使看似勻速的閑庭信步,對我們攜帶的設備來說(如手機、運動手環),每一步都經歷了過山車般的「加速度」變化。

一般來說,抬腿邁出一步的時候,加速度是最大的。我們把它放到一個坐標軸上,加速度的變化看起來就像一個cos波形。

兩個波峰之間,可以被認為是一步。如果連續出現了8個(不同硬體廠商有不同標準)波峰,就可以基本確定這個人在運動狀態。

設備就開始把這些前面的波動以及後面的波動,算成步數。這就是最基本的計步原理了。

在實際場景中,演算法還要去掉一系列的「噪音」。比如我們走路時,手機放兜里會上下抖動,產生不同方向的加速度。這時演算法就要判斷並去掉「噪音」,只留下最主要的運動特徵。

二. 計步器種類

目前,市面上的計步器主要分為兩大類:機械式計步器和電子計步器。

機械式計步器主要通過感應手臂或腰部的抖動來計步。機械式計步器通常設有一個運動門限,當運動的加速度大於這個門限則能夠被內部的機械裝置感應到,進而開始計步。由於運動門限不可調,機械式計步器在某些情況下無法計步,如走路較慢時手臂甩動幅度較小,不會產生計步。另外,非走路狀態下運動幅度大也會產生計步,如抬手撓頭等動作會產生誤計。

電子計步器通常內置一個加速度感測器(Accelerometer)和一個運算單元(MCU),通過加速度感測器感應用戶的加速度變化,然後通過MCU來估算行走的步數。電子式計步器通常採用三軸加速度感測器,可以感應用戶在三維方向上的運動,且內置較為複雜的計步演算法。

相對於機械式計步器,電子計步器計步精度更高,抗干擾能力更強。目前智能手機和某些非智能手機都內置了加速度感測器,只需要增加相應的軟體即可實現計步,無需增加硬體成本。智能手錶,智能手環類產品也都內置加速度感測器和計步演算法,方便用戶監控自己的運動量。

以放置在手腕處的加速度感測器為例。用戶在水平步行運動中,手腕處的加速度會收到重力加速度和甩手加速度的雙重影響。如下圖所示,紅色箭頭表示重力加速度,綠色箭頭表示甩手加速度。

在步行過程中,重力加速度始終垂直與大地,甩手動作帶來的加速度呈周期性變化。 反映到圖表中,可以看到,在步行運動中,垂直和前進產生的加速度與時間大致為一個周期性信號。

通過對軌跡的峰值進行檢測計算和加速度閥值決策,即可實時計算用戶運動的步數,還可依此進一步估算用戶步行距離。

三. 計步器的計步演算法

計步演算法可以分為四大類,一是峰值檢測演算法,二是變換域演算法,三是濾波演算法,四是模式識別演算法。根據所設計的計步器在人體上布放的位置不同,如腕部、腰部、鞋底等,可以選擇不同的計步演算法。

峰值檢測類演算法原理簡單,易於實現,應用較為廣泛。這裡簡單介紹峰值檢測類演算法。用戶在運動中,可能把設備放置於口袋或者包中,亦或拿在手中。所以設備的放置方向不確定。那麼首先,我們通過計算三個加速度的矢量長度,可以獲得一條步行運動的正弦曲線軌跡。

第二步就是峰值檢測,我們記錄了上次矢量長度和運動方向,通過矢量長度的變化,可以判斷當前加速度的方向,並和上一次保存的加速度方向進行比較。如果是相反的,即是剛過峰值狀態,則進入計步邏輯進行計步,否則就捨棄這段。通過對峰值次數的累加,那我們就可得計算得到用戶步行的步數。

最後,就是去噪音(干擾)。手機或智能手錶等手持設備會有一些低幅度和快速的抽動狀態,即我們俗稱的手抖,或者某個用戶想通過短時快速反覆搖動設備來模擬人走路,這些干擾數據如果不剔除,會影響記步的準確值,對於這種干擾,我們可以通過給檢測加上閥值和步頻判斷來過濾。目前人類最快的跑步頻率為5HZ(當然不排除人類藉助其它設備跑步頻率超過這個頻率),也就是說相鄰兩步的時間間隔的至少大於0.2秒,如圖中的計步時間,若兩次計步之間的時間間隔小於0.2秒,則不計步。這樣我們就過濾了高頻雜訊,即步頻過快的情況。同時我們通過和上次加速度大小進行比較,設置一定的閥值Threshold來判斷運動是否屬於有效(如圖中的綠線),有效運動才可進行記步。

如果已知步行和跑步的步數,那麼再通過人體身高,體重及性別就可以大致知道此人的步長,改進後即可變成一個測距離及測速計。通過三軸加速度感測器,我們可以知道用戶的運動狀態。除了計步,還可以利用加速度感測器與陀螺儀及磁感測器融合進行步行航跡推算。

四. 計步器的典型工作設計方案

步數識別系統

步數識別系統是指運行在移動手機上,能夠監視用戶走了多少步的應用程序。它一般由以下3個部分構成:感測器模塊,用來採集感測器數據;特徵提取模塊,處理和分析原始數據,並進行特徵提取、建立模型;

硬體設備

重力感測器(G-Sensor)又稱為加速度感測器,用來感知加速度的變化,它使用三維方向的加速度分量來表示。G-Sensor被用在很多智能設備當中,比如一些高端筆記本電腦內置了G-Sensor,在發生劇烈的拉動時(如跌落),立即啟動硬碟保護,避免硬碟損害。再如Apple 的 iPhone 使用G-Sensor來感知手機屏幕的方向,當在觀看視頻時手機橫放,屏幕自動跟著旋轉,這使得用戶體驗大大增加。

方案實現

日常生活當中,人們使用手機一般是拿在手上,放在褲兜里,女士也經常把它放在包里。因為手機外界環境總是很複雜的,褲兜有松有緊,放在松褲兜的手機比放在緊的更容易抖動,產生的噪音也更多。為了使該演算法儘可能的適用於不同的應用環境,需要對大部分的使用環境進行測試。首先,由4個人(8個或更多也可以)各自對不同手機使用環境進行數據收集,因為人們在同樣的場合使用手機的習慣是不一樣的。其次,對採集來的這些數據分別進行特徵提取。最後,使用提取的特徵模型進行識別檢驗。

數據採集

G-Sensor提供的數據如表1所示。

我們的演算法採用的採樣頻率為20HZ,採樣環境有:慢走、快走、跑步、騎自行車、坐的士、坐公交、坐電梯(上/下)、坐地鐵、上下樓梯。其中,有走路的採集走 100 步的數據(慢走、快走等),不是走路的採集1分鐘的數據。由於開始和結束的時候放置手機(放口袋、包里)會有一些波動,不是我們想要的,因此這兩個時間段的數據可以刪去,或不考慮。手機放在口袋,收集的原始Length欄位數據,在Excel 2007上繪製波形圖如圖1。橫軸為每個採樣點的索引,縱軸為Length值大小,也就是加速度大小,值在9.8附近變化。

Length欄位波形圖

特徵提取

由於收集的數據包含有雜訊,特別是在兩個動作切換之間Length欄位值的波動比較大,比如慢走和上樓梯的過程。這裡使用快速傅里葉變換(FFT)來處理Length欄位的數據,波形圖如圖2。縱軸已向下平移9.8。

經過FFT處理的Length欄位波形圖

我們發現上面經過FFT處理的波形表現出一定的規則,就是在一定的時間間格內總有一個波谷,我們稱這個點為「踩點」(如圖3中的1、2、3、4點),也就是加速度最小的時刻(腳往下踩,手機相對有一個往下「掉」的過程)。另外,圖3上A點也是波谷,但這一點是一個波動點,需要排除。所以踩點還必須小於一定的值-Threshold。當腳抬起來的時候(「起點」),身體對手機的作用力會增大,加速度也增大。所以起點必須大於Threshold,大於 Threshold的都稱為起點,因為我們只關心狀態的變化。通常地,走路的時候步與步之間的有一定的時間間隔,走快些間隔小,走慢些間隔大。如果是跑的話,人類的極限是1秒種跑5步,也就是1步0.2秒。從起點到踩點狀態變化1次就是走了1步。所以,我們建立包含如下2個要素的模型M:

1. Length滿足一定閥值,比如 –Threshold

2. 兩個連續踩點的時間間隔必須在Timespan (200~2000毫秒)之內

模型滿足的條件

步數識別

我們把建立的模型用來檢驗在坐的士環境下所採集的數據,波形圖如圖4.

用模型檢驗的士環境下的數據

我們可以看到後面的一段時間是比較平穩的,前面有一些波動,這些波動導致了錯誤的識別,識別為走路。我們可以改進這個模型,增加一個約束條件:在監視了連續 k(比如3)個踩點後才開始計步,所以從圖3上標號為4的點開始計步。這樣的約束就可以把大部分的抖動給去掉。把最終的模型用來檢驗所採集的不同環境下的數據得到的計步結果還是比較準確的。

關於日常計步器應用中的問題答疑

現在我們已經對計步的基本原理有了一定了解。頓時覺得好簡單!那麼就讓我們看一看下面幾個簡單的問題吧。

問:原地踏步會計步嗎?

答:算啊,跟走路一樣的。因為你原地踏步,雖然沒有相對於地面的位移,但加速度是存在的。同理,在跑步機上跑步,放心,步數都記著呢。

問:坐著抖腿呢?

答:這與你抖腿的幅度和頻率都有關,且看少年你骨骼驚奇還是手機廠商演算法高深。任何震動會被採集到,但不同硬體廠商演算法對這些場景處理可能不一樣。

問:綁狗身上行嗎?

答:既然你這麼問了,那我恐怕只能說這與狗狗的性格有關。文靜一些的,或者幼犬,走路比較慢的話,他/她邁步產生的加速度不一定有人那麼高,達不到演算法的閥值。性格活潑的,或者大一些的狗狗,運動加速度特徵與人相似,「騙過」演算法的可能性較高。不同手機廠商也有不同的演算法優化方案。

問:我生活三點一線,一天就幾千步,如果有機會坐火車,是不是可以狠狠刷一把步數?

答:計步的基本原理不是採集距離,也不是採集速度,而是採集加速度。不管火車走多遠、跑多快,大多數情況是勻速(或勻加減速)運動,加速度變化不顯著,且無法形成與走路相似的波形。火車上,如果你不走路的話,計算步數的可能性是非常小的。

追問:那在火車上搖手機呢?

答:搖也可以啊,因為有一個縱向加速度,在縱向上會產生波紋。但這與火車無關,和原地抖腿沒有本質區別。

問:為什麼我坐公交車就算步數了呢?

答:對,公交上被計算步數的概率是比較高的。路況有一定影響,繁忙路段行駛時,走走停停都會產生加速度的變化。還和司機的開車習慣有關,如果司機不停地剎車,或者顛得厲害,加速度影響就大。如果遇上開車開得平穩又熟悉路況的本地老司機,車上乘客比較不容易計步。

問:廠商各有演算法,不同設備用戶在微信運動上一起排名,如何公平呢?

答:實際上,在抖腿、公交之外,走路、跑步才是日常運動最主要的場景。這些基本場景的演算法,業界是較為統一的。微信對主要場景也有一套測試流程,確保不同設備計入的步數差距不大。對極端場景,也會持續優化演算法。

最後還有你們一直想問的,作弊問題。

其實可以作弊的地方有很多。特別是安卓,作為一個開源的系統,人為變更上報數據都是可能的。微信有一套反作弊機制,比如在用戶手機端對速度做簡單的合法性校驗。假如一秒鐘就走了10步,這種數據就可能被系統直接抹掉。而且還給他暫停計步,讓他覺得作弊沒用。

如你所想,抖腿、綁狗,小小「作弊」,完全杜絕是不太可能的。對於嚴重、明顯的連續作弊,微信會請他進入黑名單,他的數據不會再被別人看到,就只能自嗨了。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 立創 的精彩文章:

一位工程師的6年工作感悟
自製英飛凌XMC1302學習板
收藏:萬用表檢測方法詳解
OPPO哪來這麼多錢打廣告?人家可是國產手機利潤王者
科普:3D列印那些事兒

TAG:立創 |

您可能感興趣

減肥如何控制食慾?記下這些方法,助你一臂之力!
如何運動,才能讓血糖穩降?4個訣竅記下來,會用上的
記下這些好詞句,讓你的答題更加「走心」!
●入骨的警句,最好記下來!
入骨的警句,最好記下來!
最全面的,長壽養生秘訣順口溜,好記又實用!趕快記下來!
謹記下言,成之大器
起床「三不做」,健康「口訣」記下來!
五種魚的美味做法,簡單又健康,趕緊記下來!
男人不愛你了,才會說的「狠」話,趕緊記下來,很准!
美軍開始了?隨便編個理由打死敘利亞上百名士兵,普京:這個仇記下了!
這麼美的句子不記下來真的可惜!
趕緊記下!應對妹子簡直是教科書般的回答
哪些春花打動了你?記下來,與你的孩子一起玩飛花令吧!
入骨的警句,最好記下來
七七,任脈虛,更年期女性要想補氣血,一定不能丟了這6句話!女性花3分鐘記下來!
這麼美的句子不記下來真的可惜!來看啊!
當年玩家太拼了!為了和工作室對抗,竟記下了每個怪的刷新時間?
坐飛機只能帶一件隨身行李?這些收納行李的小貼士你要記下!
當你窮的時候,請記下這8句話,不然會更窮!