Jetson Nano 2GBにCOLMAPをインストールした時のメモになります。
はじめに
Jetson Nano 2GBにCOLMAPをインストールした時のメモになります。
COLMAPの公式ドキュメントに沿ってインストール作業を実施したところ、COLMAPのビルドでエラーが発生しました。UbuntuリポジトリからインストールしたQt5に問題があるようだったので、Qt5をソースからビルドしてインストールしたところ、COLMAPのビルドも成功しました。
Qt5をリポジトリからインストールした時のCOLMAPのビルドエラーは「COLMAPのビルドで発生したエラー」に記載しています。
環境
- Jetson Nano 2GB
- OS:Ubuntu 18.04.5 LTS(jetson-nano-2gb-jp441-sd-card-image)
- COLMAP:3.7
- Qt5:5.12.11
- Ceres Solver:2.0.0
COLMAPインストール
パッケージのインストール
sudo apt -y install \ git \ cmake \ build-essential \ libboost-program-options-dev \ libboost-filesystem-dev \ libboost-graph-dev \ libboost-regex-dev \ libboost-system-dev \ libboost-test-dev \ libeigen3-dev \ libsuitesparse-dev \ libfreeimage-dev \ libgoogle-glog-dev \ libgflags-dev \ libglew-dev \ libcgal-dev
Ceres Solverのビルドとインストール
sudo apt-get install libatlas-base-dev libsuitesparse-dev git clone https://ceres-solver.googlesource.com/ceres-solver cd ceres-solver git checkout $(git describe --tags) # Checkout the latest release mkdir build cd build cmake .. -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF make -j4 sudo make install
Qt5のビルドとインストール
ソースからQt5を導入します。
<参考手順>
- Building Qt 5 from Git
https://wiki.qt.io/Building_Qt_5_from_Git - Qt for X11 Requirements
https://doc.qt.io/qt-5/linux-requirements.html
パッケージのインストール
sudo vi /etc/apt/sources.list →「#deb-src」のコメントアウトを解除 sudo apt update sudo apt-get -y build-dep qt5-default sudo apt-get -y install libxcb-xinerama0-dev sudo apt-get -y install build-essential perl python git sudo apt-get -y install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev sudo apt-get -y install libxcursor-dev libxcomposite-dev libxdamage-dev libxrandr-dev libxtst-dev libxss-dev libdbus-1-dev libevent-dev libfontconfig1-dev libcap-dev libpulse-dev libudev-dev libpci-dev libnss3-dev libasound2-dev libegl1-mesa-dev gperf bison nodejs sudo apt-get -y install libasound2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer-plugins-bad1.0-dev sudo apt -y install libclang-6.0-dev llvm-6.0
ビルド実施
git clone git://git.qt-users.jp/mirror/qt/qt5.git --branch 5.12 cd qt5 ./init-repository --module-subset=qtbase,qtdeclarative,qt3d mkdir build cd build ../configure -opensource -confirm-license make -j4 sudo make install
ライブラリにパスを通す
cd /etc/ld.so.conf.d echo "/usr/local/Qt-5.12.11/lib" | sudo tee -a Qt-5.12.11.conf sudo ldconfig -v
COLMAPのビルドとインストール
cmakeの「-D」オプションで「CMAKE_PREFIX_PATH」にQt5のパスを渡します。
git clone https://github.com/colmap/colmap.git cd colmap git checkout dev mkdir build cd build cmake -DCMAKE_PREFIX_PATH=/usr/local/Qt-5.12.11 .. make -j4 sudo make install
動作確認
CUIの場合
colmap -h COLMAP 3.7 -- Structure-from-Motion and Multi-View Stereo (Commit ec6c2aa on 2020-12-22 with CUDA) Usage: colmap [command] [options] ...
COLMAPのビルドで発生したエラー
Qt5をUbuntuのリポジトリからインストールした際に発生したCOLMAPのビルドエラーは以下になります。クラス「QOpenGLFunctions_3_2_Core」が見つからないというエラーみたいです。
[ 78%] Building CXX object src/CMakeFiles/colmap.dir/ui/automatic_reconstruction_widget.cc.o In file included from /home/test/colmap/src/ui/main_window.h:50:0, from /home/test/colmap/src/ui/automatic_reconstruction_widget.cc:34: /home/test/colmap/src/ui/model_viewer_widget.h:55:63: error: expected class-name before ‘{’ token protected QOpenGLFunctions_3_2_Core { ^ In file included from /home/test/colmap/src/ui/main_window.h:50:0, from /home/test/colmap/src/ui/bundle_adjustment_widget.cc:35: /home/test/colmap/src/ui/model_viewer_widget.h:55:63: error: expected class-name before ‘{’ token protected QOpenGLFunctions_3_2_Core { ^ src/CMakeFiles/colmap.dir/build.make:1718: recipe for target 'src/CMakeFiles/colmap.dir/ui/automatic_reconstruction_widget.cc.o' failed make[2]: *** [src/CMakeFiles/colmap.dir/ui/automatic_reconstruction_widget.cc.o] Error 1 make[2]: *** Waiting for unfinished jobs.... src/CMakeFiles/colmap.dir/build.make:1742: recipe for target 'src/CMakeFiles/colmap.dir/ui/bundle_adjustment_widget.cc.o' failed make[2]: *** [src/CMakeFiles/colmap.dir/ui/bundle_adjustment_widget.cc.o] Error 1 CMakeFiles/Makefile2:1009: recipe for target 'src/CMakeFiles/colmap.dir/all' failed make[1]: *** [src/CMakeFiles/colmap.dir/all] Error 2 Makefile:129: recipe for target 'all' failed make: *** [all] Error 2
確認した感じだと以下のファイルに問題がありそうでした。