基于加速度傳感器的無(wú)線(xiàn)人體動(dòng)作測(cè)量設(shè)備
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:使用ADXL345三軸加速度傳感器、nRF24L01無(wú)線(xiàn)收發(fā)芯片及USB接口芯片CY7C68013與上位機(jī)構(gòu)建了一個(gè)人體動(dòng)作信息測(cè)量設(shè)備。該設(shè)備由5組相同的動(dòng)作測(cè)量模塊、1組數(shù)據(jù)接收模塊構(gòu)成。動(dòng)作測(cè)量模塊置于人體四肢及軀干測(cè)量人體動(dòng)作信息,數(shù)據(jù)接收模塊通過(guò)無(wú)線(xiàn)方式收集加速度數(shù)據(jù),并通過(guò)USB芯片上傳給PC機(jī),PC機(jī)計(jì)算出各部位的角度信息后繪制人體實(shí)時(shí)動(dòng)作模型。通過(guò)與實(shí)際人體動(dòng)作比較,該設(shè)備可以較好地反應(yīng)人體動(dòng)作情況,可以應(yīng)用于多種人機(jī)交互場(chǎng)合。
關(guān)鍵詞:ADXL345加速度傳感器;人體動(dòng)作信息;nRF24L01;CY7C68013
引言
長(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ù)量、種類(lèi)的增加,精度的提高,人體各種快速、復(fù)雜的運(yùn)動(dòng)都可被精確識(shí)別,這是視頻識(shí)別技術(shù)所難以達(dá)到的。
本文介紹的設(shè)備是使用加速度傳感器的無(wú)線(xiàn)人體動(dòng)作信息測(cè)量設(shè)備,在人體四肢及軀干同時(shí)佩戴5組測(cè)量設(shè)備,準(zhǔn)確反映人體各部分動(dòng)作情況,同時(shí)使用無(wú)線(xiàn)數(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)代表傳感器。[!--empirenews.page--]
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ú)線(xiàn)方式發(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ú)線(xiàn)射頻模塊、ATmega88單片機(jī)和電源模塊構(gòu)成,硬件結(jié)構(gòu)如圖3所示。測(cè)量模塊實(shí)物如圖4所示。
[!--empirenews.page--]
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總線(xiàn)讀取數(shù)據(jù)。在實(shí)際使用中,為提高輸出數(shù)據(jù)的穩(wěn)定性,設(shè)置感應(yīng)范圍為±2 g,感應(yīng)精度為3.9 mg,可以滿(mǎn)足人體動(dòng)作加速度范圍與精度要求。傳感器采樣速度在6.25~3 200 Hz之間可調(diào),因?yàn)闊o(wú)線(xiàn)發(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ú)線(xiàn)射頻芯片,并從加速度傳感器中讀取測(cè)量數(shù)據(jù),將數(shù)據(jù)初步整理后傳送至無(wú)線(xiàn)射頻芯片。
無(wú)線(xiàn)射頻模塊主要由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ú)線(xiàn)器件的接收,由此實(shí)現(xiàn)了1組數(shù)據(jù)接收模塊同時(shí)接收5組運(yùn)動(dòng)測(cè)量模塊發(fā)送的數(shù)據(jù)。
電源模塊使用低壓差線(xiàn)性穩(wěn)壓器件(LDO)SP6201,將鋰電池的4.2 V電壓降至3.3 V,最大可負(fù)載200 mA電流,滿(mǎn)足設(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本身并沒(méi)有硬件SPI接口,同時(shí)又需要SPI與無(wú)線(xiàn)射頻模塊通信,實(shí)際中使用GPIO口軟件模擬4線(xiàn)SPI進(jìn)行通信。CY7C68013A不斷掃描無(wú)線(xiàn)射頻模塊狀態(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ú)線(xiàn)射頻模塊進(jìn)行數(shù)據(jù)發(fā)送,發(fā)送成功后進(jìn)行下一次采樣,否則重新發(fā)送。測(cè)量模塊軟件流程如圖6所示。
3.2 數(shù)據(jù)接收模塊軟件設(shè)計(jì)
數(shù)據(jù)接收模塊CY7C68013A通過(guò)不斷查詢(xún)nRF24L01的中斷引腳來(lái)檢測(cè)有無(wú)數(shù)據(jù)到來(lái);當(dāng)有接收數(shù)據(jù)到時(shí),使用SPI總線(xiàn)讀取加速度信息,判斷該數(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所示。[!--empirenews.page--]
在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í)沒(méi)有為ADXL345的ADC單獨(dú)設(shè)置參考電壓源,而是使用VDD系統(tǒng)電源,存在一些紋波干擾,造成誤差。
②沒(méi)有對(duì)傳感器進(jìn)行零點(diǎn)標(biāo)定,水平放置時(shí)X、Y軸輸出并不為0。
③缺少專(zhuān)業(yè)角度測(cè)量設(shè)備,角度參考圖使用普通量角器制作,參考角度與實(shí)際角度。
④傳感器平面與電路板平面、實(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ú)線(xiàn)時(shí)頻模塊發(fā)送數(shù)據(jù),最后通過(guò)USB芯片CY7C68013將數(shù)據(jù)上傳給PC機(jī),并在PC機(jī)上實(shí)時(shí)繪制人體運(yùn)動(dòng)動(dòng)畫(huà),構(gòu)建了一種人體動(dòng)作信息測(cè)量設(shè)備。測(cè)量身體各部位角度典型誤差小于1.5°,滿(mǎn)足普通人機(jī)交互需要。目前已經(jīng)根據(jù)上述原理制作出樣品,PC機(jī)上顯示人體模型與佩戴測(cè)量模塊的實(shí)際人體動(dòng)作較為一致,反應(yīng)靈敏,可以滿(mǎn)足快速實(shí)時(shí)的人機(jī)交互過(guò)程的實(shí)現(xiàn)。在進(jìn)一步減小輸出誤差,穩(wěn)定輸出結(jié)果后,可以應(yīng)用于高危環(huán)境機(jī)器人控制、游戲娛樂(lè)等各種人機(jī)交互場(chǎng)合。