Ubuntu14.04安裝編譯ElasticFusion過程
環境(Ubuntu14.04+cuda7.5+GTX 1070)
目前只是在數據集上進行了編譯,之後我會在後面的博客中介紹採用傳感器進行真實場景的三維重建過程。
1、首先是安裝各種依賴庫
sudo apt-get install cmake-qt-gui
sudo apt-get install git
sudo apt-get install build-essential
sudo apt-get install libusb-1.0-0-dev
sudo apt-get install libudev-dev
sudo apt-get install openjdk-7-jdk
sudo apt-get install freeglut3-dev
sudo apt-get install python-vtk
sudo apt-get install libvtk-java
sudo apt-get install libglew-dev
sudo apt-get install libsuitesparse-dev
sudo apt-get install libeigen3-dev
sudo apt-get install zlib1g-dev
sudo apt-get install libjpeg-dev
2、安裝OpenNI2
這個很好安裝,應該沒有什麼問題
git clone https://github.com/occipital/OpenNI2
cd OpenNI2
make -j8
sudo make install
sudo ldconfig
3、安裝Pangolin
(這一步折騰了兩天,走了好多彎路,心疼自己)
首先,要注意新版的Pangolin需要的gcc g++版本必須是5.x,否則最後一步編譯會出現各種錯誤,但是ElasticFusion編譯gcc g++版本最高不能超過4.8,所以先升級gcc g++到5.x,Pangolin編譯成功後,再將gcc g++降級到4.8,就ok啦
編譯就是cmake ,然後在make啦。在編譯Pangolin之前還應該安裝依賴libglew-dev,我們第一步就已經安裝過了。
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake ..
make -j8
這樣Pangolin就已經編譯成功了。
4、安裝cmake
ElasticFusion需要的cmake版本是3.2
sudo apt-get install build-essential
wget http://www.cmake.org/files/v3.2/cmake-3.2.2.tar.gz
tar xf cmake-3.2.2.tar.gz
cd cmake-3.2.2
./configure
make
sudo make install
錯誤:安裝完成後,cmake --version查看cmake的版本,出現段錯誤。
解決:
sudo apt-get remove cmake cmake-data
sudo -E add-apt-repository -y ppa:george-edison55/cmake-3.x
sudo -E apt-get update
sudo apt-get install cmake
再檢查cmake --version,出現cmake version 3.2.2就表示cmake-3.2安裝ok啦。
5、ElasticFusion的編譯
首先,需要下載ElasticFusion的源碼,接下來,進行三個部分的編譯:Core 、GPUTest和GUI.
5.1編譯Core
cd ElasticFusion
cd Core
cd src
mkdir build
cd build
cmake ..
make -j8
sudo make install
sudo ldconfig
(1)make -j8的時候會出現錯誤:nvcc fatal: unsupported ......'compute_61'
有兩種解決辦法:
方法一:修改~/ElaticFusion/Core/Src/build中的CMakeCache.txt,將CUDA_ARCH_BIN對應的Value改成30 35 50 52,再點擊Generate使之生效
方法二:修改~/ElaticFusion/Core/Src中的CMakeLists.txt中大約32行 set(CUDA_ARCH_BIN "30 35 50 52 61" CACHE STRING "Specify 'real' GPU arch to build binaries for, BIN(PTX) format is supported. Example: 1.3 2.1(1.3) or 13 21(13)") 註釋掉;或者刪除61。
(2)注意:不要忘記sudo make install 和 sudo ldconfig兩句指令來找到動態鏈接庫,否則最後跑數據集的時候會出錯:
error: invalid texture reference:~/ElasticFusion/Core/src/cuda/convenience.cuh:68
最後,編譯成功後將src中的build文件夾複製到與src同一目錄下,這樣GPUTest才能編譯通過。
5.2編譯GPUTest
編譯Core成功後,再編譯GPUTest就很容易了。
cd ElasticFusion
cd GPUTest
cd src
mkdir build
cd build
cmake ..
make -j8
sudo make install
sudo ldconfig
5.3編譯GUI
cd ElasticFusion
cd GUI
cd src
mkdir build
cd build
cmake ..
make -j8
sudo make install
sudo ldconfig
這一步中cmake ..後可能會出現libOpenNI2.so in /usr/lib may be hidden by files in ~/OpenNI2/Bin/x64-Release,但是並沒有影響之後的make 。
可能在make -j8這一步出現錯誤error: 'glDrawFrustum' is not a member of 'Pangolin'
解決方法:將~/ElasticFusion/GUI/src/Tools/GUI.h中,
大約247行的'pangolin::glDrawFrustum' 改成'pangolin::glDrawFrustrum'
GUI編譯成功後,在build文件夾中會產生ElasticFusion的可執行文件。
6. 運行數據集
接下來,就可以下載數據集了dyson_lab.klg,數據集下載完成後,與ElasticFusion的可執行文件放在同一個目錄下,也就是~/ElasticFusion/GUI/build
cd ~/ElasticFusion
cd GUI
cd build
./ElasticFusion -l dyson_lab.klg
結果如圖所示
以上就是調試ElasticFusion以來遇到的各種問題以及解決辦法,其中走了很多彎路,經過了很多次的嘗試,還好終於成功了,在此記錄下來,希望可以幫助到有需要的人。如果有什麼問題,歡迎大家在我的博客下留言,我看到的話會及時做出解答。