2011-12-09 83 views
2

我正在查看文檔,試圖找到任何將 允許我的Kinect /設備?如何通過OpenNI訪問Kinect /設備?

我想獲取加速計數據,但不知道如何。到目前爲止, 是我在指南和文檔中發現的兩件事: XnModuleDeviceInterface/xn::ModuleDeviceXnModuleLockAwareInterface/xn::ModuleLockAwareInterface

我想知道是否可以使用ModuleDevice獲取/設置方法與設備 對話並詢問加速度計數據。 如果是這樣,我該如何開始?

另外,我在想,如果有可能暫時「鎖定」 openni 功能的同時,我試着通過 freenect或類似的東西來獲得加速計數據,然後看完後「解鎖」是 完成。

有沒有人試過這個?有小費嗎?

我目前使用SimpleOpenNI包裝和處理,但已經使用OpenFrameworks和C++庫,所以語言不會很重要。

回答

4

標準OpenNI Kinect驅動程序不會暴露或允許訪問任何加速度計,電機或LED控件。所有這些控制均通過SensorKinect Kinect驅動程序不與其通信的「NUI Motor」USB設備(protocol reference)完成。

解決此問題的一個方法是使用經過修改的OpenNI SensorKinect驅動程序,即連接到NUI電機設備的this one,並通過「CameraAngleVertical」整數屬性顯示基本的加速度計和電機控制。看來你應該能夠使用SimpleOpenNI和Processing讀/寫任意整數屬性。

如果您願意使用非基於OpenNI的解決方案,則可以使用基於libfreenect的Daniel Shiffman's Kinect Processing library。你會得到很好的加速度計,電機等等,但是將失去對OpenNI骨架/手勢支持的訪問。一個類似的OpenFrameworks庫是ofxKinect

關於鎖定OpenNI節點,我的理解是,這只是防止屬性更新,並在USB驅動程序級別無所作爲。在驅動程序之間切換 - 基於PrimeSense的SensorKinect和基於libusb的libfreenect - 在運行時是不可能的。可能(我沒有嘗試過)爲相機設備配置OpenNI,並使用freenect與NUI電機設備進行通信。這些設備之間不需要鎖定/同步。

+0

正如xOpenNI的評論包含通過ofxHardwareDriver類的硬件支持(加速計,LED,電機)。所有需要的是使用設備的索引調用setup(),調用update(),然後有控制的所有函數(setTiltAngle(),getTiltAngle(),setLedOption(),getAccelerometers())。 –