1.8 SDK and Developer Toolkit Known Issues

Kinect for Windows 1.8

Here is a list of known issues with this release. As most of the new features in 1.8 are released as a part of the toolkit, please pay careful attention to the Toolkit Known Issues.

Software Development Kit (SDK)

SkeletonFrame.TrackingMode property is reserved for future use

The value returned by the SkeletonFrame.TrackingMode property may change in future releases. An application should not use this property. The SkeletonFrame.TrackingMode property of the SkeletonFrame class always returns SkeletonTrackingMode.Default, even when the skeletal tracking (ST) engine is in Seated mode.

To determine that ST is in Seated mode, check the SkeletonStream.TrackingMode property or confirm that the TrackingStatus property of one of the lower 10 joints of a tracked skeleton, such as the HipCenter joint, returns NotTracked.

Do Not Use INuiSensor::NuiUniqueId or KinectSensor.UniqueKinectId

Do not use the KinectSensor.UniqueKinectId property (or the corresponding INuiSensor.NuiUniqueId method) because of inconsistent behavior between Xbox and Kinect for Windows sensors. Instead, use the KinectSensor.DeviceConnectionId property to identify the sensor based on the USB port it is plugged into.

Call KinectSensor.Start and KinectSensor.Stop after sensor transitions in KinectSensorCollection.StatusChanged events

When KinectSensorCollection.StatusChanged events occur, ensure that you call the KinectSensor.Start method on the transition to KinectStatus.Connected. Call KinectSensor.Stop on all transitions away from KinectStatus.Connected. (Test using unplug, unpower, and machine sleep/hibernate.)

Calls to KinectSensor.Map and DepthImageFrame.Map may fail if you called KinectSensor.Stop already or removed the sensor while the application is running

Calls to KinectSensor.Map methods and DepthImageFrame.Map methods may fail throwing an UnauthorizedAccessException if you have already called KinectSensor.Stop or the sensor has been removed while the application is running. Use a try/catch around Map API calls to catch this exception.

Call SetDeviceStatusCallback before calling NuiInitialize or NuiShutdown.

Call NuiSetDeviceStatusCallback before invoking multiple calls to either NuiInitialize or NuiShutdown.

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, certain NEC USB 2.0 controllers, the Etron USB 3.0 Extensible Host Controller, and 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. If this happens to you, you may have to restart your application or reboot your computer. You can also try updating your USB controller drivers, or plugging your device into another USB 2.0 controller.

Number and date normalization in Kinect for Windows Speech Grammars

Kinect for Windows is 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 use "Play song number five" 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 Sound, then the Recording tab.
  2. Select Kinect Microphone Array and then press the Properties button. Select the Levels tab.
  3. Set the Microphone Array gain level to 3. (The default is 100.) Press OK and then OK.

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.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 restart the AudioSource after changing SkeletonStream status.

            Workaround #1 (start audio after skeleton):

            Workaround #2 (restart audio after skeleton):
            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. It should be made at application startup only, unless the app has specific needs that require turning Skeleton on and off.

Developer Toolkit

KinectFusion issues:

  • Kinect Fusion may run slower on some video cards than others based on architecture differences. Higher end cards may not equate to better performance for Kinect Fusion. If performance is critical for your applications, we recommend evaluating Kinect Fusion on different GPUs and drivers to find the best performing card.
  • Note that in color reconstructions, object edges are particularly tricky with color as camera motion or calibration inaccuracy can cause slight misalignments between color and depth and this is particularly visible when you have a foreground object color which contrasts with a background color. Here streaks of the background are sometimes seen in the object color (particularly with convex objects).
  • Performance in the samples in Win7 is significantly lower if the Desktop Window Manager is not running. Please ensure you have a theme such as Aero turned on for maximum sample performance.
  • Visual Studio Express versions do not support ATL. To compile the KinectFusionExplorer-D2D sample in VS Express, you should be able to work around this by commenting out the mesh saving code in CKinectFusionExplorerD3D::SaveMeshFile and the WriteBinarySTLMeshFile and WriteAsciiObjMeshFile functions in KinectFusionHelper.h and .cpp, and the ATL include files in stdafx.h, together with any libraries no longer required.

Background Removal

  • BackgroundRemovedColorStream is a refinement of the player mask. Thus it may contain false positives that the player mask contains. Objects that are held by the person or objects close by are sometimes mistakenly classified as part of the player in the skeleton pipeline, resulting in our inability to remove them as the background. Additionally, Kinect depth camera cannot accurately determine depth on extremely reflective or absorptive material. This may result in objects held by the person accidentally removed as background. It is recommended that when using BackgroundRemovedColorStream the user stand in a relatively uncluttered space, avoid standing in front of a very dark background, and avoid holding a large reflective item (e.g. a glass bottle or a tablet PC). Finally, configuring the stream to include multiple users as the foreground is currently not supported. This may be accomplished by using multiple instances of the BackgroundRemovedColorStream.
  • Samples

    Kinect Fusion Explorer Multi Static Cameras-WPF

    The Kinect Fusion Explorer Multi Static Cameras-WPF sample is designed to operate with a fixed set of cameras which remain plugged into the same USB ports of a PC (for example in Kiosk-like scenarios). The Kinect cameras can only be uniquely identified by their USB port currently, and the sample will not correctly handle sensors unplugged and re-plugged. To use this sample correctly, ensure all sensors are connected before starting and that they stay connected to the same port throughout use. When the sample is installed to a non-Program Files directory location and run, a settings file of the individual sensor pose and configuration settings (such as near mode on/off) will be written to disk whenever the "Reconstruct Frames" button is pressed. This file is labeled as the sensor USB port ID with an ".xml" extension. On re-starting the application it will attempt to load the configuration file for each attached sensor to reduce configuration time.

    Kinect Explorer-D2D

    When the Kinect Explorer-D2D sample is launched from Visual Studio, the Kinect Window will hang if any of the below options are chosen from the Color Stream chooser and the user clicks on the color stream again:

    • "InfraredResolution640x480Fps30"
    • "RawBayerResolution640x480Fps30"
    • "RawBayResolution1280x980Fps12"


    Known Issues with Scroll Interactions:

    • Currently you cannot grip outside the Kinect Scroll Viewer and expect it to be recognized as a grip.
    • Mouse Scrollbars show when content is loading.

    Known issues with Buttons:

    • Some horizontally shaped buttons do not get larger on hover.
    • Kinect button labels are difficult to read while buttons are scrolling.

    Known issues with Pressing:

    • Pressing doesn't work well on large surfaces (scroll viewer, large canvases etc.) so for scenarios like "press to paint" it will not work well.
    • Pressing accuracy decreases rapidly as user moves away from optimal location.

    Known issues with Grip:

    • Grip accuracy is worse for left hand than it is for right hand.
    • There is a noticeable delay in grip recognition.
    • Grip does not work as well with sleeves or anything that obstructs the wrist.
    • Grip should be used within 1.5m to 2m away from the sensor, and oriented directly facing the sensor.

    Kinect Studio

    A Kinect Studio recording (stored in a .xed file) plays properly only when the same Kinect sensor is being used by the application. You should keep a record of the precise sensor used to record each file so that you can play the file back with correct synchronization between color and depth cameras. We are considering updating the information that Kinect Studio stores in the .xed file so that playback is possible using any sensor.

    If the Kinect-enabled application that you are recording turns skeletal tracking on or off while recording, recording stops. However, toggling the skeleton stream using SkeletonStream.Enable and SkeletonStream.Disable will cause Kinect Studio to lose connection with the application and stop playback/record or live preview.

    If Kinect Studio ever crashes or hangs, the intact recording can be found in the temporary file directory specified under Tools > Options. (Change the file extension to .xed before playing it.)

    While recording content in M2's Kinect Studio, depth values less than 800 will be recorded as unknown. Do not do production recording with M2's Kinect Studio.

    Other Issues

    Installation of the DirectX SDK (June 2010) fails if installed after the Kinect for Windows SDK

    There is a known issue with the Visual C++ 2010 Redistributable Package included in the DirectX SDK installer that causes this failure. You can find more information about this issue and the workaround at this location: Known Issue: DirectX SDK (June 2010) Setup and the S1023 error.

    Community Additions