Skip to content
Snippets Groups Projects
Forked from Monado / WebPage
Loading
title: "Monado - Building Additional Dependencies"
layout: main
  • TOC {:toc}

Dependencies needed to build Monado's additional drivers

Preliminary notes:

These recipes have been checked on Ubuntu 22.04 LTS and Fedora 39.

Using the commands listed below, packages are installed in /usr/local. Fedora, by default, does not search libraries or package config files in /usr/local. You could adapt /etc/ld.so.conf, or change the commands to install in /usr, or, more simply, you can set two envvars in your .bashrc:

export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/local/lib64/pkgconfig

For the OpenHMD driver

git clone https://github.com/OpenHMD/OpenHMD.git
cd OpenHMD
cmake -G Ninja -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_SHARED_LIBS=ON
ninja -C build
sudo ninja -C build install

For the libsurvive driver

Some other dependencies are needed.

  • On Debian/Ubuntu:
    sudo apt install libopenblas-dev liblapacke-dev libopenvr-dev
  • On Fedora:
    sudo dnf install openblas-devel lapack-devel openvr-devel

Then, libsurvive can be built and installed:

git clone https://github.com/cntools/libsurvive.git
cd libsurvive
cmake -G Ninja -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local
ninja -C build
sudo ninja -C build install

For the Realsense driver

  • On Debian/Ubuntu:

curl -sSf https://librealsense.intel.com/Debian/librealsense.pgp | sudo tee /etc/apt/keyrings/librealsense.pgp > /dev/null echo "deb [signed-by=/etc/apt/keyrings/librealsense.pgp] https://librealsense.intel.com/Debian/apt-repo lsb_release -cs main" |
sudo tee /etc/apt/sources.list.d/librealsense.list sudo apt update sudo apt install librealsense2-dkms sudo apt install librealsense2-dev

* On Fedora:
  ```sh
  sudo dnf install librealsense-devel

For the DepthAI driver

git clone --recurse-submodules https://github.com/luxonis/depthai-core.git
cd depthai-core
cmake -G Ninja -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_SHARED_LIBS=ON
ninja -C build
sudo ninja -C build install

For SLAM tracking support, using Basalt

Some other dependencies are needed.

  • On Debian/Ubuntu:
    sudo apt install libtbb-dev libglew-dev libpng-dev liblz4-dev libbz2-dev libboost-dev libboost-regex-dev libboost-filesystem-dev libboost-date-time-dev libboost-program-options-dev libboost-serialization-dev libgtest-dev libfmt-dev libuvc-dev
  • On Fedora:
    sudo dnf install tbb-devel glew-devel libpng-devel lz4-devel bzip2-devel boost-devel boost-regex boost-filesystem boost-date-time boost-program-options boost-serialization gtest-devel fmt-devel libuvc-devel

Then, Basalt can be built and installed:

git clone --recurse-submodules https://gitlab.freedesktop.org/mateosss/basalt
cd basalt
cmake -G Ninja -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local
ninja -C build
sudo ninja -C build install

If you get fatal error: Killed signal terminated program cc1plus during the compilation, it could be due to memory exhaustion if too many compilation jobs are running in parallel. Using ninja -j 1 -C build to run one single compilation job should solve that issue.

Note for Fedora: Pangolin (in the included version) fails to compile with GCC 13, due to missing inclusions of <cstdint> (see https://www.gnu.org/software/gcc/gcc-13/porting_to.html, Header dependency changes).
You need to add #include <cstdint> near the other inclusions in:

  • thirdparty/Pangolin/src/image/image_io_jpg.cpp
  • thirdparty/Pangolin/include/pangolin/log/packetstream_tags.h

For 'Mercury' Hand Tracking, using the ONNX Runtime

Note for Ubuntu: ONNXRuntime needs a recent cmake (at least version 3.26), which is not available on Ubuntu 22.04. If you want to use the handtracking driver, then you'll have to update cmake using the Kitware's APT repository:

wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null
echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ jammy main' | sudo tee /etc/apt/sources.list.d/kitware.list >/dev/null
sudo apt update
sudo apt upgrade cmake

Some other dependencies are needed.

  • On Debian/Ubuntu:
    sudo apt install libgmock-dev
  • On Fedora:
    sudo dnf install gmock-devel

Then, onnxruntime can be built and installed:

git clone --recurse-submodules https://github.com/Microsoft/onnxruntime.git
cd onnxruntime
./build.sh --config Release --build_shared_lib --parallel --skip_tests --compile_no_warning_as_error --cmake_extra_defines CMAKE_INSTALL_PREFIX=/usr/local --cmake_extra_defines onnxruntime_BUILD_UNIT_TESTS=OFF
cd build/Linux/Release
sudo make install

For the UltraLeap v5 driver

  • On Debian/Ubuntu:

    wget -qO - https://repo.ultraleap.com/keys/apt/gpg | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/ultraleap.gpg > /dev/null
    echo 'deb [arch=amd64] https://repo.ultraleap.com/apt stable main' | sudo tee /etc/apt/sources.list.d/ultraleap.list > /dev/null
    sudo apt update
    sudo apt install ultraleap-hand-tracking
  • On Fedora:

    The Ultraleap v5 driver is not available for Fedora.

To use Tracy as a tracing backend

Some other dependencies are needed.

  • On Debian/Ubuntu:

    sudo apt install libglfw3-dev libfreetype-dev libcapstone-dev libdbus-1-dev
  • On Fedora:

    sudo dnf install glfw-devel freetype-devel capstone-devel dbus-devel

Then, tracy can be built:

Note: Currently (as of 03/21/2024), Monado uses the Tracy protocol version 63 (see src/external/tracy/common/TracyProtocol.hpp), which needs Tracy version 0.9.0 or 0.9.1

git clone https://github.com/wolfpld/tracy.git
cd tracy
git checkout v0.9.1
cd profiler/build/unix
make LEGACY=1

This produces Tracy-release which can be copied in /usr/local/bin/ for instance.

Note: Monado needs to be built with tracing support:

cmake .... -DXRT_HAVE_TRACY=ON -DXRT_FEATURE_TRACING=ON