ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

"Kinect for Windows" does not yet work in ROS. The official OpenNI software supports the ASUS Xtion and PrimeSense's own devices. We apply a patch (basically just adding the Kinect's USB ids) to OpenNI to support Kinect for Xbox. AFAIK no one has yet produced a similar patch for K4W.

I don't believe libfreenect officially supports K4W out-of-the-box yet either, but Drew Fisher did manage to identify the USB protocol differences (thread):

Now: it turns out the K4W device is (from a protocol level) practically identical. You have to set the K4W to use an alternate USB configuration, and the productIds are different, but other than that, all the rest of the code works as-is. The patch to get data streaming, registration and all, was about 50 lines. It was somewhat hackish, but for a proof of concept: very promising.

So, in case anyone feels like taking this on :), here's how you could go about getting K4W support in ROS (via OpenNI):

  • See if Drew's libfreenect branch with experimental K4W support works with your device.
  • Examine the relevant patch to understand the changes in opening the device at the USB level.
  • Our build scripts and patches for OpenNI are located in the openni/drivers project. Examine our patch for the ps-engine device driver to see where Kinect for Xbox support is added - the key file is XnDeviceSensorIO.cpp.
  • Modify the patch to add K4W support, following Drew's example.

Finally, an entirely different approach if you're on Windows: there's an experimental module that uses Microsoft's Kinect SDK to communicate with the device, then relays the data through OpenNI.