2012 OpenNI 環境/Kinect 安裝教學


一年多前,Heresy 有寫了一篇《在 WIndows 上安裝 Kinect(含 MMD 使用 Kinect 簡易教學)》,算是在當時針對第一個版本的 OpenNI、NITE,以及 Microsoft Kinect 的安裝做教學。

不過到現在,OpenNI 的版本已經從 1.0.x 進版到 1.5.x 了,在模組、路徑上,其實都有相當程度的變更。雖然後來也有更新過一次(參考),不過可能還是不夠新,所以現在再來針對現在的最新版本,來寫一個比較完整的吧。

Windows 環境安裝 OpenNI

首先,先針對一般在 Windows 上,只需要到 OpenNI 官方網站(連結),在網站的上方有「Downloads」的字樣,把滑鼠游標移過去會出現選單(下圖紅色的圈),點選選單裡的「OpenNI Modules」、就可以進入下載頁面了(頁面)。

下載頁面裡,「Select downloads option」(選取下載選項)下面有三個下拉選單,需要依序選取(右圖)。

在這邊的前兩個欄位、依序選取「OpenNI Package」、「Stable」,這樣第三個欄位就會有給 Windows 的安裝套件可以選了。

一般使用者

對於只是想跑有用到 OpenNI 程式(例如 MMD)、但是沒有要進行程式開發的人來說,如果是 32 位元的 Windows 作業系統的話,就請選取「PrimeSense Package Stable Build for Windows x86 (32-bit) v20.4.2.20 Redist Edition」(版本編號可能會因為時間而有所變化);選好之後,按下方的「Download」按鈕,就可以進行下載了。下載之後,請執行這個安裝檔,並一直按「Next」,這樣就會把 OpenNI 和 NITE 必要的檔案都安裝完成了。

而如果是使用 64 位元的 WIndows 的話,則建議請下載「PrimeSense Package Stable Build for Windows x64 (64-bit) v20.4.2.20 Redist Edition」這個版本;他會同時安裝 32 位元和 64 位元的版本,這樣遇到 32 位元或 64 位元的程式,都可以使用。

程式開發者

而如果是要進行 OpenNI 程式開發的話,則不能使用「Redist Edition」,要使用「Development Edition」。「Development edition」和「Redist edition」的不同,在於「Redist edition」是給一般用戶用的,只包含了執行 OpenNI 時必要性的檔案;而「Development edition」則是給開發人員用的,檔案比較大,除了必要的內部元件外,還包含了開發程式需要的檔案、文件、以及範例等等東西。而由於「Development edition」包含了「Redist edition」的所有檔案,所以如果有安裝「Development edition」的話,就不用額外安裝「Redist edition」了。

而和 Redist Edition 版本一樣,如果是使用 32 位元的作業系統的話,就請選擇 32 位元的「PrimeSense Package Stable Build for Windows x86 (32-bit) v20.4.2.20 Development Edition」;而如果是使用 64 位元 Windows 作業系統的話,則建議請選擇 64 位元用的「PrimeSense Package Stable Build for Windows x64 (64-bit) v20.4.2.20 Development Edition」、同時安裝 32 位元和 64 位元的版本。

 


硬體安裝

ASUS Xtion PRo 系列

如果是使用 ASUS Xtion Pro 系列的產品的話,由於他是 OpenNI 官方相容的硬體,所以理論上直接把 Xtion Pro 接到 USB 上,就可以抓到驅動程式並且使用了!在安裝完驅動程式後,在裝置管理員裡面,應該可以看到「PrimeSense」的類別下,有一個「PrimeSense PS1080」(如右圖),這就代表有這卻抓到硬體了!

而如果系統沒有自動抓到驅動程式、而需要手動指定驅動程式所在位置的話,OpenNI 所提供的驅動程式預設是會在「C:\Program Files\OpenNI\Driver」,理論上應該只要指定這個資料夾,Windows 就可以找到對應的驅動程式了。

Microsoft Kinect for Xbox360

不過如果是使用 Microsoft Kinect for Xbox 360 的話,官方的驅動程式並不能直接支援,還需要另外去安裝修改過的驅動程式!目前一般都是使用 avin2 這位網友所修改出來的「SensorKinect」模組,他的網頁是

https://github.com/avin2/SensorKinect

在這個頁面裡面,點選「Bin」後,就可以看到已經編譯、封包完成的 SensorKinect 硬體模組的安裝檔(頁面);而如果是一般使用的 32 位元的話,就是點選「SensorKinect091-Bin-Win32-v5.1.0.25.msi」進入頁面下載,64 為原則就是點選「SensorKinect091-Bin-Win64-v5.1.0.25.msi(一樣,版本編號可能會變化)來下載。

不過不熟系 github 的人可能點進去了也不知道要怎麼下載,所以這邊再補充一下,在 github 進入單一檔案的頁面後,在右下方會有「RAW」和「History」兩個按鈕,這時候只要按下「RAW」就可以下載檔案了!(下圖紅色圈的部分)

而下載後,執行下載完成的安裝檔,就可以安裝 Kinect 專用的 OpenNI 硬體模組以及驅動程式了。不過要注意的是,由於硬體模組需要有 OpenNI 的平台才能安裝,所以請先安裝好 OpenNI 的環境再來安裝 SensorKinect,這樣才不會出問題。

都裝好後,接上 Kinect 後,理論上就會抓到三個硬體;在裝置管理員裡,在「PrimeSense」的類別下,會有三個裝置:「Kinect Audio」、「Kinect Camera」、「Kinect Motor」。如果都有抓到的話,就代表硬體都安裝成功了。

而如果沒有自動找到驅動程式的話,可以手動去指定驅動程式所在的路徑,預設是會在:「C:\Program Files\PrimeSense\SensorKinect\Driver」。

不過另外要注意的是,目前 SensorKinect 應該無法使用在新的 Kinect for Windows 硬體上的,可能要等新版的驅動程式會不會對此做修改了。

 


測試

理論上,OpenNI 環境裝好、硬體也抓到了,要使用 OpenNI 感應器的環境應該就已經就緒了~而接下來,就是要執行 OpenNI 的程式、來做測試了!如果是安裝「Development edition」的話,在程式集裡面應該可以找到一個「NiViewer」的官方範例,可以用來做測試之用。

他執行起來應該會是全螢幕、像下面這樣子:

左上方黃色的部分就是深度影像、右上方就是彩色影像了。基本的操作,包括了:按「Esc」可以離開程式、「f」可以在全螢幕和視窗模式間做切換,滑鼠右鍵可以叫出進一步控制的選單。

如果是安裝「Redist edition」的話,則沒有這個官方範例可以做測試,所以就只能看要用什麼程式,直接拿它來做測試了。

如果無法正常使用的話,可能要注意的有幾點:

  1. OpenNI 程式的架構應該會呼叫一個 XnSensorServer 的程序,並且透過電腦內部的連線來取得裝置的資料;所以如果有安裝軟體防火牆的話,可能要注意一下相關的設定,以避免因為內部的連線被防火牆擋掉,而無法正常使用。

  2. Microsoft Kinect for Xbox 360 基本上比較挑 USB port,所以有可能會差上去沒反應、或無法正常使用;如果遇到不明問題,建議先換接到別的 USB Port 上試試看。同時,也建議不要透過 USB Hub、而是直接接到主機板的 USB port 上。

  3. 官方的硬體模組/驅動程式可以和 avin2 的 SensorKinect 同時安裝不會有問題,但是 ASUS Xtion Pro 和 Kinect for Xbox 360 無法同時使用,驅動程式會衝突,後面接上去的裝置會錯誤。

  4. NiViewer 等官方範例基本上都是用 OpenGL 來做顯示的,如果顯示卡驅動程式沒有正確安裝的話,可能會無法正確顯示;如果遇到城市可以執行,但是沒有正確的畫面的話,建議檢查一下顯示卡驅動程式是否有正確安裝。

  5. 如果是 Direct 3D 的程式、遇到缺少 d3d9_24 dll 這類的檔案的話,請至微軟網站下載 Direct X 線上安裝程式進行更新。


一些細節

前面基本上是先根據下載、安裝的部分,直接做說明;接下來,來講一些細節的部分。

首先,OpenNI 的環境主要包括三個部分:OpenNI 本身的框架分析演算法的 Middleware、以及硬體模組;基本上,應該是這三種東西都安裝好了,才算把整個 OpenNI 環境建立完成。下方就是這三者的簡易說明:

OpenNI 本身的框架

由 OpenNI.org 提供的 OpenSource 軟體,可以在 github 上找到他的原始碼(連結);不過對一般人來說,應該都是下載 OpenNI.org 提供、已經編譯好的 binary 就可以了。他基本上是 OpenNI 的平台,所有程式都是透過這個框架、來對裝置、middleware 做存取、控制的。

要注意的是,安裝的時候,OpenNI 一定是要最先安裝、最晚移除的,這樣才能新增、移除其他的 middleware 和硬體模組。另外實際上,安裝 OpenNI 的同時應該就已經安裝了公版的驅動程式了。

分析演算法的 Middleware

OpenNI 的框架本身算是空的,像是人體骨架分析、手勢辨識等這些功能都只有設計一個介面在那、並沒有實作;而要真的能用這些分析功能,就必須要額外安裝這些演算法的 Middleware。

目前基本上都是安裝 PrimeSense 所提供的 NITE,他裡面包含了目前所需要的各種分析的演算法,不過他不是 OpenSource 的,所以沒有原始碼可以看、只能下載編譯好的 binary。如果之後有其他的 Middleware 的話,也可以安裝其他 Middleware 來使用。

硬體模組

對應不同的 OpenNI 相容硬體所需要的模組,要有安裝這個模組,OpenNI 才能對對應的硬體進行控制。

目前的硬體不管是 Microsoft Kinect 還是 Asus 的 Xtion Pro 系列,都是使用 PrimeSense 的感應器;而 PrimeSense 官方有針對由自家的感應器放出公版的驅動程式及 OpenNI 硬體模組的原始碼(連結)。

和 OpenNI 一樣,一般人應該都不需要去使用原始碼,而可以直接使用官方提供、編譯好的 binary 就可以了。不過要注意的是,公版驅動程式和感應器模組並不適用於 Microsoft Kinect!如果要使用 Microsoft Kinect 的話,是需要使用修改過的版本的。

而在前面「Windows 環境安裝 OpenNI」的部分所使用的「OpenNI Package」的安裝檔,實際上是把這三樣東西都包在一起,方便使用者安裝而已~在早期,其實都是要分別下載安裝的。實際上,目前官方下載頁面裡,也都還有提供原始碼下載(頁面)、以及上述三者的檔案各自下載的功能。

在下載頁面裡,「Select downloads option」下面有三個下拉選單,第一層選單就是用來選要下載哪類的東西的,它包含了五種選項:

  • OpenNI Binaries
  • OpenNI Compliant Middleware Binaries
    (OpenNI 相容 Middleware)
  • OpenNI Compliant Hardware Binaries
    (OpenNI 相容硬體)
  • OpenNI Packages
  • ONI files

前面在這邊所選的,就是整個包裝好的「OpenNI Package」;而要獨立下載的話,則就是前面三項了!至於最後一項「ONI files」,則是提供了官方錄好的深度、彩色資料,算是用來做測試資料用的,基本上一般都用不到。

而在這邊選取前四項的話,第二層的選單都會出現「stable」和「unstable」的選項。
Stable 是穩定版、通常版本比較舊、但是經過比較多的測試、會比較穩;unstable 是不穩定的版本,但是會比較新、功能可能比較多。某方面來說,可以把 stable 版看成正式版、把 unstable 版看成測試(Beta)版,這樣應該比較容易理解。至於要用 stable 版還是 unstable 版?就看需求了。以開發來說,Heresy 會建議用最新的 unstable 版就是了。(不過像在這個時間點,其實兩者的版本是相同的)

接下來,最後一層會列出來不同平台、不同版本的檔案,這時候就是要針對自己的平台和需求做選取了。在這邊,他主要會有不同作業系統,包含是哪種作業系統、32 / 64 位元的版本。一般使用者基本上都是使用「for Windows」、「32-bit」的版本,應該就都可以了~

不過這邊要注意的是,個別下載安裝檔的話, 64 位元的版本並不會像 Packages 的版本一樣、直接包含 32 位元的版本,所以如果是要同時安裝 32 位元和 64 位元的版本,是需要兩者個別安裝的。

而「Development Edition」和「Redist Edition」之間的選擇,前者就是「程式開發版」,後者則是「可轉發套件版」(Redistributable),則是如同在「Windows 環境安裝 OpenNI」所說的,是要開發程式的人再選擇「Development Edition」應該就可以了。不過要注意的是,「Redist Edition」裡面不包含任何 OpenNI 的程式,所以也沒有辦法使用官方範例(NiViewer)來進行測試。


OpenNI / Kinect 相關文章目錄

對「2012 OpenNI 環境/Kinect 安裝教學」的想法

  1. 請問openNi官網關掉了!我還可以去哪裡下載OpenNI Modules下面的東西呢?感激不盡!謝謝!

  2. 我使用的系列是ASUS Xtion PRO Live
    安裝環境是OpenNI version 1.5.2.23
    Sensor version 5.1.0.41
    NITE version 1.5.2.21
    請問我在執行NIViewer後,錄製出來有影像可是沒有聲音,我的device一直抓不到audio node,我從Device→Audio→on/off出現
    One or more of the following nodes could not be enumerated:
    Audio:PrimeSense/SensorV2/5.1.0.41:Can’t create any node of the requested type
    請問到底是哪裡出問題呢?

  3. 請問一下~~
    進行開始進行互動技術的學習,所以正在尋找一些可以應用的資源。
    根據版主所提供的OpenNI 下載頁面似乎已經更新了,似乎找不到開發者城市下載頁面,只有新版的SDK下載頁面,請問我該如何取得開發套件呢?

發表留言

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料