電腦配置是:ubuntu14.04(64位)+GTX1070+CPU(i7)
首先,在已裝有SSD目標檢測的條件下(此時cuda8.0等都已經裝好了)進行的Elasticfusion的安裝配置
然後,按照官網
https://github.com/mp3guy/Elasticfusion
1、安裝OpenNI2
如果在安裝依賴庫時找不到庫,那麼換源在進行。執行最後一步的時候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
2、安裝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 ..
cmake --build .
3、安裝依賴項
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不要安裝
接着,按照如下博客進行編譯
http://blog.csdn.net/cattylsy/article/details/52239590
4、安裝cmake
直接在ubuntu軟件中心下載安裝,但是配置Elastic Fusion需要升級到3.2,否則自帶的是2.8
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
運行cmake --version查看版本如果提示找不到bin/cmake,那麼sudo apt-get upgrade就可以了
5、配置kinect環境
我用的是kinect1,安裝kinect1的驅動
ubuntu 下的kinect1的驅動我知道的有兩種方式:-----openNI+sensor+NITE(可選)
-----openNI2+libFreenect 我使用的是這一種。
前面已經安裝好OpenNI2,接着安裝libfreenect
進入openni2目錄 cd OpenNI2
git clone https://github.com/OpenKinect/libfreenect.git
cd libfreenect
mkdir build; cd build
cmake .. -DBUILD_OPENNI2_DRIVER=ON
make
cp -L lib/OpenNI2-FreenectDriver/libFreenectDriver.so ${OPENNI2_DIR}/Bin/x64-Release/OpenNI2/Drivers #將驅動拷貝到OpenNI2的解壓文件夾下,OPENNI2_DIR:OpenNI2的解壓文件夾
sudo cp libfreenect/platform/linux/udev/51-kinect.rules /etc/udev/rules.dsudo reboot
插上kinect後,使用lsusb命令查看確保有以下三個:Xbot camera
Xbot motor
Xbot audio
安裝成功檢查:
cd ${OPENNI2_DIR}/Bin/x64-Release/ ./NiViewer
遇到錯誤:發現不了設備
錯誤原因:usb衝突,電腦的前面的兩個usb是一根總線,後面的共用一根總線,一開始我是用hub集線器引出來,鼠標和kinect1都插在hub上,造成衝突,換個usb插頭即可
6、安裝PCL
sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl
sudo apt-get update
sudo apt-get install libpcl-all
7、安裝opengl
sudo apt-get install build-essential
sudo apt-get install libgl1-mesa-dev
sudo apt-get install libglu1-mesa-dev
sudo apt-get install freeglut3-dev
8、編譯
注意源碼裏有三個項目,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
之後就能在GUI/build中看到可執行項ElasticFusion。直接調用以下命令,默認從kinect1中獲取圖像並開始三位重建./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
成功!!!