李忠虎, 狄慧敏, 王金明
(內蒙古科技大學信息工程學院, 包頭 014010)
隨著時代發展,數據捕捉系統已經廣泛應用諸如航天、航海以及工業等領域[1]。慣性動作捕捉技術應用領域廣泛,在影視拍攝方面可以很好地彌補光學動作捕捉的缺點,在導航領域是解決室內導航技術的主要方法,在交互領域可以實現更加直觀便捷的交互體驗[2-5]。手勢識別作為新型人機交互方式之一,已成為一項越來越重要的熱點研究內容[6]。如劉磊[7]通過在人體上布設三軸陀螺儀、三軸加速度計和三軸地磁傳感器,對傳感器數據融合處理之后得出人體的位移和姿態角。
人體運動傳感器是運動捕捉的關鍵設備,主要分為慣性式、光學式、聲學式、電磁式、機械電動式等5種。傳統的動作捕捉系統使用外部傳感器如攝像頭等來捕捉人體動作,這種方法往往會受到場地、環境的限制。隨著微機械電子系統(MEMS)技術的發展,由MEMS器件構成的微型人體運動傳感器顯示出了更加突出的優點[8]。本文以微型運動傳感器為核心硬件,對空中手寫軌跡識別算法進行研究。

圖1 系統結構框圖Fig.1 System structure block diagram
系統結構如圖1所示,主要由微機械電子系統(MEMS)、微控制單元(MCU)和計算機系統三部分組成,MEMS負責載體加速度、角速度和地磁數據的采集,MCU負責對采集到的數據進行融合計算,計算機中的MATLAB程序負責前期的算法仿真實驗以及后期的軌跡繪制及識別。
該系統可用于檢測傳感器在三維空間的運動軌跡,并通過三維空間的姿態角變換矩陣將傳感器動態信息投影到二維坐標平面,經過一系列積分運算最終重現軌跡信息。將軌跡傳送到計算機中,經過神經網絡分類來識別手寫軌跡。
對于物體運動軌跡檢測系統,由于各種誤差源的存在,使得軌跡復原會帶來一定的誤差。因此,需要對誤差進行分析和建模,以降低誤差源對檢測系統的影響。
針對多慣性傳感器之間融合濾波估計姿態的問題,林森[9]采用基于加速度傳感器非線性特性的加速度數值修正算法;Madgwick[10]等使用梯度下降法優化提出了固定增益互補濾波器。本系統的具體實現原理如圖2所示。首先對MEMS數據進行第一次卡爾曼濾波,然后對加速度和角速度數據進行姿態融合處理,并利用地磁數據對姿態角進行修正,得到載體的姿態數據。將姿態數據轉換為四元數,結合MEMS采集到的加速度數據將載體坐標系中的三軸加速度數據轉換為地理坐標系中的三軸加速度數據,然后去除重力加速度進行加速度二重積分得到位移數據,最后對位移進行二次卡爾曼濾波并進行積分后得到軌跡。

圖2 卡爾曼濾波軌跡捕捉原理圖Fig.2 Kalman filter trajectory capture schematic diagram
本文使用卡爾曼濾波算法,針對原始三維加速度數據和三維軌跡數據分別設計濾波器。卡爾曼濾波分為兩個階段:狀態預測和狀態更新[11]。下面結合卡爾曼濾波的基本原理針對原始數據和軌跡預測兩個過程分別設計濾波器。
采用MEMS并結合Arduino硬件平臺,將MEMS原始數據采集到MATLAB中進行仿真。首先用MEMS在空間中寫一個數字“8”,將采集到的原始數據進行卡爾曼濾波。
設每次采集的數據和上次最優估計的數據相等,用上一周期得到的后驗估計量來估計下一周期的先驗估計量,于是可以設定狀態預測方程為

(1)
由上一時刻的后驗估計協方差估計當前先驗協方差:

(2)
得到先驗協方差后,下一步求取卡爾曼增益:

(3)
式(3)中:Kt表示卡爾曼增益;R表示觀測噪聲。
卡爾曼增益由先驗協方差和觀測噪聲來決定,由卡爾曼增益來決定最優值更相信預測還是更相信觀察。
得到了卡爾曼增益就可以計算當前時刻的后驗估計值:

(4)
式(4)中:Zt表示測量值。
最后計算后驗方差,為下一次循環做準備:

(5)
式(5)中:I表示單位矩陣。
對傳感器X、Y、Z軸的數據分別進行上述操作,可以分別得到X、Y、Z軸的加速度原始數據濾波后的效果圖,如圖3所示。
對X、Y、Z三軸加速度濾波前與濾波后的方差進行對比,見表1,濾波后演示數據方差明顯縮小。由方差的定義可知,方差是度量變量和其數學期望之間的偏離程度。所以由表1可知,經過濾波之后,X軸和Y軸的穩定性改善后約為50%,Z軸的穩定性改善后約為30%。
進行坐標系轉換主要有歐拉角和四元數兩種方式,采用四元數法進行坐標系轉換有顯著優勢,該方法轉換計算簡單且能避免萬向節死鎖的發生[12]。但MEMS并不能直接得到四元數,需要將歐拉角轉換為四元數。其轉換方法如下:

圖3 原始數據濾波Fig.3 Raw data filter

表1 濾波前后原始數據方差對比


(6)
MEMS采集到的數據以16位有符號二進制數存放在相應的寄存器中,將原始數據轉換為標準加速度單位,公式如下:

(7)
式(7)中:a表示轉換后的標準加速度單位值;x表示原始數據,16位有符號二進制,最高位表示符號,剩余15位是215=32 768;2表示JY901傳感器的測量最大值設定為2g(g為重力加速度)。
這樣分別將X、Y、Z軸的原始數據進行轉換得到當前載體歐拉角?、φ、ψ,并將其轉換為四元數q后,將該載體的三軸加速度向量ax、ay、az從載體坐標系轉換到地理坐標系。設三軸加速度向量為ax、ay、az,用三軸加速度向量構造一個四元數,令p=[0axayaz],轉換后的三軸加速度向量p′與轉換前三軸加速度向量p和載體姿態信息四元數的關系如下:
p′=qpq-1
(8)
坐標轉換過程中涉及四元數的兩種運算,即四元數乘法和四元數求逆。四元數乘法運算規則是設p、q是兩個四元數,其中:
p=[w1x1y1z1]
(9)
q=[w2x2y2z2]
(10)
它們相乘的關系如下:

(11)
四元數求逆的運算如下:

(12)
式(12)中:q*表示四元數q的共軛。
假設:
q=[wxyz]
(13)
那么q的共軛為
q*=[w-x-y-z]
(14)
|q|表示四元數的模:

(15)
加速度坐標系轉換分別如圖4~圖6所示,將MEMS在原地進行任意旋轉操作,同時采集傳感器的數據進行上述坐標轉換處理。因為載體在原地進行旋轉,地球重力始終豎直向下,所以隨著載體的旋轉,重力分量會在載體坐標系的三個軸向發生變化,但是在將載體坐標系的三個軸向加速度結合載體自身姿態信息進行坐標系轉換后,重力分量應始終在地理坐標系的Z軸上。

圖4 X軸加速度轉換效果Fig.4 X-axis acceleration conversion effect

圖5 Y軸加速度轉換效果Fig.5 Y-axis acceleration conversion effect

圖6 Z軸加速度轉換效果Fig.6 Z-axis acceleration conversion effect
圖4(a)、圖5(a)、圖6(a)表示未進行坐標轉換時載體坐標系下的加速度信息,可以看到重力分量隨著載體的旋轉在載體坐標系下的三個軸向的變化情況。圖4(b)、圖5(b)、圖6(b)是根據四元數坐標轉換將加速度數據轉換為地理坐標系下的值,可以直觀地看到重力分量全在Z軸上,表明此算法可以成功將加速度從載體坐標系轉換為地理坐標系,可以很容易地將重力加速度對積分的影響消除,作為接下來積分求取運動軌跡的基礎。
設載體t時刻的狀態S是由三維位置Px、Py、Pz和Vx、Vy、Vz組成,則載體狀態S可表示為

(16)
任一當前位置P可表示為

(17)
式(17)中:P-表示上一時刻位置;V-表示上一時刻速度;t表示兩時間點之間的時間間隔;a表示兩時間間隔過程中的加速度。
當前時刻的速度V可以表示為
V=V-+at
(18)
將式(18)擴展為三維矩陣形式,令狀態轉移矩陣F為

(19)
控制矩陣B為

(20)
則系統的狀態預測方程可表示為

(21)

(22)
根據狀態轉移矩陣估計先驗估計協方差表示為

(23)
卡爾曼增益為

(24)
式(24)中:H為觀測矩陣:

(25)
然后計算后驗估計值:

(26)
最后計算后驗估計協方差,準備下一次循環:

(27)
遷移學習能夠利用已經訓練好的神經網絡模型對事物的理解能力快速學習新的任務。AlexNet網絡結構如圖7所示。

圖7 AlexNet網絡結構Fig.7 Alexnet network structure
后來也被很多的研究改進應用,例如戎輝等[13]研究將其應用于駕駛員行為狀態識別,在交通安全方面有很高的推廣和應用價值。AlexNet輸入為227×227×3,其中3代表彩色圖像RGB,但原始圖像尺寸有可能不是227×227×3,有的過大,有的過小。因此需要進行圖像的尺寸變換將圖像大小轉換為227×227×3。
因為本設計的分類數為10類,需要將AlexNet的最后三層FullyConnectedLayer、SoftmaxLayer、ClassificationOutputLayer結合實驗進行重新配置并替換為10分類。
實驗系統如圖8所示,系統包括Arduino開發板、JY901傳感器和計算機。Arduino開發板的時鐘頻率為32 MHz,Flash為196 kB,SRAME為24 kB。

圖8 實驗設備Fig.8 Experimental equipment
本文中采用Arduino硬件平臺,通過IIC查詢JY901中的原始數據并對其進行第一重的卡爾曼濾波,結合四元數坐標系轉換方法將載體坐標系的三軸加速度信息轉換到地理坐標系中,并去除了重力加速度在積分獲取軌跡中的影響。結合三重積分對載體的運動軌跡進行計算,然后將坐標值通過串口發送到MATLAB中進行繪圖。最后結合手寫數字進行了驗證,此方法能較為準確地得到載體的運動軌跡,采用AlexNet神經網絡的遷移學習進行了手寫數字識別,驗證了本算法的有效性和可行性。
進行上述處理后的結果如圖9所示。圖10中,以手寫數字“8”為例,以上算法得到明顯的驗證,將不成形的軌跡進行校正,數字“8”的軌跡清晰的表現出來。

圖9 獲取軌跡Fig.9 Acquisition trajectory

圖10 單級卡爾曼濾波手寫數字識別效果Fig10 Recognition effect of handwritten digits with single Kalman filter
如圖11所示是利用單級卡爾曼濾波的方法在小范圍內所做的手寫數字軌跡捕捉,與本文提出的方法作為對比,本文方法在精度上有了提升。雖然單級卡爾曼濾波的方法也能在一定程度上反應載體的實際趨勢,但是因為在一定的空間范圍內無法達到預想的實際效果,試驗效果不理想。
沿用此方法繼續采集手寫數字,每個數字采集一百張樣本圖片,構造數據集進行分類訓練,訓練結果準確率為87.3%。重新采集測試數據集進行驗證,識別結果如圖11所示。數字0~9的識別置信率見表2。
從圖11所示的手寫數字0~9的識別效果可以看出,手寫軌跡順滑、清楚,容易識別,同時,由表2可知,數字0~9的識別置信率最高為98.6%,最低為80.7%,平均為91.7%,達到了預期效果。

橫縱坐標表示像素圖11 手寫數字識別效果Fig.11 Recognition effect of handwritten numbers

表2 數字0~9的識別置信率
本文設計了基于慣性傳感器的空中運動軌跡識別系統,使用卡爾曼濾波算法對信號進行濾波處理,采用AlexNet神經網絡遷移學習進行了手寫數字識別。實驗結果表明,該方法可清晰捕捉載體的運動軌跡,以空中手寫數字項目得到了驗證。本算法可在較小的空間區域內實現對軌跡的清晰重現,捕捉軌跡識別度較高,達到了預期效果。