Slide 1

Slide 1 text

Spatial Anchorsを活用した 工場内倉庫での経路案内の検討 2020/4/6 KumaMCN 矢野翔大

Slide 2

Slide 2 text

自己紹介 • 矢野翔大 • KumaMCN • 株式会社KIS • 製造業向けのMESシステム作ってます • xR全く関係ない仕事です • 最近やったこと: • Dynamics365 Guides + Field Service • StandardShaderを少し StandardShader Dynamics365 Guides @Shota7Y

Slide 3

Slide 3 text

Spatial Anchorsについて

Slide 4

Slide 4 text

Spatial Anchorsとは • 現実の空間にデジタル情報を固定する • 空間の特徴点を利用 • ARのマーカーのようなもの • 特徴が一致した場所にデジタル情報を表示 • マルチデバイスでシェアリング可能 • Hololens • Android(ARCore) • iOS(ARKit)

Slide 5

Slide 5 text

Spatial Anchorsを使ったシナリオ 空間共有 道案内 IoTへの活用

Slide 6

Slide 6 text

Spatial Anchorsを使ったシナリオ 空間共有 道案内 IoTへの活用 今回はこれに注目

Slide 7

Slide 7 text

Spatial Anchorsで経路案内にチャレンジ

Slide 8

Slide 8 text

経路案内をやろうと思ったきっかけ • 仕事で製造業のシステムを開発してる • 製造・流通の現場として工場や物流センターに行くことがある • 工場内は歩ける経路が決まっている • システム保守やピッキング作業で工場や倉庫内を歩き回るのに使えると面白そう ⇒会社で今期の研究開発のネタにしたい ※やりたい人が好きに研究開発していい制度があって丁度良い ※会社がやってない分野でもOK ※実地テストとかは個人より会社としてのほうが都合が良い

Slide 9

Slide 9 text

事前にやったこと • チュートリアルやる • MRTKのチュートリアルをやる • https://docs.microsoft.com/en-US/windows/mixed-reality/mrlearning-asa-ch1 • 結構きれいにまとまっててめっちゃわかりやすい(個人の意見です) • 基本的なことはこれだけやればだいたい理解できた • 公式ドキュメントとサンプルを見る • https://docs.microsoft.com/ja-jp/azure/spatial-anchors/ • これで近くのアンカーを探すデモが役に立った

Slide 10

Slide 10 text

今回試したこと • 4つのアンカーを登録 • 2ルート作成 • ルート1:1→2→4 • ルート2:3→2→1 1 2 3 4

Slide 11

Slide 11 text

ルート1 1 2 3 4 4 2 2 1 ※写真は実際に検索したときのもの

Slide 12

Slide 12 text

ルート2 1 2 3 4 3 2 2 1 ※写真は実際に検索したときのもの

Slide 13

Slide 13 text

MRTKのチュートリアルを参考にしました

Slide 14

Slide 14 text

アンカー登録の仕組み ③登録 ④ID払い出し ②空間特徴点取得 ①アンカー設置 SpatialAnchor

Slide 15

Slide 15 text

アンカー検索の仕組み ④アンカー設置 ③空間特徴点取得 ①IDで検索 ②データ受信 SpatialAnchor

Slide 16

Slide 16 text

特定ルートのアンカーを探そうとして躓いた… • NearAnchorCriteriaクラス • ソースアンカー • 距離 • 最大数 ※特定アンカーの近くのアンカーを検索 ルート1のアンカーを取得したい • ソースアンカーはアンカー1 →結果:全アンカー取れた ※アンカー3はいらない…どうすれば? 1 2 3 4

Slide 17

Slide 17 text

ウェイファインディングについておさらい

Slide 18

Slide 18 text

ウェイファインディングについておさらい 書いてあることは理解できるけど、 実際どうやるんだろう・・・?

Slide 19

Slide 19 text

ウェイファインディングについておさらい なるほど!

Slide 20

Slide 20 text

NearAnchorCriteriaクラスは使えない? • ルート1と2の共通アンカーがある • アンカー1 • アンカー2 1 2 3 4

Slide 21

Slide 21 text

NearAnchorCriteriaクラスは使えない? • ルート1のアンカーを登録 • アンカー3は登録しない 1 2 3 4

Slide 22

Slide 22 text

NearAnchorCriteriaクラスは使えない? • アンカー3だけ登録 • この場合他とリンクされない • 経路案内の場合リンクは必須 1 2 3 4

Slide 23

Slide 23 text

NearAnchorCriteriaクラスは使えない? • アンカー2を取得後3を登録 • アンカー2と3がリンクされる • アンカー2は全部とリンクしてる? • ちゃんと確かめる必要がありそう 1 2 3 4

Slide 24

Slide 24 text

NearAnchorCriteriaクラスは使えない? • アンカー2を取得後3を登録 • アンカー2と3がリンクされる • アンカー2は全部とリンクしてる? • ちゃんと確かめる必要がありそう 1 2 3 4 後日談というわけではないですが、 ミートアップ後「このリンク」に関する認識は違うことがわかりました。 ※@takabrz1さんに教えていただきました。感謝!

Slide 25

Slide 25 text

とりあえず今回はIDでアンカーを検索 • アンカーIDをすべて保存 • Table Storageに放り込む • CosmosDB(無料版)でもいい • ルートに必要なIDを配列でもつ • ルート1:1,2,4のID • ルート2:3,2,1のID ※配列の作り方は次のスライドで • 対象ルートのIDをもとに検索 • 中継点が増えると検索回数も増える 1 2 3 4 ↓Table Storageの中身

Slide 26

Slide 26 text

マップを作る 1 2 3 4 ID From T0 1 アンカー1 アンカー2 2 アンカー2 アンカー4 3 アンカー3 アンカー2 4 アンカー2 アンカー1 5 アンカー2 アンカー3 ルートに必要なIDの配列を作るために • 繋がってるアンカーをテーブルに入れて整理 • ダイクストラ法で最短の経路を探索 • 出発地点 • 目標地点 • 重みは1 • 検索結果でヒットしたIDを配列に入れる ↓テーブルイメージ

Slide 27

Slide 27 text

• MRTKのチュートリアルは最初の一歩に最適 • 経路探索には使える • ただし、異なるルートで共通したアンカーをつか場合は注意が必要 • とりあえず経路探索はこの4ステップでやる • 使うアンカーを全部登録する • アンカーのつながりをFrom/Toで整理する • ダイクストラ法で最短経路を検索し、必要なIDを取得 • 取得したIDをもとにアンカー検索 まとめ

Slide 28

Slide 28 text

• アンカー増やして複雑な経路にする • QRコード読み取り • 出発地点 • 目標地点 • リストのQRで目的地を検索したい • 既存運用に載せる場合紙がまだ多い • 多分小さいQRはHololensではまだ読めない? • QRスキャナを別にするか、全部WEBアプリにするか… • 実地テストしてみたい XXX作業リスト 作業番号:abcdef ピッキング品 品目A 数量 ロケーション 10 Location01 品目B 15 Location04 品目C 8 Location07 今後試したい

Slide 29

Slide 29 text

ありがとうございました (HoloLens2が早く欲しい)