OpenNI 大改版,OpenNI 2.0 推出!


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.29 的 Windows 和 Linux 的 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 2.0 應該也把 framework 和硬體的溝通,由 server – client 的方式,改成直接去存取硬體了。


至於要怎麼開始進行開發呢?針對舊版的 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 應該也會在選幾個有興趣的來研究,如果覺得夠好玩的話,應該也會寫一些介紹或教學吧~ :)


OpenNI / Kinect 相關文章目錄

廣告

關於 Heresy
https://kheresy.wordpress.com

33 Responses to OpenNI 大改版,OpenNI 2.0 推出!

  1. 引用通告: OpenNI 2 & NiTE 2 課程投影片與範例 | Heresy's Space

  2. 丁钦颖 says:

    强迫症看到你把Linux写成了Kinux ——不过感谢您的分享

    按讚數

    • Heresy says:

      感謝告知,已修正 :)

      按讚數

  3. 引用通告: 另一套非接觸式的手勢控制平台:PMD nimble UX | Heresy's Space

  4. 引用通告: 2013 OpenNI 簡介 | Heresy's Space

  5. 引用通告: 小型化、平板用的深度感應器:Occipital Structure Sensor | Heresy's Space

  6. 引用通告: 3Gear Systems 手部操作系統(設定教學) | Heresy's Space

  7. 引用通告: Intel 推出搭配 Creative Senz3D 的 Perceptual Computing SDK | Heresy's Space

  8. 引用通告: NiTE 2 官方 Programmer Tutorial Guide | Heresy's Space

  9. 引用通告: 用手勢控制電腦:HandGKET | Heresy's Space

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

%d 位部落客按了讚: