(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023133394
(43)【公開日】2023-09-22
(54)【発明の名称】マッピングのためのシステムおよび方法
(51)【国際特許分類】
G06T 19/00 20110101AFI20230914BHJP
G06T 7/70 20170101ALI20230914BHJP
G02B 27/02 20060101ALN20230914BHJP
【FI】
G06T19/00 A
G06T7/70 Z
G02B27/02 Z
【審査請求】有
【請求項の数】19
【出願形態】OL
(21)【出願番号】P 2023118129
(22)【出願日】2023-07-20
(62)【分割の表示】P 2021503572の分割
【原出願日】2019-07-23
(31)【優先権主張番号】62/702,322
(32)【優先日】2018-07-23
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】514108838
【氏名又は名称】マジック リープ, インコーポレイテッド
【氏名又は名称原語表記】Magic Leap,Inc.
【住所又は居所原語表記】7500 W SUNRISE BLVD,PLANTATION,FL 33322 USA
(74)【代理人】
【識別番号】100078282
【弁理士】
【氏名又は名称】山本 秀策
(74)【代理人】
【識別番号】100113413
【弁理士】
【氏名又は名称】森下 夏樹
(74)【代理人】
【識別番号】100181674
【弁理士】
【氏名又は名称】飯田 貴敏
(74)【代理人】
【識別番号】100181641
【弁理士】
【氏名又は名称】石川 大輔
(74)【代理人】
【識別番号】230113332
【弁護士】
【氏名又は名称】山本 健策
(72)【発明者】
【氏名】ヘルダー トシロウ スズキ
(72)【発明者】
【氏名】ベンジャミン ウィーラー スタイルズ
(57)【要約】
【課題】複数のコンポーネントマッピングおよびマップ同期システムと、それを使用して、複数のコンポーネントを横断してマッピングし、マッピングを同期させる方法とを提供すること
【解決手段】第1および第2の通信可能に結合されるハードウェアコンポーネントを有するシステム上において、点マップを更新するためのコンピュータ実装方法は、第1のコンポーネントが、第1のプロセスを第1の状態における点マップ上において実施し、第1の変更を生成するステップを含む。本方法はまた、第2のコンポーネントが、第2のプロセスを第1の状態における点マップ上において実施し、第2の変更を生成するステップを含む。本方法はさらに、第2のコンポーネントが、第2の変更を第1の状態における点マップに適用し、第2の状態における第1の更新された点マップを生成するステップを含む。
【選択図】なし
【特許請求の範囲】
【請求項1】
第1のコンポーネントおよび第2のコンポーネントを有するシステム上において、点マップを更新するためのコンピュータ実装方法であって、前記第1のコンポーネントおよび前記第2のコンポーネントは、通信可能に結合されるハードウェアコンポーネントであり、前記方法は、
前記第1のコンポーネントが、第1のプロセスを第1のマップ状態における前記点マップ上において実施し、第1のマップ変更を生成することであって、前記第1のマップ状態は、前記点マップの状態である、ことと、
前記第2のコンポーネントが、第2のプロセスを前記第1のマップ状態における前記点マップ上において実施し、第2のマップ変更を生成することと、
前記第2のコンポーネントが、前記第2のマップ変更を前記第1のマップ状態における前記点マップに適用し、第2のマップ状態における第1の更新された点マップを生成することであって、前記第2のマップ状態は、前記第1の更新された点マップの状態である、ことと、
前記第1のコンポーネントが、前記第1のマップ変更を前記第2のコンポーネントに送信することと、
前記第2のコンポーネントが、前記第1のマップ変更を前記第2のマップ状態における前記第1の更新された点マップに適用し、第3のマップ状態における第2の更新された点マップを生成することであって、前記第3のマップ状態は、前記第2の更新された点マップの状態である、ことと
を含む、方法。
【請求項2】
前記第2のコンポーネントが、前記第2のマップ変更を前記第1のコンポーネントに送信することと、
前記第1のコンポーネントが、前記第2のマップ変更を前記第1のマップ状態における前記点マップに適用し、前記第2のマップ状態における前記第1の更新された点マップを生成することと、
前記第1のコンポーネントが、前記第1のマップ変更を前記第2のマップ状態における前記第1の更新された点マップに適用し、前記第3のマップ状態における前記第2の更新された点マップを生成することと
をさらに含む、請求項1に記載の方法。
【請求項3】
前記第1のコンポーネントが、前記第1および第2のマップ変更に基づいて、マップ変更順序を生成することと、
前記第1のコンポーネントが、前記マップ変更順序に基づいて、前記第1のマップ変更を前記第2のマップ状態における前記更新された点マップに適用する前に、前記第2のマップ変更を前記第1のマップ状態における前記点マップに適用することと
をさらに含む、請求項2に記載の方法。
【請求項4】
前記第1のコンポーネントが、前記第2のマップ変更を前記第1のマップ状態における前記点マップに適用することは、前記第1のコンポーネントが、変更前の第1のマップ状態を生成することを含み、
前記第1のコンポーネントが、前記第1のマップ変更を前記第2のマップ状態における前記第1の更新された点マップに適用することは、前記第1のコンポーネントが、変更前の第2のマップ状態を生成することを含む、請求項2に記載の方法。
【請求項5】
前記第2のコンポーネントが、前記第2のマップ変更を前記第1のマップ状態における前記点マップに適用することは、前記第2のコンポーネントが、変更前の第1のマップ状態を生成することを含み、
前記第2のコンポーネントが、前記第1のマップ変更を前記第2のマップ状態における前記第1の更新された点マップに適用することは、前記第2のコンポーネントが、変更前の第2のマップ状態を生成することを含む、請求項1に記載の方法。
【請求項6】
前記第1のコンポーネントが、前記第1および第2のマップ変更に基づいて、マップ変更順序を生成することと、
前記第1のコンポーネントが、前記マップ変更順序を前記第2のコンポーネントに送信することと
をさらに含む、請求項1に記載の方法。
【請求項7】
前記第2のコンポーネントが、前記マップ変更順序に基づいて、前記第1のマップ変更を前記第2のマップ状態における前記更新された点マップに適用する前に、前記第2のマップ変更を前記第1のマップ状態における前記点マップに適用することをさらに含む、請求項6に記載の方法。
【請求項8】
前記第1のプロセスは、追跡、マップ点削除、VIO、マッピング、新しいキーフレーム/キーリグフレームの挿入、新しいマップ点の挿入、新しい観察の挿入、バンドル調整、疎マップ幾何学形状の修正、オンライン較正、再位置特定、新しい軌道特徴の追加、新しいBoWインデックスの追加、ループ閉鎖、疎マップ幾何学形状の修正、マップマージ、および同時稠密最適化から成る群から選択される、請求項1に記載の方法。
【請求項9】
前記点マップは、前記システムが位置する物理的場所に対応する、請求項1に記載の方法。
【請求項10】
前記物理的場所は、部屋である、請求項9に記載の方法。
【請求項11】
前記物理的場所は、部屋内のセルである、請求項9に記載の方法。
【請求項12】
前記点マップは、より大きい点マップの一部である、請求項1に記載の方法。
【請求項13】
前記第1のコンポーネントは、複合現実システムの頭部搭載型視聴覚ディスプレイコンポーネントであり、
前記第2のコンポーネントは、前記複合現実システムの胴体搭載型処理コンポーネントである、請求項1に記載の方法。
【請求項14】
前記第2のコンポーネントが、前記第2のマップ変更を前記第1のマップ状態における前記点マップに適用する前に、前記第2のマップ変更を前記第1のマップ状態と調和させることをさらに含む、請求項1に記載の方法。
【請求項15】
前記第1および第2のコンポーネントは、第3のコンポーネントに通信可能に結合され、前記方法は、
前記第3のコンポーネントが、第3のプロセスを前記第1のマップ状態における前記点マップ上において実施し、第3のマップ変更を生成することと、
前記第1および第2のコンポーネントが、それぞれ、前記第1および第2のマップ変更を前記第3のコンポーネントに送信することと、
前記第3のコンポーネントが、前記第3のマップ変更を前記第3のマップ状態における前記第2の更新された点マップに適用し、第4のマップ状態における第3の更新された点マップを生成することと
をさらに含む、請求項1に記載の方法。
【請求項16】
前記第1のコンポーネントは、複合現実システムの頭部搭載型視聴覚ディスプレイコンポーネントであり、
前記第2のコンポーネントは、前記複合現実システムの胴体搭載型処理コンポーネントであり、
前記第3のコンポーネントは、クラウドベースの処理コンポーネントである、請求項15に記載の方法。
【請求項17】
前記第2のコンポーネントが、前記第2のマップ変更を生成する前に、前記第1のマップ変更を前記第1のコンポーネントから受信することをさらに含む、請求項1に記載の方法。
【請求項18】
前記第2のコンポーネントは、データ記憶のためのリムーバブル媒体を備える、請求項1に記載の方法。
【請求項19】
前記第2のプロセスは、追跡、マップ点削除、VIO、マッピング、新しいキーフレーム/キーリグフレームの挿入、新しいマップ点の挿入、新しい観察の挿入、バンドル調整、疎マップ幾何学形状の修正、オンライン較正、再位置特定、新しい軌道特徴の追加、新しいBoWインデックスの追加、ループ閉鎖、疎マップ幾何学形状の修正、マップマージ、および同時稠密最適化から成る群から選択される、請求項1に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、複数のコンポーネントマッピングおよびマップ同期システムと、それを使用して、複数のコンポーネントを横断してマッピングし、マッピングを同期させる方法とに関する。
【背景技術】
【0002】
現代のコンピューティングおよびディスプレイ技術は、いわゆる「仮想現実(VR)」または「拡張現実(AR)」体験のための「複合現実」(MR)システムの開発を促進しており、デジタル的に再現された画像またはその一部が、現実であるように見える、またはそのように知覚され得る様式でユーザに提示される。VRシナリオは、典型的には、実際の実世界の視覚的入力に対して透過性を伴わずに、デジタルまたは仮想画像情報の提示を伴う。ARシナリオは、典型的には、ユーザの周囲の実世界の可視化(すなわち、実世界視覚入力に対する透過性)の拡張として、デジタルまたは仮想画像情報の提示を伴う。故に、ARシナリオは、実世界視覚的入力に対する透過性を伴って、デジタルまたは仮想画像情報の提示を伴う。
【0003】
MRシステムは、典型的には、色データを生成および表示し、これは、MRシナリオの現実性を増加させる。これらのMRシステムの多くは、カラー画像に対応する異なる(例えば、原)色または「フィールド」(例えば、赤色、緑色、および青色)におけるサブ画像を高速で連続して順次投影することによって、色データを表示する。カラーサブ画像を十分に高レート(例えば、60Hz、120Hz等)で投影することは、平滑なカラーMRシナリオをユーザの脳に送達し得る。
【0004】
種々の光学システムは、MR(VRおよびAR)シナリオを表示するために、カラー画像を含む画像を種々の深度において生成する。いくつかのそのような光学システムは、2014年11月27日に出願された米国実用特許出願第14/555,585号(弁理士整理番号第ML.20011.00号)(その内容は、完全に記載される場合と同様に、参照することによってその全体として明示的かつ完全に本明細書に組み込まれる)に説明される。
【0005】
AR/MRを有効にする、頭部装着型ディスプレイデバイスは、実および仮想オブジェクトの両方の同時視認を提供する。「光学シースルー」ディスプレイを用いることで、ユーザは、ディスプレイシステム内の透明(または半透明)要素を通して見え、直接、環境内の実オブジェクトからの光を視認することができる。透明要素は、多くの場合、「コンバイナ」と称され、ディスプレイからの光を実世界のユーザのビューにわたって重畳し、ディスプレイからの光は、仮想コンテンツの画像を環境内の実オブジェクトのシースルービューにわたって投影される。カメラが、頭部装着型ディスプレイデバイス上に搭載され、ユーザによって視認されている場面の画像またはビデオを捕捉し得る。
【0006】
AR/MRシステムにおけるもの等の現在の光学システムは、仮想コンテンツを光学的にレンダリングする。コンテンツは、空間内の個別の位置に位置する実際の物理的オブジェクトに対応しないという点で、「仮想」である。代わりに、仮想コンテンツは、ユーザの眼に指向される光ビームによって刺激されるとき、頭部装着型ディスプレイデバイスのユーザの脳(例えば、視覚中枢)内にのみ存在する。
【0007】
いくつかのAR/MRシステムは、実世界環境のマップ(例えば、トポロジマップ、幾何学的マップ、疎点マップ等)を使用して、AR/MRシナリオのためのパス可能世界モデルを生成する。パス可能世界モデルは、実世界環境内の実世界オブジェクトを伴う相互作用を促進する(例えば、仮想オブジェクトを実世界ソファ上に表示する)。疎マップは、「安定」座標系に対する視覚姿勢を算出するための基本構築ブロックである。環境特徴は、3D疎マップ内の基準点となる。センサに対する基準点の位置は、センサの位置または姿勢を定義する。疎マップは、複数のシステムコンポーネントからのデータを使用して構築されることができる。予備マップは、追跡が、実世界環境内の仮想オブジェクトの永続性を促進することを可能にする(「ピクセルスティック」)。いくつかのAR/MRマッピング関連方法は、ユーザおよび/またはAR/MRデバイスの位置および姿勢を決定するために、トポロジマップを使用したAR/MRデバイスの位置特定を伴う。いくつかのAR/MRマッピング関連方法は、幾何学的マップを使用して、AR/MRデバイスの実世界オブジェクトのモデル化を伴い、仮想オブジェクトのより正確かつ現実的提示を可能にする。いくつかのAR/MRシステムは、同時位置特定およびマッピング技法を使用して、(可能性として考えられる動的)実世界環境のマップを生成および/または更新する。
【0008】
実施例として、位置特定は、頭部装着型ディスプレイデバイスを装着しているユーザが、仮想オブジェクトが現れるエリアの周囲を歩きながら、仮想オブジェクトをディスプレイ上で視認することを可能にする。更新された位置および姿勢データを用いることで、仮想オブジェクトは、視点毎にレンダリングされ、ユーザに、実空間を占有するオブジェクトの周囲を歩いているという知覚を与えることができる。頭部装着型ディスプレイデバイスが、複数の仮想オブジェクトを提示するために使用される場合、頭部姿勢の測定が、場面をレンダリングし、ユーザの動的に変化する位置および姿勢に合致させ、増加された没入感を提供するために使用されることができる。
【0009】
マップは、多くの方法および技法を使用して、生成、修正、および/または最適化されることができる。これらの技法のうちのいくつかは、新しいデータを伴う。新しいデータ技法の1つのそのようなグループは、集合的に、追跡と呼ばれ、マップ点統計の更新を含み、これは、マップ点削除をトリガし得る。別の新しいデータ技法は、視覚慣性オドメトリ(「VIO」)であって、これは、慣性制約を疎点マップに適用することを含む。新しいデータ技法のさらに別のグループは、集合的に、マッピングと呼ばれ、これは、新しいキーリグフレーム(「キーフレーム」または「リグフレーム」)、マップ点、および観察を挿入することを含む。新しいデータ技法のさらに別のグループは、集合的に、再位置特定と呼ばれ、これは、新しい軌道特徴およびBag of Words(「BoW」)インデックスの追加を含む。新しいデータ技法の別のグループは、集合的に、マップマージと呼ばれ、これは、異なるAR/MRセッションからの疎マップデータを組み込むことを含む。新しいデータ技法のさらに別のグループは、集合的に、同時稠密最適化と呼ばれ、これは、稠密マップデータを組み込むことを含む。
【0010】
他のマッピング技法は、既存のマップの最適化を伴う。最適化技法の1つのそのようなグループは、集合的に、バンドル調整と呼ばれ、これは、疎マップ幾何学形状の修正およびオンライン較正を含む。最適化技法の別のグループは、集合的に、ループ閉鎖と呼ばれ、これは、疎マップ幾何学形状の修正を含む。
【0011】
種々のAR/MRマッピング関連方法および技法は、2015年5月7日に出願された米国実用特許出願第14/705,983号(弁理士整理番号第ML.200V7.310号)および2015年5月5日に出願された14/704,844号(弁理士整理番号第ML.20020.304号)(その内容は、完全に記載される場合と同様に、参照することによってその全体として明示的かつ完全に本明細書に組み込まれる)に説明される。
【0012】
上記に説明されるように、マッピングは、AR/MRシステム機能を促進する。複数のコンポーネントAR/MRシステムのコンポーネント(例えば、頭部装着型ディスプレイ(「ウェアラブル」)およびベルト装着型または身体装着型処理コンポーネント(「電源パック」))を横断してマップを同期させることは、コヒーレントかつ一貫したAR/MRシナリオを促進する。マップ同期は、処理電力、メモリ、帯域幅、データソース、待ち時間、および複数のオペレーティングシステム、プロセッサ、およびアーキテクチャ等のあるシステム限界を含意する
【先行技術文献】
【特許文献】
【0013】
【特許文献1】米国特許出願第14/555,585号明細書
【発明の概要】
【課題を解決するための手段】
【0014】
一実施形態では、第1および第2の通信可能に結合されるハードウェアコンポーネントを有するシステム上において、点マップを更新するためのコンピュータ実装方法は、第1のコンポーネントが、第1のプロセスを第1の状態における点マップ上において実施し、第1の変更を生成するステップを含む。本方法はまた、第2のコンポーネントが、第2のプロセスを第1の状態における点マップ上において実施し、第2の変更を生成するステップを含む。本方法はさらに、第2のコンポーネントが、第2の変更を第1の状態における点マップに適用し、第2の状態における第1の更新された点マップを生成するステップを含む。さらに、本方法は、第1のコンポーネントが、第1の変更を第2のコンポーネントに送信するステップを含む。加えて、本方法は、第2のコンポーネントが、第1の変更を第2の状態における第1の更新された点マップに適用し、第3の状態における第2の更新された点マップを生成するステップを含む。
【0015】
1つ以上の実施形態では、本方法はまた、第2のコンポーネントが、第2の変更を第1のコンポーネントに送信するステップを含む。本方法はさらに、第1のコンポーネントが、第2の変更を第1の状態における点マップに適用し、第2の状態における第1の更新された点マップを生成するステップを含む。さらに、本方法は、第1のコンポーネントが、第1の変更を第2の状態における第1の更新された点マップに適用し、第3の状態における第2の更新された点マップを生成するステップを含む。本方法はまた、第1のコンポーネントが、第1および第2の変更に基づいて、変更順序を生成するステップと、第1のコンポーネントが、変更順序に基づいて、第1の変更を第2の状態における更新された点マップに適用する前に、第2の変更を第1の状態における点マップに適用するステップとを含んでもよい。第1のコンポーネントが、第2の変更を第1の状態における点マップに適用するステップは、第1のコンポーネントが、変更前の第1の状態を生成するステップを含んでもよい。第1のコンポーネントが、第1の変更を第2の状態における第1の更新された点マップに適用するステップは、第1のコンポーネントが、変更前の第2の状態を生成するステップを含んでもよい。第2のコンポーネントが、第2の変更を第1の状態における点マップに適用するステップは、第2のコンポーネントが、変更前の第1の状態を生成するステップを含んでもよく、第2のコンポーネントが、第1の変更を第2の状態における第1の更新された点マップに適用するステップは、第2のコンポーネントが、変更前の第2の状態を生成するステップを含んでもよい。
【0016】
1つ以上の実施形態では、本方法はまた、第1のコンポーネントが、第1および第2の変更に基づいて、変更順序を生成するステップと、第1のコンポーネントが、変更順序を第2のコンポーネントに送信するステップとを含む。本方法はまた、第2のコンポーネントが、変更順序に基づいて、第1の変更を第2の状態における更新された点マップに適用する前に、第2の変更を第1の状態における点マップに適用するステップを含んでもよい。第1のプロセスは、追跡、マップ点削除、VIO、マッピング、新しいキーフレーム/キーリグフレームの挿入、新しいマップ点の挿入、新しい観察の挿入、バンドル調整、疎マップ幾何学形状の修正、オンライン較正、再位置特定、新しい軌道特徴の追加、新しいBoWインデックスの追加、ループ閉鎖、疎マップ幾何学形状の修正、マップマージ、および同時稠密最適化から成る群から選択されてもよい。
【0017】
1つ以上の実施形態では、点マップは、システムが位置する、物理的場所に対応する。物理的場所は、部屋または部屋内のセルであってもよい。点マップは、より大きい点マップの一部であってもよい。
【0018】
1つ以上の実施形態では、第1のコンポーネントは、複合現実システムの頭部搭載型視聴覚ディスプレイコンポーネントであって、第2のコンポーネントは、複合現実システムの胴体搭載型処理コンポーネントである。本方法はまた、第2のコンポーネントが、第2の変更を第1の状態における点マップに適用する前に、第1および第2の変更を調和させるステップを含んでもよい。
【0019】
1つ以上の実施形態では、第1および第2のコンポーネントは、第3のコンポーネントに通信可能に結合される。本方法はまた、第3のコンポーネントが、第3のプロセスを第1の状態における点マップ上において実施し、第3の変更を生成するステップを含む。本方法はさらに、第1および第2のコンポーネントが、それぞれ、第1および第2の変更を第3のコンポーネントに送信するステップを含む。さらに、本方法は、第3のコンポーネントが、第3の変更を第3の状態における第2の更新された点マップに適用し、第4の状態における第3の更新された点マップを生成するステップを含む。第1のコンポーネントは、複合現実システムの頭部搭載型視聴覚ディスプレイコンポーネントであってもよく、第2のコンポーネントは、複合現実システムの胴体搭載型処理コンポーネントであってもよく、第3のコンポーネントは、クラウドベースの処理コンポーネントであってもよい。本方法はまた、第2のコンポーネントが、第2の変更を生成する前に、第1の変更を第1のコンポーネントから受信するステップを含んでもよい。第2のコンポーネントは、データ記憶のためのリムーバブル媒体を含んでもよい。
【0020】
別の実施形態では、複合現実システムは、頭部搭載型視聴覚ディスプレイコンポーネントと、ディスプレイコンポーネントに通信可能に結合される、胴体搭載型処理コンポーネントとを含む。ディスプレイコンポーネントは、第1のプロセスを第1の状態における点マップ上において実施し、第1の変更を生成し、第1の変更を処理コンポーネントに送信するように構成される。処理コンポーネントは、第2のプロセスを第1の状態における点マップ上において実施し、第2の変更を生成し、第2の変更を第1の状態における点マップに適用し、第2の状態における第1の更新された点マップを生成し、第1の変更を第2の状態における第1の更新された点マップに適用し、第3の状態における第2の更新された点マップを生成するように構成される。
【0021】
1つ以上の実施形態では、処理コンポーネントはさらに、第2の変更をディスプレイコンポーネントに送信するように構成される。ディスプレイコンポーネントはまた、第2の変更を第1の状態における点マップに適用し、第2の状態における第1の更新された点マップを生成し、第1の変更を第2の状態における第1の更新された点マップに適用し、第3の状態における第2の更新された点マップを生成するように構成される。ディスプレイコンポーネントはまた、第1および第2の変更に基づいて、変更順序を生成し、変更順序に基づいて、第1の変更を第2の状態における更新された点マップに適用する前に、第2の変更を第1の状態における点マップに適用するように構成されてもよい。
【0022】
1つ以上の実施形態では、ディスプレイコンポーネントはさらに、第1および第2の変更に基づいて、変更順序を生成し、変更順序を処理コンポーネントに送信するように構成される。処理コンポーネントはまた、変更順序に基づいて、第1の変更を第2の状態における更新された点マップに適用する前に、第2の変更を第1の状態における点マップに適用するように構成されてもよい。第1のプロセスは、追跡、マップ点削除、VIO、マッピング、新しいキーフレーム/キーリグフレームの挿入、新しいマップ点の挿入、新しい観察の挿入、バンドル調整、疎マップ幾何学形状の修正、オンライン較正、再位置特定、新しい軌道特徴の追加、新しいBoWインデックスの追加、ループ閉鎖、疎マップ幾何学形状の修正、マップマージ、および同時稠密最適化から成る群から選択されてもよい。
【0023】
1つ以上の実施形態では、点マップは、システムが位置する、物理的場所に対応する。物理的場所は、部屋または部屋内のセルであってもよい。点マップは、より大きい点マップの一部であってもよい。
【0024】
1つ以上の実施形態では、処理コンポーネントはさらに、第2の変更を第1の状態における点マップに適用する前に、第1および第2の変更を調和させるように構成される。ディスプレイおよび処理コンポーネントは、オンラインコンポーネントに通信可能に結合されてもよい。ディスプレイおよび処理コンポーネントは、それぞれ、第1および第2の変更をオンラインコンポーネントに送信するように構成されてもよい。オンラインコンポーネントは、第3のプロセスを第1の状態における点マップ上において実施し、第3の変更を生成し、第3の変更を第3の状態における第2の更新された点マップに適用し、第4の状態における第3の更新された点マップを生成するように構成されてもよい。
【0025】
1つ以上の実施形態では、ディスプレイコンポーネントは、変更順序を生成し、変更順序に基づいて、変更を適用し、変更順序を処理コンポーネントに送信するように構成される、ディスプレイコンポーネントマップマネージャを含む。ディスプレイコンポーネントはまた、第1の変更を処理コンポーネントに送信するように構成される、ディスプレイコンポーネント変更ライタを含む。ディスプレイコンポーネントはさらに、変更を受信するように構成される、ディスプレイコンポーネント変更リーダを含む。ディスプレイコンポーネントマップマネージャはまた、変更前の状態を生成するように構成されてもよい。ディスプレイコンポーネントマップマネージャは、変更バッファを含んでもよい。
【0026】
1つ以上の実施形態では、処理コンポーネントは、変更順序を受信し、変更順序に基づいて、変更を適用するように構成される、処理コンポーネントマップマネージャを含む。処理コンポーネントはまた、第2の変更をディスプレイコンポーネントに送信するように構成される、処理コンポーネント変更ライタを含む。処理コンポーネントはさらに、変更を受信するように構成される、処理コンポーネント変更リーダを含む。処理コンポーネントマップマネージャはまた、変更前の状態を生成するように構成されてもよい。処理コンポーネントマップマネージャは、変更バッファを含んでもよい。処理コンポーネントは、データ記憶のためのリムーバブル媒体を含んでもよい。
【0027】
さらに別の実施形態では、頭部搭載型視聴覚ディスプレイコンポーネントと、ディスプレイコンポーネントに通信可能に結合される、胴体搭載型処理コンポーネントとを有する、システム上において、点マップを更新するためのコンピュータ実装方法は、処理コンポーネントが、点マップを複数の点マップサブユニットに分割するステップを含む。本方法はまた、処理コンポーネントが、複数の点マップサブユニットの第1のサブセットをディスプレイコンポーネントに送信するステップを含む。本方法はさらに、処理コンポーネントが、ディスプレイコンポーネントの移動に応答して、複数の点マップサブユニットの第2のサブセットをディスプレイコンポーネントに送信するステップを含む。
【0028】
1つ以上の実施形態では、本方法はまた、ディスプレイコンポーネントが、複数の点マップサブユニットの第1のサブセットを記憶するステップと、ディスプレイコンポーネントが、その移動を検出するステップと、ディスプレイコンポーネントが、移動データを処理コンポーネントに送信するステップとを含み、本方法はさらに、ディスプレイコンポーネントが、移動に基づいて、複数の点マップサブユニットの第1のサブセットの一部を削除するステップと、ディスプレイコンポーネントが、複数の点マップサブユニットの第2のサブセットを受信するステップと、ディスプレイコンポーネントが、複数の点マップサブユニットの第2のサブセットを記憶するステップとを含む。複数の点マップサブユニットの第1のサブセットおよび複数の点マップサブユニットの第2のサブセットの部分は、実質的に同一サイズを有してもよい。
【0029】
1つ以上の実施形態では、複数の点マップサブユニットの第2のサブセットは、移動の方向に対応し、複数の点マップサブユニットの第1のサブセットの部分は、移動の方向と反対の第2の方向に対応する。複数の点マップサブユニットは、3Dアレイであってもよい。3Dアレイは、3×3×1アレイ、10×10×1アレイ、または6×6×3アレイであってもよい。
【0030】
さらに別の実施形態では、複合現実システムは、頭部搭載型視聴覚ディスプレイコンポーネントと、ディスプレイコンポーネントに通信可能に結合される、胴体搭載型処理コンポーネントとを含む。処理コンポーネントは、点マップを複数の点マップサブユニットに分割し、複数の点マップサブユニットの第1のサブセットをディスプレイコンポーネントに送信し、ディスプレイコンポーネントの移動に応答して、複数の点マップサブユニットの第2のサブセットをディスプレイコンポーネントに送信するように構成される。ディスプレイコンポーネントは、複数の点マップサブユニットの第1のサブセットを記憶し、その移動を検出し、移動データを処理コンポーネントに送信し、移動に基づいて、複数の点マップサブユニットの第1のサブセットの一部を削除し、複数の点マップサブユニットの第2のサブセットを受信し、複数の点マップサブユニットの第2のサブセットを記憶するように構成される。
【0031】
1つ以上の実施形態では、複数の点マップサブユニットの第1のサブセットおよび複数の点マップサブユニットの第2のサブセットの部分は、実質的に同一サイズを有する。複数の点マップサブユニットの第2のサブセットは、移動の方向に対応してもよく、複数の点マップサブユニットの第1のサブセットの部分は、移動の方向と反対の第2の方向に対応してもよい。複数の点マップサブユニットは、3Dアレイであってもよい。3Dアレイは、3×3×1アレイ、10×10×1アレイ、または6×6×3アレイであってもよい。
【0032】
別の実施形態では、USBケーブルを横断してデータを通信するためのシステムは、ライタと、リーダと、セルのアレイを含む、データ構造とを含む。アレイの各セルは、所有者インジケータと、状態インジケータと、セルデータとを含む。
【0033】
1つ以上の実施形態では、セルのアレイは、複数のマップセルと、少なくとも1つの遷移セルとを含む。本システムはまた、マップの各セルに対応する複数のポインタと、マップのポインタまたはセルのカウントとを含む、セルリストを含んでもよい。
【0034】
さらに別の実施形態では、ライタと、リーダと、セルのアレイであって、アレイの各セルは、所有者インジケータと、状態インジケータと、セルデータとを含む、セルのアレイを含む、データ構造とを含む、システムを使用して、USBケーブルを横断してデータを通信するための方法は、全ての所有者インジケータを「所有者なし」に設定し、全ての状態インジケータを「無効」に設定することによって、データ構造を初期化するステップを含む。本方法はまた、USBケーブルを横断して転送されるべきセルを識別するステップを含む。本方法はさらに、セルの所有者インジケータを「comm2」に設定するステップを含む。さらに、本方法は、セルの状態インジケータを「USB」に設定するステップを含む。加えて、本方法は、USBケーブルを横断してセルを転送するステップを含む。本方法はまた、USBケーブルを横断してセルを転送後、セルの所有者インジケータを「マップ」に設定するステップを含む。本方法はさらに、USBケーブルを横断してセルを転送後、セルの状態インジケータを「マップ」に設定するステップを含む。
【0035】
1つ以上の実施形態では、本方法はまた、システムが、「マップ」に設定される所有者インジケータを有する、各セルに対応する複数のポインタと、「マップ」に設定される所有者インジケータを有する、複数のセルのポインタのカウントとを含む、セルリストを読み取るステップを含む。本方法はまた、書込が、要求アレイを取り込むステップを含んでもよい。本方法はさらに、セルの所有者インジケータを「所有者なし」に設定し、セルの状態インジケータを「無効」に設定することによって、セルを無効にするステップを含んでもよい。さらに、本方法は、セルの所有者インジケータを「comm2」に設定し、セルの状態インジケータを「USB」に設定することによって、セルを送信するステップを含んでもよい。
【0036】
本開示の付加的および他の目的、特徴、および利点は、詳細な説明、図、および請求項に説明される。
本発明は、例えば、以下を提供する。
(項目1)
第1および第2の通信可能に結合されるハードウェアコンポーネントを有するシステム上において、点マップを更新するためのコンピュータ実装方法であって、
前記第1のコンポーネントが、第1のプロセスを第1の状態における前記点マップ上において実施し、第1の変更を生成することと、
前記第2のコンポーネントが、第2のプロセスを前記第1の状態における前記点マップ上において実施し、第2の変更を生成することと、
前記第2のコンポーネントが、前記第2の変更を前記第1の状態における前記点マップに適用し、第2の状態における第1の更新された点マップを生成することと、
前記第1のコンポーネントが、前記第1の変更を前記第2のコンポーネントに送信することと、
前記第2のコンポーネントが、前記第1の変更を前記第2の状態における前記第1の更新された点マップに適用し、第3の状態における第2の更新された点マップを生成することと
を含む、方法。
(項目2)
前記第2のコンポーネントが、前記第2の変更を前記第1のコンポーネントに送信することと、
前記第1のコンポーネントが、前記第2の変更を前記第1の状態における前記点マップに適用し、前記第2の状態における前記第1の更新された点マップを生成することと、
前記第1のコンポーネントが、前記第1の変更を前記第2の状態における前記第1の更新された点マップに適用し、前記第3の状態における前記第2の更新された点マップを生成することと
をさらに含む、項目1に記載の方法。
(項目3)
前記第1のコンポーネントが、前記第1および第2の変更に基づいて、変更順序を生成することと、
前記第1のコンポーネントが、前記変更順序に基づいて、前記第1の変更を前記第2の状態における前記更新された点マップに適用する前に、前記第2の変更を前記第1の状態における前記点マップに適用することと
をさらに含む、項目2に記載の方法。
(項目4)
前記第1のコンポーネントが、前記第2の変更を前記第1の状態における前記点マップに適用することは、前記第1のコンポーネントが、変更前の第1の状態を生成することを含み、
前記第1のコンポーネントが、前記第1の変更を前記第2の状態における前記第1の更新された点マップに適用することは、前記第1のコンポーネントが、変更前の第2の状態を生成することを含む、
項目2に記載の方法。
(項目5)
前記第2のコンポーネントが、前記第2の変更を前記第1の状態における前記点マップに適用することは、前記第2のコンポーネントが、変更前の第1の状態を生成することを含み、
前記第2のコンポーネントが、前記第1の変更を前記第2の状態における前記第1の更新された点マップに適用することは、前記第2のコンポーネントが、変更前の第2の状態を生成することを含む、
項目1に記載の方法。
(項目6)
前記第1のコンポーネントが、前記第1および第2の変更に基づいて、変更順序を生成することと、
前記第1のコンポーネントが、前記変更順序を前記第2のコンポーネントに送信することと
をさらに含む、項目1に記載の方法。
(項目7)
前記第2のコンポーネントが、前記変更順序に基づいて、前記第1の変更を前記第2の状態における前記更新された点マップに適用する前に、前記第2の変更を前記第1の状態における前記点マップに適用することをさらに含む、項目6に記載の方法。
(項目8)
前記第1のプロセスは、追跡、マップ点削除、VIO、マッピング、新しいキーフレーム/キーリグフレームの挿入、新しいマップ点の挿入、新しい観察の挿入、バンドル調整、疎マップ幾何学形状の修正、オンライン較正、再位置特定、新しい軌道特徴の追加、新しいBoWインデックスの追加、ループ閉鎖、疎マップ幾何学形状の修正、マップマージ、および同時稠密最適化から成る群から選択される、項目1に記載の方法。
(項目9)
前記点マップは、前記システムが位置する物理的場所に対応する、項目1に記載の方法。
(項目10)
前記物理的場所は、部屋である、項目9に記載の方法。
(項目11)
前記物理的場所は、部屋内のセルである、項目9に記載の方法。
(項目12)
前記点マップは、より大きい点マップの一部である、項目1に記載の方法。
(項目13)
前記第1のコンポーネントは、複合現実システムの頭部搭載型視聴覚ディスプレイコンポーネントであり、
前記第2のコンポーネントは、前記複合現実システムの胴体搭載型処理コンポーネントである、
項目1に記載の方法。
(項目14)
前記第2のコンポーネントが、前記第2の変更を前記第1の状態における前記点マップに適用する前に、前記第1および第2の変更を調和させることをさらに含む、項目1に記載の方法。
(項目15)
前記第1および第2のコンポーネントは、第3のコンポーネントに通信可能に結合され、前記方法はさらに、
前記第3のコンポーネントが、第3のプロセスを前記第1の状態における前記点マップ上において実施し、第3の変更を生成することと、
前記第1および第2のコンポーネントが、それぞれ、前記第1および第2の変更を前記第3のコンポーネントに送信することと、
前記第3のコンポーネントが、前記第3の変更を前記第3の状態における前記第2の更新された点マップに適用し、第4の状態における第3の更新された点マップを生成することと
を含む、項目1に記載の方法。
(項目16)
前記第1のコンポーネントは、複合現実システムの頭部搭載型視聴覚ディスプレイコンポーネントであり、
前記第2のコンポーネントは、前記複合現実システムの胴体搭載型処理コンポーネントであり、
前記第3のコンポーネントは、クラウドベースの処理コンポーネントである、項目15に記載の方法。
(項目17)
前記第2のコンポーネントが、前記第2の変更を生成する前に、前記第1の変更を前記第1のコンポーネントから受信することをさらに含む、項目1に記載の方法。
(項目18)
前記第2のコンポーネントは、データ記憶のためのリムーバブル媒体を備える、項目1に記載の方法。
(項目19)
頭部搭載型視聴覚ディスプレイコンポーネントと、前記ディスプレイコンポーネントに通信可能に結合される胴体搭載型処理コンポーネントとを有するシステム上において、点マップを更新するためのコンピュータ実装方法であって、前記方法は、
前記処理コンポーネントが、前記点マップを複数の点マップサブユニットに分割することと、
前記処理コンポーネントが、前記複数の点マップサブユニットの第1のサブセットを前記ディスプレイコンポーネントに送信することと、
前記処理コンポーネントが、前記ディスプレイコンポーネントの移動に応答して、前記複数の点マップサブユニットの第2のサブセットを前記ディスプレイコンポーネントに送信することと
を含む、方法。
(項目20)
前記ディスプレイコンポーネントが、前記複数の点マップサブユニットの第1のサブセットを記憶することと、
前記ディスプレイコンポーネントが、その移動を検出することと、
前記ディスプレイコンポーネントが、移動データを前記処理コンポーネントに送信することと、
前記ディスプレイコンポーネントが、前記移動に基づいて、前記複数の点マップサブユニットの第1のサブセットの一部を削除することと、
前記ディスプレイコンポーネントが、前記複数の点マップサブユニットの第2のサブセットを受信することと、
前記ディスプレイコンポーネントが、前記複数の点マップサブユニットの第2のサブセットを記憶することと
をさらに含む、項目19に記載の方法。
(項目21)
前記複数の点マップサブユニットの第1のサブセットおよび前記複数の点マップサブユニットの第2のサブセットの部分は、実質的に同一サイズを有する、項目20に記載の方法。
(項目22)
前記複数の点マップサブユニットの第2のサブセットは、前記移動の方向に対応し、
前記複数の点マップサブユニットの第1のサブセットの部分は、前記移動の方向と反対の第2の方向に対応する、
項目20に記載の方法。
(項目23)
前記複数の点マップサブユニットは、3Dアレイである、項目20に記載の方法。
(項目24)
前記3Dアレイは、3×3×1アレイ、10×10×1アレイ、または6×6×3アレイである、項目23に記載の方法。
【図面の簡単な説明】
【0037】
図面は、本開示の種々の実施形態の設計および可用性を図示する。図は、正確な縮尺で描かれておらず、類似構造または機能の要素は、図全体を通して類似参照番号によって表されることに留意されたい。本開示の種々の実施形態の前述および他の利点および目的を得る方法をより深く理解するために、簡単に前述された開示の詳細な説明が、付随の図面に図示されるその具体的実施形態を参照することによって与えられるであろう。これらの図面は、本開示の典型的実施形態のみを描写し、したがって、その範囲の限定として見なされないことを理解した上で、本開示は、付随の図面の使用を通して付加的具体性および詳細とともに記載および説明されるであろう。
【0038】
【
図1】
図1-4は、いくつかの実施形態による、そのVR/AR/MRシステムおよびサブシステムを図式的に描写する。
【
図2】
図1-4は、いくつかの実施形態による、そのVR/AR/MRシステムおよびサブシステムを図式的に描写する。
【
図3】
図1-4は、いくつかの実施形態による、そのVR/AR/MRシステムおよびサブシステムを図式的に描写する。
【
図4】
図1-4は、いくつかの実施形態による、そのVR/AR/MRシステムおよびサブシステムを図式的に描写する。
【0039】
【
図5】
図5は、いくつかの実施形態による、VR/AR/MRシステムの焦点平面を描写する。
【0040】
【
図6】
図6は、いくつかの実施形態による、パス可能世界モデルの簡略化されたビューを描写する。
【0041】
【
図7】
図7は、いくつかの実施形態による、パス可能世界モデルを使用してレンダリングする方法を描写する。
【0042】
【
図8】
図8は、いくつかの実施形態による、トポロジマップを描写する。
【0043】
【
図9】
図9は、いくつかの実施形態による、トポロジマップを使用した位置特定のプロセスのための高レベルフロー図を描写する。
【0044】
【
図10】
図10は、いくつかの実施形態による、種々のキーフレーム間の接続としての幾何学的マップを描写する。
【0045】
【
図11】
図11は、いくつかの実施形態による、幾何学的マップの上部に層化されたトポロジマップを描写する。
【0046】
【
図12】
図12は、いくつかの実施形態による、波伝搬バンドル調整を実施するプロセスのための高レベルフロー図を描写する。
【0047】
【
図13】
図13は、いくつかの実施形態による、仮想キーフレームを通して見られるようなマップ点、キーフレーム、およびマップ点からキーフレームまでのレンダリングラインを描写する。
【0048】
【
図14】
図14は、いくつかの実施形態による、検索ではなく、レンダリングに基づいて、マップ点を見出すプロセスのための高レベルフロー図を描写する。
【0049】
【
図15】
図15は、いくつかの実施形態による、複数のAR/MRシステムを含む、マッピングシステムを図式的に描写する。
【0050】
【
図16】
図16は、いくつかの実施形態による、マルチコンポーネントマッピングシステムを使用した非同期マッピング方法のためのワークフローを描写する。
【0051】
【
図17】
図17A-17Dは、いくつかの実施形態による、複数の例示的ループ閉鎖動作を描写する。
【0052】
【
図18】
図18は、いくつかの実施形態による、マップ管理を伴うマルチコンポーネントマッピングシステムを使用した非同期マッピング方法のためのワークフローを描写する。
【0053】
【
図19】
図19は、いくつかの実施形態による、マッピングおよびマップ同期のためのAR/MRシステムを図式的に描写する。
【0054】
【
図20】
図20は、いくつかの実施形態による、変更順序を生成する、マッピングおよびマップ同期のためのAR/MRシステムのウェアラブルマップマネージャを図式的に描写する。
【0055】
【
図21】
図21は、いくつかの実施形態による、変更順序に基づいて、複数の受信された状態変更を適用する、マッピングおよびマップ同期のためのAR/MRシステムの電源パックマップマネージャを図式的に描写する。
【0056】
【
図22】
図22は、いくつかの実施形態による、複数の受信された状態変更を処理し、変更順序を生成する、マッピングおよびマップ同期のためのAR/MRシステムのウェアラブルマップマネージャを図式的に描写する。
【0057】
【
図23】
図23は、いくつかの実施形態による、変更順序に基づいて、複数の受信された状態変更を処理する、マッピングおよびマップ同期のためのAR/MRシステムの電源パックマップマネージャを図式的に描写する。
【0058】
【
図24】
図24および25は、いくつかの実施形態による、複数のコンポーネントマッピングシステムにおけるセルストリーミング方法を図式的に描写する。
【
図25】
図24および25は、いくつかの実施形態による、複数のコンポーネントマッピングシステムにおけるセルストリーミング方法を図式的に描写する。
【0059】
【
図26】
図26および27は、いくつかの実施形態による、ゼロコピーデータ転送のためのデータ構造を描写する。
【
図27】
図26および27は、いくつかの実施形態による、ゼロコピーデータ転送のためのデータ構造を描写する。
【0060】
【
図28】
図28は、いくつかの実施形態による、例証的コンピューティングシステムを図式的に描写する、ブロック図である。
【発明を実施するための形態】
【0061】
本開示の種々の実施形態は、単一実施形態または複数の実施形態における、複数のコンポーネントシステム内のマッピングおよびマップ同期のためのシステム、方法、および製造品を対象とする。本開示の他の目的、特徴、および利点は、詳細な説明、図、および請求項に説明される。
【0062】
ここで、種々の実施形態が、当業者が本開示を実践することを可能にするように、本開示の例証的実施例として提供される、図面を参照して詳細に説明される。留意すべきこととして、以下の図および実施例は、本開示の範囲を限定することを意味するものではない。本開示のある要素が、公知の構成要素(または方法またはプロセス)を使用して部分的または完全に実装され得る場合、本開示の理解のために必要なそのような公知の構成要素(または方法またはプロセス)のそれらの部分のみが、説明され、そのような公知の構成要素(または方法またはプロセス)の他の部分の詳細な説明は、本開示を曖昧にしないように、省略されるであろう。さらに、種々の実施形態は、例証として本明細書に参照される構成要素の現在および将来的公知の均等物を包含する。
【0063】
システム間で変調する、頭部搭載型視聴覚ディスプレイシステムとユーザの物理的接触は、AR/MRシステムから独立して実装され得るが、下記のいくつかの実施形態は、例証目的のみのために、AR/MRシステムに関連して説明される。本明細書に説明されるシステムを変調させる接触はまた、VRシステムでも同じ様式で使用され得る。
(問題およびソリューションの説明)
【0064】
マッピングは、多くのAR/MRシステム機能の基本であって、複数のコンポーネントAR/MRシステムのコンポーネントを横断したマップ同期は、コヒーレントかつ一貫したAR/MRシナリオのための安定マッピングを促進する。処理電力、メモリ、帯域幅、データソース、コンポーネント待ち時間、および複数のオペレーティングシステム、プロセッサ、およびアーキテクチャ等のシステム限界は、マッピングの間、全体的システム待ち時間をもたらし得、これは、AR/MRシステム性能に悪影響を及ぼし得る。
【0065】
例えば、いくつかのウェアラブルでは、追跡は、マップデータおよび関連処理のかなりの部分を消費し、マッピングは、生産されるマップデータの大部分をウェアラブル上で生成する。さらに、いくつかのウェアラブルは、マッピングのためのデータを提供する、正面に面した(「FOV」)カメラを有する。故に、待ち時間が重要となるジョブおよびFOVカメラデータを使用するジョブは、ウェアラブル上で起動されることが好ましい。しかしながら、ウェアラブルは、限定されたメモリおよび処理予算/電力を有する。例えば、多くのウェアラブルは、大実世界エリア/空間に関する疎点マップ全体を記憶することができない。また、多くのウェアラブルは、大規模な幾何学的最適化(例えば、グローバルバンドル調整、ループ閉鎖等)を実践的時間量において起動することができない。
【0066】
電源パックは、典型的には、ウェアラブルより多くのメモリ(SDカード等のある持続的メモリを含む)および処理電力を有する。故に、電源パックは、より多くのマップデータ(大実世界エリアに関する疎点マップデータと、限定される実世界エリアに関する稠密点マップデータとを含む)および処理電力へのアクセスを有し、大規模幾何学的最適化(例えば、グローバルバンドル調整、ループ閉鎖等)を起動する。電源パックは、稠密点マップデータを伴う最適化を起動するためにさえ十分な処理電力を有し得る。しかしながら、マップデータは、リンク(例えば、USB)を通してウェアラブルから電源パックに進行し得、更新されたマップは、リンクを通して電源パックからウェアラブルに進行し得る。USB等のリンクは、容認不可能なシステム待ち時間をもたらす、限定された帯域幅を有し得る。例えば、待ち時間に敏感なジョブ(例えば、頭部姿勢関連ジョブ)は、電源パックにおける処理を伴わずに、ウェアラブルで実施されることが好ましい。
【0067】
いくつかのAR/MRシステムはまた、クラウドベースの記憶装置および処理コンポーネントを含む。クラウドコンポーネントは、大量の持続的記憶および処理電力へのアクセスを有し得る。クラウドコンポーネントはまた、先行時間における異なるシステムまたは同一システムによって生産された同一実世界エリア/環境の疎および稠密点マップへのアクセスを有し得る。異なるシステムからのデータは、クラウド上にマップのメッシュとして記憶され、より大きいスケールの最適化を可能にし得る。故に、クラウドコンポーネントは、複数のセッションからの疎および稠密点マップデータを伴う、処理集約的である最適化を実施することができる。しかしながら、クラウドコンポーネントと電源パックおよびウェアラブルとの間のネットワーク接続は、常時、利用可能であるわけではない。故に、待ち時間に敏感なジョブ(例えば、頭部姿勢関連ジョブ)は、クラウドコンポーネントの関与を伴って実施されることが好ましい。いくつかの実施形態では、マッピングの第4の層が、クラウドコンポーネント層の上部に存在し得る。
【0068】
さらに、これらのAR/MRシステムコンポーネントは、異なるプラットフォーム、アーキテクチャ、および編成構造を伴う。例えば、これらのシステムコンポーネント(ウェアラブル、電源パック、クラウド)は、異なるプロセッサアーキテクチャ、メモリ階層、および記憶モデル(例えば、ウェアラブルのためのMyriad/Streaming Hybrid Architecture Vector Engine(「SHAVE」)、電源パックのためのNVidia/ARM、クラウドのためのPC)を有し得る。システムコンポーネントはまた、異なるフレームワーク環境/オペレーティングシステム(例えば、ウェアラブルのためのminotaur、電源パックのためのmalleus、クラウドのための種々のOS)を有し得る。さらに、システムコンポーネントは、異なるコードベース、解放プロセス等(例えば、特に、ウェアラブルと電源パックとの間対クラウド)を有し得る。これらのコンポーネント差異は、マップ同期をさらに複雑にし得る。
【0069】
本明細書に説明される実施形態は、処理結果を変更としてフォーマット化し、変更順序を利用することによって、全てのシステムコンポーネントのために並列処理を可能にする、マップデータ処理パイプラインを含む。本処理パイプラインは、システム待ち時間を低減させ、システムコンポーネントが、マップデータの連続処理を待機する間のシステムコンポーネント休止時間を最小限にしながら、最良合致ジョブを実施することを可能にする。実施形態はまた、独立して、転送可能かつ操作可能なマップサブユニットを含む、マップデータフォーマット/構造を含む。本マップデータフォーマット/構造は、ウェアラブルが、電源パックが実世界エリアの疎点マップを定義する複数のマップサブユニットを記憶する間、マップサブユニットのサブセットに作用することを可能にする。実施形態はさらに、所有権および状態情報を含む、帯域幅限定チャネルを横断してデータを転送するためのデータフォーマット/構造を含む。本マップデータフォーマット/構造は、そのような帯域幅限定チャネル(例えば、USB)を横断してより効率的データ転送を可能にする。
(例証的VR、AR、および/またはMRシステム)
【0070】
続く説明は、システムを変調させる接触が実践され得る、例証的VR、AR、および/またはMRシステムに関する。しかしながら、実施形態はまた、他のタイプのディスプレイシステム(他のタイプのVR、AR、および/またはMRシステムを含む)における用途にも適しており、したがって、実施形態は、本明細書に開示される例証的システムのみに限定されないことを理解されたい。
【0071】
VR、AR、および/またはMR仮想画像システム100の種々のコンポーネントは、
図1-4に描写される。仮想画像生成システム100は、エンドユーザ50によって装着される、フレーム構造102と、ディスプレイサブシステム110がエンドユーザ50の眼の正面に位置付けられるように、フレーム構造102によって担持される、ディスプレイサブシステム110と、スピーカ106がエンドユーザ50の外耳道に隣接して位置付けられる(随意に、別のスピーカ(図示せず)が、エンドユーザ50の他方の外耳道に隣接して位置付けられ、ステレオ/調節可能音制御を提供する)ように、フレーム構造102によって担持される、スピーカ106とを備える。ディスプレイサブシステム110は、エンドユーザ50の眼に、高レベルの画質および3次元知覚を伴い、かつ2次元コンテンツを提示することも可能である、物理的現実に対する拡張として快適に知覚され得る、光パターンを提示するように設計される。ディスプレイサブシステム110は、単一コヒーレント場面の知覚を提供する、フレームのシーケンスを、高周波数で提示する。
【0072】
図示される実施形態では、ディスプレイサブシステム110は、「光学シースルー」ディスプレイを採用し、それを通してユーザは、透明(または半透明)要素を介して、直接、実オブジェクトからの光を視認することができる。透明要素は、多くの場合、「コンバイナ」と称され、ディスプレイからの光を実世界のユーザのビューにわたって重畳する。この目的を達成するために、ディスプレイサブシステム110は、部分的に透明なディスプレイを備える。ディスプレイは、周囲環境からの直接光が、ディスプレイを通して、エンドユーザ50の眼に伝送されるように、エンドユーザ50の眼と周囲環境との間のエンドユーザの50視野内に位置付けられる。
【0073】
図示される実施形態では、画像投影アセンブリは、光を部分的に透明なディスプレイに提供し、それによって、周囲環境からの直接光と組み合わせられ、ディスプレイからユーザの眼50に伝送される。投影サブシステムは、光ファイバ走査ベースの投影デバイスであってもよく、ディスプレイは、その中に投影サブシステムからの走査される光が、例えば、無限遠(例えば、腕の長さ)より近い単一光学視認距離における画像、複数の離散光学視認距離または焦点平面における画像、および/または立体3Dオブジェクトを表すために複数の視認距離または焦点平面にスタックされた画像層を生産するように投入される、導波管ベースのディスプレイであってもよい。ライトフィールド内のこれらの層は、ヒト副視覚系に持続的に現れるようにともに十分に近接してスタックされてもよい(すなわち、1つの層が隣接する層の乱信号円錐域内にある)。加えて、または代替として、ピクチャ要素が、2つ以上の層を横断して混成され、それらの層が、より疎らにスタックされる(すなわち、1つの層が隣接する層の乱信号円錐域の外側にある)場合でも、ライトフィールド内の層間の遷移の知覚される連続性を増加させてもよい。ディスプレイサブシステム110は、単眼または両眼用であってもよい。
【0074】
仮想画像生成システム100はまた、エンドユーザ50の頭部54の位置および移動および/またはエンドユーザ50の眼位置および眼球間距離を検出するためにフレーム構造102に搭載される、1つ以上のセンサ(図示せず)を含んでもよい。そのようなセンサは、画像捕捉デバイス(カメラ等)、マイクロホン、慣性測定ユニット、加速度計、コンパス、GPSユニット、無線デバイス、および/またはジャイロスコープを含んでもよい。これらのセンサの多くは、その上にそれらが添着されるフレーム102が、ひいては、ユーザの頭部、眼、および耳に実質的に固定されるという仮定に基づいて動作する。
【0075】
仮想画像生成システム100はまた、ユーザ配向検出モジュールを含んでもよい。ユーザ配向モジュールは、エンドユーザ50の頭部54の瞬間位置を検出し(例えば、フレーム102に結合されるセンサを介して)、センサから受信された位置データに基づいて、エンドユーザ50の頭部54の位置を予測してもよい。エンドユーザ50の頭部54の瞬間位置を検出することは、エンドユーザ50が見ている、具体的実際のオブジェクトの決定を促進し、それによって、その実際のオブジェクトに関連して生成されるべき具体的仮想オブジェクトのインジケーションを提供し、その中に仮想オブジェクトが表示されるべき位置のインジケーションをさらに提供する。ユーザ配向モジュールはまた、センサから受信された追跡データに基づいて、エンドユーザ50の眼を追跡してもよい。
【0076】
仮想画像生成システム100はまた、多種多様な形態のいずれかをとり得る、制御サブシステムを含んでもよい。制御サブシステムは、いくつかのコントローラ、例えば、1つ以上のマイクロコントローラ、マイクロプロセッサまたは中央処理ユニット(CPU)、デジタル信号プロセッサ、グラフィック処理ユニット(GPU)、特定用途向け集積回路(ASIC)等の他の集積回路コントローラ、プログラマブルゲートアレイ(PGA)、例えば、フィールドPGA(FPGA)、および/またはプログラマブル論理コントローラ(PLU)を含む。
【0077】
仮想画像生成システム100の制御サブシステムは、中央処理ユニット(CPU)、グラフィック処理ユニット(GPU)、1つ以上のフレームバッファ、および3次元場面データを記憶するための3次元データベースを含んでもよい。CPUは、全体的動作を制御してもよい一方、GPUは、3次元データベース内に記憶される3次元データからフレームをレンダリングし(すなわち、3次元場面を2次元画像に変換し)、これらのフレームをフレームバッファ内に記憶してもよい。1つ以上の付加的集積回路は、フレームバッファの中へのフレームの読込および/またはそこからの読出およびディスプレイサブシステム110の画像投影アセンブリの動作を制御してもよい。
【0078】
仮想画像生成システム100の種々の処理コンポーネントは、分散型サブシステム内に物理的に含有されてもよい。例えば、
図1-4に図示されるように、仮想画像生成システム100は、有線導線または無線コネクティビティ136等によってディスプレイサブシステム110およびセンサに動作可能に結合される、ローカル処理およびデータモジュール130を含んでもよい。ローカル処理およびデータモジュール130は、フレーム構造102(
図1)に固定して取り付けられる、ヘルメットまたは帽子56(
図2)に固定して取り付けられる、エンドユーザ50の胴体58に除去可能に取り付けられる(
図3)、またはベルト結合式構成においてエンドユーザ50の腰部60に除去可能に取り付けられる(
図4)等、種々の構成において搭載されてもよい。仮想画像生成システム100はまた、これらの遠隔モジュール132、134が、相互に動作可能に結合され、ローカル処理およびデータモジュール130へのリソースとして利用可能であるように、有線導線または無線コネクティビティ138、140等によってローカル処理およびデータモジュール130に動作可能に結合される、遠隔処理モジュール132および遠隔データリポジトリ134を含んでもよい。
【0079】
ローカル処理およびデータモジュール130は、電力効率的プロセッサまたはコントローラおよびフラッシュメモリ等のデジタルメモリを備えてもよく、その両方とも、可能性として処理または読出後、ディスプレイサブシステム110への通過のために、センサから捕捉された、および/または遠隔処理モジュール132および/または遠隔データリポジトリ134を使用して入手および/または処理された、データの処理、キャッシュ、および記憶を補助するために利用されてもよい。遠隔処理モジュール132は、データおよび/または画像情報を分析および処理するように構成される、1つ以上の比較的に強力なプロセッサまたはコントローラを備えてもよい。遠隔データリポジトリ134は、比較的に大規模デジタルデータ記憶設備を備えてもよく、これは、インターネットまたは「クラウド」リソース構成における他のネットワーキング構成を通して利用可能であってもよい。いくつかの実施形態では、全てのデータは、記憶され、全ての算出は、ローカル処理およびデータモジュール130内で実施され、任意の遠隔モジュールからの完全に自律的使用を可能にする。
【0080】
上記に説明される種々のコンポーネント間の結合136、138、140は、ワイヤまたは光学連通を提供するための1つ以上の有線インターフェースまたはポート、または無線通信を提供するためのRF、マイクロ波、およびIR等を介した1つ以上の無線インターフェースまたはポートを含んでもよい。いくつかの実装では、全ての通信は、有線であってもよい一方、他の実装では、全ての通信は、無線であってもよい。なおもさらなる実装では、有線および無線通信の選択肢は、
図1-4に図示されるものと異なり得る。したがって、有線または無線通信の特定の選択肢は、限定と見なされるべきではない。
【0081】
いくつかの実施形態では、ユーザ配向モジュールは、ローカル処理およびデータモジュール130内に含有される一方、CPUおよびGPUは、遠隔処理モジュール内に含有される。代替実施形態では、CPU、GPU、またはその一部は、ローカル処理およびデータモジュール130内に含有されてもよい。3Dデータベースは、遠隔データリポジトリ134と関連付けられる、またはローカルで配置されることができる。
【0082】
いくつかのVR、AR、および/またはMRシステムは、個別の深度平面から生じるように現れる画像を生成するための深度平面情報を内蔵する、複数の体積位相ホログラム、表面レリーフホログラム、または光誘導光学要素を使用する。言い換えると、回折パターンまたは回折光学要素(「DOE」)が、コリメートされた光(略平面波面を伴う光ビーム)が、LOEに沿って実質的に全内部反射されるにつれて、複数の場所において回折パターンと交差し、ユーザの眼に向かって出射するように、光誘導光学要素(「LOE」、例えば、平面導波管)内に内蔵される、またはその上にインプリント/エンボス加工されてもよい。DOEは、特定の深度平面から生じるように現れるように、それを通してLOEから出射する光が輻輳されるように構成される。コリメートされた光は、光学集光レンズ(「集光器」)を使用して生成されてもよい。
【0083】
例えば、第1のLOEは、光学無限遠深度平面(0ジオプタ)から生じるように現れる、コリメートされた光を眼に送達するように構成されてもよい。別のLOEは、2メートルの距離(1/2ジオプタ)から生じるように現れる、コリメートされた光を送達するように構成されてもよい。さらに別のLOEは、1メートルの距離(1ジオプタ)から生じるように現れる、コリメートされた光を送達するように構成されてもよい。スタックされたLOEアセンブリを使用することによって、複数の深度平面が、作成され得、各LOEは、特定の深度平面から生じるように現れる、画像を表示するように構成されることを理解されたい。スタックは、任意の数のLOEを含んでもよいことを理解されたい。しかしながら、少なくともN個のスタックされたLOEが、N個の深度平面を生成するために要求される。さらに、N、2N、または3N個のスタックされたLOEが、RGBカラー画像をN個の深度平面に生成するために使用されてもよい。
【0084】
3-D仮想コンテンツをユーザに提示するために、VR、AR、および/またはMRシステムは、Z方向に(すなわち、ユーザの眼から離れるように直交して)種々の深度平面から生じるように現れるように、仮想コンテンツの画像をユーザの眼の中に投影する。言い換えると、仮想コンテンツは、XおよびY方向(すなわち、ユーザの眼の中心視軸に直交する2D平面)において変化し得るだけではなく、また、ユーザが、オブジェクトが、非常に近接して、または無限距離に、またはその間の任意の距離にあるように知覚し得るように、Z方向においても変化するように現れ得る。他の実施形態では、ユーザは、複数のオブジェクトを、同時に、異なる深度平面において知覚し得る。例えば、ユーザには、仮想ドラゴンが、無限遠から現れ、ユーザに向かって走って来るように見え得る。代替として、ユーザには、同時に、ユーザから3メートル離れた距離における仮想鳥と、ユーザから腕の長さ(約1メートル)における仮想コーヒーカップとが見え得る。
【0085】
多平面焦点システムは、画像をユーザの眼からZ方向における個別の固定距離に位置する複数の深度平面のいくつかまたは全て上に投影することによって、可変深度の知覚を作成する。ここで
図5を参照すると、多平面焦点システムは、フレームを固定された深度平面150(例えば、
図5に示される6つの深度平面150)に表示し得ることを理解されたい。MRシステムは、任意の数の深度平面150を含むことができるが、1つの例示的多平面焦点システムは、6つの固定された深度平面150をZ方向に有する。仮想コンテンツを6つの深度平面150のうちの1つ以上のものに生成する際、3-D知覚が、ユーザがユーザの眼から可変距離における1つ以上の仮想オブジェクトを知覚するように作成される。ヒトの眼は、遠く離れてあるように現れるオブジェクトより距離がより近いオブジェクトに敏感であることを前提として、より多くの深度平面150が、
図5に示されるように、眼のより近くに生成される。他の実施形態では、深度平面150は、相互から離れるように等距離に設置されてもよい。
【0086】
深度平面位置150は、メートル単位で測定される焦点距離の逆数に等しい屈折力の単位である、ジオプタ単位で測定されてもよい。例えば、いくつかの実施形態では、深度平面1は、1/3ジオプタ離れてもよく、深度平面2は、0.3ジオプタ離れてもよく、深度平面3は、0.2ジオプタ離れてもよく、深度平面4は、0.15ジオプタ離れてもよく、深度平面5は、0.1ジオプタ離れてもよく、深度平面6は、無限遠(すなわち、0ジオプタ離れる)を表し得る。他の実施形態は、深度平面150を他の距離/ジオプタに生成してもよいことを理解されたい。したがって、仮想コンテンツを方略的に設置された深度平面150に生成する際、ユーザは、仮想オブジェクトを3次元で知覚することが可能である。例えば、ユーザは、別の仮想オブジェクトが深度平面6における無限遠に現れる間、第1の仮想オブジェクトが深度平面1内に表示されるとき、それを近くにあると知覚し得る。代替として、仮想オブジェクトは、最初に、深度平面6に、次いで、深度平面5に、そして、仮想オブジェクトがユーザの非常に近く現れるまでそのように続くように表示されてもよい。上記の実施例は、例証目的のために有意に簡略化されていることを理解されたい。別の実施形態では、全6つの深度平面は、ユーザから離れるように特定の焦点距離上に集中されてもよい。例えば、表示されるべき仮想コンテンツが、ユーザから0.5メートル離れたコーヒーカップである場合、全6つの深度平面は、コーヒーカップの種々の断面において生成され、ユーザに、コーヒーカップの高粒度の3-Dビューを与え得る。
【0087】
いくつかの実施形態では、VR、AR、および/またはMRシステムは、多平面焦点システムとして機能し得る。言い換えると、全6つのLOEは、光源が画像情報をLOE1、次いで、LOE2、次いで、LOE3等に急速に伝達する状態において、6つの固定された深度平面から生じるように現れる画像が、高速で連続して生成されるように、同時に照明されてもよい。例えば、光学無限遠における空の画像を備える、所望の画像の一部が、時間1において投入されてもよく、光のコリメーションを留保するLOE(例えば、
図5からの深度平面6)が、利用されてもよい。次いで、より近い木の枝の画像が、時間2において投入されてもよく、10メートル離れて深度平面から生じるように現れる画像を作成するように構成される、LOE(例えば、
図5からの深度平面5)が、利用されてもよい。次いで、ペンの画像が、時間3において投入されてもよく、1メートル離れて深度平面から生じるように現れる画像を作成するように構成される、LOEが、利用されてもよい。本タイプのパラダイムは、ユーザの眼および脳(例えば、視覚野)が入力を同一画像の全ての部分であると知覚するように、高速時間シーケンシャル(例えば、360Hz)方式で繰り返されることができる。
【0088】
VR、AR、および/またはMRシステムは、Z軸(すなわち、深度平面)に沿って種々の場所から生じるように現れ、3-D体験/シナリオのための画像を生成する、画像を投影してもよい(すなわち、光ビームを発散または収束させることによって)。本願で使用されるように、光ビームは、限定ではないが、光源から照射される光エネルギー(を含む、可視および不可視光エネルギー)の指向性投影を含む。種々の深度平面から生じるように現れる画像を生成することは、その画像のためのユーザの眼の輻輳・開散運動(vergence)および遠近調節(accommodation)に一致し、輻輳・開散運動-遠近調節競合を最小限にまたは排除する。
(例示的パス可能世界モデル)
【0089】
図6は、いくつかの実施形態による、パス可能世界モデル2000のコンポーネントを図示する。ユーザ2001が、環境を通して歩くにつれて、ユーザの個々のARシステム2010は、情報(例えば、画像、場所情報、位置、および配向情報等)を捕捉し、姿勢がタグ付けされた画像を通して情報を保存する。例証される実施形態では、オブジェクト2020(テーブルに類似する)の画像が、撮影されてもよく、マップ点2004は、捕捉された画像に基づいて収集されてもよい。これは、環境についての情報を捕捉した複数のキーフレーム(例えば、カメラ)2002によって示されるように、パス可能世界モデルのコアを形成する。
【0090】
図6に示されるように、任意の所与の時間点における空間についての情報を捕捉する、複数のキーフレーム2002が存在してもよい。例えば、キーフレームは、特定の視点から情報を捕捉する、別のユーザのARシステムであってもよい。別のキーフレームは、定常視点を通して画像および点2004を捕捉する、部屋ベースのカメラ/センサシステムであってもよい。複数の視点からの画像および点を三角測量することによって、3D空間内の実オブジェクトの位置および配向が、決定されてもよい。
【0091】
いくつかの実施形態では、パス可能世界モデル2008は、ラスタ画像、点および記述子クラウド、および多角形/幾何学的定義(本明細書では、パラメータ幾何学形状と称される)の組み合わせである。本情報の全ては、クラウドにアップロードされ、そこから読み出され、その区分は、ユーザが歩いたであろう特定の空間に対応する。
図6に示されるように、パス可能世界モデルはまた、クラウドまたはユーザの個々のシステム2010上で機能し、複数のユーザの種々のキーフレームを通して捕捉された点および姿勢がタグ付けされた画像に基づいて、環境内のオブジェクトを認識する、多くのオブジェクト認識器2012を含有する。本質的に、複数のキーフレーム2002を通して物理世界についての情報を継続して捕捉することによって、パス可能世界は、常時、成長し、実世界の既存の物理オブジェクトに関係する仮想コンテンツをレンダリングする方法を決定するために、検討されてもよい(継続的にまたは必要に応じて)。情報をユーザの環境から収集することによって、パス可能世界2006の断片が、構築/拡張され、同時にまたは将来的に、1人以上のARユーザに「パス」されてもよい。
【0092】
非同期通信が、ユーザの個別の個々のARシステムとクラウドベースのコンピュータ(例えば、サーバコンピュータ)との間に確立される。言い換えると、ユーザの個々のARシステムは、常時、ユーザの周囲についての情報をクラウドに更新し、パス可能世界についてクラウドから情報を受信する。したがって、各ARユーザが、画像を捕捉し、捕捉された画像に基づいて、オブジェクトを認識する必要なく、非同期システムを有することによって、システムがより効率的となることが可能となる。世界のその部分についてすでに存在する情報は、自動的に、個々のARシステムに通信される一方、新しい情報は、クラウドに更新される。パス可能世界モデルは、クラウドまたは他の形態のネットワーキングコンピューティングまたはピアツーピアシステム上に存在するだけではなく、また、ユーザの個々のARシステム上の両方に存在することを理解されたい。
【0093】
いくつかの実施形態では、ARシステムは、ローカル構成要素(例えば、電源パック等の計算構成要素130)および遠隔構成要素(例えば、クラウドベースのコンピュータ132)のための異なるレベルの分解能を採用してもよい。これは、遠隔構成要素(例えば、クラウドサーバ上に常駐するリソース)が、典型的には、ローカル構成要素より計算能力が高いためである。クラウドベースのコンピュータは、多くの異なる個々のARシステムおよび/または1つ以上の空間または部屋ベースのセンサシステムによって収集されたデータを取り上げ、本情報を利用して、パス可能世界モデルに追加してもよい。クラウドベースのコンピュータは、最良(例えば、最も有用な)情報のみを持続的世界モデルの中に集約してもよい。言い換えると、冗長情報および/または準最適品質情報は、システムの品質および/または性能を低下させないように、タイムリーに廃棄され得る。
【0094】
図10は、いくつかの実施形態による、パス可能世界モデルと相互作用する例示的方法2100を図示する。2102では、ユーザの個々のARシステムは、世界内のユーザの場所および配向を検出してもよい。いくつかの実施形態では、場所は、以下にさらに詳細に説明されるであろうように、システムのトポロジマップによって導出されてもよい。いくつかの実施形態では、場所は、GPSまたは任意の他の位置特定ツールによって導出されてもよい。パス可能世界は、常時、個々のARシステムによってアクセスされてもよいことを理解されたい。
【0095】
別の実施形態では(図示せず)、ユーザは、別のユーザの空間へのアクセスを要求し、他のユーザに対応するパス可能世界のその区分および関連付けられたパラメータ情報にアクセスするようにシステムを促してもよい。したがって、パス可能世界のための多くのトリガが存在し得る。しかしながら、最も単純レベルでは、パス可能世界は、常時、複数のユーザシステムによって更新およびアクセスされ、それによって、常時、情報をクラウドに追加し、そこから受信することを理解されたい。
【0096】
前述の実施例に従って、既知のユーザの場所に基づいて、2104では、システムは、ユーザの位置および意図される方向の両方を通信する、ユーザの周囲の物理面積を示す半径を引き出してもよい。次に、2106では、システムは、ユーザの予期される位置に基づいて、パス可能世界の断片を読み出してもよい。いくつかの実施形態では、パス可能世界の断片は、以前のキーフレームを通して取得された空間の幾何学的マップと、クラウド内に記憶された捕捉された画像およびデータとからの情報を含有してもよい。2108では、ARシステムは、ユーザの環境からの情報をパス可能世界モデルの中にアップロードする。2110では、アップロードされた情報に基づいて、ARシステムは、ユーザの位置と関連付けられたパス可能世界をユーザの個々のARシステムにレンダリングする。
【0097】
本情報は、仮想コンテンツが、コヒーレント様式でユーザの実周囲と有意義に相互作用することを可能にする。例えば、仮想「モンスタ」が、実世界の特定の建物から生じるようにレンダリングされてもよい。または、別の実施例では、ユーザは、友人(同様に、ARシステムを装着している)が同一物理座標内で仮想オブジェクトを見つけるように、実世界の物理座標に関係する仮想オブジェクトを残してもよい。そのような能力(およびより多くのもの)を可能にするために、ARシステムが、常時、パス可能世界にアクセスし、情報を読み出し、アップロードすることが重要である。パス可能世界は、物理空間の実座標に関係する仮想および/またはデジタルコンテンツをレンダリングする際に必ず利用される、実空間の持続的デジタル表現を含有することを理解されたい。ARシステムは、実世界および/または仮想世界の座標を維持し得ることを理解されたい。いくつかの実施形態では、第三者は、実世界のマップ(例えば、座標)を維持してもよく、ARシステムは、世界の実オブジェクトに関係する仮想コンテンツをレンダリングするために、マップを検討し、1つ以上のパラメータを決定してもよい。
【0098】
パス可能世界モデル自体は、ユーザに表示されるコンテンツをレンダリングしないことを理解されたい。むしろ、これは、クラウド内の実世界の持続的デジタル表現を動的に読み出し、更新する、高レベル概念である。いくつかの実施形態では、導出された幾何学的情報は、ゲームエンジン上にロードされ、これは、次いで、パス可能世界と関連付けられたコンテンツをレンダリングする。したがって、ユーザが特定の空間内に居るかどうかにかかわらず、その特定の空間は、デジタル表現を任意のユーザによってアクセスされ得るクラウド内に有する。パス可能世界の本断片は、空間の物理幾何学形状および空間の画像についての情報、空間を占有する種々のアバタについての情報、仮想オブジェクトについての情報、および他の様々な情報を含有してもよい。
【0099】
本明細書にさらに詳細に説明されるように、1つ以上のオブジェクト認識器は、パス可能世界モデルを検証または「クロール」し、パラメータ幾何学形状に属する点をタグ付けしてもよい。パラメータ幾何学形状、点、および記述子は、パス可能世界モデルの中にパッケージ化され、物理世界または環境の一部に対応する情報の短待ち時間パスまたは通信を可能にしてもよい。いくつかの実施形態では、ARシステムは、2つの階層構造を実装することができ、パス可能世界モデルは、第1の階層において、高速後処理を可能にするが、次いで、その枠組みの中には、第2の階層(例えば、高速特徴)がある。いくつかの実施形態では、第2の階層構造は、フレーム毎ベースの3次元(3D)特徴マッピングを行うことによって、分解能を増加させることができる。
(トポロジマップ)
【0100】
パス可能世界モデルの一体部分は、実世界の非常に細部の面積のマップを作成することである。例えば、物理オブジェクトに関係する仮想コンテンツをレンダリングするために、非常に詳細な位置特定が、要求される。そのような位置特定は、単に、GPSまたは従来の場所検出技法を通して達成されない場合がある。例えば、ARシステムは、ユーザが居る物理場所の座標のみを要求するのではなく、例えば、ユーザが位置する建物の部屋を正確に把握する必要があり得る。本情報に基づいて、ARシステムは、その部屋に対するデータ(例えば、部屋内の実オブジェクトの具体的幾何学形状、部屋に対するマップ点、部屋の幾何学的情報等)を読み出し、識別された部屋の実オブジェクトに関係する仮想コンテンツを適切に表示してもよい。しかしながら、同時に、本精密な粒度の細かい位置特定は、あまりに多くのリソースが不必要に消費されないように、費用効果的様式で行われなければならない。
【0101】
この目的を達成するために、ARシステムは、GPSまたは抽出された点および姿勢タグ付けされた画像から作成された詳細な幾何学的マップ(例えば、幾何学的点は、非常に具体的であり、故に、最もコストがかかり得る)を読み出す代わりに、位置特定目的のために、トポロジマップを使用してもよい。いくつかの実施形態では、トポロジマップは、クラウドから容易にアクセス可能であって、空間のフィンガプリントおよび種々の空間間の関係のみを提示する、実世界内の物理空間の簡略化された表現である。トポロジマップについてのさらなる詳細は、以下にさらに提供されるであろう。
【0102】
いくつかの実施形態では、ARシステムは、トポロジマップをパス可能世界モデル上に層化し、例えば、ノードを位置特定してもよい。トポロジマップは、種々のタイプの情報、例えば、空間内の点クラウド、画像、オブジェクト、全地球測位システム(GPS)データ、Wi-Fiデータ、ヒストグラム(例えば、部屋のカラーヒストグラム)、受信された信号強度(RSS)データ等をパス可能世界モデル上に層化することができる。これは、情報の種々の層(例えば、より高レベル層と相互作用するための情報のより詳細な層)が、容易に読み出され得るように、相互に関連して設置されることを可能にする。本情報は、フィンガプリントデータと見なされ得る。言い換えると、場所(例えば、特定の部屋)に一意であるために十分に具体的に設計される。
【0103】
前述のように、種々のユーザ間で確実にパスされ得る完全仮想世界を作成するために、ARシステムは、異なるタイプのユーザの周囲についての情報(例えば、マップ点、特徴、姿勢タグ付けされた画像、場面内のオブジェクト等)を捕捉する。本情報は、必要に応じて読み出され得るように、処理され、クラウド内に記憶される。前述のように、パス可能世界モデルは、ラスタ画像、点および記述子クラウド、および多角形/幾何学的定義(本明細書では、パラメータ幾何学形状と称される)の組み合わせである。したがって、ユーザの個々のARシステムを通して捕捉された非常に多くの情報が、仮想世界を作成する際に、高品質および正確度を可能にすることを理解されたい。
【0104】
言い換えると、種々のARシステム(例えば、ユーザ特有の頭部搭載式システム、部屋ベースのセンサシステム等)は、常時、個別のARシステムの即時環境に対応するデータを捕捉しているため、任意の時点における実世界についての非常に詳細かつ正確な情報が、高度な確実性を伴って把握され得る。本量の情報は、位置特定目的のために、ARアプリケーションのホストのために非常に有用であるが、ユーザに最も関連するパス可能世界の断片を見つけるために、その多くの情報を通してソートすることは、非常に非効率的であって、貴重な処理能力を犠牲にする。
【0105】
この目的を達成するために、ARシステムは、本質的に、特定の場面または特定の箇所についてのあまり粒度の細かくない情報を提供する、トポロジマップを作成する。いくつかの実施形態では、トポロジマップは、全地球測位システム(GPS)データ、Wi-Fiデータ、ヒストグラム(例えば、部屋のカラーヒストグラム)、受信された信号強度(RSS)データ等を通して導出されてもよい。例えば、トポロジマップは、種々の部屋/面積/空間のヒストグラム(例えば、カラーヒストグラム)によって作成され、トポロジマップ上のノードに縮小されてもよい。例えば、ユーザが部屋または空間の中に歩いていくと、ARシステムは、単一画像(または他の情報)を撮影し、画像のカラーヒストグラムを構築してもよい。あるレベルでは、特定の空間のヒストグラムは、経時的に大部分が一定であろうことを理解されたい(例えば、部屋の壁の色、オブジェクトの色等)。言い換えると、各部屋または空間は、任意の他の部屋または箇所と異なる、別個のシグネチャを有する。本一意のヒストグラムは、他の空間/面積の他のヒストグラムと比較され、識別されてもよい。本時点で、ARシステムは、ユーザが居る部屋を把握しており、残りの粒度の細かい情報は、容易にアクセスされ、ダウンロードされてもよい。
【0106】
したがって、ヒストグラムは、種々のカメラ(キーフレーム)によって捕捉された全特徴および点についての特定の情報を含有しないであろうが、システムは、ヒストグラムに基づいて、ユーザが居る場所を直ちに検出し、次いで、その特定の部屋または箇所と関連付けられた全てのより特定の幾何学的情報を読み出し得る。言い換えると、そのパス可能世界モデルを包含する、膨大な量の幾何学的およびパラメータ情報を通してソートするのではなく、トポロジマップは、ARユーザを位置特定するための迅速かつ効率的方法を可能にする。位置特定に基づいて、ARシステムは、識別された場所に最も関連する、キーフレームおよび点を読み出す。例えば、システムは、ユーザが建物の会議室に居ることを決定した後、システムは、次いで、クラウド内に記憶された全ての幾何学的情報を通して検索するのではなく、会議室と関連付けられた全てのキーフレームおよび点を読み出してもよい。
【0107】
ここで
図8を参照すると、トポロジマップ4300の例示的実施形態が、提示される。前述のように、トポロジマップ4300は、ノード4302およびノード4302間の接続4304(例えば、接続線によって表される)のコレクションであり得る。各ノード4302は、別個のシグネチャまたはフィンガプリント(例えば、GPS情報、カラーヒストグラムまたは他のヒストグラム、Wi-Fiデータ、RSSデータ等)を有する、特定の場所(例えば、オフィス建物の会議室)を表し、線は、それらの間の接続を表し得る。接続は、地理的接続に関係しなくてもよく、むしろ、単に、共有デバイスまたは共有ユーザであってもよいことを理解されたい。例えば、第1のユーザは、第1のノードから第2のノードに歩いていってもよい。本関係は、ノード間の接続を通して表されてもよい。ARユーザの数が増加するにつれて、ノードおよびノード間の接続もまた、比例して増加し、種々の場所についてのより精密な情報を提供するであろう。
【0108】
いったんARシステムが、トポロジマップのノードを識別すると、システムは、次いで、ノードに関する幾何学的情報の集合を読み出し、その空間の実オブジェクトに関係する仮想コンテンツの表示方法/場所を決定してもよい。したがって、トポロジマップを幾何学的マップ上に層化することは、特に、位置特定および関連情報のみをクラウドから効率的に読み出すことに有用である。
【0109】
いくつかの実施形態では、ARシステムは、第1および第2の姿勢タグ付けされた画像として、グラフ理論的文脈において、同一場面の一部の個別のカメラによって捕捉された2つの画像を表すことができる。本文脈におけるカメラは、異なる場面の画像を撮影する単一カメラを指し得る、または2つの異なるカメラであってもよいことを理解されたい。例えば、カメラの両方の視野内にある点であり得る、姿勢タグ付けされた画像間には、ある接続強度が存在する。いくつかの実施形態では、クラウドベースのコンピュータは、そのようなグラフ(例えば、
図8のものに類似する幾何学的世界のトポロジ表現)を構築してもよい。グラフ内のノードおよびエッジの総数は、画像内の点の総数よりはるかに小さい。
【0110】
より高いレベルの抽象化では、ARシステムによって監視される他の情報が、ともにハッシュ化されることができる。例えば、クラウドベースのコンピュータは、全地球測位システム(GPS)場所情報、Wi-Fi場所情報(例えば、信号強度)、物理空間のカラーヒストグラム、および/またはユーザの周囲の物理オブジェクトについての情報のうちの1つ以上のものをともにハッシュ化してもよい。より多くのデータ点が存在するほど、コンピュータは、統計的に、その空間に対して一意の識別子を有するであろう可能性が高い。この場合、空間は、統計的に定義された概念である。
【0111】
実施例として、オフィスは、例えば、多数の点および二十数枚の姿勢タグ付けされた画像として表される、空間であってもよい。同一空間は、容易にハッシュ化され得る、ある数のノード(例えば、5、25、100、1000等)のみを有するグラフとして、トポロジ的に表されてもよい。グラフ理論は、例えば、2つの空間間のアルゴリズム的に最短の経路として、接続性の表現を可能にする。
【0112】
したがって、システムは、幾何学形状を暗黙的トポロジを有する姿勢タグ付けされた画像に変換することによって、具体的幾何学形状を抽象化する。システムは、情報の他の断片、例えば、カラーヒストグラムプロファイルおよびWi-Fi信号強度を追加することによって、抽象化レベルをより高くする。これは、システムが、場所と関連付けられた幾何学形状の全てを理解または処理する必要なく、ユーザの実際の実世界場所を識別することをより容易にする。
【0113】
図9は、トポロジマップを構築する例示的方法2400を図示する。最初に、2402では、ユーザの個々のARシステムは、特定の場所の第1の視点から画像を捕捉してもよい(例えば、ユーザが建物の部屋の中に歩いていき、画像が、その視点から捕捉される)。2404では、カラーヒストグラムが、捕捉された画像に基づいて生成されてもよい。前述で述べられたように、システムは、任意の他のタイプの識別情報(例えば、Wi-Fiデータ、RSS情報、GPSデータ、窓の数等)を使用してもよいが、カラーヒストグラムが、例証目的のために、本実施例では使用される。
【0114】
次に、2406では、システムは、カラーヒストグラムをクラウド内に記憶されたカラーヒストグラムのデータベースと比較することによって、ユーザの場所を識別するための検索を起動する。2410では、カラーヒストグラムがクラウド内に記憶された既存のカラーヒストグラムと一致するかどうかを決定するための決定が行われる。カラーヒストグラムが、カラーヒストグラムのデータベースの任意のカラーヒストグラムと一致しない場合、作製されたトポロジ内にノードとして記憶され得る(2414)。カラーヒストグラムが、データベースの既存のカラーヒストグラムに一致する場合、クラウド内にノードとして記憶される(2412)。カラーヒストグラムが、データベース内の既存のカラーヒストグラムと一致する場合、場所が、識別され、適切な幾何学的情報が、個々のARシステムに提供される。
【0115】
同一実施例を継続すると、ユーザは、別の部屋または別の場所の中に歩いていき得、そこで、ユーザの個々のARシステムが、別の写真を撮影し、他の場所の別のカラーヒストグラムを生成する。カラーヒストグラムが、以前のカラーヒストグラムまたは任意の他のカラーヒストグラムと同一である場合、ARシステムは、ユーザの場所を識別する。カラーヒストグラムが、記憶されたヒストグラムと同一ではない場合、別のノードが、トポロジマップ上に作成される。加えて、第1のノードおよび第2のノードは、同一ユーザ(または同一カメラ/同一の個々のユーザシステム)によって撮影されたため、2つのノードは、トポロジマップ内で接続される。
【0116】
位置特定の補助に加え、トポロジマップはまた、幾何学的マップ内の誤差および/または逸失情報を改良/修復するために使用されてもよい。いくつかの実施形態では、トポロジマップは、特定の箇所の幾何学的マップまたは幾何学的構成内でループ閉鎖ストレスを見つけるために使用されてもよい。前述のように、任意の所与の場所または空間に対して、1つ以上のARシステムによって撮影された画像(1人のユーザの個々のARシステムまたは複数のユーザのARシステムによって捕捉された複数の視野画像)は、特定の空間の多数のマップ点をもたらす。例えば、単一部屋は、種々のカメラ(または種々の位置に移動する1つのカメラ)の複数の視点を通して捕捉された数千のマップ点に対応し得る。
【0117】
ARシステムは、前述のように、マップ点を利用して、オブジェクトを認識し(オブジェクト認識器を通して)、実世界の種々のオブジェクトの幾何学形状のより包括的写真を記憶するために、パス可能世界モデルに追加する。いくつかの実施形態では、種々のキーフレームから導出されるマップ点は、画像を捕捉したカメラの姿勢および配向を三角測量するために使用されてもよい。言い換えると、収集されたマップ点は、画像を捕捉するキーフレーム(例えば、カメラ)の姿勢(例えば、位置および配向)を推定するために使用されてもよい。
【0118】
しかしながら、多数のマップ点およびキーフレームを前提として、マップ点に基づいて、キーフレーム位置の本計算内にいくつかの誤差(例えば、ストレス)が必ず存在することを理解されたい。これらのストレスを考慮するために、ARシステムは、バンドル調整を行ってもよい。バンドル調整は、マップ点およびキーフレームの精緻化または最適化を可能にし、幾何学的マップ内のストレスを最小限にする。
【0119】
例えば、
図10に図示されるように、例示的幾何学的マップが、提示される。
図10に示されるように、幾何学的マップは、全て相互に接続される、キーフレーム2502の集合であってもよい。キーフレーム2502は、種々のマップ点が幾何学的マップのために導出される、視点を表してもよい。例証される実施形態では、幾何学的マップの各ノードは、キーフレーム(例えば、カメラ)を表し、種々のキーフレームは、接続線2504を通して相互に接続される。
【0120】
例証される実施形態では、異なるキーフレーム間の接続の強度は、接続線2504の太さによって表される。例えば、
図10に示されるように、ノード2502aと2502bとの間の接続線は、ノード2502aとノード2502fとの間の接続線と比較して、より太い接続線2504として描写される。ノード2502aとノード2502dとの間の接続線はまた、2502bとノード2502dとの間の接続線より太くなるように描写される。いくつかの実施形態では、接続線の太さは、それらの間で共有される特徴またはマップ点の数を表す。例えば、第1のキーフレームおよび第2のキーフレームが、ともに近接する場合、それらは、多数のマップ点(例えば、ノード2502aおよびノード2502b)を共有し得、したがって、より太い接続線を用いて表され得る。当然ながら、幾何学的マップを表す他の方法も同様に、使用されてもよいことを理解されたい。
【0121】
例えば、線の強度は、別の実施形態では、キーフレーム間の地理的近接に基づいてもよい。したがって、
図10に示されるように、各幾何学的マップは、多数のキーフレーム2502および相互へのその接続を表す。ここで、ストレスが幾何学的マップの特定の点内で識別されたと仮定すると、バンドル調整が、ストレスをストレス2506の識別された点から半径方向に押し出すことによって、ストレスを軽減するために行われてもよい。ストレスは、以下にさらに詳細に説明されるであろうように、ストレス点から伝搬する波2508(例えば、n=1、n=2等)内で半径方向に押し出される。
【0122】
以下の説明は、波伝搬バンドル調整を行う例示的方法を図示する。以下の全ての実施例は、波伝搬バンドル調整のみを参照し、他のタイプのバンドル調整も同様に、他の実施形態では、使用されてもよいことを理解されたい。最初に、特定のストレス点が、識別される。
図10の例証される実施形態では、中心(ノード2502a)を識別されたストレス点と見なす。例えば、システムは、幾何学的マップの特定の点におけるストレスが特に大きい(例えば、残余誤差等)ことを決定してもよい。ストレスは、2つの理由のうちの1つに基づいて識別されてもよい。1つ目は、最大残余誤差は、幾何学的マップに対して定義され得る。特定の点における残余誤差が、所定の最大残余誤差を上回る場合、バンドル調整が、開始されてもよい。2つ目は、バンドル調整は、以下にさらに説明されるであろうように、ループ閉鎖ストレスの場合に(トポロジマップがマップ点の不整合を示すとき)開始され得る。
【0123】
ストレスが識別されると、ARシステムは、ストレス点から開始して、それを特定のストレス点を囲繞するノードのネットワークを通して半径方向に伝搬させ、誤差を均一に分布させる。例えば、例証される実施形態では、バンドル調整は、誤差を識別されたストレス点の周囲のn=1(識別されたストレス点であるノード2502aから1度の分離)まで分布させてもよい。例証される実施形態では、ノード2502b-2502gは全て、ストレス点ノード2502aの周囲のn=1波の一部である。
【0124】
ある場合には、これは、十分であり得る。他の実施形態では、ARシステムは、ストレスをさらに伝搬させ、ストレスが均一に分布されるまで、ストレスが半径方向にますます押し出されるように、ストレスをn=2(識別されたストレス点であるノード2502aから2度の分離)またはn=3(識別されたストレス点であるノード2502aから3度の分離)まで押し出してもよい。したがって、バンドル調整を行うことは、幾何学的マップ内のストレスを低減させる重要な方法である。理想的には、ストレスは、より優れた結果のために、n=2またはn=3まで押し出される。
【0125】
いくつかの実施形態では、波は、より小さい漸増で伝搬されてもよい。例えば、波がストレス点の周囲のn=2まで押し出された後、バンドル調整が、n=3とn=2との間の面積内で行われ、半径方向に伝搬されることができる。波漸増を制御することによって、本反復波伝搬バンドル調整プロセスは、大量のデータ上で起動され、システム上のストレスを低減させることができる。随意の実施形態では、各波は一意であるため、波(例えば、バンドル調整された)によって触れられたノードは、波が幾何学的マップの調節された区分上に再伝搬しないように着色されてもよい。別の実施形態では、ノードは、同時波が幾何学的マップ内の異なる点から伝搬/生じ得るように着色されてもよい。
【0126】
前述のように、トポロジマップをキーフレームおよびマップ点の幾何学的マップ上に層化することは、特に、ループ閉鎖ストレスを見つける際に重要であり得る。ループ閉鎖ストレスは、整合されるべきであるが、不整合である、異なる時間に捕捉されたマップ点間の相違を指す。例えば、ユーザがブロックの周囲を歩き、同一箇所に戻る場合、第1のキーフレームの位置から導出されたマップ点および収集されたマップ点から外挿される最後のキーフレームの位置から導出されたマップ点は、理想的には、同じであるはずである。しかしながら、異なるマップ点に基づく姿勢(キーフレームの位置)の計算に固有のストレスを前提として、多くの場合、誤差が存在し、システムは、第1のキーフレームから推定されるキー点が最後のキーフレームから導出されるマップ点と幾何学的に整合されないため、ユーザが同一位置に戻ったことを認識しない。これは、ループ閉鎖ストレスの実施例であり得る。
【0127】
この目的を達成するために、トポロジマップが、幾何学的マップ内のループ閉鎖ストレスを見つけるために使用されてもよい。以前の実施例に戻って参照すると、トポロジマップと幾何学的マップの併用は、トポロジマップが、ユーザが開始点に戻ったことを示し得るため(例えば、カラーヒストグラムに基づいて)、ARシステムが幾何学的マップ内のループ閉鎖ストレスを認識することを可能にする。例えば、
図11の層化されたマップ2600を参照すると、トポロジマップのノード(例えば、2604aおよび2604b)は、幾何学的マップのノード(例えば、2602a-2602f)の上部に層化される。
図11に示されるように、トポロジマップは、幾何学的マップの上部に設置されると、キーフレームB(ノード2602g)がキーフレームA(ノード2602a)と同一であることを示唆し得る。これに基づいて、ループ閉鎖ストレスは、検出され得、システムは、キーフレームAおよびBが同一ノード内でともにより近接すべきであることを検出し、システムは、次いで、バンドル調整を行ってもよい。したがって、ループ閉鎖ストレスを識別したことによって、ARシステムは、次いで、前述のもの等のバンドル調整技法を使用して、バンドル調整を識別されたストレス点に行ってもよい。
【0128】
トポロジマップおよび幾何学的マップの層化に基づいてバンドル調整を行うことは、システムが、システム内の全てのキーフレームを読み出す代わりに、バンドル調整が行われる必要があるキーフレームのみを読み出すことを確実にすることを理解されたい。例えば、ARシステムが、トポロジマップに基づいて、ループ閉鎖ストレスが存在することを識別する場合、システムは、単に、トポロジマップのその特定のノードまたは複数のノードと関連付けられたキーフレームを読み出し、幾何学的マップの全てのキーフレームではなく、それらのキーフレームのみにバンドル調整を行い得る。再び、これは、システムが、効率的となり、システムに不必要に負担をかけ得る、不必要情報を読み出すことをさせないことを可能にする。
【0129】
ここで
図12を参照すると、トポロジマップに基づいてループ閉鎖ストレスを補正するための例示的方法2700が、説明される。2702では、システムは、幾何学的マップの上部に層化されたトポロジマップに基づいて、ループ閉鎖ストレスを識別してもよい。いったんループ閉鎖ストレスが識別されると、2704では、システムは、ループ閉鎖ストレスが生じたトポロジマップのノードと関連付けられたキーフレームの集合を読み出してもよい。トポロジマップのそのノードのキーフレームを読み出した後、システムは、2706において、バンドル調整を幾何学的マップ内のその点で開始してもよい。2708では、ストレスは、
図10に示される技法と同様に、識別されたストレス点から伝搬され、n=1(次いで、n=2、n=3等)まで波内に半径方向に分布される。
(マッピング)
【0130】
仮想世界をマッピングする際、実世界内の全ての特徴および点を把握し、実世界に関係する仮想オブジェクトを正確に描写することが重要である。この目的を達成するために、前述のように、種々の頭部装着式ARシステムから捕捉されたマップ点は、実世界の種々の点および特徴についての情報を伝達する新しい写真を追加することによって、常時、パス可能世界モデルに追加される。点および特徴に基づいて、前述のように、また、キーフレーム(例えば、カメラ等)の姿勢および位置を外挿することができる。これは、ARシステムが特徴(2D点)およびマップ点(3D点)の集合を収集することを可能にするが、また、新しい特徴およびマップ点を見つけ、より正確なバージョンのパス可能世界をレンダリングすることが重要となり得る。
【0131】
新しいマップ点および/または特徴を見つける方法の1つは、1つの画像の特徴を別の画像に対して比較することであり得る。各特徴は、それに結び付けられる標識または特徴記述子を有し得る(例えば、色、識別子等)。1つの写真内の特徴の標識と別の写真の比較は、環境内の自然特徴を一意に識別する方法の1つであり得る。例えば、それぞれ、約500個の特徴を捕捉する、2つのキーフレームが存在する場合、1つのキーフレームの特徴と他のキーフレームを比較することは、新しいマップ点を決定するのに役立ち得る。しかしながら、これは、2つのみのキーフレームが存在するときに実行可能な解決策であり得るが、それぞれ、数百万個の点を捕捉する、複数のキーフレームが存在するとき、多くの処理パワーを消耗するという、非常に大きな検索問題となる。言い換えると、M個のキーフレームが存在し、それぞれ、N個の不一致特徴を有する場合、新しい特徴の検索は、MN2(O(MN2))の演算を伴う。残念ながら、これは、非常に大きな検索動作である。
【0132】
そのような大きな検索動作を回避する、新しい点を見つけるアプローチの1つは、検索ではなく、レンダリングによるものである。言い換えると、M個のキーフレームの位置が既知であって、そのそれぞれがN個の点を有すると仮定すると、ARシステムは、M個のキーフレームのN個の特徴からの線(または円錐)を投影し、種々の2D点の3D位置を三角測量してもよい。ここで
図13を参照すると、本特定の実施例では、6個のキーフレーム2802が存在し、線または光線が、6個のキーフレームから個別のキーフレームから導出される点2804にレンダリングされる(グラフィックカードを使用して)。いくつかの実施形態では、新しい3Dマップ点が、レンダリングされた線の交差点に基づいて、決定されてもよい。言い換えると、2つのレンダリングされた線が交差するとき、3D空間内のその特定のマップ点のピクセル座標は、1または0の代わりに、2であり得る。したがって、特定の点における線の交差点が大きい数であるほど、3D空間内の特定の特徴に対応するマップ点が存在する可能性がより高くなる。いくつかの実施形態では、
図13に示されるような本交差点アプローチは、3D空間内の新しいマップ点を見つけるために使用されてもよい。
【0133】
最適化目的のために、キーフレームから線をレンダリングするのではなく、三角錐が、代わりに、より正確な結果のために、キーフレームからレンダリングされ得ることを理解されたい。三角錐は、N個の特徴(例えば、2804)に対してレンダリングされた線が、三角錐の二等分線を表し、円錐の辺が、N番目の特徴の両側に投影されるように投影される。いくつかの実施形態では、2つの辺縁に対する半角は、レンズマッピング機能をN番目の特徴の両辺に行う、カメラのピクセルピッチによって定義されてもよい。
【0134】
円錐の内部は、二等分線が最も明るく、N番目の特徴の両辺の縁が0の集合となり得るように、陰影されてもよい。カメラバッファは、明るいスポットが新しい特徴の候補場所を表し得るが、カメラ分解能およびレンズ較正の両方を考慮するような総和バッファであってもよい。言い換えると、線ではなく、円錐を投影することは、あるキーフレームが、より近い距離に特徴を捕捉し得たその他より遠くにあるという事実を補償するのに役立ち得る。本アプローチでは、より遠くにあるキーフレームからレンダリングされた三角錐は、より近くにあるキーフレームからレンダリングされたものより大きくなる(かつ大半径を有する)であろう。総和バッファは、3Dマップ点を決定するために適用されてもよい(例えば、マップの最も明るいスポットは、新しいマップ点を表してもよい)。
【0135】
本質的に、ARシステムは、光線または円錐をあるM個の数の以前のキーフレーム内のN個の数の不一致特徴からM+1個のキーフレームのテクスチャの中に投影し、キーフレーム識別子および特徴識別子をエンコードし得る。ARシステムは、現在のキーフレーム内の特徴から別のテクスチャを構築し、第1のテクスチャを第2のテクスチャでマスクし得る。色は全て、制約のための検索に対する候補対合である。本アプローチは、有利なこととして、制約のためのO(MN2)検索をO(MN)レンダリングに変換した後、小規模なO((<M)N(<<N))検索が続く。
【0136】
別のアプローチでは、新しいマップ点は、既存のN個の特徴を視認する仮想キーフレームを選択することによって決定されてもよい。言い換えると、ARシステムは、マップ点を視認すべき仮想キーフレームを選択し得る。例えば、ARシステムは、前述のキーフレーム投影を使用するが、{M,N}標識が探されるM個のキーフレームの法線のPCA(主成分分析)に基づいて、新しい「キーフレーム」を取り上げてもよい(例えば、PCA導出キーフレームは、標識を導出すべき最適ビューを与えるであろう)。
【0137】
PCAを既存のM個のキーフレームに行うことは、既存のM個のキーフレームに最も直交する新しいキーフレームを提供する。したがって、仮想キーフレームを最も直交する方向に位置付けることは、3D空間内に新しいマップ点を見つけるべき最良視点を提供し得る。別のPCAを行うことは、次の最も直交する方向を提供し、さらなる別のPCAを行うことは、さらに別の直交方向を提供する。したがって、3回のPCAを行うことは、N個の特徴を有する既存のM個のキーフレームに基づいて、マップ点を構築すべき3D空間内のx、y、およびz座標を提供し得ると理解されたい。
【0138】
図14は、マップ点をM個の既知のキーフレームから決定するための例示的方法2900を説明する。最初に、2902では、ARシステムは、特定の空間と関連付けられたM個のキーフレームを読み出す。前述のように、M個のキーフレームは、特定の空間を捕捉した既知のキーフレームを指す。次に、2904では、キーフレームの法線のPCAが、M個のキーフレームの最も直交する方向を見つけるために行われる。PCAは、それぞれ、M個のキーフレームに直交する、3つの主成分を生成し得ることを理解されたい。次に、2906では、ARシステムは、3D空間内で最小であって、また、全てのM個のキーフレームのビューに最も直交する主成分を選択する。
【0139】
2908では、キーフレームに直交する主成分を識別した後、仮想キーフレームは、選択された主成分の軸に沿って設置されてもよい。いくつかの実施形態では、仮想キーフレームは、その視野が全てのM個のキーフレームを含むように十分に離れて設置されてもよい。
【0140】
次に、2910では、ARシステムは、光線(または円錐)がM個のキーフレームのそれぞれからN番目の特徴までレンダリングされるように、特徴バッファをレンダリングしてもよい。特徴バッファは、明るいスポット(N個の線が交差するピクセル座標)がN個の特徴の候補場所を表すように、総和バッファであってもよい。前述の同一プロセスは、マップ点がx、y、およびz軸上で見つけられるように、全3つのPCA軸を用いて繰り返されてもよいことを理解されたい。
【0141】
次に、2912では、システムは、画像内の全ての明るいスポットを仮想「特徴」として記憶してもよい。次に、2914では、第2の「標識」バッファが、仮想キーフレームにおいて作成され、線(または円錐)をスタックし、その{M,N}標識を保存してもよい。次に、2916では、「マスク半径」が、特徴バッファ内の各明るいスポットの周囲に描写されてもよい。マスク半径は、仮想カメラの角度ピクセル誤差を表すことを理解されたい。ARシステムは、各明るいスポットの周囲の結果として生じる円形を充填し、標識バッファを結果として生じるバイナリ画像でマスクしてもよい。随意の実施形態では、円形は、円形の中心が明るいが、輝度が円形の周縁でゼロまで減退するように、勾配フィルタを適用することによって充填されてもよい。
【0142】
現時点でマスクされた標識バッファでは、主光線が、各三角形の{M,N}個の要素から成る標識を使用して収集されてもよい。円錐/三角形が、光線の代わりに使用される場合、ARシステムは、三角形の両辺が円形の内側に捕捉される、三角形のみを収集し得ることを理解されたい。したがって、マスク半径は、本質的に、低条件の光線または大発散を有する光線(例えば、視野(FOV)の縁にある光線または遠くから発出する光線)を排除する、フィルタとして作用する。
【0143】
最適化目的のために、標識バッファは、円錐/三角形内で生成された以前に使用された同一陰影を用いてレンダリングされてもよい。別の随意の最適化実施形態では、三角形密度は、三角形の広がり(辺)をチェックする代わりに、1からゼロまでスケーリングされてもよい。したがって、非常に発散する光線は、マスクされた領域の内側の雑音レベルを効果的に上昇させるであろう。ローカル閾値検出をマークの内側で起動することは、完全にマークの内側にあるそれらの光線のみから重心を引き出すことは自明であろう。
【0144】
2918では、マスク/最適化された光線mのコレクションが、バンドル調整器に送られ、新しく決定されたマップ点の場所を推定および/または補正してもよい。本システムは、採用されるレンダリングバッファのサイズに機能的に限定されることを理解されたい。例えば、キーフレームが広範に分離される場合、結果として生じる光線/円錐は、より低い分解能を有するであろう。
【0145】
代替実施形態では、PCA分析を使用して、直交方向を見つけるのではなく、仮想キーフレームは、M個のキーフレームのうちの1つの場所に設置されてもよい。これは、M個のキーフレームがカメラの最良分解能で空間をすでに捕捉しているため、より単純かつより効果的解決策であり得る。PCAが、仮想キーフレームを設置すべき直交方向を見つけるために使用される場合、前述のプロセスは、仮想カメラを各PCA軸に沿って設置し、軸のそれぞれ内のマップ点を見つけることによって繰り返される。
【0146】
新しいマップ点を見つけるさらに別の例示的方法では、ARシステムは、新しいマップ点を仮定してもよい。ARシステムは、最初に、M個のキーフレーム上のPCA分析から3つの主成分を読み出してもよい。次に、仮想キーフレームは、各主成分に設置されてもよい。次に、特徴バッファは、ちょうど前述のように、3つの仮想キーフレームのそれぞれにレンダリングされてもよい。主成分は、定義上、相互に直交するため、各カメラから外向きに描写される光線は、3D空間内の点において相互に衝突し得る。
【0147】
いくつかのインスタンスでは、光線の複数の交差点が存在し得ることを理解されたい。したがって、現時点で、各仮想キーフレーム内にN個の特徴が存在し得る。次に、幾何学的アルゴリズムが、異なる光線間の交差点を見つけるために使用されてもよい。本幾何学的アルゴリズムは、N3個の光線が存在し得るため、一定時間アルゴリズムであってもよい。マスキングおよび最適化は、3D空間内のマップ点を見つけるための前述と同一様式で行われてもよい。
(世界モデル精緻化)
【0148】
いくつかの実施形態では、ARシステムは、別個の小世界モデル区画をより大きいコヒーレント区画の中にステッチしてもよい。これは、小モデルおよび大モデルの2つのレベルで生じてもよい。小モデルは、ローカルユーザレベル(例えば、計算構成要素、例えば、ベルトパック上)に対応する。一方、大モデルは、「世界全体」モデル化のための大規模またはシステム全体レベル(例えば、クラウドシステム)に対応する。これは、パス可能世界モデル概念の一部として実装されることができる。
【0149】
例えば、第1のユーザによって装着される個々のARシステムは、第1のオフィスについての情報を捕捉する一方、第2のユーザによって装着される個々のARシステムは、第1のオフィスと異なる第2のオフィスについての情報を捕捉する。捕捉された情報は、クラウドベースのコンピュータにパスされてもよく、これは、最終的に、個々のARデバイスとともに歩き回る種々のユーザによってサンプリングまたは収集される実空間の包括的一貫した表現を構築する。クラウドベースのコンピュータは、経時的使用を介して、パス可能世界モデルを徐々に構築する。異なる地理的場所は、人口集中地域を最も中心として構築され、最終的に、より郊外地を充填するであろうことが予期される。
【0150】
クラウドベースのコンピュータは、例えば、GPS、Wi-Fi、部屋のカラーヒストグラム、および部屋内の全ての自然特徴にハッシュを行い、写真とともに並べ、前述のように、事物の接続性のトポロジである、トポロジグラフを生成してもよい。クラウドベースのコンピュータは、トポロジを使用して、領域をともにステッチすべき場所を識別してもよい。代替として、クラウドベースのコンピュータは、特徴のハッシュ(例えば、トポロジマップ)を使用して、例えば、ある箇所において、別の箇所における幾何学的構成に一致する幾何学的構成を識別し得る。
(例示的マッピングシステム)
【0151】
図15は、いくつかの実施形態による、第1および第2のAR/MRシステム220、230を含む、マッピングシステム200を図式的に描写する。第1および第2のAR/MRシステム220、230は、それぞれ、第1および第2のネットワーク240、242によって、クラウド処理コンポーネント210に通信可能に結合される。2つのネットワーク240、242が、
図15に描写されるが、マッピングシステム200の種々のコンポーネントが、より多いまたはより少ないネットワークによって、相互に通信可能に結合されてもよい。第1および第2のネットワーク240、242はそれぞれ、例えば、無線またはセルラーネットワーク、プライベート通信ネットワーク(例えば、携帯電話ネットワーク)、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、および/または1つ以上のコンピューティングデバイスが相互に通信することを可能にすることが可能な他の技術であってもよい。
【0152】
第1および第2のAR/MRシステム220、230はそれぞれ、個別のUSBコネクタ226、236を用いてウェアラブル224、234に通信可能に結合される、電源パック222、232を有する。電源パック222、232は、malleus OSを起動させる、NVidia/ARMアーキテクチャを有してもよい。ウェアラブル224、234は、minotaur OSを起動させる、Myriad/SHAVEアーキテクチャを有してもよい。クラウド処理コンポーネント210は、サーバ(例えば、ウィンドウ)OSを起動させる、PCアーキテクチャを有してもよい。
【0153】
第1および第2のAR/MRシステム220、230はそれぞれ、マッピングおよびマップ同期をそれ自体の上で実施することができる。加えて、第1および第2のAR/MRシステム220、230は、クラウド処理コンポーネント210を通して通信される、他のシステム230、220からのデータを使用して、マッピングおよびマップ同期を実施することができる。複数のAR/MRシステム220、230からのデータを共有することは、マッピングの正確度を増加させる。しかしながら、マッピングのための入力データの量を増加させることは、プロセッサ負荷を増加させる。
(例示的マッピング/マップ同期方法)
【0154】
マップは、静的ではなく、代わりに、常に生成され、修正され、最適化する。したがって、マップの本状態は、経時的に変動する。さらに、データ局所性(すなわち、マッピング動作のためのデータのソースは、ウェアラブルおよび電源パック等の種々のコンポーネントである)およびプラットフォーム制約(例えば、処理電力およびメモリ)等の要因は、あるワークロード/ジョブをウェアラブル224、電源パック222、およびクラウド処理コンポーネント210等の種々のシステムコンポーネントに分散させることをより効率的にする。種々のコンポーネント間のAR/MRシステム220の接続性および接続における通信待ち時間(例えば、ネットワーク240およびUSB226)は、コンポーネントを横断してマップ同期を達成するために、有意な待ち時間をもたらす。例えば、いくつかのAR/MRシステムでは、マップは、各マップ関連動作の間、「ロック」され、次いで、更新されたマップのコピーが、次の動作のために、コンポーネントを横断して分散される。本待ち時間/遅れは、多くのAR/MRシステムにとって容認不可能である。マップ管理は、異なる時間における異なるマップ関連ワークロードおよび異なるマッピングシステムコンポーネントの同期待ち時間を考慮する。
【0155】
システムコンポーネント間の並列処理(例えば、SHAVES)は、システム待ち時間を低減させることができる。しかしながら、上記に説明されるシステムコンポーネント間の差異は、並列処理の実装を複雑にする。これらの複雑性のうちのいくつかは、異なる時間におけるシステムコンポーネントのトリガ、システムコンポーネントのための異なる処理レート、およびシステムコンポーネントが作用する異なるデータセットを含む。非同期並列処理は、複数のリーダおよびライタの管理および同一マップ上での動作等の種々の考慮点を含意する。同時プロセスの数を最小限にすることは、システム複雑性を低減させるが、しかしながら、ある程度の非同期並列処理は、マッピングシステム性能を改良する。(非同期並行マッピングワークフロー)
【0156】
図16は、いくつかの実施形態による、マルチコンポーネントマッピングシステムのための非同期マッピング方法300のためのワークフローを描写する。新しいデータおよび最適化を伴う、種々のマップ修正技法が、方法300を使用して、並行して行われることができる。上記に説明されるように、新しいデータ技法は、追跡、VIO、マッピング、再位置特定、マップマージ、および同時稠密最適化を含むことができる。最適化を伴うマップ修正技法は、バンドル調整およびループ閉鎖を含む。新しいデータ技法は、新しいデータのソースであるシステムコンポーネントにおいて、効率的に実施される。最適化技法は、処理集約的であって、したがって、電源パックにおいてより効率的に実施される。最適化の間、特別の考慮が、持続的点および稠密マッピングのために要求される。
【0157】
時間「t」310では、バンドル調整(最適化)動作320が、疎マップのスナップショット上で作業するステップから開始する。バンドル調整320は、処理集約的動作であるため、バンドル調整320は、完了するために比較的に長時間量ΔT322がかかる。上記に議論されるように、処理集約的バンドル調整320は、電源パックによって行われてもよい。
【0158】
バンドル調整320の実行の間、別のコンポーネント(例えば、ウェアラブル)は、マップ点削除330(例えば、マップ点が誤対応であることが決定されたため)を実行してもよい。マップ点削除330は、時間「t+1」312において、疎マップの後のスナップショット上で作業を開始する。マップ点削除330は、比較的にあまり処理集約的動作ではないため、マップ点削除330は、バンドル調整320の間に完了されることができる。時間「t+2」314では、ウェアラブルは、マップ点削除330を完了している。
【0159】
マップ点削除330が完了された後、システムは、バンドル調整320の間、他の動作を実施してもよい。最後に、時間「t+ΔT」316では、バンドル調整が、完了される。本ワークフロー300は、複数のマップ関連動作(バンドル調整320、マップ点削除330等)が、マッピングシステムの異なるコンポーネントによって並行して実行され、それによって、マッピングシステムにおける待ち時間/遅れの量を低減させることを可能にする。複数のマップ関連動作の並列実行は、下記にさらに詳細に説明される。特に、削除されたマップ点がまた、バンドル調整動作の一部である場合、2つの動作(バンドル調整320とマップ点削除330)間に競合が存在し得る。
(非同期並行マッピングの間のデータ競合)
【0160】
図17A-17Dは、非同期並行マッピングとデータ競合をもたらし得る、複数の例示的ループ閉鎖動作を描写する。
図17Aは、6つのキーリグフレーム410、411、412、413、414、415、および416をマップ401内のドットとして描写する。ループ418が、キーリグフレーム410と410’との間で検出される。
【0161】
図17Bは、キーリグフレーム422、423、424、425、および426を移動させ、新しいマップ402を生成することによって、固定された原点410を伴う、ループ418の閉鎖を描写する。
【0162】
図17Cは、固定された原点410を伴う、ループ418の閉鎖を描写する。非同期ワークロードに起因して、ループ438が、キーリグフレーム433の生成に対応する時間に検出される。したがって、ループ438は、キーリグフレーム432および433を移動させることによって閉鎖される。1つ以上の別個のワークロードが、キーリグフレーム434、435、および436を生成する。キーリグフレーム433におけるループ閉鎖に続く、キーリグフレーム434、435、および436の生成から生じる、マップ403は、
図17Aおよび17Bにおけるマップ401、402と非常に異なる形状を有する。
【0163】
図17Dは、いくつかの実施形態による、新しい位置440への原点410の移動を可能にしながらのループ418の閉鎖を描写する。本ループ閉鎖は、異常形状を生成せずに、キーリグフレーム441、442、443、444、445、および446の生成の間に実施されることができる。例えば、
図17Dにおけるマップ404は、
図17Cにおけるマップ403と比較して、
図17Aおよび17Bにおけるマップ401、402にはるかに近い。
【0164】
マップ管理設計は、非同期ワークロードとのこれらおよび多数の他の可能性として考えられるマッピング競合等の競合の認識および解決/調和を含む。解決/調和は、状態変更を生成するために使用される初期状態が依然として有効であるかどうかと、状態変更を適用すべきかどうかとの決定を含む。これらの競合は、データおよび時間依存であって、マップ管理における解決/調和プロセスをさらに複雑にする。
(マップ管理との非同期並行マッピングワークフロー)
【0165】
図18は、いくつかの実施形態による、マップ管理とのマルチコンポーネントマッピングシステムのための非同期マッピング方法500のためのワークフローを描写する。マッピング方法500は、マップマネージャ(下記に説明される)によって維持されるが、必ずしも、状態の時間インデックス集合として表されない、一意のタイムラインを含む。
図18は、3つの状態510、512、514を含む。「+」演算子516は、次の状態を生成するための前の状態への変更(例えば、「Δ0」522)の適用を表す。
【0166】
変更は、方法500における種々のマップ動作によって生産される。例えば、マッピング動作520は、入力として、マッピング動作520の実行時の状態(すなわち、状態ゼロ510)および外部データ518を受信する。状態ゼロ510は、マップが空の特殊状態であり得る。マッピング動作520の出力は、方法500における全てのマップ動作と同様に、新しい状態ではなく、むしろ、状態変更(すなわち、Δ0522)である。同様に、バンドル調整動作530は、入力として、バンドル調整動作530の実行時の状態(すなわち、状態1512)および他のデータ(図示せず)を受信する。バンドル調整動作530の出力は、別の状態変更(すなわち、Δ1532)である。さらに、複数の他のマップ動作540は、個別の複数の状態変更542を出力することができる。
【0167】
「+」動作516は、種々の状態変更(すなわち、Δ0522、Δ1532、Δ…542)を前の状態に適用し、次の状態を生成する。例えば、状態変更Δ0522は、状態ゼロ510に適用され、状態1512を生成する。同様に、状態変更Δ1532は、状態1512に適用され、状態2514を生成する。状態変更522、532、542は、競合が存在しない限り、状態進行の順序で適用される。状態と状態変更との間の競合が、検出される場合、状態と状態変更との間の競合は、「+」動作516の間、解決/調和される。競合解決は、競合のタイプがマップに適用される修正に依存するため、実装依存である。
【0168】
システムコンポーネントは、種々の状態510、512、514のスナップショットおよび種々のマッピング動作520、530、540による使用のために必要とされ得るような他のデータを読み取る。同様に、システムコンポーネントは、種々のマッピング動作520、530、540から生じるマップへの修正を含有する、状態変更522、532、542を書き込む。状態変更522、532、542は、新しいマップ状態512、514を作成するために受信された直後に適用される。マップ状態に依存する動作を実行する、種々のコンポーネントは、状態変更をサブスクライブすることができる。
【0169】
故に、所与のマップ状態は、初期状態および状態変更のシーケンスの順序によって決定されることができる。例えば、初期状態ゼロ510および状態変更522および532を前提として、マップ状態は、状態ゼロ510「+」状態変更522「+」状態変更532として定義されることができる。その結果、グローバルに一致される初期マップ状態および状態変更の順序は、異なるシステムコンポーネントが、異なるプラットフォーム上で異なるレートで起動しながら、マッピング動作を実施し、状態変更を生成することを可能にする。
【0170】
マップマネージャは、初期マップ状態および状態変更の順序を決定し、本マッピングデータを全てのシステムコンポーネントに送信/プッシュ配信/ブロードキャスト/複製し、一貫したマップをシステムの全てのコンポーネント間に維持しながら、非同期並行マッピングを可能にする。各システムコンポーネントは、システム内で生産された全ての状態変更に最終的にアクセスするであろう、マップマネージャを有する。順序付けられた状態変更は、全てのシステムコンポーネントおよびその中のマップマネージャに接続する、仮想バスとして機能する。
【0171】
図19は、マッピングおよびマップ同期のためのAR/MRシステム600を描写する。システム600は、USB通信リンク630によって相互およびクラウド処理コンポーネント640に通信可能に結合される、ウェアラブル610と、電源パック620とを含む。ウェアラブル610および電源パック620はそれぞれ、マップマネージャ612、622と、リーダ614、624と、ライタ616、626とを含む。マップマネージャ612、622、リーダ614、624、およびライタ616、626はそれぞれ、全てのシステムコンポーネントに接続する仮想バスを形成する、USB通信リンク630に通信可能に結合される。
【0172】
リーダ614、624は、USB通信リンク630およびその個別のコンポーネント610、620内の他のソースからのデータを受信する。リーダ614、624によって受信されるデータは、状態変更を含む。リーダ614、624は、受信されたデータをマップマネージャ612、622に送信する。
【0173】
マップマネージャ612、622は、リーダ614、624から受信されたデータを処理する。ウェアラブル610内のマップマネージャ612は、上記に説明されるように、初期状態からの状態変更の順序に対応する、変更順序618を生成する。変更順序618は、状態変更が種々の状態に適用されるべきときに基づいて生成される。本順序は、概して、ウェアラブルマップマネージャ612が状態変更を受信する、時間に関連する。1つを上回る状態変更が、ウェアラブルマップマネージャ612に一度に到着する場合、マップマネージャ612は、状態変更を同時に書き込む順序を決定する。
【0174】
ウェアラブル610内のマップマネージャ612は、変更順序618を電源パック620内のマップマネージャ622に送信する。変更順序618は、システムコンポーネント610、620および仮想バス630が、マップマネージャ612、622が、変更順序618と異なるシーケンスにおいて、状態変更を異なるシステムコンポーネント610、620から受信し得るように、非同期して機能することを可能にする。変更順序618は、マップマネージャ612、622が、受信された状態変更を一致する順序で適用し、システムコンポーネント610、620を横断してマップを同期させることを可能にする。
【0175】
いくつかの実施形態では、変更順序618に基づく状態変更の並替は、特定のマップマネージャを含むシステムコンポーネントによって生成された状態変更の順序を相互に対して変更させない。さらに、状態変更は、仮想バス630をより効率的に利用するために、特定のシステムコンポーネント内のマップ(例えば、下記に説明されるように、ウェアラブル内に記憶されるより小さいマップ)に関連するデータのみを含むように修正されることができる。
【0176】
マップマネージャ612、622は、データをライタ616、626に送信する。そのようなデータは、状態変更と、いくつかの実施形態では、変更順序618とを含んでもよい。ライタ616、626は、ひいては、データを仮想バス630に送信する。仮想バス630は、各コンポーネント610、620が、最終的に、全ての状態変更および変更順序618を受信するように、変更順序618の状態変更をシステムコンポーネント610、620間に分散させる。マップは、静的ではないため、システムコンポーネント610、620は、常に、マップ更新を仮想バス630を横断して相互に送信する。仮想バス630はまた、そこに接続される複数のマッピングシステムを横断した使用のためのその独自のマップを保ち得る、クラウド処理コンポーネント640に接続する。クラウド処理コンポーネント640は、他のシステムコンポーネント610、620内のもののようなマップマネージャと、リーダと、ライタ(図示せず)とを有してもよい。
【0177】
図20は、複数の受信された状態変更を分析することによって変更順序750を生成する、ウェアラブルマップマネージャ710を描写する。状態変更は、マッピング状態変更720と、バンドル調整状態変更730と、ループ閉鎖状態変更740とを含む。状態変更は、異なるシステムコンポーネントによって生成されてもよい。例えば、マッピング状態変更720のうちのいくつかは、ウェアラブルによって生成されてもよく、バンドル調整状態変更730およびループ閉鎖状態変更740は、電源パックによって生成されてもよい。各状態変更は、ライタおよびシーケンスカウントまたはタイムスタンプを識別する、構成キーによって一意に識別されることができる。例えば、各ライタが、状態変更を生産する場合、構成キーは、以下となり得る。
マッピング:マップデルタ(0)、マップデルタ(1)
バンドル調整:バンドル調整(0)、バンドル調整(1)
ループ閉鎖:ループ閉鎖(0)、ループ閉鎖(1)
【0178】
ウェアラブルマップマネージャ710は、受信された状態変更を分析し、変更順序750を生成する。上記に列挙された構成キーの実施例を継続すると、変更順序は、それらの状態変更のグローバル順序もまた表す、状態変更の単一ストリームとして通信されてもよい。例示的変更順序は、「マップデルタ(0)、バンドル調整(0)、マップデルタ(1)、ループ閉鎖(0)、バンドル調整(1)、ループ閉鎖(1)」である。他のマップマネージャおよびシステムは、最終的に、変更順序750の同一状態変更をウェアラブルマップマネージャ710から受信する。
【0179】
図21は、受信された変更順序850に基づいて複数の受信された状態変更を適用する、電源パックマップマネージャ810を描写する。状態変更は、マッピング状態変更820、バンドル調整状態変更830、およびループ閉鎖状態変更840を含む。状態変更は、異なるシステムコンポーネントによって生成されてもよい。例えば、マッピング状態変更820のうちのいくつかは、ウェアラブルによって生成されてもよく、バンドル調整状態変更830およびループ閉鎖状態変更840は、電源パックによって生成されてもよい。変更順序850は、ウェアラブルマップマネージャによって生成され、仮想バスを通して受信されている場合がある。受信された状態変更820、830、840を受信された変更順序850内にエンコーディングされたシーケンスで適用するために、電源パックマップマネージャ810は、変更順序850によって呼び出されるまで受信された状態変更820、830、840を記憶するための複数のバッファ822、832、842を含む。変更順序850に従った次の状態変更が、利用可能である場合、電源パックマップマネージャ810は、次の変更を適用するであろう。変更順序850に従った次の変更が、利用不可能である場合、電源パックマップマネージャ810は、次の状態変更が受信されるまで待機し、非同期様式で動作するであろう。状態変更が、変更順序850の前に到着する場合、電源パックマップマネージャ810は、変更順序850が到着するまで待機し、非同期様式で動作するであろう。
【0180】
状態変更を状態に適用するための上記に説明される「+」動作は、システムコンポーネントを横断して実質的に同様であるように構成される。これは、状態変更が、異なるシステムコンポーネントを横断して分散および適用されることを可能にする。「+」動作は、本デバイスのためのバイナリをマニフェストから削除することによって、ウェアラブルおよび電源パックによる実行のために構成されることができる。クラウド処理コンポーネントのために、「+」動作は、マニフェストからのクラウドバイナリの削除または「+」演算子の明示的バージョニング等によって構成されることができる。
【0181】
図22は、複数の受信された状態変更を処理する、ウェアラブルマップマネージャ910を描写する。状態変更は、追跡状態変更920、マッピング状態変更930、およびバンドル調整状態変更940を含む。状態変更は、異なるシステムコンポーネントによって生成されてもよい。例えば、追跡状態変更920およびマッピング状態変更930のうちのいくつかは、ウェアラブルによって生成されてもよく、バンドル調整状態変更940は、電源パックによって生成されてもよい。ウェアラブルマップマネージャ910は、変更順序950を受信された状態変更920、930、940から生成する。マップのロックを最小限にするために、ウェアラブルマップマネージャ910はまた、リーダジョブ、すなわち、事前追跡924、事前マップ934、および事前バンドル調整944を実行し、個別の状態変更のためのマップのスナップショットを作成する。
【0182】
図23は、受信された変更順序1050に基づいて複数の受信された状態変更1020を処理する、電源パックマップマネージャ1010を描写する。状態変更は、異なるシステムコンポーネントによって生成されてもよく、変更順序は、ウェアラブルによって生成されてもよい。電源パックマップマネージャ1010は、変更順序1050を受信された状態変更1020、1030、1040から生成する。マップのロックを最小限にするために、電源パックマップマネージャ1010はまた、リーダジョブ、すなわち、事前ループ閉鎖1024、事前姿勢1034、および事前ストリーミング1044を実行し、個別の状態変更のためのマップのスナップショットを作成する。スナップショットは、特定のリーダジョブのために必要とされるデータのみを含んでもよい。スナップショットが、撮影された後、マップマネージャは、異なるリーダジョブをマップ上で実行してもよい。スナップショットを生成することは、実際のマップ処理がオフラインで生じ、それによって、処理するためにマップがロックされる時間量を最小限にすることを可能にする。
【0183】
電源パックマップマネージャ1010は、変更順序1050に基づいて、状態変更1020を実行し、以前に実行されたリーダジョブ1024、1034、1044およびそれによって生成されたスナップショットに対応する下流ジョブをトリガする。下流ジョブをトリガすることは、ループ閉鎖1026、軌道更新1036、およびセルストリーミング1046を含む。
【0184】
上記に説明される実施形態は、マップマネージャ、状態変更、および変更順序を含む、マッピングシステムを使用して、非同期並行マッピングを促進し、システムコンポーネントを横断してマップを同期させる。これは、システム待ち時間/遅れを低減させ、それによって、改良されたリアルタイムシステム性能を有効にする。
(セルストリーミング)
【0185】
図24および25は、複数のコンポーネントマッピングシステム内のセルストリーミング方法を描写する。本方法は、より小さいマップ1100をウェアラブル内により小さいマップ1100を含む、より大きいマップ(図示せず)を電源パックまたはクラウド処理コンポーネント(図示せず)内に記憶することによって、ウェアラブルのメモリ限界に対処する。
【0186】
図24に示されるように、より大きいマップは、複数のマップサブユニット/セル1110、1112に分割されており、より小さいマップ1100は、複数のマップサブユニット1110、1112の第1のサブセットを含む。より小さいマップ1100は、3×3×1サブユニット3Dアレイであって、各サブユニット1110、1112は、約7m×7m×7mである。他の実施形態では、より小さいマップ(図示せず)は、10×10×1サブユニット3Dアレイまたは6×6×3 3Dサブユニットアレイであってもよい。より小さいマップ1100はまた、マッピングシステム/ユーザの現在の場所に対応する、中心マップサブユニット1112を含む。
【0187】
図25は、マッピングシステム/ユーザの移動に伴う、前の中心マップサブユニット1112から更新された中心マップサブユニット1112’へのセルのストリーミングを示す。
図25に描写される更新されたより小さいマップ1100’は、より多様なマップサブユニット1110、1112、1112’、1114、1116を含む。これらの新しいマップサブユニット1112’、1114、1116は、
図24に示されるマップサブユニット1110、1112と同じである。例えば、各マップサブユニット1110、1112、1112’、1114、1116は、約7m×7m×7mである。マッピングシステム/ユーザが、更新された中心マップサブユニット1112’を移動させると、マップサブユニット1114は、1つを上回るマップサブユニットをマッピングシステム/ユーザから離れさせる。故に、マップサブユニット1114から成る
図24におけるより小さいマップ1100を定義する、複数のマップサブユニットの第1のサブセットの一部は、ウェアラブルのメモリから削除される。
【0188】
ウェアラブルはまた、複数のサブユニットの第1のサブセットからの残りのマップサブユニット1110、1112および複数のマップサブユニット1116の第2のサブセットが更新された中心マップサブユニット1112’を完全に囲繞するように、複数のマップサブユニット1116の第2のサブセットを受信する(例えば、電源パックから)。複数のマップサブユニット1116の第2のサブセットは、上記に説明されるように、マップサブユニット1114を削除することによって利用可能になるウェアラブルのメモリ内に記憶される。
【0189】
図24および25に描写される方法は、ウェアラブルが、新しいマップサブユニットをロードする前に、必要とされないマップサブユニットアンロードすることによって、ウェアラブル内の限定されたメモリにかかる需要を最小限にしながら、種々のマッピング機能のために必要とされるマップサブユニットにアクセスすることを可能にする。本方法は、中心マップユニットからX-Y平面における各方向に少なくとも1つのマップサブユニットを維持する。故に、マップサブユニットは、入替プロセスの間、マッピング機能(例えば、追跡)のためのいくつかのマップデータを維持しながら、入れ替えられることができる。
図24および25に描写される移動は、対角線移動であるが、X-Y平面における任意の他の移動の後に、上記に説明される方法に従って、ウェアラブル内のより小さいマップの更新が続くことができる。
【0190】
図24および25に描写される方法または他の類似方法を使用して、疎マップは、以下のように表され得る。疎マップ(t)={セル
1(t)、セル
2(t)、…、セル
N(t)}。上記に説明されるように、状態変更は、疎マップに適用され、疎マップ(t+1)=疎マップ(t)「+」状態変更(t)をもたらすことができる。「+」演算子が、分散性質を有するとき、状態変更は、以下のように、疎マップに適用されることができる。
疎マップ(t)「+」状態変更(t)={セル
1(t)、セル
2(t)、…、セル
N(t)}「+」状態変更(t)
={セル
1(t)「+」状態変更(t)、セル
2(t)「+」状態変更(t)、…、セル
N(t)「+」状態変更(t)}
={セル
1(t+1)、セル
2(t+1)、…、セル
N(t+1)}
=疎マップ(t+1)
したがって、状態変更は、完全疎マップ内の全てのセルの状態にアクセスせずに、個人レベルで適用されることができる(例えば、ウェアラブルにおけるように)。
【0191】
セルストリーミングの間、マップサブユニット/セルのスナップショットが、電源パックからウェアラブルにコピーされる。いくつかのマップのサイズに起因して、最後のマップサブユニットが、ウェアラブルにおいて受信されるまでに、ウェアラブルによって受信された第1のマップサブユニットは、電源パックにおいて実施されるマッププロセスに対して古くなり得る。セルあたり状態変更方法を使用すると、状態変更は、ウェアラブルによって受信された第1のマップユニットに適用され、それらを最新にすることができる。
【0192】
上記に説明されるセルストリーミング方法はまた、ウェアラブルが、ローカル環境の完全疎マップの一部のみを記憶しながら、マップ関連機能を実施することを可能にする。マッピングシステム/ユーザの移動に基づいて、マップサブユニットを電源パックからストリーミングすることによって、メモリ使用量は、多くのマップ機能を実施するためにウェアラブルのために十分なマップデータを維持しながら、ウェアラブル内で最小に保たれる。
(ゼロコピーデータ転送)
【0193】
図26および27は、USBコネクタ等の比較的に低帯域幅通信チャネルを横断したゼロコピーデータ転送のためのデータ構造を描写する。ゼロコピーデータ転送は、
図24および25に描写され、上記に説明される、セル入替機構において使用され、ウェアラブルと電源パックとの間のUSB通信チャネルにおける待ち時間を低減させることができる。描写されるデータ構造およびゼロコピーデータ転送を使用すると、USB通信チャネルは、種々のマッピング動作において使用されるであろう、データを、直接、システムコンポーネントメモリの中に書き込むことができる。これは、USB通信チャネルからのデータが、最初に、システムコンポーネント内のバッファに書き込まれ、次いで、バッファからシステムコンポーネントメモリに書き込まれる、現在のシステムに優る改良である。したがって、ゼロコピーデータ転送は、データをコピーするためのメモリ使用量およびプロセッサ使用量の両方を低減させる。
【0194】
ゼロコピーデータ転送は、所有権およびセル状態データインジケータ/タグを使用する。
図26に示されるように、特定のセルの所有権は、「なし」、「マップ」、または「USB」であることができる。同様に、特定のセルの状態は、「無効」、「マップ」、または「USB」であることができる。マップは、それぞれ、個々の所有者および状態を有する、セルのアレイであってもよい。マップはまた、セルがマップに進入し、そこから退出するにつれた、遷移状況を網羅するために十分なセルを含んでもよい。
【0195】
最初に、セルは、「なし」の所有権と、「無効」の状態とを有している場合がある。セルが、USB接続を経由して転送されているとき、その所有権は、「USB」または「Comm2」に設定され、その状態は、「USB」に設定される。転送が、完了し、セルが、システムによって使用されているとき、その所有権および状態は両方とも、「マップ」に設定される。セルは、リーダおよびライタを使用して、種々のマッピング動作/ジョブによってアクセスされることができる。ライタの単一インスタンスのみが、マッピングシステム内で許容され得る。リーダの複数のインスタンスが、マッピングシステム内で許容され得るが、同時読取および書込は、許容され得ない。
【0196】
特定のマップ動作/ジョブが、開始すると、フレームワークは、リーダおよび/またはライタを、必要に応じて、対応するシステムコンポーネントに通過させるであろう。セルリストは、マップによって現在所有されている全てのセルへのポインタと、それらのセルのカウントとを含む。マップ動作/ジョブの終了時、ライタは、要求アレイを取り込むであろう。要求アレイは、フレームワークに、3つの機能のうちの1つをマップの各セルに実施するように命令する。無効化要求は、セルを所有権「なし」および状態「無効」としてマークする。送信要求は、転送のためのセルを所有権「USB」または「Comm2」および状態「USB」としてマークする。転送が、完了した後、送信要求は、セルを所有権「なし」および状態「無効」としてマークする。デバッグ要求は、それを「無効」としてマークせずに、セルを送信する。したがって、デバッグの間、システムコンポーネントは、セルを変更しない。
【0197】
所有権は、USB通信チャネル(「USB」)とセル(「マップ」)上で作業するシステムコンポーネントとの間で転送可能である。所有権は、セル内のデータをコピーせずに、単純ポインタ動作を用いて変更され得るため、転送されているセルの所有権の変更は、プロセッサおよびメモリに対して比較的に低コストである。
(システムアーキテクチャ概要)
【0198】
図28は、本開示の実施形態を実装するために好適な例証的コンピューティングシステム1200のブロック図である。コンピュータシステム1200は、プロセッサ1207、システムメモリ1208(例えば、RAM)、静的記憶デバイス1209(例えば、ROM)、ディスクドライブ1210(例えば、磁気または光学)、通信インターフェース1214(例えば、モデムまたはEthernet(登録商標)カード)、ディスプレイ1211(例えば、CRTまたはLCD)、入力デバイス1212(例えば、キーボード)、およびカーソル制御等のサブシステムおよびデバイスを相互接続する、情報を通信するためのバス1206または他の通信機構を含む。
【0199】
本開示の一実施形態によると、コンピュータシステム1200は、プロセッサ1207が、システムメモリ1208内に含有される1つ以上の命令の1つ以上のシーケンスを実行することによって、具体的動作を実施する。そのような命令は、静的記憶デバイス1209またはディスクドライブ1210等の別のコンピュータ可読/使用可能媒体から、システムメモリ1208の中に読み取られてもよい。代替実施形態では、有線回路網は、本開示を実装するためのソフトウェア命令の代わりに、またはそれと組み合わせて使用されてもよい。したがって、本開示の実施形態は、ハードウェア回路網および/またはソフトウェアの任意の具体的組み合わせに限定されない。一実施形態では、用語「論理」は、本開示の全部または一部を実装するために使用される、ソフトウェアまたはハードウェアの任意の組み合わせを意味するものとする。
【0200】
用語「コンピュータ可読媒体」または「コンピュータ使用可能媒体」は、本明細書で使用されるように、実行のために命令をプロセッサ1207に提供することに関わる、任意の媒体を指す。そのような媒体は、限定ではないが、不揮発性媒体および揮発性媒体を含む、多くの形態をとり得る。不揮発性媒体は、例えば、ディスクドライブ1210等の光学または磁気ディスクを含む。揮発性媒体は、システムメモリ1208等の動的メモリを含む。
【0201】
一般的形態コンピュータの可読媒体は、例えば、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、磁気テープ、任意の他の磁気媒体、CD-ROM、任意の他の光学媒体、パンチカード、紙テープ、孔のパターンを伴う任意の他の物理的媒体、RAM、PROM、EPROM、FLASH(登録商標)-EPROM(例えば、NANDフラッシュ、NORフラッシュ)、任意の他のメモリチップまたはカートリッジ、またはそこからコンピュータが読み取り得る、任意の他の媒体を含む。
【0202】
本開示のある実施形態では、本開示を実践するための命令のシーケンスの実行は、単一コンピュータシステム1200によって実施される。本開示の他の実施形態によると、通信リンク1215(例えば、LAN、PTSN、または無線ネットワーク)によって結合される、2つ以上のコンピュータシステム1200は、相互に協働して本開示を実践するために要求される命令のシーケンスを実施してもよい。
【0203】
コンピュータシステム1200は、通信リンク1215および通信インターフェース1214を通して、プログラム、すなわち、アプリケーションコードを含む、メッセージ、データ、および命令を伝送および受信してもよい。受信されたプログラムコードは、受信されるとともにプロセッサ1207によって実行され、および/または後の実行のためにディスクドライブ1210または他の不揮発性記憶装置内に記憶されてもよい。記憶媒体1231内のデータベース1232は、データインターフェース1233を介してシステム1200によってアクセス可能なデータを記憶するために使用されてもよい。
【0204】
本開示は、主題デバイスを使用して行われ得る方法を含む。方法は、そのような好適なデバイスを提供するという行為を含んでもよい。そのような提供は、エンドユーザによって行われてもよい。換言すれば、「提供する」行為は、単に、ユーザが、主題方法において必須デバイスを提供するように、取得し、アクセスし、接近し、位置付けし、設定し、起動し、電源を入れ、または別様に作用することを要求する。本明細書で記載される方法は、論理的に可能である記載された事象の任意の順番で、および事象の記載された順番で実行されてもよい。
【0205】
本開示の例示的側面が、材料選択および製造に関する詳細とともに、上記で記載されている。本開示の他の詳細に関して、これらは、上記で参照された特許および出版物と関連して理解されるとともに、概して、当業者によって把握または理解され得る。同じことが、一般的または論理的に採用されるような付加的な行為の観点から、本開示の方法ベースの側面に関して当てはまり得る。
【0206】
加えて、本開示は、種々の特徴を随意的に組み込む、いくつかの実施例を参照して説明されているが、本開示は、本開示の各変形例に関して考慮されるように説明および指示されるものに限定されるものではない。種々の変更が、説明される本開示に行われてもよく、本開示の真の精神および範囲から逸脱することなく、(本明細書に記載されるか、またはいくらか簡潔にするために含まれないかどうかにかかわらず)均等物が置換されてもよい。加えて、値の範囲が提供される場合、その範囲の上限と下限との間の全ての介在値、およびその規定範囲内の任意の他の規定または介在値が、本開示内に包含されることを理解されたい。
【0207】
また、説明される本発明の変形例の任意の随意的な特徴が、独立して、または本明細書で説明される特徴のうちのいずれか1つ以上のものと組み合わせて、記載および請求され得ることが考慮される。単数形の項目の言及は、複数形の同一項目が存在する可能性を含む。より具体的には、本明細書で、および本明細書に関連付けられる請求項で使用されるように、「1つの(「a」、「an」)」、「該(said)」、および「前記(the)」という単数形は、特に規定がない限り、複数形の指示主題を含む。換言すると、冠詞の使用は、上記の説明および本開示と関連付けられる請求項で、対象項目の「少なくとも1つ」を可能にする。さらに、そのような請求項は、任意の随意的な要素を除外するように起草され得ることに留意されたい。したがって、この記述は、請求項の要素の記載に関連する「だけ」、「のみ」、および同等物等のそのような排他的用語の使用、または「否定的」制限の使用のための先行詞としての機能を果たすことを目的としている。
【0208】
そのような排他的用語を使用することなく、本開示と関連付けられる請求項での「備える」という用語は、所与の数の要素がそのような請求項で列挙されるか、または特徴の追加をそのような請求項に記載される要素を変換するものとして見なすことができるかにかかわらず、任意の付加的な要素の包含を可能にするものとする。本明細書で特に定義される場合を除いて、本明細書で使用される全ての技術および科学用語は、請求項の有効性を維持しながら、可能な限り広義の一般的に理解されている意味を与えられるものである。
【0209】
本開示の範疇は、提供される実施例および/または主題の明細書に限定されるものではなく、むしろ、本開示と関連付けられる請求項の範囲のみによって限定されるものとする。
【0210】
前述の明細書では、本開示は、その具体的実施形態を参照して説明された。しかしながら、種々の修正および変更が、本開示のより広範な精神および範囲から逸脱することなく、そこに成され得ることは明白となるであろう。例えば、前述のプロセスフローは、プロセスアクションの特定の順序を参照して説明される。しかしながら、説明されるプロセスアクションの多くの順序は、本開示の範囲または動作に影響を及ぼすことなく、変更されてもよい。明細書および図面は、故に、限定的意味ではなく、例証的であると見なされるものとする。