引言
長(zhǎng)久以來(lái),,使用人體自然動(dòng)作與計(jì)算機(jī)交互一直是人機(jī)交互技術(shù)追求的目標(biāo)之一。目前主流的人機(jī)動(dòng)作交互技術(shù)有2種:視頻動(dòng)作識(shí)別技術(shù)和慣性器件動(dòng)作識(shí)別技術(shù)。
前者以Microsoft Xbox 360的Kinect視頻感應(yīng)器為代表,,依靠攝像頭采集人體動(dòng)作視頻,通過(guò)識(shí)別算法進(jìn)行分析,,可較準(zhǔn)確地識(shí)別人體動(dòng)作,,但需要強(qiáng)大的硬件處理能力、復(fù)雜的軟件識(shí)別算法,,而且對(duì)于多人,、高復(fù)雜度動(dòng)作難以識(shí)別。后者的代表為任天堂的Wii mote手柄,,主要依靠慣性器件反映出肢體的速度,、位移及傾斜度。該技術(shù)算法簡(jiǎn)單,,識(shí)別精度較高,,但需要佩戴傳感器模塊,可能給體驗(yàn)者帶來(lái)不適,。識(shí)別動(dòng)作的復(fù)雜度與傳感器的數(shù)量,、精度有關(guān),如Wii mote局限在于僅能感知手部運(yùn)動(dòng),隨著傳感器使用數(shù)量,、種類的增加,,精度的提高,人體各種快速,、復(fù)雜的運(yùn)動(dòng)都可被精確識(shí)別,,這是視頻識(shí)別技術(shù)所難以達(dá)到的。
本文介紹的設(shè)備是使用加速度傳感器的無(wú)線人體動(dòng)作信息測(cè)量設(shè)備,,在人體四肢及軀干同時(shí)佩戴5組測(cè)量設(shè)備,,準(zhǔn)確反映人體各部分動(dòng)作情況,同時(shí)使用無(wú)線數(shù)據(jù)傳輸方式減少體驗(yàn)者的不適感,。
1 測(cè)量原理
測(cè)量模塊放置于人體四肢及軀干,,以右手為例。測(cè)量模塊放置于右手肘關(guān)節(jié)外側(cè),,根據(jù)重力在加速度傳感器三軸上的分量,,可以計(jì)算出傳感器坐標(biāo)系與自然坐標(biāo)系的夾角,進(jìn)而得出傳感器所在手臂平面與自然坐標(biāo)系的夾角,,根據(jù)三個(gè)夾角與傳感器到肩膀的固定位置,,可以計(jì)算出傳感器所在手臂部位的空間位置。傳感器坐標(biāo)系與自然坐標(biāo)系夾角如圖1所示,。
式中Ax為傳感器x軸加速度分量,,Ay為傳感器y軸加速度分量,Az為傳感器z軸加速度分量,。人體軀干直立,,右手微抬時(shí)傳感器所在手臂與自然坐標(biāo)系的三個(gè)夾角如圖2所示。其中右手上白點(diǎn)代表傳感器,。
2 系統(tǒng)硬件設(shè)計(jì)
硬件系統(tǒng)由運(yùn)動(dòng)測(cè)量模塊與數(shù)據(jù)接收模塊構(gòu)成,。運(yùn)動(dòng)測(cè)量模塊放置于人體四肢及軀干部位,負(fù)責(zé)采集加速度數(shù)據(jù),,并將數(shù)據(jù)通過(guò)2.4G無(wú)線方式發(fā)送至數(shù)據(jù)接收端,。數(shù)據(jù)接收模塊同時(shí)接收5組運(yùn)動(dòng)測(cè)量模塊的測(cè)量數(shù)據(jù),并通過(guò)USB接口與PC機(jī)傳遞數(shù)據(jù),。
2.1 運(yùn)動(dòng)測(cè)量模塊硬件設(shè)計(jì)
運(yùn)動(dòng)測(cè)量模塊由ADXL345加速度傳感器,、nRF24L01無(wú)線射頻模塊、ATmega88單片機(jī)和電源模塊構(gòu)成,,硬件結(jié)構(gòu)如圖3所示,。測(cè)量模塊實(shí)物如圖4所示。
ADXL345是ADI公司的三軸數(shù)字加速度傳感器,,主要應(yīng)用于消費(fèi)電子的微型慣性器件,,最大可感知土16g的加速度,感應(yīng)精度可達(dá)3.9mg /LSB,傾角測(cè)量典型誤差小于1°,。通過(guò)其內(nèi)置的ADC將加速度信號(hào)轉(zhuǎn)換為數(shù)字量存放在片內(nèi)緩沖區(qū),,使用SPI總線讀取數(shù)據(jù)。在實(shí)際使用中,,為提高輸出數(shù)據(jù)的穩(wěn)定性,,設(shè)置感應(yīng)范圍為±2 g,感應(yīng)精度為3.9 mg,,可以滿足人體動(dòng)作加速度范圍與精度要求,。傳感器采樣速度在6.25~3 200 Hz之間可調(diào),因?yàn)闊o(wú)線發(fā)送數(shù)據(jù)需要時(shí)間較長(zhǎng),,并且低采樣速率可以降低噪聲干擾,,將采樣速度設(shè)定在100Hz,即10ms輸出1組數(shù)據(jù),。
控制模塊由ATmega88單片機(jī)及配套電路構(gòu)成,。ATmega88為8位AVR單片機(jī),在3.3 V電壓模式下可以工作于8 MHz,,片內(nèi)擁有8 KB Flash與1 KB SRAM,。其主要任務(wù)為初始化加速度傳感器和無(wú)線射頻芯片,并從加速度傳感器中讀取測(cè)量數(shù)據(jù),,將數(shù)據(jù)初步整理后傳送至無(wú)線射頻芯片,。
無(wú)線射頻模塊主要由nRF24L01構(gòu)成,是一款單片射頻收發(fā)器件,,它工作于2.4~2.5 GHz ISM頻段,。內(nèi)置頻率合成器,、功率放大器,、晶體振蕩器、調(diào)制器等,。數(shù)據(jù)傳輸速率可達(dá)1~2 Mb/s,。它可以同時(shí)支持6個(gè)無(wú)線器件的接收,由此實(shí)現(xiàn)了1組數(shù)據(jù)接收模塊同時(shí)接收5組運(yùn)動(dòng)測(cè)量模塊發(fā)送的數(shù)據(jù),。
電源模塊使用低壓差線性穩(wěn)壓器件(LDO)SP6201,,將鋰電池的4.2 V電壓降至3.3 V,最大可負(fù)載200 mA電流,,滿足設(shè)備需要,。
2.2 數(shù)據(jù)接收模塊硬件設(shè)計(jì)
數(shù)據(jù)接收模塊使用芯片CY7C68013A,片內(nèi)集成USB2.0收發(fā)器,、串行接口引擎,、增強(qiáng)型8051微控制器,數(shù)據(jù)的傳輸率可達(dá)到56 MB,最大4 K USB端點(diǎn)緩沖區(qū),,時(shí)鐘頻率可達(dá)48 MHz,。由于CY7C68013A本身并沒有硬件SPI接口,同時(shí)又需要SPI與無(wú)線射頻模塊通信,,實(shí)際中使用GPIO口軟件模擬4線SPI進(jìn)行通信,。CY7C68013A不斷掃描無(wú)線射頻模塊狀態(tài),當(dāng)有接收數(shù)據(jù)到來(lái)時(shí),,使用SPI接收數(shù)據(jù)并通過(guò)USB上傳給計(jì)算機(jī),。
數(shù)據(jù)接收模塊硬件結(jié)構(gòu)如圖5所示。
3 系統(tǒng)軟件設(shè)計(jì)
軟件設(shè)計(jì)主要包括2個(gè)部分,,動(dòng)作測(cè)量模塊主控制器ATmega88的數(shù)據(jù)采集及發(fā)送部分,、數(shù)據(jù)接收模塊控制器CY7C68013A的數(shù)據(jù)接收及上傳部分。
3.1 運(yùn)動(dòng)測(cè)量模塊軟件設(shè)計(jì)
使用ATmega88的定時(shí)器控制采樣時(shí)間,,由于已經(jīng)將ADXL345的輸出頻率定為100 Hz,,這里將程序設(shè)定為每隔10 ms進(jìn)行一次采樣,采樣后將數(shù)據(jù)發(fā)送至無(wú)線射頻模塊進(jìn)行數(shù)據(jù)發(fā)送,,發(fā)送成功后進(jìn)行下一次采樣,,否則重新發(fā)送。測(cè)量模塊軟件流程如圖6所示,。
3.2 數(shù)據(jù)接收模塊軟件設(shè)計(jì)
數(shù)據(jù)接收模塊CY7C68013A通過(guò)不斷查詢nRF24L01的中斷引腳來(lái)檢測(cè)有無(wú)數(shù)據(jù)到來(lái),;當(dāng)有接收數(shù)據(jù)到時(shí),使用SPI總線讀取加速度信息,,判斷該數(shù)據(jù)來(lái)自哪個(gè)發(fā)送端,,并將數(shù)據(jù)存放在相對(duì)應(yīng)的USB端點(diǎn)緩沖區(qū),等待上位機(jī)取走,。若上位機(jī)不取數(shù)據(jù),,舊數(shù)據(jù)會(huì)自動(dòng)被新數(shù)據(jù)沖掉,保證數(shù)據(jù)的實(shí)時(shí)性,。中央處理模塊軟件流程如圖7所示,。
4 實(shí)驗(yàn)結(jié)果與分析
實(shí)驗(yàn)中使用面包板模擬人體手臂進(jìn)行角度測(cè)量實(shí)驗(yàn),因?yàn)檎鎸?shí)手臂平面有一定弧度,,測(cè)量模塊不同的放置位置對(duì)測(cè)量結(jié)果會(huì)有影響,,而面包板為規(guī)則長(zhǎng)方體,有非常平坦的一面可以放置測(cè)量模塊,,并且棱角清晰方便進(jìn)行傾斜角度測(cè)量,。在具體實(shí)驗(yàn)中,模擬測(cè)量模塊佩戴在右手肘關(guān)節(jié)外側(cè)的情況,,設(shè)計(jì)2種測(cè)試?yán)?。右手向右伸臂的?dòng)作,,如圖8所示。右手向前抬臂的動(dòng)作如圖9所示,。
在0~90°范圍內(nèi)2種情況下,,三軸測(cè)量角度與參照角度比較。表1為模擬右手右伸臂時(shí)三軸角度與參照角度比較,。表2為模擬右手前抬臂時(shí)三軸角度與參照角度比較,。由表1、表2可以看出:除個(gè)別接近0,、90°時(shí)誤差較大外,,大多數(shù)角度測(cè)量的誤差絕對(duì)值小于1.5°,與ADXL345官方說(shuō)明文件的誤差小于1°較為相符,。
表中負(fù)值為傳感器坐標(biāo)軸正方向與自然坐標(biāo)軸正方向夾角超過(guò)90°情況,。誤差超過(guò)1°產(chǎn)生的原因有如下幾方面:
①在電源設(shè)計(jì)時(shí)沒有為ADXL345的ADC單獨(dú)設(shè)置參考電壓源,,而是使用VDD系統(tǒng)電源,,存在一些紋波干擾,造成誤差,。
?、跊]有對(duì)傳感器進(jìn)行零點(diǎn)標(biāo)定,水平放置時(shí)X,、Y軸輸出并不為0,。
③缺少專業(yè)角度測(cè)量設(shè)備,,角度參考圖使用普通量角器制作,,參考角度與實(shí)際角度。
?、?font class="f14">傳感器平面與電路板平面,、實(shí)驗(yàn)面包板平面不完全重合,存在固定夾角,,測(cè)量時(shí)有誤差,。從表1的Y軸夾角看出,理論上模擬右手右伸臂時(shí)Y軸夾角應(yīng)一直為0°,,但現(xiàn)實(shí)中出現(xiàn)了一個(gè)轉(zhuǎn)角,使輸出逐漸由-1.2°過(guò)渡到2.2°,。
結(jié)語(yǔ)
本文通過(guò)使用加速度傳感器ADXL345采集人體動(dòng)作信息,,使用nRF24L01無(wú)線時(shí)頻模塊發(fā)送數(shù)據(jù),最后通過(guò)USB芯片CY7C68013將數(shù)據(jù)上傳給PC機(jī),,并在PC機(jī)上實(shí)時(shí)繪制人體運(yùn)動(dòng)動(dòng)畫,,構(gòu)建了一種人體動(dòng)作信息測(cè)量設(shè)備,。測(cè)量身體各部位角度典型誤差小于1.5°,滿足普通人機(jī)交互需要,。目前已經(jīng)根據(jù)上述原理制作出樣品,,PC機(jī)上顯示人體模型與佩戴測(cè)量模塊的實(shí)際人體動(dòng)作較為一致,反應(yīng)靈敏,,可以滿足快速實(shí)時(shí)的人機(jī)交互過(guò)程的實(shí)現(xiàn),。在進(jìn)一步減小輸出誤差,穩(wěn)定輸出結(jié)果后,,可以應(yīng)用于高危環(huán)境機(jī)器人控制,、游戲娛樂等各種人機(jī)交互場(chǎng)合。