用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平台的工程
好心酸,弄了一周,终于弄好了。。。。