这几天看到kinect fusion 的效果后,对其非常感兴趣,于是也想搭建一个kinect fusion 的框架自己玩玩,无奈PCL中kinfu的开源代码一直是测试版本,并没有release发布版,于是只能默默的卸载之前安装的1.7.1版本换上PCL的测试版本。
Pcl的测试版本同样可以在github主页上下载,只要选中首页的master分支,并download into ZIP即可,kinfu的代码就在gpu文件夹下。
相比于安装1.7.1版本,想要运行kinfu的话需要通过显卡GPU进行加速,事前需要安装的第三方库也更多,贴一张我的所有第三方库的截图:
一. 具体安装步骤:
- 事先准备:
- 确认你的电脑显卡是N卡,并且运算能力在2.x (Fermi) or 3.x (Kepler) 以上;
- 去英伟达官方网站下载cuda最新版本,并更新自己的显卡驱动,我的cuda是6.5版本,显卡为650M;
- 还是更新自己的显卡驱动,显卡较新的驱动能够让最终kinfu的帧率更快!
- 安装第三方库,BOOST EIGEN FLANN QHULL VTK qt4.8.0 ,在安装前请清理干净原来的这些第三方库;
- 开始安装:
- cmake编译源码,configure第一次后会出现很多红色的build,勾选上build_gpu即可,网上也有说勾选build_tools build_visulation build_cuda build_apps的,但是我的这里前两个是默认勾选了的,build_cuda build_apps我最终也没选;
- 在点击generate前仔细看看cmake下方的输出信息,to built里面是否包含了你所需要的所有功能;
- 点击generate;
- vs打开生成的功能进行编译并install;
二. Tips and bugs:
- 运行kinfu需要openni和primesense的支持,pcl从kinect抓取点云是基于openni的框架的,需要注意的是,事先千万不能安装kinect的微软官方SDK,因为官方的会屏蔽pcl的openni接口,最终pcl读取不出深度数据,显示
can’t open depth source
- 进行测试时,可以先生成工程里的openni-viewer,测试pcl是否能成功获取kinect的数据,之后再生成kinfu-app进行测试,最终无误后生成全部的pcl,并install;
- 此次版本的pcl源码存在的问题1:
在源码中进行编译时,无论选不选择BUILD_GPU,都会出现
libboost_thread-vc100-mt-gd-1_50.lib(thread.obj) : error LNK2019
这个错误 。
文章 http://blog.csdn.net/lming_08/article/details/19114417
给出了这个问题的解决方法,在源码文件里的cmake/pcl_find_boost.cmake里把
Required boost modules find_package(Boost 1.40.0 REQUIRED COMPONENTS
system filesystem thread date_time iostreams)
修改为
Required boost modules find_package(Boost 1.40.0 REQUIRED COMPONENTS
system filesystem thread date_time iostreams chrono)
- 此次版本的pcl源码存在的问题2:
本来以为这下快要大功告成了,没想到1个小时后编译结果是130+成功,2个失败,当时特别丧气。。失败的原因在于出现了有关PNG的错误,贴图如下:
网上公开的解决方案是在源码的tools文件夹里的cmakelist打开后,屏蔽掉
PCL_ADD_EXECUTABLE(pcl_pcd2png “${SUBSYS_NAME}” pcd2png.cpp)
target_link_libraries(pcl_pcd2png pcl_common pcl_io)
PCL_ADD_EXECUTABLE (pcl_organized_pcd_to_png “${SUBSYS_NAME}”organized_pcd_to_png.cpp)
target_link_libraries (pcl_organized_pcd_to_png pcl_common pcl_io)
这四句就可以了,最终可以正确安装完整的pcl
- 安装过程中还有一个问题是,在卸载了kinect的微软官方SDK后,还要卸载pcl的openni和premesense,并重新安装,但是安装好后,cmake会提示找不到openni,无法得到kinfu和gpu的工程,找不到具体原因,第二天先利用cmake编译pcl1.7.1的源码能够找到openni,之后转到新的含有kinfu的pcl-master源码,此时才成功找到openni,并最终成功安装,这个问题的原因后来没有深究。
下面上几张kinfu的截图,简单的试了下,rgb图是按时间间隔采集的,所以有些地方有模型但是没纹理,另外纹理交界的地方并没有做纹理融合,这两个问题是我将来准备优化代码的方向。
补充一下:我下载的pcl-master源码,是在2014年11月8日的版本,官方后续版本应该会陆续修复已有bug。
(转载请注明作者和出处:http://blog.csdn.net/gh234505 未经允许请勿用于商业用途)