






摘 要:引入最新的健身型體感游戲理念,開發一種感知人體手腳動作的人機交互體感游戲系統,使用壓力傳感器感應玩家的腳步動作、加速度傳感器感應手部動作,并把感應的動作編碼成運動指令,發送給計算機處理并顯示。最后完成了軟硬件調試,系統成功實現了體感交互方式,玩家從中收獲了較好的健身性、趣味性和普適性。
關鍵詞:人機交互;體感游戲;壓力傳感器;加速度傳感器
中圖分類號:TP391 文獻標識碼:A
1 引言(Introduction)
從20世紀80年代開始,“游戲與運動相結合”“健身與娛樂相結合”的設計理念開始在各種商業游戲中有所應用[1]。傳統的人機交互方式使用鍵盤和鼠標,機械性的重復相同的動作致使玩家的興趣越來越低[2],而基于傳感技術的人機交互方式將全身動作的感應信號轉換為對游戲的控制信號,將電子游戲與健身運動結合在一起。
如今市場上成功的健身型體感游戲種類繁多,如基于攝像頭Kinect平臺的《Kinect大冒險》[3]等,這些設備大都價格昂貴,且需要專門的游戲主機。本文的設計目的是以低成本、適用廣為特點,為基于鍵盤操作的電腦小游戲提供體感交互式的控制模式,系統采用壓力傳感器和加速度傳感器,分別感應玩家腿部和手部動作,而不僅僅只有一個手部遙控裝置[4],玩家能夠獲得全身性的運動。
2 系統方案設計(Project design)
本系統包含三個部分:傳感器單元、數據采集處理單元和控制顯示單元。數據采集處理單元使用三塊51單片機,將加速度數據與壓力數據分開處理,并實現了玩家手部加速度裝置的無線化。整體框圖如圖1所示。
本系統基于傳統的橫版過關類游戲,按照常規鍵盤操作方式使用方向鍵或其他按鍵,人物可以前后移動或向上、向前、向后跳躍;人物的手部運動只有一種,其功能視具體游戲而定,在本裝置中一律按揮拳攻擊處理。
系統使用一個壓力感應裝置感應玩家的腳步命令動作,該裝置有五個區域如圖2所示,每個區域下面安裝一個壓力傳感器-廣測YZC-1B,其中C區代表“原地”方向,玩家在這個區域跳一下,上位機游戲的人物原地跳一下;A和B區分別是“前進”方向的左右腳擺放位置,玩家在這個區域原地跑或向上跳躍,游戲人物向前進或者向前跳;D和E區分別是“后退”方向的左右腳擺放位置。
系統使用一個無線手環感應人的手部動作,玩家向前大幅度揮拳時,游戲人物做出手部動作。手環由一個加速度傳感器ADXL345[5]、射頻發送模塊NRF24L01/NRF24L01+[6]和一塊 ST89C52RD單片機構成。
數據采集處理單元以串口通信方式,向PC上位機中的游戲發送控制命令,上位機中的串口模擬鍵盤程序可以根據串口發來的命令,模擬按鍵響應,控制電腦游戲中游戲人物的動作,從而實現單片機對電腦游戲的控制。
3 動作判斷方法分析(Analysis of motion)
動作判斷方法是本系統研究階段的主要研究內容,判斷方法的好壞直接影響系統功能的實現。
3.1 腳步動作判斷
在跑步和跳躍時,人的左右腳的動作有緊密聯系,設置玩家右腳為主動腳,左腳為從動腳,判斷每次的動作都從右腳開始。
以體重50kg玩家的實驗數據為例,數據采樣頻率10Hz,僅采集得到若干特征值,方便對動作的判斷,壓感裝置測量到的并不是真實的質量,玩家靜立在壓感裝置上的測量值為3kg,當玩家在前進/后退區域跑動,左右腳下的稱重傳感器測量到的數據如圖3所示。從靜止到跑步再回到靜止狀態,右腳和左腳的重量交替變化,重量從小幅波動到大幅起落,最低值到0,峰值能夠超過靜立重量的兩倍。筆者的判斷方法是:右腳的重量嚴格超過靜立重量的兩倍、同時左腳重量為零、待1秒內左腳落下后重量達到靜立重量的兩倍,則完成一次跑步命令動作。
當玩家在前進/后退區域跳躍,左右腳下的稱重傳感器測量到的數據如圖4所示。每個跳躍動作可分解為起跳、騰空、落地三個過程[7],左右腳重量變化幾乎同步,在起跳和落地過程中,傳感器分別會測量到一個峰值,達到靜立重量的兩倍。筆者僅以第一個峰值為準進行判斷,判斷方法是:右腳重量達到靜立重量的兩倍、同時左腳重量超過靜立重量、待雙腳同時騰空使重量為零,則完成一次跳躍,隨后在程序中延時400毫秒,避免誤判第二次峰值。
當玩家在原地區域跳躍,兩只腳都在同一個傳感器上,跳躍過程中質量變化的峰值更大,但其重量變化曲線的趨勢與上文大致相同,判斷方法也類似,測量到第一個峰值超過靜立重量的兩倍即視為一次有效的跳躍,隨后延時400毫秒。
以上分析的判斷方法,能夠正確分辨玩家連續的動作,克服雙腳質量變化的不平衡特點[8],并及時做出反應,盡量縮短判斷動作所需的時間,減小人機交互中的時延感。
3.2 手部動作判斷
玩家手部的加速度傳感器數據曲線如圖5所示,靜止時,三軸加速度大小保持相對穩定。水平X軸、Y軸穩定在0—0.1m/s2,豎直Z軸穩定在1.00m/s2左右(重力加速度)。揮拳時,Z軸加速度仍保持在0.89—1.05m/s2,而X軸、Y軸的加速度變化基本同步,在揮拳揮出時,水平加速度會經歷一個變大直至超過1m/s2,然后回落的過程;收回時由于動作平緩,水平加速度雖然也會出現一個峰值,但不會超過1m/s2。由于只需要在一次完整的揮拳動作過程中得到一次有效的加速度判斷,故取其峰值范圍作為判斷依據,在X軸、Y軸中,若有任意一軸加速度大小超過1m/s2,判斷揮拳一次。
上述加速度判斷方法的合理性在于,取略小于揮出時峰值、而又遠大于收回時峰值的數值作為閾值,最大限度地避免收回時被判為又一次揮拳,以及揮出時沒有被判斷為揮拳的誤判狀況出現。每次判斷所需時間極短,可在短時間內進行多次判斷,實時反映運動狀況。
4 系統軟件實現(Software design)
4.1 單片機程序設計
單片機c是主控器,處理壓感的數據,判斷腳步動作,并且負責傳輸向上位機的所有命令;單片機a處理加速度手環的數據;單片機b處理單片機a和單片機c的信息交互。單片機c的程序流程圖如圖6所示。
單片機初始化傳感器和AD模塊后,首先給存放靜立質量的weight_still變量賦值。蜂鳴器發出提示音,玩家站上壓力感應裝置的“原地”區域,站穩后,單片機每隔50毫秒獲取一個16位數據,共采集100個數值并進行排序,取中心數值計算出靜立質量(單位:kg),最后賦給weight_still,蜂鳴器停止鳴叫,玩家開始游戲。單片機不斷查詢原地、向前右腳、向后右腳的質量,當質量超出閾值,則進入動作判斷程序,若判斷有動作,則向串口發送相應的命令,命令為一個字節的字符。單片機a的程序流程圖如圖7所示。
單片機初始化ADXL芯片后,首先向芯片I2C總線發送起始信號,寫入設備地址和存儲單元地址,隨后開始連續讀取來自隨機存儲器的六個地址數據,從中分離出X、Y、Z三軸加速度,分析各軸的加速度,若單片機判斷出現了一次揮拳,令輸出端口PORT1輸出一個值KEY=0給無線通訊模塊,模塊收到KEY0后進行編碼,將與之相應的32字節數據串RxData發給單片機b的無線接收模塊一次。
接收端收到RxData后對其解碼,若解得內容與機內預設的KEY=0時的RxData內容相符,則輸出一個低電平給單片機c的外部中斷引腳,單片機c進入中斷程序后向串口發送揮拳的命令,同時輸出一個應答信號ACK反饋給單片機b,單片機b隨后將低電平拉高。
4.2 上位機軟件設計
上位機軟件主要是利用MFC作為框架,進行串口通訊和鍵盤模擬。
MFC中的MSComm通信控件提供了一系列標準通信命令的接口,可以用它創建高效實用的通信程序。本系統建立基于對話框的MFC程序,設置相應的顯示框,在添加MSComm控件的同時添加了CMSComm類,調用相關函數對串口各種參數進行設置,與單片機進行匹配,實現串口通訊。
在普通的鍵盤輸入中,當按下一個鍵時,Windows操作系統把WM_KEYDOWN或者WM_SYSKEYDOWN消息放入消息隊列;釋放一個鍵時,Windows把WM_KEYUP或者WM_SYSKEYUP消息放入消息隊列中。Windows提供了一個模擬鍵盤API函數Keybd_event(),該函數能觸發一個按鍵事件,利用該函數可以模擬一個按鍵被按下或者松開,從而用軟件代替鍵盤實現鍵盤消息的發送。
上位機軟件接收到單片機發來的命令后,判斷命令字符,調用Keybd_event()函數,改變其中虛擬碼的鍵值,模擬不同按鍵被按下的情況,從而實現模擬鍵盤的功能,使單片機能夠控制游戲中的人物。在軟件界面上,玩家可根據不同的游戲,選擇需要映射的按鍵,實現了本系統的普適性。
5 實驗測試與結果(Result of experiment)
筆者完成了系統的硬件和軟件,系統能夠正確地采集到玩家的動作命令,并且及時地使游戲中的人物做出相應動作。測試的游戲包括《超級馬里奧》等,本裝置目前在體重48—55kg的人群中試驗過。系統工作圖如圖8和圖9所示。
6 結論(Conclusion)
本文實現了一種基于多單片機的人機交互體感游戲系統,可以為基于鍵盤操作的電腦小游戲提供體感交互式的控制模式。文章介紹了裝置的硬件實現和軟件設計,玩家可以使用身體動作控制游戲人物,從傳統的按鍵操作中解放出來,手部控制器采用無線通訊,使玩家的控制更加自然,提高了原游戲的沉浸感、交互性和趣味性,是對傳統按鍵游戲的升級。
參考文獻(References)
[1] 劉威.健身類體感游戲的設計策略研究[D].南京師范大學,
2010.
[2] 艾兵.基于FPGA的體感游戲[J].現代電子技術,2014(6):47-50.
[3] 李天逸.全方位體驗KINECT游戲[J].電腦迷,2011(5):14-15.
[4] 車力軍,孫峰.3G時代體感游戲的發展思考[J].電信技術,2011,
(11):55-58.
[5] 李興法.數字式加速度傳感器ADXL345的原理及應用[J].黑
龍江科技信息,2010(36):2.
[6] 劉志平.基于nRF24L01的近距離無線數據傳輸[J].應用科技,
2008(3):55-58.
[7] 何浩祥.人體跳躍及落地激勵下的樓板動力響應研究[J].振動
工程學報,2013(2):220-224.
[8] 張春林.人體足底受力測試及其分析[J].北京理工大學學報,
2004(7):567-570.
作者簡介:
姚晨雨(1993-),女,本科生.研究領域:測控技術.
史韞楊(1994-),女,本科生.研究領域:電子科學與技術.
冷明鑫(1992-),女,本科生.研究領域:測控技術.