(57)【要約】  一実装形態では、プロセス間で共有データにアクセスする方法は、プロセッサ（単数又は複数）、非一時的メモリ、及び画像取得インタフェースを含むデバイスによって実行される。方法は、画像取得インタフェースによって取得された画像データを取得することを含む。方法は、画像取得インタフェースによって測定された慣性測定ユニット（ＩＭＵ）情報に少なくとも部分的に基づいて、ポーズデータを決定することを更に含む。方法はまた、画像取得インタフェースを介して取得されたアイトラッキング情報に少なくとも部分的に基づいて、視線推定を決定することを含む。方法は、プロセスの特性に少なくとも部分的に基づいて、画像データ、ポーズデータ、及び視線推定の構成を決定することを含む。方法は、構成、プロセスの特性、及びデバイスに関連付けられたハードウェアタイミングパラメータのうちの少なくとも１つに少なくとも部分的に基づいて、プロセスのアクセススケジュールを決定することを更に含む。
2021534510.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、１つ以上のプロセッサと、非一時的メモリと、画像取得インタフェースとを備えたデバイスにおいて、
前記画像取得インタフェースによって取得された視野に関連付けられた画像データを取得することと、
慣性測定ユニット（ＩＭＵ）情報に少なくとも部分的に基づくポーズデータであって、前記画像取得インタフェースによって測定されたユーザの現在の姿勢に対応する前記ポーズデータを決定することと、
前記画像取得インタフェースを介して取得されたアイトラッキング情報に少なくとも部分的に基づいて、視線推定を決定することと、
前記画像取得インタフェースと通信可能な複数のプロセスの複数の特性に少なくとも部分的に基づいて、前記画像データ、前記ポーズデータ、及び前記視線推定の構成を決定することと、
前記画像データ、前記ポーズデータ、及び前記視線推定の前記構成、前記複数のプロセスの前記複数の特性、並びに前記デバイスに関連付けられたハードウェアタイミングパラメータのうちの少なくとも１つに少なくとも部分的に基づいて、前記複数のプロセスのアクセススケジュールを決定することと、を含む、方法。
【請求項２】
前記複数のプロセスの前記複数の特性に少なくとも部分的に基づいて、前記画像データ、前記ポーズデータ、及び前記視線推定の前記構成を決定することが、
前記複数のプロセスのうちの第１のプロセスであって、第１の特性のセットによって特徴付けられる前記第１のプロセスに対する、第１の画像データ、第１のポーズデータ、及び第１の視線推定のうちの少なくとも１つを取得することと、
前記複数のプロセスのうちの第２のプロセスであって、第２の特性のセットによって特徴付けられる前記第２のプロセスに対する、第２の画像データ、第２のポーズデータ、及び第２の視線推定のうちの少なくとも１つを取得することと、
前記第１の画像データ、前記第１のポーズデータ、及び前記第１の視線推定を、前記第２の画像データ、前記第２のポーズデータ、及び前記第２の視線推定と統合して、前記画像データ、前記ポーズデータ、及び前記視線推定であって、前記第１の特性のセット及び前記第２の特性のセットに少なくとも部分的に基づいて構成される前記画像データ、前記ポーズデータ、及び前記視線推定を生成することと、を含む、請求項１に記載の方法。
【請求項３】
前記アクセススケジュールが、決定論的モデルに基づいて決定され、前記方法が、
前記複数のプロセスの第１のプロセスに対して、前記第１のプロセスに対する入力、前記入力を提供するハードウェア又は第２のプロセスのうちの少なくとも１つ、及び前記ハードウェア又は前記第２のプロセスのうちの少なくとも１つから前記入力を取得するための時間パラメータを決定することと、
前記時間パラメータに少なくとも部分的に基づいて、前記第１のプロセスのウェイクタイムを計算することと、を含む、請求項１又は２のいずれか一項に記載の方法。
【請求項４】
タイムスタンプと関連付けられているフレームをレンダリングのためにベースデバイスから取得することと、
前記ポーズデータの軌跡及び前記タイムスタンプに基づいて、レンダリング時におけるレンダリングポーズを予測することと、
前記レンダリング時における前記レンダリングポーズを使用して前記フレームを調整することと、を更に含む、請求項１から３のいずれか一項に記載の方法。
【請求項５】
前記複数のプロセスのための前記アクセススケジュールを決定することが、
前記画像データ、前記ポーズデータ、及び前記視線推定の前記構成、前記複数のプロセスの前記複数の特性、並びに前記デバイスからの前記ハードウェアタイミングパラメータのうちの少なくとも１つを取得するベースデバイスによってデータの収集をトリガすることであって、前記データは、前記ベースデバイスによって他のデバイスからもまた収集されるこ、とと、
前記データに基づいて前記第２のデバイスによって決定される前記アクセススケジュールを前記第２のデバイスから受信することと、を含む、請求項１から４のいずれか一項に記載の方法。
【請求項６】
表示のためのシーンを生成するために、前記アクセススケジュールに従って前記構成にアクセスすることと、
前記構成から得られたデータであって、前記画像データ、前記ポーズデータ、及び前記視線推定のうちの少なくとも１つのサブセットである前記データを使用して、かつ前記アクセススケジュールに従って、前記シーンを表示することと、を更に含む、請求項１から５のいずれか一項に記載の方法。
【請求項７】
前記アクセススケジュールに従って前記構成にアクセスすることが、
前記複数のプロセスのうちのプロセスの予想実行時間を前記アクセススケジュールに基づいて決定することと、
前記構成に従って前記プロセスによって使用されるデータをフェッチすると、前記予想実行時間にデータアクセスするための前記プロセスをウェイクアップすることと、を含む、請求項６に記載の方法。
【請求項８】
前記画像データ、前記ポーズデータ、及び前記視線推定が、記憶デバイスに記憶され、前記画像データ、前記ポーズデータ、及び前記視線推定の前記構成が、前記画像データ、前記ポーズデータ、及び前記視線推定を前記記憶デバイスに記憶するためのレイアウト又はシーケンシングのうちの少なくとも１つを含む、請求項１から７のいずれか一項に記載の方法。
【請求項９】
前記画像取得インタフェースが、前記視野に関連付けられた前記画像データを取得するための画像センサを含む、請求項１から８のいずれか一項に記載の方法。
【請求項１０】
前記画像取得インタフェースが、前記ユーザの前記現在の姿勢を測定するためのＩＭＵを含む、請求項１から９のいずれか一項に記載の方法。
【請求項１１】
前記画像取得インタフェースが、前記アイトラッキング情報を取得するためのアイトラッキング装置を含む、請求項１から１０のいずれか一項に記載の方法。
【請求項１２】
前記複数のプロセスの前記複数の特性が、前記画像データ、前記ポーズデータ、及び前記視線推定を使用する前記プロセスのシーケンスを含む、請求項１から１１のいずれか一項に記載の方法。
【請求項１３】
前記ハードウェアタイミングパラメータが、画像センサ、ＩＭＵ、アイトラッキング装置、コントローラ、プロセッサ、又は通信デバイスのうちの少なくとも１つと関連付けられている、請求項１から１２のいずれか一項に記載の方法。
【請求項１４】
デバイスであって、
画像取得インタフェースと、
前記画像取得インタフェースによって取得された視野に関連付けられた画像データを取得し、慣性測定ユニット（ＩＭＵ）情報に少なくとも部分的に基づくポーズデータであって、前記画像取得インタフェースによって測定されたユーザの現在の姿勢に対応する前記ポーズデータを決定し、
前記画像取得インタフェースを介して取得されたアイトラッキング情報に少なくとも部分的に基づいて、視線推定を決定し、
前記画像取得インタフェースと通信可能な複数のプロセスの複数の特性に少なくとも部分的に基づいて、前記画像データ、前記ポーズデータ、及び前記視線推定の構成を決定し、
前記画像データ、前記ポーズデータ、及び前記視線推定の前記構成、
前記複数のプロセスの前記複数の特性、並びに
前記デバイスと関連付けられたハードウェアタイミングパラメータのうちの少なくとも１つに少なくとも部分的に基づいて、前記複数のプロセスのアクセススケジュールを決定する、１つ以上のプロセッサと、を備える、デバイス。
【請求項１５】
前記１つ以上のプロセッサが、
前記複数のプロセスのうちの第１のプロセスであって、第１の特性のセットによって特徴付けられる前記第１のプロセスに対する、第１の画像データ、第１のポーズデータ、及び第１の視線推定のうちの少なくとも１つを取得することと、
前記複数のプロセスのうちの第２のプロセスであって、第２の特性のセットによって特徴付けられる前記第２のプロセスに対する、第２の画像データ、第２のポーズデータ、及び第２の視線推定のうちの少なくとも１つを取得することと、
前記第１の画像データ、前記第１のポーズデータ、及び前記第１の視線推定を、前記第２の画像データ、前記第２のポーズデータ、及び前記第２の視線推定と統合して、前記画像データ、前記ポーズデータ、及び前記視線推定であって、前記第１の特性のセット及び前記第２の特性のセットに少なくとも部分的に基づいて構成される前記画像データ、前記ポーズデータ、及び前記視線推定を生成すること、
によって、前記複数のプロセスの前記複数の特性に少なくとも部分的に基づいて、前記画像データ、前記ポーズデータ、及び前記視線推定の前記構成を決定する、請求項１４に記載のデバイス。
【請求項１６】
前記アクセススケジュールが、決定論的モデルに基づいて決定され、前記１つ以上のプロセッサが、
前記複数のプロセスの第１のプロセスに対して、前記第１のプロセスに対する入力、前記入力を提供するハードウェア又は第２のプロセスのうちの少なくとも１つ、及び前記ハードウェア又は前記第２のプロセスのうちの少なくとも１つから前記入力を取得するための時間パラメータを決定し、
前記時間パラメータに少なくとも部分的に基づいて、前記第１のプロセスのウェイクタイムを計算する、請求項１４又は１５のいずれか一項に記載のデバイス。
【請求項１７】
前記１つ以上のプロセッサが、更に、
タイムスタンプと関連付けられているフレームをレンダリングのためにベースデバイスから取得し、
前記ポーズデータの軌跡及び前記タイムスタンプに基づいて、レンダリング時におけるレンダリングポーズを予測し、
前記レンダリング時における前記レンダリングポーズを使用して前記フレームを調整する、請求項１４から１６のいずれか一項に記載のデバイス。
【請求項１８】
前記１つ以上のプロセッサが、
前記画像データ、前記ポーズデータ、及び前記視線推定の前記構成、前記複数のプロセスの前記複数の特性、並びに前記デバイスからの前記ハードウェアタイミングパラメータのうちの少なくとも１つを取得するベースデバイスによってデータの収集をトリガし、前記データは、前記ベースデバイスによって他のデバイスからもまた収集されることと、
前記データに基づいて前記第２のデバイスによって決定される前記アクセススケジュールを前記第２のデバイスから受信することと、
によって、前記複数のプロセスのアクセススケジュールを決定する、請求項１４から１７のいずれか一項に記載のデバイス。
【請求項１９】
前記１つ以上のプロセッサが、更に、
表示のためのシーンを生成するために、前記アクセススケジュールに従って前記構成にアクセスし、
前記構成から得られたデータであって、前記画像データ、前記ポーズデータ、及び前記視線推定のうちの少なくとも１つのサブセットである前記データを使用して、かつ前記アクセススケジュールに従って、前記シーンを表示する、請求項１４から１８のいずれか一項に記載のデバイス。
【請求項２０】
前記１つ以上のプロセッサが、
前記複数のプロセスのうちのプロセスの予想実行時間を前記アクセススケジュールに基づいて決定することと、
前記構成に従って前記プロセスによって使用されるデータをフェッチすると、前記予想実行時間でデータアクセスするための前記プロセスをウェイクアップすることと、によって、前記アクセススケジュールに従って前記構成にアクセスする、請求項１９に記載のデバイス。
【請求項２１】
前記画像データ、前記ポーズデータ、及び前記視線推定が、記憶デバイスに記憶され、前記画像データ、前記ポーズデータ、及び前記視線推定の前記構成が、前記画像データ、前記ポーズデータ、及び前記視線推定を前記記憶デバイスに記憶するためのレイアウト又はシーケンシングのうちの少なくとも１つを含む、請求項１４から２０のいずれか一項に記載のデバイス。
【請求項２２】
前記画像取得インタフェースが、前記視野に関連付けられた前記画像データを取得するための画像センサを含む、請求項１４から２１のいずれか一項に記載のデバイス。
【請求項２３】
前記画像取得インタフェースが、前記ユーザの前記現在の姿勢を測定するためのＩＭＵを含む、請求項１４から２２のいずれか一項に記載のデバイス。
【請求項２４】
前記画像取得インタフェースが、前記アイトラッキング情報を取得するためのアイトラッキング装置を含む、請求項１４から２３のいずれか一項に記載のデバイス。
【請求項２５】
前記複数のプロセスの前記複数の特性が、前記画像データ、前記ポーズデータ、及び前記視線推定を使用する前記プロセスのシーケンスを含む、請求項１４から２４のいずれか一項に記載のデバイス。
【請求項２６】
前記ハードウェアタイミングパラメータが、画像センサ、ＩＭＵ、アイトラッキング装置、コントローラ、プロセッサ、又は通信デバイスのうちの少なくとも１つと関連付けられている、請求項１４から２５のいずれか一項に記載のデバイス。
【請求項２７】
符号化された命令を有する非一時的コンピュータ可読媒体であって、前記命令が、画像取得インタフェースを含むデバイスの１つ以上のプロセッサによって実行されると、前記デバイスに、
前記画像取得インタフェースによって取得された視野に関連付けられた画像データを取得させ、
慣性測定ユニット（ＩＭＵ）情報に少なくとも部分的に基づくポーズデータであって、前記画像取得インタフェースによって測定されたユーザの現在の姿勢に対応する前記ポーズデータを決定させ、
前記画像取得インタフェースを介して取得されたアイトラッキング情報に少なくとも部分的に基づいて、視線推定を決定させ、前記画像取得インタフェースと通信可能な複数のプロセスの複数の特性に少なくとも部分的に基づいて、前記画像データ、前記ポーズデータ、及び前記視線推定の構成を決定させ、
前記画像データ、前記ポーズデータ、及び前記視線推定の前記構成、前記複数のプロセスの前記複数の特性、並びに前記デバイスに関連付けられたハードウェアタイミングパラメータのうちの少なくとも１つに少なくとも部分的に基づいて、前記複数のプロセスのためのアクセススケジュールを決定させる、
非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、データ共有に関し、具体的には、決定論的プル／フェッチモデルを使用して低遅延でのデータ共有を提供するシステム、方法、及びデバイスに関する。
【背景技術】
【０００２】
物理的環境とは、人々が電子システムの助けなしに、感知及び／又は相互作用することができる物理的世界を指す。物理的な公園などの物理的環境は、物理的な木々、物理的な建物、及び物理的な人々などの物理的物品を含む。人々は、視覚、触覚、聴覚、味覚、及び臭覚などを介して、物理的環境を直接感知し、及び／又はそれと相互作用することができる。
【０００３】
対照的に、コンピュータ生成現実（computer-generated reality、ＣＧＲ）環境は、人々が電子システムを介して感知及び／又は相互作用する全体的又は部分的にシミュレーションされた環境を指す。ＣＧＲでは、人の物理的動作のサブセット又はその表現がトラッキングされ、それに応答して、ＣＧＲ環境内でシミュレートされた１つ以上の仮想オブジェクトの１つ以上の特性が、少なくとも１つの物理学の法則に適合するように調整される。例えば、ＣＧＲシステムは、人の頭部が回転するのを検出し、それに応じて、その人に提示するグラフィックコンテンツ及び音場を、そのような視界及び音が物理的環境において変化するであろうと似たように調整することができる。状況によっては（例えば、利用しやすさの理由から）、ＣＧＲ環境における仮想オブジェクト（単数又は複数）の特性（単数又は複数）の調整は、物理的動作の表現（例えば、音声コマンド）に応じて行われてもよい。
【０００４】
人は、視覚、聴覚、触覚、味覚及び嗅覚を含むこれらの感覚のうちの任意の１つを使用して、ＣＧＲオブジェクトを感知し、かつ／又はＣＧＲオブジェクトと相互作用してもよい。例えば、人は、３Ｄ空間において点音源の知覚を提供する、３Ｄ又は空間的広がりを有するオーディオ環境を作り出すオーディオオブジェクトを感知し、かつ／又はそれと相互作用することができる。別の例では、オーディオオブジェクトは、コンピュータ生成オーディオを含め、又は含めずに、物理的環境から周囲音を選択的に組み込むオーディオ透過性を可能にすることができる。いくつかのＣＧＲ環境では、人は、オーディオオブジェクトのみを感知し、及び／又はそれと相互作用することができる。
【０００５】
ＣＧＲの例としては、仮想現実及び複合現実が挙げられる。
【０００６】
仮想現実（virtual reality、ＶＲ）環境とは、１つ以上の感覚について、全面的にコンピュータ生成感覚の入力に基づくように設計されたシミュレーション環境を指す。ＶＲ環境は、人が感知及び／又は相互作用することができる複数の仮想オブジェクトを含む。例えば、木、建物、及び人々を表すアバターのコンピュータ生成画像は、仮想オブジェクトの例である。人は、コンピュータ生成環境内に人が存在することのシミュレーションを通じて、かつ／又はコンピュータ生成環境内での人の物理的動きのサブセットのシミュレーションを通じて、ＶＲ環境における仮想オブジェクトを感知し、かつ／又はそれと相互作用することができる。
【０００７】
コンピュータ生成感覚入力に全面的に基づくように設計されたＶＲ環境とは対照的に、複合現実（mixed reality、ＭＲ）環境は、コンピュータ生成感覚入力（例えば、仮想オブジェクト）を含むことに加えて、物理的環境からの感覚入力又はその表現を組み込むように設計されたシミュレーション環境を指す。仮想性の連続体上において、複合現実環境は、一方の端における完全な物理的環境と、他方の端における仮想現実環境との間にあるがこれらを含まないどこかにある。
【０００８】
いくつかのＭＲ環境では、コンピュータ生成感覚入力は、物理的環境からの感覚入力の変化に応答し得る。また、ＭＲ環境を提示するための電子システムの一部は、仮想オブジェクトが現実のオブジェクト（すなわち、物理的環境からの物理的物品又はその表現）と相互作用することを可能にするために、物理的環境に関する所在場所及び／又は向きをトラッキングすることができる。例えば、システムは、仮想の木が物理的な地面に対して静止して見えるような動きに責任を有し得る。
【０００９】
複合現実の例としては、拡張現実及び拡張仮想現実が挙げられる。
【００１０】
拡張現実（augmented reality、ＡＲ）環境は、１つ以上の仮想オブジェクトが物理的環境上又はその表現上に重ねられたシミュレーション環境を指す。例えば、ＡＲ環境を提示するための電子システムは、人が物理的環境を直接見ることができる透明又は半透明のディスプレイを有してもよい。システムは、透明又は半透明のディスプレイ上に仮想オブジェクトを提示するように構成されていてもよく、それによって、人はシステムを使用して、物理的環境上に重ねられた仮想オブジェクトを知覚する。あるいは、システムは、不透明ディスプレイと、物理的環境の表現である、物理的環境の画像又は動画をキャプチャする１つ以上の撮像センサとを有してもよい。システムは、画像又は動画を仮想オブジェクトと合成し、その合成物を不透明なディスプレイ上に提示する。人は、システムを使用して、物理的環境の画像又は動画によって物理的環境を間接的に見て、物理的環境上に重ねられた仮想オブジェクトを知覚する。本明細書で使用するとき、不透明ディスプレイ上に示される物理的環境の動画は、「パススルー動画」と呼ばれ、システムが、１つ以上の撮像センサ（単数又は複数）を使用して、物理的環境の画像をキャプチャし、不透明ディスプレイ上にＡＲ環境を提示する際にそれらの画像を使用することを意味する。更に代替的に、システムは、仮想オブジェクトを、物理的環境に、例えば、ホログラムとして又は物理的表面上に投影するプロジェクションシステムを有してもよく、それによって、人は、システムを使用して、物理的環境上に重ねられた仮想オブジェクトを知覚する。
【００１１】
拡張現実環境はまた、物理的環境の表現がコンピュータ生成感覚情報によって変換されるシミュレーション環境を指す。例えば、パススルー動画を提供する際に、システムは、１つ以上のセンサ画像を変換して、撮像センサによってキャプチャされた遠近法とは異なる選択された遠近法（例えば、視点）による面付けを行うことができる。別の例として、物理的環境の表現は、その一部分をグラフィカルに変更（例えば、拡大）することによって変換されてもよく、それにより、変更された部分を元のキャプチャ画像を表すが写実的ではないバージョンとすることができる。更なる例として、物理的環境の表現は、その一部分をグラフィカルに除去又は曖昧化することによって変換されてもよい。
【００１２】
拡張仮想現実（augmented virtuality、ＡＶ）環境は、物理的環境からの１つ以上の感覚入力を仮想環境又はコンピュータ生成環境が組み込むシミュレーション環境を指す。感覚入力は、物理的環境の１つ以上の特性の表現であり得る。例えば、ＡＶパークには、仮想の木及び仮想の建物があり得るが、人々は、物理的な人々を撮った画像から顔が写実的に再現される。別の例として、仮想オブジェクトは、１つ以上の撮像センサによって撮像された物理的物品の形状又は色を採用してもよい。更なる例として、仮想オブジェクトは、物理的環境における太陽の位置と整合性のある影を採用することができる。
【００１３】
人が様々なＣＧＲ環境を感知し、かつ／又はＣＧＲ環境と相互作用することを可能とする、多くの様々に異なる電子システムが存在する。例としては、スマートフォン、タブレット、デスクトップ／ラップトップコンピュータ、ヘッドマウントシステム、プロジェクションベースシステム、ヘッドアップディスプレイ（heads-up display、ＨＵＤ）、統合表示機能を有する車両ウィンドシールド、統合表示機能を有する窓、（例えば、コンタクトレンズと同様に）人の目に接して配置されるように設計されたレンズとして形成されたディスプレイ、ヘッドホン／イヤフォン、スピーカアレイ、入力システム（例えば、触覚フィードバックを有する若しくは有さない、ウェアラブル又はハンドヘルドコントローラ、及び／又はハンドトラッキング及び／又は他の身体のポーズ推定機能を有するカメラ）、が挙げられる。
【００１４】
ヘッドマウントシステムは、１つ以上のスピーカ（単数又は複数）及び一体型不透明ディスプレイを有してもよい。あるいは、ヘッドマウントシステムは、外部の不透明ディスプレイ（例えば、スマートフォン）を受け入れるように構成されたヘッドマウントエンクロージャ（ＨＭＥ）であってもよい。ヘッドマウントシステムは、物理的環境の画像又は動画をキャプチャするための１つ以上の撮像センサ、及び／又は物理的環境のオーディオをキャプチャするための１つ以上のマイクロフォンを組み込んでいてもよい。ヘッドマウントシステムは、不透明ディスプレイではなく、透明又は半透明のディスプレイを有してもよい。透明又は半透明のディスプレイは、媒体であって、それを通って画像を表す光が人の目に向けられる媒体を有してもよい。ディスプレイは、デジタル光投影、ＯＬＥＤ、ＬＥＤ、ｕＬＥＤ、液晶オンシリコン、レーザスキャン光源、又はこれらの技術の任意の組み合わせを利用することができる。媒体は、光導波路、ホログラム媒体、光結合器、光反射器、又はこれらの任意の組み合わせであってもよい。一実装形態において、透明又は半透明のディスプレイは、選択的に不透明になるように構成されていてもよい。プロジェクションベースシステムは、グラフィック画像を人間の網膜上に投影する網膜投影技術を採用することができる。プロジェクションシステムはまた、例えば、ホログラムとして、又は物理的表面上に、仮想オブジェクトを物理的環境内に投影するように構成されていてもよい。
【００１５】
ＣＧＲデバイス上で利用可能なコンテンツは、ますます没入型で、よりグラフィック集約型になっており、かつ、日常生活に普遍的に適用可能である。したがって、ＣＧＲデバイスにおけるハードウェアは、リソースを大量に消費するプロセスに適応し、ＣＧＲコンテンツに追従するように進化し続けている。しかしながら、複数のプロセスが同時にリソースを争い合うため、遅延及び多数の割り込みにより必然的にボトルネック効果が生じる。遅延が可視である場合の問題は、ユーザのエクスペリエンスに悪影響を及ぼし得る。
【図面の簡単な説明】
【００１６】
本開示は、当業者によって理解され得るように、いくつかの例示的な実装形態の態様を参照することによって、より詳細な説明を有してもよく、そのいくつかは添付図面に示されている。
【００１７】
【図１】いくつかの実装形態による、例示的な動作環境のブロック図である。
【００１８】
【図２】いくつかの実装形態による、ＣＧＲデータ共有のための割り込みモデルを示すブロック図である。
【００１９】
【図３】いくつかの実装形態による、プロセス間のＣＧＲデータ共有のための例示的な決定論的プル／フェッチモデルのブロック図である。
【００２０】
【図４】いくつかの実装形態による、決定論的プル／フェッチモデルに基づく例示的なＣＧＲデータ共有プロセスを示すブロック図である。
【００２１】
【図５Ａ】いくつかの実装形態による、プル／フェッチモデルで使用されるコントローラの一例のブロック図である。
【００２２】
【図５Ｂ】いくつかの実装形態による、例示的なコントローラ管理データ構成及びプロセスアクセススケジューリングを示すブロック図である。
【００２３】
【図６】いくつかの実装形態による、例示的なＣＧＲデバイスのブロック図である。
【００２４】
【図７Ａ】いくつかの実装形態による、ＣＧＲパイプラインを示す。
【００２５】
【図７Ｂ】いくつかの実装形態による、ＣＧＲパイプラインを実装する分散システムを示す。
【００２６】
【図８】いくつかの実装形態による、プロセス間で共有データにアクセスする方法のフローチャートである。
【００２７】
慣行により、図面に示される様々な特徴は縮尺どおりに描かれていない場合がある。したがって、様々な特徴部の寸法は明確化のために、任意に拡大又は縮小されている場合がある。加えて、いくつかの図面は、所与のシステム、方法、又はデバイスの構成要素の全てを描いていない場合がある。最後に、本明細書及び図の全体を通して、同様の特徴を有することを示すために同様の参照番号が使用される場合がある。
【発明の概要】
【００２８】
本明細書に開示される様々な実装形態は、プロセス間で共有データにアクセスするためのデバイス、システム、及び方法を含む。様々な実装形態では、本方法は、１つ以上のプロセッサと、非一時的メモリと、及び画像取得インタフェースとを含むデバイスにおいて実行される。本方法は、画像取得インタフェースによって取得された視野に関連付けられた画像データを取得することを含む。本方法は、慣性測定ユニット（ＩＭＵ）情報に少なくとも部分的に基づいてポーズデータを決定すること、を更に含み、そこで、ポーズデータは、画像取得インタフェースによって測定されたユーザの現在の姿勢に対応する。本方法は、画像取得インタフェースを介して取得されたアイトラッキング情報に少なくとも部分的に基づいて、視線推定を決定することを更に含む。本方法はまた、画像取得インタフェースと通信可能な複数のプロセスの複数の特性に少なくとも部分的に基づいて、画像データ、ポーズデータ、及び視線推定のための構成を決定することを更に含む。本方法は、画像データ、ポーズデータ、及び視線推定の構成、複数のプロセスの複数の特性、並びにデバイスに関連付けられたハードウェアタイミングパラメータのうちの少なくとも１つに少なくとも部分的に基づいて、複数のプロセスのためのアクセススケジュールを決定すること、を更に含む。
【００２９】
いくつかの実装形態によれば、デバイスは、１つ以上のプロセッサと、非一時的メモリと、１つ以上のプログラムと、を含む。１つ以上のプログラムは、非一時的メモリに記憶され、１つ以上のプロセッサによって実行されるように構成されており、１つ以上のプログラムは、本明細書に記載の方法のいずれかを実行するか又は実行させる命令を含む。いくつかの実装形態によれば、非一時的コンピュータ可読記憶媒体は内部に命令を記憶しており、この命令は、デバイスの１つ以上のプロセッサによって実行されると、本明細書内で説明する方法のうちのいずれかを実行、又はデバイスに実行させる。いくつかの実装形態によれば、デバイスは、１つ以上のプロセッサと、非一時的メモリと、本明細書に記載される方法のいずれかを実行する又は実行させる手段と、を含む。
【発明を実施するための形態】
【００３０】
図面に示される例示的な実装形態の十分な理解を提供するために、数多くの詳細が記載されている。しかしながら、図面は単に本開示のいくつかの例示的な態様を示すものであり、したがって、限定的であると考慮されるべきではない。当業者であれば、他の有効な態様及び／又は変形が本明細書に記載される特定の詳細全てを含むものではないと理解するであろう。更に、本明細書に記載される例示的な実装形態のより適切な態様を不明瞭にしないよう、周知のシステム、方法、構成要素、デバイス及び回路は、網羅的に詳細を記載していない。
【００３１】
上述のように、リソースの割り込みモデルに従うＣＧＲデバイス上のプロセスは、多くの場合、リソースに対して同時に競合する。結果として、ボトルネック効果により、ユーザのエクスペリエンスに悪影響を及ぼす遅延を引き起こし得る。本明細書に開示される様々な実装形態は、割り込みモデルから離れ決定論的プル／フェッチモデルに移行している。プロセスがデータをセットされた時間においてフェッチすることを可能にするアクセススケジュールが決定される。アクセススケジュールは、システムパラメータ及びユーザポーズ情報などの、既知の（例えば、決定論的）情報に基づいて決定される。したがって、本明細書に記載される様々な実装形態は、上述の欠点、具体的にはデータアクセスに関与するものに対処する。結果として、消費されるメモリ及び処理リソースがより少なくなる。当然のことながら、データがＣＧＲディスプレイパイプラインを通過しているときの遅延が減少するため、全体的なユーザエクスペリエンスを改善することができる。
【００３２】
図１は、いくつかの実装形態による、例示的な動作環境１００のブロック図である。関連する特徴が示されているが、当業者であれば、本明細書に開示される例示的な実施形態のより適切な態様を曖昧にしないように簡潔化するために、様々な他の特徴が示されていないことを、本開示から理解するであろう。そのために、非限定的な例として、動作環境１００は、コントローラ１０２及びＣＧＲデバイス１０４を含む。
【００３３】
いくつかの実装形態では、ＣＧＲデバイス１０４は、タブレット又は携帯電話に対応する。様々な実装形態では、ＣＧＲデバイス１０４は、ヘッドマウントデバイス（ＨＭＤ）、又はタブレット若しくは携帯電話が中に挿入されたヘッドマウントエンクロージャ（ＨＭＥ）などのヘッドマウントシステムに対応する。いくつかの実装形態では、ＣＧＲデバイス１０４は、ＣＧＲコンテンツをユーザに提示するように構成されている。いくつかの実装形態では、ＣＧＲデバイス１０４は、ソフトウェア、ファームウェア、及び／又はハードウェアの適切な組み合わせを含む。
【００３４】
いくつかの実装形態によれば、ＣＧＲデバイス１０４は、ＣＧＲデバイス１０４の視野１１１においてテーブル１０７を含むシーン１０６内にユーザが仮想的及び／又は物理的に存在している間に、ユーザにディスプレイ１２２を介してＣＧＲコンテンツを提示する。いくつかの実装形態では、ＣＧＲデバイス１０４は、仮想コンテンツ（例えば、仮想円筒１０９）を提示し、ディスプレイ１２２上におけるシーン１０６の（例えば、テーブル１０７の表現１１７を含む）動画パススルーを可能にするように構成されている。いくつかの実装形態では、ＣＧＲデバイス１０４は、仮想コンテンツを提示し、シーン１０６の光学的シースルーを可能にするように構成されている。
【００３５】
いくつかの実装形態では、ユーザは、自分の手（単数又は複数）にＣＧＲデバイス１０４を保持する。いくつかの実装形態では、ユーザは、自分の頭部にＣＧＲデバイス１０４を装着する。したがって、ＣＧＲデバイス１０４は、ＣＧＲコンテンツを表示するために提供される１つ以上のＣＧＲディスプレイを含む。例えば、ＣＧＲデバイス１０４は、ユーザの視野を包囲する。いくつかの実装形態では、ＣＧＲデバイス１０４は、ＣＧＲコンテンツを提示するように構成され、ユーザがＣＧＲデバイス１０４を着用しないＣＧＲチャンバ、エンクロージャ、又は部屋と置き換えられる。
【００３６】
いくつかの実装形態では、コントローラ１０２は、ユーザに対するＣＧＲコンテンツの提示を管理及び調整するように構成されている。いくつかの実装形態では、コントローラ１０２は、ソフトウェア、ファームウェア、及び／又はハードウェアの好適な組み合わせを含む。いくつかの実装形態では、コントローラ１０２は、シーン１０６に対してローカル又はリモートであるコンピューティングデバイスである。例えば、コントローラ１０２は、シーン１０６内に位置するローカルサーバである。別の例では、コントローラ１０２は、シーン１０６の外側に位置するリモートサーバ（例えば、クラウドサーバ、中央サーバなど）である。いくつかの実装形態では、コントローラ１０２は、１つ以上の有線又は無線通信チャネル１４４（例えば、ＢＬＵＥＴＯＯＴＨ、ＩＥＥＥ  ８０２．１１ｘ、ＩＥＥＥ  ８０２．１６ｘ、ＩＥＥＥ  ８０２．３ｘなど）を介して、ＣＧＲデバイス１０４と通信可能に結合される。いくつかの実装形態では、コントローラ１０２の機能は、ＣＧＲデバイス１０４によって提供され、及び／又はＣＧＲデバイス１０４と組み合わされる。
【００３７】
図１に示すように、ＣＧＲデバイス１０４は、シーン１０６の表現を提示する。いくつかの実装形態では、シーン１０６の表現は、コントローラ１０２及び／又はＣＧＲデバイス１０４によって生成される。いくつかの実装形態では、シーン１０６の表現は、シーン１０６のシミュレートされた置換である仮想シーンを含む。換言すれば、いくつかの実装形態では、シーン１０６の表現は、コントローラ１０２及び／又はＣＧＲデバイス１０４によってシミュレートされる。そのような実装形態では、シーン１０６の表現は、ＣＧＲデバイス１０４が位置するシーン１０６とは異なる。いくつかの実装形態では、シーン１０６の表現は、（例えば、仮想円筒１０９を含む）シーン１０６の修正されたバージョンである拡張されたシーンを含む。例えば、いくつかの実装形態では、シーン１０６の表現を生成するために、コントローラ１０２及び／又はＣＧＲデバイス１０４は、シーン１０６の画像を修正（例えば、拡張）する。いくつかの実装形態では、コントローラ１０２及び／又はＣＧＲデバイス１０４は、シーン１０６の複製をシミュレートすることによってシーン１０６の表現を生成する。いくつかの実装形態では、コントローラ１０２及び／又はＣＧＲデバイス１０４は、シーン１０６のシミュレートされた複製からアイテムを除去及び／又は追加することによって、シーン１０６の表現を生成する。
【００３８】
図２は、ＣＧＲデータ共有のための割り込みモデル２００を示すブロック図である。いくつかの実装形態では、シーン１０６の表現を生成するために（図１に示すように）、複数のプロセス、例えば、プロセス１  ２１０−１、プロセス２  ２１０−２、プロセス３２１０−３、・・・プロセスＮ  ２１０−Ｎは、（図１に示すように）ＣＧＲデバイス１０４によって得られた生データを入力として取得する。例えば、生データは、画像センサ（単数又は複数）によって取得された画像データ２３０、ＩＭＵによって取得されたポーズデータ２４０、アイトラッキング装置によって取得された情報から導出された視線推定データ２５０、及びＣＧＲデバイス１０４によって取得された他のデータ２６０、を含む。いくつかの実装形態では、複数のプロセス２１０は、１つのプロセスからの出力が別のプロセスによって入力として使用され、例えば、プロセス２  ２１０−２からの出力がプロセス３  ２１０−３への入力であるように、互いに依存している。いくつかの実装形態では、プロセス２１０からの生データ及び／又は出力は、通信経路２２０、例えば、コントローラ１０２の通信インタフェース（単数又は複数）、及び／又はＣＧＲデバイス１０４の通信インタフェース（単数又は複数）を介して確立された通信経路を通じて通信される。
【００３９】
図２に示すように、プロセス１  ２１０−１が画像データ２３０及び視線推定データ２５０を必要とする場合、プロセス１  ２１０−１は、画像データ２３０のコピー及び視線推定データ２５０のコピーを入力として取得するために、画像センサ及びアイトラッキング装置に割り込む。同様に、プロセス２  ２１０−２もまた画像データ２３０及び視線推定データ２５０を必要とする場合、プロセス２  ２１０−２は、画像データ２３０のコピー及びポーズ推定データ２５０のコピーを入力として取得するために、画像センサ及びアイトラッキング装置に割り込む。別の例では、図２に示すように、プロセス３  ２１０−３は、プロセス２  ２１０−２からの入力、ポーズデータ２４０、及び他のデータ２６０を必要とする。プロセス３  ２１０−３は、ポーズデータ２４０及び他のデータ２６０を取得するために、ＩＭＵ及び他のセンサ（単数又は複数）に割り込みながら、プロセス２  ２１０−２の完了を待つ。
【００４０】
割り込みモデル２００は、いくつかの理由で非効率的である。第１に、複数のプロセス（例えば、プロセス１  ２１０−１及びプロセス２  ２１０−２）がリソース（例えば、画像データ２３０及び視線推定データ２５０）に対して競合している場合、割り込みは、複数のボトルネック、例えば、センサにおける少なくとも１つのボトルネック、及び通信経路２２０における別のボトルネックを作り出していた。第２に、データの複数のコピーが複数のプロセスに対して作成されるため、割り込みモデル２００は、異なるタスクにわたってメモリを共有しない。したがって、メモリ使用が非効率的である。ボトルネック、非効率的なメモリ利用、及びプロセス依存性からのカスケード効果のため、割り込みモデル２００は、ＣＧＲコンテンツのリアルタイムストリーミングのための遅延要件を満たすことができない。したがって、割り込みモデル２００を使用して提示されるＣＧＲシーンは、ユーザに乗り物酔いを引き起こし得る。
【００４１】
図３は、いくつかの実施形態による、プロセス間でのＣＧＲデータ共有のための例示的な決定論的プル／フェッチモデル３００のブロック図である。決定論的システムは、典型的には、システムの将来状態の進展においてランダム性を伴わない。このように、決定論的モデルは、所与の開始条件又は初期状態から同じ出力を生成する。したがって、決定論的モデル３００を使用して、システムは、データがいつ生成され、どこからアクセスされるかを予測することができる。したがって、プル／フェッチモデル３００は、データがフェッチされる準備ができているときに、取り出しに効率的な位置からデータを取り出すことを可能にする。それゆえ、そのようなシステムでは、ボトルネックが低減され、リソースの競合が減少する。
【００４２】
例えば、図３は、２つのプロセス、すなわちプロセスＭ及びプロセスＮを示し、そこで、プロセスＮはプロセスＭからの出力に依存し、プロセスＭはカメラによって撮影された画像データをフェッチする。システムは、カメラ露光時間Δ１などのハードウェアタイミングパラメータ、並びにプロセスの特性、例えば、プロセスＭの処理時間Δ２、及び／又はプロセスＭ及びＮに対する入力データのタイプを学習する。これらのパラメータ及び特性は、プロセスがデータをフェッチするタイミング、及びデータがフェッチされる場所を決定するためにシステムによって使用される。図３では、システムは、システム同期クロックを使用して開始時間（例えば、Ｔ１）、予想カメラ動作持続時間（例えば、Ｔ２〜Ｔ３）、及び予想プロセスＭ実行時間（Ｔ４〜Ｔ５）を測定し、プロセスＭのウェイクアップ時間Ｔ４及びプロセスＮのウェイクアップ時間Ｔ６を計算する。
【００４３】
いくつかの実施形態では、決定論的システムは、各プロセスに対して計算されたウェイクアップ時間を含むプロセスのためのアクセススケジュールを生成する。いくつかの実施形態では、各タスク間、例えば、Ｔ１とＴ２との間、Ｔ３とＴ４との間、及びＴ５とＴ６との間の期間での閾値時間量が確保される。閾値時間量は、プロセス及び／又はハードウェア構成要素間の通信遅延のために確保される。例えば、Ｔ１とＴ２との間の時間は、システムがカメラに画像データの取得を開始するように通知するためのものであり、Ｔ３とＴ４との間の時間は、カメラがプロセスＭをウェイクアップするためのものであり、Ｔ５とＴ６との間の時間は、プロセスＭがプロセスＮをウェイクアップするためのものである。いくつかの実施形態では、閾値時間量もまた、アクセススケジュール内に記録される。アクセススケジュールに続いて、ウェイクアップすると、プロセスＭ及びＮに対する入力は、フェッチされる準備が整う。したがって、図２に示す割り込みモデル２００とは対照的に、図３に示すようなプル／フェッチモデル３００は、システムレベルにおける制約を低減し、システム性能を全体として向上させる。
【００４４】
図４は、いくつかの実装形態による、決定論的プル／フェッチモデル３００に基づくＣＧＲデータ共有プロセス４００を示すブロック図である。いくつかの実装形態では、（図１に示すように）シーン１０６の表現を生成するために、複数のプロセス、例えば、プロセス１  ４１０−１、プロセス２  ４１０−２、プロセス３  ４１０−３、・・・プロセスＮ  ４１０−Ｎは、（図１に示すように）ＣＧＲデバイス１０４によって取得された生データを受信する。例えば、生データは、画像センサ（単数又は複数）によって取得された画像データ４３０、ＩＭＵによって取得されたポーズデータ４４０、アイトラッキング装置によって取得された情報から導出された視線推定データ４５０、及びＣＧＲデバイス１０４によって取得された他のデータ４６０、を含む。いくつかの実装形態では、複数のプロセスは、１つのプロセスからの出力が別のプロセスによって入力として使用され、例えば、プロセス２  ４１０−２からの出力がプロセス３  ４１０−３への入力であるように、互いに依存している。いくつかの実装形態では、複数のプロセス４１０からの生データ及び／又は出力は、通信経路４２０、例えば、コントローラ１０２の通信インタフェース（単数又は複数）、及び／又はＣＧＲデバイス１０４の通信インタフェース（単数又は複数）を介して確立された通信経路を通じて通信される。
【００４５】
図４に示すように、決定論的モデル３００を使用して、コントローラ１０２は、バッファ４２５内のデータ４２７のデータ構成（例えば、レイアウト及び／又はシーケンシング）を指示し、例えば、バッファ４２５内のデータがプル／フェッチされる準備が整うと、アクセススケジュールに従って複数のプロセス４１０をウェイクアップする。例えば、プロセス２  ４１０−２の画像データ４２７−２（図４では（Ｉ，２）として表されている）及びプロセス３  ４１０−３の画像データ４２７−４（図４では（Ｉ，３）として表されている）は、カメラがキャプチャした画像データ４３０から取得される。プロセス２  ４１０−２の画像データ４２７−２、及びプロセス３  ４１０−３の画像データ４２７−４は、画像データ４２７−２及び４２７−４がデータストリーム内のプロセス４１０に提供されると、プロセス２  ４１０−２及びプロセス３  ４１０−３がアクセススケジュールに従ったシーケンスでウェイクアップするようなレイアウト及び／又はシーケンスで、バッファ４２５内に構成される。具体的には、プロセス３  ４１０−３がウェイクアップすると、画像データ４２７−４並びにプロセス２  ４１０−２からの出力がプル／フェッチされる準備が整う。
【００４６】
図５Ａは、いくつかの実装形態による、上述したプル／フェッチモデルで使用されるコントローラ１０２の一例のブロック図である。図５Ｂは、いくつかの実装形態による、コントローラ１０２によって管理されるデータ構成及びプロセスアクセススケジューリングを示すブロック図である。図５Ｂは、いくつかの実装形態による、図５Ａに示すコントローラ１０２によって管理される例示的なＣＧＲシーン生成を示すために使用されている。特定の特徴が示されているが、当業者は、本明細書に開示される実装形態のより適切な態様を曖昧にしないよう、簡潔にするために様々な他の特徴が示されていないことを、本開示から理解されよう。そのために、非限定的な例として、図５Ａに示すように、いくつかの実装形態では、コントローラ１０２は、１つ以上の処理ユニット５０２（例えば、マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、グラフィック処理ユニット（ＧＰＵ）、中央処理ユニット（ＣＰＵ）、処理コアなど）、１つ以上の入出力（Ｉ／Ｏ）デバイス５０６、１つ以上の通信インタフェース５０８（例えば、ユニバーサルシリアルバス（ＵＳＢ）、ＦＩＲＥＷＩＲＥ、ＴＨＵＮＤＥＲＢＯＬＴ、ＩＥＥＥ  ８０２．３ｘ、ＩＥＥＥ  ８０２．１１ｘ、ＩＥＥＥ  ８０２．１６ｘ、グローバル移動通信システム（ＧＳＭ）、符号分割多元接続（ＣＤＭＡ）、時分割多元接続（ＴＤＭＡ）、グローバル測位システム（ＧＰＳ）、赤外線（ＩＲ）、ＢＬＵＥＴＯＯＴＨ、ＺＩＧＢＥＥ、及び／又は同様のタイプのインタフェース）、１つ以上のプログラミング（例えば、Ｉ／Ｏ）インタフェース５１０、メモリ５２０、並びにこれら及び様々な他の構成要素を相互接続するための１つ以上の通信バス５０４、を含む。
【００４７】
いくつかの実装形態では、１つ以上の通信バス５０４は、システム構成要素間を相互接続し、システム構成要素間の通信を制御する回路構成を含む。いくつかの実装形態では、１つ以上のＩ／Ｏデバイス５０６は、キーボード、マウス、タッチパッド、ジョイスティック、１つ以上のマイクロフォン、１つ以上のスピーカ、１つ以上の画像センサ、１つ以上のディスプレイなどのうちの少なくとも１つを含む。
【００４８】
メモリ５２０は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダブルデータレートランダムアクセスメモリ（ＤＤＲＲＡＭ）、又は他のランダムアクセスソリッドステートメモリデバイスなどの高速ランダムアクセスメモリを含む。いくつかの実装形態では、メモリ５２０は、１つ以上の磁気ディスク記憶デバイス、光ディスク記憶デバイス、フラッシュメモリデバイス、又はその他の不揮発性記憶デバイスなどの不揮発性メモリを含む。メモリ５２０は、１つ以上の処理ユニット５０２からリモートに位置する１つ以上の記憶デバイスを任意選択的に含む。メモリ５２０は、非一時的コンピュータ可読記憶媒体を含む。いくつかの実装形態では、メモリ５２０、又はメモリ５２０の非一時的コンピュータ可読記憶媒体は、任意選択のオペレーティングシステム５３０及びＣＧＲコンテンツモジュール５４０を含む、以下のプログラム、モジュール及びデータ構造、又はそれらのサブセットを記憶する。
【００４９】
オペレーティングシステム５３０は、様々な基本システムサービスを処理するための手順、及びハードウェア依存タスクを実行するための手順を含む。いくつかの実装形態では、ＣＧＲコンテンツモジュール５４０は、１人以上のユーザのためのＣＧＲコンテンツ（例えば、１人以上のユーザのための単一のＣＧＲコンテンツのセット、又は１人以上のユーザのそれぞれのグループのための複数のＣＧＲコンテンツのセット）の提示を管理及び調整するように構成されている。そのために、様々な実装形態では、ＣＧＲコンテンツモジュール５４０は、データ取得ユニット５４２、トラッキングユニット５４４、調整ユニット５４６、データ送信ユニット５４８、及びデータアクセスユニット５５０を含む。
【００５０】
いくつかの実装形態では、データ取得ユニット５４２は、少なくともＣＧＲデバイス１０４からデータ（例えば、画像データ、ポーズデータ、視線推定、提示データ、相互作用データ、センサデータ、位置データなど）を取得するように構成されている。そのために、様々な実装形態では、データ取得ユニット５４２は、そのための命令及び／又はロジック、並びにそのためのヒューリスティックス及びメタデータを含む。
【００５１】
いくつかの実装形態では、トラッキングユニット５４４は、シーン１０６をマッピングし、シーン１０６に関する少なくともＣＧＲデバイス１０４の位置／場所をトラッキングするように構成されている。そのために、様々な実装形態では、トラッキングユニット５４４は、そのための命令及び／又はロジック、並びにそのためのヒューリスティックス及びメタデータを含む。
【００５２】
いくつかの実装形態では、調整ユニット５４６は、ＣＧＲデバイス１０４によるユーザへのＣＧＲコンテンツの提示を管理及び調整するように構成されている。ＣＧＲコンテンツの提示を管理及び調整するために、いくつかの実装形態では、調整ユニット５４６は、プロセス、データ記憶、及びハードウェア特性に関連する情報を取得するように構成されている。次いで、この情報は、調整ユニット５４６によって使用され、システムレベルでプロセスを調整する。そのために、様々な実装形態では、調整ユニット５４６は、そのための命令及び／又はロジック、並びにそのためのヒューリスティックス及びメタデータを含む。
【００５３】
いくつかの実装形態では、データ送信ユニット５４８は、少なくともＣＧＲデバイス１０４にデータ（例えば、提示データ、位置データなど）を送信するように構成されている。そのために、様々な実装形態では、データ送信ユニット５４８は、そのための命令及び／又はロジック、並びにそのためのヒューリスティックス及びメタデータを含む。
【００５４】
いくつかの実装形態では、データアクセスユニット５５０は、データ取得ユニット５４２から取得されたデータをプロセスがフェッチすることを可能にするアクセススケジュールを決定するように構成されている。いくつかの実装形態では、データアクセスユニット５５０は、プロセスによる効率的なデータ取り出しのためのデータ構成５５２を決定する。いくつかの実装形態では、データアクセスユニット５５０はまた、プロセスがデータをプル又はフェッチするためのアクセススケジュール５５４を決定する。そのために、様々な実装形態では、データ送信ユニット５４８は、そのための命令及び／又はロジック、並びにそのためのヒューリスティックス及びメタデータを含む。
【００５５】
例えば、図５Ｂでは、シーン認識プロセス５６０は、シーン１０６を認識するための画像データ及びポーズデータ５８０を取得する。ユーザが視線をシーン１０６内の関心領域（ＲＯＩ）５７２に近接して固定したことをアイトラッキング装置が検出すると、ＲＯＩ認識プロセス５６２は、視線推定データ５８２に基づいて画像データ内のＲＯＩ画像データ５９０を特定する。続いて、オブジェクト認識プロセス５６４は、ＲＯＩ画像データ５９０を分析し、ＲＯＩ  ５７２内のオブジェクト５７４を認識する。図５Ｂに示すように、プロセス５６０、５６２、及び５６４は、アクセススケジュール５５４に従ってデータ構成５５２にアクセスし、そこでアクセススケジュール５５４は、各プロセスの開始時間などの情報を含む。また、図５Ｂに示すように、データ構成５５２内のデータは、スケジュールされたフェッチに適応するように構成される。例えば、ＲＯＩ画像データ５９０は、ＲＯＩ認識プロセス５６２及びオブジェクト認識プロセス５６４によって使用されるため、ＲＯＩ画像データ５９０は非ＲＯＩ画像データ５９２とは別個に記憶され、より頻繁な又はより緊急性の高いアクセスに適応する。
【００５６】
前述の図５Ａを参照すると、データ取得ユニット５４２、トラッキングユニット５４４、調整ユニット５４６、データ送信ユニット５４８、及びデータアクセスユニット５５０は、単一のデバイス（例えば、コントローラ１０２）上に存在するものとして示されているが、他の実装形態では、データ取得ユニット５４２、トラッキングユニット５４４、調整ユニット５４６、データ送信ユニット５４８、及びデータアクセススケジューリングユニット５５０の任意の組み合わせを、別個のコンピューティングデバイス内に配置し得ることを理解されたい。
【００５７】
更に、図５Ａは、本明細書に記載される実装形態の構造概略図としてではなく、特定の実施形態に存在する様々な特徴の機能的な説明として意図されている。当業者によって認識されるように、別々に示された項目を組み合わせることができ、また、一部の項目は分離することができる。例えば、図５Ａに別々に示されるいくつかの機能モジュールは、単一のモジュール内に実装することができ、単一の機能ブロックの様々な機能は、様々な実装形態において１つ以上の機能ブロックによって実装され得る。モジュールの実際の数並びに特定の機能の分割及びそれらの間にどのように機能が割り当てられるかは、実施形態によって異なり、いくつかの実装形態では、特定の実施形態のために選択されたハードウェア、ソフトウェア又はファームウェアの特定の組み合わせに部分的に依存する。
【００５８】
図６は、いくつかの実装形態による、例示的なＣＧＲデバイス１０４のブロック図である。特定の特徴が示されているが、当業者は、本明細書に開示される実装形態のより適切な態様を曖昧にしないよう、簡潔にするために様々な他の特徴が示されていないことを、本開示から理解されよう。そのために、非限定的な例として、いくつかの実装形態では、ＣＧＲデバイス１０４は、１つ以上の処理ユニット６０２（例えば、マイクロプロセッサ、ＡＳＩＣ、ＦＰＧＡ、ＧＰＵ、ＣＰＵ、処理コアなど）、１つ以上の入出力（Ｉ／Ｏ）デバイス６０６、１つ以上の通信インタフェース６０８（例えば、ＵＳＢ、ＦＩＲＥＷＩＲＥ、ＴＨＵＮＤＥＲＢＯＬＴ、ＩＥＥＥ  ８０２．３ｘ、ＩＥＥＥ  ８０２．１１ｘ、ＩＥＥＥ  ８０２．１６ｘ、ＧＳＭ、ＣＤＭＡ、ＴＤＭＡ、ＧＰＳ、赤外線、ＢＬＵＥＴＯＯＴＨ（登録商標）、ＺＩＧＢＥＥ、及び／又は同様のタイプのインタフェース）、１つ以上のプログラミング（例えば、Ｉ／Ｏ）インタフェース６１０、１つ以上のＣＧＲディスプレイ６１２、１つ以上の画像取得インタフェース６１４（例えば、任意選択の内向き及び／又は外向き画像センサ）、メモリ６２０、並びにこれらの及び様々な他の構成要素を相互接続するための１つ以上の通信バス６０４、を含む。
【００５９】
いくつかの実装形態では、１つ以上の通信バス６０４は、システム構成要素間を相互接続し、システム構成要素間の通信を制御する回路構成を含む。いくつかの実装形態では、１つ以上のＩ／Ｏデバイス６０６は、１つ以上の生理学的センサ（例えば、血圧モニタ、心拍モニタ、血液酸素センサ、血糖センサなど）、１つ以上のマイクロフォン、１つ以上のスピーカ、触覚エンジン、及び／又は同様のもののうちの少なくとも１つを含む。
【００６０】
いくつかの実装形態では、１つ以上のＣＧＲディスプレイ６１２は、ＣＧＲコンテンツをユーザに提示するように構成されている。いくつかの実施形態では、１つ以上のＣＧＲディスプレイ６１２は、ホログラフィック、デジタル光処理（ＤＬＰ）、液晶ディスプレイ（ＬＣＤ）、反射型液晶（ＬＣｏＳ）、有機発光電界効果トランジスタ（ＯＬＥＴ）、有機発光ダイオード（ＯＬＥＤ）、表面伝導型電子放出素子ディスプレイ（ＳＥＤ）、電界放出ディスプレイ（ＦＥＤ）、量子ドット発光ダイオード（ＱＤ−ＬＥＤ）、微小電気機械システム（ＭＥＭＳ）、及び／又は同様のディスプレイタイプに相当する。いくつかの実施形態では、１つ以上のＣＧＲディスプレイ６１２は、回折、反射、偏光、ホログラフィックなどの、導波路ディスプレイに相当する。例えば、ＣＧＲデバイス１０４は、単一のＡＲ／ＶＲディスプレイを含む。別の例では、ＣＧＲデバイス１０４は、ユーザの両目のためのＣＧＲディスプレイを含む。
【００６１】
いくつかの実装形態では、１つ以上の画像取得インタフェース６１４は、ＣＧＲコンテンツ生成のためのデータを取得するように構成されている。いくつかの実装形態では、１つ以上の画像取得インタフェース６１４は、１つ以上の画像センサ、慣性測定ユニット（ＩＭＵ）、加速度計、ジャイロスコープ、温度計、１つ以上の奥行きセンサ（例えば、構造化光、飛行時間など）、アイトラッキング装置のうちの少なくとも１つを含む。例えば、１つ以上の画像センサは、（例えば、相補型金属酸化膜半導体（ＣＭＯＳ）画像センサ又は電荷結合デバイス（ＣＣＤ）画像センサを備えた）１つ以上のＲＧＢカメラ、赤外線カメラ、イベントベースのカメラなどに相当する。
【００６２】
メモリ６２０は、ＤＲＡＭ、ＳＲＡＭ、ＤＤＲ  ＲＡＭ又は他のランダムアクセスソリッドステートメモリデバイスなどの、高速ランダムアクセスメモリを含む。いくつかの実装形態では、メモリ６２０は、１つ以上の磁気ディスク記憶デバイス、光ディスク記憶デバイス、フラッシュメモリデバイス、又は他の不揮発性ソリッドステート記憶デバイスなどの不揮発性メモリを含む。メモリ６２０は、１つ以上の処理ユニット６０２からリモートに位置する１つ以上の記憶デバイスを任意選択的に含む。メモリ６２０は、非一時的コンピュータ可読記憶媒体を含む。いくつかの実装形態では、メモリ６２０、又はメモリ６２０の非一時的コンピュータ可読記憶媒体は、任意選択のオペレーティングシステム６３０及びＣＧＲ提示モジュール６４０を含む、以下のプログラム、モジュール及びデータ構造、又はそれらのサブセットを記憶する。
【００６３】
オペレーティングシステム６３０は、様々な基本システムサービスを処理するための手順、及びハードウェア依存タスクを実行するための手順を含む。いくつかの実装形態では、ＣＧＲ提示モジュール６４０は、１つ以上のＣＧＲディスプレイ６１２を介してＣＧＲコンテンツをユーザに提示するように構成されている。そのために、様々な実装形態では、ＣＧＲ提示モジュール６４０は、データ取得ユニット６４２、ＣＧＲ提示ユニット６４４、アイトラッキングユニット６４６、及びデータ送信ユニット６４８を含む。
【００６４】
いくつかの実装形態では、データ取得ユニット６４２は、少なくともコントローラ１０２からデータ（例えば、画像データ、ポーズデータ、提示データ、相互作用データ、センサデータ、位置データなど）を取得するように構成されている。そのために、様々な実装形態では、データ取得ユニット６４２は、そのための命令及び／又はロジック、並びにそのためのヒューリスティックス及びメタデータを含む。
【００６５】
いくつかの実装形態では、ＣＧＲ提示ユニット６４４は、１つ以上のＣＧＲディスプレイ６１２を介してＣＧＲコンテンツを提示するように構成されている。そのために、様々な実装形態では、ＣＧＲ提示ユニット６４４は、そのための命令及び／又はロジック、並びにそのためのヒューリスティックス及びメタデータを含む。いくつかの実装形態では、ＣＧＲ提示ユニット６４４は、第１の波長範囲の光を変形させるアイピースを通して、第１の波長範囲の放射光を含む画像を投影するように構成されている。いくつかの実施形態では、ＣＧＲ提示ユニット６４４は、実質的な歪みなしに第２の波長範囲の光を通過させる一方、第１の波長範囲の光は反射及び屈折させるアイピースを通して、第１の波長の放射光を含む画像を投影するように構成されている。
【００６６】
いくつかの実装形態では、アイトラッキングユニット６４６は、アイピースとディスプレイとの間に配置された１つ以上の光源を使用して、第２の波長範囲の光を放射し、カメラを使用して第２の波長範囲内の光を検出するように構成されている。様々な実装形態では、１つ以上の光源は、ユーザの目を照らし、カメラはユーザの目から反射された光を検出する。そのために、様々な実装形態では、アイトラッキングユニット６４６は、そのための命令及び／又はロジック、並びにそのためのヒューリスティックス及びメタデータを含む。いくつかの実装形態では、アイトラッキングユニット６４６は、アイピースを通して第２の波長範囲の光を放射し、ユーザの目によって反射された第２の波長範囲の光を検出するように構成されている。いくつかの実装形態では、アイトラッキングユニット６４６は、ユーザの目から検出された光反射に少なくとも部分的に基づいて、視線推定を提供する。
【００６７】
いくつかの実装形態では、データ送信ユニット６４８は、少なくともコントローラ１０２にデータ（例えば、提示データ、位置データなど）を送信するように構成されている。そのために、様々な実装形態では、データ送信ユニット６４８は、そのための命令及び／又はロジック、並びにそのためのヒューリスティックス及びメタデータを含む。
【００６８】
データ取得ユニット６４２、ＣＧＲ提示ユニット６４４、アイトラッキングユニット６４６、及びデータ送信ユニット６４８は、単一のデバイス（例えば、ＣＧＲデバイス１０４）上に存在するものとして示されているが、他の実装形態では、データ取得ユニット６４２、ＣＧＲ提示ユニット６４４、アイトラッキングユニット６４６、及びデータ送信ユニット６４８の任意の組み合わせを、別個のコンピューティングデバイス内に配置してもよいことを理解されたい。
【００６９】
更に、図６は、本明細書に記載される実装形態の構造概略図としてではなく、特定の実施形態に存在する様々な特徴の機能的な説明として意図されている。当業者によって認識されるように、別々に示された項目を組み合わせることができ、また、一部の項目は分離することができる。いくつかの実装形態では、図６に別々に示すいくつかの機能モジュールは、単一のモジュール内に実装することができ、単一の機能ブロックの様々な機能は、様々な実装形態において１つ以上の機能ブロックによって実装され得る。モジュールの実際の数並びに特定の機能の分割及びそれらの間にどのように機能が割り当てられるかは、実施形態によって異なり、いくつかの実装形態では、特定の実施形態のために選択されたハードウェア、ソフトウェア又はファームウェアの特定の組み合わせに部分的に依存する。
【００７０】
加えて、いくつかの実装形態では、図５Ａに示すようなコントローラ１０２及び図６に示すようなＣＧＲデバイス１０４によって実行される機能は、デバイス間に割り振られる。例えば、図７Ａは、いくつかの実装形態による、センサからデータを受信し、（図１に示すような）シーン１０６の表現を生成する、ＣＧＲパイプライン７００を示す。図７Ｂは、ＣＧＲパイプライン７００を実装するシステム７５０を示している。システム７５０は、上述したコントローラ１０２及び／又はＣＧＲデバイス１０４によって実行されるタスクを、コントローラ１０２とＣＧＲデバイス１０４との間で割り振る。
【００７１】
図７Ａに示すように、いくつかの実装形態では、画像取得インタフェース６１４（図６）は、少なくとも、画像データを出力するための画像センサ７１０、ポーズデータを出力するためのＩＭＵ７１２、視線推定を提供するためのアイトラッキング装置７１４、及びシーン１０６を生成するためにプロセスへの入力として生データを提供するための１つ以上の他のセンサ７１６、を含む。コントローラ１０２によって実行されるプロセスは、画像データ、ポーズデータ、視線推定データ、及び生データを受信すると、受信したデータを、上述したようなデータ構成５５２に従ってバッファ（例えば、図４のバッファ４２５又は図７Ａのバッファ７２０）に記憶する。更に、コントローラ１０２によって実行されるプロセスは、アクセススケジュール５５４に従ってバッファ７２０にアクセスする。アクセススケジュール５５４は、図３を参照して上述したような決定論的モデルに従って生成される。
【００７２】
いくつかの実装形態では、ＣＧＲパイプライン７００は、ＣＧＲコンテンツ及びデータをバッファ７２０から受信してディスプレイ６１２上に画像をレンダリングするレンダリングモジュール７３０を含む。様々な実装形態では、ＣＧＲコンテンツは、仮想オブジェクトの幾何学的形状の定義、仮想オブジェクトの色及び／又はテクスチャ、画像（シーン１０６のシースルー画像など）、並びにレンダリングされた画像内に表現されるコンテンツを記述する他の情報、を含む。いくつかの実装形態では、レンダリングされた画像を表示する前に最終補正が実行される。例えば、レンダリングされた画像はユーザのエクスペリエンスを改善するためにポーズデータに基づいて補正される。
【００７３】
いくつかの実装形態では、図７Ｂに示されるように、最終補正及び他のより計算負荷の低いタスク（例えば、センサデータの前処理）が、ＣＧＲデバイスにおいて実行される。図７Ｂのシステム７５０は、いくつかの実施形態によるＣＧＲパイプライン７００を実装し、コントローラ１０２及び／又はＣＧＲデバイス１０４によって実行される機能を割り振っている。したがって、より計算負荷の高いタスク、例えば、機械学習、コンピュータビジョン、及び／又は３Ｄレンダリングなどのタスクがコントローラ１０２の１つ以上のプロセッサ７５６を使用して、コントローラ１０２において実行される。次いで、コントローラ１０２は、表示前の最終補正のため、計算された画像をＣＧＲデバイス１０４に移送する。いくつかの実装形態では、移送プロセスは、コントローラ１０２とＣＧＲデバイス１０４との間の圧縮／展開及び通信を含む。
【００７４】
いくつかの実装形態では、１つ以上のプロセッサ７５６は、調整ユニット５４６及びデータアクセスユニット５５０を含み、データアクセスユニット５５０は、データ構成５５２−１及びシステム７５０全体にわたって割り振られたプロセスのアクセススケジュール５５４−１を更に含む。例えば、コントローラ１０２は、ＣＧＲデバイス１０４からプロセスの特性及びハードウェアのパラメータを収集する。ニューラルネットワークなどの機械学習を使用して、移送プロセス、センサデータの前処理、及び／又は最終補正などを含むプラットフォーム全体にわたるプロセスの特性を抽出し重み付けすることができ、それによって、データにアクセスするプロセスのシーケンシングを予測することができる。コントローラ１０２はまた、いくつかの実装形態では、アクセススケジュール５５４−１に少なくとも部分的に基づいて予測されるデータアクセスに適応するようにデータ構成５５２−１を決定することができる。図７Ｂは、１つのコントローラ１０２及び１つのＣＧＲデバイス１０４を備えるシステム７５０を示しているが、いくつかの実施形態では、複数のＣＧＲデバイスをコントローラ１０２に接続することができる。そのような実施形態では、コントローラ１０２上での機械学習を使用して、複数のＣＧＲデバイス（例えば、マルチプレーヤＣＧＲ環境）にわたるプロセスを含むクロスプラットフォームプロセスのアクセススケジュールを予測することができる。いくつかの実装形態では、コントローラ１０２は、各ＣＧＲデバイスがコントローラ１０２からデータ構成５５２−１及び／又はアクセススケジュール５５４−１のコピー又はサブセットを取得するように、システム全体のデータ構成５５２−１及びアクセススケジュール５５４−１を割り振る。データ構成５５２−２のローカルコピー及びアクセススケジュール５５４−２のローカルコピーに従って、画像取得インタフェース６１４によって取得されたデータが構成され、ＣＧＲデバイス１０４に関連付けられたプロセスは、構成されたデータにスケジュールに従ってアクセスする。そのため、各プロセス又は各デバイスがデータアクセスに対して最適化されている可能性がある他のシステムとは異なり、本明細書に記載される実施形態によるシステム７５０は、遅延が全体として低減されるように、システムレベルでのデータアクセスのプラットフォーム非依存型スケジューリングを提供する。
【００７５】
図８は、いくつかの実装形態による、プロセスのアクセススケジュールを決定する方法８００のフローチャートである。様々な実装形態では、方法８００は、１つ以上のプロセッサ、非一時的メモリ、及び画像取得インタフェース（例えば、図６の画像取得インタフェース６１４）を備えたデバイスによって実行される。いくつかの実装形態では、方法８００は、処理ロジックによって実行され、処理ロジックは、ハードウェア、ファームウェア、ソフトウェア、又はそれらの組み合わせを含む。いくつかの実装形態では、方法８００は、非一時的コンピュータ可読媒体（例えば、メモリ）内に記憶された命令（例えば、コード）を実行するプロセッサ及び／又はコントローラ（例えば、図１のコントローラ１０２）によって実行される。簡潔に言えば、いくつかの状況では、方法８００は、画像データを取得し、ポーズデータを決定し、かつ、視線推定を決定するために、画像取得インタフェースを利用することと、画像取得インタフェースと通信可能な複数のプロセスの複数の特性に少なくとも部分的に基づいて、画像データ、ポーズデータ、及び視線推定の構成を決定することと、画像データ、ポーズデータ、視線推定の構成、複数のプロセスの複数の特性、及びデバイスに関連付けられたハードウェアタイミングパラメータ、のうちの少なくとも１つに少なくとも部分的に基づいて、複数のプロセスのためのアクセススケジュールを決定することと、を含む。
【００７６】
方法８００は、ブロック８１０において、画像取得インタフェースによって取得された視野に関連付けられた画像データをデバイスが取得することで開始する。いくつかの実施形態では、画像取得インタフェースは、視野に関連付けられた画像データを取得するための画像センサ（例えば、図７Ａの画像センサ７１０）を含む。
【００７７】
方法８００は、ブロック８２０において、デバイスが慣性測定ユニット（ＩＭＵ）情報に少なくとも部分的に基づいてポーズデータを決定することで継続し、そこで、ポーズデータは、画像取得インタフェースによって測定されたユーザの現在の姿勢に対応する。いくつかの実施形態では、画像取得インタフェースは、ユーザの現在の姿勢を測定するためのＩＭＵ（例えば、図７ＡのＩＭＵ７１２）を含む。
【００７８】
方法８００は、ブロック８３０において、デバイスが画像取得インタフェースを介して取得されたアイトラッキング情報に少なくとも部分的に基づいて視線推定を決定することで継続する。いくつかの実施形態では、画像取得インタフェースは、アイトラッキング情報を取得するためのアイトラッキング装置（例えば、図７Ａのアイトラッキング装置７１４）を含む。
【００７９】
方法８００は、ブロック８４０において、デバイスが、画像取得インタフェースと通信可能な複数のプロセスの複数の特性に少なくとも部分的に基づいて、画像データ、ポーズデータ、及び視線推定のための構成を決定することで継続する。例えば、図４に示すように、バッファ４２５内のデータ４２７の構成は、決定論的モデル３００を使用してコントローラ１０２によって決定される。図３に示す決定論的モデル３００は、バッファ４２５内のデータ４２７の構成を決定するためのパラメータの一部として、プロセスの特性（例えば、実行シーケンス及び／又はプロセス実行持続時間）を取得する。
【００８０】
いくつかの実施形態では、ブロック８４２によって表されるように、構成の決定は、異なるプロセスのデータを集約することと、複数のプロセスの複数の特性に少なくとも部分的に基づいて集約されたデータを構成することと、を含む。例えば、２つのプロセスの構成の決定は、（１）複数のプロセスのうちの第１のプロセスであって、第１の特性のセットによって特徴付けられる第１のプロセスに対する、第１の画像データ、第１のポーズデータ、及び第１の視線推定のうちの少なくとも１つを取得することと、（２）複数のプロセスのうちの第２のプロセスであって、第２の特性のセットによって特徴付けられる第２のプロセスに対する、第２の画像データ、第２のポーズデータ、及び第２の視線推定のうちの少なくとも１つを取得することと、（３）第１の画像データ、第１のポーズデータ、及び第１の視線推定を、第２の画像データ、第２のポーズデータ、及び第２の視線推定と集約して、画像データ、ポーズデータ、及び視線推定であって、第１の特性のセット及び第２の特性のセットに少なくとも部分的に基づいて構成される画像データ、ポーズデータ、及び視線推定を生成すること、からなるステップを含む。
【００８１】
例えば、図４に示すように、バッファ４２５内のデータ４２７の構成は、プロセス４１０の特性に少なくとも部分的に基づいて決定される。プロセス２  ４１０−２からの出力がプロセス３  ４１０−３によって入力として使用される場合、プロセス２  ４１０−２用のデータ４２７−２は、データ４２７−４がプロセス３４１０−３によってフェッチされる準備ができる前に、プロセス２  ４１０−２によってフェッチされる準備ができるようにバッファに構成される。別の例では、図５Ｂに示すように、ＲＯＩ画像データ５９０は、非ＲＯＩ画像データ５９２よりも多くのプロセスによって使用される。したがって、データ構成５５２に従い、ＲＯＩ画像データ５９０は、より頻繁にアクセスされる領域及び／又はより緊急な必要性のある領域に記憶される。
【００８２】
更に図８を参照すると、方法８００は、ブロック８５０において、デバイスが、画像データ、ポーズデータ、及び視線推定の構成、複数のプロセスの複数の特性、並びにデバイスに関連付けられたハードウェアタイミングパラメータのうちの少なくとも１つに少なくとも部分的に基づいて、複数のプロセスのためのアクセススケジュールを決定することで継続する。いくつかの実施形態では、ブロック８５２によって表されるように、方法８００は、決定論的モデルに基づいてアクセススケジュールを決定することを含む。そのような実施形態では、方法８００は、複数のプロセスのうちの第１のプロセスに対して、ハードウェア又は第２のプロセスのうちの少なくとも１つが入力を提供する第１のプロセスの入力、１つ、及びハードウェア又は第２のプロセスのうちの少なくとも１つから入力を取得することに対する時間パラメータを決定することと、時間パラメータに少なくとも部分的に基づいて、第１のプロセスのためのウェイクタイムを計算することと、を更に含む。例えば、図３に示すように、プロセスＭに対して、プロセスＭの実行のためのウェイクタイムは、カメラの露光時間、例えば、既知のΔ１に少なくとも部分的に基づいて決定される。プロセスＮの場合、プロセスＭの実行のためのウェイクタイムは、カメラの露光時間及びプロセスＭの実行持続期間、例えば、既知のΔ１及び既知のΔ２に少なくとも部分的に基づいて決定される。
【００８３】
いくつかの実施形態では、ブロック８５４によって表されるように、方法８００は、計算負荷の高いタスクをベースデバイスに割り振ることと、ユーザエクスペリエンスを最適化する（例えば、乗り物酔いを低減する）ためにデバイスにおいて最終補正を実行することと、を含む。例えば、図７Ａに示すようなＣＧＲパイプライン７００では、図７Ｂに示すように、レンダリング７３０を含む計算負荷の高いタスクをコントローラ１０２によって実行することができ、一方、図７Ｂに示すように、センサデータの前処理などの最小限の計算をＣＧＲデバイス１０４によって実行することができる。更に、図７Ａに示すように、シーンを表示する前に、ＣＧＲデバイス１０４からのデータ（例えば、ポーズデータ）を最終補正のために使用することができる。いくつかの実施形態では、レンダリングのためにベースによって送信されるフレームは、タイムスタンプされる。ＣＧＲデバイスは、フレームがベースにおいて計算された時間を知ることにより、フレームをベースから受信すると、ポーズデータの軌跡に基づいて、レンダリング時の（例えば、画像取得インタフェースによって測定されたユーザの現在の姿勢に対応する）レンダリングポーズを予測する。次いで、ＣＧＲデバイスは、レンダリング時間におけるレンダリングポーズを使用してフレームを調整することによって、最終補正を実行する。
【００８４】
いくつかの実施形態では、ブロック８５６によって表されるように、方法８００は、第２のデバイスによってアクセススケジュール及び／又は構成を決定することを含む。具体的には、割り振り後のアクセススケジュールの決定は、画像データ、ポーズデータ、及び視線推定の構成、複数のプロセスの複数の特性、並びにデバイスからのハードウェアタイミングパラメータのうちの少なくとも１つを取得するベースデバイスによってデータの収集をトリガし、データは、ベースデバイスによって他のデバイスからもまた収集されることと、データに基づいて第２のデバイスによって決定されるアクセススケジュールを第２のデバイスから受信することと、からなるステップを含む。例えば、図７Ｂに示すように、コントローラ１０２は、ＣＧＲデバイス１０４から、プロセス特性、データ構成情報、及びハードウェアパラメータなどを取得する。いくつかの実施形態では、コントローラ１０２はまた、他のＣＧＲデバイスからそのような情報を受信する。収集した情報を利用して、コントローラ１０２は、システム全体のアクセススケジュール５５４−１及び／又はデータ構成５５２−１を提供する。
【００８５】
いくつかの実施形態では、方法８００は、ブロック８６０において、デバイスが、表示のためのシーン（例えば、現実世界のシーンの表現であるＣＧＲシーン、又は完全に仮想シーンであるＣＧＲシーン）を生成するために、アクセススケジュールに従って構成にアクセスし、構成から得られたデータであって、画像データ、ポーズデータ、視線推定のうちの少なくとも１つのサブセットであるデータを使用し、かつアクセススケジュールに従ってシーンを表示することで継続する。例えば、図７Ａでは、ＣＧＲデバイスのディスプレイ６１２に提供されたシーンは、バッファ７２０からのデータを使用して生成される。図４に示すように、シーンを生成するためのプロセス４１０は、アクセススケジュールに従ってバッファ４２５からデータストリームをプルし、そこで、バッファ４２５内のデータ４２７は、構成に従って配置されている。別の例では、図５Ｂに示すように、シーン認識プロセス５６０、ＲＯＩ認識プロセス５６２、及びオブジェクト認識プロセス５６４は、アクセススケジュール５５４に従ってデータにアクセスし、ＲＯＩ画像データ５９０及び非ＲＯＩ画像データ５９２は、データ構成５５２に従って記憶されている。
【００８６】
いくつかの実施形態では、ブロック８６２によって表されるように、アクセススケジュールに従って構成にアクセスすることは、複数のプロセスのうちのプロセスの予想実行時間をアクセススケジュールに基づいて決定することと、構成に従ってプロセスによって使用されるデータをフェッチすると、予想実行時間にデータアクセスするためのプロセスをウェイクアップすることと、を含む。例えば、図３に示すように、アクセススケジュールに基づいて、時間Ｔ４におけるプロセスＭの期待実行時間は、スケジュールされたアクセスに従って決定される。時間Ｔ４において、カメラからの画像データは、システムにより決定されたデータ構成に従ってデータが配置されるバッファから、プロセスＭによってフェッチされる。
【００８７】
添付の特許請求の範囲内の実装形態の様々な態様を上述したが、上述の実装形態の様々な特徴は、多種多様な形態で具現化されてもよく、上記の特定の構造及び／又は機能は単なる例示に過ぎないことは明らかである。本開示に基づいて、当業者は、本明細書に記載される態様は、任意の他の態様とは独立して実施されてもよく、これらの態様のうちの２つ以上が様々な方法で組み合わされてもよいことを理解すべきである。例えば、本明細書に記載される任意の数の態様を使用して、装置が実装されてもよく、かつ／又は方法が実行されてもよい。加えて、本明細書に記載される態様のうちの１つ以上に加えて、又はその他の構造及び／又は機能を使用して、このような装置が実装されてもよく、かつ／又はこのような方法が実行されてもよい。
【００８８】
本明細書では、様々な要素を説明するために「第１の」、「第２の」などの用語が使用される場合があるが、これらの要素は、これらの用語によって限定されるべきではないことも理解されるであろう。これらの用語は、ある要素を別の要素と区別するためにのみ使用される。例えば、「第１ノード」の全ての出現について一貫して名前が変更され、「第２ノード」の全ての出現について一貫して名前が変更される限り、説明の意味を変えることなく、第１ノードは第２ノードと呼ぶことができ、同様に、第２ノードは第１ノードと呼ぶことができる。第１のノードと第２のノードは両方ともノードであるが、それらは同じノードではない。
【００８９】
本明細書で使用される用語は、特定の実装形態を説明する目的のためであり、特許請求の範囲を限定することを意図するものではない。説明される実装形態の説明及び添付の特許請求の範囲で使用されるとき、単数形の「ａ」、「ａｎ」、及び「ｔｈｅ」は、文脈がそうではないことを明確に示さない限り、複数形も含むことを意図している。また、本明細書で使用されるとき、用語「及び／又は」は、関連する列挙された項目のうちの１つ以上の任意の組み合わせ及び全ての考えられる組み合わせを指し、かつこれを含むことを理解されたい。用語「ｃｏｍｐｒｉｓｅｓ（含む）」及び／又は「ｃｏｍｐｒｉｓｉｎｇ（含む）」が、本明細書で使用される場合、述べられた特徴、整数、ステップ、動作、要素、及び／又は構成要素の存在を指定するが、１つ以上の他の特徴、整数、ステップ、動作、要素、構成要素、及び／又はそれらのグループの存在又は追加を除外しないことを更に理解されたい。
【００９０】
本明細書で使用されるときには、用語「ｉｆ」は、文脈に応じて、「時」又は「際に」又は、先に述べた条件が正しいとの「判定に応じて」又は「判定に従って」、「検出に応じて」を意味するものと解釈できる。同様に、「［先に述べた条件が正しい］と判定される場合」又は「［先に述べた条件が正しい］場合」、又は「［先に述べた条件が正しい］時」というフレーズは、先に述べた条件が正しいとの「判定に際して」又は「判定に応じて」又は「判定に従って」又は「検出した際に」又は「検出に応じて」ということを意味するものと解釈できる。
【図１】
2021534510.tif 000003
【図２】
2021534510.tif 000004
【図３】
2021534510.tif 000005
【図４】
2021534510.tif 000006
【図５Ａ】
2021534510.tif 000007
【図５Ｂ】
2021534510.tif 000008
【図６】
2021534510.tif 000009
【図７Ａ】
2021534510.tif 000010
【図７Ｂ】
2021534510.tif 000011
【図８】
2021534510.tif 000012
【手続補正書】
【提出日】令和3年2月22日(2021.2.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
方法であって、１つ以上のプロセッサと、非一時的メモリと、画像取得インタフェースとを備えたデバイスにおいて、
前記画像取得インタフェースによって取得された視野に関連付けられた画像データを取得することと、
慣性測定ユニット（ＩＭＵ）情報に少なくとも部分的に基づくポーズデータであって、前記画像取得インタフェースによって測定された、あるユーザの現在の姿勢に対応する前記ポーズデータを決定することと、
前記画像取得インタフェースを介して取得されたアイトラッキング情報に少なくとも部分的に基づいて、視線推定を決定することと、
前記画像取得インタフェースと通信可能な複数のプロセスの複数の特性に少なくとも部分的に基づいて、前記画像データ、前記ポーズデータ、及び前記視線推定の構成を決定することと、
前記画像データ、前記ポーズデータ、及び前記視線推定の前記構成、前記複数のプロセスの前記複数の特性、並びに前記デバイスに関連付けられたハードウェアタイミングパラメータのうちの少なくとも１つに少なくとも部分的に基づいて、前記複数のプロセスのアクセススケジュールを決定することと、を含む、方法。
【請求項２】
前記複数のプロセスの前記複数の特性に少なくとも部分的に基づいて、前記画像データ、前記ポーズデータ、及び前記視線推定の前記構成を決定することが、
前記複数のプロセスのうちの第１のプロセスであって、第１の特性のセットによって特徴付けられる前記第１のプロセスに対する、第１の画像データ、第１のポーズデータ、及び第１の視線推定のうちの少なくとも１つを取得することと、
前記複数のプロセスのうちの第２のプロセスであって、第２の特性のセットによって特徴付けられる前記第２のプロセスに対する、第２の画像データ、第２のポーズデータ、及び第２の視線推定のうちの少なくとも１つを取得することと、
前記第１の画像データ、前記第１のポーズデータ、及び前記第１の視線推定を、前記第２の画像データ、前記第２のポーズデータ、及び前記第２の視線推定と統合して、前記画像データ、前記ポーズデータ、及び前記視線推定であって、前記第１の特性のセット及び前記第２の特性のセットに少なくとも部分的に基づいて構成される前記画像データ、前記ポーズデータ、及び前記視線推定を生成することと、を含む、請求項１に記載の方法。
【請求項３】
前記アクセススケジュールが、決定論的モデルに基づいて決定され、前記方法が、
前記複数のプロセスの第１のプロセスに対して、前記第１のプロセスに対する入力、前記入力を提供するハードウェア又は第２のプロセスのうちの少なくとも１つ、及び前記ハードウェア又は前記第２のプロセスのうちの少なくとも１つから前記入力を取得するための時間パラメータを決定することと、
前記時間パラメータに少なくとも部分的に基づいて、前記第１のプロセスのウェイクタイムを計算することと、を含む、請求項１に記載の方法。
【請求項４】
タイムスタンプと関連付けられているフレームをレンダリングのためにベースデバイスから取得することと、
前記ポーズデータの軌跡及び前記タイムスタンプに基づいて、レンダリング時におけるレンダリングポーズを予測することと、
前記レンダリング時における前記レンダリングポーズを使用して前記フレームを調整することと、を更に含む、請求項１に記載の方法。
【請求項５】
前記複数のプロセスのための前記アクセススケジュールを決定することが、
前記画像データ、前記ポーズデータ、及び前記視線推定の前記構成、前記複数のプロセスの前記複数の特性、並びに前記デバイスからの前記ハードウェアタイミングパラメータのうちの少なくとも１つを取得するベースデバイスによってデータの収集をトリガすることであって、前記データは、前記ベースデバイスによって他のデバイスからもまた収集される、ことと、
前記データに基づいて前記ベースデバイスによって決定される前記アクセススケジュールを前記ベースデバイスから受信することと、を含む、請求項１に記載の方法。
【請求項６】
表示のためのシーンを生成するために、前記アクセススケジュールに従って前記構成にアクセスすることと、
前記構成から得られたデータであって、前記画像データ、前記ポーズデータ、及び前記視線推定のうちの少なくとも１つのサブセットである前記データを使用して、かつ前記アクセススケジュールに従って、前記シーンを表示することと、を更に含む、請求項１に記載の方法。
【請求項７】
前記アクセススケジュールに従って前記構成にアクセスすることが、
前記複数のプロセスのうちのプロセスの予想実行時間を前記アクセススケジュールに基づいて決定することと、
前記構成に従って前記プロセスによって使用されるデータをフェッチすると、前記予想実行時間にデータアクセスするための前記プロセスをウェイクアップすることと、を含む、請求項６に記載の方法。
【請求項８】
前記画像データ、前記ポーズデータ、及び前記視線推定が、記憶デバイスに記憶され、前記画像データ、前記ポーズデータ、及び前記視線推定の前記構成が、前記画像データ、前記ポーズデータ、及び前記視線推定を前記記憶デバイスに記憶するためのレイアウト又はシーケンシングのうちの少なくとも１つを含む、請求項１に記載の方法。
【請求項９】
前記画像取得インタフェースが、前記視野に関連付けられた前記画像データを取得するための画像センサを含む、請求項１に記載の方法。
【請求項１０】
前記画像取得インタフェースが、前記ユーザの前記現在の姿勢を測定するためのＩＭＵを含む、請求項１に記載の方法。
【請求項１１】
前記画像取得インタフェースが、前記アイトラッキング情報を取得するためのアイトラッキング装置を含む、請求項１に記載の方法。
【請求項１２】
前記複数のプロセスの前記複数の特性が、前記画像データ、前記ポーズデータ、及び前記視線推定を使用する前記プロセスのシーケンスを含む、請求項１に記載の方法。
【請求項１３】
前記ハードウェアタイミングパラメータが、画像センサ、ＩＭＵ、アイトラッキング装置、コントローラ、プロセッサ、又は通信デバイスのうちの少なくとも１つと関連付けられている、請求項１２に記載の方法。
【請求項１４】
デバイスであって、
画像取得インタフェースと、
前記画像取得インタフェースによって取得された視野に関連付けられた画像データを取得し、慣性測定ユニット（ＩＭＵ）情報に少なくとも部分的に基づくポーズデータであって、前記画像取得インタフェースによって測定された、あるユーザの現在の姿勢に対応する前記ポーズデータを決定し、
前記画像取得インタフェースを介して取得されたアイトラッキング情報に少なくとも部分的に基づいて、視線推定を決定し、
前記画像取得インタフェースと通信可能な複数のプロセスの複数の特性に少なくとも部分的に基づいて、前記画像データ、前記ポーズデータ、及び前記視線推定の構成を決定し、
前記画像データ、前記ポーズデータ、及び前記視線推定の前記構成、
前記複数のプロセスの前記複数の特性、並びに
前記デバイスと関連付けられたハードウェアタイミングパラメータのうちの少なくとも１つに少なくとも部分的に基づいて、前記複数のプロセスのアクセススケジュールを決定する、１つ以上のプロセッサと、を備える、デバイス。
【請求項１５】
前記１つ以上のプロセッサが、
前記複数のプロセスのうちの第１のプロセスであって、第１の特性のセットによって特徴付けられる前記第１のプロセスに対する、第１の画像データ、第１のポーズデータ、及び第１の視線推定のうちの少なくとも１つを取得することと、
前記複数のプロセスのうちの第２のプロセスであって、第２の特性のセットによって特徴付けられる前記第２のプロセスに対する、第２の画像データ、第２のポーズデータ、及び第２の視線推定のうちの少なくとも１つを取得することと、
前記第１の画像データ、前記第１のポーズデータ、及び前記第１の視線推定を、前記第２の画像データ、前記第２のポーズデータ、及び前記第２の視線推定と統合して、前記画像データ、前記ポーズデータ、及び前記視線推定であって、前記第１の特性のセット及び前記第２の特性のセットに少なくとも部分的に基づいて構成される前記画像データ、前記ポーズデータ、及び前記視線推定を生成すること、
によって、前記画像データ、前記ポーズデータ、及び前記視線推定の前記構成を決定する、請求項１４に記載のデバイス。
【請求項１６】
前記アクセススケジュールが、決定論的モデルに基づいて決定され、１つ以上のプロセッサが、更に、
前記複数のプロセスの第１のプロセスに対して、前記第１のプロセスに対する入力、前記入力を提供するハードウェア又は第２のプロセスのうちの少なくとも１つ、及び前記ハードウェア又は前記第２のプロセスのうちの少なくとも１つから前記入力を取得するための時間パラメータを決定し、
前記時間パラメータに少なくとも部分的に基づいて、前記第１のプロセスのウェイクタイムを計算する、請求項１４に記載のデバイス。
【請求項１７】
前記１つ以上のプロセッサが、更に、
表示のためのシーンを生成するために、前記アクセススケジュールに従って前記構成にアクセスし、
前記構成から得られたデータであって、前記画像データ、前記ポーズデータ、及び前記視線推定のうちの少なくとも１つのサブセットである前記データを使用して、かつ前記アクセススケジュールに従って、前記シーンを表示する、請求項１４に記載のデバイス。
【請求項１８】
前記画像取得インタフェースが、前記視野に関連付けられた前記画像データを取得するための画像センサ、前記ユーザの前記現在の姿勢を測定するためのＩＭＵ、前記アイトラッキング情報を取得するためのアイトラッキング装置を含む、請求項１４に記載のデバイス。
【請求項１９】
前記複数のプロセスの前記複数の特性が、前記画像データ、前記ポーズデータ、及び前記視線推定を使用する前記プロセスのシーケンスを含む、請求項１４に記載のデバイス。
【請求項２０】
符号化された命令を有する非一時的コンピュータ可読媒体であって、前記命令が、画像取得インタフェースを含むデバイスの１つ以上のプロセッサによって実行されると、前記デバイスに、
前記画像取得インタフェースによって取得された視野に関連付けられた画像データを取得させ、
慣性測定ユニット（ＩＭＵ）情報に少なくとも部分的に基づくポーズデータであって、前記画像取得インタフェースによって測定された、あるユーザの現在の姿勢に対応する前記ポーズデータを決定させ、
前記画像取得インタフェースを介して取得されたアイトラッキング情報に少なくとも部分的に基づいて、視線推定を決定させ、前記画像取得インタフェースと通信可能な複数のプロセスの複数の特性に少なくとも部分的に基づいて、前記画像データ、前記ポーズデータ、及び前記視線推定の構成を決定させ、
前記画像データ、前記ポーズデータ、及び前記視線推定の前記構成、前記複数のプロセスの前記複数の特性、並びに前記デバイスに関連付けられたハードウェアタイミングパラメータのうちの少なくとも１つに少なくとも部分的に基づいて、前記複数のプロセスのためのアクセススケジュールを決定させる、
非一時的コンピュータ可読媒体。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００８３
【補正方法】変更
【補正の内容】
【００８３】
いくつかの実施形態では、ブロック８５４によって表されるように、方法８００は、計算負荷の高いタスクをベースデバイスに割り振ることと、ユーザエクスペリエンスを最適化する（例えば、乗り物酔いを低減する）ためにデバイスにおいて最終補正を実行することと、を含む。例えば、図７Ａに示すようなＣＧＲパイプライン７００では、図７Ｂに示すように、レンダリングを含む計算負荷の高いタスク（レンダリングモジュール７３０で実行されたような）をコントローラ１０２によって実行することができ、一方、図７Ｂに示すように、センサデータの前処理などの最小限の計算をＣＧＲデバイス１０４によって実行することができる。更に、図７Ａに示すように、シーンを表示する前に、ＣＧＲデバイス１０４からのデータ（例えば、ポーズデータ）を最終補正のために使用することができる。いくつかの実施形態では、レンダリングのためにベースによって送信されるフレームは、タイムスタンプされる。ＣＧＲデバイスは、フレームがベースにおいて計算された時間を知ることにより、フレームをベースから受信すると、ポーズデータの軌跡に基づいて、レンダリング時の（例えば、画像取得インタフェースによって測定されたユーザの現在の姿勢に対応する）レンダリングポーズを予測する。次いで、ＣＧＲデバイスは、レンダリング時間におけるレンダリングポーズを使用してフレームを調整することによって、最終補正を実行する。
【国際調査報告】
2021534510.tif 000013
2021534510.tif 000014