システム及び方法は、3次元(3−D)マップを作成し、3−Dマップを使用して拡張現実(AR)を有効にする。一実施形態では、3−Dマップは1センチメートルの解像度を有するが、可変解像度を有するマップを含む、他の解像度を有するマップを使用してもよい。様々な実施形態では、マップ作成は、クライアント側で(例えば、携帯電話又はヘッドセットによって)実施され、これは、以前にコンパイルされた画像及びマッピング情報をクライアントデバイスに提供するバックエンドサーバとペアにされる。
一実施形態では、システムは、クライアント側(例えば、ハンドヘルド又は装着された電子コンピューティングデバイス上)で画像及び全地球測位システム(global positioning system:GPS)座標を選択し、選択されたデータを3−Dマップとペアにする。3−Dマップは、カメラ記録モジュールと、加速度計及び/又はジャイロスコープを含む慣性測定ユニット(inertial measurement unit:IMU)とから構築される。選択されたデータは、サーバに送信される。サーバとクライアント側のコンピューティングデバイスは、選択されたデータを連携して処理し、ARのオブジェクトとジオメトリを確立し、AR内において、仮想又はその他の、オブジェクト間の潜在的な相互作用を判定する。例えば、拡張現実は、現実世界の部屋のものであり、例えば、ゲームをプレイするために、互いに相互作用することができる1つ以上のアニメーション化された仮想オブジェクトを含み得る。
選択されたデータと3−Dマップを使用することにより、システムはニューラルネットワークを使用してオブジェクトの検出とジオメトリの推定を実行し、それによってARを提供する。ニューラルネットワークの例は、機械学習のために接続されたユニット(人工ニューロン)の大規模な集合を使用する計算モデルである。ユニットはソフトウェアで接続され、ユニットへの結合された入力信号が十分に大きい場合、ユニットは独自の出力信号を発信する。そのため、人工ニューラルネットワークは生物学的ニューラルネットワークを模倣して、タスクの実行を学習する。システムは、深層学習(例えば、多層ニューラルネットワーク)を使用して、ARデータをコンテキストで理解する(例えば、前述のオブジェクト検出及びジオメトリ推定タスクの場合)。
いくつかの実施形態では、システムは、ローカル3−Dマップを集約して(例えば、複数のローカル3−Dマップを一緒にリンクすることによって)、1つ以上のグローバル3−Dマップを作成する。集約された3−Dマップは、環境又は「世界」の単一のデジタル3−Dマップを生成するために、サーバ上でグローバル3−Dマップに結合される。例えば、所定の閾値内でマッチする部分を含む同様のGPS座標の1つ以上のデバイスによって生成された複数のローカル3−Dマップは、重なると判定され得る。そのため、重なり合う部分を使用して、2つのローカル3−Dマップをつなぎ合わせることができる。グローバル3−Dマップは、特定のGPS座標での仮想オブジェクトの位置を保存するために使用され、このGPS座標は、更に3−Dポイント及び特定の3−D位置までの視覚画像を通してインデックス付けされる(例えば、1フィートの誤差で)。例えば、「世界」が家である場合、様々な部屋の様々なローカル3−Dマップを組み合わせて、家全体の内部を表す単一のグローバル3−Dマップにすることができる。
実例となるプロセスは、サーバとの間でマップデータを送受信する。本明細書で説明するように、3−Dマップは、3−Dピクセル(又は「ボクセル」)に類似した方法で、世界又はその世界の一部を表す空間内の3−D点の集合である。画像データは、利用可能で且つ有用な場合、例えば、3−Dマップにまだ組み込まれていない位置の画像データであると判定された場合に、3−Dマップと一緒に送信され得る。特定の実施形態は、画像データなしで3−Dマップデータを送信する。
様々な実施形態では、クライアントデバイスは、プロセッサによって実行される3−Dアルゴリズムを使用して、3−Dマップを生成する。クライアントデバイスは、画像、3−Dマップ、及びGPSデータを効率的に送信する。例えば、画像は、送信又は処理を妨げないように選択的に送信され得る。一例では、画像は、クライアントデバイスのカメラが新規の視点(例えば、画像によってキャプチャされたスペースがサーバの1つ以上の画像にまだ含まれていない、又はサーバのそのような画像が閾値時間より古い)を有するときに選択的に送信され得るが、現在の視点に対して既に1つ以上の画像が提供されているときには送信されなくてもよい。例えば、カメラの視野が過去又は最近のカメラ姿勢からの以前の画像と最小(例えば、閾値未満)の重複を有する場合、又は視点がオブジェクトの予想される動きに依存する時間の間観察されていない場合、画像はアルゴリズムによって送信されるように指定される。別の例として、現在の(又は実質的に重複する)視点からの以前の画像が提供されてから閾値を超える時間が経過した場合に、画像が提供され得る。これにより、マップに関連付けられた保存済み画像を更新して、現実世界位置の現在の(又は少なくとも最近の)ステータスを反映できるようになる。
様々な実施形態では、サーバデバイスは、オブジェクトを検出するための3−Dデータ及び画像に基づくリアルタイム検出システムを含み、現実世界の環境のジオメトリを推定する。例えば、写実的でない部屋の3−Dマップ(例えば、半高密度及び/又は高密度3−D再構成)は、部屋が3−Dマップ内で特定の解像度又は詳細レベルで完全に表されるように、クライアントデバイスによってキャプチャされた画像を用いて判定できる。
サーバは、リアルタイム検出システムを使用して画像、3−Dデータ、及び/又はGPSデータを融合し、一貫性があり且つ、簡単にインデックス付けできる世界の3−Dマップ、複合現実世界マップを作成する。保存されると、現実世界マップを検索して、以前に保存された実オブジェクト及び/又は仮想オブジェクトを、世界の3−Dマップの特定の位置に配置できる。
様々な実施形態では、マッピング(新しい3−Dマップデータの作成)及び追跡(クライアントデバイスを含むオブジェクトのローカリゼーション)は、クライアント側で行われる。現実世界に対するカメラの位置とともに、現実世界のスパースな(sparse)デジタル再構成が収集される。マッピングには、ポイントクラウド、又は3−Dポイントの集合の作成が含まれる。システムは、GPSデータとともにポイントクラウド情報をシリアル化して送信することにより、スパース表現をサーバに返す。クラウド処理により、例えば、物理メモリ(デバイスにローカルに保存されていない将来のARエクスペリエンスのためのマップ及び仮想オブジェクトデータの保存)とオブジェクト検出が動作する2つ以上のクライアントデバイス間でのマルチプレーヤ機能(独立したクライアントデバイス間でのリアルタイム又はリアルタイムに近いマップデータの共有)が可能になる。
サーバは、3−Dマップと画像のデータベースを含む。サーバはGPSデータを使用して、座標用に3−Dマップが以前に保存されているかどうかを判定する。見つかった場合、保存された3−Dマップはクライアントデバイスに返送される。例えば、自宅の位置にいるユーザは、自宅の位置に関連付けられた以前に保存されたデータを受信することができる。更に、3−Dマップと画像データを保存された複合ワールド3−Dマップに追加できる。
図1は、一実施形態による、ネットワーク104を介してアクセスされるクラウドサーバ要素と協働するクライアントデバイス102を含むARコンピューティングシステムのブロック図である。例えば、クラウドサーバ要素は、ARデータを生成するように構成されたサーバデバイスの構成要素であってもよい。ここに示される実施形態では、クライアントデバイス102は、ゲームエンジン106(例えば、ユニティゲームエンジン又は別の物理/レンダリングエンジン)、並びにARプラットフォーム108を含む。ARプラットフォーム108は、セグメンテーション及びオブジェクト認識を実行することができる。図1に示されるARプラットフォーム108は、クライアント側の画像処理(画像セグメンテーション及びローカル3−D推定などを含む)を実行する複合コンピュータビジョンモジュール110を含む。
複合コンピュータビジョンモジュール110は、クライアントデバイスのカメラからの画素データ、並びに慣性測定ユニットなどのクライアントデバイスの他のセンサからのセンサデータを取り込む。複合コンピュータビジョンモジュール110は、取り込んだデータを使用して特徴ベクトルを生成する。複合コンピュータビジョンモジュール110は、画素データに基づいて特徴抽出を実行し、センサデータ及び/又は画素データに基づいてカメラの位置及び視点を三角測量し、抽出された特徴に基づいて特徴マッチングを実行することにより、特徴ベクトルを生成し、これにより、カメラの視点、及び視点内にどのような物体が存在するかのPnP(Perspective−n−Point)推定を提供する。以下に説明するように、コンテキストに応じて、異なるモデルを使用して、ローカリゼーションとマッピングを同時に実行できる。
ARプラットフォーム108はまた、ローカリゼーション/マッピングモジュール112を含む。一実施形態では、ローカリゼーション/マッピングモジュール112は、同時ローカリゼーション/マッピング(Simultaneous Localization and Mapping:SLAM)ソフトウェア開発キット(SDK)からの機能を使用する。SLAM SDKの機能には、現実世界のジオメトリを近似するための、ポイントクラウド、ラインクラウド、平面クラウド、または任意の幾何学的なクラウドを構築するマッピングシステムを含み、3次元空間でカメラの現在の位置を求める追跡機能を提供する。SLAMは、更に、プロジェクトアニメーション又は拡張値(仮想オブジェクトなど)をARに処理して、現実言葉にあるように見せる。他の実施形態では、ローカリゼーション/マッピングモジュール112は、クライアントデバイス102の周りの環境をマッピングするため、及び/又はその環境におけるクライアントデバイスの位置を判定するために、異なる又は追加のアプローチを使用することができる。
ローカリゼーション/マッピングモジュール112は、クライアントデバイス102の現在の位置を判定するために利用可能な複数のモデルを有していてもよい。一実施形態では、モデルは、(例えば、SLAMによって提供されるような)ポイントクラウドベースモデル、平面マッチングモデル、ラインマッチングモデル、地理情報システム(geographic information System:GIS)モデル、建物認識モデル、景色認識モデル、キューブマッチングモデル、シリンダーマッチングモデル、地平線マッチングモデル、光源マッチングモデル等に加えて、出口マッチングモデル、街路灯マッチングモデル、ツリーマッチングモデル、テキストマッチングモデル(例えば、看板や道路標識)若しくは現実世界のオブジェクトを仮想近似にマッチングするための他のモデル等のオブジェクト及び/又はセマンティックマッチングモデルを含む。他の実施形態では、異なる又は追加のモデルが、ローカリゼーション/マッピングモジュール112に利用可能であってもよい。
ポイントクラウドモデルは、物理空間を、現実世界のオブジェクト表面の位置に対応する仮想世界の位置に配置された点のセットとして表す。例えば、壁は、壁全体に分散された点の集合によって表され得る。所与のポイントクラウドモデルは、大きく平坦な表面(例えば、壁)上に比較的少数のポイントを含む一方で、より複雑なオブジェクト(例えば、植物、家具等)の周囲により密なポイントのクラスタを含むことなどによって、物理的空間を表すために動的に割り当てられる固定数のポイントを含むことができる。いくつかの実施形態では、ローカリゼーション/マッピングモジュール112は、様々な解像度及びスケールで利用可能な複数のポイントクラウドモデルを有する。したがって、例えば、ユーザの位置の近くにあるオブジェクトは、遠くにあるオブジェクトよりも高解像度のポイントクラウドで表すことができる。ポイントクラウドモデルは、デバイスによって生成されたセンサデータ(例えばカメラ画像)を、ポイントクラウドに基づいて生成された様々な位置の予想されるセンサ読み取り値とマッチングすることによって、デバイスの位置を判定する。
平面マッチングモデルは、物理空間を、現実世界の大きく比較的平坦な表面に対応する位置にある仮想内の平面のセットとして表す。例えば、部屋の床、壁、及びテーブル天板はそれぞれ平面マッチングモデルの平面で表すことができる。平面マッチングモデルは、デバイスによって生成されたセンサデータ(例えばカメラ画像)で識別された平面をモデル内の平面にマッチングすることによって、デバイスの位置を判定する。
ラインマッチングモデルは平面マッチングモデルに似ているが、現実世界のラインに対応する位置に仮想世界のラインを定義する点が異なる。例えば、線は家具の端、2つの壁の間の接合部などであり得る。ラインマッチングモデルは、デバイスによって生成されたセンサデータ(例えばカメラ画像)で識別されたラインをモデル内のラインとマッチングすることにより、デバイスの位置を判定する。
地理情報システム(GIS)モデルは、画素データを衛星画像データとマッチングする。GISモデルは、視点の地平線で検出されたオブジェクトに基づいて視点を推定する。地平線上のオブジェクトのサイズとスケールは、画素データ(例えば、幅及び/又は高さのピクセル数)に基づいてGISモデルによって推定される。次に、GISモデルは、推定されたオブジェクトを、GISモデルが視点の地平線上にあると予測する、衛星画像データに含まれるオブジェクトとマッチングする。これは、衛星画像データ及び/又は画素データに1つ以上の数学的変換及び/又は機械学習モデル(例えば、ディープニューラルネットワーク)を適用することによって実行することができる。マッチングされたオブジェクトに基づいて、GISモデルは、画素データを生成したカメラ、ひいてはクライアントデバイス102の可能性のある視点を識別する。
建物認識モデル、並びに他のオブジェクト及び/又はセマンティックマッチングモデル(ツリー認識モデルなど)は、画素データを認識するようにトレーニングされたオブジェクト又はセマンティクスにマッチングさせる。例えば、建物認識モデルは、ポジティブケースとしてラベル付けされた建物の画像とネガティブケースとしてラベル付けされた他のオブジェクトの画像を含むトレーニングデータセットに基づいて建物を認識するようにトレーニングされた機械学習モデルであり得る。トレーニング時に、建物認識モデルは、画素データ(画像など)に建物が含まれるかどうかを予測できる。同様に、モデルは、道路標識、樹木、ベンチなど、画像に存在し得る様々なオブジェクトを認識するようにトレーニングできる。
利用可能なモデルのセットに関係なく、クライアントデバイス102は、収集された生データに基づいて、ローカリゼーションのために1つ以上のモデルを選択する。例えば、平面マッチングモデル及びラインマッチングモデルは屋内で最も正確であり得るのに対し、景色マッチングモデル及び建物マッチングモデルは屋外で最も正確であり得る。したがって、収集されたデータ(例えば、照明レベル及び画像)は、ローカリゼーション/マッピングモジュール112によって分析されて、クライアントデバイス102が現在屋内にあるか屋外にあるかを判定し、次に、より効果的なモデルを選択することができる。
一実施形態では、各モデルには、モデルが現在の状況に基づいて(例えば、収集されたデータによって示されるように)クライアントデバイスの正確な位置を生成する可能性を示すスコアが割り当てられる。スコアは、そのパラメータが手動で設定される決定木に基づくことができる。あるいは、スコアは、様々なARマップタイプからの様々なモデルの入力とパラメータを使用した強化学習でトレーニングされた機械学習モデルに基づくことができる。強化の「報酬」は、モデルのパフォーマンス、例えば、位置推定の精度に比例する。
スコアに基づいて、1つ又は複数のモデルが選択される。例えば、クライアントデバイス102は、最高スコアを有するモデル、3つの最高スコアモデル、又は閾値を超えるスコアを有する全てのモデルを選択することができる。追加的又は代替的に、選択は、どのモデルが以前に同様の位置で選択されたかに基づくことができる。
例えば、クライアントデバイス102のGPS座標が、平面マッチングモデルが以前に正常に使用されたGPS座標の閾値内にある場合、平面マッチングモデルのスコアを上げるか、又は他のモデルのスコアが平面マッチングモデルのスコアを閾値量だけ超えない限り、平面マッチングモデルを選択することができる。同様に、特定のモデルが以前に選択され、正確な位置を提供できなかった場合、そのモデルのスコアが低下し得る。このように、同様のGPS座標でのモデルの成功と失敗を使用して、クライアントデバイス102がGPS座標によって提供されるよりも正確な位置(例えば、1センチメートル以内)を判定するために選択する1つ又は複数のモデルを通知することができる。
同様の方法で、クライアントデバイス102は、収集されたデータが現在の位置に類似していることを示す位置でのモデルの成功及び失敗を考慮に入れることができる。例えば、位置は屋内又は屋外として分類することができ、クライアントデバイス102が屋内又は屋外にあることを収集されたデータが示すかどうかに基づいて、特定のモデルが除外又は選択(又は対応するスコアが増加又は減少)され得る。収集されたデータは、1つ以上のモデル(例えば、オブジェクト認識モデル)によって分析され、特徴的に屋内又は屋外にあるオブジェクトのモデルを使用することによって、屋内又は屋外のどちらで収集されたかを判定することができる。例えば、木、空、草のモデルを使用してデータが外部で収集されたことを判定し、壁、カウチ、テーブルのモデルを使用してデータが内部で収集されたことを判定する。
同様に、選択される1つ又は複数のモデルは、照明レベルに基づくことができる。例えば、あるモデル(例えば、ラインクラウド)は、暗い条件で他のモデルと比較して特に効果的である可能性があるため、したがって、クライアントデバイス102によって検出された照明レベルが閾値を下回る場合に優先的に選択される。同様に、他のモデル(例えば、ポイントマップ)は、暗い位置では効果が低い可能性があるため、回避(別のモデルが利用可能であると想定)される。実施形態に応じて、現在の条件で正確な結果を生成する可能性が最も高いモデルの選択を優先するためにどのモデル(1つ又は複数)が選択されるかに影響を与える収集データの他の技法を使用することができる。
ローカリゼーション/マッピングモジュール112は、選択された1つ以上のモデルを適用して、クライアントデバイス102の潜在的な位置を生成することができる。単一のモデルのみが選択された場合、生成された位置は、クライアントデバイス102の実際の位置として使用され得る。しかしながら、GPS座標が利用可能である場合において、モデルを使用して判定された位置がGPS座標と閾値量を超えて異なっていれば、クライアントデバイス102は、追加のモデルを適用するか、そうでなければ、位置推定が正確であるかどうかをユーザに確認するように求めるメッセージを表示することなどによって、現在の位置を検証しようと試み、受信した応答に基づいて位置推定を更新することができる。
複数のモデルが選択される場合、選択された各モデルは、クライアントデバイス102の潜在的な位置を生成することができる。ローカリゼーション/マッピングモジュール112は、複数の選択されたモデルの累積的な潜在的な位置に基づいて、クライアントデバイス102の現在の位置を判定する。一実施形態では、現在の位置は、選択されたモデルによって生成された潜在的な位置の平均として計算される。別の実施形態では、潜在的な位置の加重平均が使用される。例えば、各モデルの寄与は、モデル選択フェーズからのスコアによって重み付けされ得る。あるいは、例えば、過去の正確さに基づいて、特定のモデルを他のモデルよりも優先するように重み付けを事前設定することもできる。更なる実施形態では、潜在的な位置は、デバイスのGPS座標に最も厳密にマッチングするものをとるなど、他の方法で組み合わせることができる。
図1に示す実施形態では、クライアントコンピューティングデバイス102はまた、マップ検索モジュール114及び深層学習モジュール116を含む。マップ検索モジュール114は、以前に生成された3−Dマップを(例えば、ネットワーク104を介して)検索する。いくつかの実施形態では、マップ検索モジュール114は、いくつかの3−Dマップ(例えば、ユーザの自宅の位置の3−Dマップ)をローカルに保存することができる。深層学習モジュール116は、オブジェクト認識のために機械学習されたアルゴリズムを適用する。深層学習モジュール116は、トレーニングされた機械学習アルゴリズムを、ネットワーク104を介して取得することができる。いくつかの実施形態では、深層学習モジュール116はまた、更なるモデルトレーニングを可能にするために、オブジェクト認識及び/又はユーザフィードバックの結果を提供できる。
ここに示される実施形態では、ネットワーク104を介して(例えば、サーバコンピューティングデバイスで)アクセスされるクラウドサーバ要素は、一世界マッピングモジュール(a one world mapping module)120、オブジェクト認識/セマンティックセグメンテーションモジュール122、マップデータベース124、オブジェクトデータベース126、及び深層学習トレーニングモジュール128と通信する、ARバックエンドエンジン118を含む。他の実施形態では、追加の又は異なる構成要素が含まれ得る。更に、機能は、本明細書に記載されているものとは異なる方法で分散され得る。例えば、オブジェクト認識機能の一部又は全ては、クライアントデバイス102で実行され得る。
ARバックエンドエンジンは、クライアントデバイス102からデータを受信し、3−Dマップ情報及び/又は他のデータをクライアントデバイス102に送信する。ARバックエンドエンジンは、受信データのタイプに基づいて、受信データを一世界マッピングモジュール120及び/又はオブジェクト認識/セマンティックセグメンテーションモジュール122に送信して、更にそれを処理することができる。
一世界マッピングモジュール120は、異なるローカル3−Dマップを融合して、複合現実世界マップを作成する。前述のように、最初にマップを生成したクライアントデバイス102からのGPS位置データを使用して、隣接又は重なっている可能性が高いローカルマップを識別することができる。次に、パターンマッチングを使用して、マップの重複部分、又は2つのローカルマップが互いに隣接していることを識別できる(例えば、同じオブジェクトの反対側の表現が含まれているなどの理由で)。2つのローカルマップが重なっている又は隣接していると判定された場合、2つのマップが互いにどのように関連しているかを示すマッピングを(例えば、マップデータベースに)保存するか、又は1つの3−Dマップに組み合わせることができる。
オブジェクト認識/セマンティックセグメンテーションモジュール122は、画像及び/又はオブジェクト情報、並びに、収集された3−Dデータを使用して、現実世界の特徴を識別する。このようにして、サーバ104は、例えば、椅子が3−D位置にあると判定し、その位置に関連付けられたオブジェクトデータベース126にアクセスする。深層学習トレーニングモジュール128を使用して、例えば、3−Dマップに表される位置でオブジェクトの表現を3−Dマップに追加するなど、マップ情報をオブジェクト情報と融合することができる。このようにして、システム100は、オブジェクト認識及び3−Dマップへのフュージョンバックのための3−D情報に接続することができる。代替的又は追加的に、深層学習トレーニングモジュール128を使用して、オブジェクト認識のために機械学習モデルをトレーニング又は更新することができる。例えば、オブジェクト認識/セマンティックセグメンテーションモジュール122の3−Dデータへの適用の結果は、深層学習トレーニングモジュール128がトレーニングデータセットの拡張又は検証に基づくモデルの更新をすることができるように、(例えば、人間によって)検証され得る。
マップデータベース124は、クライアントデバイス102によって生成されたマップデータを保存するように構成された1つ以上のコンピュータ可読媒体を含む。マップデータは、ある位置でクライアントデバイス102によって収集された画像及び他のセンサデータに関連付けて保存された3−Dポイントクラウドのローカルマップを含むことができる。マップデータには、異なるローカルマップ間の地理的関係を示すマッピング情報も含まれ得る。同様に、オブジェクトデータベース126は、認識されたオブジェクトに関する情報を保存するように構成された1つ以上のコンピュータ可読媒体を含む。例えば、オブジェクトデータベース126は、既知のオブジェクト(例えば、椅子、机、木、建物など)のリストを、それらのオブジェクトのプロパティとともに、対応する位置と一緒に含み得る。プロパティは、オブジェクトタイプに一般的であるか、オブジェクトのインスタンスごとに特別に定義され得る(例えば、全ての椅子は家具と見なされ得るがあるが、それぞれの位置は個別に定義される)。マップデータベース124及びオブジェクトデータベース126は、単一のエンティティとして示されているが、それらは、複数のデバイス上の複数の記憶媒体に分散されてもよく(例えば、分散データベースとして)、又は1つの組み合わされたデータベースであってもよい。
図2は、一実施形態による、ARデータを生成及び表示するためにクライアントデバイス102及びサーバデバイスによって実行されるプロセスを示すフローチャートである。クライアント102及びサーバコンピューティングデバイスは、図1に示されるものと同様であり得る。破線は、クライアント102とサーバとの間のデータの通信を表し、実線は、それらのデバイス内部でのデータの通信を表す。他の実施形態では、機能は、デバイス間で異なって分散されてもよく、及び/又は異なるデバイスが使用されてもよい。
ステップ202で、生データは1つ以上のセンサによってクライアントデバイスで収集される。一実施形態では、生データは、画像及び慣性測定情報を含む。画像は1台以上のカメラでキャプチャされる。慣性測定情報は、クライアントデバイス又はクライアントデバイスに通信可能に接続された別のデバイス上のGPS及びジャイロスコープ及び/又は加速度計コンポーネントを使用して収集することができる。代替的な実施形態では、圧力レベル、照明レベル、音レベル、音声データなどの追加の生データを収集することができる。
クライアントデバイス102は、ステップ204でローカルマップストレージを維持することができる。ローカルマップストレージは、ローカルポイントクラウドデータを含む。ポイントクラウドデータは、ポイントクラウドデータがある位置における1つ以上のオブジェクトを表すように構築できるメッシュサーフェスを形成する空間内の位置で構成される。
ステップ206で3−Dマップが初期化される場合、クライアントデバイス102は、ステップ208でSLAM機能を開始することができる。SLAM機能は、ポイントクラウドを構築するマッピングシステムと、空間内でカメラの位置を見つける及び/又は空間内でカメラの向きを合わせるための追跡機能を含む。SLAMプロセスは、ARエクスペリエンスの中で現実言葉にいるかのようにプロジェクト仮想オブジェクトを投影する。ステップ206で3−Dマップが初期化されない場合、クライアントデバイス102は、ローカルマップストレージ204に、又はクラウドマップストレージ220へのクエリによって、保存された3−Dマップを識別し、当該保存された3−Dマップを使用するためにロードすることができる。ステップ210でマップが配置されていない場合、ステップ212でシステムは初期化モジュールを使用してマップを作成する。
ステップ214で新規の視点が検出された場合(例えば、コーナーをマッピング/イメージングされていない領域に変えるか、重複があり且つ現実世界の現在見える部分の全てがマッピング/イメージングされていない場合)、システムは、ステップ216で、(例えば、オブジェクト認識を使用して)ローカル環境について収集された、及び/又は推論されたデータを記録することができる。例えば、クライアントデバイス102が現在新規の視点を有すると判定すると、その視点でカメラによってキャプチャされた画像は、クライアントデバイス102によってサーバに送信され得る。クライアントデバイス102は、新規視点の検出器を使用して、3−Dデータを伴う画像をいつどのように送信するかを判定することができる。ローカル環境の推論には、ローカルマッピングシステムの更新されたキーフレームと、シリアル化された画像及び/又はマップデータが含まれ得る。
サーバ側では、新規の視点データ(例えば、ポイントクラウド情報とメッシュデータを含む)は、ステップ218で、クラウドマップストレージに保存され得る。サーバは、上記のように機械学習を使用して認識されたオブジェクトのラベルなど、保存されたクラウドマップストレージ220及びオブジェクトデータベース222からの現実世界マップの異なる部分を新規の視点データに追加することができる。クラウド環境推論224(例えば、認識されたオブジェクトのセマンティックラベルなどの追加データを含む)は、クライアントデバイス102に返送され得る。追加されたデータは、ポイント及びメッシュ及びオブジェクトデータを含んでいてもよく、ローカルマップストレージ204に保存するために送信され得る。
図3は、クライアントデバイス102又はサーバとして使用するのに適した例示的なコンピュータ300を示すハイレベルブロック図である。例示的なコンピュータ300は、チップセット304に結合された少なくとも1つのプロセッサ302を含む。チップセット304は、メモリコントローラハブ320及び入力/出力(I/O)コントローラハブ322を含む。メモリ306及びグラフィックアダプタ312は、メモリコントローラハブ320に結合され、ディスプレイ318は、グラフィックアダプタ312に結合される。ストレージデバイス308、キーボード310、ポインティングデバイス314、及びネットワークアダプタ316は、I/Oコントローラハブ322に結合される。コンピュータ300の他の実施形態は、異なるアーキテクチャを有する。
図3に示す実施形態では、ストレージデバイス308は、ハードドライブ、コンパクトディスク読み取り専用メモリ(compact disk readonly memory:CD−ROM)、DVD、又はソリッドステートストレージデバイスなどの非一時的なコンピュータ可読記憶媒体である。メモリ306は、プロセッサ302によって使用される命令及びデータを保持する。ポインティングデバイス314は、マウス、トラックボール、タッチスクリーン、又は他のタイプのポインティングデバイスであり、キーボード310(オンスクリーンキーボードであり得る)と組み合わせて使用されて、コンピュータシステム300にデータを入力する。グラフィックアダプタ312は、画像及び他の情報をディスプレイ318に表示する。ネットワークアダプタ316は、コンピュータシステム300を1つ以上のコンピュータネットワークに結合する。
図1のエンティティによって使用されるコンピュータのタイプは、実施形態及びエンティティによって要求される処理能力に応じて変化し得る。例えば、サーバは、説明された機能を提供するために一緒に動作する複数のブレードサーバを含む分散データベースシステムを含み得る。更に、コンピュータは、キーボード310、グラフィックアダプタ312、及びディスプレイ318などの上記のコンポーネントのいくつかを欠くことができる。
図4は、デバイスの位置を判定するための方法400の一実施形態を例示する。図4のステップは、方法400を実行するクライアントデバイス102の観点から示されている。ただし、一部又は全ての手順は、他のエンティティ又は構成要素によって実行される場合がある。更に、いくつかの実施形態は、ステップを並行して実行するか、異なる順序でステップを実行するか、又は異なるステップを実行することができる。
図4に示す実施形態では、方法400は、クライアントデバイス102で1つ以上のセンサを用いてセンサデータを収集することから開始される(ステップ410)。センサデータは、画像、ビデオ、オーディオ、光レベル、音レベル、慣性データ、向き、圧力、及び/又はセンサからのその他の利用可能なデータを含み得る。センサデータに基づいて、クライアントデバイス102は1つ以上のローカリゼーションモデルを選択する(ステップ420)。前述のように、選択された1つ又は複数のモデルは、モデルに割り当てられたスコアに基づくことができ、スコアは、センサデータ及び/又は特定の位置や環境での過去のパフォーマンスなどの追加の要因に基づく。
クライアントデバイス102は、選択されたローカリゼーションモデルを適用して、クライアントデバイスの潜在的な位置を生成する(ステップ430)。一実施形態では、各モデルが潜在的な位置を出力する。潜在的な位置は、ローカルマップ内の座標系に基づいて定義することができる(例えば、クライアントデバイス102のGPS座標に基づいて選択されるように)。例えば、クライアントデバイス102が建物内のどこかにある可能性が高いことをGPS座標が示すことがあり、したがって、その建物のローカルマップが使用される。次に、選択されたモデルが適用されて、建物内のクライアントデバイス102のより正確な位置が判定される(例えば、1センチメートルの精度を目標とする)。
クライアントデバイス102は、潜在的な位置に基づいて現在の位置を判定する(ステップ440)。モデルが1つだけ選択された場合、モデルが生成する潜在的な位置は正しいと見なされ得る。あるいは、利用可能なセンサデータに基づいて、潜在的な位置の実行可能性をチェックすることができる(例えば、GPS座標によって示される位置の閾値距離内にあること、検出された照明レベルが潜在的な位置の予想と一致していること、画像がキャプチャされていること、クライアントデバイス102によって、同様の位置などでキャプチャされた他の画像と一致していること)。複数のモデルが選択されている場合、潜在的な位置を組み合わせて現在の位置を生成することができる。前述したように、平均、加重の組み合わせ、又は他の適切な技術を使用して、潜在的な位置から現在の位置を生成することができる。
当技術分野の当業者は、記載された概念から逸脱することなく、本明細書に開示される装置及び技術の多くの使用及び修正及び逸脱を行うことができる。例えば、本開示で図示又は説明される構成要素又は特徴は、図示又は説明される位置、設定、又は文脈に限定されない。本開示による装置の例は、前述の図の1つ以上を参照して説明されたものよりも、全て、より少ない、又は異なる構成要素を含むことができる。したがって、本開示は、本明細書に記載の特定の実装に限定されるものではなく、添付の特許請求の範囲及びその同等物と一致する可能な限り広い範囲を与えられるべきである。
特定の実施形態によれば、コンピュータ媒介現実データを生成するステップを含む方法であって、その方法は、クライアントデバイスで3次元(3−D)マップデータ及びカメラ位置データを生成するステップと、3−Dマップデータ及びクライアントデータをリモートサーバに送信するステップと、クライアントデバイスでワールドマップデータをリモートサーバから受信するステップであって、ワールドマップデータが3−Dマップデータを使用して生成されるステップと、クライアントデバイスでコンピュータ媒介現実画像を生成するステップと、を含む。
ARプラットフォーム108はまた、ローカリゼーション/マッピングモジュール112を含む。一実施形態では、ローカリゼーション/マッピングモジュール112は、同時ローカリゼーション/マッピング(Simultaneous Localization and Mapping:SLAM)ソフトウェア開発キット(SDK)からの機能を使用する。SLAM SDKの機能には、現実世界のジオメトリを近似するための、ポイントクラウド、ラインクラウド、平面クラウド、または任意の幾何学的なクラウドを構築するマッピングシステムを含み、3次元空間でカメラの現在の位置を求める追跡機能を提供する。SLAMは、更に、プロジェクトアニメーション又は拡張値(仮想オブジェクトなど)をARに処理して、現実世界にあるように見せる。他の実施形態では、ローカリゼーション/マッピングモジュール112は、クライアントデバイス102の周りの環境をマッピングするため、及び/又はその環境におけるクライアントデバイスの位置を判定するために、異なる又は追加のアプローチを使用することができる。
ステップ206で3−Dマップが初期化される場合、クライアントデバイス102は、ステップ208でSLAM機能を開始することができる。SLAM機能は、ポイントクラウドを構築するマッピングシステムと、空間内でカメラの位置を見つける及び/又は空間内でカメラの向きを合わせるための追跡機能を含む。SLAMプロセスは、ARエクスペリエンスの中で現実世界にいるかのようにプロジェクト仮想オブジェクトを投影する。ステップ206で3−Dマップが初期化されない場合、クライアントデバイス102は、ローカルマップストレージ204に、又はクラウドマップストレージ220へのクエリによって、保存された3−Dマップを識別し、当該保存された3−Dマップを使用するためにロードすることができる。ステップ210でマップが配置されていない場合、ステップ212でシステムは初期化モジュールを使用してマップを作成する。