And now, for something entirely different: Taming the Kinect




I had started a separate blog for my Kinect-based projects, but somehow it doesn't seem to be as popular. Therefore I've decided to transfer my Kinect related posts to this blog. So, here goes:

-------------------------------------

Here I share with you some general information and helpful links to all the Kinect-related open source content and websites I was able to find along the way during my search for the solution for using the Kinect on my computer:

The OpenKinect Community
OpenKinect is a very informative open community for updates and latest information on the current progress on the Kinect libraries and other software being developed by users all over the internet. There is also a lot of useful hardware information for understanding how the Kinect works and about USB devices and protocols in general for anyone interested in finding out more.

Here are all the open-source and freely available SDK's I came across when I first started searching for ways to use the Kinect with my computer. The pros and cons I've discussed here are based solely on my own experience using the SDK's.


Attempt #1: Code Lab's NUI Platform

The first result I found when searching for an SDK for the Kinect was the Code Laboratories' NUI Platform. The libraries were developed by AlexP, the first person to have hacked a Kinect sensor for use with a computer since after its release.

Pros:
  • Pristine C#  libraries and sample code. 
  • Using Visual Studio Express, the provided sample code compiled and runs quite easily.
  • C++ API is also available from the Code Lab website (No samples in C++ though)
  • Installation and running the sample code was a breeze on Windows 7 (I tried it on a quad core machine running an NVidia GT9800 graphics card).
Cons:
  • No samples for C/C++  (I found a sample code by another user on their forum, but I wasn't able to run it). Still, creating a simple code on C++ by just using their API was simple enough once I figured out the flow of control from the C# samples.
  • There are no skeleton-extraction and /or tracking options on this SDK (yet). One can possibly work out how to use some middle-ware (like the NITE libraries available for use with the OpenNI framework) to accomplish that. But there isn't any support available on the CodeLab website for skeleton detection and tracking (...yet).
  • Doesn't seem to work on my old Dell laptop (XPS M1210 running WinXP: dual core, NVidia Go7400). The RGB video would show, but it refused to display any depth data. (the laptop does have a USB 2.0, so it's not a USB port issue) I don't believe the problem is caused by any requirements from the Kinect but the limitation might be on the driver/SDK side.
Still, overall a very neat and nicely put together SDK without any messy compilations and multiple installs - just install the 'CL NUI Platform Installer' (available on the right-hand-side panel) and you're done. That should install the Drivers & the SDK, along with all  the required windows paths to the system, and even add the samples in the installed directory with Visual Studio project solutions ready to be run. 

Very neat, indeed!

Attempt #2: Libfreenect
This is the platform actively supported by the OpenKinect community. It is constantly being updated and includes a ton of user support on its forums.

Pros:

  • Cross Platform drivers, SDK and support.
  • Wrappers for multiple languages 
  • Documentation, very detailed. 
  • Both High Level and Low Level APIs available
  • Compilation instructions for several programming environments, including Visual Studio
Cons:
  • No pre-compiled binaries for the SDK available. You have to compile them separately for the SDK to work for your specific system and programming environment.
  • Complicated compilation process - several different libraries have to be downloaded from various sources and installed separately from the main code. 
  • No people tracking, gesture/skeleton tracking options. No integration with a middle-ware (such as NITE) available.



Attempt #3: OpenNI + PrimeSense Sensor + PrimeSense NITE

This was a set of three different components that had to be installed separately, but they worked together quite nicely to provide the most out of my Kinect experience! The setup comprises of the following three to be installed in order as follows:
There are some compatibility issues with different versions of these, however the combination of versions on this site (although a little old) worked together perfectly for me.

Pros:
  • Works great on both computers I tried it on, the Win7 quad-core machine as well as the WinXP dual-core laptop (both mentioned above)!
  • Cross Platform (Windows & MacOSX support, I wasn't able to find info on Linux usage).
OpenNI Installation
  • Works great when all the right versions are installed in the correct order.
  • Several different sample provided with source and pre-compiled binaries for doing all sorts of stuff: from getting simple RGB & depth images  to detecting people as separate objects and tracking them.
  • Documentation included! (Very detailed too!)
NITE Installation
  • NITE installs separately and provides its own list of amazing samples. Works as the middle-ware for detecting people when using OpenNI.
  • Includes its own Documentation! (Also very detailed)
  • Several samples provided (separate from the ones from OpenNI). Again source and binaries both included. Let's you explore several hand-tracking options. 

Cons:
  • Making sure I had all the compatible versions of OpenNI and Primesense was a bit of a pain. 
  • Installs as three parts - as compared to the 1 installation for the CL NUI Devices mentioned above.
  • No Motor or Audio driver included in the PrimeSense Sensor (not a game-breaker though, it plays well with the CLNUI package to let you control the motor through the CLNUI SDK).

No comments:

Post a Comment