本發(fā)明涉及計(jì)步技術(shù)領(lǐng)域,尤其涉及一種基于三軸加速度傳感器的動(dòng)態(tài)切換計(jì)算軸的計(jì)步方法。
背景技術(shù):
現(xiàn)代人很多非常注重自己的日常鍛煉,計(jì)步作為一種有效記錄、監(jiān)控鍛煉的監(jiān)控手段,被廣泛應(yīng)用在智能跑鞋中?,F(xiàn)有的智能跑鞋在其內(nèi)安裝有三軸加速度傳感器,三軸傳感器的x軸正方向朝向前方,y軸正方向朝向左側(cè),z軸正方向豎直向上,通過(guò)三軸加速度傳感器檢測(cè)的數(shù)據(jù)計(jì)步,現(xiàn)有的計(jì)步方法適合走路和慢跑場(chǎng)景,在快速跑的情況下就不太準(zhǔn)確。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是克服現(xiàn)有計(jì)步方法在人快速跑時(shí)計(jì)步不準(zhǔn)確的技術(shù)問(wèn)題,提供了一種基于三軸加速度傳感器的動(dòng)態(tài)切換計(jì)算軸的計(jì)步方法,其在人運(yùn)動(dòng)狀態(tài)變化時(shí),動(dòng)態(tài)切換計(jì)算軸,保證了人各個(gè)運(yùn)動(dòng)狀態(tài)下的計(jì)步準(zhǔn)確性。
本發(fā)明的一種基于三軸加速度傳感器的動(dòng)態(tài)切換計(jì)算軸的計(jì)步方法,三軸加速度傳感器設(shè)置在鞋內(nèi)且x軸正方向朝向鞋體前方,包括以下步驟:
s1:微處理器讀取三軸加速度傳感器輸出的檢測(cè)數(shù)據(jù),根據(jù)人體運(yùn)動(dòng)狀態(tài)選擇相應(yīng)的數(shù)據(jù)進(jìn)行處理,人體運(yùn)動(dòng)狀態(tài)初始設(shè)置為走路狀態(tài),當(dāng)人體運(yùn)動(dòng)狀態(tài)為走路狀態(tài)或慢跑狀態(tài)時(shí),只選擇x軸加速度數(shù)據(jù)進(jìn)行處理,當(dāng)人體運(yùn)動(dòng)狀態(tài)為快速跑狀態(tài)時(shí),只選擇xyz三軸合加速度數(shù)據(jù)進(jìn)行處理;
s2:微處理器根據(jù)選擇的數(shù)據(jù)繪制出加速度變化曲線圖,檢測(cè)加速度變化曲線圖中的波峰,當(dāng)某個(gè)波峰對(duì)應(yīng)的加速度值小于或等于設(shè)定值f時(shí),將該波峰去除,當(dāng)相鄰兩個(gè)波峰之間的采樣點(diǎn)小于設(shè)定值k時(shí),將這兩個(gè)波峰中加速度值最小的波峰去除,波峰對(duì)應(yīng)的時(shí)間點(diǎn)為腳落地的時(shí)刻;
s3:微處理器根據(jù)加速度變化曲線圖中的波峰數(shù)目a計(jì)算出當(dāng)前計(jì)步步數(shù)b,b=(a-1)×2;
s4:微處理器判斷當(dāng)前人體的運(yùn)動(dòng)狀態(tài)并進(jìn)行設(shè)置,判斷當(dāng)前人體運(yùn)動(dòng)狀態(tài)并進(jìn)行設(shè)置的方法包括以下步驟:統(tǒng)計(jì)最新一個(gè)波峰的前兩個(gè)波峰之間的采樣點(diǎn)個(gè)數(shù)d,當(dāng)a1≤d<a2且最新一個(gè)波峰的前一個(gè)波峰加速度值大于m時(shí),判斷人體處于快速跑狀態(tài),將人體運(yùn)動(dòng)狀態(tài)設(shè)置為快速跑狀態(tài);當(dāng)a2≤d≤a3時(shí),判斷人體處于慢跑狀態(tài),將人體運(yùn)動(dòng)狀態(tài)設(shè)置為慢跑狀態(tài);當(dāng)a3<d≤a4時(shí),判斷人體處于走路狀態(tài),將人體運(yùn)動(dòng)狀態(tài)設(shè)置為走路狀態(tài),a1<a2<a3<a4。
在本技術(shù)方案中,本方法的三軸加速度傳感器設(shè)置在鞋體內(nèi),三軸加速度傳感器的x軸正方向朝向鞋體前方,y軸正方向朝向鞋體左側(cè),z軸正方向豎直向上,通過(guò)檢測(cè)人體單腳的運(yùn)動(dòng)情況進(jìn)行計(jì)步。
以f取1.5g,m取5g,a1取10,a2取18,a3取25,a4取80為例進(jìn)行說(shuō)明:
本方法根據(jù)加速度變化曲線圖中變化曲線的極大值來(lái)判斷波峰,當(dāng)加速度超過(guò)1.5g時(shí),即可進(jìn)入波峰的判斷條件里面,同時(shí)也會(huì)引入偽波峰,由于人走路或者跑步的極限頻率可以估算出來(lái),波峰之間的間距不會(huì)小于k個(gè)采樣點(diǎn),所以當(dāng)兩個(gè)波峰之間的間距小于k時(shí),即可根據(jù)波峰值大小,選取較大的值作為一個(gè)計(jì)步的波峰,即數(shù)值較大的波峰為真波峰,數(shù)值較小的波峰為偽波峰。
由于只在一只鞋子上設(shè)置三軸加速度傳感器,加速度變化曲線圖上出現(xiàn)一次波峰,人左右腳各走了一步,所以,波峰與步數(shù)是1比2的關(guān)系,即一個(gè)波峰對(duì)應(yīng)走路2步。由于存在偽波峰,所以最后一個(gè)波峰不能判斷是否是真波峰,本方法在最新出現(xiàn)一個(gè)波峰時(shí),才計(jì)算前一個(gè)波峰是否是真波峰,所以本方法計(jì)步有一個(gè)波峰的滯后。
本方法根據(jù)最新一個(gè)波峰的前兩個(gè)波峰之間的采樣點(diǎn)個(gè)數(shù)d及最新一個(gè)波峰的前一個(gè)波峰加速度值判斷人體當(dāng)前的運(yùn)動(dòng)狀態(tài)。當(dāng)人體處于走路狀態(tài)或慢跑狀態(tài)時(shí),x軸、y軸、z軸的檢測(cè)數(shù)據(jù)較準(zhǔn)確,采用xyz三軸合加速度的數(shù)據(jù)進(jìn)行計(jì)步;當(dāng)人體處于快速跑狀態(tài)時(shí),人體朝前方高速前進(jìn),人的腳在y軸、z軸方向的運(yùn)動(dòng)幅度很小,檢測(cè)數(shù)據(jù)不準(zhǔn)確,因此,只選取x軸加速度的數(shù)據(jù)進(jìn)行計(jì)步,保證計(jì)步的精確性。
作為優(yōu)選,所述步驟s3還包括以下步驟:當(dāng)步數(shù)b小于c時(shí),緩存步數(shù)b的數(shù)值,微處理器不輸出步數(shù)b的數(shù)值,當(dāng)步數(shù)b大于或等于c時(shí),微處理器輸出步數(shù)b的數(shù)值。
c≥6,緩存步數(shù)主要用在判斷何時(shí)開(kāi)始進(jìn)入計(jì)步狀態(tài),為了避免一些擾動(dòng),比如腳的任意晃動(dòng)等,這里設(shè)計(jì)了緩存步數(shù)就是當(dāng)步數(shù)大于或等于c步時(shí)候開(kāi)始進(jìn)入計(jì)步模式,微處理器輸出步數(shù)b的數(shù)值到顯示屏等模塊,后面產(chǎn)生的步數(shù)將進(jìn)行累加,在沒(méi)有達(dá)到c步的時(shí)候則先暫時(shí)緩存這些步數(shù)。
作為優(yōu)選,所述一種基于三軸加速度傳感器的動(dòng)態(tài)切換計(jì)算軸的計(jì)步方法還包括以下步驟:當(dāng)加速度變化曲線圖中的最后一個(gè)波峰之后連續(xù)d個(gè)采樣點(diǎn)都沒(méi)有出現(xiàn)新的波峰時(shí),微處理器結(jié)束本次計(jì)步,將加速度變化曲線圖清零,如果此時(shí)步數(shù)b大于或等于c,計(jì)算出本次計(jì)步的總步數(shù)c=b+2。
c≥6,當(dāng)最后一個(gè)波峰之后連續(xù)d(如80)個(gè)采樣點(diǎn)都沒(méi)有出現(xiàn)新的波峰時(shí),判斷人體停止運(yùn)動(dòng),結(jié)束計(jì)步,總步數(shù)加2,即把滯后的最后一個(gè)波峰換算成步數(shù)加進(jìn)總步數(shù)。
作為優(yōu)選,所述三軸加速度傳感器的檢測(cè)頻率為25hz,k為8-15。
作為優(yōu)選,所述步驟s2中在根據(jù)選擇的數(shù)據(jù)繪制出加速度變化曲線圖之前采用二次均值濾波方法對(duì)選擇的數(shù)據(jù)進(jìn)行濾波。采用二次均值濾波方法,使得到的數(shù)據(jù)更加平滑,計(jì)算復(fù)雜度更低,效率更快。
作為優(yōu)選,三軸加速度傳感器的數(shù)據(jù)上報(bào)模式采用fifo模式。
本發(fā)明的有益效果是:在人運(yùn)動(dòng)狀態(tài)變化時(shí),動(dòng)態(tài)切換計(jì)算軸,保證了人各個(gè)運(yùn)動(dòng)狀態(tài)下的計(jì)步準(zhǔn)確性。
附圖說(shuō)明
圖1是本發(fā)明的一種工作流程圖。
具體實(shí)施方式
下面通過(guò)實(shí)施例,并結(jié)合附圖,對(duì)本發(fā)明的技術(shù)方案作進(jìn)一步具體的說(shuō)明。
實(shí)施例:本實(shí)施例的一種基于三軸加速度傳感器的動(dòng)態(tài)切換計(jì)算軸的計(jì)步方法,三軸加速度傳感器設(shè)置在鞋內(nèi)且x軸正方向朝向鞋體前方,如圖1所示,包括以下步驟:
s1:微處理器讀取三軸加速度傳感器輸出的檢測(cè)數(shù)據(jù),根據(jù)人體運(yùn)動(dòng)狀態(tài)選擇相應(yīng)的數(shù)據(jù)進(jìn)行處理,人體運(yùn)動(dòng)狀態(tài)初始設(shè)置為走路狀態(tài),當(dāng)人體運(yùn)動(dòng)狀態(tài)為走路狀態(tài)或慢跑狀態(tài)時(shí),只選擇x軸加速度數(shù)據(jù)進(jìn)行處理,當(dāng)人體運(yùn)動(dòng)狀態(tài)為快速跑狀態(tài)時(shí),只選擇xyz三軸合加速度數(shù)據(jù)進(jìn)行處理;
s2:微處理器根據(jù)選擇的數(shù)據(jù)繪制出加速度變化曲線圖,檢測(cè)加速度變化曲線圖中的波峰,當(dāng)某個(gè)波峰對(duì)應(yīng)的加速度值小于或等于1.5g時(shí),將該波峰去除,當(dāng)相鄰兩個(gè)波峰之間的采樣點(diǎn)小于設(shè)定值10時(shí),將這兩個(gè)波峰中加速度值最小的波峰去除,波峰對(duì)應(yīng)的時(shí)間點(diǎn)為腳落地的時(shí)刻;
s3:微處理器根據(jù)加速度變化曲線圖中的波峰數(shù)目a計(jì)算出當(dāng)前計(jì)步步數(shù)b,b=(a-1)×2,當(dāng)步數(shù)b小于6時(shí),緩存步數(shù)b的數(shù)值,微處理器不輸出步數(shù)b的數(shù)值,當(dāng)步數(shù)b大于或等于6時(shí),微處理器輸出步數(shù)b的數(shù)值并保存;
s4:微處理器判斷當(dāng)前人體的運(yùn)動(dòng)狀態(tài)并進(jìn)行設(shè)置,判斷當(dāng)前人體運(yùn)動(dòng)狀態(tài)并進(jìn)行設(shè)置的方法包括以下步驟:統(tǒng)計(jì)最新一個(gè)波峰的前兩個(gè)波峰之間的采樣點(diǎn)個(gè)數(shù)d,當(dāng)10≤d<18且最新一個(gè)波峰的前一個(gè)波峰加速度值大于5g時(shí),判斷人體處于快速跑狀態(tài),將人體運(yùn)動(dòng)狀態(tài)設(shè)置為快速跑狀態(tài);當(dāng)18≤d≤25時(shí),判斷人體處于慢跑狀態(tài),將人體運(yùn)動(dòng)狀態(tài)設(shè)置為慢跑狀態(tài);當(dāng)25<d≤80時(shí),判斷人體處于走路狀態(tài),將人體運(yùn)動(dòng)狀態(tài)設(shè)置為走路狀態(tài)。
當(dāng)加速度變化曲線圖中的最后一個(gè)波峰之后連續(xù)80個(gè)采樣點(diǎn)都沒(méi)有出現(xiàn)新的波峰時(shí),微處理器結(jié)束本次計(jì)步,將加速度變化曲線圖清零,如果此時(shí)步數(shù)b大于或等于6,計(jì)算出本次計(jì)步的總步數(shù)c=b+2。
三軸加速度傳感器采用lis3dh這款傳感器來(lái)舉例說(shuō)明,lis3dh傳感器設(shè)置采樣率為25hz、采集的計(jì)算軸為x、y和z、加速度的量程設(shè)置為正負(fù)8g和數(shù)據(jù)上報(bào)模式為fifo模式等。出于省電考慮,傳感器在不工作情況下將進(jìn)入低功耗模式。在這種低功耗模式場(chǎng)景下還可以被喚醒,這里主要采用運(yùn)動(dòng)中斷喚醒的方法,就是當(dāng)xyz三軸合加速度超過(guò)一定閾值(如250mg)時(shí),傳感器重新進(jìn)入工作模式。
本方法的三軸加速度傳感器設(shè)置在鞋體內(nèi),三軸加速度傳感器的x軸正方向朝向鞋體前方,y軸正方向朝向鞋體左側(cè),z軸正方向豎直向上,通過(guò)檢測(cè)人體單腳的運(yùn)動(dòng)情況進(jìn)行計(jì)步。步驟s2中在根據(jù)選擇的數(shù)據(jù)繪制出加速度變化曲線圖之前采用二次均值濾波方法對(duì)選擇的數(shù)據(jù)進(jìn)行濾波。采用二次均值濾波方法,使得到的數(shù)據(jù)更加平滑,計(jì)算復(fù)雜度更低,效率更快。
本方法根據(jù)加速度變化曲線圖中變化曲線的極大值來(lái)判斷波峰,當(dāng)加速度超過(guò)1.5g時(shí),即可進(jìn)入波峰的判斷條件里面,同時(shí)也會(huì)引入偽波峰,由于人走路或者跑步的極限頻率可以估算出來(lái),波峰之間的間距不會(huì)小于10個(gè)采樣點(diǎn),所以當(dāng)兩個(gè)波峰之間的間距小于10時(shí),即可根據(jù)波峰值大小,選取較大的值作為一個(gè)計(jì)步的波峰,即數(shù)值較大的波峰為真波峰,數(shù)值較小的波峰為偽波峰。
由于只在一只鞋子上設(shè)置三軸加速度傳感器,加速度變化曲線圖上出現(xiàn)一次波峰,人左右腳各走了一步,所以,波峰與步數(shù)是1比2的關(guān)系,即一個(gè)波峰對(duì)應(yīng)走路2步。由于存在偽波峰,所以最后一個(gè)波峰不能判斷是否是真波峰,本方法在最新出現(xiàn)一個(gè)波峰時(shí),才計(jì)算前一個(gè)波峰是否是真波峰,所以本方法計(jì)步有一個(gè)波峰的滯后。
本方法根據(jù)最新一個(gè)波峰的前兩個(gè)波峰之間的采樣點(diǎn)個(gè)數(shù)d及最新一個(gè)波峰的前一個(gè)波峰加速度值判斷人體當(dāng)前的運(yùn)動(dòng)狀態(tài)。當(dāng)人體處于走路狀態(tài)或慢跑狀態(tài)時(shí),x軸、y軸、z軸的檢測(cè)數(shù)據(jù)較準(zhǔn)確,采用xyz三軸合加速度的數(shù)據(jù)進(jìn)行計(jì)步;當(dāng)人體處于快速跑狀態(tài)時(shí),人體朝前方高速前進(jìn),人的腳在y軸、z軸方向的運(yùn)動(dòng)幅度很小,檢測(cè)數(shù)據(jù)不準(zhǔn)確,因此,只選取x軸加速度的數(shù)據(jù)進(jìn)行計(jì)步,保證計(jì)步的精確性。
緩存步數(shù)主要用在判斷何時(shí)開(kāi)始進(jìn)入計(jì)步狀態(tài),為了避免一些擾動(dòng),比如腳的任意晃動(dòng)等,這里設(shè)計(jì)了緩存步數(shù)就是當(dāng)步數(shù)超過(guò)5步時(shí)候開(kāi)始進(jìn)入計(jì)步模式,微處理器輸出步數(shù)b的數(shù)值到顯示屏等模塊,后面產(chǎn)生的步數(shù)將進(jìn)行累加,在沒(méi)有達(dá)到5步的時(shí)候則先暫時(shí)緩存這些步數(shù)。
當(dāng)最后一個(gè)波峰之后連續(xù)80個(gè)采樣點(diǎn)都沒(méi)有出現(xiàn)新的波峰時(shí),判斷人體停止運(yùn)動(dòng),結(jié)束計(jì)步,總步數(shù)加2,即把滯后的最后一個(gè)波峰換算成步數(shù)加進(jìn)總步數(shù)。