ElasticFusion编译过程(Ubuntu16.04)

ElasticFusion编译过程(Ubuntu16.04)

1. ElasticFusion简介

ElasticFusion是三维重建领域效果比较显著的开源库,其作者为Facebook Reality Labs的Thomas Whelan博士。ElasticFusion的github源码主页,是本次编译过程的主要参考资料。

2. 编译前准备

2.1 硬件配置

本文使用的硬件配置如下:
+ Intel i7-7700HQ
+ NVIDIA® GeForce® GTX 1060(GPU必不可少,否则无法完成编译,可参见ElasticFusion页面8.FAQ内容
+ 16GB DDR4 2400MHz 内存

2.2 软件配置

本文采用使用Ubuntu16.04系统,ElasticFusion也支持Ubuntu14.04和Unbuntu15.04,但本人并未亲自验证。以下所有步骤均默认在Ubuntu16.04下完成。

2.3 库依赖

  • CMake —— 众所周知的跨平台的安装(编译)工具,推荐安装gui版本,安装命令如下:
    sudo apt-get install cmake-qt-gui
  • git —— 版本控制软件,用于下载部分需要源码编译的依赖库,安装命令如下:
    sudo apt-get install git
  • build-essential —— Linux下的C/C++编译环境及依赖,如gcc和g++,安装命令如下:
    sudo apt-get install build-essential
  • libusb-1.0-0-dev —— 用户空间的USB驱动库,安装命令如下:
    sudo apt-get install libusb-1.0-0-dev
  • libudev-dev —— 用户空间的设备文件管理库,安装命令如下:
    sudo apt-get install libudev-dev
  • openjdk-7-jdk —— 开源的Java开发环境(因为我已经装了Oracle的JDK,所以这里没有装),安装命令如下:
    sudo apt-get install openjdk-7-jdk
  • freeglut3-dev —— 开源的OpenGL库,安装命令如下:
    sudo apt-get install freeglut3-dev
  • python-vtk —— python版的图形可视化库(vtk),安装命令如下:
    sudo apt-get install python-vtk
  • libvtk-java —— jave版的图形可视化库(vtk),安装命令如下:
    sudo apt-get install libvtk-java
  • libglew-dev —— OpenGL库,安装命令如下:
    sudo apt-get install libglew-dev
  • libsuitesparse-dev —— 稀疏矩阵运算库,安装命令如下:
    sudo apt-get install libsuitesparse-dev
  • libeigen3-dev —— 著名的矩阵运算库,安装命令如下:
    sudo apt-get install libeigen3-dev
  • zlib1g-dev —— 数据压缩库,安装命令如下:
    sudo apt-get install zlib1g-dev
  • libjpeg-dev —— JPEG图像压缩库,安装命令如下:
    sudo apt-get install libjpeg-dev
    上述的库依赖均可以通过Ubuntu自带的apt-get安装,之所以分别列开,也是为了让读者明白各个依赖库的作用和功能,一键安装命令如下:
    sudo apt-get install -y cmake-qt-gui git build-essential libusb-1.0-0-dev libudev-dev openjdk-7-jdk freeglut3-dev libglew-dev libsuitesparse-dev libeigen3-dev zlib1g-dev libjpeg-dev
    特别强调,和github的安装命令不同的是,我没有安装使用cuda7.5的库,推荐大家根据自己的显卡型号安装适合自己的CUDA版本。
    然后下面就是安装一些需要下载或者自己编译的依赖库:
    • CUDA
      CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台,支持NVIDIA硬件显卡(所以,如果你的显卡不是N家的,结果你懂得。。。),ElasticFusion和Kintinuous需要CUDA版本大于7.0
      CUDA的手动安装比较繁琐,Ubuntu16.04用户可以参考下面这篇教程
      https://blog.csdn.net/eliminatedacmer/article/details/80528980
    • OpenNI2
      OpenNI中文译为开放自然语言交互,用官方的表述来讲就是a standard framework for 3D sensing,用于3D感知的开发接口;OpenNI2是第二代版本,相对于第一代更加专注于对3D设备的支持和数据的获取,移除了手势识别等中间件的方式,代码更加的精简,简而言之OpenNI2就是一个RGBD相机的用户态驱动,对上提供统一的接口,方便用户获取RGBD的图像数据,对下提供统一的标准类,方便RGBD厂商进行适配;目前OpenNI2支持的设备包括PS1080、PSLink、orbbec、Kinect等设备,由于其清晰的代码结构,很容易对第三方设备进行适配;OpenNI2的源码地址为https://github.com/OpenNI/OpenNI2。编译命令如下: 注意,不是上面的官方版本,而是occipital的fork版本

      git clone https://github.com/occipital/OpenNI2
      cd OpenNI2
      mkdir build && cd build
      cmake ..
      make -j8
      sudo make install
      sudo ldconfig

      * Note, you may need to manually tell CMake where OpenNI2 is since Occipital’s fork does not have an install option. It is important to build Pangolin last so that it can find some of the libraries it has optional dependencies on. *
    • Pangolin
      Pangolin是对OpenGL进行封装的轻量级的OpenGL输入/输出和视频显示的库。可以用于3D视觉和3D导航的视觉图,可以输入各种类型的视频、并且可以保留视频和输入数据用于debug。编译命令如下:

      git clone https://github.com/stevenlovegrove/Pangolin.git
      cd Pangolin
      mkdir build && cd build
      cmake ..
      make -j8
      sudo make install
      sudo ldconfig

3. 编译过程

首先通过git下载源码,命令如下:
git clone https://github.com/mp3guy/ElasticFusion.git
ElasticFusion文件夹中包含三个子文件夹,分别是Core,GPUTest和GUI,编译顺序如下所示。

3.1 Core编译

cd ElasticFusion
cd Core
mkdir build && cd build
cmake ..
make -j8
sudo make install
sudo ldconfig

3.2 GPUTest

cd ElasticFusion
cd GPUTest
mkdir build && cd build
cmake ..
make -j8
sudo make install
sudo ldconfig

3.3 GUI

cd ElasticFusion
cd GUI
mkdir build && cd build
cmake ..
make -j8
sudo make install
sudo ldconfig

4. 运行datasets

在此处下载数据集, 运行命令如下:

cd ElasticFusion
cd GUI/build
./ElasticFusion -l dyson_lab.klg

效果如图所示:

你可能感兴趣的:(ElasticFusion编译过程(Ubuntu16.04))