Software to stream persee depth data over network


For a project, I’ve built a simple depth image streamer. Basically it allows to stream the depth data from the orbbec persee ubuntu image to any device in the same network. The stream is slightly compressed to allow fast enough data rates of 30 fps. I thought I’d share this in case somebody else needs this functionality.

It is built with c++ and requires boost.asio, opencv and pcl (only on the clients). Tested on persee with ubuntu 16.04 and arch linux.


Hi underdoeg,

I just received my new Persee yesterday and would like to tried out the program that you have written. I am not familiar with building C++ in Linux environment. Can you help to provide some guidance on how you setup your development environment, so that I can do the same, then compile the code and run it in the Persee.


the software is a little bit of a mess ATM. but it should work if you flash your persee with ubuntu, then install opencv3. then run these commands:

mkdir build
cd build
cmake …
make -j2

Hi Underdog

Your idea is very very interesting. But i have tried many time to install it and got stoked at 58% of ccompile time all the time with the following messages wich i am not able to fix

[ 58%] Built target openni2-net-stream-server
In file included from /home/ubuntu/persee-depth-image-server-master/client/openni2-net-client.cpp:12:0:
/home/ubuntu/persee-depth-image-server-master/client/openni2-net-client.h:42:7: error: ‘atomic_int64_t’ in namespace ‘std’ does not name a type
std::atomic_int64_t fps;
/home/ubuntu/persee-depth-image-server-master/client/openni2-net-client.cpp: In lambda function:
/home/ubuntu/persee-depth-image-server-master/client/openni2-net-client.cpp:80:3: error: ‘condition_variable’ is not a member of ‘std’
std::condition_variable cv;
/home/ubuntu/persee-depth-image-server-master/client/openni2-net-client.cpp:300:5: error: ‘fps’ was not declared in this scope
fps = (1.f / elapsed.count()) * 1000;
/home/ubuntu/persee-depth-image-server-master/client/openni2-net-client.cpp: In member function ‘float OpenNI2NetClient::getFps()’:
/home/ubuntu/persee-depth-image-server-master/client/openni2-net-client.cpp:318:9: error: ‘fps’ was not declared in this scope
return fps / 1000.f;
CMakeFiles/openni2-net-stream-client.dir/build.make:62: recipe for target ‘CMakeFiles/openni2-net-stream-client.dir/client/openni2-net-client.cpp.o’ failed
make[2]: *** [CMakeFiles/openni2-net-stream-client.dir/client/openni2-net-client.cpp.o] Error 1
CMakeFiles/Makefile2:180: recipe for target ‘CMakeFiles/openni2-net-stream-client.dir/all’ failed
make[1]: *** [CMakeFiles/openni2-net-stream-client.dir/all] Error 2
Makefile:127: recipe for target ‘all’ failed
make: *** [all] Error 2

**** I hope you will be able to help FG

It looks like you have an old compiler. What system is this? Is there any way you can update gcc or clang?

Hi Underdoeg, do you have any experience of using opencv inside persee? I’m trying to use but the inbuilt library for nuitrack is producing conflict. I’m using Nuitrack inside Persee (Ubuntu) because Astra SDK is not compatible, OpenNi doesn’t provide body tracking data.