Linux SDK & Hardware Support

The requirements mention a Intel/x86, are the Astra driver’s source code open ?
to allow be ported to other hardware platforms e.g. Arm, Tegra ?

Thanks
Tiago

1 Like

Our Astra SDK is being frequently updated and will support most existing platforms including ARM. (I am not sure about Tegra right now)

We also have Revised OpenNI 2 for x86, x64 and ARM platforms for download. The links will be posted shortly.

This week 0.4 of the SDK will be available which will include binaries for:

  • Ubuntu 14.04 (x86/x64)
  • OSX
  • Windows (x86/x64)
  • ARM v7a / Android 4.4.2+

Stay tuned for additional platform support news. I promise the short wait will be worth it. :wink:

2 Likes

Hi Gordon,
I noticed the related post about the v0.4 SDK release, which also supports Linux Ubuntu (https://3dclub.orbbec3d.com/t/full-openni-2-environment-download/34).
I’m trying to get one of the samples working, but all my attempts failed so far.

Are there any step-by-step instructions on how to get the Astra running on Ubuntu 14.04 64bit?

What I did so far:

  1. Download OpenNI2 from here: Dropbox - Error
  2. Extract “OpenNI-2 -Linux-x64-Orbbec3D.tgz”
  3. Executed the install script with: sudo ./install.sh
  4. Run the samples SimpleRead and SimpleViewer from OpenNI-2 -Linux-x64-Orbbec3D/Samples/Bin/.

Both samples fail with the following error:

:~/Downloads/orbbec_sdk/OpenNI-Linux-x64-2.2/Samples/Bin$ ./SimpleRead 
Couldn't open device
        DeviceOpen using default: no devices found

I went further and created a rules file for the Astra similar to the provided rules for the Primesense (primesense-usb.rules). I just adjusted the idProduct (0401) and idVendor (2bc5) according to the Alpha. The whole file looks like this:

/etc/udev/rules.d$ more 56-orbbec.rules 
# Make Orbbec device mount with writing permissions (default is read only for unknown devices)
SUBSYSTEM=="usb", ATTR{idProduct}=="0401", ATTR{idVendor}=="2bc5", MODE:="0666", OWNER:="root", GROUP:="video"

But this didn’t help either. Next I tried my USB 2.0 and 3.0 ports. This also didn’t help. Last I fired up my existing installation of OpenNI (version 2.2), but it didn’t recognise the Astra either.

What am I missing or doing wrong here?

1 Like

Hello bit_pirate,

I had exactly the same problem. I solved it by copying the library file libORBBEC.so from Tools/OpenNI2/Drivers to Samples/Bin/OpenNI2/Drivers

After copying the file, SimpleRead and SimpleViewer started working.

Regards,
Paul

Hurray, got it working with the help of my colleague.
So, the key steps to make things working for me are as follows:

  1. Download and extract the Linux version of OpenNI

  2. Create a 56-orbbec.rules file with the below contents and move it to /etc/udev/rules.d/ (needs sudo):

    # Make Orbbec devices mount with writing permissions (default is read only for unknown devices)
    # Astra
    SUBSYSTEM=="usb", ATTR{idVendor}=="2bc5", ATTR{idProduct}=="0401", MODE:="0666", OWNER:="root", GROUP:="video"
    
  3. In the terminal you want to run the samples add the path to the OpenNI library to LD_LIBRARY_PATH. For example:

    export LD_LIBRARY_PATH=~/Downloads/OpenNI-Linux-x64-2.2_Orbbec3D/Redist/
    
  4. Run your choice of sample (instructions tested with SimpleRead and SimpleViewer).

A more complete dot rules file is available

Thanks @gordon the new udev rules worked well. And @bit-pirate the LD_LIBRARY_PATH was helpful. For anyone else trying to reproduce, the error you get when the LD_LIBRARY_PATH is not correctly set is:

$ ./Bin/SimpleViewer 
After initialization:

SimpleViewer: Device open failed:
	DeviceOpen using default: no devices found

Fixing the LD_LIBRARY_PATH fixed this error. It looks like the catch is a little broader than is optimal for helpful error reporting.

Note, you also don’t need the LD_LIBRARY_PATH set if you current working directory is in the Bin directory.

The archive for your version of OpenNI2 on ARM seems corrupted. Can you please reupload it ? Thanks in advance.

Hi, Lucas,

The files seems to be OK. Would you please let me know a specified file name?

Yes the OpenNI2 archive file for ARM downloadable at: Linux SDK & Hardware Support - #6 by bit-pirate is corrupted.
This is the error I get when running: unzip -l OpenNI-2-Linux-Arm-Orbbec3D.zip

Archive:  OpenNI-2-Linux-Arm-Orbbec3D.zip
  End-of-central-directory signature not found.  Either this file is not
  a zipfile, or it constitutes one disk of a multi-part archive.  In the
  latter case the central directory and zipfile comment will be found on
  the last disk(s) of this archive.
unzip:  cannot find zipfile directory in one of OpenNI-2-Linux-Arm-Orbbec3D.zip or
        OpenNI-2-Linux-Arm-Orbbec3D.zip.zip, and cannot find OpenNI-2-Linux-Arm-Orbbec3D.zip.ZIP, period.

I can open and uncompress it from my Mac, I don’t know I’m not able to do it from a linux machine but anyway problem solved.
Thank you and sorry for my previous message.

@Vale68 The reason it’s not working is because it appears to be a gzipped tar file rather than a zip file, despite the extension. Running tar -xf .zip worked for me.

Hello,

I have tried to use my Astra on Ubuntu 14.04 without success.

I followed all the steps provided by bit-pirate above. But when I run NiViewer I still receive the same message:

jurbrian@Juliano-PU301LA:~/jrbros/src$ NiViewer
One or more of the following nodes could not be enumerated:

Device: PrimeSense/SensorKinect/5.1.2.1: The device is not connected!

Press any key to continue . . .

What else could be wrong???

I also followed what JaccovdS proposes here, but the output is the same;

By the way, I noticed some people refer to OpenNI while others mention OpenNI2. Is there any difference to Astra?

Isn’t there a complete and official guide from Orbbec on how to install Astra in Ubuntu?

I already tested the camera in Windows, and it’s working fine, which tells me there is nothing wrong with the camera itself. But I need it in Ubuntu.

Thank you in advance for any help.

I was able to successfully build the new 0.5.0 release under Ubuntu 14.04. These were the steps I needed to follow. You can use this as a reference, but keep in mind that some of your directory locations will be different than mine:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install g+±4.9

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 10
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 20

sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g+±4.9 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g+±4.8 20

sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30
sudo update-alternatives --set cc /usr/bin/gcc

sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30
sudo update-alternatives --set c++ /usr/bin/g++

sudo apt-get install protobuf-compiler clisp-dev libprotobuf-dev libsfml-dev
export OPENNI2_INCLUDE=~/workspace/orbbec/OpenNI2/Include
export OPENNI2_REDIST=~/workspace/orbbec/OpenNI2/Bin/x64-Release

git clone GitHub - orbbec/astra: Orbbec Astra SDK - build amazing 3D apps with Orbbec 3D cameras

cd astra
git pull
git submodule sync
git submodule update --init

cmake .
make
cd install/
sudo ./install.sh

1 Like

Hi together,

I also managed to compile the Astra SDK 0.5 under Ubuntu 14.04 LTS. The instructions from tom are nice. The export I didn’t need, but the sample viewer from the Astra SDK remained black.

Is somebody more successful with that?

The simple viewer from OpenNI2 is working for me.

I am using an Astra Pro S.

Greetings,
Stephan

Hi Stephan,

I also added these lines (below) to my bashrc script and restarted my machine. I’m not sure if that makes a difference.

export ASTRA_SDK_INCLUDE=/home/tom/workspace/orbbec/astra/install/include
export ASTRA_SDK_LIB=/home/tom/workspace/orbbec/astra/install/lib

I’m curious how you got OpenNI2 working with the astra. Was that on linux? Do you have instructions for that?

Best,
Tom

Hi all,
I followed Tom’s steps and I’m getting an error calling make in the astra directory. cmake works fine.

[ 8%] Built target Shiny
[ 9%] === LPP ===
=== LPP processing directory: …/include ===

=== LPP processing directory: …/src ===

[ 9%] Built target ProxyPreprocessor
[ 10%] Built target astra_core_api
[ 11%] Building CXX object src/astra_core/CMakeFiles/astra_core.dir/astra_context.cpp.o
/home/allen/astra/src/astra_core/astra_context.cpp: In constructor ‘astra::context::context()’:
/home/allen/astra/src/astra_core/astra_context.cpp:27:19: error: ‘make_unique’ is not a member of ‘astra’
: impl_(astra::make_unique<context_impl>()),
^
/home/allen/astra/src/astra_core/astra_context.cpp:27:19: note: suggested alternative:
In file included from /home/allen/astra/src/astra_core/astra_cxx_compatibility.hpp:20:0,
from /home/allen/astra/src/astra_core/astra_context.cpp:20:
/home/allen/astra/src/astra_core/astra_cxx_make_unique.hpp:162:4: note: ‘std::make_unique’
make_unique(Args&&…) = delete;
^
/home/allen/astra/src/astra_core/astra_context.cpp:27:50: error: expected primary-expression before ‘>’ token
: impl_(astra::make_unique<context_impl>()),
^
/home/allen/astra/src/astra_core/astra_context.cpp:27:52: error: expected primary-expression before ‘)’ token
: impl_(astra::make_unique<context_impl>()),
^
make[2]: *** [src/astra_core/CMakeFiles/astra_core.dir/astra_context.cpp.o] Error 1
make[1]: *** [src/astra_core/CMakeFiles/astra_core.dir/all] Error 2
make: *** [all] Error 2

Hi Tom,

yes we used OpenNI2 under Ubuntu 14.04 LTS. So far we have some ROS Node publishing a point cloud. As we have an Astra S Pro, it is not possible to register the color image with the depth image in one stream, therefore we have only depth information in the point cloud.

Specific instructions where unnecessary, as the tools came already compiled for 64bit Linux.

Our repo is: cnc-msldriver/msl_astra_pro_driver at master · dasys-lab/cnc-msldriver · GitHub

Greetings,
Stephan

HI Allen,

your error probably exists, because you don’t have a compiler that supports c++14. Try to install gcc 5.X. This is possible with Toms instructions, but increase the version numbers of gcc.

Greetings,
Stephan