ElasticFusion
系统环境 Ubuntu16.04+CUDA8.0+Opencv2.14+RTX3080
流程
依赖包
sudo apt-get install cmake cmake-qt-gui git build-essential libusb-1.0-0-dev libudev-dev
sudo apt-get install freeglut3-dev libglew-dev libsuitesparse-dev libeigen3-dev
sudo apt-get install zlib1g-dev libjpeg-dev doxygen graphviz
openjdk-7-jdk
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-7-jdk
OpenGL
sudo apt-get install build-essential libgl1-mesa-dev
sudo apt-get install freeglut3-dev
sudo apt-get install libglew-dev libsdl2-dev libsdl2-image-dev libglm-dev libfreetype6-dev
下载代码
https://github.com/mp3guy/ElasticFusion
cd ElasticFusion
注意:下面都放在ElasticFusion文件夹中
安装Pangolin
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build && cd build
cmake ../ -DAVFORMAT_INCLUDE_DIR="" -DCPP11_NO_BOOST=ON
make -j4
cd ../..
安装OpenNI2
git clone https://github.com/occipital/OpenNI2.git
cd OpenNI2
make -j4
cd ..
Build
-
build Core
cd ElasticFusion-master/Core mkdir build && cd build cmake ../src make -j4 cd ../../
-
build GPUTest
cd GPUTest mkdir build && cd build cmake ../src make -j4 cd ../../
-
build GUI
cd GUI mkdir build && cd build cmake ../src make -j4 cd ../../
Run
在数据集中运行
下载数据集
http://www.doc.ic.ac.uk/~sleutene/datasets/elasticfusion/dyson_lab.klg
放到ElasticFuison/GUI/build中,并运行
./ElasticFusion -l dyson_lab.klg
出现的问题
- 显卡驱动问题
GLSL Shader compilation failed: /home/thx/ElasticFusion/Core/src/Shaders/copy_unstable.geom:
0:19(10): error: GLSL 3.30 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.00 ES, and 3.00 ES
OpenGL Error 500: GL_INVALID_ENUM: An unacceptable value is specified for an enumerated argument.
In: /usr/local/include/pangolin/gl/gl.hpp, line 205
OpenGL Error 501: GL_INVALID_VALUE: A numeric argument is out of range.
In: /usr/local/include/pangolin/gl/gl.hpp, line 205
Segmentation fault (core dumped)
Solution:重装显卡驱动
在安装显卡时,不要加-no-opengl-files
2.修改cmakelist
thx@thx-MS-7B96:~/ElasticFusion/GUI/build$ ./ElasticFusion -l dyson_lab.klg
Error: invalid texture reference: /home/thx/ElasticFusion/Core/src/Cuda/convenience.cuh:68
在Core/src/Cmakelists.txt文件中,把第33行
set(CUDA_ARCH_PTX “” CACHE STRING “Specify ‘virtual’ PTX arch to build PTX intermediate code for. Example: 1.0 1.2 or 10 12”)
//改为
set(CUDA_ARCH_PTX “61” CACHE STRING “Specify ‘virtual’ PTX arch to build PTX intermediate code for. Example: 1.0 1.2 or 10 12”)
3.修改Pangolin
把glDrawFrustum改为glDrawFrustrum
修改GPUConfig.h
出现
在ElasticFusion/GPUtest/build文件夹中运行
./GPUTest ../
把最后四行添加到/ElasticFusion/Core/src/Utils/GPUConfig.h
使用KinectV1相机实时运行
-
build libFreenect
cd ElasticFusion git clone https://github.com/OpenKinect/libfreenect cd libfreenect
打开CmakeLists.txt,在cmake_minimum_required(VERSION 2.8.12)下添加
add_definitions(-std=c++11)
保存后关闭
mkdir build && cd build cmake .. -DBUILD_OPENNI2_DRIVER=ON make -j4 cp -L lib/OpenNI2-FreenectDriver/libFreenectDriver.so ${OPENNI2_DIR}/Bin/x64-Release/OpenNI2/Drivers #OPENNI2_DIR需要修改
其中的OPENNI2_DIR是需要自己修改的,就是在ElasticFusion中的OPENNI2的完整路径
-
接入Kinect V1
cd .. sudo cp platform/linux/udev/51-kinect.rules /etc/udev/rules.d
重启电脑
查看lsusb,如果有XBOX camera,XBOX motor,XBOX audio就成功了
-
运行
在/ElasticFuison/GUI/build中
./ElasticFuison