ブログ@kaorun55

HoloLensやKinectなどのDepthセンサーを中心に書いています。

HoloLensからAzure IoT Hub経由でPower BIのレポートを出してみた

温度センサーはOmron 2JCIE-BU01。このデータをアドバタイズパケットでHoloLens 2で取得、HoloLens 2からAzure IoT Hubにデータを送信しています。Azure IoT HubからはStream Analytics経由でPower BIに入れています。

元のドキュメントはこちら。

docs.microsoft.com

センサーデバイス

ここではHoloLens 2にUSBで接続していますが、アドバタイズパケットで取得しているためセンサーの電源取得のみです。またアドバタイズパケットのため接続不要でデータを取り込んでいます。

f:id:kaorun55:20200809235705j:plain

Microsoft MVPを再受賞しました & RD(Regional Director)に就任しました

f:id:kaorun55:20200702092405p:plain

Microsoft MVPを再受賞しました。

今年はもう一つ増えて、 Microsoft Regional Director(RD) を拝命しました。

MVPが技術的なアウトプットやフィードバックに対して、RDはビジネス的なアプトプットやフィードバックを求められる位置になります。 RDもMVP同様に個人につくのですが、ビジネス的なので個人では無理で会社ありきと思ってます。

会社で認定されているMRPP(Mixed Reality Partner Program)と合わせて、個人と会社での、技術とビジネスのアウトプットについて、評価と期待をされていると認識してます。

まぁ肩書が増えてもやることは変わらないので、粛々とHoloLens 2の実運用に向けて進んでいきます。

書籍「HoloLens 2 入門」を書きました(個人編)

ユーザー向けの入門として書籍「HoloLens 2 入門」を書きました。

6/18発売です。

f:id:kaorun55:20200614140734j:plain:w300
カバー

書籍の内容については会社ブログのほうにまとめたので、こちらは個人的なことを。

blog.hololab.co.jp

前提としては下記になります。

読者の対象は企業のユーザーさんを想定しているため、HoloLens 2の概要、事例、セットアップ、運用、アプリの使い方が中心です。アプリ開発に関する要素はありません。

動機

2017年に日本でHoloLens 1がリリースされました。この時はなんとなく会社を作ったほうがいい雰囲気から会社を作って、どうなるかもよくわからない状況でした。2017年、2018年と徐々に方向性が見えてきたところでの2019年のHoloLens 1ディスコン。HoloLens 2が2019年の後半にでることだけが見えている状況で、HoloLens 1がうまく適用できるところからHoloLens 2への準備を着々としていました。

2019年の後半にHoloLens 2の販売が開始され、ユーザーが手に取る機会が増えました。HoloLens 2から始めて触れるユーザーも多くいて、それが今後も増えていくということから、書籍はユーザー向けとしました。本の賞味期限としても、HoloLens 2リリース後すぐであれば、仮にHoloLens 3がでるとしても数年は使うことができます。それまでにHoloLens 2のユーザーをできるかぎり増やすことが自分の仕事と考えています。

開発向けに関しては、書籍の初版が2000-3000部とすると、それだけのHoloLensアプリ開発者がいるかというとNoでしょうし、ユーザーが増えて様々使ってもらうことによって、ユーザーのやりたいことが増え、結果的に開発者が必要になってくる状況になるといいなと思っています。

また、開発者向けの場合、日ごと変わっていくUnityやMRTKに対して、どのような内容がいいのかというのが正直見えていません。昨今のように日々変わっていく状況では、物理的な書籍よりもWebや動画のほうがいいのかなとも思います。とはいえ、書籍のほうが広がり、認知度などの面でよいこともわかっているので、うまい方法があればやってみたいです。

内容について

今回は社内や宮浦さん、森さんにだいぶ叩いてもらいましたので、だいぶ読みやすいと思います。内容、構成などもだいぶ手入れをしてもらってるのですが、書いてるのは自分なのでそのあたりはご了承ください。

HoloLensが広まるにつれ、HoloLens外での要素が増えてきます。セットアップや運用、さまざまな用途など。薄く紹介のプロビジョニングパッケージ、MDM(Intune)。アプリからのDynamics 365、言葉だけの紹介になっていますがPower Platform。範囲がいつのまにか大きく広がっていて、それぞれを適切に使い分けながら、ユーザーに合わせた環境を作ることが大切になってきます。

いろいろと書き足りなかったところ、新しい情報などは会社のブログに追記していきます。前書きからリンク集にはアクセスできるようになっているので、そこをポータルにしようと思います。

2019年のふりかえり

ここでは個人のふりかえり

会社のふりかえりはこちら blog.hololab.co.jp

大体の発表が会社に紐づいているのでこちらに残すことが少ないのですが、 2019年は Microsoft de:code, Unite 2019, XR Kaigi, Microsoft Ignite Tour Tokyoといった大きなイベントで登壇することができました。

まぁ引き続きHoloLensなんですが、Azure Kinet が3月に日本でも発売開始になるので、こちらをぼちぼちまとめていこうかと思います。

blog.kaorun55.com

HoloLens 2については、HoloLensというよりはMRTKで差分くらいなのでちょっとどうなんだろう(HoloLens 2用にまとめなおすのはアリかもしれないけど)

会社の方はだいぶお任せできるようになってきたので、2020年は開発の時間を増やしたいところです。結果的に2018年のふりかえりに書いてたオフロードはおおよそできている状態になったかなと。

2020年の目標としては、手を動かす時間を増やすことになります。また新しいものがたくさん出てくるので、それにちゃんとついていかないと。

ふりかえり集

blog.kaorun55.com

blog.kaorun55.com

「Azure Kinect DK触ってみる会」を開催しました

2019/7/27(土) 「Azure Kinect DK触ってみる会」 を開催しました。

イベントページはこちら

tmcn.connpass.com

当日のまとめはこちら

togetter.com

ホロラボで5台調達できて色々触っていたのですが、Twitter見てると見てみたい、触ってみたい方が多かったので急遽開催してみました。

デザイニウムでも3台調達できたでので、7人の開発は1人1台+見学用に1台という、この時期で豪華な買いになりました。スタッフ含めてご協力いただいた方に感謝します。

Kinect v2までのゲームコントローラーからブランディングを変えたことで、いままでHoloLensを扱っていたお客さんも興味を持ってくれるようになりました。Kinect v2も最後のほうは産業用途が増えていたので、HoloLens 2と同様にいい場所に配置されたのではないかと思っています。

Azure Kinect DKの複数台外部同期(External Sync)の手順

Azure Kinect DKには複数台のシャッターを同期させるExternal Sync(外部同期)という機能があります。Azure Kinect DKのPVにも複数台をつなげる描写があるので、複数台を使った空間スキャンのシナリオが考慮されていることがわかります。

f:id:kaorun55:20190719232845p:plain

このエントリでは外部同期の手順について解説します。

ドキュメントはこちら

シリーズリンク

概要

外部同期は複数台のAzure Kinect DKをオーディオケーブルで接続し、Depthのシャッターを同時に切ることができます。これによって複数台のAzure Kinect DKで同一タイムスタンプのDepth、IRのデータが生成されるので、同じタイミングでの空間スキャンができます。また、タイムスタンプが同一なので、それぞれのデータをクラウドにアップして後処理するなどの利用が考えられます。

ポイントは下記になります

  • タイムスタンプが同期されるのはDepthとIRのみ、ColorとIMUは完全に同期しない。
  • 同期するAzure Kinect DKのファームウェアは同じバージョンを使用すること。
  • 同期はAzure Kinect DK同士で行っているので、同期する複数のAzure Kinect DKが1PCに接続されている必要はない(別々のPCでも同期する)。
  • 同期は10m以下の3.5mmのオーディオケーブル(モノラルでもステレオでもOK)を使用する。
    • ヘッドフォンのスプリッタでケーブルを分岐させてもOK。
    • Azure Kinect DKは1台のマスターと1台以上のスレーブから構成される。
    • スレーブは8台まで、マスターを含めて9台までは動作が確認されている。
    • Azure Kinect DKはスレーブから起動し、最後にマスターを起動する。
    • マスターのAzure Kinect DKはOutからスレーブのInに接続する。
      • マスターのInには接続しない。
      • 3台以上を同期する場合にはスレーブのOutから次のスレーブのInに接続。
      • または、マスターのOutを分岐してスレーブのInに接続する。

なお、オーディオケーブルを接続する場所は付属のドライバでネジを外し、ケースを外すと出てきます(めんどくさい)。

f:id:kaorun55:20190719234146p:plain

Azure Kinect Viewerを使用した外部同期の手順

Azure Kinect Viewerを使用しても外部同期を行うことができます。

デバイスを開き、ケーブルの状態を確認します。

  1. Inが接続されているAzure Kinect DKをSubに設定しStartします。Sub側のAzure Kinect DKはMasterがStartすると動作を開始します。
  2. Outが接続されているAzure Kinect DKはMasterに設定して最後にStartします。

Azure Kinect Viewerでの表示

  • マスター(Master)
    • f:id:kaorun55:20190719234327p:plain
  • スレーブ(Sub)
    • f:id:kaorun55:20190719234425p:plain

起動してしばらくするとDepthのタイムスタンプが同じ値になります。

f:id:kaorun55:20190719234540p:plain

3台以上の接続

4台までの接続は確認しています。

f:id:kaorun55:20190719234700p:plainf:id:kaorun55:20190719234715p:plain

スプリッタは2分岐でも5分岐でも動作しました。

f:id:kaorun55:20190719234738p:plain

使用したケーブルやスプリッタ

ケーブル(5m/10m)

サンワサプライ オーディオケーブル 5.0m ブラック KM-A2-50K2

サンワサプライ オーディオケーブル 5.0m ブラック KM-A2-50K2

分岐

まとめ

外部同期することでセンサーデータの同期の保証や後処理が可能になります。

ケーブルの取り回しが大変ですが、複数台のAzure Kinect DKを使う場合には導入を検討してみてください。

Azure Kinect SDKのインストールと各種ツールの使い方

Azure Kinect SDKのインストールと各種ツールの使い方を紹介します。

シリーズリンク

概要

Azure Kinect SDKをインストールすることで、開発に必要なファイルやビューアーツール、Azure Kinect DKデータのレコーダー、ファームウェアアップデートツールなどが利用可能になります。

公式のドキュメントはこちら

docs.microsoft.com

SDKのインストール

Azure Kinect のSensor SDKはこちらからダウンロードして、インストールします。

www.microsoft.com

BodyTracking SDKはこちらから

www.microsoft.com

実行環境について

Azure Kinect DKのプログラムを開発環境以外で動作させるときはSDKのインストールは不要で、実行ファイル(exe)と関連DLL(k4a.dll, depthengine_1_0.dll, k4arecord.dll)のみで動作します。

Azure Kinect DKはUVC(USB Video Class)という標準ドライバで動作し間に入るサービスもないため、センサーをUSB接続し、アプリ一式のみで実行可能となります。

Azure Kinect Viewer

デフォルトのビューアーです。最初の動作確認に使用します。

f:id:kaorun55:20190719215812p:plain

Viewerの起動

スタートメニューから「Azure Kinect Viewer」を検索するか、インストールフォルダ(通常は C:\Program Files\Azure Kinect SDK vX.Y.Z)のtools以下にある「k4aviewer.exe」を起動します。

f:id:kaorun55:20190719222133p:plain

デバイスモードとレコーディングデータの再生モードを選択する

f:id:kaorun55:20190719222653p:plain

通常は「Open Device」から該当のシリアル番号(複数接続されているときのAzure Kinect DKの識別子)を開きます。1つのAzure Kinect Viewerアプリでは1台のAzure Kinect DKのみ扱えるので、複数台のAzure Kinect DKを操作する場合には複数のAzure Kinect Viewerアプリを起動しOpenするAzure Kinect DKを変更します。

記録データの再生を行う場合には「Open Recording」に録画ファイル(拡張子 mkv)のパスを入力(ダイアログはないのでパスをコピペしますw)してmkvファイルを選択します。

Azure Kinect DKのデバイス設定

Azure Kinect DKの動作を開始する前にデバイスの設定を行います。

基本的な設定としては、Depthのモード、カラーのフォーマットと解像度、フレームレートになります。 f:id:kaorun55:20190719222948p:plain

Depthのモード

Depthのモードとモードによる見え方の違いは下記になります。

f:id:kaorun55:20190719223240p:plain f:id:kaorun55:20190719223245p:plain

カラーのフォーマットと解像度

カラーのフォーマットと解像度は下記になります。 BGRAについてはMJPEGをSDKでデコードして作成しているようです。

フレームレートはDepthとカラーの最大値の小さい方に引きずられます。

f:id:kaorun55:20190719223727p:plain

カラーカメラの設定

「Color Control」を開くとカラーカメラの各種設定を変更できます。

f:id:kaorun55:20190719223919p:plain

External Sync(外部同期)

外部同期の設定を行います(詳しくは後述)。同期ケーブルの接続はハード的に検出しておりSDKで取得ができます。

  • 未接続
    • f:id:kaorun55:20190719224319p:plain
  • Outのみ接続
    • f:id:kaorun55:20190719224204p:plain
  • Inのみ接続
    • f:id:kaorun55:20190719224206p:plain
  • In/Outともに接続
    • f:id:kaorun55:20190719224209p:plain

実行画面

Azure Kinect DKの動作を開始すると、2Dでの画面が表示されます。IR、Depth、カラー、IMUとセンサー温度、マイクが取得できます。

f:id:kaorun55:20190719215812p:plain

3D表示に切り替えると点群で表示されます。

f:id:kaorun55:20190719225122p:plain

再生モードの場合は、自動で再生が開始され録画データのフォーマットが表示されます。

f:id:kaorun55:20190719225150p:plain

recorder

録画ツールです。コマンドラインアプリのため、コンソール画面やbatファイルで起動します。

ドキュメントはこちら

docs.microsoft.com

パラメーター

パラメーターは下記の通りです。

f:id:kaorun55:20190719225438p:plain

よく使うのはカラーモードの「-c」やDepthモードの「-d」あたりでしょうか。

例えば1080pのNFOV、Binnedは下記のようになります。

k4arecorder.exe -c 1080p -d NFOV_2X2BINNED -r 30 nfov_bined_1.mkv

1080pのWFOV、Unbinnedは下記のようになります。

k4arecorder.exe -c 1080p -d WFOV_UNBINNED -r 15 wfov_unbined_1.mkv

録画されたmkvはAzure Kinect Viewerで再生できます。

k4abt_simple_3d_viewer

BodyTracking用のサンプルアプリです。BodyTracking SDKをインストールすると「C:\Program Files\Azure Kinect Body Tracking SDK\tools」にインストールされます。

k4abt_simple_3d_viewerはONNXを使用しているため、関連するCUDAのインストールが必要です。

インストールに関するドキュメントはこちらです。

docs.microsoft.com

CUDAは10.0固定となっており、インストールしてPCを再起動することで利用可能となります。CUDAをインストールする際に、GeForceのドライバのバージョンが下がる場合があるので、最新のドライバをインストールしなおします。

cuDNN はZIPでダウンロードするので、展開して「cudnn64_7.dll」にパスを通すかexeと同じ場所に置きます。

最後にVisual Studio 2015のRuntimeをインストールします(すでにインストール済みと出る場合にはそのまますすみます)。

この状態で実行すると動作し、下記のキーボード操作が可能になります。

  • ESC: quit
  • h: help
  • b: body visualization mode
  • k: 3d window layout

下記の動画は「body visualization mode」と「3d window layout」を有効にした状態です。

エラーについて

下記のようなエラーでしばらく動かなかったのですが、GeForceのドライバがエラーになっていたのでドライババージョンの問題だった可能性が高いです(今回はPCをリセットしてインストール手順を順に行いました)。

f:id:kaorun55:20190725234446p:plain

まとめ

SDKをインストールすることでAzure Kinect DKの動作確認とデータの録画ができます。

録画することで、アプリ開発の際に再現性のある状態にできるので、現場データの録画は開発の最初に行うと良いかと思います。