admin 管理员组文章数量: 887021
PCL1.8 + Kinect 2.0的配置是一个比较麻烦的问题,网上很多资料都是针对Kinect 1.0,针对Kinect 2.0的寥寥无几,使用Kinect 2.0相对比较麻烦,需要重装驱动,甚至修改源代码,前前后后踩坑无数花了近一个月时间才配置成功。写下这篇博客一方面对基础配置工作做一简要总结,一方面希望对接触PCL的新手提供必要的帮助,尽量少走弯路。
安装环境
pcl 版本:pcl 1.8.1 (https://github/PointCloudLibrary/pcl)
kinect 版本: kinect 2.0
vs版本: visual studio 2010
硬件环境:win10, 64bit, 16G内存, GTX1070, 8G显存配置过程
- 下载pcl 1.8.1源代码(pcl有两种安装方式,一是AllInOne,一是下载源码编译,为了使用更多的功能,一般下载最新源码编译)
- windows编译参考:http://www.pointclouds/downloads/windows.html,需要安装一些必要的第三方库,这里实际包含了openni 1.5.4,但实际上openni 1并不能驱动kinect 2.0,为了让调试尽可能少出错误,这里也安装openni1.5.4,下文会讲如何使用openni2驱动kinect 2.0
- 因为我主要使用kinect fusion,因此我需要用到并行计算,首先安装Nvidia驱动,进入官网:https://www.geforce/drivers,选择电脑配置系统会推荐给你相应的驱动程序,我这里安装的版本为:391.35
- 安装cuda toolkit,需要注意的是cuda官方对cuda和nvidia版本的依赖关系进行了具体的限定(https://docs.nvidia/cuda/cuda-toolkit-release-notes/index.html),如下图所示,根据实际情况,我这里选择了cuda 9.1
- 安装openni 2
ibfreenet2是kinect v2的非官方驱动,如果要使用openni2调用kinect 2的话,需要先安装(编译)ibfreenet2。
(1) 从github上下载源码:https://github/OpenKinect/libfreenect2
(2) 安装libusbK驱动: http://zadig.akeo.ie/
(3) 点击options,选择”List All Devices” , 取消选择 “Ignore Hubs or Composite Parents”
点击安装即可
(4) 编译libusb
这里直接下载即可,下载地址:https://sourceforge/projects/libusb/files/libusb-1.0/libusb-1.0.21/libusb-1.0.21.7z/download),将压缩文件解压到libfreenect2/depends文件夹下,重命名为libusb。
(5) 安装TurboJPEG
从网址http://sourceforge/projects/libjpeg-turbo/files 下载压缩包,安装到c:/libjpeg-turbo64,然后设置环境变量:TurboJPEG_ROOT
(6) 安装GLFW
从http://www.glfw/download.html(64bit),解压到depends/glfw (重命名glfw-3.x.x.bin.WIN64 为glfw),然后设置环境变量:GLFW_ROOT
(7) 编译libfreenect2
使用cmake生成然后编译,编译后发现Protonect.exe程序根本打不开?到这里下载:https://github/OpenKinect/libfreenect2/issues/580
将下载的预编译好的dll文件和exe文件替换libfreenect2下bin中的dll和exe即可
(8) 安装OpenNI2
下载 OpenNI 2.2.0.33 (x64) from http://structure.io/openni, 安装到默认路径 (C:\Program Files…).,安装后发现tools/Niviewer.exe依然无法运行? 就把tools/Openni2/Drivers下的dll文件(freenect2-openni2.dll, libusb-1.0.dll, glfw.dll, turbojpeg.dll等统一替换成libfreenect2/build/bin编译好的文件即可) - 编译pcl-mater
如下图所示,注意勾选BUILD_CUDA和 BUILD_GPU
- 运行pcl_openni2_viewer
(1) 会告知缺乏QtCored4.dll 以及 QtGuid4.dll, 那就去Qt目录下拷贝过来
(2) 会报错,No devices connected,这种时候先去把pcl_openni2_viewer调试通,如果不通,就把之前编译的freenect2d.dll、freenect2-openni2d.dll拷贝至 build/bin/Openni2/Drivers/下即可,你就可调试通了
- 运行pcl_kin_app
还会给你一个错误: PCLEXCEPTION, 根本不知道该怎么调试。
(1) 因为用openi2驱动kinect 2,因此首先在kinfu_app.cpp中增加头文件 pcl/io/openni2_grabber.h
(2) mian函数中, capture.reset(new pcl::OpenNIGrabber()); 修改为capture.reset( new pcl::io::OpenNI2Grabber());
(3) 整个文档将 openni_wrapper 替换为* pcl::io*
(4) 将startMainLoop中** pcl::ONIGrabber 替换为 **pcl::io::OpenNI2Grabber
(5) 然后大功告成
花了很多时间搞这个,但话说回来,现在很多人做研究和项目都不用这套框架,时间太久远,too old,但是如果要深入理解KinectFusion的话,还是可以读一下程序的。最后推荐大家使用InfiniTAM,代码更短、工程更小、更好调试、效果更好!
参考文献:
1. Win10安装OpenNI2并通过python接口调用Kinect.
2. Windows 环境下 libfreenect2的配置
本文标签: Kinect
版权声明:本文标题:Win10 + PCL1.8 + Kinect 2.0配置 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1716188844h670073.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论