葉繼超, 關(guān)勝曉
(中國科學(xué)技術(shù)大學(xué) 自動化系,安徽 合肥 230026)
微機(jī)電系統(tǒng)(micro-electro-mechanical system,MEMS)加速度傳感器具有體積小、測量精度高、功耗低等優(yōu)點(diǎn)[1],廣泛應(yīng)用于可穿戴設(shè)備中,文獻(xiàn)[2]使用MEMS設(shè)計(jì)了一種可以在空間中使用的鼠標(biāo),文獻(xiàn)[3]使用MEMS實(shí)現(xiàn)了空間定位等功能。文獻(xiàn)[4,5]分別將MEMS放置于腰間和小腿處進(jìn)行了步長距離估測,但兩種方式對使用者穿戴均造成不便。文獻(xiàn)[6]采用了行人的身高與步頻估算步長,文獻(xiàn)[7]提出了一種基于模糊邏輯的非線性步長估計(jì)方法,以步頻、身高、體重作為邏輯系統(tǒng)輸入變量設(shè)計(jì)模糊邏輯控制器,得到可變的步長估計(jì)系數(shù),從而實(shí)現(xiàn)了步長動態(tài)估算,但以上2種方法測量的步長精確度有限。將MEMS置于腳部,利用壓力傳感器[9]、地面反作用力[10]、開關(guān)傳感器[8]或者腳移動模式[11]等方式計(jì)算步長,盡管計(jì)算精度良好,但對測試條件要求比較嚴(yán)格且實(shí)驗(yàn)設(shè)備成本高,很難在生活中廣泛應(yīng)用。
本文設(shè)計(jì)了一種新型步長測量系統(tǒng),采用MPU6050作為加速度傳感器[12]、CC2541藍(lán)牙模塊負(fù)責(zé)對數(shù)據(jù)進(jìn)行采集和上傳,系統(tǒng)成本低廉。MPU6050體積小,易于平放置鞋底,避免了穿戴不方便。采用C#作為程序語言進(jìn)行了上位機(jī)設(shè)計(jì),結(jié)合數(shù)據(jù)處理、坐標(biāo)變換、脈沖提取以及積分等方法實(shí)現(xiàn)了對任意大小步長距離的計(jì)算。
因?yàn)橄到y(tǒng)需要將MPU6050傳感器模塊水平置于鞋底,且需要固定,所以用到的實(shí)驗(yàn)工具主要有:一雙底足夠厚且軟的運(yùn)動鞋、工具刀、鑷子、膠槍及膠棒等。
系統(tǒng)采用MPU6050加速度計(jì)模塊,模塊內(nèi)部對原始的加速度和角速度進(jìn)行濾波處理,并通過卡爾曼濾波估測出最優(yōu)的角度值,故其能夠輸出穩(wěn)定的三軸加速度、角速度和角度值,系統(tǒng)選擇加速度量程為(-16~16)gn,角度量程為-180°~180°。
采用了2塊CC2541藍(lán)牙模塊,分別用于下位機(jī)端和上位機(jī)端,實(shí)現(xiàn)了數(shù)據(jù)的無線傳輸。MPU6050加速度計(jì)鑲嵌在鞋底,藍(lán)牙模塊置于鞋面上以保證數(shù)據(jù)可靠傳輸。
C#程序語言上位機(jī)的工作流程如圖1。
軟件分為4部分:接收、計(jì)算并顯示數(shù)據(jù)變化曲線、坐標(biāo)變換、波形規(guī)范及脈沖提取算法、計(jì)算單步步長距離。
圖1 C#上位機(jī)軟件工作流程
1)接收、計(jì)算并顯示數(shù)據(jù)變化曲線
下位機(jī)發(fā)送的數(shù)據(jù)以數(shù)據(jù)幀的形式體現(xiàn),每11個(gè)字節(jié)的數(shù)據(jù)為一幀,故上位機(jī)接收的數(shù)據(jù)首先需要進(jìn)行幀校驗(yàn),幀校驗(yàn)公式為
Data[10]=(Data[0]+Data[1]+Data[2]+Data[3]+Data[4]+Data[5]+Data[6]+Data[7]+Data[8]+
Data[9])& 0XFF
(1)
式中Data為接收到的數(shù)據(jù),每一幀的最后一個(gè)字節(jié)為校驗(yàn)值,如果前10個(gè)字節(jié)的總和與0XFF邏輯與運(yùn)算后等于第11個(gè)字節(jié)的值,則該幀數(shù)據(jù)準(zhǔn)確。
對得到的數(shù)據(jù)進(jìn)行計(jì)算可求得加速度、角度等參數(shù)
a[0]=long(((short)(Data[3]<<8|Data[2]))×4.79),a[1]=long(((short)(Data[5]<<8|Data[4]))×4.79),a[2]=long(((short)(Data[7]<<8|Data[6]))×4.79),angle[0]=long((short)(Data[3]<<8|Data[2])×5.49,angle[1]=long((short)(Data[5]<<8|Data[4])×5.49),angle[2]=long((short)(Data[7]<<8|Data[6]×5.49)
(2)
式中a[0],a[1],a[2]分別為x,y,z軸加速度;angle[0],angle[1],angle[2]為繞x,y,z軸的旋轉(zhuǎn)角度。為了保證數(shù)據(jù)的精度,此時(shí)計(jì)算出來的加速度較實(shí)際的加速度值擴(kuò)大了10 000倍,角度比實(shí)際的角度值擴(kuò)大了1 000倍。
為了確保對數(shù)據(jù)變化實(shí)時(shí)顯示,系統(tǒng)中選用了C#中的ZedGraph控件及多線程機(jī)制,圖2為上位機(jī)顯示的3個(gè)軸向的加速度的變化曲線。
圖2 三軸加速度變化曲線
2)坐標(biāo)變換
(1)坐標(biāo)變換模型
圖3中,規(guī)定船前進(jìn)的方向?yàn)閦軸,此時(shí)橫滾相當(dāng)于繞z軸旋轉(zhuǎn)φ角,俯仰相當(dāng)于繞y軸旋轉(zhuǎn)θ角,偏轉(zhuǎn)相當(dāng)于繞x軸旋轉(zhuǎn)ψ角,對于旋轉(zhuǎn)順序,作如下規(guī)定
RPY(φ,θ,ψ)=Rot(z,φ)Rot(y,θ)Rot(x,ψ)
(3)
式中RPY為橫滾、俯仰、偏轉(zhuǎn)3種旋轉(zhuǎn)的組合變換,其中
(4)
圖3 船體的橫滾、俯仰和偏轉(zhuǎn)
(2)坐標(biāo)變換模型在系統(tǒng)中的應(yīng)用
取MPU6050所在的坐標(biāo)系為S坐標(biāo)系,大地所在的坐標(biāo)系為G坐標(biāo)系,則MPU6050在空中平移和翻轉(zhuǎn)時(shí)實(shí)際是其相對于G坐標(biāo)系發(fā)生了平移和翻轉(zhuǎn)運(yùn)動,圖4為這一坐標(biāo)變換關(guān)系。
圖4 加速度傳感器坐標(biāo)變換示意
圖4中OgXgYgZg坐標(biāo)系代表G坐標(biāo)系,其原點(diǎn)Og代表鞋離地前MPU6050垂直投影到地面上的點(diǎn),取人體前進(jìn)方向?yàn)閅g,橫移方向?yàn)閄g,垂直于地面的方向?yàn)閆g。OSXSYSZS坐標(biāo)系代表S坐標(biāo)系,在此坐標(biāo)系中,規(guī)定鞋頭的方向?yàn)閅S,鞋內(nèi)側(cè)的方向?yàn)閄S,垂直于鞋底的方向?yàn)閆S。
根據(jù)RPY坐標(biāo)變換原理,可以將S坐標(biāo)系下的傳感器測得的加速度轉(zhuǎn)換成G坐標(biāo)系下的加速度。圖5為經(jīng)過RPY坐標(biāo)變換之后G坐標(biāo)系下的加速度變化曲線。
圖5 G坐標(biāo)系下的加速度變化曲線(規(guī)范前)
圖中的脈沖代表人體向前邁出了一步,兩個(gè)脈沖之間的部分代表加速度計(jì)所在的腳站立不動。
3)波形規(guī)范及脈沖提取算法
經(jīng)過坐標(biāo)變換的加速度曲線可以看出:在人體原地不動時(shí),加速度的輸出并不為零,如果對此時(shí)的加速度進(jìn)行二次積分求取位移,得到的步長將不為零,有悖于實(shí)際。繼續(xù)觀察經(jīng)過坐標(biāo)變換之后的加速度顯示曲線可知,如果僅僅計(jì)算一步的距離,只需要對行進(jìn)過程的加速度進(jìn)行二次積分即可,而靜止時(shí)的加速度不應(yīng)該作二次積分運(yùn)算。
針對加速度曲線變化規(guī)律,設(shè)計(jì)了一種波形規(guī)范與脈沖提取的算法,該算法在一個(gè)新線程中獨(dú)立循環(huán)運(yùn)行,首先,設(shè)置了一個(gè)開關(guān)變量button,如果button為true,則認(rèn)為人體處于步行狀態(tài);如果button為false,則認(rèn)為人體處于靜止?fàn)顟B(tài)。然后,設(shè)置進(jìn)入步行狀態(tài)的標(biāo)志位flag_in和靜止?fàn)顟B(tài)的標(biāo)志位flag_out,當(dāng)進(jìn)入步行狀態(tài)時(shí),flag_in=true, flag_out=false, button=true。當(dāng)進(jìn)入靜止?fàn)顟B(tài)時(shí)flag_in=false, flag_out=true,button=false。設(shè)置ay為前行方向的加速度,并記錄ay的4個(gè)連續(xù)的歷史值為ay_his[0]~ay_his[3],進(jìn)入步行狀態(tài)的條件為ay-ay_his[0]>delta,其中delta為一個(gè)閾值,根據(jù)經(jīng)驗(yàn)設(shè)置,圖6為算法的程序流程。
圖6 波形規(guī)范算法流程
圖中的button_his代表了button變量上一次的歷史值。首次運(yùn)行該線程時(shí)將button初始化為true,flag_in初始化為false。
實(shí)驗(yàn)表明:算法能夠有效地提取人體行走時(shí)的整個(gè)脈沖波形,并記錄行走狀態(tài)下的加速度值。經(jīng)過規(guī)范之后的加速度曲線顯示如圖7所示。
圖7 波形規(guī)范之后的加速度變化曲線
與圖5對比,在步行狀態(tài)下圖7的數(shù)據(jù)與圖5一致,保證了采集的數(shù)據(jù)均為最原始、最準(zhǔn)確的數(shù)據(jù),而在靜止?fàn)顟B(tài)下,圖7的加速度值為零,消除了靜態(tài)誤差。
4)計(jì)算單步步長距離
加速度經(jīng)過二次積分可以求取位移,圖8為速度—時(shí)間變化曲線。速度與加速度之間存在著如下的關(guān)系
vt=vt0+a(t)t
圖8 速度—時(shí)間曲線
如果從時(shí)間t0開始采樣,到時(shí)刻t結(jié)束,則在這段連續(xù)的時(shí)間域中,對于位移s(t)、速度v(t)和加速度a(t),存在
(5)
式中v(t0)為系統(tǒng)在t0時(shí)刻的瞬時(shí)速度;s(t0)為系統(tǒng)從0~t0時(shí)刻的累積位移。
由于MPU6050屬于數(shù)字傳感器,其輸出的數(shù)據(jù)為數(shù)字離散值,所以,依據(jù)高等數(shù)學(xué)知識可以將速度—時(shí)間曲線分解為若干個(gè)直角梯形,當(dāng)t=t0時(shí),s(t)=0,有
(tn-tn-1)
(6)
令t1-t0=t2-t1=…=tn-tn-1=Δt,其中,Δt為MPU6050的采樣時(shí)間間隔,當(dāng)n>1時(shí),有
(7)
上式可用于在連續(xù)時(shí)間域中計(jì)算s(t),但如果在離散域中計(jì)算s(t),應(yīng)使用
(8)
式中v[k]為k時(shí)刻的速度值。當(dāng)n>1時(shí),有
…+a[n-1])Δt
(9)
…+v[n-1])Δt
(10)
將式(9)、式(10)合并[12],用a[n]表示s[n],有
s[n]=n·v[0]·Δt+[(n-1)·a[1]+(n-2)·
a[n])·(Δt)2
(11)
可知,只要已知系統(tǒng)的初始速度v[0]和各個(gè)時(shí)刻的加速度即可求出目標(biāo)物體的軸向移動距離??紤]到在實(shí)際系統(tǒng)中計(jì)算的是單步距離,因此,實(shí)際上在邁出一步之前的初始速度為零,即v[0]等于零,將式(11)進(jìn)一步化簡為
s[n]=[(n-1)·a[1]+(n-2)·a[2]+…+
(12)
為了保證實(shí)驗(yàn)的準(zhǔn)確性,排除其他因素的干擾,實(shí)驗(yàn)環(huán)境選擇了一條長直樓道,且地面盡量水平以減少傳感器傾斜帶來的誤差影響。人體徑直向前行走,對行走過程中的每一步的步長進(jìn)行測試,測試結(jié)果如表1。
表1 系統(tǒng)對單步步長的測試結(jié)果
實(shí)際位移值為使用軟尺測得,測試結(jié)果表明:系統(tǒng)能將單步步長的測量誤差控制在3.4 %以內(nèi)。
研究了一種新型的計(jì)步器,系統(tǒng)對于單步的測量誤差能控制在3.4 %以內(nèi),實(shí)現(xiàn)了良好的單步步長測量效果。另外,系統(tǒng)還可以通過記錄行走過程中的有效脈沖數(shù)計(jì)算行走的步數(shù),累加步長值計(jì)算總的行程,從而為穿戴設(shè)備提供了一種新型的計(jì)步及測距原理。
參考文獻(xiàn):
[1] 劉 宇,鞠文斌,劉羽熙.MEMS加速度傳感器計(jì)量檢測技術(shù)的研究進(jìn)展[J].計(jì)測技術(shù),2010,30(4):5-8.
[2] 周 獲.基于MEMS技術(shù)的無線空中鼠標(biāo)的研究[D].廈門:華僑大學(xué),2013.
[3] 董 威.六軸MEMS傳感器空間定位設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2014(7):250-252.
[4] 任凱天,劉 昱,汪少初.基于腰部移動模型的行走步長計(jì)算方案[J].電子測量與儀器學(xué)報(bào),2012,26(8):711-715.
[5] 任凱天.基于慣性傳感系統(tǒng)的人員行進(jìn)分析及位移計(jì)算[D].天津:天津大學(xué),2012.
[6] 劉 宇,周 帆,李云梅,等.基于人體多方位運(yùn)動的三維自主導(dǎo)航定位算法[J].中國慣性技術(shù)學(xué)報(bào),2016,24(4):449-453.
[7] 賀鋒濤,趙勝利,周廣平,等.基于模糊邏輯的室內(nèi)導(dǎo)航步長估計(jì)方法研究[J].電子技術(shù)應(yīng)用,2016,42(11):59-61.
[8] Zijlstra W,Rutgers A,Hof A L,et al.Voluntary and involuntary adaptation of walking to temporal and spatial constraints[J].Gait & Posture,1995,3(1):13-18.
[9] Zijlstra W,Rutgers F A W,Weerden T W.Voluntary and involuntary adaptation of gait in Parkinson’s disease[J].Gait and Postrue,1998,7:53-63.
[10] Zijlstra W,Dietz V.Adaptability of the human stride cycle during split-belt walking[J].Gait & Posture,1995,3(4):250-257.
[11] Huitema R B,Hof A L,Postema K.Ultrasonic motion analysis system—measurement of temporal and spatial gait parame-ters[J].Journal of Biomechanics,2002,35(6):837-842.
[12] 胡三慶.基于MEMS加速度傳感器的空間運(yùn)動軌跡追蹤系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:華中科技大學(xué),2009.