When trying to use openni_tracker with Kinect (Xbox-version) on Ubuntu 12.04 with Fuerte. I was getting the following error message:
[ERROR]: Find user generator failed: This operation is invalid!
I got to know more about what's happening in the backgound now. So the device is queried for a "User generator" which for NITE is XnVSkeletonGenerator
. With niReg -l
, you can list the available libraries and the OpenNI-nodes they enable. What looks a bit off is, that the OpenNI version is 1.5.2.23 and everything has that version except the libraries relevant for user tracking. Those are versioned as 1.3.0.17 and apparently compiled against OpenNI 1.0.0.22.
After installing the latest unstable "OpenNI Compliant Middleware Binaries" for Ubuntu 12.04 from openni.org, I have several library versions as shown below and the user_tracker works flawlessly. To make it work, don't remove nite-dev (now replaced with libopenni-nite-dev) but run the uninstall.sh from the downloaded archive before the install.sh so you won't break the dependency but replace the libraries.
I created a bug report for that issue so the above workaround hopefully gets obsolete.
Edit: As you can see from the comments (and I got it as well), this issue is also relevant in Groovy. The "nite-dev" dependency got replaced with "libopenni-nite-dev" and the basic OpenNI dependencies are now "libopenni-sensor-primesense-dev" and "libopenni-dev".
niReg -l
output for the Fuerte/Precise openni-dev and nite-dev packages:
(...)
OpenNI version is 1.5.2.23
(...)
/usr/lib/libXnVFeatures.so (compiled with OpenNI 1.0.0.22):
Scene: PrimeSense/XnVSceneAnalyzer/1.3.0.17
User: PrimeSense/XnVSkeletonGenerator/1.3.0.17
/usr/lib/libXnVHandGenerator.so (compiled with OpenNI 1.0.0.22):
Gesture: PrimeSense/XnVGestureGenrator/1.3.0.17
Hands: PrimeSense/XnVHandTracker/1.3.0.17
niReg -l
output for the Fuerte/Precise openni-dev and after applying workaround:
(...)
OpenNI version is 1.5.2.23
(...)
/usr/lib/libXnVFeatures_1_3_0.so (compiled with OpenNI 1.0.0.22):
Scene: PrimeSense/XnVSceneAnalyzer/1.3.0.17
User: PrimeSense/XnVSkeletonGenerator/1.3.0.17
/usr/lib/libXnVFeatures_1_3_1.so (compiled with OpenNI 1.2.0.8):
Scene: PrimeSense/XnVSceneAnalyzer/1.3.1.8
User: PrimeSense/XnVSkeletonGenerator/1.3.1.8
/usr/lib/libXnVFeatures_1_4_1.so (compiled with OpenNI 1.3.2.3):
Scene: PrimeSense/XnVSceneAnalyzer/1.4.1.2
User: PrimeSense/XnVSkeletonGenerator/1.4.1.2
/usr/lib/libXnVFeatures_1_4_2.so (compiled with OpenNI 1.3.4.6):
Scene: PrimeSense/XnVSceneAnalyzer/1.4.2.5
User: PrimeSense/XnVSkeletonGenerator/1.4.2.5
/usr/lib/libXnVFeatures_1_5_2.so (compiled with OpenNI 1.5.4.0):
Scene: PrimeSense/XnVSceneAnalyzer/1.5.2.21
User: PrimeSense/XnVSkeletonGenerator/1.5.2.21
/usr/lib/libXnVHandGenerator_1_3_0.so (compiled with OpenNI 1.0.0.22):
Gesture: PrimeSense/XnVGestureGenrator/1.3.0.17
Hands: PrimeSense/XnVHandTracker/1.3.0.17
/usr/lib/libXnVHandGenerator_1_3_1.so (compiled with OpenNI 1.2.0.8):
Gesture: PrimeSense/XnVGestureGenrator/1.3.1.8
Hands: PrimeSense/XnVHandTracker/1.3.1.8
/usr/lib/libXnVHandGenerator_1_4_1.so (compiled with OpenNI 1.3.2.3):
Gesture: PrimeSense/XnVGestureGenrator/1.4.1.2
Hands: PrimeSense/XnVHandTracker/1.4.1.2
/usr/lib/libXnVHandGenerator_1_4_2.so (compiled with OpenNI 1.3.4.6):
Gesture: PrimeSense/XnVGestureGenrator/1.4.2.5
Hands: PrimeSense/XnVHandTracker/1.4.2.5
/usr/lib/libXnVHandGenerator_1_5_2.so (compiled with OpenNI 1.5.4.0):
Gesture: PrimeSense/XnVGestureGenerator/1.5.2.21
Hands: PrimeSense/XnVHandTracker/1.5.2.21
Originally posted by pgorczak on ROS Answers with karma: 446 on 2012-08-30
Post score: 18
Original comments
Comment by Mike Gao on 2012-09-02:
Thanks for your solution! I have followed your words, and also got the same lib registration info as yours shown above, but still I can not run the openni_tracker, this time the program just stucks without any progress until I have to stop it...
Comment by pgorczak on 2012-09-03:
Are you sure the camera is running? Try to have openni_launch openni.launch
up at the time you run openni_tracker. If the camera is working properly, you should be able to see an image with image_view. If you walk around in front of it, openni_tracker should give output then.
Comment by Mike Gao on 2012-09-03:
Thanks for your reply! I have upgraded the whole lib, which means now not only nite but also openni is the latest unstable 1.5.4.0 version. I'm sure that the camera works properly using openni_launch and image_view to test, but I can not run the openni.launch and openni_tracker at the same time.
Comment by Mike Gao on 2012-09-03:
And when I run the openni_tracker alone, the program still stucks...
Comment by Mike Gao on 2012-09-03:
It seems that the solution works finally, thanks again!
Comment by bit-pirate on 2012-12-10:
Thanks, works like a charm now! :-)
Comment by niosus on 2012-12-14:
Thanks a lot! Works for me too.
Comment by bit-pirate on 2013-04-15:
I believe the download page has been moved to: http://www.openni.org/openni-sdk/openni-sdk-history-2/
Comment by thorin on 2013-10-29:
Hey Mike Gao, my node also got stuck. How did you solve this?
Comment by Mike Gao on 2013-12-10:
Hi, after having installed ros hydro, I do not have such problem anymore.