基本上,雖然應該大部分的人在使用 OpenNI 時,應該都是以微軟的 Kinect(for Xbox 360)為主,但是實際上,OpenNI 並不是原生支援 Microsoft Kinect 的!要在 OpenNI 的環境下使用 Kinect,並不能使用官方的驅動程式,而是要使用修改過的驅動程式,才能正常使用的。
而相較之下,華碩的 Xtion Pro 以及 Xtion Pro Live 這兩款感應器,就是真正對應 OpenNI 的設備!他不需要使用特殊版本的驅動程式,而可以直接以 OpenNI 的公版驅動程式,就可以在 OpenNI 的環境下使用;相較於 Kinect 還需要等修改版推出,如果是要使用 OpenNI 來開發的話,Xtion Pro 應該算是一個比較方便的選擇。
Heresy 自己之前在「體感技術研討會」(參加感想)時,是已經有看過 Xtion Pro 和 Xtion Pro Live 的實物了,不過由於各種因素,自己在開發上還是以 Microsoft Kinect 為主要硬體;不過這次,算是終於借到了一台 ASUS 的 Xtion Pro Live、可以來玩一下了!
接下來,就是開箱聞了!下面左邊的照片,就是 ASUS Xtion Pro Live 的外盒了~基本上,盒子本身很小,而盒子上的說明,都是以英文為主,只有側邊的簡易規格說明有多國語言(下方右圖),包含了他的主要硬體參數;而盒子的背面,則是印了一些簡單的應用說明、以及 ASUS、PrimeSense 和 OpenNI 的 Logo。
這邊所列的規格,基本上如下:
- 有效距離:0.8 公尺 - 3.5 公尺
- 有效角度:58° H、45° V、70° D
- 介面/電源:USB 2.0
- 感測器:RGB & 深度
- 支援平台:Intel x86 & AMD
- 支援作業系統:
- Win 32/64: XP、Vista、Win7
- Linux Ubuntu 10.10: x86 32/64bit
- 程式語言:C++/C#(Windows)、C++(Linux)
- 音效:內建兩組麥克風
基本上,在支援的語言和作業系統的部分,因為 Xtion Pro 就是使用 OpenNI 這個開發平台,所以目前實際上能支援的是比外盒上列的更多一些啦~
而內容物的部分,也很單純,所有的東西就是下面左邊照片裡的這三項;包含了 Xtion Pro Live 的本體(下右圖)、軟體光碟、以及簡易的安裝說明(多國語言)。其中,軟體光碟裡面所附的,基本上也就是 OpenNI 的東西了~所以建議可以直接到 OpenNI 官方網站下載最新版,而不用使用光碟裡的版本。
在感應器的部分,Xtion Pro Live 由於同樣也是使用 PrimeSense 的方案,所以在成品上其實也算是大同小異;在正面有三個圈,最左邊的是紅外線發射器,和最右邊的紅外線接收器是一組的、用來感應深度,中間的則是 RGB 感應器,可以用來擷取一般的彩色影像。
在感應器的左右兩側的邊緣,各有一個小洞,是用來收音的麥克風(上右圖);和 Kinect 使用四個單元的麥克風陣列比起來,Xtion Pro Live 在這方面算是稍弱了一些。
基本上,Heresy 對 Xtion Pro Live 的第一個印象,是「好小」。和 Kinect 相比,Xtion Pro 不但小了整整一圈、而且也輕了不少!下面幾張照片,就是 ASUS Xtion Pro Live 和 Microsoft Kinect for Xbox360 的對比了~
除了大小差異很大外,另一個很大的差異,就是由於 Xtion Pro Live 沒有像 Kinect 一樣有配置可以旋轉的馬達,所以耗電量相對低了不少,也因此他只有一條標準 USB 線需要電腦、而不像 Kinect 一樣還要另外接電~這點也算是在使用上比較方便的地方了。
由於沒有馬達,所以 Xtion Pro Live 如果要調整角度的話,就必須手動了。而他基本上的設計是能夠無段式地調整上下的傾角,可動的範圍還滿大的,下面兩張圖就是往下和往上的極限。
硬體大概介紹完了,接下來是實際使用的部分了。基本上,要在 PC 上使用 Xtion Pro Live、和要使用 Kinect 差不多,都是要到 OpenNI 的下載頁面,下載 OpenNI Biinary、OpenNI Compliant Middleware Binary(NITE)來安裝;和 Kinect 不同的是,Xtion Pro Live 可以直接使用官方的 Compliant Hardware Binary、而不需要去另外使用修改過的 SensorKinect。
而在 Windows 下,抓到硬體會是名為「PrimeSense PS1080」的裝置(如右圖),只要有正確抓到,理論上就可以在 OpenNI 的環境下使用了~
不過,官方驅動程式預設是把解析度設定成為 320 x 240(QVGA)的模式,所以如果沒有在程式裡面特別做設定(設定 map output mode)的話,預設的畫面解析度都會是這個大小。而如果想要把預設解析度改掉的話,也可以透過修改「C:\Program Files\PrimeSense\Sensor\Data\GlobalDefaults.ini」這個設定檔裡面的參數,來讓預設解析度變成和 Kinect 一樣的 640x480。
而之後呢,基本上使用就都沒有什麼不一樣了~不過由於兩者的硬體配置上還是有些差異,所以畫面捕捉到的內容,也會有些不同。
像是 Xtion Pro Live 的 FOV 是水平 58°、垂直 45°,就比 Kinect 的 57°/43° 來的大一些些。另外在深度和彩色影像的對應位置關係的部分,也有些不同;下圖左邊就是 Kinect 抓到的畫面、右邊則是 Xtion Pro Live 抓到的畫面,可以發現,Kinect 的深度相較於彩色影像比較偏低、而 Xtion Pro Live 的畫面則比較靠中間。
而在抓到的深度值的分布上,Heresy 還沒做過詳細的驗證,不過大致上看來是和 Kinect 的結果(參考)差不多的~所以以得到的資料來說,除了深度的相對視角比較不一樣外,Xtion Pro Live 和 Kinect 基本上應該是沒有差異的。
接下來,來整理一下 Xtion Pro Live 和 Microsoft Kinect for Xbox 360 的優缺點吧~
首先,Heresy 覺得 Xtion Pro Live 他一個很大的優勢,就是它的體積小很多、輕很多,而且不用額外供電、只要一條 USB 線就夠了!相較於此,Kinect 其實算是有點笨重了。另外,在 Heresy 這邊使用上,感覺 Xtion Pro Live 似乎不像 Kinect 一樣,會挑 USB port;在 Heresy 的工作機上,Kinect 接在 USB 3.0 的控制器上是無法運作的,但是相對的,Xtion Pro Live 則沒有這個問題!
而在硬體功能面,在一般開發者最常用到彩色、深度感應器的部分,兩者應該算是具備同等級的硬體(其實搞不好應該算是一樣的硬體?),所以這部分應該算是平手。
但是在聲音的部分,Kinect 的四單元麥克風陣列在規格上應該是完全獲勝的!不過目前的驅動程式,應該還是無法正確地透過 OpenNI 來取得聲音的資料的,所以雖然有比較好的硬體,但是還是沒有用…而 Kinect 的馬達也是一樣的狀況,雖然他有可以控制的硬體,但是卻沒有辦法透過軟體來控制,所以也算是相當可惜的。
不過,如果仔細看 OpenNI 的介面的話,可以發現 OpenNI 應該是有打算透過 xn::GeneralIntCapability 來做一些特殊的控制;像是現在在 xn::MapGenerator 就多了不少這類型的 capability,例如 XN_CAPABILITY_ZOOM、XN_CAPABILITY_ROLL、XN_CAPABILITY_BRIGHTNESS…等等。這些功能目前都還沒有支援,不過也算是為了之後預留空間了~或許哪一天,Kinect 的驅動程式改得夠好了,就可以透過這些 capability 來做馬達的控制了!
也因此,雖然在硬體規格上,Kinect 算是比 ASUS Xtion Pro Live 來的強,可是以目前來說,實際上要在 OpenNI 使用的話,Xtion Pro Live 反而會有比較完整的功能(尤其是聲音)。而如果要發揮 Kinect 全部的功能,可能還是得放棄跨平台的 OpenNI、而改用 Microsoft Kinect for Windows SDK 了(不過授權的問題…以微軟的說法,以後可能還得重新買新的 for Windows 專用硬體才行)。
除了上面提到的比較之外,另外必須要說的,Xtion Pro / Xtion Pro Live 最大的優勢,就是他是直接由 OpenNI 來支援的,所以驅動程式的支援會是最快、最完整的!像是以往 OpenNI 推出新版、Sensor 模組有更新的時候,Kinect 的使用者都要再多等個幾天、才會有對應的驅動程式可以用,而如果是使用 ASUS 的 Xtion Pro 或 Xtion Pro Live 的話,就不會有這個空檔了~
另外,Kinect 目前在使用上,其實還是有些問題。像是現在在 OpenNI 裡使用 Kinect 時,除了 QVGA 模式似乎無法正常使用(會抓不到東西)之外,在使用 device 的 Device Identification Capability 時,也是無法正確抓到硬體的序號的;相較於此,ASUS Xtion Pro Live 就沒有這樣的問題了。
所以,結論?Heresy 是覺得,如果真的是要開發 OpenNI 的程式的話,華碩的 Xtion Pro Live 應該還是會是比較好的選擇!畢竟在支援上,是比較完整的。但是如果同時想要開發 OpenNI 和 Kinect for Windows 的程式、甚至還想玩 Xbox 360 的話,那 Kinect for Xbox 360 的通用性應該還是更高些;不過等到之後微軟更新了 Kinect for Windows 的 SDK 後…Heresy 就不確定怎麼樣了。
最後附帶一提,比較討厭的是…現階段來看,給 Kinect 用的 SensorKinect 和官方的 Sensor 模組雖然可以同時安裝,但是卻沒辦法讓 Kinect 和 Xtion Pro Live 這兩種裝置同時正確的驅動…單獨使用都沒問題,但是想要同時使用兩者的話,就掛了。
如果先裝了 Xtion Pro Live 的話,Kinect 接上去後,Kinect Camera 這個裝置就會無法正常地驅動(上左圖);而如果先接了 Kinect 的話,再接上 Xtion Pro Live,PrimeSense PS1080 這個裝置會有問題的(上右圖)…這個問題,只能希望之後有辦法修正了。
回复Comments
作者:
{commentrecontent}