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

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

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

特許74533833Dライン接合部を用いた位置決定およびマッピング
<>
  • 特許-3Dライン接合部を用いた位置決定およびマッピング 図1
  • 特許-3Dライン接合部を用いた位置決定およびマッピング 図2A
  • 特許-3Dライン接合部を用いた位置決定およびマッピング 図2B
  • 特許-3Dライン接合部を用いた位置決定およびマッピング 図2C
  • 特許-3Dライン接合部を用いた位置決定およびマッピング 図3
  • 特許-3Dライン接合部を用いた位置決定およびマッピング 図4
  • 特許-3Dライン接合部を用いた位置決定およびマッピング 図5
  • 特許-3Dライン接合部を用いた位置決定およびマッピング 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-11
(45)【発行日】2024-03-19
(54)【発明の名称】3Dライン接合部を用いた位置決定およびマッピング
(51)【国際特許分類】
   G06T 7/70 20170101AFI20240312BHJP
【FI】
G06T7/70 Z
【請求項の数】 18
(21)【出願番号】P 2022538066
(86)(22)【出願日】2020-12-18
(65)【公表番号】
(43)【公表日】2023-02-22
(86)【国際出願番号】 IB2020062238
(87)【国際公開番号】W WO2021124286
(87)【国際公開日】2021-06-24
【審査請求日】2022-08-19
(31)【優先権主張番号】62/952,016
(32)【優先日】2019-12-20
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】519087723
【氏名又は名称】ナイアンティック, インコーポレイテッド
【氏名又は名称原語表記】NIANTIC,INC.
【住所又は居所原語表記】One Ferry Building,Suite 200 San Francisco,CA 94111 United States of America
(74)【代理人】
【識別番号】110001243
【氏名又は名称】弁理士法人谷・阿部特許事務所
(72)【発明者】
【氏名】アンヴィズ エッカティ
(72)【発明者】
【氏名】ロン ユアン
(72)【発明者】
【氏名】シッダーント ジェイン
(72)【発明者】
【氏名】シー イン ダイアナ フー
【審査官】伊知地 和之
(56)【参考文献】
【文献】米国特許出願公開第2015/0213590(US,A1)
【文献】特開2007-333679(JP,A)
【文献】特開2017-182302(JP,A)
【文献】米国特許出願公開第2008/0280676(US,A1)
【文献】HYUNWOO KIM et al.,“A novel line matching method based on intersection context”,2010 IEEE International Conference on Robotics and Automation,IEEE,2010年05月,pp.1014-1021
(58)【調査した分野】(Int.Cl.,DB名)
G06T 1/00
G06T 7/00 - 7/90
G06T 11/60 - 13/80
G06T 17/05
G06T 19/00 - 19/20
G06V 10/00 - 20/90
G06V 30/418
G06V 40/16
G06V 40/20
CSDB(日本国特許庁)
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
カメラによってキャプチャされた1つまたは複数の画像から環境内のカメラの位置を特定するための方法であって、
クライアントデバイスの前記カメラによってキャプチャされた前記1つまたは複数の画像を受信することと、
前記1つまたは複数の画像のライン接合部を識別することと、
前記識別されたライン接合部を前記環境の3Dマップと比較することであって、前記3Dマップはマップライン接合部を含む、ことと、
識別されたライン接合部とマップライン接合部との間の対応関係を識別することと、
前記対応関係を使用して前記環境内の前記カメラの姿勢を決定することと、
を含み、
前記識別されたライン接合部の各々は7つの自由度を有し、3つの自由度は接合点に対してのものであり、2つの自由度は2つの方向ベクトルのうちの一方に対してのものであり、2つの自由度は前記2つの方向ベクトルのうちのもう一方に対してのものである、
方法。
【請求項2】
前記1つまたは複数の画像をグラフの頂点およびエッジに投影することによって、前記カメラの周囲の前記環境の表現を作成することと、をさらに含み、
前記識別されたライン接合部は前記表現から識別され、前記識別されたライン接合部は前記表現において重複するエッジを含む、請求項1に記載の方法。
【請求項3】
仮想ゲームのために前記クライアントデバイスに接続された追加のクライアントデバイスから画像データを受信することをさらに含む、請求項1に記載の方法。
【請求項4】
前記識別されたライン接合部を前記環境の前記3Dマップと比較することは、
パターンマッチングを前記識別されたライン接合部および前記3Dマップに適用して、前記識別されたライン接合部および前記3Dマップが重複または隣接しているかどうかを決定することを含む、請求項1に記載の方法。
【請求項5】
前記3Dマップは、1つまたは複数のカメラによってキャプチャされた前記環境の画像データと、前記画像データがキャプチャされたときの前記1つまたは複数のカメラの相対位置とを使用して作成された、請求項1に記載の方法。
【請求項6】
前記決定された姿勢は仮想世界内の位置に対応する、請求項1に記載の方法。
【請求項7】
前記クライアントデバイスに、前記決定された姿勢に対応する前記仮想世界内の前記位置の視点を送信すること、をさらに含む、請求項6に記載の方法。
【請求項8】
前記1つまたは複数の画像は、Levenberg-Marquardtソルバを用いて前記ライン接合部についての更新を計算することによって、フレームごとにそれぞれ最適化される、請求項1に記載の方法。
【請求項9】
前記1つまたは複数の画像内のライン接合部を識別することが、
前記1つまたは複数の画像内のラインの2Dライン方程式を決定することであって、各2Dライン方程式が3D空間内の法線ベクトルを描写する、ことと
前記1つまたは複数の画像の各々の内の2Dライン接合部を決定することであって、各2Dライン接合部が2つの2Dライン方程式および交点から構成されている、ことと
3D空間において前記2Dライン接合部を三角測量して、3Dライン接合部を取得することと、
を含む請求項1に記載の方法。
【請求項10】
前記2Dライン接合部を三角測量することは、
前記1つまたは複数の画像の各々からの前記2Dライン接合部の座標を1つのカメラ座標空間に変換することと、
前記変換された2Dライン接合部を3Dライン接合部に変換することと、
を含む請求項9に記載の方法。
【請求項11】
カメラによってキャプチャされた1つまたは複数の画像から環境内のカメラの位置を特定するための命令を含む非一時的コンピュータ可読記憶媒体であって、前記命令は、
クライアントデバイスの前記カメラによってキャプチャされた前記1つまたは複数の画像を受信するための命令と、
前記1つまたは複数の画像のライン接合部を識別するための命令と、
前記識別されたライン接合部を前記環境の3Dマップと比較するための命令であって、前記3Dマップはマップライン接合部を含む、命令と、
識別されたライン接合部とマップライン接合部との間の対応関係を識別するための命令と、
前記対応関係を使用して前記環境内の前記カメラの位置を決定するための命令と、
を含み、
前記識別されたライン接合部の各々は7つの自由度を有し、3つの自由度は接合点に対してのものであり、2つの自由度は2つの方向ベクトルのうちの一方に対してのものであり、2つの自由度は前記2つの方向ベクトルのうちのもう一方に対してのものである、
非一時的コンピュータ可読記憶媒体。
【請求項12】
前記命令は、
前記1つまたは複数の画像をグラフの頂点およびエッジに投影することによって、前記カメラの周囲の前記環境の表現を作成するための命令をさらに含み、
前記識別されたライン接合部は前記表現から識別され、前記識別されたライン接合部は前記表現において重複するエッジを含む、請求項11に記載の非一時的コンピュータ可読記憶媒体。
【請求項13】
前記命令は、仮想ゲームのために前記クライアントデバイスに接続された追加のクライアントデバイスから画像データを受信するための命令をさらに含む、請求項11に記載の非一時的コンピュータ可読記憶媒体。
【請求項14】
前記識別されたライン接合部を前記環境の前記3Dマップと比較するための命令は、
パターンマッチングを前記識別されたライン接合部および前記3Dマップに適用して、前記識別されたライン接合部および前記3Dマップが重複または隣接しているかどうかを決定するための命令を含む、請求項12に記載の非一時的コンピュータ可読記憶媒体。
【請求項15】
前記3Dマップは、1つまたは複数のカメラによってキャプチャされた前記環境の画像データと、前記画像データがキャプチャされたときの前記1つまたは複数のカメラの相対位置とを使用して作成された、請求項11に記載の非一時的コンピュータ可読記憶媒体。
【請求項16】
前記決定された位置は仮想世界内の位置に対応する、請求項11に記載の非一時的コンピュータ可読記憶媒体。
【請求項17】
前記命令は、
前記クライアントデバイスに、前記決定された位置に対応する前記仮想世界内の前記位置の視点を送信するための命令をさらに含む、請求項16に記載の非一時的コンピュータ可読記憶媒体。
【請求項18】
コンピュータプロセッサと、
環境内のカメラを、前記カメラによってキャプチャされた1つまたは複数の画像から位置を特定するための命令を記憶する非一時的コンピュータ可読記憶媒体と、
を含むコンピュータシステムであって、
前記命令は、前記コンピュータプロセッサによって実行されると、
クライアントデバイスの前記カメラによってキャプチャされた前記1つまたは複数の画像を受信することと、
前記1つまたは複数の画像内のライン接合部を識別することと、
前記識別されたライン接合部を前記環境の3Dマップと比較することであって、前記3Dマップはマップライン接合部を含む、ことと、
識別されたライン接合部とマップライン接合部との間の対応関係を識別することと、
前記対応関係を使用して前記環境内の前記カメラの位置を決定することと、
を含む動作を実行し、
前記識別されたライン接合部の各々は7つの自由度を有し、3つの自由度は接合点に対してのものであり、2つの自由度は2つの方向ベクトルのうちの一方に対してのものであり、2つの自由度は前記2つの方向ベクトルのうちのもう一方に対してのものである、
コンピュータシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概して3Dマッピングに関し、特に、3Dライン接合部を使用してデバイスの位置を決定することに関する。
【背景技術】
【0002】
[関連出願の相互参照]
本出願は、2019年12月20日に出願された米国仮出願第62/952,016号の利益を主張し、その全体が参照により組み込まれる。
【0003】
実世界の少なくとも一部と並行する共有された仮想世界を提供し得る並行現実ゲームは、プレイヤーのコミュニティを引き付けることができる様々な相互作用をホストできる。仮想世界に現実世界の少なくとも一部と並行する地理を提供することは、プレイヤーが現実世界をナビゲートすることによって仮想世界をナビゲートすることを可能にする。プレイ中、プレイヤーは、コンピュータ媒介現実技術を使用して、プレイヤーの環境の視覚的または聴覚的知覚を加算、減算、または他の方法で変更するハンドヘルドまたはウェアラブルデバイス全体にわたって仮想世界を見得る。
【0004】
しかし、環境のプレイヤーの視覚的知覚を正確に変更することは、典型的には、現実世界におけるプレイヤーの位置を正確に知ることを伴う。従来の測位デバイスは、かなりの範囲のエラーなしにプレイヤーの位置を決定するのに十分なほど正確ではないので、これを確認することは困難であり得る。したがって、現実世界におけるプレイヤーの位置を決定するための改善されたアプローチが望まれる。
【0005】
[概要]
位置ベースの平行現実ゲームでは、プレイヤーは、スマートフォンなどの位置認識クライアントデバイスを用いて、現実世界を移動することによって仮想世界をナビゲートする。平行現実ゲームでプレイヤーによって使用される多くのクライアントデバイスは、プレイヤーが平行現実ゲームをプレイしながら現実世界全体を移動するときにプレイヤーの位置情報を追跡する測位デバイスを含み得る。様々な実施形態において、クライアントデバイスは、デバイス上のカメラによってキャプチャされた画像データを使用して、プレイヤーの位置を決定し、これは、測位デバイスから収集されたプレイヤーの位置情報の代わりに、またはそれを補足するために使用され得る。クライアントデバイスは、決定されたプレイヤー位置に基づいて、拡張現実(AR)画像を生成して、画像データ上にオーバーレイし得る。
【0006】
一実施形態によれば、ARプラットフォームは、平行現実ゲームのための環境内のカメラの位置を決定する。カメラによってキャプチャされた1つまたは複数の画像を使用して、ARプラットフォームは、1つまたは複数の画像内の、空間内のラインが交差する点であるライン接合部を識別する。ARプラットフォームは、これらのライン接合部を環境の三次元(3D)マップと比較して、ライン接合部が3Dマップ内のマップライン接合部に対応するか否かを決定する。ARプラットフォームによって識別された1つまたは複数の対応関係に基づいて、ARプラットフォームは、環境内のカメラの位置を決定する。ARプラットフォームは、現実世界における決定された位置に対応する仮想世界における位置を反映する、カメラに関連付けられたクライアントデバイス上での表示のためのコンピュータ媒介現実画像を生成し得る。
【0007】
追加または代替の実施形態では、ARプラットフォームは、カメラによって見られる環境の準リアルタイム視点を表す1つまたは複数の画像と、クライアントデバイスに統合されたジオロケーション/全地球測位システムからのジオロケーション位置と、を受信し得る。ARプラットフォームは、特定の時点におけるカメラ位置および1つまたは複数の画像内の1つまたは複数のマッピング点の間の距離を推定する。推定された距離に基づいて、ARプラットフォームは1つまたは複数の画像を3Dマップ内の特定の位置に位置するコンピュータ生成画像にオーバーレイする。コンピュータ生成画像は、プレイヤーがカメラを空間内の異なる位置に移動させても、特定の位置に配置されたままである。
【0008】
これらおよび他の特徴、態様および利点は、以下の説明および添付の特許請求の範囲を参照してよりよく理解され得る。添付の図面は特定の実施形態を示し、説明と共に様々な原理を説明する役割を果たす。しかし、図面は限定するものと見なされるべきではない。むしろ、保護の範囲は特許請求の範囲から決定されるべきである。
【図面の簡単な説明】
【0009】
図1図1は、一実施形態による、ARコンピューティングシステム100のブロック図である。
図2A図2Aは、一実施形態によるライン接合部を示す。
図2B図2Bは、一実施形態によるライン接合部における交差するラインを示す。
図2C図2Cは、一実施形態による、2Dおよび3Dにおけるライン接合部の表現を示す。
図3図3は、一実施形態による、拡張現実データを生成および表示するための図1のコンピューティングシステムによって実行可能なプロセスを図示する、フローチャートである。
図4図4は、一実施形態による、位置ベースの並行現実ゲームのプレイヤーのためのゲームボードとして作用できる、現実世界と並行する仮想世界の概念図を描写する。
図5図5は、一実施形態による、環境内のカメラの位置を決定するためのプロセスを示すフローチャートである。
図6図6は、一実施形態による、図1のネットワーク化コンピューティング環境で使用するのに適した例示的なコンピュータシステムを示すブロック図である。
【0010】
[詳細な説明]
システムおよび方法は、環境内のクライアントデバイスの位置を決定し、その位置に基づいてクライアントデバイスを介した現実世界とのユーザの相互作用を可能にする。さらに、システムはクライアントデバイスの位置を決定するために使用する環境の三次元(3D)マップ(例えば、1センチメートルの解像度を有する)を作成し得る。様々な実施形態において、マッピングはクライアント側(例えば、電話またはヘッドセット)で達成され、以前にコンパイルされた画像およびマッピングをクライアントデバイスに提供するバックエンドサーバとペアリングされる。
【0011】
一実施形態において、システムは、カメラによってキャプチャされた1つまたは複数の画像に基づいてカメラの位置(例えば、クライアントデバイス上の)を評価するために、1つまたは複数のモデルを使用する。1つまたは複数のモデルを使用することは、システムが1つまたは複数の画像内のライン接合部を検出し、3D空間と2D空間との間のライン接合部を投影して、それらがカメラの周囲の環境の3Dマップからのマップライン接合部に対応するかどうかを決定することを含む。ライン接合部とマップライン接合部との間の対応関係に基づいて、システムは空間内のカメラの位置を三角測量できる。この位置を使用して、システムは、クライアントデバイスを使用するゲームのプレイヤーが、現実世界におけるそれらの位置に対応する仮想世界における仮想要素または他の仮想情報を見得るように、平行現実ゲームのための1つまたは複数の画像を拡張できる。
【0012】
[例示的なシステム]
図1は、一実施形態による、ARコンピューティングシステム100のブロック図である。ARコンピューティングシステム100は、ネットワーク104を介してアクセスされる要素と協働するクライアントデバイス102を含む。例えば、要素は、ARデータを生成するように構成されたサーバデバイスのコンポーネントであり得る。図示された実施形態において、クライアントデバイス102はゲームエンジン106およびARプラットフォーム108を含む。ゲームエンジン106はクライアントデバイス102のユーザがプレイするための平行現実ゲームをレンダリングする。ゲームエンジンはUNITY(登録商標)ゲームエンジンまたは別の物理/レンダリングエンジンであり得る。ARプラットフォーム108はクライアントデバイス102のカメラによってキャプチャされた画像データに対してセグメント化およびオブジェクト認識を実行し得る。
【0013】
図1に示されるARプラットフォーム108は、複合ビジョンモジュール110と、位置推定およびマッピングモジュール112と、マップ検索モジュール114と、ディープラーニングモジュール116とを含む。他の実施形態では、ARプラットフォームは、トレーニングモジュールまたはオブジェクト認識モジュールなどの代替または追加のモジュールを含み得る。さらに、いくつかの実施形態では、ARプラットフォームは要素とともにサーバデバイスに位置し、ネットワーク104を介してアクセスされ得る、または要素はARプラットフォーム108に位置し得る。
【0014】
複合コンピュータビジョンモジュール110は、クライアント側の画像処理を実行する。そのような画像処理は、画像セグメンテーション、ローカル3D推定などを含み得る。いくつかの実施形態では、複合コンピュータビジョンモジュール110は、画像を点群に変換する、または画像を処理して、画像に描写された特徴をクライアントデバイス102の周囲の環境の3Dマップに追加し得る。
【0015】
位置推定およびマッピングモジュール112はクライアントデバイス102の周囲の環境をマッピングし、環境におけるクライアントデバイス102の位置を決定する。位置推定およびマッピングモジュール112は環境をマッピングするための複数のアプローチの1つまたは複数を使用し、クライアントデバイス102の位置を決定し得る。
【0016】
位置推定およびマッピングモジュール112はクライアントデバイス102のカメラから1つまたは複数の画像(またはビデオなどの他の画像データ)を受信する。いくつかの実施形態では、位置推定およびマッピングモジュール112はクライアントデバイス102によってキャプチャされた他のセンサデータ(例えば、照明データ、画像データ、および/またはGPS座標)を受信し、位置推定およびマッピングモジュール112はクライアントデバイス102の位置を決定するために使用し得る。位置推定およびマッピングモジュール112はクライアントデバイス102が環境内を移動する際にリアルタイムで画像(およびセンサデータ)を受信し得る。
【0017】
位置推定およびマッピングモジュール112は、受信された画像に基づいて環境内のクライアントデバイス102の位置を決定する。いくつかの実施形態では、位置推定およびマッピングモジュール112は、クライアントデバイス102に位置する全地球測位システムから現実世界におけるクライアントデバイス102のGPS座標を受信する。位置推定およびマッピングモジュール112はこれらのGPS座標を使用してクライアントデバイス102の位置を表し得、またはこれらのGPS座標をクライアントデバイス102の一般的な位置の基準として使用して、1つまたは複数の他のモデルまたはシステムを使用してクライアントデバイス102のより正確な位置を決定し得る。
【0018】
いくつかの実施形態において、位置推定およびマッピングモジュール112は、Simultaneous Localization and Mapping(SLAM)ソフトウェア開発キット(SDK)関数を使用して、環境のマップを生成する。特に、SLAM SDK機能は、環境のマップを形成するために使用され画像または他の画像データに基づいて点群を構築するマッピングシステムを含み得る。位置推定およびマッピングモジュール112は、マップをローカルに記憶し得る、またはマップをマップデータベース124に記憶し得る。マップに基づいて、位置推定およびマッピングモジュール112は空間におけるクライアントデバイス102の位置を見つけるためにトラッキングを使用し得る。位置推定およびマッピングモジュール112はさらに、SLAMプロセスを使用して、クライアントデバイスのユーザに表示するために、1つまたは複数のアニメーションまたは拡張値を画像上に再投影する。例えば、クライアントデバイスの位置に基づいて、位置推定およびマッピングモジュール112は仮想世界からの1つまたは複数の仮想要素または他の情報を、見るべきユーザの画像に追加し得る。仮想要素などは図4に関連して説明される。
【0019】
他の実施形態では、位置推定およびマッピングモジュール112は、クライアントデバイス102の位置を決定するために利用可能な複数のモデルを有する。これらのモデルは、点群ベースのモデル(例えば、SLAMによって提供されるような)、平面マッチングモデル、ラインマッチングモデル、地理情報システム(GIS)モデル、建物認識モデル、および風景認識モデルを含み得る。位置推定およびマッピングモジュール112は、クライアントデバイス102によってキャプチャされたセンサデータに基づいて、位置推定のためのモデルの1つまたは複数を選択し得る。例えば、平面およびラインマッチングモデルは屋内で最も正確であり得るが、風景および建物モデルは屋外で最も正確であり得る。したがって、クライアントデバイス102はセンサデータに基づいてクライアントデバイス102が屋内または屋外にあると決定し、位置推定のためのより効果的なモデルを選択し得る。
【0020】
1つの例示的な実施形態では、位置推定およびマッピングモジュール112は、ライン接合部モデルを画像に適用して、クライアントデバイス102を位置推定する。特に、ライン接合部モデルは、1つまたは複数の画像内の1つまたは複数のライン接合部を識別する。ライン接合部は、画像内に示されるように、空間内の2つまたは複数のラインが交わる点である。例えば、デスクの正面の画像は、エッジ(例えば、ライン)が交わるデスク上の各角部におけるライン接合部を示し得る。いくつかの実施形態では、ライン接合部モデルは曲線などの画像内の他の特徴を識別し得る。
【0021】
ライン接合部モデルは環境の3Dマップにアクセスする。3Dマップはクライアントデバイスにローカルに記憶またはネットワーク104を介してアクセスされるマップデータベース124に記憶され得る。3Dマップは3Dマップ内で既に識別されたライン接合部であるマップライン接合部またはラインおよび曲線などの他の特徴を含み得る。代替的に、マップ検索モジュール114はライン接合部モデルの3Dマップにアクセスし、3Dマップをライン接合部モデルに入力し得る。
【0022】
ライン接合部モデルは、識別されたライン接合部(または、いくつかのケースでは、特徴)を3Dマップと比較して、対応するライン接合部(または特徴)を見つける。ライン接合部モデルによって見つけられた対応関係に基づいて、ライン接合部モデルは環境内のクライアントデバイス102の位置を決定する。クライアントデバイス102の位置を決定するためにライン接合部モデルによって使用されるプロセスは図2A乃至図2Cに関連してさらに説明される。
【0023】
一実施形態では、1つまたは複数のモデルを選択するために、位置推定およびマッピングモジュール112はモデルがクライアントデバイス102の正確な位置を生成する可能性を示すスコアを各モデルに割り当てる。スコアはセンサデータによって示されるようなクライアントデバイス102の現在の状況に基づいて決定され得る。位置推定およびマッピングモジュール112は、スコアおよび1組の選択基準に基づいて、位置推定のための1つまたは複数のモデルを選択する。例えば、クライアントデバイス102は、最高スコアを伴うモデル、3つの最高スコアモデル、または閾値を上回るスコアを伴う全てのモデルを選択し得る。
【0024】
追加または代替として、位置推定およびマッピングモジュール112は、どのモデルが同様の場所において以前に選択されたかに基づいて、1つまたは複数のモデルを選択し得る。例えば、平面マッチングモデルが以前に正常に使用されたGPS座標の閾値内に、クライアントデバイス102のGPS座標がある場合、位置推定およびマッピングモジュール112は、別のモデルのスコアが平面マッチングモデルのスコアを閾値量だけ超えない限り、平面マッチングモデルのスコアを増す(boost)、または平面マッチングモジュールを選択し得る。同様に、特定のモデルが以前に選択され、正確な位置を提供することに失敗した場合、位置推定およびマッピングモジュール112はそのモデルのスコアを低減し得る。したがって、同様のGPS座標におけるモデルの成功および失敗は、GPS座標によって提供されるよりも正確な位置(例えば、1センチメートル以内)を決定するために、位置推定およびマッピングモジュール112がどのモデル(1つまたは複数)を選択するかを知らせるために使用され得る。
【0025】
同様に、位置推定およびマッピングモジュール112はセンサデータが示す位置におけるモデルの成功および失敗がクライアントデバイス102の現在位置と同様であると考え得る。例えば、位置推定およびマッピングモジュール112は、クライアントデバイス102が現在屋内または屋外にあることをセンサデータが示すかどうかに基づいて、位置を屋内および屋外として分類し、いくつかのモデルを除外または選択し(あるいはそれらの対応するスコアを増加または減少させ)得る。同様に、位置推定およびマッピングモジュール112は照明レベルに基づいて1つまたは複数のモデルを選択し得る(例えば、1つのモデルは低照度条件において他のモデルに対して特に有効であり、したがって、クライアントデバイス102によって検出された照明レベルが閾値を下回る場合、優先的に選択され得る)。収集されたデータを使用して現在の条件において正確な結果を生成する可能性が最も高いモデルの選択を優先するためにどのモデル(単数または複数)を選択するかに影響を与え得る他の方法を、当業者は認識するであろう。
【0026】
位置推定およびマッピングモジュール112は、クライアントデバイス102のための潜在的な位置を生成するために、選択された1つまたは複数のモデルを適用し得る。単一のモデルのみが選択されたケースでは、位置推定およびマッピングモジュール112は、生成された位置をクライアントデバイス102の実際の位置として使用し得る。しかし、GPS座標が利用可能である場合、モデルを使用して決定された位置がGPS座標から閾値量を超えて異なる場合、位置推定およびマッピングモジュール112は、追加のモデルを適用する、またはそうでなければ現在の位置を検証しようとし得る。
【0027】
2つまたは複数のモデルが選択された場合、各モデルは、クライアントデバイス102の潜在的な位置を生成し得る。位置推定およびマッピングモジュール112は、潜在的な位置に基づいてクライアントデバイス102の現在の位置を決定する。一実施形態では、位置推定およびマッピングモジュール112は、モデルによって生成された位置の平均として現在の位置を計算する。別の実施形態では、位置推定およびマッピングモジュール112は、潜在的な位置の加重平均を使用する。例えば、位置推定およびマッピングモジュール112は、モデル選択フェーズからのそのスコアによって各モデルの寄与率(contribution)を重み付けし得る。代替的に、位置推定およびマッピングモジュール112は、特定のモデルを他のモデルよりも優先するように重み付けを事前設定し得る。さらなる実施形態では、位置推定およびマッピングモジュール112は、デバイスのGPS座標に最も密接に一致するものを採用するなど、他の方法で潜在的な位置を組み合わせ得る。
【0028】
いくつかの実施形態では、位置推定およびマッピングモジュール112がクライアントデバイス102の位置を決定すると、位置推定およびマッピングモジュール112は、クライアントデバイス102において提示される1つまたは複数の画像に追加する仮想世界を描写するARデータを検索する。例えば、位置推定およびマッピングモジュール112は、マップデータベース124(ローカルに記憶されている、またはネットワーク104を介してアクセスされるサーバデバイスに記憶されている)にアクセスして、画像に追加するために仮想世界から追加のもしくはより多くの仮想要素または他の情報を検索し得る。仮想要素などは図4に関連して説明される。
【0029】
マップ検索モジュール114は以前に生成されたマップを検索する。例えば、マップ検索モジュール114は、ネットワーク104を介してマップデータベース124にアクセスし、マップデータベースから検索された情報を位置推定およびマッピングモジュール112などのクライアントデバイス102の1つまたは複数の他のモジュールに送信し得る。いくつかの実施形態では、マップ検索モジュール114はいくつかのマップ(例えば、ユーザの自宅位置のためのマップ)をローカルに記憶し得る。ディープラーニングモジュール116は、オブジェクト認識のために機械学習アルゴリズムを適用する。ディープラーニングモジュール116は、ネットワーク104を介してトレーニングした後に機械学習アルゴリズムを取得し得る。いくつかの実施形態では、ディープラーニングモジュール116はまた、さらなるモデルトレーニングを可能にするために、オブジェクト認識および/またはユーザフィードバックの結果を提供し得る。
【0030】
示される実施形態では、ネットワーク104を介して(例えば、サーバコンピューティングデバイスにおいて)アクセスされるコンポーネントは、ワンワールドマッピングモジュール120、オブジェクト認識モジュール122、マップデータベース124、オブジェクトデータベース126、およびディープラーニングトレーニングモジュール128と通信するARバックエンドエンジン118を含む。他の実施形態では、追加のまたは異なるコンポーネントが含まれ得る。さらに、機能は本明細書で説明されるものとは異なるように分散され得る。例えば、オブジェクト認識の機能の一部または全部はクライアントデバイス102において実行され得る。
【0031】
ワンワールドマッピングモジュール120は、異なるローカルマップを一緒に融合して、複合現実世界マップを作成する。前述のように、マップを最初に生成したクライアントデバイス102からのGPS位置データは、隣接または重複している可能性のあるローカルマップを識別するために使用され得る。次いで、パターンマッチングを使用して、マップの重複部分または2つのローカルマップが互いに隣接していることを識別し得る(例えば、それらが同じオブジェクトの反対側の表現を含むため)。2つのローカルマップが重複または隣接していると決定された場合、2つのマップがどのように互いに関係するかを示すマッピングを記憶することができる(例えば、マップデータベース内に)。
【0032】
オブジェクト認識モジュール122は、画像/オブジェクト情報および収集された3Dデータを使用して、データ内に表される現実世界内の特徴を識別する。このようにして、サーバデバイスは、例えば、椅子が3Dの位置にあることを決定し、その位置に関連付けられたオブジェクトデータベース126にアクセスする。ディープラーニングモジュール128は、マップ情報をオブジェクト情報と融合するために使用され得る。このようにして、システム100は、オブジェクト認識のためにおよび融合のために、3D情報をマップに接続し直し得る。
【0033】
マップデータベース124は、クライアントデバイス102によって生成されたマップデータを記憶するように構成された1つまたは複数のコンピュータ可読媒体を含む。マップデータは、ある位置においてクライアントデバイス102によって収集された画像および他のセンサデータに関連付けて記憶された3D点群のローカルマップを含むことができる。マップデータはまた、異なるローカルマップ間の地理的関係を示すマッピング情報を含み得る。同様に、オブジェクトデータベース126は、認識されたオブジェクトに関する情報を記憶するように構成された1つまたは複数のコンピュータ可読媒体を含む。例えば、オブジェクトデータベース126は、既知のオブジェクト(例えば、椅子、デスク、木、建物など)のリストを、それらのオブジェクトの特性とともに対応する位置とともに含み得る。特性はオブジェクトタイプに対して一般的であってもよく、またはオブジェクトの各インスタンスに対して具体的に定義され得る(例えば、全ての椅子は家具と見なされるが、それぞれの位置は個別に定義され得る)。マップデータベース124およびオブジェクトデータベース126は単一のエンティティとして示されているが、それらは複数のデバイスにおいて複数の記憶媒体にわたって分散され得る(例えば、分散データベースとして)。
【0034】
[例示的なライン接合部モデル]
位置推定およびマッピングモジュール112は、クライアントデバイス102を、それがキャプチャする1つまたは複数の画像に基づいて、位置推定するために3Dマップを使用するライン接合部モデルを採用し得る。以下の段落は、モデルの一実施形態がどのように定義され、数学的に適用されるかを説明する。
【0035】
1.3D接合部をパラメータ化
図2Aは一実施形態による3Dライン接合部の一例を示す。ライン接合部は、点Qと、方向ベクトル(または、いくつかの実施形態では、ラインもしくはラインセグメント)D1およびD2とを含む。各方向ベクトルは単位ベクトルであり、長さ1を有する。各3Dライン接合部は7つの自由度を有し、点Qの3つは3D空間におけるその位置を表し、2つは単位ベクトルであるため、それらは各方向ベクトル(D1およびD2)に対するものである。
【0036】
制約された最適化を回避するために、ライン接合部モデルは、以下のように2つの方向ベクトルをパラメータ化し、ここで、X、Y、Zは、3次元空間における方向ベクトルの座標を表し、θは+Z軸からの角度が増加する方向を表し、αは+Z軸から反時計回りにX-Y平面における角度が増加する方向を表し、
1=(X1,Y1,Z1)=(cosθ1cosα1, cosθ1sinα1, sinθ1
2=(X2,Y2,Z2)=(cosθ2cosα2, cosθ2sinα2, sinθ2
となる。単位ベクトルのノルムは1であるので、次いで、
(cosθcosα)2+(cosθsinα)2+(sinθ)2
=cos2θ(cos2α+sin2α)+sin2θ
=ωs2θ+sin2θ
=1 (1)
となる。したがって、ライン接合部モデルは、3Dライン接合部を7ベクトル(θx、θy、θz、θ1、α1、θ2、α2)としてパラメータ化できる。
【0037】
2.3D接合部を2D空間に投影
ライン接合部モデルは、3Dライン接合部を2D空間に投影して、図2Bに示すように、2つの交差するライン(L1およびL2)を得る。特に、点Q、1つの方向ベクトルD1、およびカメラ姿勢(R、T)を使用して、2Dライン関数はライン上の2つの別個の点(P1およびP2)の外積として定義され、以下の式
Ρ1∧Ρ2
~(RQ+T)∧(R(Q+D1)T)
~(RQ+T)∧(RQ+T+RD1
~(RQ+T)∧(RQ+T)+(RQ+T)∧(RD1
~(RQ+T)∧(RD1
~R(Q∧D1)+T∧RD1
~(RQx+TxR)D1 (2)
を導き、ここで、P1、P2は直線上の2つの点であり、∧はクロス積(cross product)であり、Qx、TxはベクトルQおよびTの歪対称行列(the skew-symmetric matrices)である。
【0038】
したがって、2D射影は方向ベクトルD1について、(RQx+TxR)D1である。ライン接合部モデルは方向ベクトルD2の2D投影を導出するために同じプロセスを使用し得る。
【0039】
3.再投影エラー
ライン接合部モデルは、1つまたは複数の画像内のキーラインを決定して、3Dライン接合部から2D投影を作成する際のエラーを決定する。キーラインは、画像内の異なる色の領域を分離する境界線である。2D投影はライン関数であるので、ライン接合部モデルは、検出されたキーラインの両方の端点からの点とラインの距離を比較できる。4つの端点が、2つのキーライン上でそれぞれu、v、x、およびyとして示される場合、ライン接合部モデルはそれぞれの距離を決定し得る。uを一例にとると、距離は
【0040】
【数1】
【0041】
であり、ここでL=(A、B、C)は2Dライン投影の2Dライン方程式であり、d2=A2+B2であり、
L=(RQx+TxR)D(3)
である。
【0042】
1およびL2がそれぞれ2つの3Dラインの2D投影である場合、実際の残差は、以下
【0043】
【数2】
【0044】
のような4ベクトルである。
【0045】
4.最適化設定
2D投影の設定を最適化するために、ライン接合部モデルは非制約最小化問題(an unconstrained minimization problem)を解いて、環境内のクライアントデバイス102(例えば、カメラ)の位置を決定しなければならない。非線形性に起因して、一実施形態では、ライン接合部モデルはLevenberg-Marquardt(または「LM」)ソルバを使用する。一般的な更新のステップは、以下のように、
ΔΡ=-(JTJ+λI)-1t
であり、ここで、Jは再投影エラーのヤコビアンであり、rは残差であり、λはreq項である。
【0046】
1つまたは複数の画像は、複数のランドマーク(例えば、ライン接合部、点群、ラインなど)を含み、典型的な画像には多くのランドマークがあるので、ライン接合部モデルは、設定を最適化するために交互方向のアプローチを使用し得る。これは、ライン接合部モデルが、すべての他の変数を固定しながら、一度に1つのランドマークまたは画像のフレームについてのステップを計算することを可能にする。このアプローチの利点はヤコビアン行列が比較的小さいサイズを有することであり、これはライン接合部モデルのためのより高速な計算につながる。
【0047】
一実施形態では、最適化のためにライン接合部モデルが後に続くパイプラインは、以下、
収束していないが
各ランドマークについて、
LMステップを計算する
ランドマークを更新する
各フレームについて、
LMステップを計算する
フレームを更新する
のように要約できる。
【0048】
ライン接合部モデルは、以下で説明されるように、各変数についてヤコビアンを最適化および計算するために、このプロセスを使用する。これらの導出はライン接合部モデルに関して説明されるが、いくつかの実施形態では、ライン接合部モデルは、適用されるたびにこれらの導出を完了し得ない、またはライン接合部モデルは、導出自体を完了するのではなく、クライアントデバイス102の位置を決定するために、結果として生じる方程式のみを使用し得る。
【0049】
5.ヤコビアン-3D接合部-接合点Q
Q、JQに対するヤコビアンを計算するために、ヤコビアンは、4k x 3のサイズであるべきであり、ここで、kは、1つまたは複数の画像におけるフレームの数である。各フレームkに対して、残差rkは以下
【0050】
【数3】
【0051】
である。
【0052】
残差rkから、ライン接合部モデルは、各フレームkについてヤコビアンJQを導出することができ、
【0053】
【数4】
【0054】
である。
【0055】
第1の行を一例にとると、他の行も同様に分析することができ、
【0056】
【数5】
【0057】
とする。A=-RDxQ,B=TxRD(9)とする。
ここで(8)および(9)に従って、
【0058】
【数6】
【0059】
であり、
【0060】
【数7】
【0061】
とする。ここで、
【0062】
【数8】
【0063】
であるので、
【0064】
【数9】
【0065】
である。
【0066】
したがって、これらの方程式を使用して、ライン接合部モデルは、ヤコビアンJKの第1の行について解き、同様に他の行について解き得る。
【0067】
6.ヤコビアン-3D接合部-接合方向D1、D2
ライン接合部モデルは、D1およびD2のヤコビアンを計算する。例として、D1を使用すると、D2の導出は実質的に同一であるので、ライン接合部モデルは、上記のセクション5で説明したように、残差およびヤコビアン次元から開始する。残差は式(6)と同一であり、一方でヤコビアンは、
【0068】
【数10】
【0069】
である。
【0070】
セクション5とは異なり、
【0071】
【数11】
【0072】
は全て0である。したがって、ライン接合部モデルは、JKのサイズをR2x2に低減し、残差rkのサイズをR2x1に低減できる。
【0073】
さらに、ライン接合部モデルは、導関数(derivatives)の連鎖にもう1つのステップを追加し、
【0074】
【数12】
【0075】
とする。前述したものと同様のアプローチを使用することは、(θ1、Q2、α1、∂2)に対するヤコビアンを与え、それらを組み合わせることは、1つのフレームに対する完全なヤコビアンJk-R4x7を与える。
【0076】
.ヤコビアン-R、T
ヤコビアン行列Rを導出することは、Tに対するヤコビアン行列を導出することよりもライン接合部モデルに対してより多くの作業を伴う。ライン接合部モデルは、
【0077】
【数13】
【0078】
3つのオイラー角に関するヤコビアンを決定することを目的とする。
【0079】
オイラー角から回転行列への変換を定義することは、
【0080】
【数14】
【0081】
をもたらし、ここで、
【0082】
【数15】
【0083】
である。Rが展開されると、
【0084】
【数16】
【0085】
である場合、ライン接合部モデルは
【0086】
【数17】
【0087】
を得る。
【0088】
以下のステップは、オイラー角に関する導関数を計算するとき、連鎖律(the chain rule)の内側で、ライン接合部モデルが余分なステップを挿入し、それが
【0089】
【数18】
【0090】
であることを除いて、セクション5および6と同様である。
計算後
【0091】
【数19】
【0092】
である。
【0093】
接合部三角測量
上記で導出された式を使用して、ライン接合部モデルは、1つまたは複数の画像が与えられた環境におけるカメラ(例えば、クライアントデバイス102)の姿勢(位置および方向)を決定できる。一実施形態では、ライン接合部モデルは、3Dマップを使用して、3Dライン接合部のための頂点として使用される3Dマップ内の端点を決定する。ライン接合部モデルは、端点が1つまたは複数の画像に反映されるかどうかを決定するために、予測された姿勢を使用して端点を3Dから2Dに投影する。投影にエラーがあるので、ライン接合部モデルは、再投影エラーを低減するために、再投影エラーを計算し、1つまたは複数の画像についてのカメラの予測された姿勢(1つまたは複数の)を更新する。複数の反復についてカメラ姿勢を変化させることによって、ライン接合部モデルは、計算されたエラーが閾値未満になるまで、カメラの姿勢のその推定を収束させ得る。ライン接合部モデルは、この決定された位置を環境内のカメラの位置として使用する。
【0094】
ライン接合部モデルは、上記の式を使用して環境内のカメラの位置を決定する。具体的には、K個のフレームと、カメラの内部パラメータおよび外部パラメータとが与えられると、
【0095】
【数20】
【0096】
と表され、ここで、Mi
【0097】
【数21】
【0098】
の形式を有し、Piは、
【0099】
【数22】
【0100】
の形式を有し、各フレーム上には、2つの2Dライン方程式と1つの交点(図2AのQまたは図2BのPに類似)とから構成される2Dライン接合部Ji=(li1、li2、Pi)があり、ここで2つのラインが交わる。
【0101】
2Dラインの方程式は、カメラの中心とラインの2つの端点とを接続することによって張られる、3D空間内の2Dラインの法線ベクトルであることに留意されたい。全てのカメラが較正を伴うと仮定することによって、ライン接合部モデルはカメラ座標で機能できる。例えば、Ji-(li1、li2、Pi)は全てカメラ座標システム内にある。
【0102】
ライン接合部のK個の対応関係が与えられると、ライン接合部モデルの目標は、対応を3D空間に三角測量して、3Dライン接合部を取得することとなる。ライン接合部モデルは、任意の適切な3D点三角測量法を使用し得る(例えば、2Dおよび3D接合点を使用する)。一実施形態では、3Dライン接合部は、J-(L1、L2、P)として定義されることができ、L1、L2は、2つの方向を示す2つの単位ベクトルであり、Pは、2つの3Dラインが3D空間内で交わる接合点である。
【0103】
2つの2Dラインとは異なり、2つの3Dラインは、それらが平行でないかどうかにかかわらず交差しない可能性がある。しかし、一実施形態では、ライン接合部モデルは、それらの2つの3Dラインが交差するという制約を強制し、ライン接合部モデルが2つの方向ベクトルおよび1つの点を使用して3Dライン接合部を表すことを可能にする。2つの方向ベクトルは、前述したように単位ベクトルであるので、この表現は7つの自由度を有する。これは図2Cによって表され、これは、世界空間220内の点PとラインL1およびL2とを有する3Dライン接合部に対する、カメラ空間210内の点Piとラインli1およびli2を有する2Dライン接合部を示す。ライン接合部モデルまたは位置推定およびマッピングモジュール112は、1つまたは複数の画像を頂点(点)およびエッジ(ライン)のグラフに投影することによって、図2Cに類似する環境の表現を作成し、その表現を使用してライン接合部を識別し得る。
【0104】
[3Dから2Dへ]
図2Cは、3Dライン接合部が2Dライン接合部にどのように関連するかを示す。カメラ中心Oi、画像のフレーム上の2Dライン接合部の点Pi、およびラインl i1 上の任意の点は、クライアントデバイス102のカメラに対するカメラ空間210内の平面200を与える。平面200の法線ベクトルは、ラインlに対する方程式li1である。
【0105】
フレームiのライン1上の任意の点qiおよびライン2上のsiを見つけるために、
【0106】
【数23】
【0107】
となる。xiとして示される、{Oi、Pi、qi}によって張られた平面上の任意の点は、
【0108】
【数24】
【0109】
である。
【0110】
方向ベクトルもこの平面上の点を表すが、カメラ空間210ではなく世界空間220内にあることに留意されたい。L1をフレームi上のカメラ空間210にもたらすために、ライン接合部モデルは、以下の変換
i=Ri1+ti
を使用する。しかし、L1は方向ベクトルであるので、変換(translation)は無視することができ、その結果、
【0111】
【数25】
【0112】
となる。
【0113】
式(2)および(3)を組み合わせることは、以下
【0114】
【数26】
【0115】
に示すように、3Dライン接合部方向ベクトルと2Dラインとの間の直接的な関係が得られる。これは、すべてのフレームi=1,.,Kに当てはまる。
【0116】
点Pを、
i=RiP+ti
(5)
を使用して、世界空間220からカメラ空210に転送できる。フレーム上のその画像は、両方の2Dラインと同時に交差するはずであるため、式(2)および(5)を組み合わせると、
【0117】
【数27】
【0118】
が得られる。
【0119】
[2Dから3Dへ]
式(4)および(6)は、2D接合部の対応関係から3D接合部を解くための式を与える。
【0120】
【数28】
【0121】
2つのkx3行列とする。
【0122】
式(4)によれば、これは、
【0123】
【数29】
【0124】
である。
【0125】
1およびL2は両方とも単位ベクトルであるので
【0126】
【数30】
【0127】
であり、ライン接合部モデルは、特異値分解(SVD)をN1およびN2に適用して、
【0128】
【数31】
とすることができ、ここで、L1は最小特異値に関連づけられた特異ベクトルとし、L2についても同様とする。
【0129】
式(6)によれば、
【0130】
【数32】
【0131】
とし、
【0132】
【数33】
【0133】
とすると、ライン接合部モデルは、NP=bの最小二乗解(the least square solution)を見つけることによってPを解くことができる。したがって、
【0134】
【数34】
【0135】
である。
【0136】
ライン接合部モデルは、カメラ(例えば、クライアントデバイス102)が環境を動き回り、より多くの画像をキャプチャするので、上記で説明したプロセスを使用し、カメラのロケーションを何度も計算し得る。
【0137】
[例示的なデータフロー]
図3は、一実施形態による、ARデータを生成および表示するためにクライアントデバイス102およびサーバデバイスによって実行されるプロセスを示すフローチャートである。クライアントデバイス102およびサーバデバイス(集合的に、「デバイス」)は、図1に示されるものと同様であり得、サーバデバイスは、ネットワーク104によってクライアントデバイス102に接続される要素によって表される。破線は、クライアントデバイス102とサーバデバイスとの間のデータの通信を表し、一方、実線は、デバイスの1つの中のデータの通信を示す。他の実施形態では、機能はデバイス間で異なるように分散され得る、および/または異なるデバイスが使用され得る。
【0138】
302にて、センサデータは、クライアントデバイス102上の1つまたは複数のセンサによってクライアントデバイス102において収集される。一実施形態において、センサデータは、画像および慣性測定情報を含む。画像は、1つまたは複数のカメラによってキャプチャされる。慣性測定情報は、クライアントデバイス102上の全地球測位システム(例えば、GPS)およびジャイロスコープ/加速度計モジュールを使用して収集され得る。圧力レベル、照明レベル、音レベル、オーディオデータなどの追加のセンサデータが収集され得る。
【0139】
クライアントデバイス102は、304にてローカルマップストレージを維持し得る。ローカルマップストレージは、図1に示される位置推定およびマッピングモジュール112に、またはクライアントデバイス102における別の位置に、含まれ得る。ローカルマップストレージはローカルの点群データを含む。点群データは、1つまたは複数の環境の3Dマップ内に構築できるメッシュ表面を形成する空間における位置を含み、これはまた、ローカルマップストレージに記憶され得る。
【0140】
マップが306にて初期化される場合、クライアントデバイス102は、308にて、位置推定およびマッピングモジュール112においてSLAM機能を開始し得る。SLAM機能は、点群を構築し、トラッキングを使用して、空間内のカメラ(例えば、クライアントデバイス102上の)の位置を見つける、マッピングシステムを含む。例示的なSLAMプロセスはさらに、アニメーションまたは拡張された値を現実世界に再投影する。304にてローカルマップストレージに記憶され得るマップが310にて位置していない場合、クライアントデバイス102は、312にて初期化モジュールを使用してマップを作成する。
【0141】
314にて環境内の新規の視点が検出された場合(例えば、マッピング/画像化されていないエリアに曲がり角を曲がる場合、または重複があり、現実世界の現在見える部分のすべてがマッピング/画像化されているわけではない場合)、クライアントデバイス102は、316にて、クライアントデバイス102におけるローカル環境推論(a local environment inference)によって収集されたデータを記録し得る。例えば、クライアントデバイス102が現在新規の視点を有すると決定すると、その視点でカメラによってキャプチャされた画像がサーバデバイスに送信され得る。ローカル環境推論は、クライアントデバイス102とサーバデバイスとの間で3Dデータを有する画像をいつどのように送信するかを決定するために使用され得る。ローカル環境推論は、ローカルマッピングシステム(例えば、位置推定およびマッピングモジュール112)のための更新されたキーフレームと、シリアル化された画像および/またはマップデータとを含み得る。
【0142】
アクションがサーバデバイスによって実行されるサーバ側では、318において、新規の視点データ(例えば、メッシュデータを上部に有する点群情報を有する)がクラウドマップストレージ320に記憶され得る。マップがクラウドマップストレージ320に記憶されていない場合(326)、サーバデバイスは、新しいマップを作成してクラウドマップストレージ320に記憶し得る(328)。サーバデバイスは、記憶されたクラウドマップストレージ320およびオブジェクトデータベース322からの現実世界のマップの異なる部分を追加し得る。クラウド環境推論324(クライアントデバイス102によってキャプチャされ、サーバデバイスによって処理された追加データを含む)は、クライアントデバイス102に送り返され得る。追加データは、ポイントおよびメッシュ、ならびに304においてローカルマップストレージに記憶されるセマンティックラベル(例えば、壁またはベッド)を有するオブジェクトデータを含み得る。
【0143】
[仮想世界の概念図]
図4は、一実施形態による、位置ベースの並行現実ゲームのプレイヤーのためのゲームボードとして機能できる、現実世界400と並行する仮想世界410の概念図を示す。図1のクライアントデバイス102は、図4に示すように、現実世界400に対応する仮想世界410を有する並行現実ゲーム(または他の位置ベースのゲーム)をホストし得る。
【0144】
図示されるように、仮想世界410は、現実世界400の地理と平行な地理を含むことができる。特に、現実世界400内の地理的なエリアまたは空間を定義する座標の範囲は、仮想世界410内の仮想空間を定義する対応する座標の範囲にマッピングされる。現実世界400内の座標の範囲を、町、近隣、都市、キャンパス、ロケール、国、大陸、地球全体、または他の地理的エリアに関連付けることができる。地理的な座標の範囲内の各地理的座標は、仮想世界内の仮想空間内の対応する座標にマッピングされる。
【0145】
仮想世界410内のプレイヤーの位置は、現実世界400内のプレイヤーの位置に対応する。例えば、現実世界400内の位置412に位置するプレイヤーAは、仮想世界410内の対応する位置422を有する。同様に、現実世界内の位置414に位置するプレイヤーBは、仮想世界内の対応する位置424を有する。プレイヤーが現実世界400内の地理的座標の範囲内で動き回ると、プレイヤーは、仮想世界410内の仮想空間を定義する座標の範囲内でも動き回る。特に、プレイヤーによって携行されるクライアントデバイス102に関連付けられた測位システム(例えば、GPSシステムまたは位置推定およびマッピングモジュール112によって使用される他のシステム)を使用して、プレイヤーが現実世界内の地理的座標の範囲をナビゲートする際にプレイヤーの位置をトラッキングできる。現実世界400におけるプレイヤーの位置に関連付けられたデータは、仮想世界410における仮想空間を定義する座標の対応する範囲におけるプレイヤーの位置を更新するために使用される。このようにして、プレイヤーは、現実世界400内の特定の離散位置における位置情報をチェックインまたは定期的に更新する必要なく、現実世界400内の地理的座標の対応する範囲の間を単に移動することによって、仮想世界410内の仮想空間を定義する座標の範囲内の連続トラッキングをナビゲートできる。
【0146】
平行現実ゲームは、仮想世界410内の様々な仮想位置に分散する様々な仮想要素および/または仮想オブジェクトまで移動するおよび/またはそれらと対話することをプレイヤーに要求する複数のゲームの目標を含むことができる。プレイヤーは、現実世界400内の仮想要素またはオブジェクトの対応する位置に移動することによって、これらの仮想位置に移動できる。例えば、クライアントデバイス102の測位システムは、プレイヤーが現実世界400を連続的にナビゲートすると、プレイヤーは並行仮想世界410も連続的にナビゲートするように、プレイヤーの位置を連続的にトラッキングできる。次いで、プレイヤーは、1つまたは複数のゲームの目標を達成または実行するために、特定の位置で様々な仮想要素および/またはオブジェクトと対話できる。
【0147】
例えば、図4を参照すると、ゲームの目標は、プレイヤーに、仮想世界410内の様々な仮想位置に位置する仮想要素430の所有権を獲得または主張することを要求できる。これらの仮想要素430は、現実世界400内のランドマーク、地理的位置、またはオブジェクト440にリンクできる。現実世界のランドマークまたはオブジェクト440は、芸術作品、モニュメント、建物、企業、図書館、博物館、または他の適切な現実世界のランドマークもしくはオブジェクトとできる。これらの仮想要素430をキャプチャするために、プレイヤーは、現実世界における仮想要素430にリンクされたランドマーク、地理的位置、またはオブジェクト440に移動しなければならず、仮想世界410における仮想要素430との任意の必要な相互作用を実行しなければならない。例えば、図4のプレイヤーAは、クライアントデバイス102を介して、その特定のランドマーク40にリンクされた仮想要素430と対話する、またはそれをキャプチャするために、現実世界400内のランドマーク440に移動しなければならない。仮想要素430との相互作用は、写真を撮ること、および/または仮想要素430に関連付けられたランドマークもしくはオブジェクト440に関する他の情報を検証、取得、もしくはキャプチャすることなど、現実世界400におけるアクションを必要とし得る。
【0148】
ゲームの目標は、平行現実ゲームにおいてプレイヤーによって収集される1つまたは複数の仮想アイテムを使用することを、プレイヤーに要求する可能性がある。例えば、プレイヤーは、ゲームの目標を達成するために有用であり得る仮想アイテム(例えば、武器または他のアイテム)を求めて仮想世界410を移動しなければならない場合がある。これらの仮想アイテムは、現実世界400内の異なる場所に移動することによって、または仮想世界410もしくは現実世界400のいずれかにおいて様々なアクションを完了することによって、見出される、または収集されることができる。図4に示される例では、プレイヤーは、仮想アイテム432を使用して、1つまたは複数の仮想要素430をキャプチャする。特に、プレイヤーは、仮想要素430に近接する仮想世界410内の位置に仮想アイテム432を展開できる。仮想要素430に近接する1つまたは複数の仮想アイテム432を展開することは、特定のプレイヤーまたは特定のプレイヤーのチームおよび/もしくは陣営(faction)のための仮想要素430のキャプチャをもたらすことができる。
【0149】
1つの特定の実施形態では、プレイヤーは、平行現実ゲームの一部として仮想エネルギーを収集しなければならない場合がある。図4に示されているように、仮想エネルギー450を仮想世界10内の異なる位置に分散させることができる。プレイヤーは、現実世界400内の仮想エネルギー450の対応する位置に移動することによって、仮想エネルギー450を収集できる。仮想エネルギー450は、仮想アイテムに動力を供給するために、および/または平行現実ゲーム内の様々なゲームの目標を実行するために使用できる。すべての仮想エネルギー450を失ったプレイヤーは平行現実ゲームから接続を断たれる可能性がある。
【0150】
本開示の態様によれば、平行現実ゲームを、平行現実ゲーム内のすべての参加者が同じ仮想世界を共有する大規模なマルチプレイヤー位置ベースゲームとすることができる。プレイヤーは別個のチームまたは陣営に分割されることができ、仮想要素430の所有権を獲得または主張するなど、1つまたは複数のゲームの目標を達成するために協働できる。このようにして、平行現実ゲームは、本質的に平行現実ゲーム内のプレイヤー間の協力を促すソーシャルゲームとすることができる。対戦するチームからのプレイヤーは平行現実ゲーム中に互いに妨害できる。プレイヤーは仮想アイテム432を使用して、対戦するチームのプレイヤーを攻撃するまたはその進行を妨げることができる。
【0151】
平行現実ゲームは、平行現実ゲーム内のゲームプレイを向上させ、促すための様々な特徴を有することができる。例えば、プレイヤーは、平行現実ゲーム全体にわたって使用できる仮想通貨または他の仮想報酬を蓄積できる。プレイヤーは、1つまたは複数のゲームの目標を完了し、平行現実ゲーム内で経験を得るにつれて、様々なレベルに進むことができる。プレイヤーは平行現実ゲーム内に設けられた1つまたは複数の通信インターフェースを介して互いに通信できる。プレイヤーはまた、平行現実ゲーム内でゲームの目標を完了するために使用できる強化された「パワー」または仮想アイテム432を取得できる。当業者であれば、本明細書で提供される開示を使用して、本開示の範囲から逸脱することなく、様々な他のゲーム機能を平行現実ゲームに含めることができることを理解するはずである。
【0152】
[例示的な方法]
図5は、一実施形態による、環境内のカメラの位置を決定するためのプロセス(または「方法」)を示すフローチャートである。図5のステップは、プロセス500を実行するクライアントデバイス102の観点から示されている。しかし、ステップの一部または全部は、サーバデバイスなど、他のエンティティまたはコンポーネントによって実行され得る。加えて、いくつかの実施形態は、ステップを並行して実行、ステップを異なる順序で実行、または異なるステップを実行し得る。
【0153】
図5に示される実施形態では、プロセス500は、クライアントデバイス102のカメラによってキャプチャされた画像をクライアントデバイス102が受信する(510)ことから始まる。いくつかの実施形態では、クライアントデバイス102は、ビデオ、オーディオ、光レベル、音レベル、慣性データ、方位、圧力、および/または任意の他の利用可能なデータを含む追加のセンサデータをセンサから受信し得る。クライアントデバイス102は画像内の特徴を識別する(520)。特徴は、ライン接合部、ライン、曲線、または画像内に見出される任意の他の特徴であり得る。
【0154】
クライアントデバイス102は、マップデータベース124から環境の3Dマップを検索する。3Dマップは、1つまたは複数のカメラによってキャプチャされた環境の画像データと、画像データがキャプチャされたときの1つまたは複数のカメラの相対位置と、を使用して、クライアントデバイス102またはサーバデバイスによって作成され得る。クライアントデバイス102は識別された特徴を、マップライン接合部、マップライン、マップ曲線などのマップ特徴を含む環境の3Dマップと比較する(530)。クライアントデバイス102は画像から識別された特徴(520)とマップ特徴との間の対応関係を識別する(540)。いくつかの実施形態では、クライアントデバイス102は、識別された特徴(520)および3Dマップにパターンマッチングを適用して、識別された特徴(520)および3Dマップが重複または隣接する(例えば、対応する)かどうかを決定し得る。クライアントデバイス102は対応関係に基づいてクライアントデバイス102の位置を決定する(550)。位置は平行現実ゲームのための仮想世界における位置に対応する現実世界の位置であり得る。位置がサーバデバイスにおいて決定された場合、サーバデバイスは、プレイヤーがディスプレイを介して見るために、仮想世界における位置の視点をクライアントデバイス102に送信し得る。
【0155】
いくつかの実施形態では、クライアントデバイス102は、他の位置推定モデルを選択および適用して、クライアントデバイス102のための潜在的な位置を生成し得る。例えば、各モデルは、潜在的な位置を出力し得る。潜在的な位置は、ローカルマップ内の座標システムに基づいて定義され得る(例えば、クライアントデバイス102のGPS座標に基づいて選択されるように)。例えば、GPS座標はクライアントデバイス102が建物の中のどこかにある可能性が高いことを示し得、したがって、その建物のためのローカルマップが使用される。クライアントデバイス102は、決定された(550)位置を潜在的な位置と比較して、建物内のクライアントデバイス102のより正確な位置を決定し得る(例えば、1センチメートルの精度を目指す)。いくつかの実施形態では、クライアントデバイス102は、潜在的な位置に基づいて決定された(550)位置を変更し得る、または決定された(550)位置を潜在的な位置と組み合わせて、クライアントデバイス102の新しい位置を生成し得る。さらに、決定された(550)位置および潜在的な位置から新しい位置を生成するために、平均、重み付けされた組合せ、または他の適切な技術が使用され得る。
【0156】
さらに、クライアントデバイス102は、センサデータに基づいて、実行可能性について決定された(550)位置をチェックし得る。例えば、クライアントデバイス102は、決定された(550)位置がGPS座標によって示される位置の閾値距離内にあるかどうか、画像内で検出された照明レベルが決定された(550)位置に対する予想と一致するかどうか、クライアントデバイス102によってキャプチャされた画像が同様の位置でキャプチャされた他の画像と一致するかどうか、などを決定し得る。
【0157】
いくつかの実施形態では、クライアントデバイス102は平行現実ゲームにおいてクライアントデバイス102に接続された追加のクライアントデバイスから1つまたは複数の追加の画像を受信し得る。追加の画像は環境内のクライアントデバイス102を示し得、クライアントデバイス102はこれらの追加の画像を使用してクライアントデバイスの位置を決定し得る。
【0158】
[コンピューティングマシンアーキテクチャ]
図6は、クライアントデバイス102またはサーバとして使用するのに適した例示的なコンピュータ600を示す高レベルブロック図である。例示的なコンピュータ600は、チップセット604に結合された少なくとも1つのプロセッサ602を含む。チップセット604は、メモリコントローラハブ620と、入力/出力(I/O)コントローラハブ622とを含む。メモリ606およびグラフィックアダプタ612は、メモリコントローラハブ620に結合され、ディスプレイ618は、グラフィックアダプタ612に結合される。ストレージデバイス608、キーボード610、ポインティングデバイス614、およびネットワークアダプタ616はI/Oコントローラハブ622に結合される。コンピュータ600の他の実施形態は異なるアーキテクチャを有する。
【0159】
図6に示される実施形態では、ストレージデバイス608は、ハードドライブ、コンパクトディスク読み出し専用メモリ(CD-ROM)、DVD、またはソリッドステートメモリデバイスなどの非一時的コンピュータ可読記憶媒体である。メモリ606は、プロセッサ602によって使用される命令およびデータを保持する。ポインティングデバイス614は、マウス、トラックボール、タッチスクリーン、または他のタイプのポインティングデバイスであり、コンピュータシステム600にデータを入力するためにキーボード610(オンスクリーンキーボードであり得る)と組み合わせて使用される。グラフィックアダプタ612は、ディスプレイ618上に画像および他の情報を表示する。ネットワークアダプタ616は、コンピュータシステム600を1つまたは複数のコンピュータネットワークに結合する。
【0160】
図1のエンティティによって使用されるコンピュータのタイプは、実施形態およびエンティティによって必要とされる処理能力に応じて変化できる。例えば、サーバは、説明された機能を提供するために協働する複数のブレードサーバを含む分散データベースシステムを含み得る。さらに、コンピュータは、キーボード610、グラフィックアダプタ612、およびディスプレイ618など、上記で説明したコンポーネントのいくつかを欠くことができる。
【0161】
当業者は、説明された概念から逸脱することなく、の多数の使用および修正、ならびに本明細書に開示された装置および技術からの逸脱を行うことができる。例えば、本開示において例示または説明されるコンポーネントまたは特徴は、図示または説明される場所、設定、またはコンテキストに限定されない。本開示による装置の例は、前述の図の1つまたは複数を参照して説明されるすべての、より少ない、または異なるコンポーネントを含むことができる。したがって、本開示は、本明細書で説明する特定の実施形態に限定されるべきではなく、発行され得る任意の特許請求の範囲およびその均等物と一致する可能な限り最も広い範囲が与えられるべきである。
図1
図2A
図2B
図2C
図3
図4
図5
図6