ElasticFusion在ubuntu16.04+cuda8.0上的实现

一、驱动与cuda安装

#安装驱动与cuda8.0
参考这篇:https://blog.csdn.net/ffcjjhv/article/details/89151382

二、配置

1、依赖包

1
2
3
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

2、openjdk-7-jdk

1
2
3
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-7-jdk

3、OpenGL

1
2
3
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

三、代码编译

#download ElasticFusion
GitHub地址:https://github.com/mp3guy/ElasticFusion ,解压到ElasticFusion/ElasticFusion-master

1
cd ElasticFusion

1、安装 Pangolin

1
2
3
4
5
6
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 ../..

2、安装 OpenNI2

1
2
3
4
git clone https://github.com/occipital/OpenNI2.git
cd OpenNI2
make -j4
cd ..

3、配置 ElasticFusion

(1)build Core

1
2
3
4
5
cd ElasticFusion-master/Core
mkdir build && cd build
cmake ../src
make -j4
cd ../../

(2)build GPUTest

1
2
3
4
5
cd GPUTest
mkdir build && cd build
cmake ../src
make -j4
cd ../../

(3)build GUI

1
2
3
4
5
cd GUI
mkdir build && cd build
cmake ../src
make -j4
cd ../../

四、 运行

1、数据集离线运行

下载数据集: http://www.doc.ic.ac.uk/~sleutene/datasets/elasticfusion/dyson_lab.klg ,放到ElasticFusion/ElasticFusion-master/GUI/build,并运行

1
./ElasticFusion -l dyson_lab.klg

#运行结果
在这里插入图片描述

2、在Kinect v1上实时运行

(1)build libFreenect

1
2
3
cd ElasticFusion
git clone https://github.com/OpenKinect/libfreenect
cd libfreenect

打开libfreenect/CMakeLists.txt,在33行cmake_minimum_required(VERSION 2.8.12)下一行添加

1
add_definitions(-std=c++11)

保存后关闭,命令行继续执行

1
2
3
4
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}是OpenNI2的解压文件夹,比如我的在ElasticFusion文件夹,则
在这里插入图片描述

(2)Kinect v1接入

打开libfreenect文件夹,运行

1
sudo cp platform/linux/udev/51-kinect.rules /etc/udev/rules.d

重启后,插上kinect后,命令行运行lsusb,查看是否包含:Xbox camera,Xbox motor,Xbox audio
在这里插入图片描述

(3)修改GPUConfig.h

如果代码运行很慢且出现如下提示,需要修改修改GPUConfig.h
在这里插入图片描述
ElasticFusion/ElasticFusion-master/GPUtest/build文件夹运行

1
./GPUTest ../

在这里插入图片描述
将最后4行添加到/ElasticFusion/ElasticFusion-master/Core/src/Utils/GPUConfig.h
在这里插入图片描述

(4)运行

打开ElasticFusion/ElasticFusion-master/GUI/build,运行

1
./ElasticFusion

#运行结果
在这里插入图片描述

0%