滕鵬++姜昌華++王春慧++王麗++劉梁
摘要:基于自然人機交互的手勢交互技術應用越來越廣,本文基于HID類設計了一種USB手勢輸入系統(tǒng),該系統(tǒng)集成加速度傳感器、數(shù)字陀螺儀和磁力計等多種傳感器,采集的數(shù)據(jù)通過手勢運動識別算法處理后,可以實現(xiàn)對計算機光標的控制。經(jīng)測試證明,該設計方案是可行的。
關鍵詞:輸入設備;USB設備;手勢識別
中圖分類號:TP309 文獻標識碼:A 文章編號:1007-9416(2017)02-0180-02
1 引言
傳統(tǒng)的用于計算機的USB輸入設備主要有鼠標、鍵盤、操縱桿等。隨著技術的發(fā)展,以手勢識別、語音識別等更貼近人類的自然交互手段發(fā)展迅速。其中手勢是一種符合人類日常習慣的交互手段。本文結合手勢識別技術,設計了一種USB手勢控制器,可以使用手勢實現(xiàn)類似鼠標的功能對計算機光標進行控制。
2 HID協(xié)議簡介
人機接口設備(HID)是USB協(xié)議的一個子類規(guī)范,主要應用于人與計算機進行交互的設備,如鍵盤、鼠標、操縱桿等,HID設備必須符合USB相關的HID規(guī)范要求。正因為USB嚴謹?shù)囊?guī)范,在Windows XP以上系統(tǒng)中,都集成了USB HID協(xié)議,而無需安裝驅動。HID設備主要有以下特點:
(1)設備必須按照HID報告格式進行數(shù)據(jù)上報。
(2)不同速度的設備對上傳的數(shù)據(jù)有限制。低速設備每包數(shù)據(jù)最大為8byte,全速設備每包數(shù)據(jù)最大為64byte,高速設備則可達到1024byte。
(3)低速USB設備最快10ms一筆事務,而全速USB設備最快1ms一筆事務;在高速設備中,可達125us一筆事務,最高速度達24.576MB/s。
(4)計算機對數(shù)據(jù)采用查詢處理,相比中斷傳輸,沒有傳輸速度的保證。
計算機識別HID設備的過程如下:插入設備后,計算機會向設備請求各種描述符來識別設備。設備應在定義描述符的時候按照HID規(guī)范定義設備的類別。USB規(guī)范中,定義了各種描述符約束設備的定義。圖1列出了HID各種描述符之間的關系。在應用中,每個設備也能用多個接口描述符來實現(xiàn)多接口設備,而且在每個接口描述符下還可有多個端點描述符。
由圖1中所示,除了按照USB規(guī)范定義的描述符外,HID設備還必須遵守HID描述符。另外,設備與計算機之前的數(shù)據(jù)傳輸也是通過報告的形式來實現(xiàn)的,所以還必須定義報告描述符;而物理描述符不是必需的。HID描述符是關聯(lián)于接口(而不是端點)的,所以設備不需要為每個端點都提供一個HID描述符。USB設備有4種傳輸方式與計算機進行數(shù)據(jù)傳輸,分別為控制方式、中斷方式、批量方式和同步方式。每種方式都有它的應用場合。對于HID設備,只支持控制和中斷兩種傳輸方式。
標準USB鼠標報告描述符描述4個字節(jié),如表1所示,第一個字節(jié)表示按鍵,第二個字節(jié)表示鼠標X軸偏移值(正值為右移,負值為左移),第三個字節(jié)表示鼠標Y軸偏移值(正值為下移,負值為上移),第四個字節(jié)表示滾輪(正值為往上滾動,負值為往下滾動)。手勢輸入設備就是通過采集手勢信息,轉換成對應的光標移動信息,組包成USB數(shù)據(jù)包發(fā)送給計算機。設備將采集的手部運動信息轉換為計算機光標的移動數(shù)據(jù),通過HID協(xié)議控制計算機光標。
3 控制器硬件實現(xiàn)
設備采用帶有USB控制器的C8051F380作為控制器,使用JY901九軸慣性傳感器作為手勢識別傳感器。其硬件電路如圖2所示。設備含兩個按鍵,一個按鍵A功能為使能及鼠標左鍵,另一個按鍵B為鼠標右鍵。使用時,單擊按鍵A不松開,則設備通過USB的HID協(xié)議輸出鼠標移動信息,雙擊按鍵A,輸出鼠標左鍵按下的鼠標移動信息(相當于鼠標拖拽),三擊按鍵A輸出鼠標雙擊信息,按鍵B與鼠標右鍵功能相同。
4 軟件算法
USB鼠標HID協(xié)議中輸出的是光標X軸和Y軸偏移值,可以采用慣性傳感器的角速度進行對應。而設備在移動中三維坐標軸也會變化從而產(chǎn)生偏差。為減小偏差,引入傳感器提供的角度數(shù)據(jù)進行分析,得到設備的姿態(tài),從而對陀螺儀的數(shù)據(jù)進行坐標轉換。所得角速度數(shù)據(jù)中與大地平行的方向為屏幕Y軸,與大地垂直的為屏幕X軸,使輸出的數(shù)據(jù)始終一致。
姿態(tài)角計算時所使用的坐標系為“東-北-天”坐標系。歐拉角表示姿態(tài)時的坐標系旋轉順序定義為z-y-x(φ-θ-Ψ),[φ θ Ψ]T為慣性傳感器當前坐標系相對于大地坐標系的歐拉角,即先繞z軸轉ψ,再繞y軸轉θ,再繞x軸轉φ。在慣性傳感器坐標系下的角速度為[ωφωθωΨ]T,則根據(jù)歐拉角轉換方程,在大地坐標系下的角速度[ωx ωy ωz]T為(圖4)。
手勢鼠標的主要算法流程為:首先檢測按鍵A是否按下,再啟動定時器,檢測按鍵A是否有雙擊或三擊操作,并發(fā)送相對應的USB報文;在按鍵A持續(xù)按下中,將采集慣性傳感器的角度值和角速度值,并通過旋轉矩陣后獲取鼠標兩個軸的偏移值,最后通過HID協(xié)議將USB數(shù)據(jù)包發(fā)送到計算機。如圖5所示。
在windows7系統(tǒng)中將設備加電后自動將設備識別為USB輸入設備,按下按鍵A上下左右晃動設備,計算機光標按預期的方向移動,且雙擊按鍵A和三擊按鍵A也實現(xiàn)了對應的鼠標左鍵拖動和鼠標左鍵雙擊的效果。
5 結語
慣性傳感器具有不受空間限制的特點,用于手勢識別可以靈活的應用于各種場合。本文設計了一種USB手勢輸入設備,該系統(tǒng)應用新型的手勢識別方式,更自然的實現(xiàn)了人與計算機的交互控制,稍加改進可用于激光電子筆、電子教鞭等場合。
參考文獻
[1]童長飛.C8051F系列單片機開發(fā)與C語言編程[M].北京:北京航空航天大學出版社,2005.
[2]姜曉波等.基于微加速度計的ARI-MOUSE的研究[J].傳感器與儀器儀表,2008,24(8-1) 113~115.
[3]徐星,劉克剛.一種新型的多功能鼠標的設計[J].電子技術,2004(12) 53~55.
[4]陳莉莉.三軸陀螺儀的空中鼠標定位算法研究[J].信息與電腦.2015(1)57~59.
[5]寇凡,盛懷茂,王直杰.基于體感算法的新型藍牙遙控器的設計[J].嵌入式技術. 2012,38(4) 31~33,36.
[6]周誼成,尤樹華,王輝.基于三維加速度的連續(xù)手勢識別[J].計算機與數(shù)字工程. 2012,40(10)133~136.