図面全体にわたって、同一の参照符号および記述は、同様の、しかし必ずしも同一ではない要素を示す。本明細書で説明される例示的な実施形態は様々な変更形態および代替形態が可能であるが、特定の実施形態が、図面において例として図示されており、本明細書において詳細に説明される。しかしながら、本明細書で説明される例示的な実施形態は、開示される特定の形態に限定されることを意図されていない。そうではなく、本開示は、添付の特許請求の範囲内に入るすべての変更形態、均等物、および代替形態を包含する。
本開示は、概して、疎結合されたリローカライゼーションサービスおよびアセット管理サービスを介して人工環境内でデジタルアセットを提示するためのシステムおよび方法を対象とする。以下でより詳細に解説されるように、本開示の実施形態は、現実世界の環境内でクライアントデバイスを介して、現実世界の環境の画像、クライアントデバイスの現在の配向、クライアントデバイスのGPS座標など、現実世界の環境を表す情報を収集し得る。一実施形態はまた、収集された情報をリローカライゼーションサービスに送信し得る。
一実施形態はまた、現実世界の環境を表す情報に応答してリローカライゼーションサービスから、アンカーポイントに関連する識別子など、アンカーポイントに関連する情報を受信し得る。以下でより詳細に説明されるように、アンカーポイントは、現実世界の環境内のマッピングされた位置を含み得、および/または現実世界の環境内のマッピングされた位置に関連し得る。一実施形態はまた、現実世界の環境を表す収集された情報に応答して、アンカーポイントのマッピングされた位置に対するクライアントデバイスの現実世界の環境内の判定された位置を受信し得る。この情報に基づいて、一実施形態は、現実世界の環境内でクライアントデバイスをリローカライズし得る。
一実施形態はまた、アンカーポイントに関連する識別子を含み得るクエリをアセット管理サービスに送り得、クエリに応答して、仮想オブジェクトなどの少なくとも1つのデジタルアセットを表す情報を取得し得る。一実施形態はまた、現実世界の環境内のクライアントデバイスの判定された位置およびアンカーポイントのマッピングされた位置に対して、AR環境または仮想現実(VR)環境などの人工環境内の位置において、デジタルアセットを提示し得る。
いくつかの実施形態では、本明細書で説明されるシステムおよび方法は、複数のARプラットフォームを横断する永続的なAR体験を提示するための、疎結合されたリローカライゼーションサービス、アセット管理サービス、およびクライアントフロントエンドを提供し得る。いくつかの例では、「疎結合された」システムは、概して複数の構成要素を含み得、各構成要素は、他のシステムの構成要素への依存性をほとんどまたはまったく有しないことがある。たとえば、本明細書で説明されるリローカライゼーションサービス、アセット管理サービス、およびクライアントフロントエンドは、リローカライゼーションサービスおよびアセット管理サービスが、クライアントフロントエンドデバイスに関する情報(たとえば、状態情報)をほとんどからまったく維持しないことがあるという点で、疎結合され得る。
さらに、本明細書で説明されるリローカライゼーションサービス、アセット管理サービス、およびクライアントフロントエンドは、各構成要素が、実質的に独立型クエリおよび応答を介して他の構成要素と非同期的に通信し得るという点で、疎結合され得る。さらに、いくつかの例では、リローカライゼーションサービスおよびアセット管理サービスは、リローカライゼーションサービスからクライアントデバイスによって受信され、クライアントデバイスからアセット管理サービスに送られる個別のアンカーポイント識別子を介して、互いに最小限におよび間接的に通信し得る。
この疎結合されたアーキテクチャは、各構成要素(たとえば、リローカライゼーションサービス、アセット管理サービス、およびクライアントフロントエンド)が、他のものとは無関係に動作しおよび/または開発されることを可能にし得る。その上、この疎結合されたアーキテクチャは、リローカライゼーションサービスおよび/またはアセット管理サービスが、クライアントデバイスへのロケーション関連データの効率的な配信を提供し得る何らかのサービスなど、複数のタイプのアプリケーションをサービスすることを可能にし得る。したがって、本開示のいくつかの実施形態は、従来のリローカライゼーションおよび/またはアセット管理システムと比較されたとき、増加したフレキシビリティを提供し得る。
さらに、本明細書で説明されるシステムおよび方法は、開発者が、いくつかの好適なフロントエンド環境のいずれかを採用する様々な好適なクライアントデバイスのいずれかを介して体験、アクセス、閲覧、および/または享受され得る永続的なクロスプラットフォームAR体験を作成することを可能にし得る。いずれかの好適なフロントエンド環境を採用するクライアントデバイスは、本明細書で説明されるリローカライゼーションサービスおよび/またはアセット管理サービスを利用して、人工環境内でデジタルアセットを提示し得る。
たとえば、本明細書で説明されるシステムおよび方法の実施形態は、第1のユーザが、第1のARプラットフォームを実行する第1のクライアントデバイスを介して、(たとえば、テーブル上の)現実世界の環境内の位置に対応するAR環境内の位置においてデジタルアセット(たとえば、仮想の花)を置くおよび/または閲覧することを可能にし得る。第2のユーザは、次いで、第2のARプラットフォームを採用する第2のクライアントデバイスを介して、AR環境内でデジタルアセットを位置特定し、閲覧し、体験し、および/またはそれと相互作用し得る。
加えて、本開示の実施形態は、従来の密結合されたリローカライゼーション、アセット管理、およびフロントエンド拡張現実オプションよりも、電気通信リソース(たとえば、帯域幅)および/またはコンピューティングリソースの効率的な使用を提供し得る。たとえば、以下でより詳細に説明されるように、現実世界の環境内でクライアントデバイスをリローカライズすることは、少量の帯域幅のみを必要としおよび/または使用し得るが、比較的高い量のコンピューティングリソース(たとえば、処理リソース、メモリリソースなど)を必要としおよび/または使用し得る。しかしながら、アセット管理サービスからアセットを取り出すことは、比較的高い量の帯域幅を必要としおよび/または使用し得るが、少量のコンピューティングリソースのみを必要としおよび/または使用し得る。クライアントデバイスと、リローカライゼーションサービスと、アセット管理サービスとの間で、密結合することではなく疎結合することを採用することによって、本明細書で説明されるシステムおよび方法は、従来のARオプションよりも、電気通信リソース(たとえば、帯域幅)および/またはコンピューティングリソースを効率的に割り振りおよび/または使用し得る。
以下で、図1~図2および図4~図11を参照しながら、疎結合されたリローカライゼーションサービスおよびアセット管理サービスを介して人工環境内でデジタルアセットを提示するためのシステムの詳細な説明を提供する。対応するコンピュータ実装方法の詳細な説明も、図3に関して提供される。コンピューティングデバイスの1つまたは複数のプロセッサによって実行されたとき、本明細書で説明されるコンピュータ実装方法のうちの1つまたは複数を実施することをコンピューティングデバイスに行わせ得るコンピュータコードの詳細な説明も、図12~図15に関して提供される。
図1は、疎結合されたリローカライゼーションサービスおよびアセット管理サービスを介して人工環境内でデジタルアセットを提示するための例示的なシステム100(「システム100」)のブロック図である。この図に例示されているように、例示的なシステム100は、1つまたは複数のタスクを実施するための1つまたは複数のモジュール102を含み得る。以下でより詳細に解説されるように、モジュール102は、現実世界の環境内でクライアントデバイスを介して、現実世界の環境を表す情報を収集する収集モジュール104を含み得る。図1にさらに図示されているように、システム100は、(たとえば、モジュール102の一部として、)現実世界の環境を表す情報をリローカライゼーションサービスに送信する送信モジュール106と、現実世界の環境を表す情報に応答してリローカライゼーションサービスから、(1)現実世界の環境内のマッピングされた位置を含み得るアンカーポイントに関連する情報、および(2)アンカーポイントのマッピングされた位置に対するクライアントデバイスの現実世界の環境内の判定された位置を受信する受信モジュール108とをさらに含み得る。
図1にさらに図示されているように、システム100はまた、(たとえば、モジュール102の一部として、)アンカーポイントに関連する識別子を含み得るクエリをアセット管理サービスに送る送りモジュール110と、クエリに応答してアセット管理サービスから、少なくとも1つのデジタルアセットを表す情報を取得する取得モジュール112とを含み得る。同じく図1に図示されているように、システム100は、(たとえば、モジュール102の一部として、)現実世界の環境内のクライアントデバイスの判定された位置およびアンカーポイントのマッピングされた位置に対して人工環境内の位置においてデジタルアセットを提示する提示モジュール114をさらに含み得る。
いくつかの実施形態では、同じく図1に図示されているように、システム100は、(たとえば、モジュール102の一部として、)(1)現実世界の環境を表す情報の一部に基づいてクライアントデバイスの粗い位置を判定し、(2)粗い位置および現実世界の環境を表す情報の追加の一部に基づいてクライアントデバイスの細かい位置を識別する、測位モジュール116をさらに含み得る。いくつかの例では、測位モジュール116はまた、クライアントデバイスの細かい位置に基づいてアンカーポイントを選択し得る。
図1にさらに図示されているように、いくつかの実施形態では、システム100は、(たとえば、モジュール102の一部として、)現実世界の環境内のクライアントデバイスの動きを追跡し、現実世界の環境内のクライアントデバイスの動きに基づいてクライアントデバイスの現実世界の環境内の判定された位置を更新する、追跡モジュール118をさらに含み得る。
図1にさらに例示されているように、例示的なシステム100はまた、メモリ120など、1つまたは複数のメモリデバイスを含み得る。メモリ120は、概して、データおよび/またはコンピュータ可読命令を記憶することが可能な任意のタイプまたは形態の揮発性または不揮発性記憶デバイスまたは媒体を表す。一例では、メモリ120は、モジュール102のうちの1つまたは複数を記憶、ロード、および/または維持し得る。メモリ120の例は、限定はしないが、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、フラッシュメモリ、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)、光ディスクドライブ、キャッシュ、同上の1つまたは複数の変形形態または組合せ、あるいは任意の他の好適な記憶メモリを含む。
図1にさらに例示されているように、例示的なシステム100はまた、物理プロセッサ130など、1つまたは複数の物理プロセッサを含み得る。物理プロセッサ130は、概して、コンピュータ可読命令を解釈および/または実行することが可能な任意のタイプまたは形態のハードウェア実装処理ユニットを表す。一例では、物理プロセッサ130は、メモリ120に記憶されたモジュール102のうちの1つまたは複数にアクセスしおよび/またはそれらを修正し得る。追加または代替として、物理プロセッサ130は、疎結合されたリローカライゼーションサービスおよびアセット管理サービスを介して人工環境内でデジタルアセットを提示することを容易にするために、モジュール102のうちの1つまたは複数を実行し得る。物理プロセッサ130の例は、限定はしないが、マイクロプロセッサ、マイクロコントローラ、中央処理ユニット(CPU)、ソフトコアプロセッサを実装するフィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、同上の1つまたは複数の部分、同上の1つまたは複数の変形形態または組合せ、あるいは任意の他の好適な物理プロセッサを含む。
同じく図1に図示されているように、例示的なシステム100はまた、データを受信、記憶、および/または、維持し得る、データストア140などの1つまたは複数のデータストアを含み得る。データストア140は、単一のデータストアもしくはコンピューティングデバイスまたは複数のデータストアもしくはコンピューティングデバイスの部分を表し得る。いくつかの実施形態では、データストア140は、データ用の論理コンテナであり得、様々な形態(たとえば、データベース、ファイル、ファイルシステム、データ構造など)で実装され得る。データストア140の例は、限定はしないが、ファイル、ファイルシステム、データストア、データベース、ならびに/あるいは、オペレーショナルデータストア(ODS)、リレーショナルデータベース、NoSQLデータベース、NewSQLデータベース、および/または任意の他の好適な編成されたデータ集合などのデータベース管理システムを含み得る。
少なくとも1つの例では、データストア140は、ローカライゼーションデータ142および/またはアセットデータ144を含み得る。以下でより詳細に解説されるように、いくつかの例では、ローカライゼーションデータ142は、限定はしないが、現実世界の環境の事前に生成されたおよび/または動的に生成されたマップ、現実世界の環境内の1つまたは複数のマッピングされた位置に関連するデータ、現実世界の環境内のマッピングされた位置同士のおよび/またはそれらの位置間の関係に関連するデータなどを含む、現実世界の環境内の少なくとも1つのクライアントデバイスの位置を識別、計算、検出、および/または他の方法で判定するためにリローカライゼーションサービスが使用し得る任意の情報を含み得る。さらに、アセットデータ144は、限定はしないが、デジタルアセット、アセットに関連する仮想オブジェクト、2次元モデル、3次元モデル、アニメーションおよび/または移動データ、オーディオビジュアルデータ、アセット同士のおよび/またはアセット間の関係に関連するデータ、デジタルアセットと現実世界の環境内のマッピングされた位置との間の関係に関連するデータ、マッピングされた位置からデジタルアセットへの相対転換および/または変換、デジタルアセットからマッピングされた位置への相対転換および/または変換などを含む、人工環境内で提示され得るアセット(たとえば、デジタルアセット)に関連する任意の好適なデータを含み得る。
図1の例示的なシステム100は、様々な仕方で実装され得る。たとえば、例示的なシステム100のすべてまたは一部分は、図2の例示的なシステム200(「システム200」)の部分を表し得る。図2に図示されているように、システム200は、ネットワーク204を介してリローカライゼーションサービスサーバ206(図2および本明細書では「RLSサーバ206」とも)ならびにアセット管理サービスサーバ208(図2および本明細書では「AMSサーバ208」とも)と通信しているクライアントデバイス202を含み得る。少なくとも1つの例では、クライアントデバイス202は、モジュール102のうちの1つまたは複数を用いてプログラムされ得る。追加または代替として、RLSサーバ206および/またはAMSサーバ208が、モジュール102のうちの1つまたは複数を用いてプログラムされ得る。
少なくとも1つの実施形態では、図1からの1つまたは複数のモジュール102は、クライアントデバイス202、RLSサーバ206、および/またはAMSサーバ208によって実行されたとき、クライアントデバイス202、RLSサーバ206、および/またはAMSサーバ208に、疎結合されたリローカライゼーションサービスおよびアセット管理サービスを介して人工環境内でデジタルアセットを提示するための1つまたは複数の動作を実施させることを可能にし得る。たとえば、以下でより詳細に説明されるように、収集モジュール104は、現実世界の環境(たとえば、現実世界の環境210)内でクライアントデバイス(たとえば、クライアントデバイス202)を介して、現実世界の環境を表す情報(たとえば、現実世界の環境情報212、図2では「RWE情報212」とも)を収集することをクライアントデバイス202、RLSサーバ206、および/またはAMSサーバ208に行わせ得る。
いくつかの例では、収集モジュール104は、(1)クライアントデバイス中に含まれるイメージングデバイス(たとえば、イメージングデバイス228)を介して、現実世界の環境の少なくとも一部分の画像をキャプチャすることと、(2)現実世界の環境の一部分の画像をキャプチャする時間において(たとえば、センサ230を介して)イメージングデバイスの配向を検出することとによって、現実世界の環境を表す情報(たとえば、現実世界の環境情報212)を収集することをクライアントデバイス202、RLSサーバ206、および/またはAMSサーバ208に行わせ得る。いくつかの例では、画像および/または配向は、現実世界の環境を表す情報中に含まれ得る。
少なくともいくつかの例では、送信モジュール106は、現実世界の環境を表す情報(たとえば、現実世界の環境情報212)をリローカライゼーションサービス(たとえば、RLSサーバ206)に送信することをクライアントデバイス202、RLSサーバ206、および/またはAMSサーバ208に行わせ得る。受信モジュール108はまた、現実世界の環境を表す情報に応答してリローカライゼーションサービス(たとえば、RLSサーバ206)から、現実世界の環境内のマッピングされた位置(たとえば、アンカーポイント位置216)を含み得るアンカーポイントに関連する情報(たとえば、アンカーポイント情報214、図2では「アンカーポイント情報214」とも)を受信することをクライアントデバイス202、RLSサーバ206、および/またはAMSサーバ208に行わせ得る。いくつかの例では、受信モジュール108はまた、アンカーポイントのマッピングされた位置に対する(たとえば、アンカーポイント位置216に対する)、クライアントデバイスの現実世界の環境内の判定された位置(たとえば、クライアントデバイス位置220)を受信することをクライアントデバイス202、RLSサーバ206、および/またはAMSサーバ208に行わせ得る。
いくつかの実施形態では、送りモジュール110は、アンカーポイントに関連する識別子(たとえば、アンカーポイント識別子218)を含み得るクエリ(たとえば、クエリ222)をアセット管理サービス(たとえば、AMSサーバ208)に送ることをクライアントデバイス202、RLSサーバ206、および/またはAMSサーバ208に行わせ得る。少なくとも1つの実施形態では、取得モジュール112は、クエリに応答してアセット管理サービス(たとえば、AMSサーバ208)から、少なくとも1つのデジタルアセット(たとえば、デジタルアセット224)を表す情報を取得することをクライアントデバイス202、RLSサーバ206、および/またはAMSサーバ208に行わせ得る。
一例では、提示モジュール114は、現実世界の環境内のクライアントデバイスの判定された位置(たとえば、クライアントデバイス位置220)およびアンカーポイントのマッピングされた位置(たとえば、アンカーポイント位置216)に対する人工環境内の位置(たとえば、提示位置226)においてデジタルアセット(たとえば、デジタルアセット224)を提示することをクライアントデバイス202、RLSサーバ206、および/またはAMSサーバ208に行わせ得る。
いくつかの例では、「位置」は、特定の基準系に対する環境内のロケーションおよび/または配向を含み得る。さらに、いくつかの例では、「基準系」は、サイズ、ロケーション、位置、配向、ポーズおよび/または動きが関係して定義され得る座標軸系など、環境内の異なるロケーション、位置、配向、および/またはポーズとの間の関係を表現および/または定義し得る基準および/または定義のセットを含み得る。さらに、いくつかの例では、位置は、3つの直交軸中の並進(たとえば、順方向/逆方向、上/下、左/右)、ならびに3つの直交軸に関する回転(たとえば、ヨー、ピッチ、およびロール)など、特定の基準系に対する3次元空間中の剛体の移動を記述し得る6の自由度(6DoF)に関して表現され得る。
さらに、いくつかの例では、「ポーズ」は、現実世界の環境、人工環境(たとえば、拡張現実環境、または仮想現実環境)、現実世界の環境のマップなど、環境内の特定の基準点に対するオブジェクト(たとえば、アンカーポイント、クライアントデバイス、デジタルアセット、現実世界のオブジェクト、仮想オブジェクトなど)の位置、ロケーション、および/または配向を含み得る。たとえば、「アンカーポイントのポーズ」は、現実世界の環境、現実世界の環境のマップ、および/または人工環境内のアンカーポイントのロケーションおよび/または配向を指し得る。別の例として、「クライアントデバイスのポーズ」は、現実世界の環境および/または人工環境内のクライアントデバイスのロケーションおよび/または配向を指し得る。さらに、「デジタルアセットのポーズ」は、人工環境内のデジタルアセットのロケーションおよび配向を指し得る。いくつかの例では、ロケーション、配向、位置、ポーズ、および/または基準系は、別のロケーション、配向、位置、ポーズ、および/または基準系に対して表現され得る。
ロケーション、配向、位置、ポーズ、変換、および/または動きは、座標、点、角度、ベクトル、経路などを介して、基準系内で任意の好適な仕方で表現され得る。いくつかの例では、配向、回転、および/または相対配向は、軸角度表現、オイラー角、単位ベクトルおよび軸、ユークリッド回転ベクトル、回転群、特殊直交群(たとえば、SO(3)回転群)、特殊ユークリッド群(たとえば、SE(3)ユークリッド群)、1つまたは複数の四元数、同上の1つまたは複数の変形形態または組合せなどのうちの1つまたは複数として表現され得る。
図7を参照しながら以下でより詳細に説明されるように、いくつかの例では、「アンカーポイント」は、現実世界の環境内の識別可能なマッピングされた位置(たとえば、アンカーポイント位置216)を含みおよび/またはそれに対応し得る。同様に、「マッピングされた位置」、「アンカーポイント位置」および/または「現実世界の環境内のマッピングされた位置」は、アンカーポイントに関連し得る現実世界の環境(たとえば、現実世界の環境210)の事前に生成されたマップ内の事前に選択された2次元または3次元位置を含み得る。いくつかの例では、アンカーポイントは、本明細書では「トラッカブル」および/または「keyrig」と呼ばれることがある。
アンカーポイントは、現実世界の環境のマップを生成し得る予備マッピングプロセスを介して選択、識別、判定、生成、および/または位置特定され得る。いくつかの例では、そのような予備マッピングプロセスは、比較的高い精度を有し得、したがって、クライアントデバイスのローカライゼーションおよび/またはリローカライゼーションのために有用であり得る高品質マップおよび/または正確に配置されたアンカーポイントを生じ得る。さらに、いくつかの例では、アンカーポイントは、本明細書で説明されるシステムのうちの1つまたは複数の開発者および/またはユーザによって手動で選択されおよび/またはマップに挿入され得る。
いくつかの例では、アンカーポイントは、ARセッションにわたって一貫して識別され得、および/または現実世界の環境内で比較的静的であり得る、現実世界の環境の特徴に関連し得る。たとえば、アンカーポイントは、頻繁に移動され得るオフィス中の椅子ではなく、頻繁に移動され得ないオフィス中のテーブルに関連し得る。したがって、いくつかの例では、アンカーポイントは、現実世界の環境内の既知の、識別された、および/または判定された位置を表し得、ARシーン内でクライアントデバイスをリローカライズしおよび/またはデジタルアセットを提示するために使用され得る。
いくつかの例では、アンカーポイントは、アンカーポイントに関連するデジタルアセットが、人工環境内で参照によりアンカーポイントのマッピングされた位置に位置し得るように、1つまたは複数のデジタルアセットに関連し得る。たとえば、アンカーポイントに関連するマッピングされた位置に原点をもつデカルト座標系を仮定すると、デジタルアセットは、x軸に沿って1メートル、y軸に沿って-2メートル、およびz軸に沿って3メートルの点におけるアンカーポイントに「アンカリング」され得る。いくつかの例では、デジタルアセットはまた、1.2°のピッチ角、-23°のヨー角、および78°のロール角など、アンカーポイントの配向に対する回転を含み得る。
このようにして、上記の例を続けると、本明細書で説明されるシステムのうちの1つまたは複数(たとえば、提示モジュール114)が、人工環境内でデジタルアセットを提示するとき、本明細書で説明されるシステムのうちの1つまたは複数(たとえば、提示モジュール114)は、アンカーポイントからx軸に沿って1メートル、アンカーポイントからy軸に沿って-2メートル、アンカーポイントからz軸に沿って3メートルであり、アンカーポイントの配向に対して配向(たとえば、回転)され得る、人工環境の基準系に転換されたアンカーポイントのマッピングされた位置に対して、人工環境内の位置を判定し得る。本明細書で説明されるシステムのうちの1つまたは複数(たとえば、提示モジュール114)は、次いで、人工環境内の判定された位置においてデジタルアセットを提示し得る。したがって、ユーザが、現実世界の環境の対応するビューと合成された人工環境を閲覧したとき、デジタルアセットは、現実世界の環境内の判定された位置に位置するように見え得る。追加の例および解説は、図7~図11を参照しながら以下で提供される。
クライアントデバイス202は、概して、コンピュータ実行可能命令を読み取るおよび/または実行することが可能な任意のタイプまたは形態のコンピューティングデバイスを表す。少なくとも1つの実施形態では、クライアントデバイス202は、RLSサーバ206および/またはAMSサーバ208から1つまたは複数の指示を受け付け得る。クライアントデバイス202の例は、限定はしないが、サーバ、デスクトップ、ラップトップ、タブレット、セルラーフォン、(たとえば、スマートフォン)、携帯情報端末(PDA)、マルチメディアプレーヤ、埋込みシステム、ウェアラブルデバイス(たとえば、スマートウォッチ、スマートグラスなど)、ゲーミングコンソール、同上の1つまたは複数の組合せ、あるいは任意の他の好適なモバイルコンピューティングデバイスを含む。いくつかの例では、クライアントデバイス202は、ARプラットフォームのフロントエンドを含み得および/または実装し得る。
いくつかの実施形態では、クライアントデバイス202は、イメージングデバイス228などのイメージングデバイスをさらに含み得る。イメージングデバイス228は、現実世界の環境(たとえば、現実世界の環境210)に関連するイメージング情報を収集(たとえば、観測、閲覧、受信、位置特定、識別など)し得る任意の好適なイメージングデバイスを含み得る。たとえば、イメージングデバイス228は、限定はしないが、可視光イメージングデバイス、赤外線イメージングデバイス、熱イメージングデバイス、レーダセンサ、同上の1つまたは複数の組合せなどを含み得る。
少なくとも1つの実施形態では、イメージングデバイス228は、イメージングデバイス228によってキャプチャされた少なくともいくつかの信号が2次元イメージング情報(たとえば、深度情報を有しないイメージング情報)を含み得るように、画像センサ(たとえば、カメラ)を含み得る。いくつかの実施形態では、クライアントデバイス202は、(たとえば、現実世界の環境情報212の一部として)対応するイメージング情報をRLSサーバ206などの別のデバイスに送信し得、この別のデバイスは、イメージングデバイス228からのイメージング情報を使用して、現実世界の環境210内のクライアントデバイス202の位置(たとえば、クライアントデバイス位置220)を判定し得る。
少なくともいくつかの例では、クライアントデバイス202は、センサ230などのセンサをさらに含み得る。センサ230は、現実世界の環境に関連する情報(たとえば、現実世界の環境情報212)を収集(たとえば、観測、閲覧、受信、位置特定、識別、記憶など)し得る任意の好適なセンサを含み得る。たとえば、センサ230は、限定はしないが、近接センサ、深度センサ、温度センサ、配向センサ、加速度計、レーダセンサ、ソナーセンサ、コンパス、GPSデバイス、慣性測定ユニット(IMU)、同上の1つまたは複数の組合せなどを含み得る。少なくとも1つの例では、センサ230は、画像ベースの追跡システムおよび/またはリローカライゼーションサービス(たとえば、RLSサーバ206)中に含まれるおよび/またはさもなければそれらと通信している複数のセンサ中に含まれ得る。いくつかの例では、クライアントデバイス202は、(たとえば、現実世界の環境情報212の一部として)センサデータをRLSサーバ206などの別のデバイスに送信し得、この別のデバイスは、イメージングデバイス228からの画像データおよび/またはセンサ230からのセンサデータを使用して、クライアントデバイス202の位置(たとえば、クライアントデバイス位置220)を識別、検出、収集、および/または判定し得る。
いくつかの例では、図2には図示されていないが、クライアントデバイス202は、少なくとも現実世界の環境の一部分(たとえば、現実世界の環境210の一部分)のローカルマップを含み、生成し、更新し、維持し、ホストし、および/またはそれにアクセスし得る。いくつかの例では、クライアントデバイス202は、1つまたは複数の慣性航行、コンピュータビジョン、および/または同時ローカライゼーションおよびマッピング(SLAM)技法など、任意の好適な技法を介して、現実世界の環境内でローカルマップを生成および/または更新し得、ならびに/あるいはクライアントデバイス202のロケーションを追跡し得る。
ネットワーク204は、概して、クライアントデバイス202、RLSサーバ206、および/またはAMSサーバ208の間の通信および/またはデータ転送を容易にすることが可能な任意の媒体またはアーキテクチャを表す。ネットワーク204の例は、限定はしないが、イントラネット、WAN、LAN、パーソナルエリアネットワーク(PAN)、インターネット、電力線通信(PLC)、セルラーネットワーク(たとえば、モバイル通信用グローバルシステム(GSM)ネットワーク、符号分割多元接続(CDMA)ネットワーク、ロングタームエボリューション(LTE)ネットワークなど)、ユニバーサルシリアルバス(USB)接続、プロプライエタリ接続などを含む。ネットワーク204は、ワイヤレスまたはワイヤード接続を使用した通信またはデータ転送を容易にし得る。一実施形態では、ネットワーク204は、クライアントデバイス202、RLSサーバ206、およびAMSサーバ208の間の通信を容易にし得る。
RLSサーバ206は、概して、コンピュータ実行可能命令を読み取るおよび/または実行することならびに/あるいは実行ファイルをホスティングすることが可能な任意のタイプまたは形態のコンピューティングデバイスを表す。RLSサーバ206の例は、限定はしないが、いくつかのソフトウェアアプリケーションを走らせ、ならびに/あるいは様々なアプリケーション、記憶、および/またはデータベースサービスを提供するように構成された、アプリケーションサーバ、記憶サーバ、データベースサーバ、ウェブサーバ、および/または任意の他の好適なコンピューティングデバイスを含む。
いくつかの例では、RLSサーバ206は、リローカライゼーションサービスを提供し得る。いくつかの例では、「リローカライゼーション」は、特定の基準系内の、コンピューティングデバイス(たとえば、クライアントデバイス202)などのオブジェクトの位置、ロケーション、および/または配向を判定および/または識別する任意のプロセスを含み得る。したがって、いくつかの例では、「リローカライゼーションサービス」は、現実世界の環境に関連する好適な情報(たとえば、現実世界の環境情報212)とともに提供されたとき、現実世界の環境に関連する情報に基づいて現実世界の環境内の位置、ロケーション、および/または配向を判定および/または識別し得る、任意のコンピュータ提供サービスを含み得る。
いくつかの例では、リローカライゼーションサービスはまた、現実世界の環境内のロケーションにマッピングされた1つまたは複数のアンカーポイントを識別し得、識別されたアンカーポイントの位置、ロケーション、および/または配向をクライアントデバイスおよび/またはAMSサーバ208に提供し得る。さらなる例では、リローカライゼーションサービスは、アンカーポイントに対する現実世界の環境内の位置を提供し得る。たとえば、以下でより詳細に説明されるように、リローカライゼーションサービスが、イメージングデバイスによってキャプチャされた現実世界の環境の画像を提供されたとき、リローカライゼーションサービスは、イメージングデバイスが画像をキャプチャした時間において、画像をキャプチャしたイメージングデバイスの位置を識別し得る。
クライアントデバイス202のように、AMSサーバ208は、概して、コンピュータ実行可能命令を読み取るおよび/または実行することが可能な任意のタイプまたは形態のコンピューティングデバイスを表す。少なくとも1つの実施形態では、AMSサーバ208は、クライアントデバイス202および/またはRLSサーバ206から1つまたは複数の指示を受け付け得る。AMSサーバ208の例は、限定はしないが、サーバ、ラップトップ、タブレット、セルラーフォン、(たとえば、スマートフォン)、携帯情報端末(PDA)、マルチメディアプレーヤ、埋込みシステム、ウェアラブルデバイス(たとえば、スマートウォッチ、スマートグラスなど)、ゲーミングコンソール、同上の1つまたは複数の組合せ、あるいは任意の他の好適なモバイルコンピューティングデバイスを含む。
少なくとも1つの例では、AMSサーバ208は、アセット管理サービスを提供し得る。いくつかの例では、「アセット管理サービス」は、コンピューティングデバイス(たとえば、RLSサーバ206、クライアントデバイス202など)が、アンカーポイントに関連する好適な情報(たとえば、アンカーポイント識別子218)をサービスに提供したとき、サービスが、1つまたは複数のデジタルアセットを識別し得および/あるいは1つまたは複数のデジタルアセットをクライアントデバイスに提供し得る、任意のコンピュータ提供サービスを含み得る。いくつかの例では、「デジタルアセット」(本明細書ではいくつかの例では「仮想オブジェクト」とも呼ばれる)は、限定はしないが、現実世界の環境内の位置に関連し得る任意のデータ、情報、命令、モデル、オブジェクト、および/またはリソースを含み得る。
たとえば、デジタルアセットは、好適なフロントエンドクライアントデバイス(たとえば、クライアントデバイス202)が、現実世界の環境内の位置に対応する人工環境内の位置において提示(たとえば、表示)し得る、(上述の仮想の花などの)2次元または3次元グラフィカルオブジェクトまたはモデルを含み得る。追加または代替の例では、デジタルアセットは、好適なフロントエンドクライアントデバイス(たとえば、クライアントデバイス202)が、現実世界の環境内の位置に対応する人工環境内の位置において提示(たとえば、再生)し得る、オーディオリソース(たとえば、デジタルオーディオファイル)を含み得る。たとえば、ユーザが博物館を見学するとき、彼または彼女がフロントエンドデバイス(たとえば、クライアントデバイス202)を使用してAR案内アプリケーションと相互作用していると想定する。デジタルアセットは、芸術作品を制作したアーティストの経歴の詳細について説明するオーディオファイルを含み得る。ユーザがAR案内アプリケーションを介して芸術作品を閲覧するとき、フロントエンドデバイスはオーディオファイルを提示(たとえば、再生)し得る。
さらなる例として、デジタルアセットは、フロントエンドデバイスの現実世界の位置に基づいて1つまたは複数の行為を実施することをフロントエンドクライアントデバイス(たとえば、クライアントデバイス202)に行わせ得る命令を含み得る。例示のために、ユーザが、フロントエンドクライアントデバイス(たとえば、クライアントデバイス202)を使用してAR品物集め競走ゲームをプレイしていると想定する。ゲームは、建築物内の指定された部屋を発見することをユーザに要求し得る。デジタルアセットは、クライアントデバイス202が指定された部屋のほうへ向いているとき、人工環境のビューを赤に陰影付けし、クライアントデバイス202が指定された部屋から離れて向いているとき、人工環境のビューを青に陰影付けすることをフロントエンドクライアントデバイスに行わせ得る命令を含み得る。
さらに、いくつかの例では、デジタルアセットは、上記で説明されたように、アンカーポイントに関連し(たとえば、「アタッチ」され)得る。したがって、クライアントが、アンカーポイントに関連する好適な情報(たとえば、アンカーポイント識別子218)をアセット管理サービスに提供したとき、アセット管理サービスは、アンカーポイントに関連する1つまたは複数のデジタルアセットを識別しおよび/またはクライアントに提供し得る。
少なくとも1つの例では、クライアントデバイス202、RLSサーバ206、およびAMSサーバ208は、モジュール102のうちの1つまたは複数を用いてプログラムされたコンピューティングデバイスであり得る。モジュール102の機能のすべてまたは一部分が、クライアントデバイス202、RLSサーバ206、AMSサーバ208、および/または任意の他の好適なコンピューティングシステムによって実施され得る。以下でより詳細に説明されるように、図1からのモジュール102のうちの1つまたは複数は、クライアントデバイス202、RLSサーバ206、および/またはAMSサーバ208の少なくとも1つのプロセッサによって実行されたとき、クライアントデバイス202、RLSサーバ206、および/またはAMSサーバ208が、疎結合されたリローカライゼーションサービスおよびアセット管理サービスを介して人工環境内でデジタルアセットを提示することを可能にし得る。
多くの他のデバイスまたはサブシステムが、図1のシステム100および/または図2のシステム200に接続され得る。逆に、本明細書で説明および/または例示される実施形態を実践するために、図1および図2に例示された構成要素およびデバイスのすべてが存在する必要はない。上記で言及されたデバイスおよびサブシステムはまた、図2に図示されているものとは異なる仕方で相互接続され得る。システム100および200はまた、任意の数のソフトウェア、ファームウェア、および/またはハードウェア構成を採用し得る。たとえば、本明細書で開示される例示的な実施形態のうちの1つまたは複数は、コンピュータ可読媒体上にコンピュータプログラム(コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、および/またはコンピュータ制御論理とも呼ばれる)として符号化され得る。
図3は、疎結合されたリローカライゼーションサービスおよびアセット管理サービスを介して人工環境内でデジタルアセットを提示するための例示的なコンピュータ実装方法300の流れ図である。図3に図示されているステップは、図1のシステム100、図2のシステム200、および/あるいは同上の1つまたは複数の変形形態または組合せを含む、任意の好適なコンピュータ実行可能コードおよび/またはコンピューティングシステムによって実施され得る。一例では、図3に図示されているステップの各々は、構造が複数のサブステップを含むおよび/または複数のサブステップによって表されるアルゴリズムを表し得、それの例が以下でより詳細に提供される。
図3に例示されているように、ステップ310において、本明細書で説明されるシステムのうちの1つまたは複数は、現実世界の環境内でクライアントデバイスを介して、現実世界の環境を表す情報を収集し得る。たとえば、収集モジュール104は、図2のクライアントデバイス202、RLSサーバ206、および/またはAMSサーバ208の一部として、現実世界の環境210内でクライアントデバイス202を介して、現実世界の環境情報212を収集し得る。
いくつかの例では、「現実世界の環境を表す情報」は、特定の現実世界の環境の1つまたは複数の特性に関連し得る任意の情報を含み得る。たとえば、以下でより詳細に説明されるように、現実世界の環境を表す情報は、限定はしないが、クライアントデバイス中に含まれるイメージングデバイスによってキャプチャされる現実世界の環境の少なくとも一部分の画像、イメージングデバイスによって画像をキャプチャする時間におけるイメージングデバイスの配向、イメージングデバイスの固有パラメータ、画像中に含まれる画像特徴、画像中に含まれる画像特徴に基づく特徴記述子、イメージングデバイスに関連する点における原点をもつ特徴光線、現実世界の環境内の少なくとも1つのマッピングされた位置に対するクライアントデバイスの前に判定された位置、クライアントデバイスの前に判定された位置に関連する信頼性レベル、クライアントデバイスに関連するGPS座標、現実世界の環境に関連するネットワーク識別子、同上の1つまたは複数の変形形態または組合せなどを含み得る。
収集モジュール104は、現実世界の環境内でクライアントデバイスを介して、様々なコンテキストにおいて現実世界の環境を表す情報を収集し得る。たとえば、収集モジュール104は、イメージングデバイス228を介して、現実世界の環境の少なくとも一部分の画像をキャプチャすることによって現実世界の環境情報212を収集し得る。
例示として、図4は、現実世界の環境(たとえば、現実世界の環境210)の俯瞰図400を含む。図示のように、クライアントデバイス202中に含まれるイメージングデバイス228は、現実世界の環境210のほうへ配向される。現実世界の環境210は、様々な現実世界の環境オブジェクト402(すなわち、現実世界の環境オブジェクト402-1~402-6)を含む。たとえば、現実世界の環境オブジェクト402-1は机であり得、現実世界の環境オブジェクト402-2は掛けられた絵画であり得、現実世界の環境オブジェクト404-3は植物であり得、現実世界の環境オブジェクト402-4~402-7は、それぞれ、西壁、南壁、および東壁であり得る。イメージングデバイス228は、イメージングデバイス228がキャプチャし得る現実世界の環境210の一部分を示し得る関連する視野404を有し得る。
図5は、図4に例示されたシナリオにおけるイメージングデバイス228によってキャプチャされ得る現実世界の環境210の画像500を例示する。図示のように、画像500は、現実世界の環境オブジェクト402に対応し得る様々な画像要素502(たとえば、画像要素502-1から502-6)を含む。たとえば、画像要素502-1は、現実世界のオブジェクト402-1に対応し得、画像要素502-2は、現実世界の環境オブジェクト402-2に対応し得る、など。いくつかの例では、収集モジュール104は、イメージングデバイス228を介して、画像500など、現実世界の環境210の少なくとも一部分の画像をキャプチャすることによって、現実世界の環境情報212を収集し得る。少なくとも1つの例では、収集モジュール104は、現実世界の環境情報212の少なくとも一部として、キャプチャされた画像を含み得る。
さらに、収集モジュール104は、現実世界の環境の一部分の画像をキャプチャする時間においてイメージングデバイスの配向を検出することによって、現実世界の環境情報212を収集し得る。たとえば、収集モジュール104は、イメージングデバイス228が現実世界の環境210の画像(たとえば、画像500)をキャプチャする時間においてイメージングデバイス228の配向を(たとえば、センサ230を介して)検出し得る。収集モジュール104は、次いで、現実世界の環境情報212の一部として、検出された配向を含め得る。
いくつかの例では、収集モジュール104は、クライアントデバイス202に、キャプチャされた画像に対して1つまたは複数のプロセスを実施させ得、次いで、キャプチャされた画像の代わりまたは追加として、現実世界の環境情報212の一部として画像の処理の結果を含め得る。たとえば、収集モジュール104は、画像に対するイメージングデバイスの固有パラメータの影響を低減することによって、イメージングデバイス228によってキャプチャされた画像を調整することをクライアントデバイス202、RLSサーバ206、および/またはAMSサーバ208に行わせることによって、現実世界の環境情報212を収集し得る。画像に対する1つまたは複数の固有パラメータの影響を低減および/または除去することにより、画像からひずみの1つまたは複数の形態(たとえば、レンズひずみ)を低減および/または除去し得る。
いくつかの例では、「固有パラメータ」および/または「イメージングデバイスの固有パラメータ」は、限定はしないが、物理的特性、光学特性、幾何学的特性、および/またはデジタル特性を含む、イメージングデバイス(たとえば、イメージングデバイス228)の特性を記述し得る任意の値を含み得る。固有パラメータの例は、限定はしないが、イメージングデバイスの焦点距離、イメージングデバイスの主点、イメージングデバイスのスキュー係数、イメージングデバイスのレンズによって導入される幾何学的ひずみなどを含み得る。
いくつかの例では、収集モジュール104は、較正プロセス(たとえば、幾何学的カメラ較正プロセス)を介してイメージングデバイスに関連する1つまたは複数の固有パラメータを判定および/または推定し得る。追加の例では、収集モジュール104は、イメージングデバイスの1つまたは複数の所定の固有パラメータを表すデータにアクセスし得、および/あるいはイメージングデバイスの1つまたは複数の固有パラメータ(たとえば、イメージングデバイスの焦点距離)を推定し得る。
追加の例では、収集モジュール104は、画像中に含まれる少なくとも1つの画像特徴を検出し、画像中に含まれる画像特徴に基づいて特徴記述子を生成することによって、現実世界の環境情報212をさらに収集し得る。いくつかの例では、「画像特徴」、「キーポイント」、「キーロケーション」、および/または「関心ポイント」は、コンピュータビジョンおよび/またはリローカライゼーションプロセスに関係し得、ならびに/あるいは少なくとも1つの特徴検出アルゴリズムによって画像特徴として識別され得る情報を含む画像の任意の識別可能な部分を含み得る。いくつかの例では、画像特徴は、点、エッジ、ライン、接合、またはオブジェクトなど、画像中に含まれるピクセルデータ中に含まれるおよび/またはそのピクセルデータに基づいて識別される特定の構造を含み得る。追加または代替として、画像特徴は、画像の領域(たとえば、「ブロブ」)、そのような領域間の境界のプロパティに関して記述され得、および/または画像に適用された特徴検出アルゴリズムの結果を含み得る。
特徴検出アルゴリズムの例は、限定はしないが、ハリスコーナー検出、加速セグメントテストからの特徴(FAST)、ガウシアンのラプラシアン、ガウス差分、ヘッセの行列式、最大安定極値領域(MSER)、主曲率ベース領域検出器(PCBR)、勾配ロケーションおよび配向ヒストグラム(GLOH)、強度ベース検出器、構造ベース検出器、同上の1つまたは複数の変形形態または組合せなどを含み得る。
例示として、図6は、図5の画像500と同様であるが、画像特徴インジケータ602によって様々な検出された画像特徴が示されている、画像600を図示する。
いくつかの例では、「特徴記述子」は、画像特徴の1つまたは複数のプロパティを記述する任意の情報を含み得る。たとえば、特徴記述子は、検出された画像特徴を含んでいることがある画像中に含まれるピクセルまたはピクセル領域の2次元座標を含み得る。追加または代替として、特徴記述子は、画像特徴および/または画像特徴の周囲の画像のエリアに適用された特徴記述アルゴリズムの結果を含み得る。一例として、昇速ロバスト特徴(SURF)特徴記述子が、識別された関心ポイントの「近傍」内のピクセルの強度分布の評価に基づいて生成され得る。
多くの特徴検出アルゴリズムがまた、特徴記述アルゴリズムを含み得および/または特徴記述アルゴリズムに関連し得る。たとえば、スケール不変特徴変換(SIFT)アルゴリズムは、ガウス差分特徴検出アルゴリズムに基づく、特徴検出アルゴリズム、ならびに、概して、検出された画像特徴の周囲の16×16近傍を抽出し、この近傍を4×4サブブロックに再分割し、サブブロックに基づいてヒストグラムを生成し、128個の値をもつ特徴記述子を生じる、「キーポイント記述子」特徴記述アルゴリズム、の両方を含む。別の例として、配向FASTおよび回転BRIEF(ORB)アルゴリズムは、FASTコーナー検出アルゴリズムの変形形態を使用して画像特徴を検出し、バイナリロバスト独立基本特徴(BRIEF)特徴記述アルゴリズムの修正バージョンに基づいて特徴記述子を生成する。特徴検出アルゴリズムおよび/または特徴記述アルゴリズムの追加の例は、限定はしないが、昇速ロバスト特徴(SURF)、KAZE、加速KAZE(AKAZE)、バイナリロバスト不変スケーラブルキーポイント(BRISK)、勾配ロケーションおよび配向ヒストグラム(GLOH)、配向勾配ヒストグラム(HOG)、マルチスケール配向パッチ記述子(MOTS)、同上の1つまたは複数の変形形態または組合せなどを含み得る。
収集モジュール104は、画像中に含まれる少なくとも1つの画像特徴を検出し得、好適な特徴検出アルゴリズムおよび/または好適な特徴記述アルゴリズムを画像に適用することなどによって、任意の好適な仕方で画像中に含まれる画像特徴に基づいて特徴記述子を生成し得る。たとえば、収集モジュール104は、画像中に含まれる少なくとも1つの画像特徴を検出し得、ORB特徴検出および特徴記述アルゴリズムを画像に適用することによって、検出された画像特徴に基づいて1つまたは複数の特徴記述子を生成し得る。これは、キャプチャされた画像中に含まれる特徴を記述し得る少なくとも1つの特徴記述子を生じ得る。収集モジュール104は、次いで、現実世界の環境情報212の少なくとも一部として特徴記述子を含め得る。
追加の実施形態では、収集モジュール104は、画像特徴および画像をキャプチャする時間におけるイメージングデバイスの配向に基づいて、イメージングデバイスに関連する点における原点を含み、特徴光線を画像特徴と交差させる方向をもつ特徴光線を識別することによって、現実世界の環境情報212をさらに収集し得る。
収集モジュール104は、任意の好適な仕方で特徴光線を識別し得る。たとえば、収集モジュール104は、上記で説明された仕方のいずれかで画像からイメージングデバイス228の1つまたは複数の固有パラメータの影響を除去し得る。収集モジュール104は、次いで、「ピンホールカメラ」数学的モデルを確立し得、この数学的モデルは、イメージングデバイスのレンズを原点としてもち、画像を、原点からカメラの焦点距離の距離に位置し、画像がキャプチャされたときのイメージングデバイスの検出された配向に従って配向された画像平面としてもつ。収集モジュール104は、この数学的モデルを介して、イメージングデバイスに関連する位置(たとえば、イメージングデバイスのレンズ)における原点をもち、光線を、画像中に含まれる検出された画像特徴と交差させおよび/または画像特徴を通過させる方向をもつ、光線を識別し得る。収集モジュール104は、次いで、現実世界の環境情報212の一部として特徴光線を含め得る。
キャプチャされた画像の代わりに、現実世界の環境情報212の一部として特徴記述子および/または特徴光線を含めることによって、いくつかの利益が実現され得る。たとえば、これにより、特徴記述子および/または特徴光線が、生画像よりもクライアントデバイス(たとえば、クライアントデバイス202)からリローカライゼーションサービス(たとえば、RLSサーバ206)に送信するために少ない帯域幅を必要とし得るので、帯域幅リソースが温存され得る。さらに、特徴記述子を生成するようにおよび/または特徴光線を識別するようにクライアントデバイス(たとえば、クライアントデバイス202)に指示することにより、クライアントデバイスのコンピューティングリソースを効率的に利用し得、リローカライゼーションサービス(たとえば、RLSサーバ206)のコンピューティングリソースを温存し得る。さらに、キャプチャされた画像の代わりに特徴記述子および/または特徴光線を送信することにより、画像から任意の機密および/またはプライベート情報を効果的に除去し、それにより、送信データを匿名化し、ユーザプライバシーを保護し得る。
いくつかの実施形態では、収集モジュール104は、現実世界の環境情報212の一部として、センサ230を用いて収集、検出、知覚された、および/またはセンサ230に関連する情報を含め得る。たとえば、上述のように、センサ230は、現実世界の環境に関連する情報(たとえば、現実世界の環境情報212)を収集(たとえば、観測、閲覧、受信、位置特定、識別、記憶など)し得る任意の好適なセンサを含み得る。収集モジュール104は、現実世界の環境情報212の一部として、この情報の任意の組合せを含め得る。
さらに、いくつかの例では、クライアントデバイスが、本明細書で説明されるシステムおよび方法のうちの1つまたは複数を介して前にリローカライズされているときなどにおいて、収集モジュール104は、現実世界の環境情報212の一部として、現実世界の環境内の少なくとも1つのマッピングされた位置に対するクライアントデバイスの前に判定された位置をさらに含み得る。たとえば、収集モジュール104は、現実世界の環境情報212の一部として、前のアンカーポイントに関連する識別子、および前のアンカーポイントのマッピングされた位置とクライアントデバイス202の前に判定された位置との間の相対転換を含め得る。さらに、いくつかの例では、収集モジュール104は、追加または代替として、クライアントデバイス202の前に判定された位置に関連する信頼性レベルを含み得る。たとえば、前のリローカライゼーションの結果として、クライアントデバイス202が、前のアンカーポイント識別子、前のアンカーポイントのマッピングされたロケーションとクライアントデバイス202の前の位置との間の前の相対転換、および92%の信頼性レベルを受信したと想定する。収集モジュール104は、現実世界の環境情報212の少なくとも一部としてこの情報を含め得、リローカライゼーションサービスは、現在および/または後続のリローカライゼーションプロセスにおいてこの情報を利用し得る。
図3に戻ると、ステップ320において、本明細書で説明されるシステムのうちの1つまたは複数は、現実世界の環境を表す情報をリローカライゼーションサービスに送信し得る。たとえば、送信モジュール106は、図2のクライアントデバイス202、RLSサーバ206、またはアセット管理サービスサーバ208の一部として、現実世界の環境情報212をリローカライゼーションサーバ206に送信し得る。
送信モジュール106は、任意の好適な仕方で現実世界の環境情報212をリローカライゼーションサーバ206に送信することをクライアントデバイス202、RLSサーバ206、またはアセット管理サービスサーバ208に行わせ得る。たとえば、上記で説明されたように、モジュール102のうちの少なくとも1つ(たとえば、収集モジュール104)は、イメージングデバイス228および/またはセンサ230を介して現実世界の環境情報212を収集することをクライアントデバイス202に行わせ得る。送信モジュール106は、次いで、ネットワーク204を介して(たとえば、ネットワーク204を実装する任意の好適な通信媒体および/またはプロトコルを介して)現実世界の環境情報212をRLSサーバ206に送信することをクライアントデバイス202に行わせ得る。
いくつかの実施形態では、RLSサーバ206が現実世界の環境情報212を受信したとき、本明細書で説明されるシステムのうちの1つまたは複数は、現実世界の環境210内でクライアントデバイス202をリローカライズするための1つまたは複数の動作を実施し得る。たとえば、少なくとも1つの実施形態では、測位モジュール116は、図2のクライアントデバイス202、RLSサーバ206、および/またはアセット管理サービスサーバ208の一部として、現実世界の環境情報212の一部(たとえば、GPS座標、ネットワーク識別子など)に基づいてクライアントデバイス202の粗い位置を判定し、粗い位置および現実世界の環境情報212の追加の一部(たとえば、キャプチャされた画像、キャプチャされた画像をキャプチャする時間におけるイメージングデバイスの配向、画像特徴、特徴記述子、特徴光線など)に基づいてクライアントデバイス202の細かい位置を識別し得、クライアントデバイスの細かい位置に基づいてアンカーポイントを選択し得る。
いくつかの例では、「粗い位置」は、現実世界の環境の領域を含み、記述し得、および/またはその領域に関連し得る、任意の情報を含み得る。たとえば、クライアントデバイス(たとえば、クライアントデバイス202)の粗い位置は、限定はしないが、GPS座標の周囲の現実世界の環境の領域(たとえば、GPS座標のあらかじめ定義された距離内の現実世界の環境の領域)、クライアントデバイスがその内部でネットワーク識別子にアクセスしおよび/またはネットワーク識別子を観測し得る現実世界の環境の領域、クライアントデバイスが現在近くまたは内部にある現実世界の環境の領域に関連し得るおよび/または対応し得るあらかじめ定義されたマップの一部分などを含み得る。
例示として、図7は、現実世界の環境のマップ700を図示する。マップ700は、予備コンピュータビジョンならびに/または同時ローカライゼーションおよびマッピング(SLAM)プロセスなどを介して、任意の好適な仕方で生成および/または事前に生成され得る。図示のように、マップ700は、本明細書ではリローカライゼーションエンティティ702(たとえば、リローカライゼーションエンティティ702-1~702-4)と呼ばれる、様々なあらかじめ定義された領域を含む。「リローカライゼーションエンティティ」は、クライアントデバイス(たとえば、クライアントデバイス202)が、マップ700によって表される現実世界の環境のエリアまたは領域内の位置にリローカライズすることを可能にするのに十分な情報を含む、マップ700の任意の部分を含み得る。
いくつかの例では、図7にさらに図示されているように、リローカライゼーションエンティティは、リローカライゼーションエンティティが、追加のリローカライゼーションエンティティにやはり対応および/または関連する現実世界の環境の少なくとも一部分に対応し得るおよび/または関連し得るという点で、互いに「重複」し得る。たとえば、図7に図示されているように、リローカライゼーションエンティティ702-3は、リローカライゼーションエンティティ702-1と部分的に重複し、これは、リローカライゼーションエンティティ702-1とリローカライゼーションエンティティ702-3が両方とも、現実世界の環境の同じ部分(すなわち、リローカライゼーションエンティティ702-3が重複しリローカライゼーションエンティティ702-1が重複する、マップ700の一部分によって表される現実世界の環境の領域)に少なくとも部分的に関連および/または対応することを示し得る。
図7にさらに図示されているように、マップ700は、現実世界の環境内のマッピングされた位置および/またはポーズを表し得る1つまたは複数のアンカーポイント704(たとえば、アンカーポイント704-1~704-10)を含み得る。各アンカーポイント704は、1つまたは複数のリローカライゼーションエンティティ702中に含まれ得る。さらに、リローカライゼーションエンティティ702が互いに重複し得るので、各アンカーポイント704は、1つまたは複数のリローカライゼーションエンティティ702中に含まれ得る。たとえば、アンカーポイント704-1は、リローカライゼーションエンティティ702-1中に含まれ得るが、アンカーポイント704-3は、リローカライゼーションエンティティ702-1とリローカライゼーションエンティティ702-3の両方中に含まれ得る。
さらに、アンカーポイント704を接続している点線(たとえば、アンカーポイント704-1とアンカーポイント704-2を接続している点線、アンカーポイント704-1とアンカーポイント704-5を接続している点線など)によって指摘されるように、アンカーポイント704は、連結グラフとして(たとえば、ローカライゼーションデータ142の一部としてデータストア140内で)表現および/または記憶され得る。いくつかの例では、アンカーポイント間の接続は、アンカーポイント間の相対変換を表し得、その相対変換として表現され得、および/またはその相対変換として記憶され得る。グラフを横断することによって、モジュール102のうちの1つまたは複数(たとえば、測位モジュール116)は、接続されたアンカーポイント間の(たとえば、アンカーポイント704-1とアンカーポイントとの間の)相対変換を判定し得る。いくつかの例では、マップ(たとえば、マップ700)内に含まれるアンカーポイントの相対ポーズ、および/またはマップの特定の部分(たとえば、リローカライゼーションエンティティ702)は、クライアントデバイスが第1のアンカーポイントに関してリローカライズし、第2のクライアントデバイスが第2のアンカーポイントに関してリローカライズした場合、両方のクライアントデバイスが同じ基準系にリローカライズされ得るように、一貫していることがある。この一貫性は、以下でより詳細に説明されるように、アンカーポイント間の相対変換を事前に判定および/またはキャッシュする能力などの利益を提供し得る。
図700はまた、仮想オブジェクト706(たとえば、仮想オブジェクト706-1~706-3)を含む。仮想オブジェクト706の各々と、アンカーポイント704のうちの少なくとも1つとの間の破線矢印(たとえば、アンカーポイント704-2から仮想オブジェクト706-1への矢印)によって図示されるように、1つまたは複数の仮想オブジェクトは、1つまたは複数のアンカーポイントにアタッチされ得る(たとえば、1つまたは複数のアンカーポイントのマッピングされた位置に対して仮想環境内に位置し得る)。たとえば、仮想オブジェクト706-1は、アンカーポイント704-2、704-4、および704-6にアタッチされ得る。したがって、仮想オブジェクト706-1は、アンカーポイント704-2、704-4、および/または704-6のうちの1つまたは複数を参照して人工環境内で識別されおよび/または位置し得る。いくつかの例では、これらの「アタッチメント」は、アンカーポイントのマッピングされた位置と、アンカーポイントにアタッチされた仮想オブジェクトの位置との間の相対変換に関して表現され得る。簡略化された例として、仮想オブジェクト704-7の位置は、(マップ700の基準系内で)「アンカーポイント706-2の右側に2メートル」として表現され得る。
測位モジュール116は、任意の好適な仕方でクライアントデバイス202の粗い位置を判定し得る。たとえば、上記で説明されたように、現実世界の環境情報212は、GPS座標、ネットワーク識別子(たとえば、ネットワーク名、サービスセット識別子(SSID)、セルラーおよび/またはモバイルネットワーク識別子など)など、クライアントデバイス202の位置に関連する任意の好適な粗い位置情報を含み得る。測位モジュール116は、この情報を使用して、クライアントデバイス202の現実世界の位置に対応し得るおよび/または関連し得るマップ700の1つまたは複数の部分(たとえば、マップ700内の1つまたは複数のリローカライゼーションエンティティ702)を識別し得る。このようにして、少なくともいくつかの実施形態では、モジュール102のうちの1つまたは複数(たとえば、測位モジュール116)は、クライアントデバイス202の現実世界の位置に関連するおよび/または対応する1つまたは複数のリローカライゼーションエンティティを識別することによって、クライアントデバイス202の粗い位置を判定し得る。
たとえば、現実世界の環境情報212は、マップ700中に含まれるマッピングされた位置および/または領域に対応し得るおよび/または関連し得る識別子「BuildingA3rdFloorWiFi」をもつSSIDを含み得る。測位モジュール116は、現実世界の環境情報212にアクセスし、含まれたSSIDを識別し得、クライアントデバイス(たとえば、クライアントデバイス202)が、含まれたSSIDをその内で観測し得る、現実世界の環境210の領域に関連し得るおよび/または対応し得るマップ700の1つまたは複数の部分(たとえば、マップ700内の1つまたは複数のリローカライゼーションエンティティ702)を識別しおよび/またはそれらの部分にアクセスし得る。
追加の例として、現実世界の環境情報212がGPS座標をも含むことを想定する。測位モジュール116は、現実世界の環境情報212にアクセスし、含まれたGPS座標を識別し得、(1)クライアントデバイスが、含まれたSSIDをその内で観測し得、(2)クライアントデバイスが、含まれたGPS座標をその内で判定(たとえば、受信および/または三角測量)し得る、現実世界の環境210の領域に関連し得るおよび/または対応し得るマップ700の1つまたは複数の部分(たとえば、1つまたは複数のリローカライゼーションエンティティ702)を識別しおよび/またはそれらの部分にアクセスし得る。
上記の例を続けると、現実世界の環境情報212中に含まれるSSIDおよびGPS座標に基づいて、測位モジュール116は、クライアントデバイス202が、図7のインジケータ708によって表される現実世界の環境210の領域内にあると判定し得る。したがって、測位モジュール116は、クライアントデバイスが、リローカライゼーションエンティティ702-1およびリローカライゼーションエンティティ702-3に対応する現実世界の環境210の領域内にあると判定することによって、クライアントデバイス202の粗い位置を識別し得る。
さらに、いくつかの例では、測位モジュール116は、粗い位置および現実世界の環境を表す情報の追加の一部に基づいてクライアントデバイスの細かい位置を識別し得る。たとえば、測位モジュール116は、粗い位置および現実世界の環境情報212の少なくとも一部に基づいてクライアントデバイス202の細かい位置を識別し得る。いくつかの例では、クライアントデバイスの「細かい位置」は、現実世界の環境内のクライアントデバイスのリローカライズされた位置および/またはポーズを含み得、ならびに/あるいはリローカライズされた位置および/またはポーズに対応し得る。
測位モジュール116は、様々なコンテキストにおいてクライアントデバイス202の細かい位置を識別し得る。たとえば、上述のように、現実世界の環境情報212は、様々な画像情報(たとえば、キャプチャされた画像、1つまたは複数の画像特徴、1つまたは複数の特徴記述子、1つまたは複数の特徴光線など)を含み得る。測位モジュール116は、この画像情報を使用して、1つまたは複数のコンピュータビジョンおよび/またはSLAM技法を介してクライアントデバイス202の細かい位置を識別し得る。
たとえば、上述のように、マップ700は、コンピュータビジョンおよび/またはSLAMマッピングプロセスに従って事前に生成され得る。したがって、図7に図示されている要素に加えて、マップ700は、1つまたは複数の画像特徴に関連する情報(たとえば、1つまたは複数の特徴記述子、1つまたは複数の特徴光線など)を含み得る。したがって、測位モジュール116は、アンカーポイントに関連し得る1つまたは複数の画像特徴を、現実世界の環境情報212中に含まれ得る1つまたは複数の画像特徴、特徴記述子、および/または特徴光線と相関および/または一致させることによって、アンカーポイントを識別し得る。
追加または代替として、現実世界の環境情報212が画像(たとえば、イメージングデバイス228を介してキャプチャされた画像)を含む実施形態では、測位モジュール116は、本明細書で説明されるいずれかの仕方を含む任意の好適な仕方で、画像中に含まれる画像特徴を識別し、および/または識別された特徴に関連する特徴記述子を生成し得る。測位モジュール116は、次いで、この情報を使用して、本明細書で説明される仕方のいずれかでクライアントデバイスの細かい位置を識別し得る。
図7によって例示されている例に戻ると、測位モジュール116は、クライアントデバイス(たとえば、クライアントデバイス202)が、図7のインジケータ708によって表される現実世界の環境210の領域内に位置すると判定し得、したがって、現実世界の環境情報212中に含まれおよび/または現実世界の環境情報212から導出される1つまたは複数の画像特徴、特徴記述子、および/または特徴光線を、リローカライゼーションエンティティ702-1および/またはリローカライゼーションエンティティ702-3中に含まれる1つまたは複数のアンカーポイントに関連する1つまたは複数の画像特徴記述子および/または特徴光線と相関および/または一致させることによって、アンカーポイントを識別することを試み得る。
いくつかの例では、測位モジュール116がすでに、クライアントデバイス202の粗い位置が1つまたは複数のリローカライゼーションエンティティ(たとえば、リローカライゼーションエンティティ702-1および/またはリローカライゼーションエンティティ702-3)を含むと判定していることがあるとき、測位モジュール116は、探索空間から、他のリローカライゼーションエンティティ(たとえば、リローカライゼーションエンティティ702-2および702-4中に含まれるアンカーポイント)内に位置するアンカーポイントを除外し得る。粗い位置を除いて(たとえば、リローカライゼーションエンティティ702-1およびリローカライゼーションエンティティ702-3を除いて)アンカーポイントを除外することにより、測位モジュール116が、マップ700中に含まれる1つまたは複数のアンカーポイントを識別するときに記憶、アクセス、処理、および/または探索する必要があり得るデータの範囲および/または量を限定し得、それにより、リローカライゼーションの速度および/または効率を改善し得る。
いくつかの例では、測位モジュール116は、1つまたは複数のリローカライゼーションエンティティ内でただ1つのアンカーポイントを識別し得る。追加の例では、測位モジュール116は、1つまたは複数のリローカライゼーションエンティティ内で2つ以上のアンカーポイントを識別し得る。いずれの場合も、測位モジュール116は、識別されたアンカーポイントのうちの少なくとも1つを選択し得、選択されたアンカーポイントのマッピングされた位置に対してクライアントデバイスの現実世界の環境内の位置を判定し得る。たとえば、測位モジュール116は、本明細書で説明されるもの(たとえば、コンピュータビジョン測位技法、SLAM測位技法、慣性航行測位技法など)など、任意の好適な測位技法または測位技法の組合せを介して、現実世界の環境情報212が現実ワードの環境210内のクライアントデバイス202のロケーション、配向、位置、および/またはポーズを示すと判定し得る。測位モジュール116は、次いで、選択されたアンカーポイントのロケーション、配向、位置および/またはポーズを、クライアントデバイス202の判定されたロケーション、配向、位置および/またはポーズと比較し、選択されたアンカーの位置およびクライアントデバイス202の現在のポーズに基づいて相対変換を判定し得、クライアントデバイス202は、選択されたアンカーポイントのマッピングされた位置に対して現実世界の環境210内でクライアントデバイス202をリローカライズし得る。
測位モジュール116は、次いで、選択されたアンカーポイントに関連する情報(たとえば、アンカーポイント情報214)および判定された相対変換(たとえば、クライアントデバイス位置220)を(たとえば、RLSサーバ206からネットワーク204を介して)クライアントデバイス202に送信し得る。
図8は、リローカライゼーションサービスが、クライアントデバイスの粗い位置を判定し得、粗い位置に基づいてクライアントデバイスの細かい位置を識別し得、クライアントデバイスの細かい位置に基づいてアンカーポイントを選択し得る、1つの可能な方法のための流れ図である。図示のように、リローカライゼーションクエリ802において、現実世界の環境に関連する情報(たとえば、現実世界の環境情報212)が、リローカライゼーションサービス804に提供される(たとえば、クライアントデバイス202などのクライアントデバイスによってリローカライゼーションサービスに送信される)。粗いマップクエリ806において、位置メタデータ(たとえば、GPS座標、ネットワーク識別子など)が、リローカライゼーションクエリ802から抽出され、粗いマップ探索器808に送られる。粗いマップ探索器808は、いくつかのリローカライゼーションエンティティを識別し、それらのリローカライゼーションエンティティを、K個の最も近いリローカライゼーションエンティティ810(図8では「K個の最も近いRelocEnts810」)として、リローカライゼーションサービス804に提供する。
識別されたリローカライゼーションエンティティごとに、リローカライゼーションサービス804は、リローカライゼーションクエリ812(図8では「relocクエリ」812-1から812-K)を、対応するリローカライザプロセス814(たとえば、図8ではリローカライザ814-1から814-K)にサブミットし、この対応するリローカライザプロセス814は、識別されたリローカライゼーションエンティティに関してきめの細かいマッチング(たとえば、画像特徴マッチング)およびリローカライゼーションを実施する。いくつかの例では、リローカライザ814は並列に動作し得る。追加の例では、リローカライザ814は、何らかのリローカライゼーションエンティティへのリローカライゼーション後の早期退出とともに、優先度付けを用いて動作し得る。
リローカライザ814は、リローカライザ応答816(たとえば、図8では「reloc応答」816-1から816-K)をリローカライゼーション応答アグリゲータ818に送り得、リローカライゼーション応答アグリゲータ818は、リローカライザ応答816をアグリゲートし得、アグリゲートされたリローカライゼーション応答820をリローカライゼーションサービス804に送り得る。リローカライゼーションサービス804は、次いで、アグリゲートされたリローカライゼーション応答820をリローカライゼーション応答822として再パッケージし得、リローカライゼーション応答822をクライアントデバイス(たとえば、クライアントデバイス202)に送り得る。
図3に戻ると、ステップ330において、本明細書で説明されるシステムのうちの1つまたは複数は、現実世界の環境を表す情報に応答してリローカライゼーションサービスから、(1)現実世界の環境内のマッピングされたロケーションを含み得るアンカーポイントに関連する情報、および(2)アンカーポイントのマッピングされたロケーションに対するクライアントデバイスの現実世界の環境内の判定されたロケーションを受信し得る。たとえば、受信モジュール108は、図2のクライアントデバイス202、RLSサーバ206、および/またはアセット管理サービスサーバ208の一部として、現実世界の環境情報212に応答してRLSサーバ206から、(1)アンカーポイント位置216を含み得るアンカーポイント情報214、および(2)クライアントデバイス位置220を受信し得る。
受信モジュール108は、様々なコンテキストにおいて、アンカーポイント情報214およびクライアントデバイス位置220を受信し得る。たとえば、上記で説明されたように、モジュール102のうちの1つまたは複数(たとえば、測位モジュール116)は、RLSサーバ206の一部として、アンカーポイントを選択し得、アンカーポイントに対するクライアントデバイス202の現実世界の環境210内のロケーション(たとえば、クライアントデバイス位置220)を判定し得る。リローカライゼーションサービス(たとえば、RLSサーバ206)は、次いで、アンカーポイント情報214として、選択されたアンカーポイントに関連する情報を、およびクライアントデバイス位置220として、選択されたアンカーポイントに対するクライアントデバイス202の現実世界の環境210内の判定されたロケーションを、ネットワーク204を介してクライアントデバイス202に送信し得る。受信モジュール108は、次いで、クライアントデバイス202の一部として、ネットワーク204を容易にする好適な通信プロトコルおよび/または媒体に従って、ネットワーク204上で送信されるデータの1つまたは複数のパケットとして、ネットワーク204を介してアンカーポイント情報214およびクライアントデバイス位置220を受信し得る。受信モジュール108は、次いで、クライアントデバイス202の一部として、ネットワーク204を介してアンカーポイント情報214およびクライアントデバイス位置220を受信し得る。
図3に戻ると、ステップ340において、本明細書で説明されるシステムのうちの1つまたは複数は、アンカーポイントに関連する識別子を含み得るクエリをアセット管理サービスに送り得る。たとえば、送りモジュール110は、図2のクライアントデバイス202、RLSサーバ206、またはAMSサーバ208の一部として、アンカーポイント識別子218を含み得るクエリ222をAMSサーバ208に送り得る。
クエリ222は、アンカーポイント識別子218に関連する情報(たとえば、アンカーポイント識別子218に関連するアンカーポイント「にアタッチされた」1つまたは複数のデジタルアセット)についてのアセット管理サービス(たとえば、AMSサーバ208)に対する要求を含む任意の情報を含み得る。同様に、アンカーポイント識別子218は、現実世界の環境内のマッピングされた位置(たとえば、アンカーポイント位置216)に関連し得る、および/または現実世界の環境内のマッピングされた位置を識別するために使用され得る、任意の情報を含み得る。たとえば、アンカーポイント識別子218は、限定はしないが、アンカーポイント位置216へのデータベース参照、アンカーポイント位置216を含むデータベース(たとえば、データストア140)中のレコードへのポインタ、アンカーポイント位置216の記述、アンカーポイント位置216を表すデータの記憶ロケーションなどを含み得る。いくつかの例では、上記で説明されたように、アンカーポイント識別子218は、アンカーポイント情報214の一部として含まれ得る。
送りモジュール110は、任意の好適な仕方で、アンカーポイント識別子218を含み得るクエリ222をAMSサーバ208に送ることをクライアントデバイス202、RLSサーバ206、またはAMSサーバ208に行わせ得る。たとえば、送りモジュール110は、アンカーポイント情報214内のアンカーポイント識別子218を識別することと、AMSサーバ208中に記憶、維持、および/または含まれるデータについての要求内にアンカーポイント識別子218を含めることによってクエリ222を生成することと、ネットワーク204を介して(たとえば、ネットワーク204を実装する任意の好適な通信媒体および/またはプロトコルを介して)クエリ222をAMSサーバ208に送信することとによって、クライアントデバイス202にクエリ222を生成させ得る。
図3に戻ると、ステップ350において、本明細書で説明されるシステムのうちの1つまたは複数は、クエリに応答してアセット管理サービスから、少なくとも1つのデジタルアセットを表す情報を取得し得る。たとえば、取得モジュール112は、図2のクライアントデバイス202、RLSサーバ206、またはアセット管理サービスサーバ208の一部として、クエリ222に応答してアセット管理サービスサーバ208から、デジタルアセット224を取得し得る。
取得モジュール112は、任意の好適な仕方で、クエリ222に応答してAMSサーバ208から、デジタルアセット224を取得することをクライアントデバイス202、RLSサーバ206、またはAMSサーバ208に行わせ得る。たとえば、取得モジュール112は、クライアントデバイス202からクエリ222を受信すると、データストア140からのアセットデータ144にアクセスすることをAMSサーバ208に行わせ得、アンカーポイント識別子218を使用して、アンカーポイント識別子218に関連するデジタルアセット224を識別することをAMSサーバ208に行わせ得る。デジタルアセット224を識別すると、取得モジュール112は、(たとえば、クライアントデバイス202を介した)人工環境内の提示のために、ネットワーク204を介して(たとえば、ネットワーク204を実装する任意の好適な通信媒体および/またはプロトコルを介して)デジタルアセット224をクライアントデバイス202に送ることをAMSサーバ208に行わせ得る。したがって、取得モジュール112は、クライアントデバイス202の一部として、ネットワーク204を介してAMSサーバ208からデジタルアセット224を取得し得る。
図3に戻ると、ステップ360において、本明細書で説明されるシステムのうちの1つまたは複数は、現実世界の環境内のクライアントデバイスの判定された位置およびアンカーポイントのマッピングされた位置に対して人工環境内の位置においてデジタルアセットを提示し得る。たとえば、提示モジュール114は、図2のクライアントデバイス202、RLSサーバ206、またはAMSサーバ208の一部として、提示位置226においてデジタルアセット224を提示し得、提示位置226は、クライアントデバイス位置220およびアンカーポイント位置216に対する人工環境内の位置を表し得る。
いくつかの例では、「人工環境」は、限定はしないが、2次元環境、3次元環境、VR環境、AR環境、同上の1つまたは複数の組合せなどを含む、任意のコンピュータ生成された環境を含み得る。いくつかの例では、人工環境は、現実世界の環境(たとえば、現実世界の環境210)の2次元または3次元表現を含み得る。いくつかの例では、人工環境は、現実世界の環境の画像とオーバーレイおよび/または合成され得る。いくつかのそのような例では、人工環境中に含まれる1つまたは複数のデジタルアセットは、ユーザが合成画像を閲覧したとき、現実世界の環境内に存在するようにユーザには見え得る。
提示モジュール114は、様々なコンテキストにおいて、提示位置226においてデジタルアセット224を提示し得る。たとえば、クライアントデバイス位置220を受信すると、提示モジュール114は、クライアントデバイス202によって維持される現実世界の環境210の局所座標系および/またはローカルマップが現実世界の環境210と整合および/または再整合され得るように現実世界の環境210の局所座標系および/またはローカルマップを調整することによって、現実世界の環境210内でクライアントデバイス202をリローカライズし得る。
たとえば、図7を参照しながら上記で説明されたように、測位モジュール116は、アンカーポイント位置216からクライアントデバイス位置220(すなわち、アンカーポイント位置216に対するクライアントデバイス202の位置)への相対変換を判定し得、クライアントデバイス位置220の一部として相対変換を含め得る。この相対変換に基づいて、提示モジュール114は、クライアントデバイス202によって維持される現実世界の環境210のローカルマップ内のクライアントデバイス202の位置を更新し得る。
いくつかの例では、クライアントデバイス202は、人工現実環境内のクライアントデバイス202の位置が、現実世界の環境210内のクライアントデバイス位置220に対応し得るように、人工環境を提示し得る。したがって、クライアントデバイス202は、人工環境内の位置が現実世界の環境210内の位置と整合するように、現実世界の環境210内でリローカライズされ得、クライアントデバイス202およびは、人工環境内で1つまたは複数のデジタルアセットを提示することを可能にされ得る。
さらに、いくつかの例では、アンカーポイント位置216およびクライアントデバイス位置220に対して現実世界の環境内の位置に対応する人工環境内の位置を判定することによって、提示モジュール114は、提示位置226においてデジタルアセット(たとえば、デジタルアセット224)を提示し得る。
例示として、図9は、現実世界の環境210上にオーバーレイされた拡張現実環境であり得る、人工環境902の俯瞰図900を図示する。図示のように、提示モジュール114は、クライアントデバイス202、RLSサーバ206、および/またはAMSサーバ208の一部として、点線904によって示されるように、アンカーポイント位置216に対して現実世界の環境210内でクライアントデバイス202をリローカライズし得る。さらに、取得モジュール112は、アンカーポイント位置216に対するデジタルアセット224の位置(たとえば、提示位置226)を含み得る、デジタルアセット224を表す情報を取得し得る。
図9にさらに図示されているように、提示モジュール114はまた、破線906によって示されるように、アンカーポイント位置216に対するデジタルアセット224の提示位置226を判定し得る。いくつかの例では、破線906は、アンカーポイントのマッピングされたロケーション(たとえば、アンカーポイント位置216)からデジタルアセット224の提示位置(たとえば、提示位置226)への相対変換を表し得る。簡略化された例示として、アンカーポイント位置216から提示位置226への相対変換は、「デジタルアセット224は、アンカーポイント位置216の1.2メートル東および0.4メートル北に位置する」というステートメントによって表され得る。上記で説明されたように、この相対変換は、デジタルアセット224に関連しておよび/またはデジタルアセット224の一部として、(たとえば、アセットデータ144内に)記憶され、(たとえば、取得モジュール112によって)アクセスされ、および/または(たとえば、取得モジュール112によって)クライアントデバイス202に送信され得る。したがって、提示モジュール114は、(1)現実世界の環境210内のアンカーポイント位置216に対してデジタルアセット224の位置に対応し得る人工環境902内の位置を識別することと、(2)識別された位置を提示位置226として指定することとによって、提示位置226を判定し得る。
さらに、同じく図9に図示されているように、いくつかの例では、提示モジュール114はまた、点線908によって示されるように、クライアントデバイス位置220に対する提示位置226を判定し得る。たとえば、提示モジュール114は、アンカーポイント位置216からクライアントデバイス位置220への相対変換と、アンカーポイント位置216からデジタルアセット224の所定の位置への相対変換とに基づいて提示位置226を判定し得る。これは、人工環境902内のデジタルアセット224のより細かい測位、および/またはクライアントデバイス202を介した(たとえば、クライアントデバイス202中に含まれるディスプレイを介した)デジタルアセット224のより安定した閲覧を可能にし得る。
図10は、人工環境902内の提示位置226に提示されるデジタルアセット224を含む、現実世界の環境210上にオーバーレイされた人工環境902の1人称ビュー1000を図示する。点線904および点線908は、明快のために省略されており、提示位置226は、それがデジタルアセット224によって覆い隠され得るので省略されていることに留意されたい。
いくつかの例では、クライアントデバイス(たとえば、クライアントデバイス202)は、本明細書で説明されるリローカライゼーションプロセスおよび/またはアセット管理プロセス中に現実世界の環境中を移動し続け得る。したがって、現実世界の環境内のクライアントデバイスの判定された位置(たとえば、クライアントデバイス位置220)は、提示モジュール114が人工環境内で仮想オブジェクト(たとえば、デジタルアセット224)を提示することを試みたとき、現実世界の環境内のクライアントデバイスの真の位置にもはや対応し得ない。
したがって、いくつかの実施形態では、本明細書で説明されるシステムのうちの1つまたは複数は、(たとえば、リローカライゼーションプロセスおよび/またはアセット管理プロセス中に)現実世界の環境内のクライアントデバイスの動きを追跡し得、現実世界の環境内のクライアントデバイスの動きに基づいて現実世界の環境内のクライアントデバイスの判定された位置(たとえば、クライアントデバイス位置220)を更新し得る。たとえば、追跡モジュール118は、クライアントデバイス202、RLSサーバ206、および/またはAMSサーバ208の一部として、現実世界の環境210内のクライアントデバイス202の動きを追跡し得、現実世界の環境210内のクライアントデバイスの動きに基づいてクライアントデバイス位置220を更新し得る。
追跡モジュール118は、様々なコンテキストにおいて、現実世界の環境210内のクライアントデバイス202の動きを追跡し得る。たとえば、追跡モジュール118は、送信モジュール106が現実世界の環境情報212をRLSサーバ206に送信する時間において、現実世界の環境210内のクライアントデバイス202の初期位置を判定することによって、現実世界の環境210内のクライアントデバイス202の動きを追跡し得る。
たとえば、送信モジュール106が現実世界の環境情報212をRLSサーバ206に送信したとき、追跡モジュール118は、イメージングデバイス228および/またはセンサ230によって収集された情報を受信しおよび/またはその情報にアクセスし得、イメージングデバイス228および/またはセンサ230によって収集された情報(たとえば、画像、GPS座標、配向、特定力、慣性測定値、角速度、線速度、磁界など)を使用して、クライアントデバイス202の初期位置を判定および/または確定し得る。いくつかの例では、追跡モジュール118は、初期位置に対応する追加のアンカーポイントを生成し得る。少なくとも1つの例では、追跡モジュール118は、クライアントデバイス202によって維持される現実世界の環境210のローカルマップなど、現実世界の環境210のローカルマップの一部として追加のアンカーポイントを記録し得る。
追跡モジュール118は、追加のアンカーポイントに対する現実世界の環境内のクライアントデバイス202の動きをさらに追跡し得る。たとえば、ある時間期間にわたってイメージングデバイス228および/またはセンサ230によって収集された情報を分析することによって、追跡モジュール118は、追加のアンカーポイントによって示される初期位置に対して現実世界の環境210を通るクライアントデバイス202のコースおよび/または経路を判定し得る。したがって、受信モジュール108がアンカーポイント情報214およびクライアントデバイス位置220を受信した後の任意の時間に、追跡モジュール118は、追加のアンカーの位置、および/または追加のアンカーポイントの位置に対する現実世界の環境210を通るクライアントデバイス202の追跡された動きに基づいて、クライアントデバイス位置220を更新し得る。
例示のために、図11は、現実世界の環境210および人工環境902の追加の俯瞰図1100を図示する。俯瞰図1100は、図11の俯瞰図900と同様である。しかしながら、図11に図示されているシナリオでは、クライアントデバイス202は、送信モジュール106が現実世界の環境情報212をRLSサーバ206に送信した後に、移動していることがある。
図11に図示されているように、送信モジュール106が現実世界の環境情報212をRLSサーバ206に送信する時間において、追跡モジュール118は、現実世界の環境210内のクライアントデバイス202の初期位置1102を判定し得、および/または初期位置1102に対応する位置において、(たとえば、クライアントデバイス202によって維持される現実世界の環境210のローカルマップ内の)追加のアンカーポイントを生成し得る。追跡モジュール118は、次いで、現実世界の環境210内のクライアントデバイス202の動き1104を追跡し得る。提示モジュール114が提示位置226を判定したとき、追跡モジュール118は、初期位置1102および/または追跡された動き1104に基づいてクライアントデバイス位置220を更新し得る。いくつかの例では、追跡モジュール118は、追跡された動き1104に基づいてアンカーポイント位置216からクライアントデバイス位置220への相対変換を更新することによって、クライアントデバイス位置220を更新し得る。たとえば、2次元において簡略化されると、クライアントデバイス位置220は、クライアントデバイス202がアンカーポイント位置216の3メートル北および1メートル西にあり、クライアントデバイス202が2メートル東に移動することを示す場合、追跡モジュール118は、クライアントデバイス202がアンカーポイント位置216の3メートル北および1メートル東にあることを示すようにクライアントデバイス位置220を更新し得る。
したがって、図11にさらに図示されているように、提示モジュール114は、点線1108によって示されるように、アンカーポイント位置216および更新されたクライアントデバイス位置1106に対して現実世界の環境210内でクライアントデバイス202をリローカライズし得る。さらに、同じく図11に図示されているように、いくつかの例では、提示モジュール114はまた、点線1110によって示されるように、更新されたクライアントデバイス位置1106に対する提示位置226を判定し得る。
上述のように、本明細書で開示される実施形態のうちの1つまたは複数は、コンピュータ可読媒体上にコンピュータプログラムとして符号化され得る。図12~図15は、コンピューティングデバイスのプロセッサによって実行されたとき、本明細書で説明される動作のうちの1つまたは複数をコンピューティングデバイスに実施させ得るソースコードのリスティングを含む。当業者には明らかであり得るように、図12~図15に含まれるリスティングは、概して、C++プログラミング言語の規約および/またはシンタックスに従っていることがある。本明細書で説明される実施形態は、追加または代替として任意の好適なプログラミング言語を介して実装され得るので、これは一例にすぎない。
図12~図14は、本明細書で説明されるリローカライゼーションサービスのためのアプリケーションプログラミングインターフェース(API)中に含まれ得る様々な定義、データ構造、データオブジェクト、クラスなどを含み得る。
図12は、クラス1202およびクラス1204を含む、リスティング1200を含む。クラス1204は、概して、本明細書で説明されるシステムのうちの1つまたは複数(たとえば、送信モジュール106)がリローカライゼーションサービス(たとえば、RLSサーバ206)に送信し得、現実世界の環境を表す情報を含み得る、データオブジェクトを記述し得る。クラス1202は、SingleImageRelocPacketと命名され、名前空間AssetManagerを使用し、Packetと命名されたパブリッククラスから派生される。クラス1202はまた、いくつかのパブリックデータメンバおよびパブリック関数メンバを含む。
データメンバpersistentClientIdは、persistentClientIdが符号なし64ビット整数を含み得ることを示す、uint64_tのデータタイプを有する。したがって、persistentClientIdは、(たとえば、ARセッションにわたって、リローカライゼーションにわたってなど)永続的であり得る、クライアント(たとえば、クライアントデバイス202)に関連する識別子を含み得る。
データメンバw、h、f、cx、cy、k1、およびk2は、浮動小数点値であり得、イメージングデバイス(たとえば、イメージングデバイス228)の固有パラメータに対応する値を含み得る。
データメンバwidth、height、およびpitchは、それぞれ、画像の幅、高さ、およびピッチに対応する整数値を含み得る。
データメンバimg_dataは、img_dataが符号なし8ビット整数値のベクトルを含み得ることを示す、unit8_tのデータタイプをもつベクトルを含み得る。いくつかの例では、img_dataベクトル中の各値は、画像中に含まれるピクセル値に対応し得る。
データメンバlocalAnchorIdは、ローカルアンカーポイント(たとえば、リローカライゼーションより前のローカルマップ内に置かれたアンカーポイント)の識別子に対応し得る整数値であり得る。
クラス1202はまた、呼び出されたとき、上記のデータメンバ(たとえば、persistentClientId、w、h、f、cx、cy、k1、k2、width、height、pitch、img_data、およびlocalAnchorId)を直列化し得るパブリックメンバ関数serializeを含む。いくつかの例では、「直列化」は、データ構造および/またはオブジェクトを、それらのデータ構造および/またはオブジェクトが(たとえば、ハードディスク、メモリデバイスなどの記憶媒体、データストア140などのデータストアなどの内に)記憶され、(たとえば、ネットワーク204などのネットワークを介して)送信され、ならびに/あるいは(たとえば、モジュール102のうちの1つまたは複数によって)再構築され得るフォーマットに転換するプロセスを指すことがある。
RelocResponsePacketと命名されたクラス1204も、名前空間AssetManagerを使用し、Packetクラスから派生される。クラス1202は、データメンバpersistentClientId、rotation_q_ca、translation_q_ca、cloudAnchorGuid、およびlocalAnchorIdを含む。クラス1202も、パブリックメンバ関数serializeを含む。
クラス1202におけるように、パブリックデータメンバpersistentClientIdは、uint64_tのデータタイプを有する。このデータメンバは、(たとえば、ARセッションにわたって、リローカライゼーションにわたってなど)永続的であり得る、クライアントに関連する識別子を含み得る。
パブリックデータメンバrotation_q_caは、浮動小数点値のベクトルであり得、(たとえば、現実世界の環境情報212がRLSサーバ206に送信された時間におけるクライアントデバイスのポーズからの)クエリされたポーズと、以下で説明されるcloudAnchorGuidによってこの応答パケット内で識別されるリローカライゼーションサービスによって識別されるアンカーポイントのポーズとから、四元数として表される、相対回転を表し得る。
パブリックデータメンバtranslation_q_caは、浮動小数点値のベクトルであり得、(たとえば、現実世界の環境情報212がクライアントデバイス202によってキャプチャされおよび/またはクライアントデバイス202からRLSサーバ206に送信された時間におけるクライアントデバイス202の位置からの)クエリされた位置と、以下で説明されるcloudAnchorGuidによってこの応答パケット内で識別されるリローカライゼーションサービスによって識別されるアンカーポイントの位置とからの、相対転換および/または変換を表し得る。
パブリックデータメンバcloudAnchorGuidは、現実世界の環境のマップ(たとえば、マップ700)中に含まれるアンカーポイントに関連するグローバル一意識別子(GUID)であり得る整数値であり得る。
クラス1202におけるように、クラス1204中のパブリックデータメンバlocalAnchorIdは、ローカルアンカーポイント(たとえば、リローカライゼーションより前のローカルマップ内に置かれたアンカーポイント)の識別子に対応し得る整数値であり得る。したがって、リローカライゼーションサービス(たとえば、RLSサーバ206)は、この値をクライアントデバイスにエコーバックし得る。
クラス1202におけるように、クラス1204も、呼び出されたとき、上記のデータメンバ(たとえば、persistentClientId、rotation_q_ca、translation_q_ca、cloudAnchorGuid、localAnchorId)を直列化し得るパブリック関数メンバserializeを含む。
図13は、現実世界の環境(たとえば、現実世界の環境情報212)を表す情報をリローカライゼーションサービス(たとえば、RLSサーバ206)に送信するために使用され得る追加のデータ構造およびクラスを図示する、リスティング1300を含む。
データ構造1302は、ImageQueryと命名され、ブール値gravity_alignedおよびユニオンデータ構造FeaturesAndDescriptorsという2つのデータメンバを含む。本開示では、「ユニオン」というキーワードは、一度に、可能なデータメンバのうちのただ1つが定義され得るデータ構造を示し得、データ構造のおよび/またはデータ構造用のメモリ使用を示さないおよび/または反映しないことがあることに留意されたい。
図示のように、ブール値gravity_alignedは、現実世界の環境を表す情報(たとえば、画像、画像特徴、特徴記述子、特徴光線など)が、重力の方向と整合するためにクライアントデバイスの座標系内で事前に回転されていることがあるという点で、現実世界の環境を表す情報が重力整合されるかどうかを示し得る。
ユニオン構造FeaturesAndDescriptorsは、4つの可能なデータメンバを含み、各々は、画像特徴および特徴記述子の異なる表現を含み得る異なるデータ構造を表す。これらのデータ構造について以下でより詳細に説明され得る。
CalibratedImageFeaturesAndDescriptorsのデータタイプをもつ、データメンバcalibrated_image_features_and_descriptorsは、イメージングデバイスが較正されたとき(すなわち、イメージングデバイスの固有パラメータが識別、計算、判定などされたとき)、ならびにイメージングデバイスの固有パラメータの影響が、送信より前に(たとえば、クライアントデバイスによって)画像から低減および/または除去され得たとき、使用され得る。データメンバcalibrated_image_features_and_descriptorsは、本明細書で説明される仕方のいずれかで生成および/または識別される特徴記述子および特徴光線を含み得る。
UncalibratedImageFeaturesAndDescriptorsのデータタイプをもつ、データメンバuncalibrated_image_features_and_descriptorsは、イメージングデバイスのすべての知られている固有パラメータ(たとえば、イメージングデバイス228の主点)の影響が除去された画像内の1つまたは複数の2D「正規化」特徴ロケーションを含み得る。いくつかの例では、リローカライゼーションサービスは、イメージングデバイスの焦点距離のみが未知であり得ると仮定し得る。2D特徴に関連する特徴記述子も含まれ得る。
MultiImageFeaturesAndDescriptorsのデータタイプをもつ、データメンバmulti_image_reloc_queryは、(1)(たとえば、マルチカメラマッピングリグを介して)複数の観点から撮られた複数の画像からの特徴光線、(2)特徴を観測したカメラの、クエリの局所座標系内の位置に対応し得る特徴原点、および(3)特徴光線に関連する特徴記述子を含み得る。同じくデータタイプMultiImageFeaturesAndDescriptorsの、データメンバmulti_image_unknown_scale_reloc_queryは、multi_image_reloc_queryと同様のデータを含み得るが、スケール情報を省略し得る。
データ構造1304は、LatLonAltと命名され、すべて倍精度実数タイプ(すなわち、倍精度浮動小数点値)である6つのデータメンバを含む。データメンバlatitude_degは緯度を示し得、データメンバlongitude_degは経度を示し得、データメンバaltitude_metersはメートルでの高度を示し得る。データメンバlat_radius_meters、lon_radius_meters、およびalt_radius_metersは、データメンバlatitude_deg、longitude_deg、およびaltitude_metersの値の(メートルでの)それぞれの不確実性半径を示し得る。
データ構造1306は、CoarseGeoLocationと命名され、LatLongAltのデータタイプ(たとえば、データ構造1304)をもつデータメンバllaを含む。データ構造1308は、RelocalizationQueryと命名され、(1)CoarseGeoLocationのデータタイプ(たとえば、データ構造1306)をもつlocation、および(2)ImageQueryのデータタイプ(たとえば、データ構造1302)をもつimage_queryというデータメンバを含む。
データ構造1310は、RelocalizationPriorと命名され、(1)符号なし64ビット整数のデータタイプをもつprior_reloc_ent_id、および(2)SE3dのデータタイプをもつT_query_reloc_entという2つのデータメンバを含む。いくつかの例では、SE3dデータタイプは、3Dおよび/または6DoF変換に関連する情報を含み得る。したがって、prior_reloc_ent_idは、前のリローカライゼーションのために使用されたアンカーポイントを表し得、T_query_reloc_entは、現在の位置と前のアンカーポイントとの間の相対変換を表し得る。前のアンカーポイントを提供することにより、リローカライゼーションサービス(たとえば、RLSサーバ206)が、リローカライゼーションプロセスにおいて、粗い測位動作をバイパスすることが可能になり得る。
データ構造1312は、RelocalizationResponseと命名され、7つのデータメンバを含む。falseの値に初期化される、ブール値successは、リローカライゼーションの成功または失敗を示し得る。符号なし64ビット整数localized_ent_idは、現実世界の環境のあらかじめ定義されたマップ内のアンカーポイントの識別子を表し得る。データタイプSE3dのデータメンバT_ent_queryは、アンカーポイント(たとえば、localized_ent_id)の位置およびクライアントデバイスの判定された位置からの相対変換を示し得る。
1.0の値に初期化される、データタイプ倍精度実数のデータメンバscale_ent_queryは、クエリクライアントをメトリックスケールにアップグレードし得るスケールを示し得る。データメンバestimated_focal_lengthは、倍精度実数のデータタイプを有する。これは、リローカライゼーションクエリの一部として(たとえば、現実世界の環境情報212の一部として)リローカライゼーションサービスにサブミットされる画像データをキャプチャするために使用され得たイメージングデバイス(たとえば、イメージングデバイス228)の推定された焦点距離に対応し得る。
データ構造1312内の追加のデータメンバは、任意選択であり得る。0の値に初期化される、整数値num_inliersと、整数ベクトルinlier_indicesとは、リローカライゼーションプロセス中にインライアであった画像特徴(たとえば、現実世界の環境情報212の一部としてサブミットされる画像内で識別されおよび/またはその画像中に含まれる画像特徴)の番号および/またはインデックスを示し得る。
図14に進むと、リスティング1400は、本明細書で説明されるリローカライゼーションサービスへのクライアント対面インターフェースを含む。上記で説明されたように、リローカライゼーションサービスは、クライアントデバイス(たとえば、クライアントデバイス202)を現実世界の環境(たとえば、現実世界の環境210)にリローカライズするために、現実世界の環境のあらかじめ定義されたおよび/または事前に生成されたマップ、ならびに/あるいは事前に生成されたマップ内のあらかじめ定義されたアンカーポイントを使用し得る。リローカライゼーションプロセスのマップおよび/または論理は、クライアントにとって意図的に利用不可能であってよく、クライアント対面インターフェースは、意図的にコンパクトであってよい。
リスティング1400に図示されているように、クラス1402は、図13に関して説明されたデータ構造の多くを利用し得る2つの関数を含む。メンバ関数relocalizeは、queryと命名されたRelocalizationQueryオブジェクト(たとえば、データ構造1308)への参照を受け付け、RelocalizationResponseオブジェクト(たとえば、データ構造1312)を返す。メンバ関数priorは、queryと命名されたRelocalizationQueryデータオブジェクト(たとえば、データ構造1308)への参照、およびpriorと命名されたRelocalizationPriorデータオブジェクト(たとえば、1310)への参照を受け付ける。クライアントは、クライアントが、粗いマップ探索をバイパスすることを望むときおよび/または前のリローカライゼーションからの情報を有するとき、この関数を呼び出し得る。
図15は、本明細書で説明されるアセット管理サービスのためのAPI中に含まれ得る、様々な定義、データ構造、データオブジェクト、クラスなどを含み得る、リスティング1500を含む。
コードブロック1502は、符号なし64ビット整数のためのタイプエイリアスARObjectIDおよびARTrackableIDを含む。したがって、タイプARObjectIDおよび/またはARTrackableIDの変数は、64ビット符号なし整数として定義され得、および/または64ビット符号なし整数を含み得る。
データ構造1504は、アンカーポイント位置からオブジェクトへの相対変換を記述し得る。データ構造1504は、ARObjectTransformationと命名され、3つのデータメンバを含む。データメンバparent_trackable_idは、タイプARTrackableID(たとえば、符号なし64ビット整数)であり、アンカーポイントの識別子を表し得る。データメンバT_obj_trackableは、タイプSE3dであり、仮想オブジェクト(たとえば、デジタルアセット224)の位置から、parent_trackable_idによって識別されるアンカーポイントのマッピングされた位置への変換、またはその逆の変換を表し得る。データメンバscaleは、倍精度実数タイプであり、変換および/または仮想オブジェクトに関連するスケールを示し得る。
データ構造1506は、現在の(すなわち、ソース)アンカーポイントからターゲットアンカーポイントへの相対変換を表し得る。データ構造1504は、ARTrackableEdgeと命名され、ターゲットアンカーポイントの識別子を示し得るARTrackableID target_trackable_idと、現在の(すなわち、ソース)アンカーポイントから、target_trackable_idによって識別されるターゲットアンカーポイントへの相対変換を表し得るSE3d T_source_targetとを含み得る。
データ構造1508は、ARObjectの名前を有し、仮想オブジェクトに関連する情報を記述しおよび/または含み得る。データメンバidは、ARObjectIDのタイプを有し、仮想オブジェクトに関連する識別子を含み得る。データメンバparent_trackable_transformsは、ARObjectTransformationデータオブジェクトのベクトルであり、ARObjectID idによって識別される仮想オブジェクトへの/からの、1つまたは複数のアンカーポイントへの/からの相対変換を表し得る。データメンバmetadataは、Metadataのタイプを有し、仮想オブジェクトに関連する任意の他の好適な情報(たとえば、仮想オブジェクトに関連するモデル、仮想オブジェクトのタイプ、仮想オブジェクトに関連するプライバシー指定など)を含み得る。
データ構造1510は、ARTrackableの名前を有し、アンカーポイントに関連するデータを表しおよび/または含み得る。データメンバidは、ARTrackableIDのタイプを有し、アンカーポイントに関連する識別子を含み得る。データメンバneighborsは、ベクトルデータタイプを有し、ARTrackableEdgeデータオブジェクトを含む。データメンバneighborsは、ARTrackableID idによって識別されるアンカーポイントと、現実世界の環境のマップ中に含まれる他のアンカーポイントとの間の関係(たとえば、変換)を示すエッジ(たとえば、グラフエッジ)を記述し得る。上述されたように、現実世界の環境のマップ中に含まれるアンカーポイントは、連結グラフとして記憶、参照、構造化、概念化などされ得、連結グラフは、グラフのノードとしてアンカーポイントをもち、グラフのエッジとしてアンカーポイント間の相対変換をもつ。データメンバattached_objectsは、ARObjectデータオブジェクトのベクトルを含み、ARTrackableID idによって識別されるアンカーポイント「にアタッチされ」得る1つまたは複数の仮想オブジェクトを示し得る。
データ構造1512は、InsertARObjectRequestの名前を有し、仮想オブジェクトの集合(たとえば、アセットデータ144)に仮想オブジェクトアセットを挿入するようにとの要求を表し得る。データメンバT_obj_trackableは、SE3dのデータタイプを有し、ARTrackableID trackable_idによって識別される、特定のアンカーポイントに対する6DoF関係を示し得る。データメンバscaleは、倍精度実数タイプであり、変換および/または仮想オブジェクトに関連するスケールを示し得る。データメンバmetadataは、Metadataのタイプを有し、仮想オブジェクトに関連する任意の他の好適な情報(たとえば、仮想オブジェクトに関連するモデル、仮想オブジェクトのタイプ、仮想オブジェクトに関連するプライバシー指定など)を含み得る。
データ構造1514は、InsertARObjectResponseの名前を有し、仮想オブジェクトの集合に仮想オブジェクトを挿入するようにとの要求(たとえば、データ構造1512の形態のような形態の要求)に応答した、アセット管理サーバ(たとえば、AMSサーバ208)からのサーバ応答を表し得る。ブール値successは、仮想オブジェクトを挿入するようにとの要求の成功または失敗を示し得る。データメンバARObjectIDは、正常に挿入された仮想オブジェクトに割り当てられ得る識別子であり得る。
データ構造1516は、FetchARObjectRequestの名前を有し、クライアントの現在のロケーションを鑑みて、クライアントがアクセスを有するすべての可視の仮想オブジェクトについての要求を表し得る。データメンバtrackable_idは、データタイプARTrackableIDであり、アンカーポイントに関連する識別子を表し得る。データメンバT_you_trackableは、タイプSE3dであり、現実世界の環境内のクライアントデバイスの位置から、ARTrackableID trackable_idによって識別されるアンカーポイントの位置への相対転換を表し得る。データメンバmetadataは、Metadataのタイプを有し、要求に関連する任意の他の好適な情報を含み得る。
データ構造1518は、FetchARObjectResponseの名前を有し、クライアントの現在のロケーションを鑑みて、クライアントがアクセスを有するすべての可視の仮想オブジェクトについての要求(たとえば、データ構造1516の形態のような形態の要求)に対する応答を表し得る。ブール値successは、可視の仮想オブジェクトについての要求の成功または失敗を示し得る。データメンバvisible_objectsは、要求に応答してアセット管理サービス(たとえば、AMSサーバ208)がクライアントデバイス(たとえば、クライアントデバイス202)に返し得るARObjectデータオブジェクトのベクトルを含み得る。
本開示全体にわたって論じられたように、開示されるシステムおよび方法は、人工環境内でデジタルアセットを提示するための従来のオプションに勝る1つまたは複数の利点を提供し得る。たとえば、上記で説明されたように、リローカライゼーションサービス(たとえば、RLSサーバ206)、アセット管理サービス(たとえば、AMSサーバ208)、およびフロントエンド(たとえば、クライアントデバイス202)は、疎結合され得る。実際、いくつかの実施形態では、リローカライゼーションサービス(たとえば、RLSサーバ206)および/またはアセット管理サービス(たとえば、AMSサーバ208)は、特定のクライアントデバイスに関する情報をほとんどからまったく維持しないことがあり、実質的にアンカーポイント識別子(たとえば、リローカライゼーションサービスからクライアントデバイスによって受信され、クライアントデバイスによってアセット管理サービスに送られるアンカーポイント識別子)を介して互いに通信し得る。この疎結合は、各構成要素(たとえば、リローカライゼーションサービス、アセット管理サービス、およびクライアントフロントエンド)が、他のものとは無関係に動作しおよび/または開発されることを可能にし得る。
加えて、リローカライゼーションサービス、アセット管理サービス、およびクライアントフロントエンドが疎結合され得るので、リローカライゼーションサービスおよび/またはアセット管理サービスは、プラットフォームアグノスティックであり得、したがって、任意の好適なARプラットフォームを実行する任意の好適なフロントエンドクライアントにリローカライゼーションおよび/またはアセット管理サービスを提供し得る。
さらに、本明細書で説明されるシステムおよび方法は、従来のARシステムと比較されたとき、増加したフレキシビリティを提供し得る。たとえば、リローカライゼーションサービスおよび/またはアセット管理サービスは、クライアントデバイスへのロケーション関連データの効率的な配信を提供し得る何らかのサービスなど、拡張現実アプリケーションに加えて複数のタイプのアプリケーションをサービスし得る。例示として、クライアントデバイスが現実世界の環境内でリローカライズされると、ユーザおよび/またはコンピューティングシステムは、クライアントデバイスのロケーションに関連する何らかのデータを要求し得、アセット管理サービスは、そのようなデータをクライアントデバイスに配信し得る。
さらに、本明細書で説明されるシステムおよび方法は、さらに、帯域幅リソースを温存し、クライアントデバイスのコンピューティングリソースを効率的に利用し、ならびに/あるいはユーザプライバシーを容易にしおよび/または向上させ得る。たとえば、上記で説明されたように、本明細書で説明されるシステムおよび方法のいくつかの実施形態は、キャプチャされた生画像から特徴記述子を抽出しおよび/または特徴光線を生成することをクライアントデバイスに行わせ得、生画像データの代わりにこれらの特徴記述子および/または特徴光線をリローカライゼーションサービスに送信することをクライアントデバイスに行わせ得る。これにより、特徴記述子および/または特徴光線が、生画像よりも送信するためにはるかに少ない帯域幅を必要とし得るので、帯域幅リソースが温存され得る。さらに、そのような実施形態は、リローカライゼーションサービスが、リローカライゼーションプロセスの一部として特徴抽出および/または特徴光線生成動作を実施することから解放され得るので、クライアントデバイスのコンピューティングリソースを効率的に利用し得、および/またはリローカライゼーションサービスのコンピューティングリソースを温存し得る。
その上、いくつかの実施形態では、本明細書で説明されるシステムおよび方法は、ユーザセキュリティおよび/またはプライバシーを向上させ得る。元の画像データは、抽出された特徴記述子および/または特徴光線から再構築することが困難または不可能であり得る。したがって、生画像データの代わりに、抽出された特徴記述子および/または特徴光線をリローカライゼーションサービスに送信することにより、生画像データ中に含まれる機密および/またはプライベート情報が偶発的に開示されることから効果的に保護し得る。
上記で詳述されたように、本明細書で説明および/または例示されるコンピューティングデバイスおよびシステムは、本明細書で説明されるモジュール内に含まれているものなど、コンピュータ可読命令を実行することが可能な任意のタイプまたは形態のコンピューティングデバイスまたはシステムを広く表す。それらの最も基本構成では、これらのコンピューティングデバイスは、少なくとも1つのメモリデバイスと、少なくとも1つの物理プロセッサとを各々含み得る。
いくつかの例では、「メモリデバイス」という用語は、概して、データおよび/またはコンピュータ可読命令を記憶することが可能な任意のタイプまたは形態の揮発性または不揮発性記憶デバイスまたは媒体を指す。一例では、メモリデバイスは、本明細書で説明されるモジュールのうちの1つまたは複数を記憶、ロード、および/または維持し得る。メモリデバイスの例は、限定はしないが、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、フラッシュメモリ、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)、光ディスクドライブ、キャッシュ、同上の1つまたは複数の変形形態または組合せ、あるいは任意の他の好適な記憶メモリを含む。
いくつかの例では、「物理プロセッサ」という用語は、概して、コンピュータ可読命令を解釈および/または実行することが可能な任意のタイプまたは形態のハードウェア実装処理ユニットを指す。一例では、物理プロセッサは、上記で説明されたメモリデバイスに記憶された1つまたは複数のモジュールにアクセスしおよび/またはモジュールを修正し得る。物理プロセッサの例は、限定はしないが、マイクロプロセッサ、マイクロコントローラ、中央処理ユニット(CPU)、ソフトコアプロセッサを実装するフィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、同上の1つまたは複数の部分、同上の1つまたは複数の変形形態または組合せ、あるいは任意の他の好適な物理プロセッサを含む。
別個の要素として例示されているが、本明細書で説明および/または例示されるモジュールは、単一のモジュールまたはアプリケーションの部分を表し得る。加えて、いくつかの実施形態では、これらのモジュールのうちの1つまたは複数は、コンピューティングデバイスによって実行されたとき、コンピューティングデバイスに、1つまたは複数のタスクを実施させ得る1つまたは複数のソフトウェアアプリケーションまたはプログラムを表し得る。たとえば、本明細書で説明および/または例示されるモジュールのうちの1つまたは複数は、本明細書で説明および/または例示されるコンピューティングデバイスまたはシステムのうちの1つまたは複数上で走らされるように記憶および構成されたモジュールを表し得る。これらのモジュールのうちの1つまたは複数はまた、1つまたは複数のタスクを実施するように構成された1つまたは複数の専用コンピュータのすべてまたは部分を表し得る。
加えて、本明細書で説明されるモジュールのうちの1つまたは複数は、データ、物理的デバイス、および/または物理的デバイスの表現を、1つの形態から別の形態に変換し得る。たとえば、本明細書で具陳されるモジュールのうちの1つまたは複数は、変換されるべき現実世界の環境を表す情報(たとえば、画像データ)を受信し、現実世界の環境を表す情報を変換し、変換の結果を出力して現実世界の環境内のクライアントデバイスの位置を判定し、変換の結果を使用して現実世界の環境内のクライアントデバイスのロケーションを判定し得、人工環境内でデジタルアセットを提示するために変換の結果を記憶し得る。追加または代替として、本明細書で具陳されるモジュールのうちの1つまたは複数は、コンピューティングデバイス上で実行し、コンピューティングデバイス上にデータを記憶し、および/または他の方法でコンピューティングデバイスと相互作用することによって、プロセッサ、揮発性メモリ、不揮発性メモリ、および/または物理的コンピューティングデバイスの任意の他の部分を、1つの形態から別の形態に変換し得る。
いくつかの実施形態では、「コンピュータ可読媒体」および/または「非一時的コンピュータ可読媒体」という用語は、コンピュータ可読命令を記憶または搬送することが可能な任意の形態のデバイス、キャリア、または媒体を指し得る。コンピュータ可読媒体の例は、限定はしないが、搬送波などの伝送型媒体、および磁気記憶媒体(たとえば、ハードディスクドライブ、テープドライブ、およびフロッピーディスク)、光記憶媒体(たとえば、コンパクトディスク(CD)、デジタルビデオディスク(DVD)、およびBLU-RAYディスク)、電子記憶媒体(たとえば、ソリッドステートドライブおよびフラッシュ媒体)などの非一時型媒体、ならびに他の配信システムを含む。
本開示の実施形態は、人工現実システムを含むかまたは人工現実システムと併せて実装され得る。人工現実は、たとえば、仮想現実(VR)、拡張現実(AR)、複合現実(MR)、ハイブリッド現実、あるいはそれらの何らかの組合せおよび/または派生物を含み得る、ユーザへの提示の前に何らかの様式で調整された現実の形態である。人工現実コンテンツは、完全に生成されたコンテンツ、またはキャプチャされた(たとえば、現実世界の)コンテンツと組み合わされた生成されたコンテンツを含み得る。人工現実コンテンツは、ビデオ、オーディオ、ハプティックフィードバック、またはそれらの何らかの組合せを含み得、それらのいずれも、単一のチャネルにおいて、または(閲覧者に対して3次元効果を生じるステレオビデオなどの)複数のチャネルにおいて提示され得る。さらに、いくつかの実施形態では、人工現実はまた、たとえば、人工現実におけるコンテンツを作成するために使用され、および/または人工現実において(たとえば、活動を実施する際に)他の方法で使用される、アプリケーション、製品、アクセサリー、サービス、またはそれらの何らかの組合せに関連付けられてよい。人工現実コンテンツを提供する人工現実システムは、1人または複数の閲覧者に人工現実コンテンツを提供することが可能な、ホストコンピュータシステムに接続されたヘッドマウントディスプレイ(HMD)、スタンドアロンHMD、モバイルデバイスもしくはコンピューティングシステム、または任意の他のハードウェアプラットフォームを含む、様々なプラットフォーム上で実装され得る。
本明細書で説明および/または例示されるステップのプロセスパラメータおよびシーケンスは、例のみとして与えられ、必要に応じて変更されることが可能である。たとえば、本明細書で例示および/または説明されるステップは、特定の順序で図示されるかまたは論じられることがあるが、これらのステップは、必ずしも、例示されるかまたは論じられる順序で実施される必要はない。本明細書で説明および/または例示される様々な例示的な方法はまた、本明細書で説明または例示されるステップのうちの1つまたは複数を省略するか、あるいは開示されるステップに加えて追加のステップを含んでよい。
先の説明は、他の当業者が、本明細書で開示される例示的な実施形態の様々な態様を最良に利用することを可能にするために提供された。この例示的な説明は、網羅的であること、または開示されるいかなる厳密な形態にも限定されることを意図されていない。多くの修正および変更が、本開示の趣旨および範囲から逸脱することなく可能である。本明細書において開示される実施形態は、あらゆる点において、限定的ではなく例示的であると見なされるべきである。本開示の範囲を決定する際には、添付の特許請求の範囲およびその均等物への参照が行われるべきである。
別段に記載されていない限り、本明細書および特許請求の範囲において使用される「に接続される」および「に結合される」という用語(ならびにそれらの派生語)は、直接接続と、間接的(すなわち、他の要素または構成要素を介した)接続の両方を許可するものとして解釈されたい。加えて、本明細書および特許請求の範囲において使用される「a」または「an」という用語は、「のうちの少なくとも1つ」を意味するものとして解釈されたい。最後に、使いやすさのために、本明細書および特許請求の範囲において使用される「含む(including)」および「有する(having)」という用語(ならびにそれらの派生語)は、「備える/含む(comprising)」という単語と交換可能であり、同じ意味を有する。