劉怡明,王偉明,張雯薏
(1.石家莊市第二中學,河北石家莊,050000;2.石家莊鐵道大學,河北石家莊,050043)
接觸式控制器應用于高電壓、防靜電、保密或者有生物安全性要求的設備時,容易對操作者或者設備帶來損害,因此,非接觸式控制器以其較好的安全性能具有廣闊的應用前景。
常用的非接觸式控制器有遙控器、語音(聲控)、熱釋電傳感器等。遙控器具有難于保管、保密性和可靠性差的缺點;語音識別因其在處理自然表達式方面有著非常高的穩定性和實用性,但諸如噪聲和麥克風與用戶之間的距離等問題限制了語音控制器的發展發展;熱釋電傳感器對各種熱源均有響應。上述非接觸式控制器均不適于上述有特殊要求的設備。
隨著可穿戴設備、機器人、物聯網等技術的發展,人機交互技術越來越成熟,手勢以其生動、形象和直觀等特點,成為人機交互的重要交流手段[1,2]。目前,非接觸式的紅外傳感技術因其敏感度高和受環境光干擾小等特點,正逐漸成為新一代手勢識別的研究熱點。
國內外相關研究機構對手勢識別進行了一系列探索。比較典型的有,西安工程大學楊晉芳[3]將紅外線和環境光傳感器與電容式觸摸感應微控制器相結合,實現非接觸式手勢識別,可用于多種動作和手勢檢測以及目標物體距離校準,但它涉及兩種傳感器的數據融合系統較為復雜且未說明能夠識別哪些動作;杭州木梢科技有限公司的發明專利,提供了一種可實現手勢識別的被控裝置及其控制方法,通過在被控裝置中應用4個距離傳感器,由所述多個距離傳感器對用戶針對該裝置的各種有效手勢進行感測,實現了該被控裝置的非接觸式手勢識別控制方法,從而實現了裝置的智能化靈活控制[4]。武漢大學的發明專利,涉及一種基于體感交互設備的手勢識別控制器,手勢由使用者在體感交互設備可識別區域裸手實現被控裝置中應用多個距離傳感器,實現了該被控裝置的非接觸式手勢識別控制方法[5]。上述手勢識別主要有基于可穿戴傳感器的接觸式和基于計算機視覺的非接觸式兩類?;诳纱┐鱾鞲衅鞯淖R別方式需要用戶佩戴專業設備,適用范圍窄、應用性差?;谟嬎銠C視覺的識別方法雖然解決了適用范圍問題,但對設備、環境要求較嚴,且算法較復雜,實時性較差。
由于單一的紅外手勢傳感器無法區分人體、物體或者是人員手部的動作,容易造成誤操作。因此我們設計了一種非接觸式紅外手勢智能控制器,通過組合多個紅外手勢傳感器構成傳感器陣列,采用符合人體工程學的排列方式,使之不僅能夠識別單一傳感器的左右、上下、遠近等手勢動作,而且能夠創新性地實現捏手、手指滑動等手部復雜動作的準確識別,可有效避免單一手勢傳感器可能導致的誤觸發。此控制器不僅應用于家庭娛樂設備控制或平板電腦屏幕操作,而且亦應用于對操作安全性、生物安全性和保密性能要求較高的設備中,可有效降低接觸式操作精密儀器可能帶來的損害。
系統整體框圖如圖1所示,系統由STM32F103系列單片機,9個紅外感應手勢傳感器APDS-9960,繼電器和蜂鳴器組成。9個紅外感應手勢傳感器構成傳感器陣列,采用符合人體工程學的排列方式,識別手指滑動和左右手指捏合動作,避免誤觸發。

圖1 系統整體框圖
傳感器1,2,3,4用于識別手指滑動動作,傳感器7,8用于識別左手指捏合動作,傳感器5,6用于識別右手指捏合動作,傳感器9用于防止誤觸發操作,三種主要動作被識別之后,STM32F103單片機發出控制指令,發送給繼電器,通過繼電器吸合完成被控設備的操作。
1.1.1 主控模塊
主控模塊選用了STM32F103單片機開發板。它是一款32位標準RISC(精簡指令集)處理器,提供很高的代碼效率,其工作頻率為72MHz,內置高達128K字節的Flash存儲器和20K字節的SRAM,具有豐富的通用I/O端口。
1.1.2 紅外手勢傳感器

圖2 STM32F103單片機開發板
紅外感應手勢傳感器選用的是APDS-9960。APDS-9960是一款集成多種功能的光學模塊和環境亮度感測的環境亮度傳感器,通過對它的編程能夠實現多種功能,如手勢識別、環境光檢測、光強檢測等功能。同時他具有上下閾值和中斷功能,具有較高的分辨率,功率強勁能夠穿過深色玻璃進行檢測。
APDS-9960由一個發光二極管和四個安裝于不同位置的光敏三極管組成。傳感器的結構如圖2所示,當手劃過4個光敏三極管時,LED的紅外光能量被反射回去接收,根據接收信號出現的不同時刻來確定手部運動方向,從而實現手部運動從上向下,從下向上、自左向右、自右向左、從遠到近、從近到遠等六個方向的檢測。
由圖3可知,由于四個光敏三極管封裝在一起,彼此之間距離非常近,對于捏手動作、遠距離滑動等動作識別率會很低,也不易實現。這種局限性限制了其應用場合。所以我們把9個傳感器組成傳感器陣列,完成復雜手勢的識別。

圖3 紅外手勢傳感器
控制器面板包含9個傳感器,設計了一種狀態矩陣,來識別不同的手勢動作。程序定時循環讀取各個傳感器,并將其識別結果依次存儲在表格中,每個傳感器的識別結果緩沖區長度為8,這樣可以順序存儲8個結果,構成8×9的狀態矩陣。
1.2.1 手指從左往右滑動動作識別
某個時刻的緩沖區內容如表1所示。當程序掃描整個狀態矩陣,發現某一列1#、2#、3#、4#行均為R而其他位置為0時,認為發現了手指從左往右的滑動動作,同時排除物體、人體晃動動作后,激活蜂鳴器并觸發繼電器動作,從而控制燈亮。手指從左到右滑動識別的流程圖如圖4所示。

表1 從左到右手指滑動識別結果
1.2.2 左手指捏合動作識別
某個時刻的緩沖區內容如表2所示。當程序掃描整個狀態矩陣,發現某一列7#有從右到左的動作,8#有從左到右的動作,而其他位置為0時,認為發現了左手指捏合動作,同時排除物體、人體晃動動作后,激活蜂鳴器并觸發繼電器動作,從而控制燈亮。左手指捏合動作識別的流程圖如圖5所示。

表2 左手指捏合動作識別結果

圖4 手指從左往右滑動動作識別流程圖

圖5 左手指側捏合動作識別流程圖
為驗證所設計的非接觸式手勢識別智能控制器的有效性,針對3種手勢(即手指滑動、雙手指左側捏合、雙手指右側捏合)進行識別,實驗中對每類手勢重復識別50次,共150個樣本,識別結果如表3所示。

表3 3種手勢動作的識別結果和識別率
識別結果表明:平均識別率為92.5%,識別率較高。通過以上實驗可知,手指滑動識別率要優于雙手捏合動作,主要原因如下:(1)面板上的打孔位置精度不高,導致個別傳感器識別率較低,從而影響了整體效果。(2)手指滑動和手指捏合動作對紅外光的反射效果不同。手指滑動時,傳感器接收到的反射光較強,識別率高;手指捏合時,手指的反射面較窄,發射光較弱,導致識別率較低。
為驗證本控制器能夠避免誤觸發,分別進行了人體在面板前走過、整個手掌在面板前揮動等實驗,發現控制器并無輸出動作,說明其能夠有效避免運動物體穿過和晃動等可能造成的誤觸發。
提出了一種非接觸式手勢識別智能控制器,并搭建了系統實驗平臺,編制了相應的復雜手勢識別模塊。通過選取3種手勢(即手指滑動、雙手指左側捏合、雙手指右側捏合)進行識別實驗,對該方法進行了驗證。實驗結果表明:該控制器不僅能夠識別單一傳感器的左右、上下等手勢動作,而且能夠創新性地實現捏手、手指滑動等手部復雜動作的準確識別,可有效避免單一手勢傳感器可能導致的誤觸發,從而有效提高高壓電器操作安全性、生物安全性和保密性能,降低接觸式操作精密儀器可能帶來的損害。