ヴェズルフェルニルの研究ノート

座右の銘「ただ一人犀の角のように歩め」的な研究活動ノート

stella_vslamのUbuntu 22.04でのビルド

前記事にstella_vslamのUbuntu 20.04でのビルド手順を書いたが、Ubutu 22.04でのビルドもやってみた。

blog.ketus-ix.work

Ubuntu 20.04の場合との相違点は一点だけなので、それを以下に書いておく。

stella_vslamのビルド依存パッケージの導入

OpenCVの依存パッケージ

$ sudo apt install -y libgtk-3-dev ffmpeg libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libtbb-dev

libavresample-devを削除した。このパッケージはUbuntu 22.04では利用できなくなっている。

stella_vslamとリンクされるライブラリのビルドとインストール

OpenCV

$ cd Depended_Builds
$ wget -q https://github.com/opencv/opencv/archive/4.8.0.zip
$ unzip -q 4.8.0.zip
# Download aruco module (optional)
$ wget -q https://github.com/opencv/opencv_contrib/archive/refs/tags/4.8.0.zip -O opencv_contrib-4.8.0.zip
$ unzip -q opencv_contrib-4.8.0.zip
$ mkdir opencv_extra && cd opencv_extra
$ ln -s ../opencv_contrib-4.8.0/modules/aruco .
$ cd ../opencv-4.8.0
$ mkdir build && cd build
$ cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr/local \
    -DBUILD_DOCS=OFF \
    -DBUILD_EXAMPLES=OFF \
    -DBUILD_JASPER=OFF \
    -DBUILD_OPENEXR=OFF \
    -DBUILD_PERF_TESTS=OFF \
    -DBUILD_TESTS=OFF \
    -DBUILD_PROTOBUF=OFF \
    -DBUILD_opencv_apps=OFF \
    -DBUILD_opencv_dnn=OFF \
    -DBUILD_opencv_ml=OFF \
    -DBUILD_opencv_python_bindings_generator=OFF \
    -DENABLE_CXX11=ON \
    -DENABLE_FAST_MATH=ON \
    -DWITH_EIGEN=ON \
    -DWITH_FFMPEG=ON \
    -DWITH_TBB=ON \
    -DWITH_OPENMP=ON \
    -DOPENCV_EXTRA_MODULES_PATH=../../opencv_extra \
    ..
$ make -j4
$ sudo make install
$ sudo ldconfig

本記事執筆時点で最新バージョンのOpenCV 4.8.0で試してみた。こちらでもstella_vslamは問題なく動くことが確認できた。

なお、NVIDIA GPU搭載PCでCUDAが導入済みの場合、CUDA利用を有効にしてOpenCVをビルドすると、stella_vslamの実行速度が速くなる。以下にその方法を紹介しておく。

CUDA有効OpenCVのビルド(stella_vslam用)

gccのバージョンを確認して、バージョン10より大きければ、 gcc 10をインストールする。

$ gcc --version
gcc (Ubuntu 11.3.0-1ubuntu1~22.04.1) 11.3.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ sudo apt install -y gcc-10 g++-10

OpenCVのcmakeオプションを下のように変える。

$ mkdir build2 && cd build2
$ cmake \
    -DCMAKE_C_COMPILER=/usr/bin/gcc-10 \
    -DCMAKE_CXX_COMPILER=/usr/bin/g++-10 \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr/local \
    -DBUILD_DOCS=OFF \
    -DBUILD_EXAMPLES=OFF \
    -DBUILD_JASPER=OFF \
    -DBUILD_OPENEXR=OFF \
    -DBUILD_PERF_TESTS=OFF \
    -DBUILD_TESTS=OFF \
    -DBUILD_PROTOBUF=OFF \
    -DBUILD_opencv_apps=OFF \
    -DBUILD_opencv_dnn=OFF \
    -DBUILD_opencv_ml=OFF \
    -DBUILD_opencv_python_bindings_generator=OFF \
    -DENABLE_CXX11=ON \
    -DENABLE_FAST_MATH=ON \
    -DWITH_EIGEN=ON \
    -DWITH_FFMPEG=ON \
    -DWITH_TBB=ON \
    -DWITH_OPENMP=ON \
    -DWITH_CUDA=ON \
    -DWITH_NVCUID=ON \
    -DWITH_CUBLAS=ON \
    -DWITH_OPENCL=OFF \
    -DWITH_OPENGL=ON \
    -DCUDA_ARCH_BIN="8.6" \
    -DCUDA_ARCH_PTX="" \
    -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.8.0/modules \
    ..
$ make -j4

オプションCUDA_ARCH_BINに指定する数値はGPUアーキテクチャ番号だが、これは下のサイトを参照して決める。

developer.nvidia.com

上記はあくまでOpenCV 4.8.0をUbuntu 22.04上でビルドする場合なので、他では違ってくるかもしれない。

【追記】〔2023-08-21〕

OpenCVのCUDA利用を有効にする場合、g2oも以下のように変更してビルドすることを薦める。

$ mkdir build2 && cd build2
$ cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr/local \
    -DBUILD_SHARED_LIBS=ON \
    -DBUILD_UNITTESTS=OFF \
    -DG2O_USE_CHOLMOD=OFF \
    -DG2O_USE_CSPARSE=ON \
    -DG2O_USE_OPENGL=ON \
    -DG2O_USE_OPENMP=ON \
    -DG2O_BUILD_APPS=OFF \
    -DG2O_BUILD_EXAMPLES=OFF \
    -DG2O_BUILD_LINKED_APPS=OFF \
    ..
$ make -j4