XBox Kinect

The Xbox Kinect is a sensor package capable of collecting audio, video, and depth data from its surroundings. Coupled with computer vision and image processing software libraries, the Kinect becomes a powerful sensory organ for a computer, capable of distinguishing objects and people both visually and audibly.

Contents

Getting Started
Inspiration


Getting Started


At the time of writing, there are three libraries available for interfacing with the Kinect. We've created instructions for each, and you're welcome to choose any of the available options (or one we haven't included), but we recommend them in the order listed here.

Kinect for Windows SDK
Highly recommended, but available for Windows 7 only. Cleanest, official API. Somewhat limited in out-of-the-box capabilities, but third-party extensions rapidly being developed. (We expect Microsoft will expand the feature set in the near future.)
View Details on Installing Windows Kinect SDK »

Classroom presentation:

Installation instructions are available on the Microsoft SDK website. The most important thing to remember while installing is the installation order:
1. Plug the Kinect's power block into the wall.
2. Plug the Kinect USB directly into the computer (do not plug it into a USB splitter).
3. Let it auto-install all of its drivers.
4. Install the SDK packages, I had to use all x64 ones.
Find more at the Kinect SDK README page.

Other useful links:
Video Tutorials of the main components of the SDK:
http://channel9.msdn.com/Series/KinectSDKQuickstarts/
Blog article from Microsoft employee about gesture recognition
http://blogs.msdn.com/b/eternalcoding/archive/2011/07/04/gestures-and-tools-for-kinect.aspx
Restrictions on the Official SDK, and their effect on hackers.
http://blog.makezine.com/archive/2011/06/things-you-cant-do-with-the-microsoft-kinect-sdk.html

Demo Code:
This is the demo code for the Photobooth application that we made. It integrates several parts of the kinect sensor:
1. Skeletal tracking to find when your hands are close together, and vertically near your face.
2. Skeletal tracking to locate your head, and tilt the Kinect ensure it is in the top 50% of the screen (for better skeletal tracking).
3. Depth tracking, to ensure when your hands are close (depth-wise) to your face.
4. Video stream to capture a photo image and save it to your desktop.



OpenNI
Recommended second choice. Runs on Windows and most flavors of Unix. Lots of packages that often don't install correctly. Slightly larger feature set, including gesture recognition.
View Details on Installing OpenNI »

PPT presentation:

Important Additional Instructions:
1) After finishing with the installer package, go into PrimaSense/NITE/Data and change the key in all three xml files to
0KOIk2JeIBYClPWVnMoRKn5cdY4=

2) For more information, see these online instructions.

Notes:
1) The examples that say they are for Visual Studio 2010 actually need to be converted to the Visual Studio 2010 format. I opted to stick with Visual Studio 2008.

2) NITE Algorithms 1.3.pdf is the documentation you probably want to start with for NITE.

3) Go to page 19 of the OpenNI documentation to see how you should configure Visual Studio.

4) Although I could get example exe files to run, I got the following build error when I tried to build the project myself:
fatal error C1083: Cannot open include file: 'GL/glut.h': No such file or directory
You may run into this error as well, but I don't know how to fix it.

5) There is a python wrapper for programming the Kinect, but the example files are not linked properly from the U of R instructions. I decided to stick with C#/C++.

6) From Channel 9's Coding4Fun Kinect Project Gallery it seems that C# is the language of choice.

Additional Links:
Wrapper for easier programming - http://code.google.com/p/simple-openni/
OpenNI homepage - http://www.openni.org/
Official SDK vs OpenNI - http://www.brekel.com/?page_id=671, http://labs.vectorform.com/2011/06/windows-kinect-sdk-vs-openni-2/


OpenKinect (libfreenect)
The first open-source library for Kinect, now somewhat outdated. Useful for changing Kinect's LED color and tilt.




Inspiration