The Kinect has pretty much failed for its intended purpose for the XBox, but it is still a very useful tool for interactive art and experimental interfaces. This page is here to help you navigate your way through the different devices and software available.
The Original Kinect Sensor
There are three different model numbers for the original Kinect. All of them look identical, but you can find the model number on the base of Kinect. Microsoft has discontinued all of these models so you are most likely only going to find used devices on eBay etc. (There is also a white version of the original Kinect, it’s the same except for the color)
- 1414 (the oldest model, most reliable in most software)
- 1473 (updated model, might cause some issues in some software)
- 1517 (Kinect for Windows model, might cause some issues in some software)
All of these devices require an external power supply/USB adapter if you are trying to run them on your computer. Take note that you get one of those too if you are buying a used device.
Kinect v2 (aka Kinect One)
The newer Kinect you can still go and buy from a store. You need to get the sensor and the USB adapter separately.
Depth Filtering & Custom 3D Tracking
The simplest way to use the Kinect as a device for tracking movement is to treat the depth image just as you would any other video image with computer vision tools.
- tuioKinect – A simple tracking software that allows you to do blob tracking from the depth image. Handy for detecting people in a space from above. Sends the information using the TUIO protocol.
- ofxKinect – Addon for openFrameworks. Comes built-in with the openFrameworks package.
- openKinect – Library for Processing. There is a nice playlist of video tutorials for this library by Dan Shiffman.
WIth the openFrameworks and Processing libraries you can do basic computer vision tracking using things like openCV or you can also treat the depth image as 3D data. Out of the 3D data you can create point clouds and do custom tracking in 3D.
These implementations do not have the more advanced tracking algorithms for detecting humans or different body parts from the image. For that you need to use the OpenNI or Kinect for Windows libraries listed below.
Open NI (Open Natural Interaction) is the open-source framework for the more advanced tracking for the Kinect developed originally by Primesense, the company that developed the technology for the original Kinect sensor.
The OpenNI project was essentially shutdown in 2013 when Apple aquired Primesense. The original OpenNI website was taken down, but the source code is still maintained in GitHub by a small group of other developers. Many of the implementations for different programming environments haven’t been updated for a while so it might be a little bit challenging to get things running.
The simpler person detection from the OpenNI framework is called User Tracking. Basically, it looks for roughly a human looking shape from the image and gives you the Center of Mass (CoM) from that shape. You can get a 3D coordinate for multiple people in the image.
This is useful if you just need to figure out where a person is in the space.
If you need more accurate information about the position of the joints of a person, you need to use Skeleton Tracking. This will give you the 3D coordinates of different body parts of the tracked person.
- simpleOpenNI – Library for Processing
- ofxOpenNI – openFrameworks addon (you might need to dig around a bit to find a version that is compatible for your oF version
Kinect for Windows
If you are using Windows, you have a choice of using the official Microsoft SDK for the Kinect. The latest version only works with the Kinect v2, but you should be able to also find an earlier version for the original Kinect.
I don’t have much experience with this, but there should be plenty of examples and plugins/libraries/addons for different programming environments.