libORBEC.so for the aarch64 architecture

I need to use your astra device from the Odroid C2 HW (http://www.hardkernel.com/main/products/prdt_info.php) which is based on the ArmV8 architecture and uses the AArch64 instruction set.
I was able to compile on it the openni2 version at GitHub - orbbec/OpenNI2: OpenNI2 and so I’m able to work with pre registered oni files.
Now I need to connect and use your Astra sensor and so I need the libORBEC.so library for this platform.
I have also compiled your astra sdk on that platform but the libORBEC.so library is not builded with it.
Somewhere I read that it is not even open source, so my question is: can you please provide it to me or let me be able to compile it ?

Thank you

1 Like

I forgot to mention that the os is ubuntu 16.04

@Vale68 Did you have any success?

No, no answer from Orbbec yet.
I have been able to compile openni2 on the c2 by applying changes at: https://github.com/occipital/OpenNI2/compare/master...tfoote:arm64_support?expand=1.
It works with recorded oni files, but I’ve no access to the astra device since the libORBEC.so for aarch64 is missing.

have the same problem with my odroid c2. guys from orbbec, we are waiting for you:)

What I did was replace all the openNI2 stuff in /usr/lib/ with the downloaded precompiled ARM drivers.
See: Full OpenNI 2 Environment Download
And: Mainstream OpenNI support for Orbbec cameras - #5 by JaccovdS
This way I got it running.

The link you provided contains the 32 bit version of the libORBEC.so library for arm:
libORBBEC.so: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not stripped
which is not what I’m asking for.
I need the aarch64 (arm 64 bit) version of the library.

You are right.
Do you think it will make a big difference in performance?
Because the 32-bit version does work.

I’m not sure about the performances but the real problem I’ve now is that I’ve to use it together with opencv 64 bit and java 64 bit.
Anyway I can give it a try but using a 32 bit whole software stack, if I can get one working on the C2 of course.

This is what I did to have a 32 version run on the c2:

  • I’ve compiled opencv 2.4.12 on an odroid xu 4 and the copied it to the c2.
  • I’ve copied the oracle 32 bit jvm from the odroid xu 4 to the c2.
  • I’ve copied the required 32 bit libraries from the xu 4 to the c2.
  • I’ve installed the 32 bit arm version of the astra openni2 distribution.
  • I’ve set the LD_LIBRARY_PATH accordingly.
    Now everything runs but I cannot receive any frame from the astra device, this are the messages I get in the log:
    867 INFO New log started on 2016-05-24 09:36:21
    952 INFO — Filter Info — Minimum Severity: WARNING
    67936 WARNING Failed to set thread priority (1)
    67990 WARNING USB events thread: Failed to set thread priority to critical. This might cause loss of data…
    Warning: USB events thread - failed to set priority. This might cause loss of data…
    162576 WARNING Received NACK: 2
    2188267 WARNING Failed to set thread priority (1)
    2188439 WARNING Failed to set thread priority to critical. This might cause loss of data…
    2719426 WARNING Endpoint 0x81, Buffer 0: Asynch transfer failed (status: 1)
    2720415 WARNING Endpoint 0x81, Buffer 1: Asynch transfer failed (status: 1)
    2721739 WARNING Depth: Expected 1, got b
    2721754 WARNING Depth frame is corrupt!

I’ve successfully used the above linked branch on a DragonBoard 410c under aarch64 Commits · tfoote/OpenNI2 · GitHub

This works great, thank you. But now there is some kind of noise in depth map. One of orbbec developers wrote [quote=“josh, post:2, topic:282”]
The pre-compiled OpenNI2 binaries include an additional filter (not found in the github source) that is necessary for correct depth data results.
[/quote] in this thread, so I guess we still need official Arm64 release of OpenNI for Astra cameras.

P.S. I attached picture of pointcloud, generated from part of depth map. Dots above nose and near chin is noise I was talking about.

Well, I wrote to guys from Orbbec and after some time they give me link for OpenNI for arm64 - Dropbox - OpenNI-Linux-ARM64-2.2-0524.tgz - Simplify your life. But I still have the same problem with noise in depth map. It would be perfect, if someone try this and share his expirience.

Thank you,
do you get a lot of messages in the log file like these as we do ?

467942 WARNING DeviceSensorProtocol XnDataProcessor.cpp 64 Depth: Expected 1, got a404
468054 WARNING DeviceSensorProtocol XnFrameStreamProcessor.cpp 153 Depth frame is corrupt!
773688 WARNING DeviceSensorProtocol XnDataProcessor.cpp 64 Image: Expected 1, got 4b98
773954 WARNING DeviceSensorProtocol XnFrameStreamProcessor.cpp 153 Image frame is corrupt!
774163 WARNING DeviceSensorProtocol XnDataProcessor.cpp 64 Image: Expected 4b9a, got 50
802703 WARNING DeviceSensorProtocol XnDataProcessor.cpp 64 Image: Expected a8, got a9

First you have to enable the warning logging level in the “OpenNI.ini” file.

No, from both OpenNi’s. But on 32bit odborian with openni for arm 32bit yes, there was lots of them and fps was around 5-10, also streaming stucks sometimes.

Good news, Can you please tell me on which hw are you running it ?
The DragonBoard 410c, the Odroid C2 or something else ?

Odroid C2 with odrobian jessie 64bit. Everything runs perfect except noise in depth map.

So looks like the problem is in the os I’m using, I’ll give odrobian a try.
Thank you very much !

You are absolutely right qlkvg, everything works with the odrobian jessie OS but with a lot of noise.
I’ve recorded two oni files from the same camera in the same light conditions, one with my Intel ubuntu pc and the other with the odrobian C2 mini pc, results are very different as you can see:

the depth map taken from my intel pc:

the depth map taken from the C2: