如何通过OpenNI访问Kinect /设备?

时间:2011-12-09 14:04:12

标签: kinect openni

我正在查看试图找到任何内容的文档 请允许我使用Kinect /设备?

我试图获取加速度计数据,但不确定如何。到目前为止 我在指南和文档中发现了两件事: XnModuleDeviceInterface/xn::ModuleDeviceXnModuleLockAwareInterface/xn::ModuleLockAwareInterface

我想知道我是否可以使用ModuleDevice Get / Set方法进行通话 设备并询问加速度计数据。 如果是这样,我该如何开始?

另外,我在想,是否有可能锁定' openni 我试图获取加速度计数据时暂时的功能 freenect或类似的东西,然后解锁'看完之后 完成。

以前有人试过这个吗?有什么提示吗?

我目前正在使用SimpleOpenNI包装器和Processing,但是使用了OpenFrameworks和C ++库,所以语言不是很重要。

1 个答案:

答案 0 :(得分:4)

标准的OpenNI Kinect驱动程序不会暴露或允许访问任何加速度计,电机或LED控件。所有这些控制都是通过“NUI Motor”USB设备(protocol reference)完成的,SensorKinect Kinect驱动程序无法与之通信。

解决此问题的一种方法是使用修改后的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电机设备进行通信。这些设备之间不需要锁定/同步。