Official Kinect SDK vs. Open-source alternatives

F. P. picture F. P. · Oct 9, 2011 · Viewed 31.4k times · Source

Where do they differ?

What are the advantages of choosing libfreenect or OpenNI+SensorKinect, for example, over the Official SDK, and vice-versa?

What are the disadvantages?

Answer

Avada Kedavra picture Avada Kedavra · Oct 9, 2011

Please note that the below answer is per date and some facts may very well be outdated in the near future. Current state of the Official Kinect SDK is beta 1.00.12.

The first obvious difference is that the official SDK is maintained by the Microsoft Research team while OpenKinect is an open source SDK maintained by the open source community. Both has its cons and pros.

  • The Official SDK is developed by Microsoft which also develops the hardware and therefore should know internal information about the device that the open source society must reverse engineer. Obviously this is to Microsoft's advantage.
  • Microsoft is pouring a lot of money into this device and I am sure that they will do what they feel is necessary to keep their SDK up to par. Having economy behind it gives many advantages.
  • On the other hand, never underestimate the force of the open source society: "The OpenKinect community consists of over 2000 members contributing their time and code to the Project. Our members have joined this Project with the mission of creating the best possible suite of applications for the Kinect. OpenKinect is a true "open source" community!" - http://openkinect.org/wiki/Main_Page.
  • OpenKinect was released long before the official SDK as the kinect device was hacked on the first or second day of its release. Kudos to OpenKinect!

Programming languages supported:

  • Official SDK: C++, C#, or Visual Basic by using Microsoft Visual Studio 2010.
  • OpenKinect: Python, C, C++, C#, Java, Lisp and more! Obviously not requiring Visual Studio.

Operating systems support:

  • Official SDK: only installs on Windows 7.
  • OpenKinect: runs on Linux, OS X and Windows

Clearly advantage OpenKinect.

License:

  • The Official SDK is in its current beta state only for testing. The SDK has been developed specifically to encourage wide exploration and experimentation by academic, research and enthusiast communities. commercial applications are not permitted. Note however that this will probably change in future releases of the SDK. Visit the FAQ for more information
  • OpenKinect appers to be open for commercial usage, but online sources state that it may not be that simple. I would take a good look at the terms before releasing any commercial apps with it. Read Kinect – Licensing implications of open hardware projects for more info.

Documentation and support:

  • Official SDK: well documented and provides a support forum
  • OpenKinect: appears to have a mailing list, twitter and irc. but no official forum/QA? Documentation on website is not as rich as I would like it to be.

Device calibration:

Different Kinect devices may differ slightly depending on the batch that they were produced in. Thus device calibration is sometimes required. But:

  • the Official SDK does not provide any calibration settings but I have so far not had to calibrate the device I am working on. According to something I read online (link lost) at production time the calibration parameters are written to the kinect device, so with the Official SDK calibration is not needed.
  • OpenKinect features device calibration: http://openkinect.org/wiki/Calibration. Thus I believe that you should calibrate your device if you go with OpenKinect.

If its true that calibration is only needed for OpenKinect that is a big advantage for the official SDK as it is easier to distribute and install applications without such need.


Personally, after a failed try with the OpenKinect SDK I went with the official SDK, which

  1. came with drivers that installed out of the box
  2. came with examples and code for easy getting into business
  3. All-in-all: I could start my own development within 15 minutes or so.
  4. Now, after working with the Kinect for a few months, I have to say that I am quite satisfied with the API provided. I cannot however compare it to the OpenKinect SDK as I in fact never got it working (but perhaps it didn't give it a fair try).

UPDATE: As of February 1st 2012 there is a commercial license for the official SDK: "The commercial license for this release authorizes development and distribution of commercial applications. The prior SDK was a beta, and as a result was appropriate only for research, testing and experimentation, and was not suitable for use with a final, commercial product. The new license will enable developers to create and sell their Kinect for Windows applications to end user customers using Kinect for Windows hardware on Windows platforms." Developer Frequently Asked Questions