电脑配置:ubuntu16.04(64位)+GTX1070
一、依赖库的安装
编译准备:下载官方给出的的依赖如下
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 cuda-7-5 libsuitesparse-dev libeigen3-dev zlib1g-dev libjpeg-dev
注意:cuda-7-5 应与自己电脑的cuda匹配,openjdk-7-jdk也应与自己电脑匹配
build-essential —— Linux下的C/C++编译环境及依赖,如gcc和g++
libudev-dev —— 用户空间的设备文件管理库
openjdk-7-jdk —— 开源的Java开发环境
freeglut3-dev —— 开源的OpenGL库
libglew-dev —— OpenGL库
libsuitesparse-dev —— 稀疏矩阵运算库
zlib1g-dev —— 数据压缩库
libjpeg-dev —— JPEG图像压缩库
如果上面没有通过,参照这篇文章继续配环境:https://blog.csdn.net/jthree2012/article/details/80837661
二、
首先通过git下载源码,命令如下: git clone https://github.com/mp3guy/ElasticFusion.git
下载后解压,进入ElasticFusion 新建deps ,在deps下安装相关依赖
1.按照这篇文章来https://blog.csdn.net/qq_34622997/article/details/85262344
2.程序可以跑通数据集
让人头大的去配置libfreenect2
libfreenect2
git clone https://github.com/OpenKinect/libfreenect2.git //下载源码
sudo apt-get install build-essential cmake pkg-config libturbojpeg libjpeg-turbo8-dev mesa-common-dev freeglut3-dev libxrandr-dev libxi-dev //安装依赖项
sudo apt-add-repository ppa:floe/libusb
sudo apt-get update
sudo apt-get install libusb-1.0-0-dev //安装libusb
sudo apt-get install libglfw3-dev //安装GLFW3
//编译如下
cd libfreenect2
mkdir build
cd build
cmake .. -DBUILD_OPENNI2_DRIVER=ON
make
sudo make install
sudo cp ../platform/linux/udev/90-kinect2.rules /etc/udev/rules.d/
测试 ./bin/Protonect
若测试没有问题,在此路径下执行如下操作:
sudo apt-get install openni2-utils
sudo make install-openni2
NiViewer2
注意:
ElasticFusion的驱动用的是openni2,但是kinect2用libfreenect2驱动,所以在编译的时候编译出来带openni2的libfreenect2,cmake .. -DBUILD_OPENNI2_DRIVER=ON,但是如果系统里面事先没装好openni2,是编译不出来的,所以先装好libopenni2-dev,这样就可以编译出来带openni2的libfreenect2的驱动,即能在build的lib中找到libfreenect2-openni2.so
注意:将libfreenect2/build/lib 下的libfreenect2-openni2.so ,libfreenect2-openni2.so.0 , libfreenect2.so.0.2 拷贝到OpenNi2/Bin/x64-Release/OpenNi2/Drivers下,此时./NiViewer 执行OpenNi2/Bin/x64-Release 下的NiViewer成功显示。
并且,保证/usr/lib/OpenNI2/Drivers下也包含上面三个文件
注意:
跑kinect2时,将MainController.cpp第37行的Resolution::getInstance(640, 480)
改为
Resolution::getInstance(512, 424)
否则可能会出现以下错误:
ElasticFusion: /home/slam/ElasticFusion/GUI/src/Tools/OpenNI2Interface.cpp:119: OpenNI2Interface::OpenNI2Interface(int, int, int): Assertion `findMode(width, height, fps) && "Sorry, mode not supported!"' failed.
但是,如果你是先编译然后再改分辨率的话需要重新编译,在编译GUI是需要make clean之前编译的GUI
注意:cuda配置的时候需要配置好环境,否则问题很多,配出来就是缘分。