記住,Pangolin一定是最後安裝
電腦配置是:ubuntu14.04(64位)+GTX1070+CPU(i7)
按照之前博客安裝Nvidia驅動、cuda、cudnn、opencv3、caffe、caffe-ssd後,
git clone https://github.com/mp3guy/Elasticfusion.git
1、安裝cmake
直接在ubuntu軟件中心下載安裝,但是配置Elastic Fusion需要升級到3.2,否則自帶的是2.8
參考:http://askubuntu.com/questions/610291/how-to-install-cmake-3-2-on-ubuntu-14-04
- sudo apt-get install build-essential
- wget http://www.cmake.org/files/v3.2/cmake-3.2.2.tar.gz
- tar xf cmake-3.2.2.tar.gz
- cd cmake-3.2.2
- ./configure
- make
- sudo make install
如果提示找不到bin/cmake,那麼sudo apt-get upgrade就可以了
2、安裝OpenNI2
git clone https://github.com/occipital/OpenNI2.git
然後從https://github.com/occipital/OpenNI2/tree/kinect2/Source/Drivers/Kinect2找到Kinect2文件夾拷貝到OpenNI2/Source/Drivers裏面如果在安裝依賴庫時找不到庫,那麼換源在進行。執行最後一步的時候failed,跳過,沒所謂
sudo apt-get install g++
sudo apt-get install python
sudo apt-get install libusb-1.0-0-dev
sudo apt-get install libudev-dev
sudo apt-get install openjdk-6-jdk
sudo apt-get install freeglut3-dev
sudo apt-get install doxygen
sudo apt-get install graphviz
cd OpenNI-master;make
3、安裝Pangolin
同樣按照鏈接裏給出的,成功.pangolin是歲OpenGL輸入輸出和視頻顯示的庫,可用於3D視覺和3D導航的視覺圖。百度搜索"pangolin學習”有這方面的資料
sudo apt-get install libglew-dev
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake ..
make -j
4、安裝依賴項
- 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
- 安裝pcl:安裝opengl:
- sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl
- sudo apt-get update
- sudo apt-get install libpcl-all
- sudo apt-get install build-essential
- sudo apt-get install libgl1-mesa-dev
- sudo apt-get install libgl1-mesa-dev
- sudo apt-get install libglu1-mesa-dev
- sudo apt-get install freeglut3-dev
5、配置kinect環境
之前在cuda、caffe等都有的系統裏配置用的kinect1沒有問題,但重裝系統後,運行配置完的./Elasticfusion會出現找不到設備的問題,查看github裏的issues-Works with Microsoft Kinect?這一問題,決定用Kinect2
6、安裝libfreenect2
https://github.com/OpenKinect/libfreenect2,按照readme編譯
cd depends
./download_debs_trusty.sh //運行這個非常慢,以後每次配置都用以前下好的debs包放到depends/debs裏面
sudo apt-get install build-essential cmake pkg-config
sudo apt-add-repository ppa:floe/libusb
sudo apt-get update
sudo apt-get install libusb-1.0-0-dev
sudo apt-get install libturbojpeg libjpeg-turbo8-dev
sudo dpkg -i debs/libglfw3*deb; sudo apt-get install -f; sudo apt-get install libgl1-mesa-dri-lts-vivid freeglut3-dev libxrandr-dev libxi-dev//會出現問題,先不用理會
接着安裝Opencl:
sudo apt-get install nvidia-modprobe opencl-headers ocl-icd-dev
- 1
7、安裝openni2
sudo apt-add-repository ppa:deb-rob/ros-trusty && sudo apt-get update
apt-get install libopenni2-dev
sudo apt-get install openni2-utils
sudo make install-openni2
NiViewer2//有依賴不滿足時,直接刪除sudo apt-get purge xxx
8、編譯libfreenect2
cd ..
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/freenect2
make
sudo make install
9、獲得設備udev權限
sudo cp ../platform/linux/udev/90-kinect2.rules /etc/udev/rules.d/
10、測試驅動是否安裝好
sudo chmod +x ./bin/Protonect
./bin/Protonect cpu
./bin/Protonect gl
./bin/Protonect cl
測試Openni2:
運行:
Niviewer2//必須保證這個可以成功!
11、編譯
注意源碼裏有三個項目,Core、GPUTest和GUI
如果要使用作者的程序,則需要把三個項目安裝順序依次配置成功
- cd ../Core
- mkdir build
- cd build
- cmake -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-7.5 ../src
- make -j8
- cd ../../GPUTest
- mkdir build
- cd build
- cmake -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-7.5 ../src
- make -j8
- cd ../../GUI
- mkdir build
- cd build
- cmake -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-7.5 ../src
- make -j8
./ElasticFusion
這時出現錯誤:- error: GLSL 3.30 is not supported. Supported versions are: 1.00 ES, 1.10, 1.20, and 1.30
這是一個關於顯卡驅動支持的錯誤.
解決辦法:.查看一些參數
sudo dpkg --list | grep nvidia 不顯示NVIDIA的版本,說明有問題
lspci | grep -i nvidia 設備裏的確有nvidia顯卡
選擇在終端重裝nvidia驅動,而不是手動
- sudo apt-get remove --purge nvidia-*
- (***提示cmake-qt-gui依賴cmake 2.8出錯,卸載cmake-qt-gui。卸載後cmake命令沒出錯,其他情況會不會出錯有待觀察)
- sudo add-apt-repository ppa:xorg-edgers/ppa -y
- sudo apt-get update
- sudo apt-get install nvidia-367
sudo dpkg --list | grep nvidia 這時就有nvidia的版本信息了
sudo modprobe nvidia-384 (這裏nvidia-384是Tab鍵補全而來的) 手動啓用nvidia顯卡
然後再次運行
- ./ElasticFusion
如果出現這個問題:
那麼修改MainController.cpp 37行 (640,480)改爲(512,424)
換了不同設備這個值可能不一樣
成功!!!