現在如果要使用 Microsoft Kinect 或是 Asus Xtion 這類的深度感應器,來做體感程式的開發的話,基本上大多都是使用 Kinect for Windows SDK,或是 OpenNI + NiTE 的方案;不過如果真的有在開發的話,應該也都會注意到,實際上這兩個方案、主要都是以人體的全身動作為主,並沒有提供類似 Leap Motion 那樣、針對雙手做細部偵測的功能。
不過,現在在 OpenNI 的 middleware 下載頁面(連結)裡面,現在也有一些針對手部做處理的函式庫(註 1)了~而 Heresy 這次介紹的,就是 OpenNI 上的「Finger-Precise Tracking」這個項目;他是一套由 3Gear System(官網)所開發的手指操作系統,算是滿早就開始開發、而且感覺完成度相對高的一套系統(之前的介紹)。
首先,下面是他的官方展示影片:
它的系統設計,主要是透過把感應器架設在正上方、往下拍,來抓到雙手的動作、並進行追蹤(下左圖);而目前雖然是以單感應器版本為主,不過早期他其實是以雙感應器為主、來進行設計的(下右圖,以前的介紹影片)。
準備檔案
而目前 3Gear 這套系統,基本上是可以免費下載的,他的下載頁面是:
目前有提供 Windows 7 x64 和 Mac OS X 64 位元的版本(很遺憾,沒有 32 位元的版本),可以直接下載。裡面除了它的系統、以及範例程式外,也包含了上面的組裝規格與教學、以及必要的文件。
另外,由於 3Gear 的程式都是用 Java 開發的,所以如果電腦上沒有安裝 Java 的話,也需要先去下載 64 位元的 Java SE 來安裝(連結)(應該是 JRE、Java Runtime Environment 就可以了)。
在下載、安裝了「gestural_user_interface_x64.exe」了這個檔案後,在預設的狀況下,所有相關的檔案都會在「C:\Program Files\GesturalUserInterface」目錄裡。而安裝程式安裝完成後,會開啟一個系統管理員權限的命令提示字元視窗,由於這個視窗之後還有用,所以建議先不要關掉。
而由於 3Gear 也有把文件一起安裝,所以接下來的步驟,就可以參考 \doc\installation-win64.html 這份說明文件了~
不過,雖然檔案可以直接下載,但是真的要使用的話,是需要向 3Gear 申請 license 的。針對個人使用者、學術研究、或是小型的商業公司,都可以申請免費的授權;詳細的說明,可以參考其官方網站的《Licensing》頁面。基本上,只要寄一封信到指定的信箱、並說明來意,應該很快就可以收到「license.yml」這樣的授權文件了~(Heresy 隔天就收到了、一年期的學術授權)
而在取得 license.yml 這個檔案後,只要把他放到安裝目錄(C:\Program Files\GesturalUserInterface)下,就可以了。
硬體環境建置
東西都準備好後,接下來要先建置整個硬體的環境。在程式安裝完成後,在 \doc\camera_frame_assembly.pdf 這份文件裡面,有提供 3Gear 建議的單一感應器架設方法。另外也可以參考 \doc\installation-win64.html 這份說明文件。
不過,如果只是測試的話,其實也不一定要真的弄一個固定的支架出來,其實這套系統只要能由上往下,讓深度感應器拍到雙手的樣子,就可以做到一定程度了~所以像 Heresy 自己其實就是單純把 Xtion Pro 在螢幕上架高(用厚紙板做的東西…)、往下拍而已;下面就是 Heresy 的建置方法:
不過這樣的配置,其實感應器並沒有固定住,所以使用時得小心震動到、引起山崩了。 ^^"
初始環境設定
接下來,第一次執行時,則是要進行第一次的環境初始化設定。由於 3Gear 的這套系統是採用需要預先校正、定位的設計,所以並不是把硬體架設好、就可以馬上使用的。首先,必須要先印出校正用的圖案、用來做校正的參考;他拿來校正的,是一張黑白的棋盤紙,在 doc 資料夾下,也有提供兩種大小的 PDF 檔(4×5-1.5.pdf、4×5-1.5-A4.pdf),可以用來列印。這邊就請自行選一張來列印,作為校正時的參考。
當上述的東西都準備好後,接下來是要使用系統管理員權限,來執行 camerasetup.bat 這個程式,進行初次的環境設定。這邊是建議使用之前安裝程式開啟的、有系統管理員權限的命令提示字元視窗,在裡面輸入「camerasetup」,來執行感應器的校正程式。(註 2)
校正程式開啟後,會像下圖的樣子;上面的影像,是感應器及時偵測到的紅外線影像,左下方的影像,則是操作的示意圖。
開啟程式後,把棋盤紙放到操作區域的中央、並且平行於感應器;如果程式有正確偵測到棋盤紙的話,應該可以看到畫面內的棋盤紙內會出現各種顏色的點(上圖就有),這時候按下中央的「Calibrate to Checkboard」按鈕,就可以開始進行感應器的校正了。
在經過一連串的計算、經過一小段時間後,系統會顯示類似下面的畫面,中央下方有一個格狀的平面;這就代表已經完成校正了~而如果把手移到操作區內的話,就可以看到手的 point cloud 了~
而確認沒問題後,就可以把程式關掉了。
執行 Server 程式
到上面為止,基本上算是完成所有的前置作業了。而實際要執行這套系統的時候,該怎麼做呢?
3Gear 的這套系統,基本上是採用 Server – Client 的架構,要使用的時候,需樣先執行一個 server 起來,透過這個 server 來讀取感應器的畫面、並進行分析;而其他的應用程式則是透過內部的網路連線,來向 Server 端要到分析完成的結果。
所以如果是要使用這套系統的程式,在執行前都必須要先把他的 server 程式跑起來才行;而要把 Server 執行起來的話,就是去執行「handdriver.bat」這個批次檔就可以了。
(HandDriver 直接點兩下執行就可以了,不需要有系統管理員的權限。)
他執行起來後,會有一個像是右圖的視窗,下面會顯示深度圖、以及用顏色標示出來的分析結果(右手是藍色、左手是紅色);而上方則是兩隻畫出來的手部示意圖,只要手動、這邊的 3D 手部模型也會跟著動。這個時候,就可以來試試看這套系統的分析、追蹤效果了~
不過,以 Heresy 自己的測試結果,感覺上他似乎還是沒有辦法很好地去追蹤每個手指的動作,感覺上比較接近在幾種不同的狀態間做切換(註 3)。而在上方的手部示意圖內,左下角可以看到「Left」和「Right」各有兩個圓圈,其中第一個圓圈,在手的食指和拇指併攏的時候,會變成實心的,這就代表他有成功地偵測到「Pinch」這個手勢(註 4);實際上,「pinch」這個手勢,應該也就是 3Gear 這套系統裡面,最重要的一個手勢了~之後的範例程式,基本上大多也都是靠這個手勢來做控制的。
另外由於 Kinect 或 Xtion 這類的深度感應器都有最短距離的限制,所以手不能抬得太高、否則可能會因為進入過近的範圍內、導致他無法抓到深度;這個問題,如果是使用短距離版的 CARMINE 1.9,應該會好一點。
而如果要結束 Server 的話,除了把視窗關閉,還要記得到他的命令提示字元視窗,按下鍵盤的 Ctrl + C,這樣才能強制把程式結束,這點也是稍微要注意一下的。
範例程式
而在 Server 跑起來之後,接下來就可以來執行他給的範例程式了。基本上,他給了好幾個可以拿來玩的範例,其中,Heresy 覺得可以試試看的,包括了:
-
assembly_trainer.bat
一個 3D 組裝的範例,透過 pinch 這個手勢,可以移動場景中的物體、到指定的地方、完成組裝。 -
heart_demo.bat
可以控制心臟、以及切平面的展示範例,一樣是透過 pinch 這個手勢來做操作。如果兩手同時捏住心臟的話,則可以旋轉心臟。按鍵盤的「t」有簡單的教學。 -
rotation_trainer.bat
透過兩手同時捏住左右兩側的把手,來旋轉一隻兔子的範例。 -
xylophone.bat
木琴的範例程式,把食指伸直後,透過移動食指來敲打木琴、發出聲音。 - slingshot.bat
一個拉彈弓、打方塊的小範例。
下面左圖,就是 assembly_trainer.bat 這隻程式的樣子,而下方右圖,則是 heart_demo.bat 的樣子。
除了簡單的操作範例外,他也有提供一些小遊戲,可以試著玩看看:
-
cricket_defender.bat
透過 pinch 這個手勢、捏住 3D 的劍(?),把炸彈打掉。 -
dino_eggs.bat
撿恐龍蛋的小遊戲,一樣是用 pinch 這個手勢來操作。
另外,他也還提供了 dashboard.bat 這隻程式,算是一個簡單的鍵盤滑鼠模擬器,有興趣的話也可以玩看看。
這篇就先寫道這了。基本上,這篇算是簡單地介紹,要怎樣去建置、執行 3Gear 的這套系統起來;而至於要怎麼去寫他的程式,就等到之後再說了。
整體來說,個人是覺得如果是以要用手勢來做操作來說,這套系統雖然不能算是完美,不過應該也算是堪用了。它的優點,包括了:
- 基本上可以免費使用,而且不需要依賴 NiTE。
- 雖然沒有辦法很好地抓到手的細部動作,不過基本上 pinch 這個主要的手勢,還有不差的偵測效果。(註 5)
- 使用 TCP Socket Server 來提供資料,理論上可以用任何語言來使用它的結果。(註 6)
而他的缺點,在 Heresy 來看,主要在於:
- 硬體環境需要讓感應器由上往下拍,而且還需要事先校正,要建置會比較麻煩。
- 手部動作還是沒辦法抓得很好。
- 礙於感應器的使用距離限制,手部活動範圍有限(不管是往上,還是左右)。
至於到底時不實用,應該也是見仁見智了~
附註:
-
OpenNI 網站上,其他和手部相關的 middleware 有:3D Hand Tracking Library、Tiptep Skeletonzer、PrimeSense Grab Detector;另外 CodePlex 上的 Candescent NUI 也可以看看。
-
如果該視窗已被關閉,請自己開啟一個新的,但是記得要有係統管理員權限,不然校正完的資料會因為沒有權限寫入、而無法存下來的。
另一種解決方法,則是把整個 GesturalUserInterface 移到 Program files 以外的資料夾,這樣就沒有寫入權限的問題了。 -
雖說感覺他的手指沒有抓得很好,不過實際上他的 API(網頁)是有提供每一個手指關節的位置的,所以實際上他應該還是有去估算每根手指的位置才對。
-
Heresy 也不知道第二個圓代表什麼,至少到目前都沒觸發成功過…有人知道的話也麻煩告知一下。
-
根據視角,可能會變得不是那們容易偵測成功,不過手的角度調整一下,大多可以成功。
-
他的同訊協議定義:http://www.threegear.com/latest/doc/protocol.html。
針對 C++ 和 Java,3Gear 有提供封包好的函式庫,可以較簡單地使用。 -
這套系統也可以針對每個使用者,進行個別的手做資料庫的紀錄,理論上會有更好的效果。這部分的說明請參考 \doc\handcalibration.html 這份文件。
Heresy大大您好,我是輔大資工系四年級的大學生,有幾個問題像請教前輩。目前還有什麼類似這樣子(單純手部細微偵測)的middle lib嗎?有上網找過許多資料,最符合我目前需求的就是這個lib,可惜因為他賣給oculus了,所以目前束手無策,想請問一下Heresy有沒有什麼好的想法或是文章、lib能提供研究。另外提供一下我目前在作的東西的想法,我現在目前就是將kinect 或是 kinectv2 倒掛像是您架設3-gear system 一樣,我們原本想法是要將一個感興趣的區域圈起來,然後將在該區域並且深度剛剛好是碰到桌子上的面積做計算,接者只要面積大過一個程度就會視為按下的狀態,但是kinect或是 kinectv2 有時候會判斷錯深度,導致明明該深度沒有面積但還是計算進去,導致按鈕錯亂,所以接下來就想到說可以使用先偵測手的骨架,再判斷手指末端的深度判斷按下狀態,但是目前找了很多資料,也在github上看了很多有關手部骨架的專案,但是不是效率(fps)太差就是良率(偵測骨架)差,想說有沒有類似的專案或是開源lib或是Heresy大大有沒有任何想法可以提供的,謝謝。
讚讚
抱歉,Heresy 沒有在繼續做這方面的研究,所以不太確定目前是否有更合適的方案可以拿來用。
讚讚
您好,现在3gear好像已经关闭了license的发放,但是我现在非常非常需要使用一下,不知道能不能帮一下忙,让我用一下您的license,真的万分感谢
讚讚
抱歉,不過應該沒辦法。
Heresy 的授權也已經過期了。
讚讚
这样啊,没关系,还是谢谢了。
讚讚
不好意思又是我,3gear网站 http://nimblevr.com/download.html 上面说,如果您使用过3gear,即使license过期了好像还是可以申请的,不知道能不能帮一下忙,谢谢了。
讚讚
抱歉,Heresy 應該不會去處理這件事。
個人建議你直接寫信和對方描述一下你的需求,看看官方是否願意給你新的授權。
這樣的處理方法應該是比較合適的。
讚讚
嗯,就是官方拒绝了我的请求我才找您帮忙的。不管怎样,谢谢您的回复,谢谢了。
讚讚
[…] 由於軟體的部分,主要應該是由 3Gear 來做開發的,所以上和之前 OpenNI 上的 3Gear Systems 所提供的「Finger-Precise Tracking」這個 middleware library(之前的介紹)應該是相同的技術。 […]
讚讚
我去申请了license,可以一直没有给我回复,是我的申请时写的有问题吗?能够把你的发给我一份呢?或者告我应该怎么去申请呢?谢谢了
讚讚
他不同的授權是要寄到不同的信箱的,有沒有可能是寄錯地方了?
另外,可能也要確認一下內容的英文文法或用字有沒有問題?可能可以考慮盡量明確、簡單一點。
讚讚
之前有用Kinect XBox 360裝來玩了一下,
可能是沒有near mode的關係,
真的蠻容易偵測不太到手。
讚讚
Heresy 倒是忘了用 Kinect for Windows 去試試看了。
等有空來玩看看,看看效果會不會比較好。
讚讚
3Gear 中间件之前测试使用1.08,效果确实差了不少
讚讚
所以你有用 CARMINE 1.09 玩過?Heresy 還沒機會玩到呢…
讚讚
您好,不知道可不可以用一下您的授权呢?官方现在关闭新的授权了。
讚讚