Azure Spatial Anchors でのアンカーのリレーションシップとウェイファインディング

アンカーのリレーションシップを使用すると、空間内に接続されたアンカーを作成してから、次のような質問をすることができます。

  • 近くにアンカーはありますか?
  • それはどれくらい離れていますか?

接続されたアンカーは、次のような場合に使用できます。

  • ある作業員が、製造業の工場内のさまざまな場所に行くことが必要な仕事を完了する必要があります。 工場の各場所には空間アンカーがあります。 HoloLens またはモバイル アプリは、作業員をある場所から次の場所に案内するのに役立ちます。 このアプリはまず近くの空間アンカーをたずね、次に作業員を次の場所に案内します。 アプリは、次の場所への大まかな方向と距離を視覚的に示します。

  • 博物館がパブリック表示に空間アンカーを作成します。 これらのアンカーはまとめて、博物館の基本的なパブリック表示の 1 時間の見学を形成します。 パブリック表示で、訪問者は自分のモバイル デバイス上の博物館の複合現実アプリを開くことができます。 次に、訪問者は電話のカメラをその空間の回りに向けて、見学通路上の他のパブリック表示への大まかな方向と距離を表示します。 ユーザーがパブリック表示の方に歩いて行くと、アプリは大まかな方向と距離を更新してユーザーを案内します。

ウェイファインディングを設定する

アンカー間の視線方向と距離を使用して案内を提供するアプリは、ウェイファインディングを使用しています。 ウェイファインディングは、道案内ナビゲーションとは異なります。 道案内ナビゲーションでは、ユーザーは壁の回りを、ドアを通って、さらにフロア間を案内されます。 ウェイファインディングでは、ユーザーは目的地の大まかな方向に関するヒントが与えられます。 ただし、その空間の推測または知識も、ユーザーが目的地への構造を通って移動するのに役立ちます。

ウェイファインディング エクスペリエンスを構築するには、まずそのエクスペリエンス用に空間を準備し、ユーザーが操作するアプリを開発します。 その概念的な手順を次に示します。

  1. 空間を計画する: 空間内のどの場所がウェイ検索エクスペリエンスの一部となるかを決定します。 このシナリオでは、工場の監督者または博物館の見学コーディネーターが、ウェイファインディング エクスペリエンスにどの場所を含めるかを決定する可能性があります。

  2. アンカーの接続: 選択した場所にアクセスして空間アンカーを作成します。 これは、エンドユーザー アプリの管理者モードか、または完全に別のアプリで行うことができます。 各アンカーを他のアンカーに接続するか、または関連付けます。 サービスがこれらの関係を保持します。

  3. エンドユーザー エクスペリエンスのを開始:ユーザーはアプリを実行してアンカーを見つけます。これは、選択した任意の場所に配置できます。 ユーザーがエクスペリエンスを開始できる場所は、全体的な設計で決定するようにしてください。

  4. 近くのアンカーを検索: ユーザーがアンカーを見つけた後、アプリは近くのアンカーを要求できます。 この手順では、そのデバイスとこれらのアンカーの間のポーズが返されます。

  5. ユーザーガイド: アプリは、これらのアンカーのそれぞれにポーズを使用して、ユーザーの一般的な方向と距離に関するガイダンスを提供できます。 たとえば、次の図に示すように、アプリに組み込まれたカメラに目的地である可能性のある各場所を表すアイコンや矢印を表示することが考えられます。

  6. ガイダンスを絞り込み:ユーザーが歩くと、アプリはデバイスと同期先アンカーの間の新しいポーズを定期的に計算できます。 このアプリは、ユーザーが目的地に到着するのに役立つ案内のヒントを引き続き改良します。

    An example of how an app can show way-finding guidance

アンカーを接続する

ウェイファインディング エクスペリエンスを構築するには、まず選択された場所にアンカーを配置する必要があります。 このセクションでは、アプリの管理者が既にこの作業を完了していることを前提にしています。

1 つのセッションでアンカーを接続する

アンカーを接続するには:

  1. 最初の場所に歩いて行き、CloudSpatialAnchorSession を使用してアンカー A を作成します。
  2. 2 番目の場所に歩いて行きます。 基になる MR/AR プラットフォームがその移動を追跡します。
  3. 同じ CloudSpatialAnchorSession を使用してアンカー B を作成します。 アンカー A と B が接続されました。 Spatial Anchors サービスがこの関係を保持します。
  4. 残りのアンカーに対して、この手順を続行します。

複数のセッションでアンカーを接続する

複数のセッションを使用して空間アンカーを接続できます。 この方法を使用すると、いくつかのアンカーを一度に作成および接続してから、後でさらに多くのアンカーを作成および接続できます。

複数のセッションを使用してアンカーを接続するには:

  1. アプリによって、1 つの CloudSpatialAnchorSession にいくつかのアンカー (アンカー A および B) が作成されます。
  2. 別の時間に、アプリは新しい CloudSpatialAnchorSession を使用して、これらのアンカーのいずれか (たとえば、アンカー A) を見つけます。
  3. 新しい場所に歩いて行きます。 基になる複合現実または拡張現実プラットフォームがその移動を追跡します。
  4. 同じ CloudSpatialAnchorSession を使用してアンカー C を作成します。 アンカー A、B、および C が接続されました。 Spatial Anchors サービスがこの関係を保持します。

後でさらに多くのアンカーやセッションに対して、この手順を続行できます。

アンカーの接続を検証する

このアプリでは、近くのアンカーへのクエリを発行することによって、2 つのアンカーが接続されていることを検証できます。これを行うには、CloudSpatialAnchorWatcherNearAnchorCriteria を設定します。 そのクエリの結果にターゲットのアンカーが含まれている場合は、アンカーの接続が検証されました。 アンカーが接続されていない場合、アプリは再度その接続を試みることができます。

アンカーが接続に失敗する可能性のあるいくつかの理由を次に示します。

  • アンカーを接続するプロセス中に、基になる複合現実または拡張現実プラットフォームで追跡が失われた。
  • Spatial Anchors サービスとの通信中のネットワーク エラーのため、アンカーの接続を保持できなかった。

サンプル コードを見つける

アンカーを接続し、近隣クエリを実行する方法を示すサンプル コードを見つけるには、Spatial Anchors のサンプル アプリに関するページを参照してください。