前記事にstella_vslamのUbuntu 20.04でのビルド手順を書いたが、Ubutu 22.04でのビルドもやってみた。
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のアーキテクチャ番号だが、これは下のサイトを参照して決める。
上記はあくまで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