Azure Kinect DK の開発環境構築から 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 のインストールから進めていきます 💪
- 公式サイトから Visual Studio 2019 のインストーラ をダウンロードします。今回は個人で営利目的以外で使用するためコミュニティを利用しました。詳細なライセンス条項については こちら をご確認ください。
2. インストーラーのダウンロードが完了したら、インストーラーを起動して、使用可能タブから Visual Studio 2019 のインストールボタンをクリックします。
3. インストールボタンをクリックすると、ワークロードの追加画面に遷移するので、開発に必要なものを追加します。今回は C++ のプロジェクトを動かすため C++によるデスクトップ開発 を追加します。
ワークロードを含む全てのインストールが無事完了したら次に進みます 🏃
Azure Kinect DK のセットアップ
次に Azure Kinect DK のセットアップを進めていきます 📝
1. 公式サイトで Azure Kinect SDK のインストーラ をダウンロードします。
2. インストーラーのダウンロードが完了したら、インストーラーを起動して、手順に従って PC に Azure Kinect SDK をインストールします。
3. インストールが完了したら C:\Program Files\Azure Kinect SDK v1.4.0 に Azure Kinect SDK のフォルダが存在することを確認します。
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 に存在します。
KinectFusion のサンプルの環境構築
KinectFusion のサンプルを動かすためには GitHub の README に記載がある通り、下記のライブラリが必要になります 🔽
- VTK 8.2.0
- OpenCV 4.1.0
- OpenCV Contrib 4.1.0
CMake のインストール
まずはビルドツールである CMake のインストールから行います🔨
- 公式サイトのダウンロードページ からインストーラーをダウンロードします。
2. インストーラーのダウンロードが完了したら、インストーラーを起動して、手順に従って PC に CMake をインストールします。
VTK をビルドする
まずは VTK のビルドから開始していきます✋
- 公式サイトのダウンロードページ から VTK 8.2.0 のソースコードをダウンロードします。
2. ダウンロードしたファイルを解凍して D ドライブに展開します。
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 フォルダについては、あらかじめ作成しておく必要があります。
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 フォルダについては、あらかじめ作成しておく必要があります。
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 内に成果物が生成されています。
OpenCV + OpenCV Contrib をビルドする
次に OpenCV + OpenCV Contrib をビルドします。
- 公式サイトのダウンロードページから OpenCV 4.1.0 のソースコードをダウンロードします。
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
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 内に成果物が生成されています。
KinectFusion のサンプルをビルドする
ここまで来たら KinectFusion のサンプルをダウンロードして動かすのに必要ないくつかの作業を行いビルドすることが可能です☺️
- 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 へコピペします
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 フォルダ内に全て存在する
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 ファイルが生成されていることが確認出来るはずです。
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 ファイルをコピペすることにしました
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 のセットアップがてら Microsoft 社が公開している KinectFusion のサンプルを動かしてみました 👍もし実際の挙動を確認してみたいという方がいれば是非お試しください! 🙌
KinectFusion で点群をもとに複雑な形状が綺麗にメッシュ化されていく様子は見ていて楽しいです✨