ElasticFusion是三维重建领域效果比较显著的开源库,其作者为Facebook Reality Labs的Thomas Whelan博士。ElasticFusion的github源码主页,是本次编译过程的主要参考资料。
本文使用的硬件配置如下:
+ Intel i7-7700HQ
GPU必不可少,否则无法完成编译,可参见ElasticFusion页面8.FAQ内容)
+ 16GB DDR4 2400MHz 内存
本文采用使用Ubuntu16.04系统,ElasticFusion也支持Ubuntu14.04和Unbuntu15.04,但本人并未亲自验证。以下所有步骤均默认在Ubuntu16.04下完成。
sudo apt-get install cmake-qt-gui
sudo apt-get install git
sudo apt-get install build-essential
sudo apt-get install libusb-1.0-0-dev
sudo apt-get install libudev-dev
sudo apt-get install openjdk-7-jdk
sudo apt-get install freeglut3-dev
sudo apt-get install python-vtk
sudo apt-get install libvtk-java
sudo apt-get install libglew-dev
sudo apt-get install libsuitesparse-dev
sudo apt-get install libeigen3-dev
sudo apt-get install zlib1g-dev
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
- CUDA
首先通过git下载源码,命令如下: git clone https://github.com/mp3guy/ElasticFusion.git
ElasticFusion文件夹中包含三个子文件夹,分别是Core,GPUTest和GUI,编译顺序如下所示。
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
在此处下载数据集, 运行命令如下:
cd ElasticFusion cd GUI/build ./ElasticFusion -l dyson_lab.klg
效果如图所示: