用手勢控制電腦:HandGKET

| | 4 Comments| 16:10
Categories:

之前在 OpenNI 1 的時候,有一套名為 FAAST 的軟體,可以把人體的全身動作,對應成 Windows 的鍵盤滑鼠訊號,讓使用者可以透過肢體動作,來完成電腦的操作(請參考《用 FAAST 把 Kinect 當 Windows 鍵盤用!》);不過感覺上,該團隊似乎停止開發了,所以當 OpenNI 改版到 OpenNI 2 之後,FAAST 也不能用了。

不過現在,又有一套名為「HandGKET」(Hand Gesture Key Emulation Toolkit)的軟體,可以透過 OpenNI 2 做到類似的事情了~

它的官方網站是:https://sites.google.com/site/kinectapps/handgket
下面則是官方的展示影片:

如果想玩的話,可以在該頁面最下方,找到檔案的下載;只要點選「HandGKET_v0.9.2(Distribution).zip」這個檔案右方的向下箭頭,就可以下載此程式的壓縮檔了。而解壓縮後,裡面有兩個資料夾,分別是 32 位元和 64 位元的版本,可以視需要使用。而另一個「HandGKET_manual.pdf」的檔案,則是這套軟體的使用說明,建議也下載來看看。

由於他是基於 OpenNI 2 和 NiTE 2 來開發的,所以要使用的話,可能會需要安裝 OpenNI 2 和 NiTE 2(不過實際上他有附上對應的 dll,理論上只要有驅動程式應該可以不用裝);而如果是使用 Microsoft Kinect 感應器的話,則需要安裝 Kinect for Windows SDK 或 Kinect for Windows Runtime(連結),才能正常使用。

而由於此程式沒有用來做設定的圖形介面,所以所有的設定,都是要靠一個純文字檔來完成;詳細的設定說明,請參考官方的文件。


和 FAAST 使針對全身骨架來做處理不一樣,HandGKET 只有針對手的位置來做處理,所有的鍵盤滑鼠對應,都是靠雙手來觸發的。

HandGKET 使用上分為「單手模式」和「雙手模式」兩種;「單手模式」可以用來對應鍵盤和滑鼠,「雙手模式」則只能對應鍵盤。而由 HandGKET 應該是使用 NiTE2 來做手的追蹤的,所以在執行起來後,要先透過 NiTE 的 Wave(揮手)或 Click(往前伸再縮回)來完成手的定位。

而在程式執行中,螢幕中間應該會出現顯示目前狀態的小視窗,裡面的圖示各自代表不同的意義如下:

基本上,都是要等到綠色的手出現,才能開始進行手勢的。


在單手模式下,他支援六種手勢,代表了手往六個不同的方向移動,也就是「HAND_LEFT」、「HAND_RIGHT」、「HAND_UP」、「HAND_DOWN」、「HAND_PUSH」和「HAND_BACK」;而他的手勢的定義,就是先往其中一個方向,然後在一定的時間內、再移回原來的位置,就算是完成了一個手勢。

下圖就是程式執行後的畫面,在手的位置會有一個綠色方框(如果是滑鼠模式,會是一個圓);當手移動動的時候,他不會立刻跟著動,只要先移到別邊,在馬上移回這個方框,就算是完成一個手勢了。

每個方向也都可以設定不同的移動距離條件(TRHESHOLD),所以其實是可以根據手移動的距離,來決定要做的事情的。


在雙手模式下,他則提供了下列的十種手勢,一樣可以各自設定不同的條件,來對應到不同的鍵盤事件。

  • TWO_HANDS_PUSH
  • TWO_HANDS_BACK
  • TWO_HANDS_UP
  • TWO_HANDS_DOWN
  • TWO_HANDS_OPEN
  • TWO_HANDS_CLOSE
  • LEFT_HAND_PUSH
  • RIGHT_HAND_PUSH
  • TURN_LEFT
  • TURN_RIGHT

而要使用雙手模式,則是要先靠 Wave 或 click 的手勢,來讓程式能追到兩隻手,然後擺出下面的初始化姿勢、來進行接下來的操作。

而一樣,只要做出上面定義的動作,就可以送出對應的鍵盤事件了。


而在設定檔的部分,官方有提供一個「gesture_event.txt」的檔案,裡面就是範例的設定。有興趣的話,就玩看看吧~真的有需要的話,也是可以根據這個檔案、再參考文件來做修改的。

至於完整的設定教學?說實話,Heresy 可能不會下去寫了…如果有人有比較詳細的教學,也歡迎提供。


最後,下面則是用這套軟體來玩 Need for Speed 這款賽車遊戲的展示:

4 thoughts on “用手勢控制電腦:HandGKET”

  1. 請問heresy
    要如何用openNI偵測膝蓋關節來驅動人物
    例如膝蓋抬多高可以偵測出是在跑步
    我知道FAAST就有這個功能但是因為要能同時偵測兩人的動作所以不知道FAAST可不可以

  2. to severe234

    OpenNI 本身沒有類似的分析功能,你必須要自己去定義、分析怎樣的條件,算是符合在跑步的條件。

    而 FAAST 的話,Heresy 自己沒有去玩過多人的狀況,所以不確定。

  3. 你好
    請問一下HandGKET只限於使用openNI2嗎
    因為我目前有使用FAAST但是他是openNI
    所以灌了HandGKET後會打不開
    我在想是不是openNI和openNI2不相容

    那想請問有沒有別的方法可以做到一樣的功能
    (另外我是使用Unity製作遊戲)

Leave a Reply

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *