The Kinect is currently the hardware that provides developers with the greatest opportunities for innovative programs - both games and "serious" artificial intelligence applications. How does it work? How do you use it? What can you use it for?
Microsoft's Kinect is described as a "controller-free gaming and entertainment experience" and is commonly sold bundled with the Xbox 360. But to see it as just another way to play games is to underestimate its significance. It is a general purpose and low-cost 3D input device not to mention its amazing audio input capabilities.
Windows Kinect v XBOX Kinect
Now we have a new version of the device - the Kinect for Windows which has a number of new features, but most important of all is the fact that you can use it for your own applications which you can then sell without having to pay a licence fee.
How is this possible?
The Xbox 360 Kinect is sold at a lower price that is subsidized by the profit from selling games to use with it. Of course, Microsoft doesn't want people buying the subsidized Xbox 360 Kinect and using it in applications that don't result in the user buying games. For this reason the runtime environment included with the SDK does not work with the Xbox version of the hardware. It can detect the type of Kinect that is plugged in and rejects everything except the Windows Kinect.
This isn't the end of the story, however. Microsoft does allow the use of the Xbox version of the Kinect with the development environment. That is, you can use the lower cost Xbox 360 Kinect to develop and test your ideas, but when you graduate to actually issuing an application for others to use you have to buy the more expensive Windows Kinect.
Exactly how to make use of the Xbox 360 Kinect is explained in Chapter 2 of this ebook. It isn't difficult but you will need to buy, or construct, a power supply and plug adaptor. This seems like a very reasonable and fair way to deal with the situation.
Notice that the Windows version of the Kinect has some additional features - mainly the ability to work at closer ranges. This means that you may well want to use a Windows Kinect for development and production.
Microsoft acquired the 3D sensing technology that is the key to the Kinect hardware from Israeli company PrimeSense.
Essentially this hardware is a box with some cameras that makes use of infra-red (IR) illumination to obtain depth data, color images and sound. The IR is used as a distance ranging device much in the same way a camera autofocus works - see later for more details. It is claimed that the system can measure distance with a 1cm accuracy at 2m and has a resolution of 3mm at 2m. The depth image is also 640x480 i.e. standard VGA resolution. The color image is 1600x1200.
A custom chip processes the data to provide a depth field that is correlated with the color image. That is the software can match each pixel with its approximate depth. The preprocessed data is fed to the machine via a USB interface in the form of a depth field map and a color image.
The PrimeSense reference implementation
If you would like to see more about the actual hardware inside the Kinect then view the "teardown" video prepared by the people at iFixIt: