每个人遇见的情况各有不同,谨以此本文为后者做一个参考
红字部分注意看,有可能会出现问题,建议多参考几篇博客
其他写的好的博客:
https://blog.csdn.net/qq_34622997/article/details/85262344
https://www.it610.com/article/1294694792403427328.htm
https://blog.csdn.net/weixin_38437404/article/details/86661545
首先需要搭建环境:
安装cuda:
cuda版本一般要求大于等于7.5,安装cuda时注意内核版本,不能过高(下面文章有详细说明)
https://blog.csdn.net/qq_40178878/article/details/108117216
安装依赖项:
openjdk-8-jdk有可能自己的电脑存在不同的版本,比如openjdk-6-jdk,openjdk-7-jdk等,能装哪个就装哪个
sudo apt-get install -y cmake-qt-gui git build-essential libusb-1.0-0-dev libudev-dev openjdk-8-jdk freeglut3-dev libglew-dev libsuitesparse-dev libeigen3-dev zlib1g-dev libjpeg-dev python-vtk libvtk-java
安装OpenNI2:
git clone https://github.com/occipital/OpenNI2
cd OpenNI2
make -j8
sudo make install
sudo ldconfig
sudo ldconfig出现xxx不是符号链接的问题
命令:sudo ln -sf /usr/local/cuda-8.0/lib64/libcudnn.so.5.0.5 /usr/local/cuda-8.0/lib64/libcudnn.so.5
注意检查自己是否安装成功:pkg-config --modversion libopenni2
查询并安装对应的gcc、g++版本,两个版本一定要一致,不然后面会报错:
gcc与g++版本推荐 4.9x 版本,4.9x测试成功
查询版本:gcc -v 或者 gcc --version 、g++ -v 或者 g++ --version
降低升级版本可参考:https://blog.csdn.net/u014696921/article/details/73770887
安装Pangolingit clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build && cd build
cmake ..
make -j8
sudo make install
sudo ldconfig
安装cmake,参考别人的说是需要3.2版本的,至于是3.2以上都行还是只是3.2我也不知道,你自己看着办(滑稽)
先看看自己的版本:cmake --version
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 -------很好,出问题了
在执行下面的upgrade时注意别把内核升级了,在看见update-initramfs: Generating /boot/initrd.img-4.15.0-115-generic
赶快 CTRL+C ,有可能升级后会出现问题,因为之前安装cuda时是4.10版本
解决报错 sudo apt-get upgrade
最后编译ElasticFusion:这里对错误不进行说明,文章最后对错误进行汇总,出现错误到最后进行查询
下载:git clone https://github.com/mp3guy/ElasticFusion.git
Core编译:
进入Core目录:cd ElasticFusion/Core
创建并进入build:mkdir build && cd build
编译与安装:cmake ../src
make
sudo make install
创建动态文件链接:sudo ldconfig
GPUTest编译:
cd ../../GPUTest
mkdir build && cd build
cmake ../src
make
sudo ldconfig
测试自己的GPU:
./GPUTest ../
输出:
将icpStepMap xxx、rgbStepMapxxx、rgbResMapxxx、so3StepMapxxx对应的四行复制到/Core/src/Utils/GPUConfig.h
复制完成后按照上面的语句重新编译Core和GPUTest
GUI编译:
cd ../../GUI
mkdir build && cd build
cmake ../src
make
sudo make install
sudo ldconfig
运行数据集:
进入~/GUI/build,会出现一个ElasticFusion,将下载好的数据集放在相同目录下面
数据下载链接:http://www.doc.ic.ac.uk/~sleutene/datasets/elasticfusion/dyson_lab.klg
直接运行 ./ElasticFusion -l dyson_lab.klg
最后错误汇总,请自行查询,每个人的问题可能不一样,解决方式也不相同,谨以此作为参考:
(1)sudo ldconfig 出现不是符号连接问题
(2)编译ElasticFusion出现 Makefile:127: recipe for target 'all' failed
可能是gcc与g++版本不一样的问题,安装一样的版本就好(参考上面的安装)
(3)编译GPUTest出现 No rule to make target install
这个问题可忽略,这个只是测试你的GPU的,没有实质的东西
(4)最后运行数据集出现问题:Error: invalid texture reference: /home/nvidia/ElasticFusion/Core/src/Cuda/convenience.cuh:68
这个问题应该跟cuda有关,
解决方式1:在 cmake 编译的时候在 Core/build 目录下,而不是在 Core/src/build 下编译好再把 build 复制过去,
利用 cmake ../src 即可,GPUTest和GUI同理
解决方式2:参考https://blog.csdn.net/qq_27057925/article/details/105418594
解决方式3:动态连接文件的问题,每一步编译都需运行:
sudo make install
sudo ldconfig
(5)运行ElasticFusion时出现警告:Your GPU ‘’ ‘’ isn't in the ICP Step performance database, please add it
因为GPUConfig.h没有包含你的GPU配置,需要测试你的GPU并添加进去,见上面的GPUTest部分