1. Introduction to the Kinect

The Hardware

In terms of hardware the Kinect actually brings little to the table, boasting only a couple of 30Hz(fps) VGA resolution cameras, an IR projector all packaged into a case held by a motorized tilt stand, accompanied by a microphone array with 16kHz sampling. Okay so I might have undersold it a little but really it’s the software that makes this kit what it is.

Depth is calculated using the IR projector and one of the two camera sensors with no IR filter, this allows the sensor to collect intensity information from the IR projector, high intensities represent closer objects and low further. From this data the on-board processor is able to detect body parts, movements and facial features which is really why this kit is interesting, reducing post processing for applications to gather this information.

This middle processing is also what makes the Kinect so desirable to hacktivists and roboticists, more pre-processing means they free up valuable resources for other important lower level tasks in robots and projects, but you already knew that, right?

Drivers and Libraries

There are currently two main sets of drivers/libraries out there libfreenect and OpenNI both sporting hip, cool, open source names. So which one do you choose? Well, here’s a brief description of both.

Let’s start with OpenNI, these are the Official PrimeSense (the people that Microsoft paid to actually create the Kinect) these allow access to audio, video and depth with the addition of PrimeSense’s NITE Middleware. NITE is the software library used for skeletal tracking, hand gesture recognition and scene analyzer (used to separate figures in the foreground from the background) .

Alternatively there is the libfreenect libraries, from the community over at openkinect.org. While these are admittedly lacking slightly in features such as skeletal tracking and hand gesture recognition they much make up for it in the dedication to open source and the creation of the best suite available. These have access to video, microphones, motors and LED with speakers currently being worked on. They work under a variety of language wrappers for most OS’s and will of course by my personal library of choice.