• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 消費電子 > 設計應用 > 手勢識別器的設計

    手勢識別器的設計

    作者:哈爾濱工業大學深圳研究生院 劉釗 原志杰 徐維昌 宋翔 張世琦 黃棋波 時間:2008-07-31 來源:世界電子元器件 收藏

    引言

    本文引用地址:http://www.czjhyjcfj.com/article/86483.htm

      手機、MP3播放器、硬盤播放器、數碼相機、PDA等設備都是通過導航鍵對其進行控制的。目前比較流行的導航鍵控制方式有四維鍵、搖桿,這是最常見的兩種導航鍵,此外還有一些手機上有很新穎的導航鍵設計,例如:LG-KG70的滾軸鍵、LG-KE608的轉盤設計、索愛W830的觸摸式、多普達D802的飛梭滾輪等等。這里,我們用設計一種看不見的導航鍵來代替四維鍵的功能,這種方案更能滿足消費者的好奇心,滿足消費者追逐時尚的需求。

    手勢識別的控制原理

      本系統利用三軸的值來判定對物體運動預定義的六種姿勢。首先,分別對三個軸采樣,每個軸各獲得50個數據;然后,分別對每個軸上的數據進行處理來判定是否發生了預定義的動作。動作定義在下面的部分說明,這里僅用Y軸來說明判定的原理。

      獲得Y軸上的50個數據存放到數組y_data[N]中,將這50個數求和取平均值。若y_data[N]中數據最大值與最小值之差在一個設定的閾值之內,則認為物體在Y軸向上是沒有動作的、靜止的,此時更新y_init值為y_data[N]求得的平均值;否則,y_data[N]中數據最大值與最小值之差超出一個設定的閾值,則認為物體是運動的,y_init值不變,仍然為上一次靜止狀態時的值。

      圖1和圖2是Y軸分別向左、向右搖動時采樣得到的抽樣值y_data[N]。圖中紅線代表上一次靜止時的采樣值,藍線代表運動時的采樣值。圖1為向左搖動時的值,可以明顯看出加速度的值較靜止時有明顯的變化,向著增大的方向變。

     


     
      從圖1和圖2中可以看出,兩條黑線之間的數據很難斷定是哪個動作產生的,因為兩個動作都可能產生這樣的值。所以,利用黑線之外的數據來判定是向右還是向左搖。因為對于這兩個動作,黑線之外的數據有明顯的差異,數據相差很多。對于圖1這些數據大于150,圖2中這些數據小于90。因此這些數據至少相差60,可以很容易地將向左、向右的兩個動作區分開。

      本系統就是根據這樣的原理來實現的,首先分別設定向左、向右搖時的閾值和兩個計數器;然后,將新采樣得到的50個值存放在y_data[N]中,將每個值與靜止時的值y_init比較,如果數據超出某個閾值,則在相應的計數器上累加,直到所有50個數全部比較完畢;最后,根據計數器值的大小來判定執行了某個動作。

      同理,利用Z軸的采樣值來判定向上、向下搖,利用X、Y兩個軸來判定執行圖片向左翻轉還是向右翻轉,這里略去。

    系統描述

      系統組成及功能

      系統由三個部分組成:CT-298控制部分、 MM-2860加速度部分、演示終端,系統框圖如圖3所示。

     

      CT-298控制部分主要負責數據的A/D變換、動作檢測、與演示終端進行數據通信。MM-2860加速度傳感器部分負責加速度值的測量并將其轉換為電壓值。演示終端負責處理從傳來的動作類型并執行相應的動作,同時向單片機返回進出二級菜單的指令。對于CT-298單片機系統更詳細的設計將在下面的部分介紹,這里首先介紹一下本系統設計的動作姿勢及代碼,以及與演示系統交互的指令。

      預定義的動作

      系統設計了六種動作,他們分別是左搖、右搖、下搖、上搖、圖片左轉、圖片右轉。圖4中的圖形象地說明了其中的兩個動作,其它的動作與此類似。

     

       系統還為每個動作定義了相應的動作代碼,見表1。

     

      當單片機檢測到某個動作時會將相應的值賦給變量type_action,之后通過SCI將type_action的值發送到演示終端。如果用戶執行的動作不在這六個動作之中,則將NO_ACTION賦給type_action,表示演示終端不執行任何動作。

      系統還定義了單片機與演示終端交互的指令,用于系統在主菜單和二級菜單之間的界面切換,指令從演示系統通過SCI傳給單片機,單片機接收到之后進入或退出二級菜單,見表2。

     

      這里僅定義了一個二級菜單,即圖片菜單,系統還可以定義更多的二級菜單和三級菜單。此外,需要說明動作MOVE_TURN_LEFT、MOVE_TURN_RIGHT用于圖片翻轉,僅在圖片菜單中可用,在主菜單不可用。動作下搖執行的是換下一幅圖片,動作上搖執行的是退出圖片菜單。

      演示終端

      本系統目標定位在便攜式消費類電子產品上,因此在軟件應用程序上必須選擇具有廣泛基礎的應用平臺。由于近年來J2ME在便攜式終端中的應用非常廣泛,因此本系統也采用了J2ME平臺進行開發。通過比較,選擇了J2ME的WTK開發包,它是專門針對移動無線設備而設計的開發包,并提供了一個統一的平臺。在WTK的框架下開發出來的java程序可以被眾多的所支持,所以能夠有效解決兼容性的問題。

      在WTK下我們利用默認的一個手機樣機的仿真器DefaultColorPhone進行開發,DefaultColorPhone的樣子如圖6。

     

      仿真器的外觀和操作類似一部移動電話,但是并不代表某個特定的設備,而是提供對其所支持的API 的正確實現,每個命令按鈕對應著相應的API函數。從圖6中可以看到手機的導航鍵,我們更改了導航鍵的API函數,使其從鼠標單擊觸發的方式轉換為串口動作代碼控制。首先,我們編寫了J2ME的串口接收程序,用于接收從單片機傳來的單字節的type_action值;然后將type_action以參數的形式傳給API,手機根據不同的type_action值執行不同的動作,包括菜單上下翻、進出二級子菜單、圖片翻轉等。手機動作與type_action的對應關系如表3。

     

      根據type_action的值,在手機界面上產生相應的動作,手機界面發送不同的變化。演示終端的具體實現在下面的內容詳細介紹。


    上一頁 1 2 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 龙游县| 辽宁省| 裕民县| 苏尼特右旗| 翁源县| 武城县| 平邑县| 昆明市| 洛川县| 平陆县| 井研县| 邯郸市| 侯马市| 高雄县| 景东| 重庆市| 宿松县| 布尔津县| 江永县| 阿克苏市| 开阳县| 石林| 博客| 新兴县| 广东省| 印江| 通江县| 南华县| 大竹县| 会理县| 分宜县| 琼海市| 上高县| 沐川县| 望江县| 富宁县| 东乡县| 文登市| 仁化县| 凌云县| 大埔县|