The Microsoft Kinect is a set of sensors developed as a peripheral device to use with the Xbox 360 gaming console. Since it was released, hackers immediately saw potential in the device far beyond it and created open source libraries to use in other applications. Microsoft also released the official SDK and the Kinect for Windows, a more powerful device to use in research. Nowadays there is a big community of developers and researchers around the world and several new applications are emerging.
Developing for Kinect is really easy. There are lots of official and non-official tools, libraries, demos, tutorials….But Kinect sensor has some limitations that you should know before starting developing for this device.
Kinect for Windows vs Kinect for XBox 360
Kinect for Windows is specifically designed to be used with computers. It is licensed for commercial app distribution so it is the best option for development. Kinect for Xbox 360 was designed and tested for the console but can also be used on development with some limitations.
- A shortened USB cable to ensure reliability
- A small dongle to increase compatibility with other USB devices
- Expanded skeletal tracking abilities, including “seated” skeletal tracking that focuses on 10 upper body joints
- A firmware update called “Near Mode” that allows the depth sensor to accurately track objects and users seated as close as 40 cm from the device
- Expanded speech recognition including four new languages, French, Spanish, Italian, and Japanese
- Language packs improving speech recognition for many other English dialects and accents
- Improved synchronization between color and depth streams
- Improved face tracking
Official Kinect SDK vs Open Source alternatives
The official SDK maintained for Microsoft is better than open source alternatives in some applications such as the skeleton tracking. However the force of the open source community with OpenNI (drivers, APIs, libraries, demos) and OpenKinect (drivers) to create the SDK, middleware libraries and apps.Both have cons and pros.
- Programming languages supported: C++, C#, or Visual Basic by using Microsoft Visual Studio.
- Operative System support: Windows 7 and 8.
- Documentation and support: official website, development toolkit and support forum.
- Calibration: not needed.
OpenNI and OpenKinect
- Programming languages supported: Python, C, C++, C#, Java…not requiring Visual Studio.
- Operative System support: Linux, Mac OS X and Windows.
- Documentation and support: website, support forum, twitter...
- Calibration: needed.
Features and limitations
The Kinect’s image, audio, and depth sensors allow to detect movements, identify faces and recognize speech of players. However they have some physical like the sensing range. On the other hand, Kinect for Windows SDK frameworks also have limitations such as the number of tracking skeletons.
- RGB camera: angular field of view of 57° horizontally (plus 27° up or down with the motorized pivot). and 43° vertically.
- Depth sensor: viewing distance range from 0.8 m to 4m. Practical limits are from 1.2m to 3.5m.
- Depth near mode: viewing distance from 0.4m to 3m.
- Audio beam forming: angular field to identify the current sound source of 100° in intervals of 10°.
- Skeleton tracking: normal mode with 20-joints per player and seated mode with 10-joints. Both modes have simultaneously tracking up to six people including two active players (motion analysis and feature extraction of 20 joints per player).
- Interactions: library with basic gestures (e.g. targeting and selecting with a cursor) which also supports the definition of gestures.
- Face tracking: angle limits to track face movements are +-45 degrees (yaw), +-90° (roll) and +-25° (pitch).