Single board computer performance comparison?

I’m interested in using an Astra [Pro] with a single board computer running OpenNI. However, there are many different SBCs available which makes it difficult to choose between them. I’d like to use whichever SBC will give me the best bang for my buck. I don’t have any strict framerate requirements for my project at this time, but obviously the higher the better - is that even a good performance metric? I’m hoping that this thread is read by those who have tried using the Astra [Pro] with an SBC and I’d like to hear their experiences.

I’ve tried narrowing down the list and come up with a few contenders I’m most interested in:

  • Raspberry Pi 3 (quad-core A53 @ 1.2GHz),
  • Odroid-C2 (quad-core A53 @ 2GHz),
  • NanoPC-T3 (octa-core A53 @ 1.4GHz),
  • Banana Pi M3 (octa-core A7 @ 2GHz), and the
  • Firefly-RK3288 [core board] (quad-core A17 @ 1.8GHz).

I’m not sure if number of cores, clock speed, or instruction width is most important. I think the Firefly already has a bit of an advantage as (I believe) it uses the same processor as the Persee. If anyone has used any of those boards with OpenNI and the Astra I’d love to hear your experience. Also of use would be comments from the Persee engineers that selected the RK3288 out of the other choices and could shed some light on why that decision was made. Thanks!

i’ve tried first two from this list

  1. rpi3b - depth stream works only at 320x240, 30fps
  2. odroid c2 - works at 640x480, 30fps, both with astra pro and astra pro s. there was long story with openni for arm64, but now everything works great

That’s great to know. So based on your experience it seems there’s a clear difference in performance from using a processor at 2GHz vs one at 1.2GHz (since both Rpi 3B and Odroid-C2 are quad-core A53’s). Now it would be interesting to compare an Odroid-C2 with a NanoPC-T3, since the NanoPi has twice the number of cores, but is using a slower clock speed. If OpenNI has been written to take advantage of additional threads (or if additional processes are being run like, say, a video encoder/server or something) then I’d expect the NanoPi to win out. However, if not then I’d expect the Odroid to win out since it has a higher clock speed.

When you say there was a long story getting OpenNI working for arm64, do you mean it’s not easy to set up to compile for 64-bit architectures? Have you ever tried compiling it for 32-bit systems and if so, was it easier and did it make a performance difference? I guess if it’s easier to get working for 32-bit systems that’s another win for the A17 Firefly board.

It was literally long story. Me and guys from this forum waited for about 2 month for openni2 for arm64 from orbbec developers=)
One more thing. openni2, compiled for arm32 worked at odroid c2, but with very low fps(whole story was here - libORBEC.so for the aarch64 architecture - #21 by qlkvg). So, I think, high performance of orbbec cameras with odroid c2 is result of amlogic s905 arm64 architecture, not cpu frequency.

Thanks for the link - interesting read. I looked at the specs for those board again a little closer. Looks like both the Pi 3B and C2 have a 64bit ARMv8 quad core ARM Cortex A53 CPU with 32KB L1 instruction and 32KB data cache for each core and a 512KB L2 shared cache, so no difference there apart from the ~66% clock speed boost for the Odroid, of course. However, there is a big difference in the GPUs of each board:

RPI3B: dual core VideoCore IV GPU @ 400 MHz
Odroid-C2: five core ARM Mali-450 MP3 GPU @ 750 MHz and AVE video engine

So if OpenNI is designed to take advantage of the extra GPU power in the C2 then it makes sense that’s where the performance boost comes from. I don’t know enough to know if that’s the case though.

Both boards are 64 bit, so maybe the same type of performance increase could be seen by using the 64-bit version of OpenNI on the Raspberry Pi 3B? Or is that not possible or difficult due to the RPi’s being somewhat closed source? The Driver API section of the Raspberry Pi Wikipedia page makes it sound very complicated.

Do you (or anyone else) have any experience with the Persee? If we knew what kind of framerates the Persee got with its 32-bit CPU running at 1.8GHz and Mali-T760 MP4 GPU we could compare it to the 30fps @ 640x480 you got with your 64-bit Odroid-C2 running at 2GHz with Mali-T450 MP3 GPU.

You are right, rpi3b also 64bit. Strange, that I haven’t noticed it before.
Not sure about GPU performance, didn’t dive so far. I think orbbec developers could answer this question.
I don’t have expirience with Persee, but there was several threads about it, you could look there.

I have also tried rpi3b with astra pro, and I guess the 320x240 limitation is due to the USB chip not good/powerful enough. At 640x480 I can only grab one depth image in average several seconds.