新系統安裝Elasticfusion
記住,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:
- 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
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)
換了不同裝置這個值可能不一樣
成功!!!