給想開始學 Kinect/OpenNI 程式開發的人 2016

這篇的主題,是要開始學 Kinect、或是 OpenNI 程式開發前,應該要知道的一些事情;基本上,主要的目的,是壤還搞不清楚狀況的人,知道自己可以使用哪個開發環境,還有該開發環境的狀況。

其實之前都寫在各個文章裡面了,不過由於不時還是有人會弄錯、或是不知道某些東西,所以這邊彙整一下。

基本上,要選擇體感程式、深度感應器的開發環境,主要要取決於你用的是哪個感應器;根據所使用的感應器的不同,能使用的開發環境自然也就不同了。

所以接下來,這邊就是以硬體為導向,開始分類。首先,下面是以表格形式的彙整:

感應器
ASUS Xtion 與其他 PrimeSene 架構感應器
第一代 Kinect
第二代 Kinect
OpenNI 1
可使用
可使用
不可使用
OpenNI 2
可使用
可使用
不建議使用
Kinect for Windows v1
不可使用
可使用
不可使用
Kinect for Windows v2
不可使用
不可使用
可使用

閱讀全文

Kinect for Windows v2 的一些資源

雖然算是晚了不少,不過 Heresy 之前終於弄到了 Kinect v2 的感應器(for Xbox Onefor Windows),也寫了很簡單的開箱測試文了。

而雖然是想開始花時間來研究到底要怎麼寫 Kinect for Windows v2(以下簡稱 K4Wv2)的程式,但是由於最近都在做別的方面的東西,所以一直到現在都還沒有真的有時間下去玩…

不過最近,其他事前暫時算告一個段落了,所以接下來應該會來研究看看了吧~而在開始之前,這邊先來稍微整理一下,最近看到的一些相關資源。

閱讀全文

201407、OpenNI 現況

在 2013 年底,Apple 正式收購了 OpenNI 的主導廠商、PrimeSense;而到了 2014 年的四月底、OpenNI 的官方網站也正式關閉,其後又過了一段時間後、連 PrimeSense 的官方網站也都停止運作了。而這也看得出來,所謂的 OpenNI 聯盟,其實只是靠 PrimeSense 玩起來的…

那現在,OpenNI 的狀況是怎樣呢?

首先,之前針對 iPad 推出外掛深度感應器「Structure Sensor」的公司 Occipital(官網),已經決定接手繼續維護 OpenNI 2 的 SDK 了!他也為此建立了一個專頁、提供了 OpenNI 2 相關的資源下載;其網址是:

http://structure.io/openni

閱讀全文

Kinect 錄製的 ONI 檔無法在 NiTE 2.2 使用的問題

恩…雖然由於 PrimeSense 被 Apple 收購的關係,OpenNI 官網已經關閉、而 PrimeSense 的 NiTE 也不再維護了,不過包括 Heresy 自己在內,還是有一些人有在用 OpenNI,所以這邊還是寫一下吧。

這邊主要的問題,是在最後的 OpenNI 2.2 和 NiTE 2.2 的環境下,在把 Kinect 的資料錄下來成 ONI 檔之後,錄下來的檔案會無法再給 NiTE 使用。(在建立 UserTracker 的時候,會出現「memory access violation error」的錯誤)

而 Heresy 雖然滿早就知道這個問題了,但是由於自己都沒碰到、也無法重現,所以也就放著沒管了。不過最近剛好有人向 Heresy 詢問這個問題,所以就認真地和他詢問了一些資訊,來試著釐清、解決了。

閱讀全文

處理 NiTE2 的骨架關節點方向性資訊:Quaternion

之前已經在《NiTE2 的人體骨架追蹤》,提過怎麼在 OpenNI 2 的環境下,使用 NiTE2 這個函式庫,來做人體骨架的追蹤了。當時 Heresy 只有提到怎麼去處理骨架的關節點位置資料,而跳過了他的方向性資訊;而 NiTE 2 採用的 Quaternion 表示法似乎對不少人造成問題,所以雖然 NTE 已經不會再維護、發布了,但是這邊還是稍微解釋一下吧…

首先,「Quaternion」(翻譯似乎是「四元數」?)是一種在數學上、可以用來表示三度空間中的旋轉、或是方向性的表示法;他和 euler angles、或是旋轉矩陣這類比較有名的表示法相比,他有一些在實務上的優點,也因此在不少領域上都有用到。(參考:Quaternions and spatial rotation

而 Heresy 這邊主要是以實用為出發點,不去講 Quaternion 的數學細節;如果要比較學術性、完整的資料,就麻煩自己找書看吧。(其實是因為雖然學過,但是其實也算忘得差不多了 :p)
也希望下面的東西沒有錯了。(有錯也請麻煩指正)

閱讀全文

Virtual Device for OpenNI 2

這是一個 OpenNI 2 用的虛擬裝置模組,他的功能基本上是提供 OpenNI 2 環境建立一個虛擬裝置的功能,讓程式開發者可以自行去指定這個虛擬裝置的資料;比如說,如果是有其他形式的深度影像、或是其他深度攝影機的資料,都可以透過這個模組,來讓資料可以在 OpenNI 2 的架構下來使用。

而另一方面,這也可以用來模擬類似 OpenN1 時提供的「Mock Node」、也就是可以用來修改取得道的深度資料、讓之後的 middleware(PrimeSense NiTE)可以使用。(參考《修改 User Generator 用來分析的深度影像》)

這個模組是以 OpenSource 的形式,放在 GitHub 上,他的網址是:https://github.com/VIML/VirtualDeviceForOpenNI2
另外,雖然這個模組也有以 tools 的形式 submit 給 OpenNI 了,但是看來似乎都沒有被處理。

閱讀全文

OpenNI2-Kinect2Driver

微軟已經在日前開始發布新版 Kinect、Kinect for Windows v2 的開發者預覽版了~沒弄錯的話,由於 2.0 版的 SDK 和目前的 Kinect for Windows SDK 1.x 並不完全相容,所以並沒有辦法讓新版的 Kinect 直接在 OpenNI 2 的環境下使用。

而如果希望讓新版的 Kinect 可以在 OpenNI 2 的環境下被讀取到的話,現在有有網友有寫出針對 Kinect for Windows v2 Developer Preview 所開發出來的驅動程式模組了~這份檔案在

https://github.com/kaorun55/OpenNI2-Kinect2Driver

理論上,使用這個版本的驅動程式模組,就可以在 OpenNI 2 的環境下來讀取 Kinect for Windows v2 感應器的資料了~不過,他也是不能對應 PrimeSense NiTE 的。

閱讀全文

OpenNI 2 用的 Intel Perceptual Computing 驅動程式模組

之前有介紹過了,Intel 有推出所謂的「Perceptual Computing SDK」,來搭配 Creative Senz3D 這款基於 SoftKinetic 公司的深度感應器,讓大家可以來開發體感程式。而現在,有人用 Intel Perceptual Computing SDK、寫出讓 Creative Senz3D 可以在 OpenNI 2 環境下使用的驅動程式模組了!

該開發者的名字是 vbystricky,他的這份模組,有放在自己的 GitHub 上,連結是:

https://github.com/vbystricky/OpenNI2/tree/PerCDevice/Source/Drivers/PerCDevice

閱讀全文

OpenNI 2.2.0.33 / NiTE 2.2.0.11

OpenNI 在上個月底,把 OpenNI 2 的版本升級到了 2.2.0.32 Beta,算是一個小更新。而這兩天,OpenNI 又再度放出了更新,不過很遺憾,這次的更新還是沒有更新到開發支線上的 OpenNI 2.3、而是一個小版號的修改、升級後是變成 2.2.0.33 Beta、只差了最後一個數字。

檔案一樣可以在 OpenNI 官網下載:http://www.openni.org/openni-sdk/

至於這次從 2.2.0.32 升級到 2.2.0.33 改了什麼?基本上…感覺應該是完全沒改啊…就算是去翻 GitHub 上的更新紀錄(頁面),也只有看到修改「notice」這個文件的紀錄、以及修改版本編號的紀錄而已;感覺在程式上,應該是沒有去動吧?所以要不要更新,就自己決定吧…更新的意義應該不是很大就是了。

閱讀全文

OpenNI 2 小更新:2.2.0.32 Beta

不太確定是什麼時候發布的,不過今天發現,OpenNI 2 又做了小更新了~(GitHub 上的紀錄是六天前
這是繼今年六月的 2.2.0.30,第一次更新;更新後的版本編號是 2.2.0.32,一樣還是掛著 Beta,有興趣的人可以到 OpenNI 官網下載更新:

http://www.openni.org/openni-sdk/

不過,不知道 OpenNI 官方是不是弄錯檔案了,Heresy 不管下載  OpenNI 2.2.0.32 Beta(x86) 還是 OpenNI 2.2.0.32 Beta(x64),下載下來都是一個接近 30MB、包含所有版本的 ZIP 檔…

閱讀全文