配置能編譯KinectFusion的PCL環境

        KinectFusion是微軟研究院的一個項目,使Kinect可以作爲3D物體掃描儀,代碼開源在PCL(Point Cloud Library)點雲庫中,去年在Windows下配好環境,嘗試了一下效果,沒有做總結,最近將依次把相關的東西總結一下同時也重新學習,歡迎大家一起討論,批評指正。

  • KinectFusion 相關的兩篇論文,感興趣的可以去網上下載:
         算法   KinectFusion: Real-time dense surface mapping and tracking. [R. A. Newcombe et al, 2011]
         實現   KinectFusion: real-time 3d reconstruction and interactionusing a moving depth camera. [S. Izadi, D. Kim, O.Hilliges et al, 2011]

  • 配置環境的參考資料
         由源碼編譯的官網教程:http://pointclouds.org/documentation/tutorials/compiling_pcl_windows.php

  • 硬件條件
         有一個支持CUDA的Nvidia獨立顯卡,上面中國人的博客上提到要求Compute Capability大於2.2,具體安裝CUDA後,手冊中有CUDA-Capable GPU List ,我的顯卡是Geforce GTX 650,Compute Capability=3.0。

  • 配置過程簡介,我最終配的版本是1.7.1
1.安裝cmake2.8.3以上版本,可以在官網上下載,用於編譯PCL源碼和KinectFusion。我用的是2.8.10.2。

2.下載DownLoadSVN,可以Google到,用於下載PCL源碼。此步驟可略。

3.下載CUDA,至少4.0以上,我下載的是 CUDA 5.0.35安裝包,包括the CUDA Toolkit, SDK code samples, 和 developer drivers.
注意:避免安裝多個版本的顯卡驅動和CUDA,會報錯。此步驟我沒有選NVIDIA Display Driver 306.94 ,因爲一般按顯卡的時候都會裝了驅動。注意裝的是32位的還是64位的。

3.用DownLoadSVN下載PCL源碼,教程在此:  http://pointclouds.org/documentation/tutorials/compiling_pcl_windows_3rdparty_installers.php 
建議用Cmake自己編譯源碼。我也試過all in one安裝包,可以用VS成功編譯測試程序,但是對於編譯KinectFusion沒有好處,再次在Cmake中編譯時會找不到環境路徑在哪裏更改,而且預編譯的安裝包一般更新較慢,官網上有些新的更新都沒有包含在裏面,最終還是卸載了重新手動自己編譯。此教程中第三方依賴環境是用預編譯好的包單獨安裝上的,   http://pointclouds.org/downloads/windows.html 可下載。   
下載成功後彈出“Done”對話框,過程中我有幾個圖片和其他文件顯示超時,可能是因爲國內的緣故,此步驟也可以不用SVN直接下載。

4.編譯下載下來的PCl源碼
打開Cmake.gui(圖形化界面),按照上一步的教程編譯。Boost等第三方是單獨下載安裝的,安裝第三方時不要更改原路徑,lib文件等有可能找不到。路徑如果找不到則需手動查找。版本OpenNi1.5.4.0。VTK5.8.0。build選項一定要選擇的有GPU,CUDA,點擊configure,直到configure success,再generate success。
Qt是相關圖形化界面的,如果你想看帶圖形化界面的示例或者自己開發圖形化界面的,建議安裝。這裏安裝的是Qt_4.8.0_msvc2010_win32;

注意:要編譯KinFu一定要選上相關cuda和gpu的編譯選項。Configure後出現app_in_hand_scanner和gpu_kinfu和gpu_kinfu_large_scale選上,其餘編譯好的還有一些實例和測試程序。

結果顯示下面子模塊將被built:

common

octree

io

kdtree

search

sample_consensus

filters

2d

geometry

features

ml

segmentation

visualization

surface

registration

keypoints

tracking

recognition

stereo

apps

outofcore

examples

people

global_tests

tools


5. 到pcl/build目錄下找到剛纔CMake得到的vs工程,打開PCL工程,右鍵All Build生成,生成靜態庫,動態鏈接庫和執行程序,這個過程會比較慢,可能1到幾個小時,可以幹些別的事情了,過程中可能彈出某某外部環境以改變,是否重新加載,點擊是,繼續生成。網上有人說這個過程中100多到300多個工程,總有個別編譯不成功的情況,只要主要模塊沒有丟失,而且你要的工程編譯成功就可。順利的話,生成成功,其中pcl_kinfu_app就是KinectFusion。可以連上Kinect設備,按照-help依次嘗試,重建自己身邊的場景啦!


附:

下面這些編譯選項這些是PCL主要的模塊,基於點雲庫的程序大多都用到,KinFu,in_hand_scanner,和KinFu_LargeScale都用到。

common常用項

io 輸入輸出

filter 濾波

features各種特徵提取

keypoints 關鍵點提取

search,octree,kdtree  查詢點臨近點查找

sample_consensus  平面,圓柱曲面聚類

segmentation 分割包括顏色分割

registration  匹配,包括ICP和特徵匹配

visualization 視覺渲染




發佈了29 篇原創文章 · 獲贊 16 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章