3D Sensor Advent Calendar 2019の4日目の記事です。
この記事ではOpenNI2でAzure Kinectを動かすためのOpenNI2 Driverを作ったので紹介します。
OpenNI2とは
OpenNI2とはKinectなどの3Dセンサーを利用するためのオープンソースのソフトウェア開発キットです。
OpenNI2はKinect v1のセンサーを作っていたPrimeSenseなどが中心となり開発していましたが、PrimeSenseがAppleに買収され現在は開発がストップしています。しかしながら、クロスプラットフォームで動作して様々な3Dセンサーで使用できることから今なお広く利用されています。
OpenNI2 Driverとは
OpenNI2はDriverと呼ばれる規定の入力処理をセンサーごとに実装することで、デフォルトではサポートしていないセンサーであってもOpenNI2で扱うことができます。最近ではIntel RealSenseやASUS Xtion 2、Orbbec Astraのような最新のデバイスでもOpenNI2 Driverが提供されています。
OpenNI2 Driver for Azure Kinect
OpenNI2でAzure Kinectを扱うためのOpenNI2 Driverを実装しました。
以下のリポジトリからダウンロードして利用することができます。
ライセンスはMIT Licenseなので商用・非商用を問わず自由に利用できます。
-
UnaNancyOwen/K4ADriver | GitHub
https://github.com/UnaNancyOwen/K4ADriver
How to use K4ADriver?
-
以下のファイルをOpenNI2のインストールディレクトリの
Redist/OpenNI2/Drivers
、およびTools/OpenNI2/Dirvers
にコピーする。- k4adriver.dll ... OpenNI2 Driver for Azure Kinect
-
以下のファイルをパスの通っている場所にコピーする。(Azure Kinect Sensor SDKにパスが通っていれば不要?)
- k4a.dll ... Azure Kinect SDK Runtime
- depthengine_2_0.dll ... Depth Engine for Azure Kinect SDK
OpenNI2 Sample
このOpenNI2 Driverは以下のサンプルプログラムで動作することが確認されています。
-
UnaNancyOwen/OpenNI2Sample | GitHub
https://github.com/UnaNancyOwen/OpenNI2Sample
Need Help
まだすべての機能を完全に実装できていません。いくつかの課題があります。
もし実装できたらプルリクエストを送っていただけると嬉しいです。(上から優先順)
-
ImageRegistrationMode
ColorとDepthの位置を合わせるImageRegistrationModeの実装が不完全です。
現状では、Streamを作成する前にImageRegistrationModeを設定しなければ正しく動作しません。
本来、このモードはいつでも切り替えることができないといけません。*1 -
Video Mode (Resolution, FPS, Pixel Format)
ColorやDepthなどの解像度、フレームレート、フォーマットの設定ができません。
現状では、これらの設定は固定になっています。 -
Multi Device
現状では、このOpenNI2 Driverで複数のデバイスをサポートすることができていません。 -
NiTE2 Support
これはおまけですが、NiTE2をサポートすることができていません。
RealSenseのOpenNI2 Driverではサポートできているため、実装できないわけではなさそうです。
しかし、NiTE2はクローズドソースのため不明な点が多く難しいです。
まとめ
OpenNI2でAzure Kinectを動かすためのOpeNI2 Driverを実装して公開しました。
新規開発に利用するには勧めませんが、様々な過去の資産を動かす用途には適していると思います。
明日12/5(木)は…誰が書くか決まってません(´・ω・`)
*1 そのため、PCLのOpenNI2GrabberはImageRegistrationModeが正しく動作しない。