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

目录

  • 一、驱动与cuda安装
  • 二、配置
    • 1、依赖包
    • 2、openjdk-7-jdk
    • 3、OpenGL
  • 三、代码编译
    • 1、安装 Pangolin
    • 2、安装 OpenNI2
    • 3、配置 ElasticFusion
      • (1)build Core
      • (2)build GPUTest
      • (3)build GUI
  • 四、 运行
    • 1、数据集离线运行
    • 2、在Kinect v1上实时运行
      • (1)build libFreenect
      • (2)Kinect v1接入
      • (3)修改GPUConfig.h
      • (4)运行

一、驱动与cuda安装

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

二、配置

1、依赖包

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

如果安装出错,先更新下

sudo apt-get update  
sudo apt-get upgrade

再重新安装依赖包

2、openjdk-7-jdk

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

3、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

三、代码编译

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

cd ElasticFusion

1、安装 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 ../..

2、安装 OpenNI2

git clone https://github.com/occipital/OpenNI2.git
cd OpenNI2
make -j4
cd ..

3、配置 ElasticFusion

(1)build Core

cd ElasticFusion-master/Core
mkdir build && cd build
cmake ../src
make -j4
cd ../../

(2)build GPUTest

cd GPUTest
mkdir build && cd build
cmake ../src
make -j4
cd ../../

(3)build GUI

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,并运行

./ElasticFusion -l dyson_lab.klg

#运行结果

2、在Kinect v1上实时运行

(1)build libFreenect

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

打开libfreenect/CMakeLists.txt,在33行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}是OpenNI2的解压文件夹,比如我的在ElasticFusion文件夹,则
ElasticFusion在ubuntu16.04+cuda8.0上的实现_第1张图片

(2)Kinect v1接入

打开libfreenect文件夹,运行

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

重启后,插上kinect后,命令行运行lsusb,查看是否包含:Xbox camera,Xbox motor,Xbox audio
ElasticFusion在ubuntu16.04+cuda8.0上的实现_第2张图片

(3)修改GPUConfig.h

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

./GPUTest ../

ElasticFusion在ubuntu16.04+cuda8.0上的实现_第3张图片
将最后4行添加到/ElasticFusion/ElasticFusion-master/Core/src/Utils/GPUConfig.h
ElasticFusion在ubuntu16.04+cuda8.0上的实现_第4张图片

(4)运行

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

./ElasticFusion

#运行结果
ElasticFusion在ubuntu16.04+cuda8.0上的实现_第5张图片

你可能感兴趣的:(深度相机,C++)