Azure Kinect DK の開発環境構築から KinectFusion のサンプルを動かすまで

KinectFusion サンプルの動作確認中の人 👤

はじめに

Kadinche では以前から デプスセンサを活用した開発 に取り組んでおり、最近開発用のデプスセンサとして Azure Kinect DK を調達しました 💪

開発環境のセットアップがてら Microsoft 社が GitHub で公開している KinectFusion のサンプル を動かしてみたので、手順について記事として残しておきます 📝

動作環境

  • Windows 10 Pro (1903)
  • Visual Studio 2019 (16.5.4)
  • Azure Kinect DK (1.6.108079014)
  • Azure Kinect SDK 1.4.0
  • CMake 3.17.2
  • OpenCV 4.1.0
  • OpenCV Contrib 4.1.0
  • VTK 8.2.0

Visual Studio 2019 のインストール

まずは Visual Studio 2019 のインストールから進めていきます 💪

  1. 公式サイトから Visual Studio 2019 のインストーラ をダウンロードします。今回は個人で営利目的以外で使用するためコミュニティを利用しました。詳細なライセンス条項については こちら をご確認ください。
用途に応じて適切なインストーラをダウンロードする

2. インストーラーのダウンロードが完了したら、インストーラーを起動して、使用可能タブから Visual Studio 2019 のインストールボタンをクリックします。

使用可能タブをクリックして Visual Studio 2019 のインストールボタンをクリックする

3. インストールボタンをクリックすると、ワークロードの追加画面に遷移するので、開発に必要なものを追加します。今回は C++ のプロジェクトを動かすため C++によるデスクトップ開発 を追加します。

画像のオプションにチェックが入ってることを確認次第、インストールボタンをクリックする

ワークロードを含む全てのインストールが無事完了したら次に進みます 🏃

Azure Kinect DK のセットアップ

次に Azure Kinect DK のセットアップを進めていきます 📝

1. 公式サイトで Azure Kinect SDK のインストーラ をダウンロードします。

2. インストーラーのダウンロードが完了したら、インストーラーを起動して、手順に従って PC に Azure Kinect SDK をインストールします。

インストーラを起動したらダイアログの手順に従い SDK をインストールする

3. インストールが完了したら C:\Program Files\Azure Kinect SDK v1.4.0 に Azure Kinect SDK のフォルダが存在することを確認します。

今回はバージョン 1.4.0 をインストールしたので Azure Kinect SDK v1.4.0 フォルダが生成されている

4. Azure Kinect DK のファームウェアのアップデートを行うため、PC に Azure Kinect DK を接続してから、Windows PowerShell を起動して下記のコマンドを実行します。

5. ファームウェアのアップデートが完了したら、Azure Kinect Viewer で正常に Azure Kinect DK が動作しているか確認してみます。
Azure Kinect Viewer は C:\Program Files\Azure Kinect SDK v1.4.0\tools\k4aviewer.exe に存在します。

1. エクスプローラーから C:\Program Files\Azure Kinect SDK v1.4.0\tools 内の k4aviewer を開く
2. 左上に表示される Open Device ボタンをクリックし、左下に表示される Start ボタンをクリックして動作確認する。

KinectFusion のサンプルの環境構築

KinectFusion のサンプルを動かすためには GitHub の README に記載がある通り、下記のライブラリが必要になります 🔽

  • VTK 8.2.0
  • OpenCV 4.1.0
  • OpenCV Contrib 4.1.0

CMake のインストール

まずはビルドツールである CMake のインストールから行います🔨

  1. 公式サイトのダウンロードページ からインストーラーをダウンロードします。

2. インストーラーのダウンロードが完了したら、インストーラーを起動して、手順に従って PC に CMake をインストールします。

インストーラーを起動したら後はダイアログの手順に従い CMake をインストールする

VTK をビルドする

まずは VTK のビルドから開始していきます✋

  1. 公式サイトのダウンロードページ から VTK 8.2.0 のソースコードをダウンロードします。
ページをスクロールして 8.2.0 のソースコードをリンクからダウンロードする

2. ダウンロードしたファイルを解凍して D ドライブに展開します。

D ドライブに VTK-8.2.0.zip を展開する

3. CMake を起動して、Where is the source code の項目には D:/VTK-8.2.0/VTK-8.2.0 を、Where to build the binaries の項目には D:/VTK-8.2.0/build を入力します。入力が完了次第、Configure ボタンをクリックします。
※D:/VTK-8.2.0/build フォルダについては、あらかじめ作成しておく必要があります。

1. D:/VTK-8.2.0 に build フォルダを作成する
2. CMake を起動して必要な情報を入力して Configure ボタンをクリックする

4. ダイアログが表示されるので Specify the generator for this project には Visual Studio 16 2019 を設定し、Optional platform for generator には x64 と入力し、Finish ボタンをクリックして、Configure を実行します。

5. CMake の 4項目に値を明示的に指定してから Generate ボタンをクリックします。

  • CMAKE_CONFIGURATION_TYPES (ビルドタイプの指定): Release のみ
  • CMAKE_CXX_MP_FLAG (並列コンパイルの有効化): チェックを入れる
  • CMAKE_CXX_MP_NUM_PROCESSORS (PC に搭載されているコア数): 4
  • CMAKE_INSTALL_PREFIX (ビルドの出力先): D:/VTK-8.2.0/install

※ D:/VTK-8.2.0/install フォルダについては、あらかじめ作成しておく必要があります。

1. D:/VTK-8.2.0 に install フォルダを作成する
2. 各項目に適切な設定値を入力して Generate ボタンをクリックする

6. 無事に Generate が完了したら、Open Project ボタンをクリックして生成されたソリューションファイルを Visual Studio 2019 で開きます。

7. Visual Studio 2019 で無事開けたら INSTALL プロジェクトをビルドして VTK をインストールします。
Open Project ボタンで無事にプロジェクトを開けなかった場合は、
D:/VTK-8.2.0/build/VTK.sln を直接開くと正常に開けるようです

8. ビルドが正常に通っていれば、D:/VTK-8.2.0/install 内に成果物が生成されています。

事前に作成していた install フォルダ内に成果物が存在することが確認出来るはず

OpenCV + OpenCV Contrib をビルドする

次に OpenCV + OpenCV Contrib をビルドします。

  1. 公式サイトのダウンロードページから OpenCV 4.1.0 のソースコードをダウンロードします。
ページ送りして 4.1.0 の項目を見つけたら Sources ボタンをクリックする

2. GitHub のリリースページ から OpenCV Contrib 4.1.0 のソースコードをダウンロードします。

3. ダウンロードしたファイル群を解凍して D ドライブに展開します。

  • OpenCV 4.1.0 の展開先: D:\opencv-4.1.0\opencv-4.1.0
  • OpenCV Contrib 4.1.0 の展開先: D:\opencv_contrib-4.1.0\opencv_contrib-4.1.0
OpenCV 4.1.0 が D ドライブに展開されている様子
OpenCV Contrib 4.1.0 が D ドライブに展開されている様子

4. CMake を起動して、Where is the source code の項目には D:/opencv-4.1.0/opencv-4.1.0 を、Where to build the binaries の項目には D:/opencv-4.1.0/build を入力します。入力が完了次第、Configure ボタンをクリックます。
※D:/opencv-4.1.0/build フォルダについては、あらかじめ作成しておく必要があります

5. ダイアログが表示されるので Specify the generator for this project には Visual Studio 16 2019 を設定し、Optional platform for generator には x64 と入力し、Finish ボタンをクリックして、Configure を実行します。

6. CMake の 6項目に値を明示的に指定してから Generate ボタンをクリックします。

  • CMAKE_CONFIGURATION_TYPES (ビルドタイプの指定): Release のみ
  • CMAKE_INSTALL_PREFIX (ビルドの出力先): D:/opencv-4.1.0/install
  • OPENCV_ENABLE_NONFREE (著作権で保護された機能の有効化): チェックを入れる
  • OPENCV_EXTRA_MODULES_PATH (OpenCV Contrib モジュールへのパス): D:/opencv_contrib-4.1.0/opencv_contrib-4.1.0/modules
  • WITH_VTK (opencv_viz モジュールを作成するか): チェックを入れる
  • VTK_DIR (VTK 8.2.0 モジュールへのパス): D:/VTK-8.2.0/install/lib/cmake/vtk-8.2

※D:/opencv-4.1.0/install フォルダについては、あらかじめ作成しておく必要があります

7. 無事に Generate が完了したら、Open Project ボタンをクリックして生成されたソリューションファイルを Visual Studio 2019 で開きます。

8. Visual Studio 2019 で無事開けたら INSTALL プロジェクトをビルドして OpenCVをインストールします。
Open Project ボタンで無事にプロジェクトを開けなかった場合は、
D:/opencv-4.1.0/build/OpenCV.sln を直接開くと正常に開けるようです

9. ビルドが正常に通っていれば、D:/opencv-4.1.0/install 内に成果物が生成されています。

事前に作成していた install フォルダ内に成果物が存在することが確認出来るはず

KinectFusion のサンプルをビルドする

ここまで来たら KinectFusion のサンプルをダウンロードして動かすのに必要ないくつかの作業を行いビルドすることが可能です☺️

  1. GitHub にある Azure-Kinect-Samples リポジトリをクローン or ダウンロードします。

2. ダウンロードしたファイルを展開して、展開先のフォルダに存在する opencv-kinfu-samples フォルダ内に必要なフォルダをコピペします。

  • D:\opencv-4.1.0\install\include を
    opencv-kinfu-samples\extern\opencv-4.1.0\include へコピペします
  • D:\opencv_contrib-4.1.0\opencv_contrib-4.1.0\modules\rgbd\include を
    opencv-kinfu-samples\extern\opencv_contrib-4.1.0\modules\rgbd\include へコピペします
  • D:\opencv_contrib-4.1.0\opencv_contrib-4.1.0\modules\viz\include を
    opencv-kinfu-samples\extern\opencv_contrib-4.1.0\modules\viz\include へコピペします
opencv-kinfu-samples\extern フォルダに必要な include フォルダ群をコピペする

3. opencv-kinfu-samples フォルダ内に extern\lib\Release フォルダを作成して、ビルドに必要なファイルをコピペします。

  • opencv_calib3d410.lib
  • opencv_core410.lib
  • opencv_highgui410.lib
  • opencv_imgproc410.lib
  • opencv_rgbd410.lib
  • opencv_viz410.lib

※上記 6つの lib ファイルは D:\opencv-4.1.0\install\x64\vc16\lib フォルダ内に全て存在する

D:\opencv-4.1.0\install\x64\vc16\lib フォルダ内からビルドに必要なファイル群をコピーして、opencv-kinfu-samples\extern\lib\Release フォルダに貼り付ける

4. opencv-kinfu-samples フォルダ内の kinfu_example.vcxproj ファイルを下記で上書きします。

5. opencv-kinfu-samples フォルダ内の kinfu_example.sln ファイルを Visual Studio 2019 で開き、main.cpp ファイルを下記で上書きします。

6. main.cpp ファイルの上書き後、ビルドタイプを Release に変更した後、ソリューションをビルドして kinfu_example の実行ファイルを生成します。

7. 正常にビルドが完了していれば、opencv-kinfu-samples\x64\Release フォルダ内に kinfu_example.exe ファイルが生成されていることが確認出来るはずです。

opencv-kinfu-samples\x64\Release フォルダ内に kinfu_example.exe ファイルが生成されている

8. opencv-kinfu-samples\x64\Release フォルダ内にコマンド実行時に必要になる dll ファイルをコピペします。

  • D:\opencv-4.1.0\install\x64\vc16\bin フォルダ内にある全ての dll ファイル
  • D:\VTK-8.2.0\install\bin フォルダ内にある全ての dll ファイル

※本来は必要な dll ファイルだけをコピペすれば良いのですが、
選択する手間を省くため全ての dll ファイルをコピペすることにしました

OpenCV 及び VTK の全ての dll ファイルをopencv-kinfu-samples\x64\Release フォルダ内にコピペする

9. PC に Azure Kinect DK を接続してから、Windows PowerShell を起動して下記のコマンドを実行します。

コマンド実行時に OpenCL error CL_OUT_OF_RESOURCES (-5) during call: clEnqueueNDRangeKernel(‘fillPtsNrm’, dims=3, globalsize=512x512x512, localsize=8x8x16) sync=trueというエラーが発生したら main.cpp 456行目の setUseOptimized(true); を setUseOptimized(false); にして再度ビルド実行してみてください

10. 実行した結果、下記のようなウィンドウが開けば無事にコマンド実行出来ています 🎉

Azure Kinect DK で取得した点群が KinectFusion によりメッシュ化されている様子が確認できる

おわりに

お疲れ様でした 🏝 今回は Azure Kinect DK のセットアップがてら Microsoft 社が公開している KinectFusion のサンプルを動かしてみました 👍もし実際の挙動を確認してみたいという方がいれば是非お試しください! 🙌

KinectFusion で点群をもとに複雑な形状が綺麗にメッシュ化されていく様子は見ていて楽しいです✨

参考リンク

--

--

--

Kadinche is an IT venture company established in 2008. We are engaged in joint research and contract development for virtual reality (VR), augmented reality (AR), mixed reality (MR), deep learning, machine learning, etc.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Nikaera

Nikaera

I’m a software engineer working in Tokyo. I love programming, games and music. https://selekted.club/

More from Medium

Oracle Database Cloud Service- Useful CLI — Part1

Setting up managed OpenShift clusters on Azure with Azure RedHat OpenShift (ARO)

Exploring Azure Resource Graph with Kusto

AZURE RTOS for securing embedded systems