ブログ@kaorun55

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

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の動作確認とデータの録画ができます。

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

Azure Kinect DK ことはじめ

Azure Kinect DKが到着したので概要および各種リンクをまとめます。 f:id:kaorun55:20190712121656j:plain

シリーズリンク

概要

サイト

azure.microsoft.com

PV

www.youtube.com

購入

米国と中国のみ。日本へは一度現地の住所に送って転送。電波は出してないので技適は対象外。

www.microsoft.com

URLは「en-us」にすること。「ja-jp」はNotFoundになる。

SDK

Sensor SDK(Color, Depth, IR)

www.microsoft.com

BodyTracking SDK(BodyIndex, Skeleteon)

www.microsoft.com

GitHub

SDKはオープンに開発されています。

github.com

ドキュメント

docs.microsoft.com

テストデータ

動きがないので微妙だけどないよりはマシ

www.microsoft.com

特徴

こちらご覧ください

speakerdeck.com

Depth性能

Depth性能が素晴らしく良い。

  • 壁の平面が平面で取れる
  • 境界部分のノイズがほぼ無い

外部同期

複数台のAzure Kinect DKのシャッタータイミングをハード的に同期させる機構。Azure Kinect DKは複数台運用も含めて設計されていることがわかる。

開発

  • CのAPIがベース
  • C++ラッパー
  • C# ラッパー
  • C#ラッパーでUnityでも利用可能

Microsoft MVPを再受賞しました

おかげさまで今年もMicrosoft MVPを受賞できました。

呼んでいただいたみなさん、ありがとうございました。

今年はHoloLens 2とAzure Kinect DKが発売されるので、また楽しい一年になりそうです。ぜひ色々なところに広げていきたいので、ご連絡いただければと思います!

いまの受賞分野はWindows Developmentですが、昔はKinect for Windowsだった時期もありました。

MVP ページ

mvp.microsoft.com

Microsoft MVPとは

www.microsoft.com

Beyondにてインタビュー記事が公開されています(個人編)

ビジネスメディアのBeyondにて「xR(AR、VR、MR)の「ビジネス活用」最前線」というお題で全4回にわたりインタビュー記事を掲載していただきました。

blog.hololab.co.jp

  1. xR(AR、VR、MR)の「ビジネス活用」最前線 | Beyond(ビヨンド)
  2. ファーストラインワーカーの働き方改革は、xR(AR、VR、MR)で加速する | Beyond(ビヨンド)
  3. xR(AR、VR、MR)が起こす「現場の技術伝承」革命 | Beyond(ビヨンド)
  4. xR(AR、VR、MR)導入がもたらす「付加価値」と未来予測 | Beyond(ビヨンド)

一応会社ブログにはリンクだけまとめたんですが、個人的な思いというか考えてることは切り離した方がいいかなと思い、こちらにもまとめます。

HoloLens の業務利用の現状

第一回で「実際の導入を見据えた案件も少しずつ出始めています」としていますが、これはホロラボでの開発期間、契約期間からも実感しています。

2018年は長くても半年くらいのプロジェクトがいくつかでしたが、2019年は1年分の予算を確保していただき開発や調査にそれだけのコスト(時間、費用)をかける企業が増えてきました。プロジェクトはEnvisioning(導入) → PoC(概念実証) → Pilot(部分導入) →Deploy(実導入)と進んでいき、Pilot以降を見据えた取り組みが増えてきています。

去年あたりから、プロジェクト数の数字などを出すようにしています。これは外からあまり見えない実態みたいなものを出していきたいという気持ちがあります。HoloLensはいろいろなところで使われ始めています。とはいってもどのくらいの会社が使ってるの? どのくらいのプロジェクトが回ってるの?という数字が見えたほうがイメージしやすいのではと思っています。

例えば2018年の数字的なところはこちらです。2019年上半期もまとめてもらったので、どこかで出せるといいとは思ってるのですが、なかなか機会がなく。単純な数字でいうと、2019年半分で2018年一年分くらいにはなってます(プロジェクト数、売り上げなど)。

目的と手段

HoloLensの導入は手段であって目的ではありません。目的は業務の効率化であり、業務の効率化は線であって点ではありません。第二回で「自社の業務について「めちゃめちゃ考える」こと」と入れていますが、お客さん自身が自分たちの業務を考えること自体に意味があると感じています。実際にボトルネックはどこなのか?それはHoloLensでなければ解決できないのか?

MRPPのトレーニングで最初に言われたことは「Why? HoloLens?」でした。これは「なぜHoloLensでなければならないのか?」、「HoloLens以外の方法が最適ではないのか?」という問いに答えられるようにしなさいということです。これをお客さんとの会話の中で見つけ出さないといけません。なので、お客さんとの会話は大切で、もしHoloLens以外が最適であれば、HoloLens以外を選択するという提案をすることもあります。あくまでもぼくらの仕事はお客さんの業務の課題の解決なので。

業務課題の解決という意味では、点で見るとHoloLensが最適でも線で見るとHoloLens以外が最適なケースも往々にしてあります。ある業務ではHoloLensを使って改善ができるとしても、よくよくワークフローで話を聞くと、その前工程が実はボトルネックで、そこにはHoloLens以外の解決手段が適している場合があります。

なので仕様含めて丸投げされる場合は非常に厳しいですし効果も出にくいと考えています(これはHoloLensに限らないですが)。ぼくらは技術の提供はできますが、業務プロセスに関しては素人なので、そこはお客さん側でやってもらうこと。それをベースに技術的に解決することが自分たちの仕事と思っています。

とはいえ、多くのお客さんと話していると、課題は似ていたり、やりたいことが似ていることは多く、そういう共通項を見つけやすいことがお客さんと接している時間が長いことのメリットかなと思っています。

文化的な解決

最近ちょっと考えてるのが、デジタルトランスフォーメーションだったり出社だったりというのは、技術ではなく文化(気持ち)の面が大きく作用するのかなと思っています。

たとえばデジタルトランスフォーメーションで紙をなくすといった場合に、いままで紙でやり取りしていたものが一切なくなるとして、それで業務が回るのか?という心配が変化を阻害するのではないかと思っています。

人間は変化を恐れるものなので、先に不安があると変化しない方を選択します。であれば、技術的な解決と並行して、心理的な不安を取り除くというなことも必要なんだろうなとぼんやり考えています。それをしないと表面上の導入に過ぎず、時間が経つともとに戻ってしまい、本当の意味での変革にはならないと思っています。

VRデバイスの有効性

第三回にもありますが、個人的には今ビジネス向けVRをやりたいと思っています(諸々のリソースの関係でなかなか難しいのですが)。自分の中では昨今のスタンドアロンVRをVRとして見ていない節があり、HoloLensと同列に考えています。HoloLens、Mirage Solo、Oculus Go、Oculus Quest、それぞれ、性能、値段、機能によってメリット、デメリットがあり、それぞれ排他ではなく選択肢として考えると自分の中ではすっと入ってきたりします。HoloLens 2になり性能も似たようになったので性能的なひっかかりは少なくなると考えています。そういう意味ではWindows MR Immersiveのスタンドアロンが出てくれることを期待していたりします。

HoloLensは光学シースルーデバイスとして高性能ではありますが値段が高いことがとにかくネックになる。それに対してOculus Go、Oculus Questは10分の1程度に収まる。HoloLensでやっていることが必ずしもHoloLensでなくても良くてOculus Go、Oculus Questでも問題ない場合、単純にデバイス量で10倍は見込めます(ソフトウェアの費用は入れていませんが、そこは全体で調整すればいいのかなと思っています)。

第一回にある「米ウォルマートが従業員向けのVRトレーニングでOculus Goを17,000台購入」というのがありますが、ここまではいかなくてもまとまった台数の導入というのは非現実的なものではないかなと思っています。