As everyone reading this blog, and those in the Kinect for Windows space, knows today is a big day. From what was a cool peripheral for the XBox 360 last year, the Kinect for Windows SDK and now dedicated Kinect for Windows hardware device, has taken the world by storm. In the last year we've seen some simply amazing ideas and projects, many highlighted here in the Kinect for Windows Gallery, from health to education, to music expression to simply just fun.
And that was all with beta software and a device meant for a gaming console.
With a fully supported, allowed for use in commercial products, dedicated device and updated SDK, today the world changes again.
Welcome to the Kinect for Windows SDK v1!
On January 9th, Steve Ballmer announced at CES that we would be shipping Kinect for Windows on February 1st. I am very pleased to report that today version 1.0 of our SDK and runtime were made available for download, and distribution partners in our twelve launch countries are starting to ship Kinect for Windows hardware, enabling companies to start to deploy their solutions. The suggested retail price is $249, and later this year, we will offer special academic pricing of $149 for Qualified Educational Users.
In the three months since we released Beta 2, we have made many improvements to our SDK and runtime, including:
- Support for up to four Kinect sensors plugged into the same computer
- Significantly improved skeletal tracking, including the ability for developers to control which user is being tracked by the sensor
- Near Mode for the new Kinect for Windows hardware, which enables the depth camera to see objects as close as 40 centimeters in front of the device
- Many API updates and enhancements in the managed and unmanaged runtimes
- The latest Microsoft Speech components (V11) are now included as part of the SDK and runtime installer
- Improved “far-talk” acoustic model that increases speech recognition accuracy
- New and updated samples, such as Kinect Explorer, which enables developers to explore the full capabilities of the sensor and SDK, including audio beam and sound source angles, color modes, depth modes, skeletal tracking, and motor controls
- A commercial-ready installer which can be included in an application’s set-up program, making it easy to install the Kinect for Windows runtime and driver components for end-user deployments.
- Robustness improvements including driver stability, runtime fixes, and audio fixes
More details can be found here.
If you're like me, you want to know more about what's new... So here's a snip from the Kinect for Windows SDK v1 Release Notes;
5. Changes since the Kinect for Windows SDK Beta 2 release
- Support for up to 4 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 per process. The developer can choose which Kinect sensor.)
· 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 including 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 6 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, i.e. 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
Added Undefined enum value to a few Enums: ColorImageFormat, DepthImageFormat, and KinectStatus
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
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);
public ColorImagePoint MapSkeletonPointToColor(SkeletonPoint skeletonPoint, ColorImageFormat colorImageFormat);
Renamed Skeleton.Quality to Skeleton.ClippedEdges
Changed return type of SkeletonFrame.FloorClipPlane to Tuple<int, int, int, int>.
Removed SkeletonFrame.NormalToGravity property.
· Audio & 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.
- Updated acoustic model that improves the accuracy in the confidence numbers returned by the speech APIs
- Kinect Speech Acoustic Model has now 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.
- 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 on “(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.
Here's some more links and information
- Kinect For Windows
- Kinect for Windows Blog (Near Mode: What it is (and isn’t))
- Kinect for Windows SDK v1 Release Notes
- Download the Kinect for Windows SDK (Make sure you read the full release notes, there's instructions for those who are using earlier versions for the Kinect for Windows SDK)
- Additional Resources and Documentation
Last but not least, here's some of the resources and projects that have been with with us since day 0;
- Kinect for Windows Quickstart Series - https://channel9.msdn.com/Series/KinectQuickstart
- Installing and Using the Kinect Sensor
- Setting up your Development Environment
- Camera Fundamentals
- Working with Depth Data
- Skeletal Tracking Fundamentals
- Audio Fundamentals
- Kinect Service - This is a Windows Service so you can see Kinect data on your Windows Phone - http://kinectservice.codeplex.com/
- Kinect Paint – Draw with your hands - http://paint.codeplex.com/
- Kinect Mouse Cursor – Control Windows with your hands - http://kinectmouse.codeplex.com/
- Coding4Fun Kinect Toolkit – Developer library for easy programming – http://c4fkinect.codeplex.com
- Jellybean – Our driveable lounge chair – http://jellybean.codeplex.com
Today is an exciting day and I'm really looking forward to the explosion of cool and fun stuff that I'm sure will be coming to the Gallery soon!
Since yesterday there's been a number announcements, posts and updates related to the v1 release. Here's a round for a number of them.
- Official Kinect for Windows SDK and Kinect Toolbox 1.1.1 are out! (David Catuhe)
- Kinect for Windows – Code Migration from Beta2 to v1.0 (C#/VB) (Rob Relyea)
- Kinect for Windows – Details of API Changes from Beta2 to v1.0 (C#/VB) (Rob Relyea)
- Kinect Service [also mentioned above, but this projects a few more details] (Brian Peek)
- Kinect for Windows now available! Information and resources for you. [This is another link round-up with even more information, links, etc.] (Eric Ligman)
In the coming days and weeks I'm sure we'll be hearing about more updates, refreshed, etc, so keep an eye on you favorite project or library...