Advertisement

Window10 Kinect v2 配置BundleFusion

阅读量:

系统环境: windows10 gtx1070 cuda8.0 vs2013 kinect v2 BundleFusion

近期项目需要进行RGBD图片生成地图的过程,并在此详细记录整个配置过程。

环境要求

  • Windows 10

    • NVIDIA驱动程序(若已安装正确则无需安装)
    • CUDA 8.0
    • VS2013, 官方建议仅使用VS2013进行编译, 其他版本尚未尝试过。
    • DirectX SDK June 2010
      • 下载,注意安装过程中可能会出现错误,请参考这篇博客
  • Kinect SDK Version 2.0

  • 可从该链接获取软件包以完成安装。

然后我们就可以开始下载我们的工程以及相应的依赖了:

下载工程以及依赖

1. BundleFusion

Homepage Paper Homepage

通过GitHub获取这个BundleFusion,并解压后即可获得工程 BundleFusioin-master

2. mLib

通过 GitHub 上的 这个链接 下载 mLib,并将下载好的文件解压之后,在指定路径下替换成 BundleFusion-master\external\mLib 文件。

3. mLib external

Download 获取该 mLibExternal.zip 文件,并将其放置于与 BundleFusioin-master 相同的目录中

你应该有如下目录:

复制代码
    BundleFusion-master/
      external/
    mLib/ # this is the mLib you replaced
      data/
      src/
      [...]
      FriedLiver/
    [...]
    FriedLiver.sln
    [...]
    mLibExternal/ # you downloaded this from Download
      include
      libsWindows
      [...]
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解读

编译工程

接下来我们将使用Visual Studio 2013来启动 BundleFusion-master\FriedLiver\FriedLiver.sln 这个项目。预计会显示以下错误信息:

复制代码
    ~\BundleFusion-master\FriedLiver\FriedLiver.vcxproj : error  : 无法读取项目文件“FriedLiver.vcxproj”。
    ~\BundleFusion-master\FriedLiver\FriedLiver.vcxproj(35,5): 未找到导入的项目“C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations\CUDA 7.0.props”。请确认 <Import> 声明中的路径正确,且磁盘上存在该文件。
    
    
      
      
    
    代码解读
在这里插入图片描述

因为我们的电脑上安装的CUDA版本不匹配,请修改指定的.vcproj文件内容

复制代码
    # 第35行
    <Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 7.0.props" />
    # 将7.0,修改为我们8.0的cuda版本
    <Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 8.0.props" />
    
    # 第375行
    <Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 7.0.targets" />
    # 将7.0,修改为8.0
    <Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 8.0.targets" />
    
    
      
      
      
      
      
      
      
      
      
    
    代码解读

再次打开则不会报错了

接下来我们需要修改 GlobalAppState.h 文件,如下:

在这里插入图片描述

接着升级至 Release 版本,并根据需求设置生成选项为解决方法(可按住Shift + Ctrl快速配置)。在操作过程中可能会遇到以下常见问题:

无法打开 python36_d.lib 的问题

因为我在尝试配置自己的电脑使用Anaconda 3作为Python开发环境时,在编译过程中遇到了安装错误。深入研究后发现该文件中的第293行存在潜在问题,并将其注释掉。

复制代码
    # 注释掉该行
    pragma comment(lib,"python36_d.lib")
    
    
      
      
    
    代码解读
在这里插入图片描述

并且还要将第337行 define Py_DEBUG 注释掉:

在这里插入图片描述

再次编译的时候就没有出现这个问题了。

在第29行dxut.h处出现了一个严重错误(C1083),无法打开包含文件‘dxsdkver.h’。该文件或目录不存在。

由于未安装 DirectX SDK June 2010 的缘故,请你参考这篇博客:

在这里插入图片描述

配置工程

将这两个指定路径下的配置文件复制到指定位置,并使用Notepad++打开配置文件,并进行相应的修改:将两个指定路径下的配置文件复制到指定位置,并使用Notepad++打开配置文件,并进行相应的修改:

复制代码
    # 修改第2行为如下,来使用KinectOne (Kinect v2)
    s_sensorIdx = 2;
    # 修改第49行为如下,100000视乎是配置文件中默认值
    s_hashNumSDFBlocks = 100000;    //smaller voxels require more space
    
    
      
      
      
      
    
    代码解读

运行工程

通过电脑连接我们的Kinect v2设备,并双击启动位于BundleFusion-master\FriedLiver\x64\Release\FriedLiver.exe路径上的程序。然后即可观察到项目已成功启动。但界面会出现短暂卡顿现象后直接崩溃,请参考下图进行操作。

在这里插入图片描述

然后我们需要对 DepthSensing.cpp 做如下修改:

复制代码
    # 将987行
    bGotDepth = g_CudaImageManager->process()
    # 替换为
    bool bGotDepth;
    while (!(bGotDepth = g_CudaImageManager->process()));
    
    
      
      
      
      
      
    
    代码解读

再次 build 生成后,就可以成功运行该 BundleFusion 工程了

在这里插入图片描述

Reference

全部评论 (0)

还没有任何评论哟~