What is the difference between OpenNI and OpenKinect? - kinect

I am considering using Kinect in one my projects, but I am totally lost between all the libraries. Don't know what is what exactly. Most importantly I am reading stuff about OpenNI and OpenKinect. But don't know their relation/differences. PS. I am using Ubuntu or Mac.

OpenKinect is a community of people, not a library. The OpenKinect community releases the libfreenect Kinect driver. libfreenect and OpenNI+SensorKinect are two competing, opensource libraries/drivers. libfreenect (Apache 2.0 or GPLv2) derives from the initial, reverse-engineered/hacked Kinect driver whereas OpenNI+SensorKinect is derived from open sourced (LGPL) PrimeSense code.
Both projects work on Windows, Linux (Ubuntu), and Mac OS X. Both projects allow you to access color and depth images from the camera. The projects are not compatible and they can not be used simultaneously.
Differences between the libraries are motor control (libfreenect has it, OpenNI+SensorKinect doesn't), and integration with the NITE middleware for higher-level NUI support (OpenNI+SensorKinect only). These differences tend to drive projects towards one of the libraries.

I should add that OpenNI 2 renders OpenNI unusable to anything else other than Windows.
OpenNI 1.x with Kinect was not oficially supported in other platforms, until a guy named avin2 created the SensorKinect project, which sits on top of OpenNI and exposes the interface of the Kinect to OpenNI. OpenNI 2.0 is a major refactoring, and does not oficially support anything else other than Windows for the Kinect. http://social.msdn.microsoft.com/Forums/en-US/kinectsdk/thread/a11ff6d9-7fbe-4636-8ff0-92d6220ac3f8/ . At the time of this writing, OpenKinect has a problem with the newest kinect (model 1473) , which renders the device unusable. I don't know if a fix is underway.
Therefore, to sum up:
-- If the problem with the device model 1473 is solved, then OpenKinect is the way to go. And, frankly, I wouldn't trust anything else which targets a specific platform.
-- Until this problem is solved, your only option is to use OpenNI 1.5 + SensorKinect, which is obsolete, and development on it has halted, but it's the only thing that works with all kinect models, actually.

Although this question is years ago, I would like to add something I know.
I am pretty amateur, therefore getting Kinect to work on Mac was always difficult for me. I downloaded the code from github and followed multiple instructions but I couldn't get it to work properly. I remember, around 10 months ago, I got the Kinect, OpenNI work on Mac, but it was very unstable. The glview sample program did show depth and color images from Kinect, but it failed every now and then.
Recently, I found out a guy created a homebrew formula for openni (1 and 2), together with NiTE and libfreenect. I tried and it worked flawlessly on Mavericks 10.9.2 + 10.9.3, so if you haven't got the Kinect working properly, have a look at:
https://github.com/totakke/homebrew-openni

At this time of writing, OpenNi is compatible with Kinect for Windows, libfreenect is not.

Related

Use Kinect XBOX one with NIVIEWER

I am really new to the whole Kinect world.
I have the XBox One Kinect with the Windows Adapter, have installed the last version of the Kinect SDK sucessfully and recorded some videos with the Kinect Studio v2.0 and got some .xef files, which I cannot use, since I need .oni files for a certain program.
So I tried to record with the OpenNI 2's NIVIEWER program, but it does not recognize the Kinect. I tested the NIVIEWER with the ASUS xtion Pro and it did work. I even reinstalled OPENNi2.2/NITE2/KINECT SDK but it still does not work.
Am I doing something wrong?
Kinect v2 and the kinect for xbox one, doesn't work with OpenNI directly. You have a couple of options:
Work with Kinect v1
Work with Kinect SDK only
Work with experimental drivers such as this one. Note that it only works in windows.
You may try to save the rgb and depth images and create the oni by any other means (I think this option is not that easy)
Hope this helps you

What should i use after OpenNI down?

As we know,the OpenNI and openni.org have been closed. But I need to use Kinect or Xtion to make a 3D scanner. what should I use now? I find that structure.io provides OpenNI 2, but I am not sure if it is compatible with those codes or driver using OpenNI.
Just use Kinect SDKs provided by Microsoft. You can definitely access all the functionality and there are many resources out there to get a quick start. I did a virtual dressing room project using only Kinect SDKs and XNA.

Kinect for Xbox Compatiable with OpenNI

I am using the Kinect for Xbox and I am planning on using the OpenNI framework along with the Point Cloud Library for processing but I am having trouble getting OpenNI to recognize my Kinect for Xbox and I wanted to make sure that it is actually compatible with the device.
For some reason I haven't been able to find any documentation on this exact topic.
PCL does indeed work with OpenNI. I've managed to easily compile the OpenNI Grabber Sample on Windows (using the All In One installer). I must admit I haven't managed the same on osx (had some issues with various versions of VTK being installed on the machine).
By the looks of it the issue doesn't look like it's on the PCL side, but on the OpenNI driver side. Can you run any of the samples ? If not, what error messages are you getting ?
I recommend cleaning up (uninstalling OpenNI, NITE, SensorKinect) and installing the unstable versions, but try installing in this order:
OpenNI 1.5.4.0
Nite 1.5.2.21
Avin's SensorKinect
Which version of OpenNI that you use?
If you use version 1.5.4, I think there is no problem because OpenNI interact directly with your Kinect Xbox.
However, if you use OpenNI version 2.x, it will interact with your device via Kinect SDK (http://social.msdn.microsoft.com/Forums/en-US/kinectsdk/thread/a11ff6d9-7fbe-4636-8ff0-92d6220ac3f8/) Since there is no Kinect SDK on linux, you can't make OpenNI 2 to recognize your device.

Can the SDK 1.5.1 run on the same computer as Open-Source Libraries for Kinect now?

It used to be that the beta 2 SDK couldn't run on the same computer as any other Kinect hacking software. Is this still true? Can I incorporate OpenNI and the SDK in the same project now?
That's a tricky one. Theoretically yes. The practical problem, however, is that when working with OpenNI, you need an OpenNI-compliant driver. The usual choice for that is SensorKinect. The Kinect for Windows SDK requires Microsoft's own driver, which is incompatible
with OpenNI. Having two drivers operate at the same time is not possible.
So, Kinect for Windows SDK and OpenNI are mutually exclusive. Exchanging the driver is necessary when switching between libraries.
One possible way to make the SDK and OpenNI work at the same time would require you to write a OpenNI-compliant sensor module, which uses Microsoft's Kinect driver. Nobody has done this before, to my knowledge, and I'm not entirely sure that it would work. Check the OpenNI Programmer Guide for more information on OpenNI's architecture, if you intend to pursue this path.

Kinect SDK installed, Camera Features do not work

I have the same problem with this post: MSDN Post. It seems nobody answered with a working solution on that thread.
The symptoms:
Kinect SDK 1.5 installed.
The Kinect device is recognized and drivers seem to be loaded correctly.The speech demo works correctly.
Skeleton Viewer shows "Could not enable Skeleton Tracking".
Shape Game starts, but does not track anything.
Kinect Explorer starts the small windows only showing that it has connected to the Kinect, the black window does not open. If I close the white window, the kinect explorer is still running I have to quit it through the task manager.
When I unplug and plug the USB after I open Kinect explorer; it says insufficient bandwith.
I tried:
Updated BIOS.
Updated motherboard software. (ASUS Maximus IV Gene-Z, Gen3)
Removed all USB's and plugged them all.
Restarted windows. (several million times)
I uninstalled and re installed. Kinect SDK 1.0. (but everything is the same)
My OS: Windows 7 64 bit Ultimate.
I have been struggling with this for 1 complete day. Any suggestions will be greatly appreciated.
EDIT: I tried my Kinect device on another computer (laptop), and it works.
If the Kinect shares a USB Controller with other devices, a problem such as yours can happen easily.
Try the following: Unplug all USB devices, then connect only the Kinect to your computer. If you have USB mouse and/or keyboard, plug those into a different set of ports (for example front usb ports if you have the Kinect plugged into the back of the computer). Then, try running the SDK's sample applications.
Should this approach fail, something might be wrong with your USB controller(s).
One more option: Try running the sample applications on a different Windows computer, preferably a laptop of some type, since you won't need to plug in any additional USB devices.
If this approach fails, your Kinect is most likely defective. In which case you can get a replacement or refund from your retailer, if the purchase didn't happen too long ago.
Best of luck to you!
I finally was able to made my kinect work. This MSDN Discussion helped me to do that.
The solution:
Uninstall all Kinect Drivers from Control Panel.
Reinstall Kinect SDK.
(IMPORTANT) Make sure to skip getting drivers from windows update during driver installation.
And yay! It works beautifuly ..
The same happened with me; I noticed a windows update related to Kinect, installed it. Kinect stopped working. Installing SDK from May 2d 2012 didn't fix the problem. Rolling back to February 2010 SDK didn't fix it either. At first I guessed that Microsoft doesn't want us to use Kinect for Xbox any more, and this is their way of telling us to buy Kinect for Windows... well, may be - but in my case Kinect Camera driver was somehow updated to Version 1.5 (May 2, 2012), while everything else was on version 1.0. Installing original driver fixed the problem.