IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ナイアンティック, インコーポレイテッドの特許一覧

特開2024-88703マッピングデバイスからのローカルマップのマージング
<>
  • 特開-マッピングデバイスからのローカルマップのマージング 図1
  • 特開-マッピングデバイスからのローカルマップのマージング 図2
  • 特開-マッピングデバイスからのローカルマップのマージング 図3
  • 特開-マッピングデバイスからのローカルマップのマージング 図4
  • 特開-マッピングデバイスからのローカルマップのマージング 図5
  • 特開-マッピングデバイスからのローカルマップのマージング 図6
  • 特開-マッピングデバイスからのローカルマップのマージング 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024088703
(43)【公開日】2024-07-02
(54)【発明の名称】マッピングデバイスからのローカルマップのマージング
(51)【国際特許分類】
   G06T 17/05 20110101AFI20240625BHJP
   G06T 11/60 20060101ALI20240625BHJP
   G09B 29/00 20060101ALI20240625BHJP
   A63F 13/216 20140101ALN20240625BHJP
   A63F 13/65 20140101ALN20240625BHJP
   A63F 13/30 20140101ALN20240625BHJP
【FI】
G06T17/05
G06T11/60 300
G09B29/00 Z
A63F13/216
A63F13/65
A63F13/30
【審査請求】有
【請求項の数】20
【出願形態】OL
(21)【出願番号】P 2024059577
(22)【出願日】2024-04-02
(62)【分割の表示】P 2022538069の分割
【原出願日】2020-12-18
(31)【優先権主張番号】62/952,036
(32)【優先日】2019-12-20
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】519087723
【氏名又は名称】ナイアンティック, インコーポレイテッド
【氏名又は名称原語表記】NIANTIC,INC.
【住所又は居所原語表記】One Ferry Building,Suite 200 San Francisco,CA 94111 United States of America
(74)【代理人】
【識別番号】110001243
【氏名又は名称】弁理士法人谷・阿部特許事務所
(72)【発明者】
【氏名】アンヴィズ エッカティ
(72)【発明者】
【氏名】プルナ ソウミャ ムヌクトラ
(72)【発明者】
【氏名】ダーリニ クリシュナ
(72)【発明者】
【氏名】ピーター ジェームズ ターナー
(72)【発明者】
【氏名】ガンディヴァン ラグラマン
(72)【発明者】
【氏名】シー イン ダイアナ フー
(57)【要約】
【課題】マッピングデバイスからのローカルマップのマージングを提供する。
【解決手段】拡張現実システムは、クライアントデバイス上でコンピュータ媒介リアリティを生成する。クライアントデバイスは、環境の画像データを取り込むように構成されたカメラを含むセンサーを有する。拡張現実システムは、取り込まれた画像データに基づいて、クライアントデバイスの周囲の環境の第1の3Dマップを生成する。サーバーは、環境内の第2のクライアントデバイスから取り込まれた画像データを受信し、環境の第2の3Dマップを生成する。サーバーは、第1及び第2の3Dを単一の3Dマップに連結する。単一の3Dマップは、クライアントデバイスで取り込まれた画像データによって生成された3Dマップを表すノードと、ノード間の変換を表すエッジとを用いた実世界のグラフィック表現であり得る。
【選択図】図5
【特許請求の範囲】
【請求項1】
マップデータを組み合わせて環境の3次元(3D)マップを生成するコンピュータ実装方法であって、
第1のクライアントデバイスと第2のクライアントデバイスとの間で位置を同期させることと、
第1の画像データのセットに基づいて、第1の3Dマップを特定することであって、前記第1の画像データのセットは、前記第1のクライアントデバイスによって生成されることと、
第2の画像データのセットに基づいて、第2の3Dマップを特定することであって、前記第2の画像データのセットは、前記第2のクライアントデバイスによって生成されることと、
前記第1のクライアントデバイスと前記第2のクライアントデバイスとの間で同期された前記位置に基づいて、前記第1の3Dマップ及び前記第2の3Dマップから単一の3Dマップを生成することと、
を備える、コンピュータ実装方法。
【請求項2】
前記単一の3Dマップを生成することは、前記第1のクライアントデバイスと前記第2のクライアントデバイスとの間で同期された前記位置に基づいて、前記第1の3Dマップ及び前記第2の3Dマップを互いにつなぎ合わせることを備える、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記単一の3Dマップを生成することは、前記第1の画像データのセット及び前記第2の画像データのセットの共通の特徴にさらに基づく、請求項1に記載のコンピュータ実装方法。
【請求項4】
前記共通の特徴は、QRコード又は第3のクライアントデバイスである、請求項3に記載のコンピュータ実装方法。
【請求項5】
前記第1の3Dマップ及び前記第2の3Dマップから前記単一の3Dマップを生成する前に、
前記第1の3Dマップにおける第1の特徴を特定することと、
前記第2の3Dマップにおける第2の特徴を特定することと、
前記第1のクライアントデバイスと前記第2のクライアントデバイスとの間で同期された前記位置に基づいて、前記第2の特徴に対する前記第1の特徴の相対的な位置を決定することと、
をさらに備える、請求項1に記載のコンピュータ実装方法。
【請求項6】
前記単一の3Dマップを生成することは、前記第2の特徴に対する前記第1の特徴の前記相対的な位置にさらに基づく、請求項5に記載のコンピュータ実装方法。
【請求項7】
前記第1の特徴は、前記第1の3Dマップ及び前記第2の3Dマップに共通する特徴である、請求項5に記載のコンピュータ実装方法。
【請求項8】
前記第1の3Dマップ及び前記第2の3Dマップは重ならない、請求項1に記載のコンピュータ実装方法。
【請求項9】
前記第1の3Dマップは、グラフの第1のノードに関連付けられ、
前記第2の3Dマップは、前記グラフの第2のノードに関連付けられ、
前記第1のノード及び前記第2のノードは、前記第1のクライアントデバイスと前記第2のクライアントデバイスとの間で同期された前記位置に基づいて決定されたエッジによって連結される、
請求項1に記載のコンピュータ実装方法。
【請求項10】
前記第1の3Dマップ及び前記第2の3Dマップから前記単一の3Dマップを生成する前に、
前記第1の画像データのセット及び前記第2の画像データのセットを受信することと、
前記第1の画像データのセットに基づいて、前記第1の3Dマップを生成することと、
前記第2の画像データのセットに基づいて、前記第2の3Dマップを生成することと、
をさらに備える、請求項1に記載のコンピュータ実装方法。
【請求項11】
非一時的コンピュータ可読記憶媒体であって、コンピューティングデバイスによって実行されると、
第1のクライアントデバイスと第2のクライアントデバイスとの間で位置を同期させることと、
第1の画像データのセットに基づいて、第1の3Dマップを特定することであって、前記第1の画像データのセットは、前記第1のクライアントデバイスによって生成されることと、
第2の画像データのセットに基づいて、第2の3Dマップを特定することであって、前記第2の画像データのセットは、前記第2のクライアントデバイスによって生成されることと、
前記第1のクライアントデバイスと前記第2のクライアントデバイスとの間で同期された前記位置に基づいて、前記第1の3Dマップ及び前記第2の3Dマップから単一の3Dマップを生成することと、
を含む動作を前記コンピューティングデバイスに実行させる指令を備える、非一時的コンピュータ可読記憶媒体。
【請求項12】
前記単一の3Dマップを生成することは、前記第1のクライアントデバイスと前記第2のクライアントデバイスとの間で同期された前記位置に基づいて、前記第1の3Dマップ及び前記第2の3Dマップを互いにつなぎ合わせることを備える、請求項11に記載の非一時的コンピュータ可読記憶媒体。
【請求項13】
前記単一の3Dマップを生成することは、前記第1の画像データのセット及び前記第2の画像データのセットの共通の特徴にさらに基づく、請求項11に記載の非一時的コンピュータ可読記憶媒体。
【請求項14】
前記共通の特徴は、QRコード又は第3のクライアントデバイスである、請求項13に記載の非一時的コンピュータ可読記憶媒体。
【請求項15】
前記動作は、
前記第1の3Dマップ及び前記第2の3Dマップから前記単一の3Dマップを生成する前に、
前記第1の3Dマップにおける第1の特徴を特定することと、
前記第2の3Dマップにおける第2の特徴を特定することと、
前記第1のクライアントデバイスと前記第2のクライアントデバイスとの間で同期された前記位置に基づいて、前記第2の特徴に対する前記第1の特徴の相対的な位置を決定することと、
をさらに備える、請求項11に記載の非一時的コンピュータ可読記憶媒体。
【請求項16】
前記単一の3Dマップを生成することは、前記第2の特徴に対する前記第1の特徴の前記相対的な位置にさらに基づく、請求項15に記載の非一時的コンピュータ可読記憶媒体。
【請求項17】
前記第1の特徴は、前記第1の3Dマップ及び前記第2の3Dマップに共通する特徴である、請求項15に記載の非一時的コンピュータ可読記憶媒体。
【請求項18】
前記第1の3Dマップ及び前記第2の3Dマップは重ならない、請求項11に記載の非一時的コンピュータ可読記憶媒体。
【請求項19】
前記第1の3Dマップは、グラフの第1のノードに関連付けられ、
前記第2の3Dマップは、前記グラフの第2のノードに関連付けられ、
前記第1のノード及び前記第2のノードは、前記第1のクライアントデバイスと前記第2のクライアントデバイスとの間で同期された前記位置に基づいて決定されたエッジによって連結される、
請求項11に記載の非一時的コンピュータ可読記憶媒体。
【請求項20】
コンピュータシステムであって、
コンピュータプロセッサシステムと、
コンピュータ可読記憶媒体であって、前記コンピュータプロセッサシステムによって実行されると、
第1のクライアントデバイスと第2のクライアントデバイスとの間で位置を同期させることと、
第1の画像データのセットに基づいて、第1の3Dマップを特定することであって、前記第1の画像データのセットは、前記第1のクライアントデバイスによって生成されることと、
第2の画像データのセットに基づいて、第2の3Dマップを特定することであって、前記第2の画像データのセットは、前記第2のクライアントデバイスによって生成されることと、
前記第1のクライアントデバイスと前記第2のクライアントデバイスとの間で同期された前記位置に基づいて、前記第1の3Dマップ及び前記第2の3Dマップから単一の3Dマップを生成することと、
を備えた動作を実行する指令を格納する、該コンピュータ可読記憶媒体と、
を備える、コンピュータシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、コンピュータ媒介リアリティシステムに関し、より詳細には、クライアントデバイスによって集められたデータから生成される3Dマップを単一の3Dマップに連結する拡張現実(AR)システムに関するものである。
【背景技術】
【0002】
本出願は、その全体が参照により組み込まれる2019年12月20日出願の米国仮出願第62/952,036号の利益を主張するものである。
【0003】
パラレルリアリティゲームは、プレイヤのコミュニティを魅了することができる様々なインタラクションをホストすることが可能な、実世界の少なくとも一部を並行する共有仮想世界を提供し得る。実世界の少なくとも一部に並行する地理を有する仮想世界を提供することは、プレイヤが、実世界をナビゲートすることによって仮想世界をナビゲートすることを与える。プレイ中、プレイヤは携帯型又は装着型のデバイスを通して仮想世界を見る場合があり、コンピュータ媒介リアリティ技術を使用して、プレイヤの視覚又は聴覚による環境の認識を追加、減算、又はその他の方法で変化させる。
【0004】
しかしながら、環境のプレイヤの視覚的知覚を正確に変更することは、典型的には、実世界におけるプレイヤの位置を正確に知ることを伴う。従来の測位デバイスは、相当の大きさの誤差範囲なしにプレイヤの位置を決定するほど正確ではないので、これを確認することは困難であり得る。したがって、将来的にモバイル機器の位置を決定することを支援するために、プレイヤのモバイル機器のカメラによって取り込まれた実世界をマッピングするためのシステムが望まれている。
【発明の概要】
【0005】
位置情報パラレルリアリティゲームでは、プレイヤは、スマートフォンなどの位置認識クライアントデバイスを使用し、実世界を移動することによって仮想世界をナビゲートする。多くのクライアントデバイスは、デバイス上のカメラによって取り込まれた画像データを使用してプレイヤの環境をマッピングし、それらは、プレイヤの位置を決定したり、取り込まれた画像データ上にオーバーレイする拡張現実(AR)画像を決定したりすることなどであり得る。これらのマップは、同じ環境を記述し得るが、異なるクライアントデバイスで取り込まれるため、マップは、異なる座標空間を有し、環境の異なる視野を取り込み得る。環境の単一の3Dマップを作成するために、生成されたマップは、画像データ、位置データ、及び/又はそのデータを取り込んだクライアントデバイスに基づいて、一緒に連結され得る。
【0006】
特定の実施形態によれば、ネットワークによって複数のクライアントデバイスに接続されたシステムは、第1のクライアントデバイスに統合されたカメラによって取り込まれた画像データの第1のセットを受信する。画像データの第1のセットは、第1のクライアントデバイスの周囲の第1のエリアのほぼリアルタイムの視野を表す。システムは、画像データの第1のセットに基づき、第1の3Dマップを生成する。3Dマップは、第1のクライアントデバイスの周囲の第1のエリアを空間的に記述する。システムは、第2のクライアントデバイスの周囲の第2のエリアのほぼリアルタイムの視野を表す第2の画像データのセットを受信し、第2の画像データのセットに基づいて第2の3Dマップを生成する。システムは、第1及び第2の3Dマップを分析して共通の特徴を特定し、第1及び第2の3Dマップを、共通の特徴に基づいて単一の3Dマップに連結する。
【0007】
単一の3Dマップは、それぞれがクライアントデバイスで取り込まれた画像データによって生成された3Dマップを表すノードのグラフであり得る。各ノードは、画像データを取り込んだクライアントデバイスに基づく異なる座標空間と関連付けられてもよく、グラフは、座標空間間の変換を表すノード間のエッジを含んでもよい。システムは、グラフを使用して、環境におけるクライアントデバイスの位置を決定してもよい。
【0008】
これら及び他の特徴、態様、及び利点は、以下の説明及び添付の特許請求の範囲を参照することにより、より良く理解され得る。添付の図面は、特定の実施形態を示し、説明と合わせて、様々な原理を説明するのに役立つ。しかしながら、図面は、限定的であると考えるべきではない。むしろ、保護範囲は、特許請求の範囲から決定されるべきである。
【図面の簡単な説明】
【0009】
図1】一実施形態による、拡張現実データを生成及び表示するためのネットワーク化されたコンピューティング環境を示す図である。
図2】一実施形態によるワンワールドマッピングモジュール120のブロック図である。
図3】一実施形態による、拡張現実データを生成及び表示するためのARコンピューティングシステムによって実行可能な処理を示すフローチャートである。
図4】一実施形態による、位置情報パラレルリアリティゲームのプレイヤのゲームボードとして動作できる、実世界と並行する仮想世界の概念図である。
図5】一実施形態による、第1の3Dマップと第2の3Dマップを環境の単一の3Dマップに連結することを示すフローチャートである。
図6】一実施形態による、同期に基づく環境の単一の3Dマップを生成することを示すフローチャートである。
図7】一実施形態による、クライアントデバイス又はサーバーとして使用するのに適したコンピュータの例を示す高レベルブロック図である。
【発明を実施するための形態】
【0010】
システム及び方法は、2つ以上のローカルマップを1つのマップに連結する。単一のマップは、実世界と並行する仮想世界における拡張現実インタラクションを可能にするために使用され得る。様々な実施形態において、ローカルマップは、共通の特徴を含むこと、ローカルマップを生成したクライアントデバイスの相対位置を示す同期データ、又はその両方に基づいてつなぎ合わされる。
【0011】
一実施形態では、システムは、クライアントデバイス(例えば、携帯型又は装着型の電子デバイス)上の画像及び全地球測位システム(GPS)座標を使用して、3Dマップを生成する。3Dマップは、カメラ記録モジュールと、加速度計やジャイロスコープなどの慣性測定ユニット(IMU)とで構築される。画像とGPS座標は、サーバーに送信される。サーバーとクライアントデバイスは、データを一緒に処理し、オブジェクトとジオメトリを確立し、潜在的な相互作用を決定する。潜在的なインタラクションの例としては、ARアニメーションのある部屋で仮想の要素を動かすようなものがある。
【0012】
画像と3Dマップを一緒に使用することにより、システムは、ニューラルネットワーク又は他のタイプのモデルを使用して、オブジェクト検出及びジオメトリ推定を達成し得る。ニューラルネットワークの例は、接続された単純なユニット(人工ニューロン)の大規模なコレクションを使用する機械学習で使用される計算モデルである。ソフトウェアでユニットを接続し、結合された入力信号が十分に大きければ、ユニットが独自の出力信号を発射する。システムは、ARデータを文脈的に理解するために、深層学習(例えば、多層ニューラルネットワーク)を使用してもよい。他の種類のモデルには、他の統計モデル又は他の機械学習モデルが含まれてもよい。
【0013】
システムは、ローカルマップを集約して、1つ又は複数のグローバルマップを作成する(例えば、ローカルマップを一緒に連結することによって)。集約されたマップは、サーバー上で単一のグローバルマップに結合され、環境、すなわち「世界」のデジタルマップを提供する。例えば、1つ又は複数のデバイスによって生成された2つのローカルマップは、異なる座標空間のノードとして表現され得る。類似のGPS座標、類似の画像、及び類似のセンサーデータの任意の組み合わせについて、所定の閾値内で一致するローカルマップの部分を含むものは、共通の特徴を含む(例えば、空間内で「重なる」)と決定され得る。したがって、システムは、2つのノードを、ノードの座標空間間の変換を表すエッジで互いに連結させることができる。連結されたノードは、クライアントデバイスによって取り込まれた画像を使用して作成された他のローカルマップを表すノードのグラフに含まれ得る。このグラフは、単一のグローバルマップを表し、多様なクライアントデバイスに表現される仮想世界間の一貫性を維持することを支援し得る。
【0014】
さらに、いくつかの実施形態では、システムは、ローカルマップ内に含まれるエッジ又は共通の特徴に基づいて、ローカルマップを世界地図につなぎ合わせ得る。世界地図は、特定のGPS座標における仮想世界のためのアニメーションを格納し、さらに、3D点及び視覚画像を通じて、世界の特定の場所(例えば、1フィート/30センチメートルのオーダーの解像度で)までインデックス化され得る。別の例では、システムは、ローカルマップを生成したクライアントデバイスが環境を横断する際の相対位置を示す同期データに基づいて、ローカルマップをつなぎ合わせ得る。
【0015】
例示的なプロセスは、データをクラウドに、及びクラウドからデータにマッピングする。一実施形態では、マップは、3D画素に類似する方法で世界を表す、点群などの空間内の3D点の集合体である。画像データは、利用可能で有用な場合、3Dマップと共に送信される。ある例では、画像データなしで3Dマップデータを送信する。
【0016】
様々な実施形態において、クライアントデバイスは、プロセッサによって実行される3Dアルゴリズムを使用して、3Dマップを生成する。クライアントデバイスは、画像、3Dマップ、GPSデータ、及び任意の他のセンサーデータ(例えば、IMUデータ、任意の他の位置データ)を効率的な方法で送信する。例えば、画像は、送信又は処理を停滞させないように選択的に送信され得る。一例では、画像は、環境の新規な視点を示すときには選択的に送信され、環境内の以前に見た視点を単に示すときには送信されない場合がある。画像は、例えば、クライアントデバイスのカメラの視野が、過去又は最近のカメラの姿勢からの以前の画像と最小限の重複を有するとき、又は画像内の視点が、オブジェクトの予想される動きに依存する時間量だけ観察されていないとき、システムによって送信のために指定される。別の例として、現在の(又は実質的に重複する)視点からの以前の画像が提供されてから閾値以上の時間が経過した場合に、画像が提供され得る。これにより、画像によって描かれた実世界の場所のより現在の(又は少なくとも最近の)状態を反映するために、マップに関連付けられた格納された画像を更新することが可能になり得る。
【0017】
様々な実施形態において、サーバーなどのクラウド側のデバイスは、3Dデータ及び画像を使用してオブジェクトを検出し、画像に描かれた実世界環境の幾何学的構造を推定するリアルタイム検出システムを含む。例えば、フォトリアリスティックではない部屋の3Dマップ(例えば、半密度及び/又は高密度3D再構成)は、画像で決定可能である。サーバーは、画像と3Dデータを検出システムで融合し、一貫性があり容易にインデックス化された世界の3Dマップ、又はGPSデータを使用した合成実世界マップを構築する。一度格納されると、実世界マップは、以前に格納されたアニメーションや他の仮想オブジェクトを見つけるために検索され得る。
【0018】
様々な実施形態において、マッピング及びトラッキングは、クライアントデバイス上で行われる。クライアントデバイスは、実世界に対するクライアントデバイスのカメラの位置とともに、実世界の疎な再構成を収集する(世界をデジタル化する)。マッピングは、点群又は3D点の集合を作成することを含む。クライアント端末は、点群情報とGPSデータをシリアライズして送信することで、サーバーに疎な表現を返す。クラウド処理は、マルチプレイヤ機能(独立したクライアントデバイス間でマップデータをリアルタイム又はそれに近い状態で共有)、ワーキングフィジカルメモリ(デバイスにローカルに格納されていない将来の体験のためのマップ及びアニメーションデータの格納)、及びオブジェクト検出を可能にする。
【0019】
サーバーは、マップとフレームのデータベースを含む。各フレームは、画像を形成する画素、座標空間に関する姿勢、カメラの固有値(例えば、焦点距離などのカメラパラメータ)、特徴ポイント、及び/又は特徴記述子などの1つ又は複数のセンサーデータを含む。サーバーは、GPSデータを使用して、実世界のマップが実世界の場所に対して以前に格納されているかどうかを決定する。位置が特定された場合、サーバーは、格納されたマップをクライアントデバイスに送信し得る。
【0020】
(拡張現実コンピューティングシステム)
図1は、一実施形態による、ネットワーク104を介してアクセスされる要素と協働するクライアントデバイス102を含むARコンピューティングシステム100のブロック図である。例えば、要素は、ARデータを生成するためのサーバーのコンポーネントであり得る。クライアントデバイス102は、いくつかの実施形態において、ユーザーがパラレルリアリティゲーム(例えば、拡張現実ゲーム)又は別の拡張現実システムにアクセスするために使用することができるコンピューティングデバイスである。クライアントデバイスは、オンデバイスカメラ、3Dデータ、GPSデータなどを介して画像データ(画像とも呼ばれる)を取り込む。クライアントデバイス102は、例えば、ゲームエンジン106(例えば、UNITY(登録商標)ゲームエンジン又は別の物理/レンダリングエンジン)及びARプラットフォーム108を含む。
【0021】
ゲームエンジン106は、クライアントデバイス102におけるパラレルリアリティゲーム(又は他のARプログラム)を容易にし得る。例えば、ゲームエンジン106は、ユーザーがクライアントデバイス102のインターフェースを介して情報を入力すること、又はユーザーが実世界内でクライアントデバイスを移動させることなど、ユーザーがクライアントデバイス102と行うインタラクションを受信し得る。ゲームエンジン106は、これらのインタラクションに基づいて、インターフェースを介して、パラレルリアリティゲームの情報をユーザーに表示し得る。ゲームエンジン106は、実世界内の場所に対応する仮想世界内の仮想場所で利用可能な仮想要素を含む、パラレルリアリティゲームのための情報をローカルに格納してもよい。あるいは、ゲームエンジン106は、サーバーにおいて仮想世界を記述するゲームボード情報にアクセスし、クライアントデバイス102におけるパラレルリアリティゲームを容易にするために、サーバーと継続的に通信してもよい。パラレルリアリティゲームのための仮想世界と実世界との間の並列性については、図4に関連してさらに説明する。
【0022】
ARプラットフォーム108は、クライアントデバイス102によって取り込まれたデータに対してセグメンテーション及びオブジェクト認識を実行し得る。ARプラットフォームは、複合ビジョンモジュール110、自己位置推定及びマッピングモジュール112、マップ検索モジュール114、及び深層学習モジュール116を含む。いくつかの実施形態では、ARプラットフォームは、代替又は追加のモジュールを含む。
【0023】
複合コンピュータビジョンモジュール110は、クライアント側の画像処理を実行する。複合コンピュータビジョンモジュール110は、クライアントデバイス102上のカメラによって取り込まれた画像データを受信し、画像データに対して画像処理を実行する。画像処理は、画像セグメンテーション及び局所的な3D推定を含み得る。
【0024】
自己位置推定及びマッピング(例えば、SLAM)モジュール112は、クライアントデバイス102によって取り込まれた画像データ及びGPSデータに基づいて、クライアントデバイス102の周囲の環境をマッピングする。特に、SLAMモジュール112は、クライアントデバイス102によって取り込まれたデータで見た実世界の一部を表す1つ又は複数のローカルマップをそれぞれ作成する。SLAMモジュール112はまた、いくつかの実施形態において、環境におけるクライアントデバイス102の位置を決定し得る。SLAMモジュール112は、点、線、及び平面のジオメトリを含み得るローカルマップを作成するマッピングシステムを含む。さらに、SLAMモジュール112は、点群を構築し、クライアントデバイス102によって取り込まれた追跡情報を使用して、空間におけるカメラ(例えば、クライアントデバイス102)の位置を求め得る。他の実施形態では、SLAMモジュールは、画像データ及び追跡情報を用いてマップを構築し得る。SLAMモジュール112は、さらに、クライアントデバイス102のディスプレイを介して提示される、クライアントデバイス102によって取り込まれた画像データにアニメーション又は拡張された値を重ねることによって、仮想世界から実世界へ戻って再投影をする。他の実施形態では、SLAMモジュール112は、クライアントデバイス102の周囲の環境をマッピングすること、及び/又はその環境におけるクライアントデバイス102の位置を決定することに、異なる又は追加のアプローチを使用し得る。
【0025】
いくつかの実施形態では、SLAMモジュール112は、環境のローカルマップを生成する前に、クライアントデバイス102の位置を別のクライアントデバイスと同期させ得る。例えば、SLAMモジュールは、環境内の機械可読コード(例えば、QRコード(登録商標))の画像データを受信し、クライアントデバイス102の位置を、同じ機械可読コードの画像を取り込んだ他のクライアントデバイスと同期させ得る。SLAMモジュール112は、この情報を、環境の位置を示すローカルマップの同期データとして格納してもよい。別の例では、画像データが、SLAMモジュール112が画像データから決定し得る、又はユーザーがクライアントデバイス102を介して示し得る、別のクライアントデバイスの視野を含む場合、SLAMモジュール112は、クライアントデバイス102が別のクライアントデバイスと同位置にあったことを示すローカルマップのための同期データを格納し、そのローカルマップを参照してもよい。
【0026】
マップ検索モジュール114は、SLAMモジュール112によって生成されたマップを検索する。マップ検索モジュール114は、以下にさらに説明するマップデータベース124から(例えば、ネットワーク104を介して)以前に生成されたマップを検索する。いくつかの実施形態では、マップ検索モジュール114は、ユーザーの自宅の場所のマップなど、クライアントデバイス102にいくつかのマップをローカルに格納し得る。マップ検索114は、ゲームエンジン106からの通知に基づいてマップを検索し、パラレルリアリティゲームを容易にするために使用するために、ゲームエンジン106にマップを送信し得る。
【0027】
深層学習モジュール116は、マップ上のオブジェクト認識のための機械学習されたモデルを適用する。深層学習モジュール116は、マップ検索モジュール114からマップを受信する。深層学習モジュール116は、1つ又は複数の機械学習されたモデルを適用して、オブジェクト検出及び分類と共に、関心ポイント又は特徴ポイント検出(例えば、スケール不変特徴変換(SIFT)又は配向FAST及び回転BRIEF(ORB)を使用)を実行する。例えば、深層学習モジュール116は、機械学習モデルをマップに適用して、マップ内に含まれるオブジェクトを決定し得る。機械学習モデルは、分類器、回帰モデルなどであり得る。深層学習モジュール116は、外部システムで(例えば、ネットワーク104を介して)訓練した後、機械学習されたモデルを得てもよい。いくつかの実施形態では、深層学習モジュール116は、さらなるモデル訓練を可能にするために、オブジェクト認識の結果及び/又はユーザフィードバックを提供し得る。
【0028】
ARコンピューティングシステム100は、クライアントデバイス102がネットワーク104を介してアクセスし得る要素を含む。これらの要素は、リモートサーバーに配置されてもよく、ワンワールドマッピングモジュール120、オブジェクト認識モジュール122、マップデータベース124、オブジェクトデータベース126、及び深層学習訓練モジュール128と通信するARバックエンドエンジン118を含む。他の実施形態では、追加の又は異なるコンポーネントが含まれてもよい。さらに、機能は、本明細書に記載されるのとは異なるように分散されてもよい。例えば、オブジェクト認識機能の一部又は全部は、いくつかの実施形態において、クライアントデバイス102で実行されてもよい。
【0029】
ワンワールドマッピングモジュール120は、異なるローカルマップを融合して、合成実世界マップ(例えば、実世界の単一の3Dマップ)を作成する。単一の3Dマップは、エッジによって互いに連結されたノードのグラフとして表され得る。各ノードは、クライアントデバイス102によって生成されたマップを表してもよく、クライアントデバイス102は、図1にされるクライアントデバイス102であってもよいし、パラレルリアリティゲームのためのサーバーに接続された別のクライアントデバイスであってもよい。各マップは、マップを生成したクライアントデバイス102に基づく独自の座標空間を有していてもよいし、同じデバイスの座標空間の時間的な変動(例えば、GPSドリフト又は条件の変化などによる)を有していてもよい。ノードを接続するエッジは、ノードの座標空間間の変換を表してもよい。ワンワールドマッピングモジュール120は、ネットワーク104を介してクライアントデバイス102から新しいマップを受信すると、単一の3Dマップに新しいノード及びエッジを追加してもよい。ワンワールドマッピングモジュール120は、単一の3Dマップをマップデータベース124に格納する。
【0030】
例示的な使用事例シナリオでは、ワンワールドマッピングモジュール120は、ローカルマップの間にギャップが存在する場合でも、ローカルマップのノード間のエッジを決定し得る。例えば、ワンワールドマッピングモジュール120は、他の2つの部分を接続する部分がない線の部分を各々が含むローカルマップのノードを受信し得る。ワンワールドマッピングモジュール120は、ローカルマップに示されるものを超えて、線の各部分を指定量(例えば、10センチメートル、1メートル、又は無限大まで)暫定的に拡張し得る。ローカルマップの相対的な位置が既知であると仮定すると(例えば、前述のように、共通の特徴を特定する特徴分析又は位置同期に基づいて)、ワンワールドマッピングモジュール120は、各ローカルマップにおける線の部分が両方とも同じ線の一部であると決定し得る。例えば、一方の線の投影により、他方の線と閾値(例えば、1ミリメートル、1センチメートルなど)以内で重なる場合、ワンワールドマッピングモジュール120は、2つの部分が同じ線の一部であると決定し得る。したがって、ワンワールドマッピングモジュール120は、線を接続する欠落部分を用いてノード間のエッジを決定し、欠落部分をローカルマップの一方又は両方に追加し得る。ワンワールドマッピングモジュール120及び単一の3Dマップは、図2に関連してさらに説明される。
【0031】
マップデータベース124は、クライアントデバイス102によって生成されたマップデータ(すなわち、「マップ」)を格納するように構成された1つ又は複数のコンピュータ可読媒体を含む。マップデータは、ある場所でクライアントデバイス102によって収集された画像及び他のセンサーデータと関連付けて格納された3D点群のローカルマップを含むことができる。また、マップデータは、異なるローカルマップと、実世界又は実世界内の特定の環境を表す単一の3Dマップとの間の地理的関係を示すマッピング情報を含み得る。マップデータベース124は、単一の実体として示されているが、多様なデバイスにおける多様な記憶媒体に分散されていてもよい(例えば、分散データベースとして)。
【0032】
オブジェクト認識モジュール122は、クライアントデバイス102によって取り込まれた画像及び3Dデータからのオブジェクト情報を使用して、データ中に表される実世界の特徴を特定する。例えば、オブジェクト認識モジュール122は、椅子が環境内の3D位置にあることを決定し、椅子の3D位置を記述するオブジェクト情報をオブジェクトデータベース126に追加し得る。オブジェクト認識モジュール122は、マップデータベースに格納されたマップ、1つ又は複数のクライアントデバイス102によって取り込まれた画像データ、又は1つ又は複数のクライアントデバイス102によって生成されたマップに対してオブジェクト認識を実行し得る。オブジェクト認識モジュールは、同じ環境の新しい画像データに対してオブジェクト認識を実行した後、オブジェクトデータベース126に格納されているオブジェクト情報をさらに更新し得る。オブジェクト認識モジュール122は、オブジェクトデータベース126に追加するために、様々なクライアントデバイス102から取り込まれた画像からオブジェクト情報を継続的に受信し得る。
【0033】
いくつかの実施形態では、オブジェクト認識モジュール122は、検出されたオブジェクトを様々なカテゴリにさらに区別し得る。一実施形態では、オブジェクト認識モジュール122は、取り込まれた画像内のオブジェクトを静止又は一時のいずれかとして識別し得る。例えば、オブジェクト認識モジュール122は、木を静止オブジェクトであると決定し得る。後続の例では、オブジェクト認識モジュール122は、一時的であると決定され得るオブジェクトと比較して、静止オブジェクトを頻繁に更新しなくてもよい。例えば、オブジェクト認識モジュール122は、取り込まれた画像内の動物が一時的であると決定してもよく、後続の画像において動物が環境内にもはや存在しない場合、オブジェクトを削除してもよい。
【0034】
オブジェクトデータベース126は、認識されたオブジェクトに関するオブジェクト情報を格納するように構成された1つ又は複数のコンピュータ可読媒体を含む。例えば、オブジェクトデータベース126は、既知のオブジェクト(例えば、椅子、机、木、建物など)のリストを、オブジェクトの対応する位置及びオブジェクトのプロパティと共に含み得る。プロパティは、オブジェクトのタイプに対して一般的であってもよいし、オブジェクトの各インスタンスに対して特別に定義されてもよい(例えば、すべての椅子は家具とみなされるかもしれないが、各椅子の位置は個別に定義されてもよい)。オブジェクトデータベース126は、さらに、各オブジェクトのオブジェクトタイプに基づいてオブジェクトを区別し得る。オブジェクトタイプは、類似の特性に基づいてオブジェクトデータベース126内の全てのオブジェクトをグループ化することができる。例えば、植物オブジェクトタイプの全てのオブジェクトは、オブジェクト認識モジュール122によって木、茂み、草、つるなどの植物として識別されるオブジェクトであり得る。いくつかの実施形態では、システムは、比較的安定している(例えば、静止している)特徴と、より動的な特徴とを区別するように学習し得る。例えば、システムは、椅子は多少動き回る傾向があるのに対して、テーブルは長時間ほぼ同じ場所に留まる傾向があることを学習し得る。オブジェクトデータベース126は、単一の実体として示されているが、多様なデバイスにおける多様な記憶媒体に分散されていてもよい(例えば、分散データベースとして)。
【0035】
深層学習モジュール128は、マップデータとオブジェクト情報とを融合させる。特に、深層学習モジュール128は、マップデータベース124又は1つ又は複数のクライアントデバイス102からマップを取得し、オブジェクトデータベース126からオブジェクト情報を取得し得る。深層学習モジュールは、オブジェクト情報を、オブジェクト情報からのオブジェクトを含む対応するマップデータと結び付け得る。深層学習モジュール128は、サーバー上で訓練された1つ又は複数の機械学習モデルを使用してそのようにし得る。機械学習モデルは、分類器、ニューラルネットワーク、回帰モデルなどを含み得る。深層学習モジュール128は、融合された情報を、マップデータベース124又はサーバーの別のデータベースに格納し得る。
【0036】
図2は、一実施形態によるワンワールドマッピングモジュール120のブロック図である。ワンワールドマッピングモジュール120は、マップモジュール210、グラフモジュール215、組み合わせモジュール220、画像データベース230、及びマップデータベース240を含む。追加的又は代替的な実施形態において、ワンワールドマッピングモジュール120は、後述しない追加的な動作を行う他のモジュールを含んでもよい。
【0037】
マップモジュール210は、クライアントデバイス102によって取り込まれたデータに基づいて、環境のマップを決定する。そのようなデータは、画像データ、センサーデータ、GPSデータなどを含み得る。マップモジュール210は、取り込まれたデータに基づいて点群を構築してもよく、それは環境のマップとして使用される。いくつかの実施形態では、マップモジュール210は、クライアントデバイス102によって取り込まれたデータに基づいて環境のマップを決定するために他の技術を使用してもよい。しかしながら、他の実施形態では、マッピングは、マッピングモジュール210ではなくSLAMモジュール112によって実行され、マッピングモジュール210は、代わりに、SLAMモジュール112からクライアントデバイス102で生成されたローカルマップを取得する。いくつかの実施形態では、ローカルマップの1つ又は複数は、同じ環境内の多様なクライアントデバイス102によって取り込まれたデータを使用して共同的に構築され得る。マップモジュール210は、マップデータベース240でローカルマップを格納し得る。マップモジュール210は、ローカルマップをグラフモジュール215に送信する。
【0038】
グラフモジュール215は、1つ又は複数のローカルマップのグラフィカルな表現を決定する。グラフモジュール215は、マップモジュール210からローカルマップを受信する。グラフモジュール215はまた、各ローカルマップを説明する情報を受信し得る。そのような情報は、どのクライアントデバイスがローカルマップを生成したか、及び/又は、ローカルマップを生成するために使用されたデータを取り込んだか、データが取り込まれた時(例えば、日付及び時間)、等を含み得る。
【0039】
各ローカルマップについて、グラフモジュール215は、ローカルマップを表すノードを作成する。いくつかの実施形態では、各クライアントデバイス102及び/又はサーバーもまた、グラフモジュール215によって作成されたノードによって表される。各ノードは、ノードが表すローカルマップ、クライアントデバイス、又はサーバーを記述する情報に基づいて、それ自身の独立した座標系を有する。環境のローカルマップを表すノードは、さらに、環境の空間的範囲だけでなく、時間的範囲(例えば、環境が時間と共にどのように変化するか)を表し得る。グラフモジュールは、先に説明した単一の3Dマップに組み込むために、ノードを組み合わせモジュール220に送信する。別の実施形態では、異なる時間(例えば、朝、昼、夕、夜などの1日内の異なる期間)のマップが異なるノードに格納され、それらの間のエッジは、マップの空間座標及び時間座標の両方におけるマッピングを示す。
【0040】
組み合わせモジュール220は、特徴分析を用いて、ローカルマップを実世界の単一の3Dマップに変換する。いくつかの実施形態において、組み合わせモジュール220は、ローカルマップを1つの単一な3Dマップに結合し得る。他の実施形態では、組み合わせモジュールは、ローカルマップを使用して各環境の3Dマップを作成し、単一の3Dマップにおいて3Dマップを連結させる。
【0041】
組み合わせモジュール220は、1つ又は複数のローカルマップを表すグラフモジュール215からノードを受信する。ノードの各ペアについて、組み合わせモジュール220は、エッジを決定し得る。エッジは、ノードの座標空間間の変換を表す。場合によっては、ノードのペアは、それらの間にエッジを有さないことがある(例えば、ノードが完全に異なる環境を示す場合)。そうでなければ、ノードのペアは、それらに関連付けられた1つ又は複数のエッジを有し得る。いくつかの実施形態では、組み合わせモジュール220は、同じ環境内のノードについてのみエッジを決定してもよく、この組み合わせモジュールは、ローカルマップ間の特徴マッチングに基づいて決定してもよい。一実施形態では、マッピングモジュール210は、ローカルマップが互いから閾値距離内にあることに基づいて、2つのローカルマップを単一の環境を示すものとして識別してもよく、組み合わせモジュール220が各ローカルマップを生成するために使用されたGPSデータから決定してもよい。
【0042】
組み合わせモジュール220は、多様なクライアントデバイス102によって取り込まれたデータに基づいてエッジを形成し得る。各クライアントデバイスは、それに関連付けられた信頼度スコアを有してもよく、信頼度スコアは、エッジの信頼度スコアを決定するために使用されてもよい。第1のノードから第2のノードに移動するためのエッジが表す変換を使用する可能性を表すエッジの信頼度スコアは、第2のノードと同一の出力ノードをもたらす。エッジを決定するために、組み合わせモジュールは、追跡情報(例えば、パラレルリアリティゲームの同じセッション中に同じクライアントデバイスによって取り込まれたローカルマップのノードがエッジを有する可能性が高い)、特徴ベースの位置推定(例えば、点、線などのローカルマップに含まれる特徴に基づいてノードの2つのローカルマップを位置推定すること)、3Dクラウドアライメント(例えば、ICPアルゴリズムによる)、同じクライアントデバイス102によって生成された連続するローカルマップ間の強制オーバーラップ、複数のローカルマップにわたる後処理最適化、及び/又は機械可読コードベースの位置推定(例えば、同期)を使用し得る。
【0043】
例えば、一実施形態では、組み合わせモジュール220は、2つのノードについてエッジを決定するために特徴分析を実行し得る。組み合わせモジュール220は、2つのローカルマップのそれぞれについてオブジェクトデータベース126から情報を取得し、その情報を用いてローカルマップが両方とも共通の特徴を含むかどうかを決定するために、各ローカルマップに対して特徴分析を実行する。組み合わせモジュール220は、各マップが同じ共通の特徴を含むと決定した場合、組み合わせモジュール220は、共通の特徴に基づいてエッジを作成する。
【0044】
別の例では、組み合わせモジュール220は、クライアントデバイス102によって実行された同期に基づいて、ノード間のエッジを決定し得る。組み合わせモジュール220は、クライアントデバイス102が同じ環境内に併置されたことを示す各ローカルマップの同期データを取得する。同期データは、クライアントデバイス102が互いに向けられたとき、又は各クライアントデバイス102が機械可読コード(例えば、二次元バーコード)又は環境内の他の認識可能な特徴の画像を取り込んだときに決定され得る。同期データに基づいて、組み合わせモジュール220は、ローカルマップのノードに対するエッジを決定する。
【0045】
ノードの各ペアについて、組み合わせモジュール220は、マップデータベース240から実世界の単一な3Dマップにアクセスする。単一な3Dマップは、サーバーに接続された多様なクライアントデバイス102によって取り込まれた複数のノードを含み、実世界のレイアウトを表す。ノードの一方又は両方が単一の3Dマップに存在しない場合、組み合わせモジュール220は、不足しているノード又はノードを単一の3Dマップに追加する。さらに、組み合わせモジュール220がノードのペアのエッジを決定した場合、組み合わせモジュール220は、単一の3Dマップにおいてエッジを一緒に連結し、ローカルマップを1つの大きなマップ(例えば、単一の3Dマップ)に本質的に連結させる。いくつかの実施形態では、組み合わせモジュール220は、さらに、エッジに基づいてローカルマップをつなぎ合わせ、両方のローカルマップの少なくとも一部を含む単一のマップを形成し得る。
【0046】
組み合わせモジュール220は、単一の3Dマップ内の既存のノード間にエッジを追加もし得る。いくつかの実施形態では、組み合わせモジュール220は、新しいエッジが決定されたときに、ノードのペア間の多様なエッジを単一のエッジに結合し得る。他の実施形態では、組み合わせモジュール220は、単一の3Dマップ内のノードのペア間のすべてのエッジを保持し、クライアントデバイスが必要に応じてローカルマップ間で変換するために最新のエッジを使用し得るように、すべてのエッジのうちどのエッジが最も新しいかを示してもよい。
【0047】
サーバーに接続されたクライアントデバイス102は、単一の3Dマップを使用して、環境内で自分自身を位置推定し、パラレルリアリティゲームのための場所での仮想世界に関する情報を取得し得る。さらに、ノード及びエッジのシステムは、単一の3Dマップにおけるドリフト及び外れ値を低減するために使用され得る。例えば、組み合わせモジュール220は、ノードが閾値の時間だけ単一の3Dマップ内に存在した後に、エッジによって他のノードに連結されていないノードを除去し得る。
【0048】
(例示的なデータフロー)
図3は、一実施形態による、ARデータを生成及び表示するために、クライアントデバイス102とサーバーによって実行される処理を示すフローチャートである。クライアントデバイス102及びサーバーは、図1に示されるものと同様であり得る。破線は、クライアントデバイス102とサーバーとの間のデータの通信を表し、実線は、単一のデバイス内(例えば、クライアントデバイス102内又はサーバー内)のデータの通信を表す。他の実施形態では、機能は、デバイス間で異なって分配されてもよく、及び/又は、異なるデバイスが使用されてもよい。
【0049】
302において、生データは、1つ又は複数のセンサーによってクライアントデバイス102で収集される。一実施形態では、生データは、画像データ、慣性測定データ、及び位置データを含む。画像データは、クライアントデバイス102に物理的又は無線で連結されている1つ又は複数のカメラによって取り込まれ得る。慣性測定データは、ジャイロスコープ、加速度計、又はそれらの組み合わせを使用して収集されてもよく、最大6自由度-すなわち、3度の並進運動及び3度の回転運動-までの慣性測定データを含んでもよい。位置データは、全地球測位システム(GPS)受信器で収集され得る。追加の生データは、圧力レベル、照明レベル、湿度レベル、高度レベル、音レベル、オーディオデータなど、他の様々なセンサーによって収集されてもよい。生データは、クライアントデバイス102の様々なセンサーによって取得された生データを経時的に記録できる1つ又は複数のクライアントデバイス102内の格納モジュールに格納されてもよい。
【0050】
クライアントデバイス102は、304において、ローカルマップストレージを維持し得る。ローカルマップストレージは、ローカル点群データを含む。点群データは、構築可能なメッシュ面を形成する空間内の位置を含む。304におけるローカルマップストレージは、クライアントデバイス102による使用のために容易に検索できるように、ローカル点群データの階層的なキャッシュを含み得る。304におけるローカルマップストレージは、ローカル点群データに融合されたオブジェクト情報を追加的に含み得る。オブジェクト情報は、ローカル点群データ内の様々なオブジェクトを指定し得る。
【0051】
生データが302において収集されると、クライアントデバイス102は、マップが306において初期化されたかどうかを確認する。マップが306において初期化された場合、クライアントデバイス102は、308においてSLAM機能を開始し得る。SLAM機能は、点群を構築するマッピングシステムと、初期化されたマップ上の空間におけるカメラの位置を見つけるための追跡を含む。例示的なSLAMプロセスは、さらに、アニメーション又は拡張された値を実世界へ再投影する。310においてマップが初期化されなかった場合、クライアントデバイス102は、304においてローカルマップストレージを検索して、ローカルに格納されているマップを検索し得る。304においてマップがローカルマップストレージに見つかった場合、クライアントデバイス102は、SLAM機能によって使用するためにそのマップを取得し得る。310においてマップが見つからない場合、クライアントデバイス102は、初期化モジュールを使用して、312において新しいマップを作成し得る。
【0052】
新しいマップが作成されると、初期化モジュールは、新しく作成されたマップを304においてローカルマップストレージに格納し得る。クライアントデバイス102は、ローカルマップストレージ304内のマップデータをサーバー側のクラウドマップストレージ320と日常的に同期させ得る。マップデータを同期させるとき、クライアントデバイス102のローカルマップストレージ304は、新たに作成されたマップをサーバーに送信し得る。326においてサーバー側は、クライアントデバイス102から受信したマップが、以前にクラウドマップストレージ320に格納されていたかどうかを確認する。そうでない場合、サーバー側は、328において、クラウドマップストレージ320に格納するための新しいマップを生成する。サーバーは、代替的に、328における新しいマップを、クラウドマップストレージ320における既存のマップに付加してもよい。
【0053】
クライアント側に戻ると、クライアントデバイス102は、314において新規の視点が検出されたかどうかを決定する。いくつかの実施形態では、クライアントデバイス102は、取り込まれた画像のストリーム内の各視点が、クライアントデバイス102に格納された既存の視点と閾値未満の重複を有するかどうかを決定する(例えば、ローカルマップストレージ304は、クライアントデバイス102によって取得された視点又はクラウドマップストレージ320から取得された視点を格納し得る)。他の実施形態では、クライアントデバイス102は、新規の視点が検出されたかどうかを多段階の決定で、314において決定する。高レベルで、クライアントデバイス102は、クライアントデバイス102のジオロケーションのローカル半径内の任意の既存の視点を取得し得る。既存の視点から、クライアントデバイス102は、既存の視点と比較して、問題の視点における類似のオブジェクト又は特徴を識別し始め得る。例えば、クライアントデバイス102は、視点における木を識別し、木も見えるすべての既存の視点をローカル半径内の既存の視点から、さらに減らしてもよい。クライアントデバイス102は、問題の視点をフィルタリングされた既存の視点の集合にマッチングする際に、よりロバストである追加のフィルタリングの層を使用してもよい。一例では、クライアントデバイス102は、機械学習モデルを使用して、問題の視点がフィルタリングされたセット内の別の視点と一致するかどうか(すなわち、問題の視点は既存の視点と一致するので新規ではないこと)を決定する。314において新規の視点が検出された場合、クライアントデバイス102は、ローカル環境推定によって収集されたデータを316において記録する。例えば、クライアントデバイス102が現在において新規の視点を有すると決定した場合、新規の視点で取り込まれた画像をサーバーに(例えば、サーバー側のマップ/画像データベース318に)送信し得る。新規視点検出モジュールは、3Dデータを有する画像を送信するタイミング及び方法を決定するために使用され得る。ローカル環境推定は、ローカルマッピングシステムの更新されたキーフレームと、シリアライズされた画像及び/又はマップデータを含み得る。ローカル環境推定は、マップ内の所定の位置における他の視点に対して新規の視点を適合させるために、サーバーによって使用され得る。
【0054】
サーバー側では、新規視点データ(例えば、メッシュデータを上に乗せた点群情報からなる)が、サーバー側のマップ/画像データベースに318において格納され得る。サーバーは、格納されたクラウドマップストレージ320とオブジェクトデータベース322から実世界のマップの異なる部分を追加し得る。クラウド環境推定324(追加されたコンポーネントデータを含む)は、クライアントデバイスに送り返されてもよい。追加されたデータは、ローカルマップストレージ304に格納される点及びメッシュ、ならびにセマンティックラベルを有するオブジェクトデータ(例えば、壁又はベッド)を含み得る。
【0055】
(仮想世界の概念図)
図4は、一実施形態による、位置情報パラレルリアリティゲームのプレイヤのためのゲームボードとして機能することができる、実世界400と並行な仮想世界410の概念図を示す図である。図1のクライアントデバイス102は、図4に示されるように、実世界400に対応する仮想世界410を有するパラレルリアリティゲーム(又は他の位置情報ゲーム)をホストし得る。
【0056】
図示されているように、仮想世界410は、実世界400の地理に並行する地理を含むことができる。特に、実世界400における地理的エリア又は空間を定義する座標の範囲は、仮想世界410における仮想空間を定義する座標の対応する範囲にマッピングされる。実世界400における座標の範囲は、町、近隣、都市、キャンパス、ロケール、国、大陸、地球全体、又は他の地理的エリアと関連付けられることができる。地理的座標の範囲内におけるそれぞれの地理的座標は、仮想世界における仮想空間内の対応する座標にマッピングされる。
【0057】
仮想世界410におけるプレイヤの位置は、実世界400におけるプレイヤの位置に対応する。例えば、実世界400の位置412に位置するプレイヤAは、仮想世界410において対応する位置422を有する。同様に、実世界の位置414に位置するプレイヤBは、仮想世界の位置424に対応している。プレイヤが実世界400における地理的座標の範囲内を移動すると、プレイヤは、仮想世界410における仮想空間を定義する座標の範囲内も移動する。特に、プレイヤが携帯するクライアントデバイス102に関連付けられた測位システム(例えば、GPSシステム又は位置推定及びマッピングモジュール112によって使用される他のシステム)は、プレイヤが実世界の地理的座標の範囲を移動する際に、プレイヤの位置を追跡するために使用されることが可能である。実世界400におけるプレイヤの位置に関連付けられるデータは、仮想世界410における仮想空間を定義する座標の対応する範囲におけるプレイヤの位置を更新するために使用される。このようにして、プレイヤは、実世界400の特定の離散的な場所でチェックインしたり、定期的に位置情報を更新したりすることなく、実世界400の地理的座標の対応する範囲間を移動するだけで、仮想世界410の仮想空間を定義する座標の範囲内の連続的な追跡をナビゲートすることができる。
【0058】
パラレルリアリティゲームは、仮想世界410の様々な仮想位置に散在する様々な仮想要素及び/又は仮想オブジェクトに移動し、及び/又はそれらと相互作用することをプレイヤに要求する複数のゲームオブジェクトを含むことができる。プレイヤは、実世界400における仮想要素又はオブジェクトの対応する位置に移動することによって、これらの仮想位置に移動することができる。例えば、クライアントデバイス102の測位システムは、プレイヤが実世界400を連続的にナビゲートする際に、プレイヤも並行する仮想世界410を連続的にナビゲートするように、プレイヤの位置を連続的に追跡することが可能である。次いで、プレイヤは、特定の場所で様々な仮想要素及び/又はオブジェクトと相互作用して、1つ又は複数のゲームオブジェクトを達成又は実行することができる。
【0059】
例えば、図4を参照すると、ゲームオブジェクトは、仮想世界410の様々な仮想位置に配置された仮想要素430を取り込むか、又はその所有権を主張することをプレイヤに要求することができる。これらの仮想要素430は、実世界400のランドマーク、地理的位置、又はオブジェクト440に連結させることができる。実世界のランドマーク又はオブジェクト440は、芸術作品、モニュメント、建物、企業、図書館、博物館、又は他の適切な実世界のランドマーク又はオブジェクトとすることができる。これらの仮想要素430を取り込むために、プレイヤは、実世界の仮想要素430に連結されたランドマーク、地理的位置、又はオブジェクト440に移動する必要があり、仮想世界410において仮想要素430との必要なインタラクションを実行する必要がある。例えば、図4のプレイヤAは、クライアントデバイス102を介して、その特定のランドマーク440に連結された仮想要素430と相互作用するか又は取り込むために、実世界400のランドマーク440に移動しなければならない。仮想要素430との相互作用は、写真を撮ること及び/又は仮想要素430に関連付けられたランドマーク又はオブジェクト440に関する他の情報を検証、取得、又は取り込むことなど、実世界400における行動を要求することができる。
【0060】
ゲーム目的は、パラレルリアリティゲームにおいてプレイヤが収集する1つ又は複数の仮想アイテムを使用することを要求することができる。例えば、プレイヤは、ゲーム目的を完了するために有用な仮想アイテム(例えば、武器又は他のアイテム)を求めて仮想世界410を移動しなければならない場合がある。これらの仮想アイテムは、実世界400の異なる場所に移動することによって、又は仮想世界410又は実世界400のいずれかにおいて様々なアクションを完了することによって、発見又は収集されることができる。図4に示される例では、プレイヤは、仮想アイテム432を使用して、1つ又は複数の仮想要素430を取り込む。特に、プレイヤは、仮想要素430に近接する仮想世界410内の場所に仮想アイテム432を配備することができる。仮想要素430に近接する1つ又は複数の仮想アイテム432を配備することは、特定のプレイヤのために、又は特定のプレイヤのチーム及び/又は派閥のために、仮想要素430を取り込むことをもたらし得る。
【0061】
1つの特定の実装では、プレイヤは、パラレルリアリティゲームの一部として仮想エネルギーを収集しなければならない場合がある。図4に描かれているように、仮想エネルギー450は、仮想世界410の異なる場所に散在されることができる。プレイヤは、実世界400の仮想エネルギー450の対応する場所に移動することによって、仮想エネルギー450を収集することができる。仮想エネルギー450は、仮想アイテムにパワーを供給するため、及び/又はパラレルリアリティゲームにおいて様々なゲーム目的を実行するために使用されることができる。全ての仮想エネルギー450を失ったプレイヤは、パラレルリアリティゲームから切り離されることができる。
【0062】
本開示の態様によれば、パラレルリアリティゲームは、パラレルリアリティゲームのすべての参加者が同じ仮想世界を共有する大規模マルチプレイヤ位置情報ゲームとすることができる。プレイヤは、別々のチーム又は派閥に分けられ、仮想要素430を取り込む又は所有権を主張するなど、1つ又は複数のゲーム目的を達成するために協力することができる。このようにして、パラレルリアリティゲームは本質的に、パラレルリアリティゲーム内のプレイヤ間の協力を促すソーシャルゲームであることができる。敵対するチームのプレイヤは、パラレルリアリティゲーム中において、互いに協力し合うことができる。プレイヤは、仮想アイテム432を使用して、敵対するチームのプレイヤを攻撃したり、進行を妨げたりすることができる。
【0063】
パラレルリアリティゲームは、パラレルリアリティゲーム内でのゲームプレイを強化し、奨励するための様々な機能を有することができる。例えば、プレイヤは、パラレルリアリティゲーム全体で使用できる仮想通貨又は他の仮想報酬を蓄積することができる。プレイヤは、パラレルリアリティゲーム内で1つ又は複数のゲーム目的を完了し、経験を積むことにより、様々なレベルを通じて進むことができる。プレイヤは、パラレルリアリティゲーム内で提供される1つ又は複数の通信インターフェースを通じて、互いに通信することができる。プレイヤは、パラレルリアリティゲーム内でゲーム目的を完了するために使用できる強化された「パワー」又は仮想アイテム432を得ることもできる。当業者であれば、本明細書に提供された開示を使用して、本開示の範囲から逸脱することなく、様々な他のゲーム特徴をパラレルリアリティゲームに含められることができることを理解するであろう。
【0064】
(例示的な方法)
図5は、一実施形態による、第1の3Dマップと第2の3Dマップとを環境の単一の3Dマップに連結するためのプロセス500を示すフローチャートである。いくつかの実施形態では、プロセス500は、サーバー側の代わりにクライアント側で実行されるように変更され得る。この実施形態では、サーバーは、第1のクライアントデバイス102のカメラによって取り込まれた第1の画像データのセットを受信510する。画像データは、環境における第1のクライアントデバイス102の周囲の第1のエリアのほぼリアルタイムの視野を表す。サーバーは、第1の画像データのセットと、場合によっては、第1のクライアントデバイス102によって取り込まれた位置データとに基づいて、第1の3Dマップを生成520する。3Dマップは、第1のクライアントデバイス102の周囲の第1のエリアを空間的に記述する。
【0065】
サーバーは、環境内の第2のクライアントデバイス102から取り込まれた第2の画像データのセットを受信する。第2の画像データのセットは、第2のクライアントデバイス102の周囲の第2のエリアを記述し、サーバーは、第2の画像データのセットに基づいて第2の3Dマップを生成530する。サーバーは、両方の3Dマップに位置する共通の特徴について、第1の3Dマップ及び第2の3Dマップを分析540する。サーバーが第1の3Dマップ及び第2の3Dマップに共通の特徴を見つけることに応答して、サーバーは、第1の3Dマップ及び第2の3Dマップを、環境を記述する単一の3Dマップに連結550させる。別の実施形態では、クライアントデバイス102は、第1及び第2の3Dマップを生成してサーバーに送信し、サーバーは、それらを連結させるかどうか及びどのように連結させるかを決定する。
【0066】
いくつかの実施形態では、第1及び第2の3Dマップは、ノードのグラフにおいて関連付けられ得る。特に、第1及び第2の3Dマップは、それぞれ、グラフ内のエッジによって連結されたノードによって表され得る。各ノードは、3Dマップを生成するために使用される画像データを取り込んだクライアントデバイス102、又は画像データがそれぞれのクライアントデバイスによって取り込まれた時間を表す異なる座標空間と関連付けられる。エッジは、連結されたノードの異なる座標空間間の変換を含む。サーバーは、セッション情報、点特徴ベースの位置推定、線特徴ベースの位置推定、3Dクラウドアライメント、強制オーバーラップ、最適化、又は二次元バーコードベースの位置推定のうちの1つ又は複数を含み得る分析540に基づいて、エッジを決定し得る。
【0067】
図6は、一実施形態による、同期に基づく環境の単一の3Dマップを生成するためのプロセス600を示すフローチャートである。いくつかの実施形態では、プロセス600は、クライアント側で実行されるように変更され得る。この実施形態では、サーバーは、第1のクライアントデバイス102のカメラによって取り込まれた画像データ610を受信する。画像データは、環境における第1のクライアントデバイスの周囲の第1のエリアのほぼリアルタイムの視野を表す。サーバーは、第1のクライアントデバイス102と第2のクライアントデバイス102との間の位置を同期620させる。いくつかの実施形態では、サーバーは、二次元バーコードなどの特徴の各クライアントデバイス102又は別のクライアントデバイスから画像データを受信することによって、位置を同期させる。
【0068】
サーバーは、画像データに基づいて、第1のクライアントデバイスから第1の3Dマップを生成630する。代替的に、第1の3Dマップは、画像データではなく、クライアントデバイス102によって生成されてよく、サーバーに送信されてもよい。第1の3Dマップは、第1のクライアントデバイス102の周囲の第1のエリアを空間的に記述する。第1の3Dマップは、第1のクライアントデバイス102によって生成された生画像又は点群であり得る。サーバーは、環境内の第2のクライアントデバイス102から取り込まれた画像データを受信する。画像データは、第2のクライアントデバイス102の周囲の第2のエリアを記述し、サーバーは、画像データに基づいて、第2のクライアントデバイスから第2の3Dマップを生成640する。サーバーは、同期に基づいて、第1の3Dマップと第2の3Dマップとから単一の3Dマップを生成650する。デバイスの位置は環境内で同期しているので、マップが重なっていなくても、第1及び第2の3Dマップ内の特徴の相対的な位置が決定され得る。
【0069】
(コンピューティング機械のアーキテクチャ)
図7は、クライアントデバイス102又はサーバーとして使用するのに適した例示的なコンピュータ700を示す高レベルブロック図である。例示的なコンピュータ700は、チップセット704に結合された少なくとも1つのプロセッサ702を含む。チップセット704は、メモリコントローラハブ720と、入力/出力(I/O)コントローラハブ722とを含む。メモリ706とグラフィックアダプタ712はメモリコントローラハブ720に結合され、ディスプレイ718はグラフィックアダプタ712に結合される。ストレージデバイス708、キーボード710、ポインティングデバイス714、及びネットワークアダプタ716は、I/Oコントローラハブ722に結合される。コンピュータ700の他の実施形態は、異なるアーキテクチャを有する。
【0070】
図7に示される実施形態では、ストレージデバイス708は、ハードディスク、コンパクトディスク読み取り専用メモリ(CD-ROM)、DVD、又はソリッドステートメモリデバイスなどの非一時的コンピュータ可読記憶媒体である。メモリ706は、プロセッサ702によって使用される指令及びデータを保持する。ポインティングデバイス714は、マウス、トラックボール、タッチスクリーン、又は他のタイプのポインティングデバイスであり、コンピュータシステム700にデータを入力するためにキーボード710(画面キーボードであり得る)と組み合わせて使用される。他の実施形態では、コンピュータ700は、タッチスクリーン、ジョイスティック、ボタン、スクロールホイール等、又はそれらの任意の組み合わせ等の様々な他の入力機構を有する。グラフィックアダプタ712は、ディスプレイ718に画像や他の情報を表示する。ネットワークアダプタ716は、コンピュータシステム700を1つ又は複数のコンピュータネットワークに結合する(例えば、ネットワークアダプタ716は、ネットワーク104を介してクライアントデバイス102をサーバーに結合し得る)。
【0071】
図1のエンティティによって使用されるコンピュータのタイプは、実施形態及びエンティティによって必要とされる処理能力に応じて変化することができる。例えば、サーバーは、説明した機能を提供するために協働する多様なブレードサーバーを含む分散データベースシステムを含み得る。さらに、コンピュータは、キーボード710、グラフィックアダプタ712、及びディスプレイ718など、上述したコンポーネントのいくつかを欠くことができる。
【0072】
当業者は、記載された概念から逸脱することなく、本明細書に開示された装置及び技術の多数の使用及び修正、並びに逸脱を行うことができる。例えば、本開示において図示又は説明されるコンポーネント又は特徴は、図示又は説明される位置、設定、又は文脈に限定されない。本開示に従う装置の例は、先行する1つ又は複数の図を参照して説明されたコンポーネントよりも、全ての、より少ない、又は異なるコンポーネントを含むことができる。したがって、本開示は、本明細書に記載された特定の実施態様に限定されるものではなく、むしろ、添付の請求項、及びその等価物と一致する可能な限り広い範囲を与える。
図1
図2
図3
図4
図5
図6
図7