配置能编译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
         一个中国人的博客:  http://zhan.renren.com/tsinstudio?gid=3602888498031631737&checked=true
         一个外国人的博客: http://razorvision.tumblr.com/post/14221437255/compiling-the-open-source-kinect-fusion-pcl-point

  • 硬件条件
         有一个支持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 视觉渲染




你可能感兴趣的:(配置能编译KinectFusion的PCL环境)