OpenNI2 DeviceOpen using default: no devices found

Hi,

I have a problem very similar if not the same problem as described in this thread Development setup for Persee on Linux - #17 by Jesse,

I developed my application on my Desktop after I was done I wanted to move it to a raspberry pi 3.
On the the x86_64 Ubuntu 17.04 everything worked as expected.

But when I tried to move it to the raspberry I ran into the problem that my application always reports:
Couldn’t open device
DeviceOpen using default: no devices found

But the Astra mini s camera is attached and found as lsusb shows me:
Bus 001 Device 004: ID 2bc5:0407
Witch is the camera.

Also, a strange thing I have noticed is if I run the Sample binary’s form the OpenNI-Linux-Arm-2.3 sdk
It seems to find the device, but it can’t properly read from it. The first frame seems to be OK but after that I only get timeouts:

pi@raspberry:~/Downloads/OpenNI-Linux-Arm-2.3/Samples/SimpleRead/Bin/Arm-Release$ ./SimpleRead
Warning: USB events thread - failed to set priority. This might cause loss of data…
[00000000] 356
Wait failed! (timeout is 2000 ms)
waitForStreams: timeout reached

Wait failed! (timeout is 2000 ms)
waitForStreams: timeout reached

I use the official OpenNI2 package from the xenial package repository (libopenni2-dev).

I am not very familiar with the setup that is required for OpenNI2 but for building I used this Find cmake to properly link Against OpenNI2 pcl/FindOpenNI2.cmake at master · PointCloudLibrary/pcl · GitHub
And since it worked fine on my Desktop I thought everything was right.

I already tried everything I could think of.
Also I tried potential solutions I found on the internet like modifying the orbbec-usb.rules in /etc/udev/rules.d/ but I did not find a solution.

Some general info that is maybe helpful:
I only need the Depth stream.
I currently Open the Device like this:
device.open(ANY_DEVICE) which does not return STATUS_OK.
The Image I use is currently the 16.04.2 Xenial (ubuntu mate) for the raspberry 3
But I also tried the Raspbian stretch which had the same behaviour.
I currently do not use a cross compile environment I simply compile on the PI.
The camera I use is the astra-mini s.
I do not need any features from the Astra SDK I only need the depth stream thus I use OpenNI2.

I am kind of under time pressure and out of Ideas, I would be very thankful for ideas, solutions, help, thoughts or anything regarding that mater.

Hi,
so I have found the solution to one of these problems and a sort of workaround for the other one.
The first problem (the device not found) was simply because the OpenNI2 from the package repository seams to not have the astra driver.
I removed the OpenNI2 from the package repository and installed or sourced the one from the sdk.
Then the application finds the camera.

But the second problem still remains tho I have found that if I lower the resolution to 320x240 it seems to work fine. This is strange since the raspberry should easily be able to handle the amount of data that is coming from a 640x480 video stream.

If someone knows why this is occurring or how to fix this I would still be very happy to hear about that.

1 Like

Hi ,
First of all - thank you for reporting your successful process.
I know this was a bit ago but if you can remember what you did in a bit more detail?
what were the steps you took ? to my understanding:

  1. you installed openni2 by using apt-get install libopenni2-dev ? ( or used make to build ur own? )
  2. you removed the libOpenNI2.so and replaced it with the one from the sdk ?

any additonal steps ? ( install.sh ) ? where did you get the sdk - what version?
Any additional tips?

Thanks in advance,
Dan