上一篇《ASUS Xtion 2 開箱》基本上是大致介紹了 ASUS Xtion 2 的硬體。而這一篇,則來講一下它接上電腦使用的狀況吧~
華碩第一代的 Xtion 基本上是採用和第一代 Kinect 相同的 PrimeSense 方案;不過由於 PrimeSense 已經被 Apple 收購了,所以華碩的 Xtion 2 也不可能再使用這個架構了…
華碩官方並沒有提供 Xtion 2 採用的方案是哪一家的,不過在和華碩的人員確認過後,是得知他採用的是 ToF(Time of flight)技術的深度感應器,號稱精確率是 3%(還是應該是誤差率?)。
而在將 Xtion 2 接上 Windows 10 的電腦後,並不需要特別安裝驅動程式,他會被視為標準的影像裝置;在裝置管理員裡會出現下面的硬體:
右圖就是在裝置管理員中,以「依連線」的方式看到的裝置列表。
也由於 Xtion 2 在系統中會被視為標準的影像裝置,所以這也代表了他的資料是可以透過一般可以讀取 webcam 畫面的程式來做取得的~
不過,要使用 Xtion 2 的話,USB 控制器似乎還是得注意一下。像是 Heresy 老電腦上的 ASMedia 的 USB 3.0 控制器雖然可以正確偵測到硬體,但是在使用上卻有一些小問題,導致深度影像可以取得,但是卻沒辦法顯示彩色影像…
OpenNI
根據華碩的說法,Xtion 2 是使用 OpenNI 2.2 做為開發環境。
但是由於官方版的 OpenNI 2 預設僅支援 PrimeSene 系列的深度感應器(含第一代 Kinect),所以如果本來已經有安裝過 OpenNI 2 的人,在執行 NiViewer 的時候,是偵測不到 Xtion 2 的。
這時候,就需要把本來安裝的 OpenNI 移除,改裝華碩光碟中的版本了。
ASUS Xtion 2 的光碟片的啟動程式還滿花俏的,不過實際上內容不算多,最主要的也僅有「SDK」底下的特製版 OpenNI 2.2 而已。
他有提供 Windows 和 Linux 的 32/64 位元版本,以 Windows 64 位元板來說,他的檔名是「OpenNI-x64-2.2withXtion2.msi」,完整的 OpenNI 版本編號是 2.2.0.33,也算是 OpenNI 官方推出的最後一個版本了。
而和官方版的 OpenNI 2 的差別,在於他在安裝資料夾中的「\Tools\OpenNI2\Drivers」路徑下,多了 Xtion 2 的驅動程式模組的檔案:RvcLib.dll 和 SenDuck.dll。
其中,RvcLib.dll 是 Realtek 的程式,個人猜測應該是用來和 Xtion 2 做額外的溝通用的。他的詳細資料裡面是寫「Realtek semiconductor」,如果拿掉的話,執行 NiViewer 時會出現「calibrated data not found」的錯誤;此時雖然 NiViewer 還是可以跑,但是深度影像和彩色影像的對位會出問題。
而 SenDuck.dll 才是主要讓 OpenNI 2 可以讀取彩色影像和深度影像的驅動程式模組,在他的詳細資料中名稱是「Xtion2 Driver for OpenNI 2.2」,版本編號是 1.1.1.3。
基本上,只要安裝過一次華碩 Xtion 2 的特製版 OpenNI 2 後,就可以把這兩個檔案複製出來,之後只要把這兩個檔案放到對應的驅動程式路徑(\OpenNI2\Drivers)下,官方版的 OpenNI 2 也就可以存取 Xtion 2 了。
而實際上,個人覺得華碩如果肯直接把這兩個 dll 檔放出來的話,其實對於既有的 OpenNI 開發者來說,應該會是更方便的事啊…
下圖就是 Xtion 2 在 NiViewer 裡面的畫面:
至於深度影像上的比較,這邊就先不寫了。有興趣可以自行和《Intel RealSense F200 感應器簡單使用紀錄》和《Kinect for Xbox One @ Windows 簡單測試》這兩篇文章的圖片做比較。
不過,這邊也碰到一個問題了…華碩號稱 Xtion 2 的彩色影像最高解析度是 2592 x 1944,但是在 OpenNI 的環境中,不管是深度影像、彩色影像,還是紅外線影像,所回報支援的解析度,都只有 640×480 和 320×240 兩種…
所以看來如果要使用更高解析度的彩色影像的話…似乎就不能透過 OpenNI 了?
華碩為什麼會這樣設計呢?Heresy 個人猜測可能是為了深度影像和彩色影像的對位吧…不過這也是純粹個人臆測了。
而至於用來分析人體骨架的 PrimeSense NiTE 呢?恩,不意外地,不能用。
這點,主要應該還是卡在 PrimeSense 的 NiTE 有限制一定要使用自家的感應器才能用的授權協議上了…否則,老實說,要繞過他的限制其實是不難的。
但是實務上,也由於這樣的限制,Xtion 2 在搭配 OpenNI 2 使用時,是沒辦法使用 NiTE 2 進行追蹤人體骨架的…
而這點,除非有其他支援 OpenNI 的人體骨架追蹤函式庫出現,否則大概是沒有比較好的解法了。
一般軟體
右圖就是 Heresy 試著用「Debut Video Capture Software」這套軟體來開啟 Xtion 2 的彩色影像攝影機時,可以使用的解析度設定;可以看到,最高解析度是 2592 x 1944,不過此時會只剩 15 fps。
而深度攝影機也可以在這套軟體中偵測到,他支援的解析度就比較少、也比較詭異了。下圖就是他偵測到的可用解析度:
理論上 Xtion 2 的深度攝影機應該最高解析度是 640 x480 30fps,不過在這邊僅能看到 640 x 240 30fps 就是最高解析度的選項了;而在選取之後,深度感應器的紅外線 LED 燈並不會亮起、程式抓到的畫面也只是奇怪的綠色條紋畫面:
在 Heresy 來看,使用其他軟體來讀取深度攝影機的話,應該是不太可行的方案。
畫面很奇怪的問題,基本上應該是由於對於影像單位像素的定義不同的關係,理論上或許還有可能靠自行計算來產生 640×480 的深度影像格式(話說,Heresy 完全不知道該怎麼解析他就是了…);但是紅外線 LED 沒有亮起,應該會讓深度值沒有意義,這點應該就是無解的了。
大致上就是這樣了。
基本上,個人始終還是比較好奇,華碩為什麼會現在又針對 OpenNI 推出新的感應器?不過,基本上現在大概就是當作又有一個深度影像品質比較好的感應器了。
而個人覺得比較可惜的是:
- 不支援 PrimeSense NiTE
- 透過 OpenNI 取得的彩色影像最高只有 VGA 解析度
- 不支援 Windows Hello 的人臉解鎖
Hello Heresy,
I am new to xtion2. I have the following problem can you explain to me?
I try to run the sample program: MultiDepthViewer in OpenNi library. I want to read data from 2 xtion2 cameras at the same time, but the sample can only read data from 1 camera at a time.
The openni2 function to recognize multiple cameras is: OpenNI::enumerateDevices(&aDeviceList);
I have found a related article for kinect on linux: https://answers.ros.org/question/10006/connecting-two-kinects-with-openni_camera-will-show-only-the-first-two-topics-that-are-read/
I am currently using window and vs2013 to run the sample.
Can you spare some time and explain the problem for me? What should I do to solve it? Thank you!
讚讚
I will recommend you to ask ASUS if Xtion 2 support multiple device at the same time.
The driver and the bandwidth of USB may be issue.
For example, Kinect 2 doesn’t support multiple device.
讚讚
Heresy 先生你好,我最近也購入 Xtion 2,執行 NiViewer.exe 時沒問題(有看到深度和RGB畫面),
但是用visual studio 2013 和 OpenNI 2 跑範例程式時,發現偵測不到Xtion 2,程式碼如下
輸入:
Array aDeviceList;
OpenNI::enumerateDevices(&aDeviceList);
cout << "There are " << aDeviceList.getSize() << " devices on this system." << endl;
輸出:
There are 0 devices on this system.
想請問一下有什麼方法可以解決? 謝謝!
讚讚
感覺上應該是驅動程式模組的問題?
其實內容也有提到了,Xtion 2 的驅動程式模組是不一樣的,請確認執行檔對應的 \OpenNI2\Drivers 資料夾下有 RvcLib.dll 和 SenDuck.dll 這兩個檔案。
讚讚
可以了! 謝謝你的幫忙!
讚讚
同样的问题发生错误。
我想告诉你如何解决它。
讚讚
Please Install the OpenNI with the CD provided by Xtion 2.
Copy RvcLib.dll and SenDuck.dll from \OpenNI2\Drivers to your application driver directory.
讚讚
这么看,xtion2有点坑啊,╮( ̄▽ ̄")╭
讚讚
在時間點和功能性上,都算有點尷尬的產品…
讚讚
不知道最近二年还有没有其他的值得把玩体感设备。
讚讚
如果以全身骨架追蹤為目的的話,似乎沒看到什麼完整的方案。
Intel RealSense 貌似也沒什麼進一步發展。
讚讚