您的位置:首页 > 运维架构

PCL KinectFusion 编译安装教程

2016-05-26 16:21 274 查看

介绍

PCL 实现了 KinectFusion 算法,接上 Kinect 相机可以做实时的三维重建,这篇博客对 Kinect 相机 Windows 驱动的安装,PCL 库编译和 KinectFusion 运行做介绍。

Kinect Windows 驱动安装

系统环境:Windows 7 64 位操作系统,

开发环境:Visual Studio 2010 .NET 4.0(4.5 不可以用)

Kinect 硬件:Kinect v1(华硕的 xtion 也可以)

驱动接口:OpenNI

注意,我这里介绍的是 Kiniect v1 驱动的安装,PCL 和 Kinect 的接口用的是 OpenNI,不可以使用微软官方的驱动,在安装 OpenNI 驱动前,微软的驱动在电脑中必须清理干净。

准备的安装包:

NITE-Win64-1.5.2-Dev.msi

Sensor-Win64-5.1.6-Redist.msi

debian-openni-sensor-avin2-sensorkinect-master

NITE-Win64-1.5.2-Dev.msi

安装包请自行 google,注意我这里的系统是 64 位的,32 位的系统需要换成 32 位的安装包。

安装次序如下:

1、电脑 usb 接口拔掉 Kinect(开始的几步必须在 Kinect 拔掉的情况下进行)

2、安装 NITE-Win64-1.5.2-Dev.msi

3、安装 sensor-win64-5.1.6-Redist.msi

4、打开文件夹 debian-openni-sensor-avin2-sensorkinect-master 找到 bin 目录,安装 SensorKinect093-Bin-Win64-v5.1.2.1.msi

5、插上 Kinect 系统提示自动安装驱动,在设备管理器中可以查看驱动安装的结果

6、在 Kinect 插入的情况下,安装 NITE-Win64-1.5.2.Dev.msi

7、安装完成后,将目录中的 Simple-xxx.xml 三个文件,替换掉安装后 …\PrimeSense\NITE\Data 中的三个 .xml 文件

PCL 编译安装

当前 PCL Release 版的最高版本是 1.6(All-In-One),PCL 1.6 中没有加入 KinectFusion 的实现,如果想要 PCL 中实现的 KinectFusion 算法必须自己编译高版本的 PCL 源码,这里选用 PCL 1.8

系统环境:windows 7 64 位操作系统,

开发环境:Visual Studio 2010 .NET 4.0(4.5 不可以用)

Kinect 驱动已经安装成功

电脑必须 CUDA(英伟达显卡可以)

首先安装 CUDA 的 ToolKit,GTX9XX 系列的必须使用 CUDA 7.5,GTX8XX 系列使用 CUDA 7.0 以上的版本,这里推荐使用 CUDA 7.5。

安装包

Boost-1.49.0-vs2010-x64.exe

Eigen-3.0.5.exe

flann-1.7.1-vs2010-x64.exe

VTK-5.8.0-msvc2010-win64_with_qt_support.exe

Qt_4.8.0_msvc2010_win64.exe

qhull-6.2.0.1385-vs2010-x64.exe

PCL 组件安装次序

1、安装 boost,这里安装的是 Boost-1.49.0-vs2010-x64注,意:Boost-1.50.0-vs2010-x64 不能用,安装后,VS 编译 PCL 时出错!

2、安装 Eigen

3、安装 FLANN

4、安装 Qt,这里安装的版本是 Qt_4.8.0_msvc2010_win64,网上说 5.0 不能用,只能用 4.8

5、安装 VTK

6、安装 QHull

PCL 编译

1、CMake 编译 PCL,这里选择的 PCL 的版本是 1.8,souce code 目录定位到 PCL source 目录,source code 目录包含第一层的 CMakeList.txt 文件,binaries 定位到 build 的输出目录。

2、点击 Configure,选择 Visual Studio Win64 做为编译器,之会出现如下图所示的画面,如果系统环境和安装库严格按照上述要求,configure 应该没有错误,如果有错误请自行 google 错误。



3、出现下图红色画面后把 Build_GPU勾上,勾上后才能将 KinectFusion 加入编译,没有必要全部勾上,如果仅仅为了编译 KinectFusion,勾上 KinectFusion 依赖项就可以。

2、点击 generate,在 build 目录中双击 .sln 后缀名文件,打开生成的解决方案

3、 Debug x64 模式下编译 ALL_BUILD(右键单击 ALL_BUILD 工程之后点击 build),编译开始会弹出好多小窗口,一律点 no,重新加载提示窗口点 yes,如果 configure 时勾选的多,会编译很长时间。Debug x64 模式选择见下图,默认是 Debug 64 模式,点击 Debug 后的小倒三角可以切换成 Release X64 模式。

4、 编译成功后再次编译一下(右键单击 ALL_BUILD 工程之后点击 build),再次编译会很快。



3、 Release x64 模式下编译 ALL_BUILD。

4、 编译成功后再次编译一下(同 Debug 模式下的操作)

5、Debug x64 模式下编译 INSTALL,编译后会把编译的输出结果自动添加到系统目录(C:\Program Files\PCL\)

6、 Release x64 模式下编译 INSTALL

运行 KinectFusion 程序

编译后右键单击 pcl_kinfu_largeScale 工程,选择 Debug -> Start new instance,运行工程。也可以运行 C:\Program Files\PCL\bin\pcl_kinfu_largeScale_debug.exe 同样也可以启动重建的程序。

运行时,切换到 Release 模式会快。

在运行后弹出的左下角的窗口中,按下 h 键会弹出提示,按下 s 键会保存当前重建的结果。

保存的 world.pcd 文件在 build 的目录下,生成的 pcd 文件还不是重建好的场景,只是把重建的网格保存了下来。

生成 .ply 文件

运行 pcl_kinfu_largeScale_mesh_output 工程,运行时需要传参数,传入 world.pcd 文件(注意加上路径)和输出的文件名。



或者也可以运行 C:\Program Files\PCL\bin\pcl_kinfu_largeScale_mesh_output_debug.exe,运行时传参数 world.pcd 和 输出的文件名 *.ply,如:

pcl_kinfu_largeScale_mesh_output_debug.exe world.pcd output.ply

最终生成的 .ply 文件可以用 meshlab 打开查看。

版权声明:本文为博主原创文章,未经博主允许不得转载。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息