Я долго ждал мобильное устройство, которое способно было бы получать от сенсора Kinect версии 2.0 (XBox One) данные. Для этого устройству необходим порт USB 3.0. Наконец, я нашёл такую плату. Ребята собрали денег на Kickstarter’е и начали продажу по предзаказам. Заказал я её в мае, получил в сентябре. Сначала поставки откладывались. Затем почтовая компания TNT заявила, что я должен лично заняться растаможкой и сертификацией устройства. Но после долгих переговоров выдала мне вердикт, что они вообще не могут ввезти товар в Россию, так как на него отсутствует нотификация. Дополнительным подарком была новость о том, что ребята из UP-shop’а отправили вообще не ту плату (с двумя Гб оперативки вместо четырёх). Так что, даже к лучшему, что я не получил её. Выслали замену FedEx’ом, и тут проблем не возникло. Теперь буду внимателен и откажусь от услуг TNT заранее.

Вместополноценного USB 3.0 выхода на плате присутствует только micro-usb B разъём (не знаю ,с чем это связано). Следовательно пришлось использовать переходник для подключения. Причём, RealSense отказался работать с ним в отличие от Kinect. Итак, приступим. Для корректной работы библиотеки в режиме CL нам необходимо скомпилировать свежую версию Beignet 1.2. Нам потребуется VA-API: LIBVA Video Acceleration API
1 |
sudo apt-get install automake autoconf libtool #git clone https://cgit.freedesktop.org/libva/ git clone https://github.com/01org/libva cd libva ./autogen.sh CFLAGS='-O2' CXXFLAGS='-O2' --prefix=/usr --enable-wayland=0 #prefix usr otherwise you get "fatal error": "va/va_x11.h" on vaapi compile make sudo make install |
Также потребуется Intel driver for LIBVA
1 |
#git clone https://cgit.freedesktop.org/vaapi/intel-driver git clone https://github.com/01org/intel-vaapi-driver cd intel-vaapi-driver ./autogen.sh CFLAGS='-O2' CXXFLAGS='-O2' --prefix=/usr --enable-wayland=0 make sudo make install |
К сожалению придётся скомпилировать виртуальную машину Low Level Virtual Machine (LLVM) — compiler front-end for the C family of languages (C, C++, Objective-C, and Objective-C++) which is built as part of the LLVM compiler infrastructure project. Компилировать его нужно в паре с соответствующим Clang. В документации Beignet указано, что необходим компилятор 3.6 — 3.8. Я честно попробовал их все. Но положительного результата добился только с версией 3.6. Поэтому настоятельно рекомендую остановиться на ней. Качаем с github Clang and LLVM:
1 |
git clone -b release_36 https://github.com/llvm-mirror/llvm.git cd ~/llvm-release_36/tools git clone -b release_36 https://github.com/llvm-mirror/clang.git mkdir ~/llvm/build cd ~/llvm/build ./../configure make -j 4 sudo make install |
LIBDRM — cross-driver middleware which allows user-space applications (such as Mesa and 2D drivers) to communicate with the Kernel by the means of the DRI protocol.
1 |
sudo apt-get install libpthread-stubs0-dev libpciaccess-dev wget http://dri.freedesktop.org/libdrm/libdrm-2.4.68.tar.gz tar -xvf libdrm-2.4.68.tar.gz cd ~/libdrm-2.4.68 ./configure make sudo make install |
Поставим также CMRT — C for Media Runtime. Media GPU kernel manager for Intel G45 & HD Graphics family
1 |
git clone https://github.com/01org/cmrt cd cmrt ./autogen.sh make sudo make install |
Кроме того нужно установить следующие библиотеки из репозитария:
1 |
sudo apt-get install libgegl-dev libx11-dev libgl1-mesa-dev sudo apt-get install libegl1-mesa-dev |
Теперь, наконец мы можем скомпилировать Beignet. Beignet 1.2 содержит код для компиляции OpenCL программ на Intel GPU.
1 2 3 4 5 6 |
sudo apt-get install ocl-icd-dev wget https://01.org/sites/default/files/beignet-1.2.0-source.tar.gz tar -xvf cd Beignet-1.2.0-Source mkdir build && cd build cmake ../ make sudo make install |
Кроме того поставим для компиляции freenect libusb 1.0.20 — библиотеку для доступа к USB устройствам.
1 2 3 4 5 6 |
sudo apt-get install libudev-dev wget http://download.sourceforge.net/project/libusb/libusb-1.0/libusb-1.0.20/libusb-1.0.20.tar.bz2 tar xfv libusb-1.0.20.tar.bz2 cd libusb-1.0.20 ./cofigure make sudo make install sudo ldconfig |
Нам потребуется библиотека GLFW для разработки приложений под OpenGL, OpenGL ES и Vulkan.
1 2 3 4 5 6 7 |
sudo apt-get install build-essential cmake cmake-curses-gui xorg-dev libglu1-mesa-dev libxinerama-dev libxcursor-dev wget https://github.com/glfw/glfw/archive/3.1.2.zip -O glfw-3.1.2.zip unzip glfw-3.1.2.zip cd glfw-3.1.2 mkdir build cd build cmake .. -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release make -j4 sudo make install export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH sudo reboot |
Наконец, можно приступить к установке LibFreenect2
1 2 3 4 5 6 7 8 9 |
sudo apt-get install libturbojpeg1-dev libglfw3-dev libjpeg-dev git clone https://github.com/OpenKinect/libfreenect2.git cd libfreenect2 mkdir build && cd build cmake .. make sudo make install #for access kinect wo sudo sudo cp ~/libfreenect2/platform/linux/udev/90-kinect2.rules /etc/udev/rules.d/ |
По окончании пробуем запустить тестовое приложение Libfreenect.