蘭 洋,李 杰,*,張艷艷,車曉蕊,楊文卿
(1.中北大學儀器科學與動態(tài)測試教育部重點實驗室,太原 030051;2.蘭州資源環(huán)境職業(yè)技術(shù)學院,蘭州 730000)
基于慣性傳感器原理的人體動作捕捉系統(tǒng)以其實時性好、環(huán)境適應性強、體積小穿戴方便、成本低等特點被廣泛應用于電子游戲、康復醫(yī)學、影視作品創(chuàng)作、運動分析以及非物質(zhì)文化遺產(chǎn)保護等領(lǐng)域。慣性動作捕捉與復現(xiàn)系統(tǒng)涉及三方面技術(shù):動作捕捉、軌跡捕捉、動作復現(xiàn)[1-2]。
通常行人的軌跡捕捉算法采用零速修正來抑制捷聯(lián)慣性導航解算過程中的位置誤差、速度誤差、姿態(tài)誤差,以到達較好的解算效果[3-5]。慣性動作捕捉與復現(xiàn)系統(tǒng)最終目的是把捕捉的動作和軌跡數(shù)據(jù)導入PC端進行人體模型的動畫復現(xiàn),其中軌跡數(shù)據(jù)驅(qū)動人體模型進行空間移動,而由于零速檢測不準確導致姿態(tài)修正延時,Kalman濾波器誤差補償不充分等原因,導致捕捉到的軌跡不夠平滑,甚至嚴重畸變,且定位誤差大[6-8],導致最終PC端人體模型空間移動時產(chǎn)生嚴重的抖動或位置跳變。
本文首先對動作捕捉技術(shù)方案作了簡要說明,然后針對零速檢測過程中出現(xiàn)的誤檢測問題提出了一種改進的零速檢測算法,同時在Kalman濾波算法中引入姿態(tài)深度修正模塊,在上述基礎(chǔ)上構(gòu)建了完整的基于改進零速檢測的軌跡捕捉算法框架,最后通過實物試驗從精度和穩(wěn)定性兩方面驗證了軌跡捕捉算法的可行性。
慣性動作捕捉與復現(xiàn)系統(tǒng)包括三方面技術(shù):動作捕捉、軌跡捕捉、動作復現(xiàn)。其中動作捕捉是利用分布在人體身上的慣性傳感器節(jié)點測量出各個關(guān)節(jié)點相對于根節(jié)點的位置信息。而軌跡捕捉則是通過慣性傳感器節(jié)點信息計算出根節(jié)點的絕對位置。中間節(jié)點HUB對數(shù)據(jù)按規(guī)定格式整合。最終輸入PC端人體模型中,驅(qū)動人體模型以根節(jié)點為基準的動作復現(xiàn)和空間移動。
圖1 系統(tǒng)技術(shù)方案
2.1.1 零速區(qū)間的粗檢測
零速檢測的目的是檢測出人體在行走過程中腳掌與地面完全接觸的一系列時間區(qū)間,并認為在該區(qū)間內(nèi)腳部速度為零,將零速作為高精度的速度觀測量進行狀態(tài)誤差估計,不斷地對行走過程中的導航誤差進行修正,達到抑制慣導解算誤差累積的目的,所以零速區(qū)間檢測的精度將直接影響最終軌跡捕捉的效果。
綜合考慮動作捕捉應用場景,選用基于陀螺儀數(shù)據(jù)和加速度數(shù)據(jù)組合的方式進行零速檢測,此種檢測方法在濕滑、顛簸環(huán)境以及特殊步態(tài)下,如上下樓,檢測效果優(yōu)于單一數(shù)據(jù)源檢測法[9-10]。其檢測統(tǒng)計量計算的數(shù)學表達如下:
(1)
根據(jù)大量試驗設(shè)置合理閾值,檢測統(tǒng)計量Tk大于閾值的部分則被檢測為擺動區(qū),小于閾值的部分檢測為零速區(qū),如式(2):
(2)
式中:ztk為檢測結(jié)果,‘1’表示為零速,‘0’則表示擺動,threshold為閾值。
實際上,人在行走過程中并不存在真正的零速,因為即使在腳掌與地面完全接觸的時間內(nèi),由于腳部的旋轉(zhuǎn)運動、切向加速度以及傳感器的測量誤差等原因,造成一部分本應處于零速區(qū)間內(nèi)的檢測統(tǒng)計量Tk在閾值threshold上下波動,其局部上揚部分會造成誤檢測。
圖2 零速誤檢測試驗圖
圖2為成年男性行走時由組合檢測法得到的檢測數(shù)據(jù),其步頻為100步/分,其中圖2(a)為檢測統(tǒng)計量Tk的圖像,局部放大圖中紅色曲線為其中一個零速區(qū)間的統(tǒng)計量值,而黑色直線為檢測閾值threshold。圖2(b)為檢測結(jié)果zt的圖像,其中‘1’表示零速,‘0’表示擺動,其局部放大圖與圖2(a)中局部放大區(qū)域相對應。因此,由于圖2(a)統(tǒng)計量Tk圍繞閾值的局部上揚波動造成了圖2(b)中的誤檢,即把零速區(qū)的一部分誤檢為擺動區(qū)(下稱偽擺動區(qū))。
上述誤檢測廣泛地存在于零速檢測結(jié)果中,最終導致算法不能對行走過程中的位置、速度、姿態(tài)誤差進行及時地修正。這是導致捕捉軌跡粗糙的一個重要原因。
2.1.2 零速區(qū)間的精檢測
人正常行走的步伐周期分為零速區(qū)和擺動區(qū),根據(jù)趙紅宇等人的研究[11],在一個步伐周期內(nèi),零速區(qū)和擺動區(qū)長度分別占整個步伐周期的1/3和2/3,而上述誤檢測得到的偽擺動區(qū)實為零速區(qū)的一部分,所以實際上夾雜在擺動區(qū)間中的偽擺動區(qū)長度值很小,可作為異常值處理。對零速粗檢測結(jié)果zt進行處理得到:
tnon_zupt=(l1,l2,…,li,…,ln)
(3)
式中:tnon_zupt為粗檢測得到的擺動區(qū)長度序列(包含偽擺動區(qū)),li為零速粗檢測結(jié)果中某個擺動區(qū)間的長度值。
根據(jù)人體行走統(tǒng)計規(guī)律,人在某一段正常行走的過程中其擺動區(qū)間的長度值序列即tnon_zupt服從正態(tài)分布,則根據(jù)拉依達準則法,tnon_zupt滿足式(4):
P(|tnon_zupt-μ|<3σ)≥99.997
(4)
式中:σ和μ分別為tnon_zupt的方差和均值,P(·)表示對括號內(nèi)式子求概率。
而tnon_zupt中偽擺動區(qū)間長度值作為異常值不滿足式(4),利用MATLAB可通過式(5)對偽擺動區(qū)進行定位:
|tnon_zupt-μ|>3σ
(5)
式中:σ和μ同式(4)。
最終將zt中誤檢測得到的偽擺動‘0’替換為零速‘1’從而實現(xiàn)零速精檢測。
2.1.1Kalman濾波器的建立和參數(shù)設(shè)置
上文中零速精檢測出的零速可視為精度極高的速度值,利用3個狀態(tài)量間的相互耦合可修正位置、速度、姿態(tài)誤差。本文僅選取位置、速度、姿態(tài)作為卡爾曼濾波器狀態(tài)量即:
X=[pos velo alt]
(6)
狀態(tài)方程為:
Xk=AXk-1+wk-1
(7)
式中:A為狀態(tài)轉(zhuǎn)移矩陣,wk-1為過程激勵噪聲。
利用檢測出的零速構(gòu)建三維偽觀測量,對位置、姿態(tài)誤差進行估計。觀測方程如下:
Zk=HXk+vk
(8)
式中:H為觀測矩陣,vk為觀測噪聲。
卡爾曼濾波器相當于誤差估計器,可用每個步伐周期中的零速估計出上一個步伐周期中積累的導航誤差,通過卡爾曼濾波器的每次更新計算可以對狀態(tài)量進行修正,KF算法執(zhí)行過程如下:
時間更新:
(9)
測量更新:
(10)
Q=diag([(σf)T,(σw)T]2)R=diag((σv)2) >
(11)
2.1.2 姿態(tài)角的深度修正
由式(10)中的卡爾曼濾波器表達式,即:
(12)
通過式(12)可得出修正后的狀態(tài)量,但實際得到的軌跡難以達到動作復現(xiàn)的要求,就整體軌跡而言,定位精度依然較低,局部來看體現(xiàn)在軌跡的明顯波動。因此需要進一步對姿態(tài)進行修正。
由式(12)可知,狀態(tài)誤差即為位置、速度、姿態(tài)誤差為:
(13)
其中姿態(tài)誤差表示如下:
Δalt=[ψ θ γ]
(14)
由慣性導航原理可知,當偏航、俯仰、滾轉(zhuǎn)角都為小角時,可忽略姿態(tài)變換矩陣中小角間的高階小量,此時旋轉(zhuǎn)后坐標系的最終角位置與旋轉(zhuǎn)次序無關(guān)[12-13]。則姿態(tài)修正矩陣可表示為:
(15)
(16)
2.1.3 基于ZUPT的軌跡捕捉算法執(zhí)行流程
綜上所述,本文所述基于零速修正(ZUPT)的軌跡捕捉算法框架如圖3所示。
圖3 基于ZUPT的軌跡捕捉算法框架
由圖3可知,在算法執(zhí)行進程中,首先進行時間更新,當處于非零速狀態(tài)時,直接由時間更新得到的導航參數(shù),輸出該時刻的位置、速度、姿態(tài)。而當檢測出零速時,時間更新得到的導航參數(shù)則不作為最終結(jié)果輸出,而是連同計算出的濾波器參數(shù)傳遞給下一步進行測量更新,通過卡爾曼濾波器方程對狀態(tài)量進行修正,并單獨對姿態(tài)進行深度修正最終輸出位置、速度、姿態(tài)。
為驗證動作捕捉系統(tǒng)軌跡捕捉算法可行性,設(shè)計了一個簡易鞋式試驗設(shè)備,試驗使用的硬件主控單元為STM32單片機,MEMS慣性測量單元采用價格便宜的MPU6050,其中陀螺量程為±2 000 (°)/s,加速度計量程為±4gn。控制數(shù)據(jù)采樣頻率為250 Hz。由于采樣率較低,選取零速檢測窗口大小為3,經(jīng)過大量試驗,設(shè)置零速粗檢測的檢測閾值為30 000可以最大限度地減少誤檢測。本文設(shè)計了兩組試驗分別驗證軌跡算法的精度和穩(wěn)定性。
3.1.1 零速區(qū)間的檢測精度
精度試驗中,身高為178 cm的試驗人員采用約60步/min的步頻進行了繞八字形走試驗一圈,總行程約為70 m,下面進行相關(guān)分析。
圖4中紅色方形曲線為檢測出的零速區(qū)間,而藍色曲線為X軸陀螺儀原始數(shù)據(jù),其中圖4(a)為零速粗檢測的結(jié)果,圖4(b)為零速精檢測后的結(jié)果。本次試驗中經(jīng)過粗檢測后,有幾處誤檢測,分別為在開始行走后的11.352 s、21.384 s和24.772 s時刻,圖4(a)中局部圖為后兩個出現(xiàn)誤檢測的時刻。經(jīng)過零速精檢測后,由圖4(b)局部圖可知誤檢測被完全消除,同時可看出,檢測出的零速區(qū)間與陀螺零速時刻的輸出數(shù)據(jù)高度契合。
圖4 零速精檢測前后效果對比圖
3.1.2 姿態(tài)角深度修正的試驗效果
圖5(a)和圖5(b)分別為姿態(tài)角僅通過Kalman濾波器測量更新和經(jīng)過深度修正后得到的軌跡圖:
本次軌跡測試時,只進行了水平對準,而將初始航向角設(shè)為0。圖5中紅色方圈表示起點,箭頭方向代表八字繞行的行走方向。圖5(b)中軌跡終點與軌跡起點距離小于0.5 m,其定位誤差在行程的1%內(nèi),達到了比較好的效果,而圖5(a)中軌跡的起點和終點距離約為1.6 m,定位誤差超過了2%。同時由圖5中兩圖對比可見,經(jīng)過姿態(tài)深度修正后得到的軌跡平滑度明顯優(yōu)于僅進行濾波器補償?shù)能壽E,從而在一定程度上減少了 在動畫復現(xiàn)過程中人體模型抖動和位置跳變,可達到較好的復現(xiàn)效果。
進一步,對卡爾曼濾波器每次更新后的后驗誤差協(xié)方差開方后得到三軸位置誤差、三軸速度誤差以及三軸姿態(tài)誤差并作圖如圖6所示。
圖5 姿態(tài)深度修正前后軌跡圖
圖6 三軸導航信息誤差圖
由圖6中位置誤差可以看出,三軸位置誤差處于極為緩慢的發(fā)散中,幾乎不影響動畫復現(xiàn)的效果。本文采用改進的零速檢測極大地提高了檢測精度,可對速度誤差進行更為精確地修正,由圖6速度誤差,三軸速度誤差周期性地保持在0.004 2左右,說明周期性的測量更新抑制了速度誤差發(fā)散。圖6中姿態(tài)誤差中滾轉(zhuǎn)和俯仰角誤差基本保持不變,說明軌跡捕捉算法誤差修正效果明顯,相比之下偏航角誤差雖然小,但是處于相對快速的發(fā)散中,隨著導航時間的增加,航向角誤差將會成為導航解算過程中的主要誤差源,因此后續(xù)考慮引入磁傳感器對航向角誤差進行估計進一步修正航向角誤差。
圖7為三次繞行八字路線后計算得到的軌跡,由圖,三次行走的軌跡基本重合。整個行程約為210 m,行走時長為165 s,終點與起點坐標差為0.38 m,定位誤差在1%以內(nèi)。本文所述軌跡算法在較長的行走路程中能得到較為穩(wěn)定的軌跡,即軌跡算法具有較好的穩(wěn)定性。
圖7 穩(wěn)定性測試軌跡圖
本文通過介紹系統(tǒng)技術(shù)方案闡明了動作捕捉系統(tǒng)中動作捕捉、軌跡捕捉、動作復現(xiàn)的關(guān)系。進而為滿足捕捉軌跡的平滑度對零速檢測算法進行了改進,從而大大提高了零速檢測的可靠性,在此基礎(chǔ)之上構(gòu)建了完成的算法框架,并在算法中對軌跡捕捉姿態(tài)角進行了深度修正。試驗表明,本文提出的軌跡捕捉算法能得到較為平滑的捕捉軌跡,因此,在一定程度上能夠降低PC端動作復現(xiàn)過程中人體模型抖動,具有一定的工程應用價值。
參考文獻:
[1] 楊波. 基于MEMS慣性傳感器動作捕捉系統(tǒng)與軌跡追蹤的研究設(shè)計[D]. 電子科技大學,2014.
[2] 侯學輝. 基于無線傳輸技術(shù)的慣性動作捕捉系統(tǒng)研究與設(shè)計[D]. 山東大學,2016.
[3] 費程羽,蘇中,李擎. 行人慣性導航零速檢測算法[J]. 傳感器與微系統(tǒng),2016,35(3):147-150,153.
[4] 高鐘毓,王進,董景新,等. 慣性測量系統(tǒng)零速修正的幾種估計方法[J]. 中國慣性技術(shù)學報,1995(2):24-29,39.
[5] 唐文杰,呂志偉,張倫東,等. 基于零速修正輔助MIMU的行人導航算法研究[J]. 大地測量與地球動力學,2016,36(6):548-551.
[6] 張金亮,秦永元,梅春波. 基于MEMS慣性技術(shù)的鞋式個人導航系統(tǒng)[J]. 中國慣性技術(shù)學報,2011,19(3):253-256.
[7] 楊輝. 基于MEMS傳感器的高精度行人導航算法研究[D]. 廈門:廈門大學,2014.
[8] 黃欣,許建新,張苗,等. 基于行人運動模態(tài)辨識的室內(nèi)外無縫導航航向算法研究[J]. 傳感技術(shù)學報,2017,30(6):878-88.
[9] 劉文. 基于微機電慣性傳感器的船舶室內(nèi)導航算法研究[D]. 大連海事大學,2013.
[10] Skog I,Nilsson J O,Handel P. Evaluation of Zero-Velocity Detectors for Foot-Mounted Inertial Navigation Systems[P]. 2010 International Conference on Indoor Positioning and Indoor Navigation(IPIN),2010.
[11] 趙紅宇. 慣性行人導航系統(tǒng)的算法研究[D]. 大連理工大學,2015.
[12] 秦永元. 慣性導航[M]. 第2版. 北京:科學出社,2014:5-7.
[13] 劉俊,石云波,李杰. 微慣性技術(shù)[M]. 電子工業(yè)出版社,2005:40-43