沈 澍,顧 康,劉小雨
(1.南京郵電大學(xué) 計算機(jī)學(xué)院、軟件學(xué)院、網(wǎng)絡(luò)空間安全學(xué)院,江蘇 南京 210023;2.江蘇省無線傳感網(wǎng)高技術(shù)重點(diǎn)實(shí)驗(yàn)室,江蘇 南京 210023)
伴隨計算機(jī)、無線傳感網(wǎng)絡(luò)、電子信息技術(shù)的逐漸發(fā)展與成熟,越來越多的可穿戴設(shè)備相繼推出,對人們的生活產(chǎn)生了很大影響[1-3]。這不僅給普通人的生活帶來許多便捷,而且?guī)椭舜罅康臍堈先耸?。文中提出了一種手臂姿態(tài)檢測方案,通過三個六軸傳感器來采集手臂的三個不同位置的加速度和角加速度,檢測出當(dāng)前手臂的姿態(tài),并通過藍(lán)牙進(jìn)行傳輸,從而控制機(jī)械臂能同步當(dāng)前手臂的動作。
文中首先介紹了手臂姿態(tài)檢測原理,即基于三個六軸傳感器的手臂姿態(tài)檢測原理,然后給出了系統(tǒng)的軟硬件設(shè)計,最后通過實(shí)驗(yàn)對系統(tǒng)進(jìn)行測試。
提出的手臂姿態(tài)檢測可以分為三部分:大臂運(yùn)動檢測、小臂運(yùn)動檢測和手部運(yùn)動檢測[4]。圖1為手臂姿態(tài)檢測的原理圖,三個六軸傳感器①、②、③分別用于檢測大臂、小臂和手部的運(yùn)動角度,以此來展現(xiàn)整個手臂的姿態(tài)。
圖1 手臂姿態(tài)檢測原理
其中,A1是大臂關(guān)節(jié)前后旋轉(zhuǎn)的角度,與傳感器①繞X軸旋轉(zhuǎn)的角度ax1相等;A2是大臂關(guān)節(jié)抬起的角度,與傳感器②繞Y軸旋轉(zhuǎn)的角度ay1相等;A3是大臂與小臂之間的關(guān)節(jié)彎曲的角度,與傳感器②相對于傳感器①繞X軸旋轉(zhuǎn)的角度ax2-ax1相等;A4是手腕關(guān)節(jié)彎曲角度,與傳感器②相對于傳感器①繞Y軸旋轉(zhuǎn)的角度ay2-ay1相等。
文中設(shè)計的硬件平臺由兩片STM32F103C8T6控制核心、三片MPU6050六軸傳感器、兩片HC-05藍(lán)牙傳輸模塊、六自由度機(jī)械臂和供電模塊組成[5]。圖2為系統(tǒng)組成框圖。A為姿態(tài)檢測端,由控制核心、六軸傳感器和藍(lán)牙模塊組成。B為機(jī)械臂控制端,由控制核心、供電模組和藍(lán)牙模塊組成[6]。C為六自由度機(jī)械臂,由六個數(shù)字舵機(jī)驅(qū)動。A、B端之間以藍(lán)牙方式傳輸手臂姿態(tài)信息。
本次設(shè)計的模塊選型主要以體積小、計算量適中為主,以下對其主要特征進(jìn)行了介紹。
(1)STM32F103C8T6(控制芯片):內(nèi)核ARM Cortex-M3,主頻最高為72 MHz,64 KB Flash,20 KB SRAM,36個多功能IO,有USART、IIC等外設(shè);
(2)MPU6050(六軸傳感器):IIC通信方式,16位ADC輸出,陀螺儀敏感度為131 LSBs/°/sec,陀螺儀檢測范圍為±250、±500、±1 000和±2 000 °/sec,加速度計可編程控制,加速度計測量范圍為±2g、±4g、±8g、±16g;
(3)HC-05(藍(lán)牙):UART協(xié)議通信,波特率可達(dá)115 200 bps。
圖2 系統(tǒng)組成框圖
系統(tǒng)的軟件主要分為手臂端軟件和機(jī)械臂端軟件兩個部分,以下分別對各個部分的軟件流程進(jìn)行介紹。
手臂端軟件負(fù)責(zé)手臂姿態(tài)的融合和傳輸,分為以下五個步驟:
(1)通過IIC數(shù)據(jù)總線讀入加速度計和陀螺儀數(shù)據(jù);
(2)將讀取的數(shù)據(jù)送入截止頻率為10 Hz的FIR數(shù)字低通濾波器中,獲取濾波后的數(shù)據(jù);
(3)將濾波后的數(shù)據(jù)送入姿態(tài)角融合模塊,獲取手臂各個部分的歐拉角;
(4)通過歐拉角計算當(dāng)前手臂的姿態(tài);
(5)根據(jù)計算出的手臂姿態(tài),發(fā)送相應(yīng)的控制數(shù)據(jù)。
機(jī)械臂端軟件負(fù)責(zé)控制數(shù)據(jù)的接收和舵機(jī)的驅(qū)動,分為以下五個步驟:
(1)等待串口接收到相應(yīng)的控制數(shù)據(jù);
(2)根據(jù)制定好的協(xié)議,解析控制數(shù)據(jù),獲取機(jī)械臂關(guān)節(jié)的角度;
(3)將獲取的角度寫入列隊中,待處理;
(4)讀取列隊中的角度,對機(jī)械臂做出相應(yīng)的控制;
(5)對控制數(shù)據(jù)做出回復(fù)。
3.2.1 基于橢球面擬合的加速度計矯正
MPU6050中加速度計的原始數(shù)據(jù)存在一定的零偏,在進(jìn)行姿態(tài)融合的時候會對精度產(chǎn)生較大的影響[7]。因此,采用基于橢球面擬合的方式對加速度計的零偏進(jìn)行矯正。
加速度傳感器在靜止(只受重力)的狀態(tài)時,重力在不同的姿態(tài)下,其向量的頂點(diǎn),在三維空間中會落在一個球面上,但是慣性測量系統(tǒng)中x,y,z軸的度量單位可能有很大的不同,如果x,y,z軸相互垂直,那么各姿態(tài)重力點(diǎn)會落在一個橢球面上,橢球的球心坐標(biāo)就是加速度計的零偏[8-9]。本次設(shè)計采用TensorFlow進(jìn)行橢球面參數(shù)擬合,主要分為以下六個步驟:
(1)數(shù)據(jù)采集;
(2)TensorFlow擬合參數(shù)創(chuàng)建;
(3)TensorFlow優(yōu)化器創(chuàng)建;
(4)TensorFlow會話創(chuàng)建;
(5)TensorFlow訓(xùn)練迭代;
(6)計算球心。
數(shù)據(jù)采集時需要將MPU6050芯片進(jìn)行多個方向的旋轉(zhuǎn),采集靜止?fàn)顟B(tài)下的三軸加速度數(shù)據(jù),這樣可以確保擬合的準(zhǔn)確度[10-11]。
TensorFlow的操作中主要為創(chuàng)建擬合需要的相關(guān)參數(shù)、確定損失函數(shù)和選擇相應(yīng)的優(yōu)化器進(jìn)行訓(xùn)練。本次設(shè)計中需要擬合的橢圓曲面,可以近似為一個圓心不在原點(diǎn),但球體未進(jìn)過旋轉(zhuǎn)的橢球曲面,因此預(yù)測函數(shù)為:
ha(x,y,z)=a0×x2+a1×y2+a2×z2+a3×x+
a4×y+a5×z+a6
(1)
其中,a0,a1,…,a6是橢球面的7個參數(shù)。
根據(jù)預(yù)測函數(shù),可以選擇擬合所使用的損失函數(shù):
a3×X+a4×Y+a5×Z+a6‖2
(2)
其中,X2=X×X,Y2=Y×Y,Z2=Z×Z,X,Y,Z為數(shù)據(jù)矩陣,N為數(shù)據(jù)總量,a0,a1,…,a6為需要擬合的參數(shù)。
由以上的推導(dǎo),在TensorFlow中創(chuàng)建相應(yīng)的訓(xùn)練參數(shù)和損失函數(shù),選擇0.5的學(xué)習(xí)率進(jìn)行訓(xùn)練,在誤差小于0.000 01時停止訓(xùn)練,使用式3計算橢球的球心[12]。
(3)
3.2.2 基于梯度下降的姿態(tài)融合
本次設(shè)計采用四元數(shù)-梯度下降方法對姿態(tài)進(jìn)行融合,首先使用陀螺儀的數(shù)據(jù)計算出短時間內(nèi)四元數(shù)的變化量,再使用加速度數(shù)據(jù)對陀螺儀更新的累計誤差進(jìn)行校準(zhǔn)。根據(jù)一階龍格庫塔法,四元數(shù)可以使用式4進(jìn)行更新:
(4)
使用加速度計矯正時,使用式5將重力在世界坐標(biāo)系[0,0,0,1]下的矢量坐標(biāo)轉(zhuǎn)換為傳感器坐標(biāo)系[0,ax,ay,az]下的矢量坐標(biāo)。
ds=q-1×de×q
(5)
其中,de為世界坐標(biāo)系下的坐標(biāo);ds是傳感器坐標(biāo)系下的坐標(biāo);q為四元數(shù)[17-19]。
因此,可以確定損失函數(shù)[20]為:
(6)
(7)
其中,ε為學(xué)習(xí)率;f為損失函數(shù)的梯度。
最后依據(jù)式8將四元數(shù)轉(zhuǎn)換成歐拉角:
(8)
其中,φ,θ,ψ為繞三軸旋轉(zhuǎn)的歐拉角度。
圖3為使用四元數(shù)-梯度下降方法進(jìn)行姿態(tài)融合的流程。
圖3 姿態(tài)融合流程
首先將采集到的數(shù)據(jù)進(jìn)行預(yù)處理,行偏移補(bǔ)償和歸一化。然后使用加速度、陀螺儀和前一時刻的四元數(shù)計算梯度,對四元數(shù)的更新量進(jìn)行校正并且更新四元數(shù),最后計算出歐拉角。
在對加速度計進(jìn)行矯正測試時,使用水平尺矯正測試平面,將傳感器模塊水平放在上面,xoy平面與水平面平行,z軸與水平面垂直向下。在測試時,使六軸傳感器模塊處于靜止?fàn)顟B(tài),可近似認(rèn)為xy軸的加速度為0g,z軸的加速度為1g。
圖4為矯正測試數(shù)據(jù)圖。其中圖A為進(jìn)行橢球面擬合的示意圖,深色點(diǎn)為采樣得到的三軸加速度數(shù)據(jù),淺色點(diǎn)為對采樣數(shù)據(jù)進(jìn)行擬合出的球心。圖B、C、D為原數(shù)據(jù)與補(bǔ)正后數(shù)據(jù)的對比圖。深色曲線表示原始數(shù)據(jù),淺色曲線表示矯正后的數(shù)據(jù),在進(jìn)行補(bǔ)正后,數(shù)據(jù)的準(zhǔn)確性得到了改善。
圖4 矯正測試數(shù)據(jù)
在對姿態(tài)融合進(jìn)行測試時,同樣使用水平尺矯正測試平面,在下方鋪上量角器,將傳感器模塊旋轉(zhuǎn)到30°、45°、60°、90°四個角度,在每個角度下分別檢測100組數(shù)據(jù)。圖5為傳感器繞x軸旋轉(zhuǎn)的四個角度的測試數(shù)據(jù)圖,圖A對應(yīng)30°測試數(shù)據(jù),圖B對應(yīng)45°測試數(shù)據(jù),圖C對應(yīng)60°測試數(shù)據(jù),圖D對應(yīng)90°測試數(shù)據(jù)。測試數(shù)據(jù)的波動性很小,在運(yùn)動速度不是非常大的情況下,數(shù)據(jù)比較穩(wěn)定。
圖5 融合測試結(jié)果
圖6是手臂真實(shí)動作和機(jī)械臂動作的對比圖,其中,圖A為大臂向前抬起的比對圖,圖B為大臂向后抬起的比對圖,圖C為大臂向側(cè)面的抬起的對比圖,圖D為小臂的彎曲的對比圖,圖E為手向下彎曲對比圖,圖F為手向上抬起對比圖。在小角度抬起和彎曲的時候,動作的一致程度是非常高的,但當(dāng)角度增大到一定的程度后,性能就略有不足。
圖6 測試效果
圖7為每間隔10°統(tǒng)計的手臂實(shí)際值、機(jī)械臂測量值和誤差的絕度值的折線圖。圖A為大臂向前抬升的測試數(shù)據(jù)圖,圖B為大臂向側(cè)面抬升的測試數(shù)據(jù)圖,圖C為小臂向下彎曲的測試數(shù)據(jù)圖,圖D為手腕向上抬起的測試數(shù)據(jù)圖。圖中深色的虛線表示手臂的實(shí)際值,淺色的點(diǎn)化線表示機(jī)械臂的測量值,實(shí)線表示實(shí)際值與測量值之間誤差的絕對值。
圖7 測試數(shù)據(jù)對比
從折線圖中可以看到,在小臂向下彎折和大臂向前抬升的動作的角度越大則誤差越大,在大臂向側(cè)面抬升和手向上抬升的動作中基本吻合。
可穿戴設(shè)備正慢慢融入人們的日常生活,幫助人們提升生活質(zhì)量。尤其對于殘障人士,借助可穿戴設(shè)備,生活狀況有望得到很大改善。文中設(shè)計的輔助智能穿戴系統(tǒng),將三軸陀螺儀數(shù)據(jù)和三軸加速度計數(shù)據(jù)進(jìn)行融合,用于檢測手臂姿態(tài),在動作角度較小時檢測的精確度非常高,并且相對于其他復(fù)雜系統(tǒng)來說成本是比較低的,但針對運(yùn)動范圍比較大的動作以及非常精細(xì)的動作來說,則需要增加傳感器的數(shù)量。并且需要進(jìn)一步改進(jìn)穿戴模式,如穿戴方式不合理,則會大大減小檢測的準(zhǔn)確度。
為了進(jìn)一步增加動作識別的準(zhǔn)確性和細(xì)致性,下一步計劃加入肌肉電信號傳感器,并與深度學(xué)習(xí)相結(jié)合,以實(shí)現(xiàn)更加穩(wěn)定和高效的動作識別。