• Follow Us:
  • blog
  • rss

Microsoft Kinect for Windows SDK v1.0 Release Notes

Last updated: May 2, 2012

The Microsoft Kinect for Windows SDK provides the native and managed APIs and the tools you need to develop Kinect for Windows applications. Developers can create rich experiences by using Kinect for Windows sensor technology on computers running Windows 7, Windows 8 developer preview (desktop apps only), and Windows Embedded-based devices. Although developing Kinect for Windows applications is essentially the same as developing other Windows applications, you'll need the support that this SDK provides for the features of the Microsoft Kinect for Windows sensor, including color images, depth images, audio, and skeletal data.

Contents

  1. License Agreement
  2. System Requirements
  3. Installation
  4. Getting Help
  5. Changes in This Release
  6. Known Issues

1. License Agreement

By downloading, installing, accessing, or using the Microsoft Kinect for Windows Software Development Kit (SDK), you agree to be bound by the terms of its license. Please read the Microsoft Kinect for Windows SDK license here:

End User License Agreement

2. System Requirements

Supported Operating Systems

  • Windows 7, Windows Embedded Standard 7. Also tested on Windows 8 Developer Preview*.

*Since Windows 8 is not yet final, Kinect for Windows support for Windows 8 is not ready for commercial deployments.

Hardware Requirements

  • 32-bit (x86) or 64-bit (x64) processor
  • Dual-core 2.66-GHz or faster processor
  • Dedicated USB 2.0 bus
  • 2 GB RAM
  • A Microsoft Kinect for Windows sensor

Software Requirements

3. Installation

Important

  • Make sure the Kinect sensor is not plugged into the USB port on the computer prior to running setup.
  • If you are upgrading from a pre-release version of this SDK, we recommend rebooting the computer after setup has completed.
  • You must uninstall any Microsoft Server Speech Platform components before installing this SDK, including the 10.2 runtime components that were used with Beta 2 and/or the latest 11.0 runtimes. If you don’t uninstall them, setup will display an error.

To install the SDK:

  1. Make sure the Kinect sensor is not plugged into the USB port on the computer.
  2. If a previous version of the Kinect for Windows SDK is installed, uninstall it before proceeding.
  3. Remove any other drivers for the Kinect sensor.
  4. Uninstall any Microsoft Server Speech Platform Runtime and SDK components, including both the x86 and x64 bit versions, plus the Microsoft Server Speech Recognition Language – Kinect language pack.
  5. Close Visual Studio. You must close Visual Studio before installing the SDK and then restart it after installation to pick up the KINECTSDK10_DIR environment variables that the SDK requires.
  6. From the download location, double-click KinectSDK-v1.0-Setup.exe. This single installer works for both 32-bit and 64-bit Windows.
  7. Once this SDK has completed installing successfully, ensure that the Kinect sensor is plugged into an external power source, and then plug the Kinect into the PC's USB port. The drivers will load automatically.
  8. The Kinect sensor should now be working correctly. To launch the Kinect Explorer sample, click Start and then point to All Programs. Point to Microsoft Kinect SDK v1.0, and then click Kinect SDK Sample Browser and verify that the Kinect sensor is streaming skeletal, color image, depth image, and audio data.

If the driver is installed correctly:

  1. Look for the solid green LED on the Kinect for Windows sensor.
  2. The Kinect for Windows sensor will appear in Device Manager as the following nodes under "Microsoft Kinect":
    • Microsoft Kinect Audio Array Control
    • Microsoft Kinect Camera
    • Microsoft Kinect Security Control
  3. The Kinect for Windows sensor's microphone array will appear under sound, video, and game controllers in Device Manager as:
    • Microsoft Kinect USB Audio

If you have trouble getting the sensor or the SDK working, see the "Driver Installation" section in the page called "Resources for Troubleshooting" in the SDK documentation. After installing the SDK, open the SDK documentation by looking for the link in the Start Menu, or running the Sample Browser.

4. Getting Help

The SDK documentation can be launched from the Start Menu. The Programming Guide section of the documentation has many important details for developers, including how to access the APIs from C++ and managed code projects, understanding the natural user interface APIs and audio APIs, and how to accomplish common tasks. The documentation also contains API reference information.

Online developer resources for Kinect for Windows include the following:

For general Windows development questions, try the following:

  • Microsoft Developer Network: The latest development documentation to help you create applications for Windows.
  • Microsoft TechNet: The latest administration documentation to help you administer the Windows operating system.

5. Changes in This Release

The following has changed since the Kinect for Windows SDK Beta 2 release.

  • Support for up to four Kinect sensors plugged into the same computer, assuming the computer is powerful enough and they are plugged in to different USB controllers so that there is enough bandwidth available. (As before, skeletal tracking can only be used on one Kinect sensor per process. The developer can choose which Kinect sensor is designated for skeletal tracking.)
  • Skeletal Tracking: The Kinect for Windows Skeletal Tracking system is now tracking subjects with results equivalent to the Skeletal Tracking library available in the November 2011 Xbox 360 Development Kit.
  • The Near Mode feature is now available. It is only functional on Kinect for Windows hardware; see the Kinect for Windows Blog post for more information.
  • Robustness improvement includes driver stability, runtime and audio fixes.
  • API updates and enhancements
    • See a blog post detailing migration information from Beta 2 to v1.0 here: Migrating from Beta 2
    • Many renaming changes to both the managed and native APIs for consistency and ease of development. Changes include:
      • Consolidation of managed and native runtime components into a minimal set of DLLs
      • Renaming of managed and native APIs to align with product team design guidelines
      • Renaming of headers, libs, and references assemblies
    • Significant managed API improvements:
      • Consolidation of namespaces into Microsoft.Kinect
      • Improvements to DepthData object
      • Skeleton data is now serializable
      • Audio API improvements, including the ability to connect to a specific Kinect on a computer with multiple Kinects
      • Improved error handling
    • Improved initialization APIs, including addition the Initializing state into the Status property and StatusChanged events
    • Set Tracked Skeleton API support is now available in native and managed code. Developers can use this API to lock on to 1 or 2 skeletons, among the possible six proposed.
    • Mapping APIs: The mapping APIs on KinectSensor that allow you to map depth pixels to color pixels have been updated for simplicity of usage, and are no longer restricted to 320x240 depth format.
    •  
    • The high-res RGB color mode of 1280x1024 has been replaced by the similar 1280x960 mode, because that is the mode supported by the official Kinect for Windows hardware.
    • Frame event improvements: Developers now receive frame events in the same order as Xbox 360, in other words, color then depth then skeleton, followed by an AllFramesReady event when all data frames are available.
    • Managed API updates

Correct FPS for High Res Mode

ColorImageFormat.RgbResolution1280x960Fps15 to ColorImageFormat.RgbResolution1280x960Fps12

Enum Polish

Added undefined enum value to a few Enums: ColorImageFormat, DepthImageFormat, and KinectStatus

Depth Values

DepthImageStream now defaults IsTooFarRangeEnabled to true (and removed the property)

Beyond the depth values that are returnable (800-4000 for DepthRange.Default and 400-3000 for DepthRange.Near), we also will return the following values:

DepthImageStream.TooNearDepth (for things that we know are less than the DepthImageStream.MinDepth)

DepthImageStream.TooFarDepth (for things that we know are more than the DepthImageStream.MaxDepth)

DepthImageStream.UnknownDepth (for things that we don't know)

Serializable Fixes for Skeleton Data

We've added the SerializableAttribute on Skeleton, JointCollection, Joint, and SkeletonPoint.

Mapping APIs

Performance improvements to the existing per pixel API.

Added a new API for doing full-frame conversions:

public void MapDepthFrameToColorFrame(DepthImageFormat depthImageFormat, short[] depthPixelData, ColorImageFormat colorImageFormat, ColorImagePoint[] colorCoordinates);

Added KinectSensor.MapSkeletonPointToColor()

public ColorImagePoint MapSkeletonPointToColor(SkeletonPoint skeletonPoint, ColorImageFormat colorImageFormat);

Miscellaneous

Renamed Skeleton.Quality to Skeleton.ClippedEdges

Changed return type of SkeletonFrame.FloorClipPlane to Tuple<int, int, int, int>.

Removed SkeletonFrame.NormalToGravity property.

Audio and Speech

  • The Kinect SDK now includes the latest Microsoft Speech components (v11 QFE). Our runtime installer chain-installs the appropriate runtime components (32-bit speech runtime for 32-bit Windows, and both 32-bit and 64-bit speech runtimes for 64-bit Windows), plus an updated English Language pack (en-us locale) with improved recognition accuracy.
  • The updated acoustic model improves the accuracy in the confidence numbers returned by the speech APIs.
  • Kinect Speech Acoustic Model now has the same icon and similar description as the rest of the Kinect components.
  • Echo cancellation will now recognize the system default speaker and attempt to cancel the noise coming from it automatically, if enabled.
  • Kinect Audio with AEC enabled now works even when no sound is coming from the speakers. Previously, this case caused problems.
  • Audio initialization has changed:
    • C++ code must call NuiInitialize before using the audio stream.
    • Managed code must call KinectSensor.Start() before KinectAudioSource.Start().
    • It takes about 4 seconds after initialize is called before audio data begins to be delivered.
    • Audio/Speech samples now wait for 4 seconds for Kinect device to be ready before recording audio or recognizing speech.

Samples

  • A sample browser has been added, making it easier to find and view samples. A link to it is installed in the Start menu.
  • ShapeGame and KinectAudioDemo (via a new KinectSensorChooser component) demonstrate how to handle Kinect Status as well as inform users about erroneously trying to use a Kinect for Xbox 360 sensor.
  • The Managed Skeletal Viewer sample has been replaced by Kinect Explorer, which adds displays for audio beam angle and sound source angle/confidence, and provides additional control options for the color modes, depth modes, skeletal tracking options, and motor control. Click (click for settings) at the bottom of the screen for all the bells and whistles.
  • Kinect Explorer (via an improved SkeletonViewer component) displays bones and joints differently, to better illustrate which joints are tracked with high confidence and which are not.
  • KinectAudioDemo no longer saves unrecognized utterances files in temp folder.
  • An example of AEC and Beam Forming usage has been added to the KinectAudioDemo application.

Redistributable Kinect for Windows Runtime package

  • There is a redist package, located in the redist subdirectory of the SDK install location. This redist is an installer exe that an application can include in its setup program, which installs the Kinect for Windows runtime and driver components.

6. Known Issues

.NET

When StatusChanged events occur, ensure that you call kinectSensor.Start() on the transition to KinectStatus.Connected. Call kinectSensor.Stop() on all transitions away from KinectStatus.Connected. (Test with unplugging, unpowering, and machine sleep/hibernate.) KinectSensorChooser and KinectExplorer samples do not current handle the sleep/hibernate case well. This will be addressed in a future release of the samples.

Calls to KinectSensor.Map* and DepthImageFrame.Map* after you have called kinectSensor.Stop() (or a sensor has been removed while the application is running) may fail. Ensure that you protect against that case - use a try/catch around all calls to those Map* APIs.

C++

The SkeletalViewer sample (C++/Direct2D+GDI), when CPU is stressed, may fail to draw skeletons. Best practice when being notified of a frame available is to check all pending streams for new frames.

If C++ code is executing NuiInitializa/NuiShutdown multiple times through the application's lifetime, SetDeviceStatusCallback should be called once, before invoking those calls.

USB host controller compatibility

The Kinect for Windows drivers have encountered compatibility problems with certain USB host controllers when tested in specific computer configurations. Some examples of these controllers are the AMD Fusion A75 USB2.0 controller, the Etron USB 3.0 Extensible Host Controller, or the Renesas Electronics USB 3.0 Controller. On those controllers, you may encounter a problem, such as a low RGB frame rate, or a Not Ready status when plugging/unplugging a Kinect. These compatibility problems are more likely to occur on PCs running the Windows 8 Developer Preview, or if you plug/unplug multiple devices repeatedly. If this happens to you, you may have to restart your app or reboot your computer. You can also try plugging your device into another USB 2.0 controller.

Number and date normalization in Kinect for Windows Speech Grammars

Kinect for Windows is now integrated with Microsoft Speech Platform Version 11, an upgrade from the version 10.2 included in previous beta versions. This version, in conjunction with the Kinect for Windows Speech Language Pack, provides superior speech recognition capabilities to Kinect for Windows.

Note that this version comes without the support for standard TN/ITN (numbers and dates normalization), requiring some changes to grammars built on top of previous beta versions. Now you need to expand numbers and dates on your grammars. For example, you need to use "Play song number five" in your grammars, instead of "Play song number 5".

Microphone Array default gain setting is sub-optimal

The default gain applied to the sound recorded by the Kinect sensor's Microphone array is higher than optimal and can affect speech recognition quality when users are speaking close to the Kinect sensor.

If you notice the Kinect audio signal clipping in your application, or experience the Speech Platform SDK reporting AudioSignalProblemOccurred events use TooLoud audio input, set the microphone gain level to 3 on a scale of 100.

To set the correct gain value:

  1. Open the Windows Control Panel, select the Sound icon, then the Recording tab.
  2. Select the Kinect Microphone Array, click Properties, and then select the Levels tab.
  3. Set the Microphone Array gain level to 3 (three), changing it from the default of 100. Click OK and then OK again.

Audio is not processed if skeleton stream is enabled after starting audio capture

Due to a bug, enabling or disabling the SkeletonStream will stop the AudioSource Stream returned by the Kinect sensor.

The following sequence of instructions will stop the audio stream:

  • kinectSensor.Start();
  • kinectSensor.AudioSource.Start(); // --> this will create an audio stream
  • kinectSensor.SkeletonStream.Enable(); // --> this will stop the audio stream as an undesired side effect

The workaround is to invert the order of the calls or to re-start the AudioSource after changing SkeletonStream status.

Workaround #1 (start audio after skeleton):

  • kinectSensor.Start();
  • kinectSensor.SkeletonStream.Enable();
  • kinectSensor.AudioSource.Start();

Workaround #2 (re-start audio after skeleton):

  • kinectSensor.Start();
  • kinectSensor.AudioSource.Start(); // --> this will create an audio stream
  • kinectSensor.SkeletonStream.Enable(); // --> this will stop the audio stream as an undesired side effect
  • kinectSensor.AudioSource.Start(); //--> this will create another audio stream

Resetting the SkeletonStream engine status is an expensive call which should be made at application startup only, unless the app has specific needs that require turning Skeleton on and off.

Samples

On some machines, the C++ Skeletal Viewer sample occasionally won't render the Skeleton properly—it may flash or not display. This is a known bug in the sample that will be addressed in a future version.

 

Certification error during setup

The Kinect for Windows SDK version 1.0.3.191 replaced version 1.0.3.190 on May 2, 2012. The earlier version had the potential to produce certificate error messages during setup in limited scenarios. The issue was resolved in version 1.0.3.191. The error messages included: “The integrity of this certificate cannot be guaranteed,” “The signature of the certification cannot be verified,” and “This certification has an invalid digital signature.”

  

Purchase Kinect for Windows

Purchase the Kinect for Windows sensor and get started today.

Purchase

Get the Kinect for Windows SDK

Download the software development kit (SDK) and start developing today.

Download Now

Community

Ask questions, get answers, and provide feedback about Kinect for Windows in the following forums on MSDN.

General discussion carat icon

Share experiences and provide feedback about Kinect for Windows.

NUI API and programming carat icon

Discuss topics related to programming for NUIs, such as skeletal tracking, depth, and camera streams.

Audio API and programming carat icon

Discuss topics related to audio interface programming, such as acoustic noise and echo cancellation.

More Projects and Info

Project Gallery carat icon

Explore Coding4Fun projects to see creative uses of Kinect for Windows.

Quickstarts carat icon

Watch video guides that will help you get started with your first project.