编译ElasticFusion过程(Ubuntu14.04)

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以来遇到的各种问题以及解决办法,其中走了很多弯路,经过了很多次的尝试,还好终于成功了,在此记录下来,希望可以帮助到有需要的人。如果有什么问题,欢迎大家在我的博客下留言,我看到的话会及时做出解答。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章