1.5.1 Developer Toolkit Known Issues
Kinect for Windows 1.5
Here is a list of known issues with this release.
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:
- Open the Windows Control Panel, select Sound, then the Recording tab.
- Select Kinect Microphone Array and then press the Properties button. Select the Levels tab.
- 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.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 restart the AudioSource after changing SkeletonStream status.
Workaround #1 (start audio after skeleton): kinectSensor.Start(); kinectSensor.SkeletonStream.Enable(); kinectSensor.AudioSource.Start(); Workaround #2 (restart 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. It should be made at application startup only, unless the app has specific needs that require turning Skeleton on and off.
Developer Toolkit
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.)
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.
Building an application targeting .NET 4.5 is not supported
Kinect for Windows SDK 1.0 and 1.5 are fully functional with .NET Framework 4.0. However, Kinect for Windows SDK 1.0 and 1.5 are not fully supported with .NET Framework 4.5. Specifically:
- Running an application targeting .NET Framework 4.0 on a machine with .NET Framework 4.5 is supported.
- Building an application targeting .NET Framework 4.5 is not supported.