OpenNI 大改版,OpenNI 2.0 推出!

| | 0 Comments| 14:42
Categories:

OpenNI 這個深度感應器的開發框架,在今年五月更新到 1.5.4.0 unstable 之後,就一直沒有動作了;相較於微軟 Kinect for Windows SDK 的進化,說實話,還真的讓人滿擔心他的後續發展的。

而現在,OpenNI 終於有大動作了!他不但推出了新的 OpenNI 2.0(Beta 中),在整個程式介面上做了相當大的改變,更把官方網站(http://www.openni.org/)做了大幅度的調整、並把官方論壇由 Google Group(連結)搬到自己的環境(連結)了~

根據官方的說法,OpenNI 2.0 主要的改進包括了(參考):

  • 支援新一代 3D 感應器(短距離版等、應該還包括之前介紹過的 PS1200、Capri 1.25
  • 提供了大量的第三方(third party)Middleware 函式庫,包括了身體追蹤(Body Tracking)、3D 重建(3D Reconstruction)、物體辨識(Object Recognition)、分析(Analytics)等功能
  • 允許事件導向(event-driven)的程式開發
  • 更好的向下相容性(backwards compatibility)
  • 每一個程式都有 OpenNI 和 middleware 函式庫的獨立副本
    (原文:Private copy of OpenNI and Middleware Libraries for each application)
  • 更好的多感應器支援,middleware 函式庫現在提供個別的 API

而在 release note(連結)裡,則也有提到一些新的變化,包括了:

  • 支援將深度像素轉換到彩色影像的座標系統
  • 在 PS1080 裝置上,可以把彩色感應器的自動曝光和自動白平衡關閉
  • 新的發布模式:現在每一個程式可以有各自獨立的 OpenNI 2.0 runtime binary 副本
    (以前應該是強制一台電腦都用同一份)
  • 在 Windows 下可以透過 Kinect for Windows SDK 支援 Microsoft Kinect 感應器

新的下載頁面現在是:http://www.openni.org/openni-sdk/,目前有提供 2.0.0 的 Windows 和 Kinux 的 beta 版,Mac OS X 的版本則還沒有出來;根據 release note(連結)的資訊,目前支援的作業系統包括了 Windows XP SP2 以後的  Windows,以及 Ubuntu 12.04 ,32/64 位元都可以使用。而開發環境目前則是可以使用 Microsoft Visual Studio 2008 and 2010 和 GCC 4.x。

在左邊也可以切換到其他的下載項目,除了 OpwnNI SDK 本身外,還包括了「Middleware Libraries」、「Tools & Wrappers」、「Applications」 三大類;包含 PrimeSense NITE 2 在內,目前也算是有不少內容了~某方面來說,以後開發體感程式的彈性應該會更大了。

但是相對的,其實在 OpenNI 2.0 裡,他是把本來 OpenNI 1.x 的 plug-in 架構,徹底捨棄了;以後使用者必須個別去控制各個不同 middleware,來完成自己想做的工作。

下圖是 OpenNI 1 的架構圖:

可以看到,OpenNI SDK 在 1.x 的時候,除了去處理和硬體的溝通外,也把應用程式和 middleware 的溝通做了一層轉換,讓介面統一化;所以在這個框架下,開發者可以只學習 OpenNI 的介面,就來完成程式的開發,而不需要去管 middleware 是怎麼實作、要怎麼控制,因為這部分都被 OpenNI SDK 做掉了。

而下圖則是 OpenNI 2 的架構圖:

在 OpenNI 2 的架構裡,OpenNI 不再去管 middleware 怎麼玩了~他只專心去處理硬體、以及來自應用程式的控制;而 middleware 除了會透過 OpenNI 的 API 來讀取硬體產生的資料外,就像一個獨立的函式庫一樣,程式開發者需要自己去控制他,來做到自己想做的事。

這樣的好處是 OpenNI 本身變得更加地單純(2.0 的 Windows 版 SDK 大小剩不到 8MB),而 middleware 的開發也會更簡單、更彈性,不再受限於 OpenNI 框架的功能限制。但是相對的,應用程式的開發者就需要針對不同的 middleware,去學習他們各自的用法了…所以這個改變到底是好是壞?其實 Heresy 個人是覺得滿難認定的。


至於要怎麼開始進行開發呢?針對舊版的 OpenNI 開發者,OpenNI 有提供一份《OpenNI Migration Guide》,來告訴使用者要怎麼把舊有、OpenNI 1.x 的程式開發架構,轉移到 2.0 上。而針對新的開發者,OpenNI 除了提供新的《OpenNI Programmer’s Guide》外,也還有提供《Get Started》等資源,可以做開發上的參考。

而以《OpenNI Migration Guide》裡的說法,OpenNI 2.0 主要的架構改變,包括了:

  • New OpenNI Design Philosophy
  • Simplified Middleware Interface
  • Simplified Data Types
  • Transition from Data Centric to Device Centric
  • Easier to Learn and Understand
  • Event Driven Depth Access

Heresy 自己還沒真得下去測試 OpenNI 2.0 的程式開發,以範例程式來看,最顯著的變化,應該就是 header 和 namespace 都從 xn 正名為 openni 了~而由於架構差異非常大,所以舊的程式如果要修改成使用 OpenNI 2.0 的話,基本上要修改的幅度會非常大…不過,以目前的測試看來,OpenNI 1.x 和 OpenNI 2.0 應該是可以並存、同時安裝的,所以短時間內,應該可以同時使用這兩者,慢慢來做移植了~

接下來…Heresy 應該會開始針對新版 OpenNI 和 NITE 來相關的教學文件。而至於其他的 middleware 呢,Heresy 應該也會在選幾個有興趣的來研究,如果覺得夠好玩的話,應該也會寫一些介紹或教學吧~ 🙂

1 thought on “OpenNI 大改版,OpenNI 2.0 推出!”

Leave a Reply

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *