PCL KinectFusion 編譯安裝教程

介紹

PCL 實現了 KinectFusion 算法,接上 Kinect 相機可以做實時的三維重建,這篇博客對 Kinect 相機 Windows 驅動的安裝,PCL 庫編譯和 KinectFusion 運行做介紹。

Kinect Windows 驅動安裝

系統環境:Windows 7 64 位操作系統,
開發環境:Visual Studio 2010 .NET 4.0(4.5 不可以用)
Kinect 硬件:Kinect v1(華碩的 xtion 也可以)
驅動接口:OpenNI
注意,我這裏介紹的是 Kiniect v1 驅動的安裝,PCL 和 Kinect 的接口用的是 OpenNI,不可以使用微軟官方的驅動,在安裝 OpenNI 驅動前,微軟的驅動在電腦中必須清理乾淨。

準備的安裝包:
NITE-Win64-1.5.2-Dev.msi
Sensor-Win64-5.1.6-Redist.msi
debian-openni-sensor-avin2-sensorkinect-master
NITE-Win64-1.5.2-Dev.msi
安裝包請自行 google,注意我這裏的系統是 64 位的,32 位的系統需要換成 32 位的安裝包。

安裝次序如下:
1、電腦 usb 接口拔掉 Kinect(開始的幾步必須在 Kinect 拔掉的情況下進行)
2、安裝 NITE-Win64-1.5.2-Dev.msi
3、安裝 sensor-win64-5.1.6-Redist.msi
4、打開文件夾 debian-openni-sensor-avin2-sensorkinect-master 找到 bin 目錄,安裝 SensorKinect093-Bin-Win64-v5.1.2.1.msi
5、插上 Kinect 系統提示自動安裝驅動,在設備管理器中可以查看驅動安裝的結果
6、在 Kinect 插入的情況下,安裝 NITE-Win64-1.5.2.Dev.msi
7、安裝完成後,將目錄中的 Simple-xxx.xml 三個文件,替換掉安裝後 …\PrimeSense\NITE\Data 中的三個 .xml 文件

PCL 編譯安裝

當前 PCL Release 版的最高版本是 1.6(All-In-One),PCL 1.6 中沒有加入 KinectFusion 的實現,如果想要 PCL 中實現的 KinectFusion 算法必須自己編譯高版本的 PCL 源碼,這裏選用 PCL 1.8

系統環境:windows 7 64 位操作系統,
開發環境:Visual Studio 2010 .NET 4.0(4.5 不可以用)
Kinect 驅動已經安裝成功

電腦必須 CUDA(英偉達顯卡可以)

首先安裝 CUDA 的 ToolKit,GTX9XX 系列的必須使用 CUDA 7.5,GTX8XX 系列使用 CUDA 7.0 以上的版本,這裏推薦使用 CUDA 7.5。

安裝包
Boost-1.49.0-vs2010-x64.exe
Eigen-3.0.5.exe
flann-1.7.1-vs2010-x64.exe
VTK-5.8.0-msvc2010-win64_with_qt_support.exe
Qt_4.8.0_msvc2010_win64.exe
qhull-6.2.0.1385-vs2010-x64.exe

PCL 組件安裝次序
1、安裝 boost,這裏安裝的是 Boost-1.49.0-vs2010-x64注,意:Boost-1.50.0-vs2010-x64 不能用,安裝後,VS 編譯 PCL 時出錯!
2、安裝 Eigen
3、安裝 FLANN
4、安裝 Qt,這裏安裝的版本是 Qt_4.8.0_msvc2010_win64,網上說 5.0 不能用,只能用 4.8
5、安裝 VTK
6、安裝 QHull

PCL 編譯
1、CMake 編譯 PCL,這裏選擇的 PCL 的版本是 1.8,souce code 目錄定位到 PCL source 目錄,source code 目錄包含第一層的 CMakeList.txt 文件,binaries 定位到 build 的輸出目錄。

2、點擊 Configure,選擇 Visual Studio Win64 做爲編譯器,之會出現如下圖所示的畫面,如果系統環境和安裝庫嚴格按照上述要求,configure 應該沒有錯誤,如果有錯誤請自行 google 錯誤。

3、出現下圖紅色畫面後把 Build_GPU勾上,勾上後才能將 KinectFusion 加入編譯,沒有必要全部勾上,如果僅僅爲了編譯 KinectFusion,勾上 KinectFusion 依賴項就可以。

2、點擊 generate,在 build 目錄中雙擊 .sln 後綴名文件,打開生成的解決方案

3、 Debug x64 模式下編譯 ALL_BUILD(右鍵單擊 ALL_BUILD 工程之後點擊 build),編譯開始會彈出好多小窗口,一律點 no,重新加載提示窗口點 yes,如果 configure 時勾選的多,會編譯很長時間。Debug x64 模式選擇見下圖,默認是 Debug 64 模式,點擊 Debug 後的小倒三角可以切換成 Release X64 模式。
4、 編譯成功後再次編譯一下(右鍵單擊 ALL_BUILD 工程之後點擊 build),再次編譯會很快。

3、 Release x64 模式下編譯 ALL_BUILD。
4、 編譯成功後再次編譯一下(同 Debug 模式下的操作)

5、Debug x64 模式下編譯 INSTALL,編譯後會把編譯的輸出結果自動添加到系統目錄(C:\Program Files\PCL\)
6、 Release x64 模式下編譯 INSTALL

運行 KinectFusion 程序

編譯後右鍵單擊 pcl_kinfu_largeScale 工程,選擇 Debug -> Start new instance,運行工程。也可以運行 C:\Program Files\PCL\bin\pcl_kinfu_largeScale_debug.exe 同樣也可以啓動重建的程序。

運行時,切換到 Release 模式會快。

在運行後彈出的左下角的窗口中,按下 h 鍵會彈出提示,按下 s 鍵會保存當前重建的結果。

保存的 world.pcd 文件在 build 的目錄下,生成的 pcd 文件還不是重建好的場景,只是把重建的網格保存了下來。

生成 .ply 文件

運行 pcl_kinfu_largeScale_mesh_output 工程,運行時需要傳參數,傳入 world.pcd 文件(注意加上路徑)和輸出的文件名。

或者也可以運行 C:\Program Files\PCL\bin\pcl_kinfu_largeScale_mesh_output_debug.exe,運行時傳參數 world.pcd 和 輸出的文件名 *.ply,如:
pcl_kinfu_largeScale_mesh_output_debug.exe world.pcd output.ply

最終生成的 .ply 文件可以用 meshlab 打開查看。

版權聲明:本文爲博主原創文章,未經博主允許不得轉載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章