Help us understand the problem. What is going on with this article?

Azure Kinect DKのSDK/サンプルをビルドする

More than 1 year has passed since last update.

はじめに

Azure Kinect DK、入手はしましたが、なかなかまとまって触る時間を確保できません。
Unity初めて触るので、むずかしいです。ようやくDepthから点群表示できるようになりました。

今回は、まだリリースされてない
SensorSDK v1.2.0(含C#ラッパー)のビルド、KinectFusionのサンプルのビルド について、メモ

SDK(インストーラー)

Sensor SDK

  • カラー&深度カメラ,IMUのSDK(マイクはなし)、ビューア,レコーダ,ファームウェアツールも入ってます。

ダウンロードはこちらから

v1.2ではC#のラッパー実装されているので、リリースを待つか自分でビルドしましょう

Body Tracking SDK

クローズドソース v0.9.0

Sensor SDKのビルド

基本的にはgithub Azure-Kinect-Sensor-SDK/docs/buildingに従えばビルドできます。

以下ステップバイステップで

  1. 前提
    VS2019でC++によるデスクトップ開発C++によるLinux開発ワークロードをONにした状態で行います。
    以降x64 Native Tools Command Prompt for VS 2019を使用
    Developer Command Prompt for VS 2019とかだと32ビットのほうに行くみたいなので注意が必要

  2. クローン
    https://github.com/microsoft/Azure-Kinect-Sensor-SDK.git
    developブランチ

  3. gitリポジトリのルートに"build"フォルダを作成して移動

    mkdir build && cd build
    
  4. "build"ディレクトリでcmake(Ninja)

    cmake .. -GNinja
    
  5. ビルドを実行

    ninja
    

C#ラッパーのビルド

続いてC# ラッパーのビルドをします。

  1. 前提
    C#のプロジェクトは、SDKをNinjaでビルドする前提で構築されているようなので、
    上記SensorSDKのビルドを行ってから始めるとよいです。
    (ソリューション直下にk4a.x64.propsとStubGenerator.x64.xmlが必要)
    参考までにNinjaで生成されるpropsを張っておきます

    src\csharp\k4a.x64.props
    <Project>
    <PropertyGroup>
        <K4aGeneratorSourcesDirectory>C:/github/Azure-Kinect-Sensor-SDK/build/src</K4aGeneratorSourcesDirectory>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Configuration)' == 'Debug'">
        <K4aBinaryDirectory>C:/github/Azure-Kinect-Sensor-SDK/build/bin</K4aBinaryDirectory>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Configuration)' == 'Release'">
        <K4aBinaryDirectory>C:/github/Azure-Kinect-Sensor-SDK/build/bin</K4aBinaryDirectory>
    </PropertyGroup>
    </Project>
    
  2. depthエンジンのコピー
    SensorSDKインストーラーに同梱されているクローズドソースのバイナリのため、インストールしたSDKからbuild/binにコピーします

    copy "%ProgramFiles%\Azure Kinect SDK v1.1.0\sdk\windows-desktop\amd64\release\bin\depthengine_1_0.dll" bin
    

    詳しくはこのへん

  3. ビルド
    \src\csharp\K4a.slnをVS2019で開いてCtrl+Shitf+B

非公式 C#ラッパー

github K4A.Net
Three-in-one managed .NET library to work with Azure Kinect devices
Sensor API/Record API/Body Tracking API
全部入りです。

公式のCSharpは現時点ではSensor APIのみなので、C#erな方はこちらが手っ取り早い気もします。

Kinect Fusionのサンプル

3DスキャンなKinect Fusionのサンプルが公式で公開されています
github Azure Kinect - OpenCV KinectFusion Sample

C++/CMake不慣れで、動かすまでに時間がかかったので
以下にステップバイステップでメモ

  1. ダウンロード&展開

    1. OpenCV OpenCV – 4.1.0 windows(opencv-4.1.0-vc14_vc15.exe)をダウンロードして展開 こちらから
    2. OpenCV_Contrib opencv_contrib-4.1.0.zipをダウンロードして展開 こちらから
    3. VTK-8.2.0 VTK-8.2.0.zipをダウンロードして展開 こちらから
  2. 以降の前提

    • チェックアウト先

      C:\github\Azure-Kinect-Samples\opencv-kinfu-samples

    • OpenCV/OpenCV_Contrib/VTKの配置

      D:\cv\opencv
      D:\cv\opencv_contrib-4.1.0
      D:\cv\VTK-8.2.0

    • CMake GUI

      cmake-3.15.1-win64-x64.msiをダウンロードしてインストール
      こちらから

  3. includeの展開

    1. OpenCV

      xcopy /S D:\cv\opencv\build\include C:\github\Azure-Kinect-Samples\opencv-kinfu-samples\extern\opencv-4.1.0\include\
      
    2. OpenCV_contrib

      xcopy /S D:\cv\opencv_contrib-4.1.0\modules\rgbd\include C:\github\Azure-Kinect-Samples\opencv-kinfu-samples\extern\opencv_contrib-4.1.0\modules\rgbd\include\
      xcopy /S D:\cv\opencv_contrib-4.1.0\modules\viz\include C:\github\Azure-Kinect-Samples\opencv-kinfu-samples\extern\opencv_contrib-4.1.0\modules\viz\include\
      
  4. VTKのビルド

    1. cmake-gui
      • source code:D:/cv/VTK-8.2.0
      • binaries:D:/cv/VTK-8.2.0\build
    2. 設定変更

      • CMAKE_INSTALL_PREFIX:D:\cv\VTK-8.2.0\install (フォルダは手で作成)
      • CMAKE_CXX_MP_FLAG:チェック
      • CMAKE_CXX_MP_NUM_PROCESSORS:4

      設定変えたら再度ConfigureしてからGenerate

    3. ビルド&インストール

      ソリューションD:\cv\VTK-8.2.0\build\VTK.slnをVS2019で開いてALL_BUILDをReleaseでビルド

      ビルドは時間がかかります。Corei7/NVMe(&RAID0)なデスクトップでも 30分程度…(IO\Geometoryがなかなか終わらない…?)

      INSTALLをReleaseでビルド
      参考1 Visualization Toolkit (VTK) のインストール on Windows, Visual Studio

  5. OpenCV&OpenCV_Contrib

    1. cmake-gui
      • source code:D:/cv/opencv/sources
      • binaries:D:/cv/opencv/build
    2. 設定変更

      • OPENCV_ENABLE_NONFREE:チェック
      • OPENCV_EXTRA_MODULES_PATH:D:\cv\opencv_contrib-4.1.0\modules
      • WITH_VTK:チェック
      • VTK_DIR:D:\cv\VTK-8.2.0\install\lib\cmake\vtk-8.2

      設定変えたら再度ConfigureしてからGenerate

    3. ビルド

      ソリューションD:\cv\opencv\build\OpenCV.slnをVS2019で開いてALL_BUILDをReleaseでビルド
      INSTALLをReleaseでビルド
      参考1参考2

  6. libの展開

    SET SRC_DIR=D:\cv\opencv\build\lib\Release\
    SET DEST_DIR=C:\github\Azure-Kinect-Samples\opencv-kinfu-samples\extern\lib\Release
    mkdir -p %DEST_DIR%
    copy %SRC_DIR%opencv_calib3d410.lib %DEST_DIR%
    copy %SRC_DIR%opencv_core410.lib %DEST_DIR%
    copy %SRC_DIR%opencv_highgui410.lib %DEST_DIR%
    copy %SRC_DIR%opencv_imgproc410.lib %DEST_DIR%
    copy %SRC_DIR%opencv_rgbd410.lib %DEST_DIR%
    copy %SRC_DIR%opencv_viz410.lib %DEST_DIR%
    
  7. 環境変数の設定
    PATHにD:\cv\VTK-8.2.0\install\binD:\cv\opencv\build\bin\Releaseを追加します

  8. Kinfuサンプル

    1. 依存関係の設定

      kinfu_example.vcxprojに依存関係を設定(とりあえずRelease側で)

      <AdditionalDependencies>%(AdditionalDependencies);opencv_core410.lib;opencv_calib3d410.lib;opencv_rgbd410.lib;opencv_highgui410.lib;opencv_viz410.lib;opencv_imgproc410.lib;</AdditionalDependencies>
      
  9. ビルド
    kinfu_example.slnをVS2019で開き、
    main.cppのL.13あたりにある、"#define HAVE_OPENCV"コメントアウトを外して、Releaseビルド
    #Solutionが2017になってるので、VS2019で明示的に開くこと
    #VS2017起動してることに気が付かず、VS2017にC++ワークロード入れてなくてハマった

image.png

おわりに

Cのビルドシステムってさっぱり…つらい

Unity入門にお勧めの本とかあれば教えてください。

ところで AzureKinectDK Azure要素あります…?

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away