【问题标题】:How can I access the Kinect/device via OpenNI?如何通过 OpenNI 访问 Kinect/设备?
【发布时间】:2011-12-09 14:04:11
【问题描述】:

我正在查看文档,试图找到任何可以 允许我使用 Kinect/设备吗?

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

我想知道是否可以使用 ModuleDevice Get/Set 方法与之交谈 设备并要求提供加速度计数据。 如果是这样,我该如何开始?

另外,我在想,如果可以“锁定”openni 当我尝试通过以下方式获取加速度计数据时暂时功能 freenect 或类似的东西,然后阅读后“解锁”是 完毕。

以前有人试过吗?有什么建议吗?

我目前正在使用 SimpleOpenNI 包装器和处理程序,但使用过 OpenFrameworks 和 C++ 库,因此语言不是很重要。

【问题讨论】:

    标签: kinect openni


    【解决方案1】:

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

    解决此问题的一种方法是使用修改后的 OpenNI SensorKinect 驱动程序,即this one,它确实连接到 NUI 电机设备,并通过“CameraAngleVertical”整数属性公开基本的加速度计和电机控制。看来您应该能够使用 SimpleOpenNI 和 Processing 读取/写入任意整数属性。

    如果您愿意使用非基于 OpenNI 的解决方案,您可以使用基于 libfreenect 的Daniel Shiffman's Kinect Processing library。您将获得良好的加速度计、电机等...,但将无法访问 OpenNI 骨架/手势支持。一个类似的 OpenFrameworks 库是ofxKinect

    关于 OpenNI 节点的锁定,我的理解是这只会阻止属性更新,并且在 USB 驱动程序级别没有任何作用。无法在运行时在驱动程序(基于 PrimeSense 的 SensorKinect 和基于 libusb 的 libfreenect)之间切换。可能(我没有尝试过)为相机设备配置 OpenNI,并使用 freenect 与 NUI Motor 设备进行通信。这些设备之间不需要锁定/同步。

    【讨论】:

    • 正如 xOpenNI 的注释一样,通过 ofxHardwareDriver 类包括硬件支持(加速度计、LED、电机)。所需要的只是使用设备的索引调用 setup(),调用 update(),然后有所有的控制函数(setTiltAngle()、getTiltAngle()、setLedOption()、getAccelerometers())
    猜你喜欢
    • 1970-01-01
    • 2013-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-07
    相关资源
    最近更新 更多