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