从github上面下载的pcl kinect fusion源码,编译和配置

用pcl最开始就是想看一下里面kinect fusion的源码,没想到配置pcl就弄了一周,期间出现各种bug,还好最后还是大功告成。


言归正传,首先说下安装和编译pcl的步骤:

1. 从github上面下载pcl源码。因为我要的是有kinect fusion的分支,所以找了半天,终于找到了。这里是下载地址:https://github.com/yataozhong/pcl.git/

但是由于pcl每个版本所需要的 第三方库版本和vs编译器版本 不同,我试了好多,终于找到能跑了。

note:这个版本的pcl只能在vs2010 x64下编译!!!!!!


2. 下面是我使用的第三方库的版本以及下载链接

Boost-1.49.0-vs2010-x64.exe (一定要1.49.0, 1.50.0跑不了!!!)

qhull-6.2.0.1385-vs2010-x64.exe

VTK-5.8.0-msvc2010-win64_with_qt_support.exe (一定要QT bassed, 否则编译不过,因为pcl里面用了这个里面的一个QVTK的库)

Qt_4.8.0_msvc2010_win64.exe (一定要4.8.0,不能使5.3.0之后的,又被坑了。。。。)

gtest-vs2010-x64.exe

flann-1.7.1-vs2010-x64.exe

Eigen-3.0.5.exe

OpenNI-Win64-1.5.4-Dev.msi 

Sensor-Win-OpenSource64-5.1.0.msi (这个事kinect的驱动程序)

以上的库都是在vs2010 x64平台下已编译好的库,在这里可以找到:http://sourceforge.net/projects/pointclouds/files/dependencies/


还有个叫Sensor Kinect的驱动,在这里 https://github.com/avin2/SensorKinect,打开连接后进入Bin文件夹,下载2010 x64的安装程序


3. 第三方库的安装

为了方便后面用cmake编译pcl,所有第三方库最好都不要修改默认路径!!!!!!! 否则会出现莫名其妙的错误,编译不过。。。


这里还要注意一下openNI和kinect sensor驱动的安装。

1)一定要在安装之前把所有有关kinect的驱动、软件删掉!!!并且安装的时候把Kinect拔下来,不要连在电脑上

2)先安装openNI,再安装这个Sensor-Win-OpenSource64-5.1.0.msi (貌似这个驱动其实可以不装,直接装驱动Sensor Kinect), 最后安装驱动Sensor Kinect

Kinect驱动具体安装网上有很多,可以参考这个: http://blog.csdn.net/chenxin_130/article/details/6693390

3)安装Sensor Kinect的时候还遇到一个问题,win 8.1 禁止安装驱动。一开始没提示,直接安装失败,后来弄了半天,发现是因为win 8有个什么强制驱动签名,禁止“非法”驱动程序的安装。。。。可以参考这个把这个东西disable掉:http://jingyan.baidu.com/article/7c6fb42879543380642c9036.html


4. cmake编译工程(擦擦擦。。。。作为一个菜鸟新手,足足弄了一周啊,期间各种试第三方库)

编译的步骤详细可以参考这个: http://pointclouds.org/documentation/tutorials/compiling_pcl_windows.php#compiling-pcl-windows


note:

1)需要注意的是,如果之前在安装第三方库的时候使用默认路径,这里就可以省下不少事;但是如果你有自定义安装路径,那么用cmake编译的时候就很蛋疼了,,各种修改,说不定cmake还不过,就算cmake过了,编译也可能出现各种奇怪的错误

2)boost默认路径是找不到了,需要自己修改cmake的变量Boost_INCLUDE_DIR, 如在默认路径下就是Boost_INCLUDE_DIR=C:\Program Files\Boost\include

3)因为最后要用的kinect fusion程序(在pcl中为gpu_kinfu),所以还要在cmake时勾选BUILD变量下的cuda、gpu两个,并确保tools也被勾选(默认)。同时,还要勾选编译visualization这个模块,不然无法编译gpu_kinfu这个我们想要的模块。


5. 在vs2010 x64下编译、debug所需要的模块

为了在debug模式下调试kinect fusion, 我们需要cmake后的pcl根目录下 gpu/kinfu/tools 中的pcl_kinfu_app工程。但是直接生成它的解决方案是不行的,需要先生成其他模块的解决方案。因为gpu_kinfu_app中调用了这些模块编译、生成解决方案后的lib和dll等。  如果你打开自己cmake 后pcl根目录下的lib和bin文件夹,可以看到里面都是空的!!! 


所以开始一个个生成解决方案吧~  

1)打开cmake 编译后pcl根目录下 PCL整个大工程的解决方案:PCL.sln。  

2)按以下顺序依次编译各个子工程模块:pcl_common    pcl_io_ply   pcl_io      pcl_kdtree      pcl_containers   pcl_kinfu_app

3)   打开cmake后的pcl根目录下 gpu/kinfu/tools 路径里的pcl_kinfu_app工程。(这里因为pcl_kinfu_app只是一个子工程,不是解决方案,貌似不能直接用vs2010打开,可以先打开vs2010,再从里面打开pcl_kinfu_app)。打开后点击生成解决方案就好了。。。。

note:

1)其实可以在PCL.sln下直接编译生成整个解决方案,但是工程太大了,这里用不到其他的,所以只是编译生成需要的。

2)在release模式下进行同样操作就好了,可以得到release x64平台的工程


好心酸,弄了一周,终于弄好了。。。。








你可能感兴趣的:(技术)