図1Aは、ビーム方向θの判定を例示し、さらに、プロジェクタ104に対するヘッドマウントディスプレイ(HMD)102の位置を判定するための、システム100の実施形態の図である。システム100は、プロジェクタ104、HMD102、コンピューティングデバイス107、及びハンドヘルドコントローラ115を含む。HMD102は、ユーザ106の頭上に装着され、プロジェクタ104は、ユーザ106が位置する環境(例えば、部屋、居所等)内に位置する。
コンピューティングデバイス107は、リンク109を介して、HMD102に連結される。本明細書に使用されるようなリンクの例は、有線リンク(例えば、ケーブル等)を含む。リンクの別の例は無線リンクである。例えば、コンピューティングデバイス107内に位置する無線通信デバイスは、無線通信プロトコル(Wi−Fi、Bluetooth(登録商標)、無線周波数(RF)プロトコル等)を利用し、HMD102内に位置する無線通信リンクを用いて、無線リンクを介して通信する。
同様に、コンピューティングデバイス107は、リンク111を介して、プロジェクタ104に連結される。例えば、コンピューティングデバイス107内に位置する無線通信デバイスは、無線通信プロトコルを適用し、プロジェクタ104内に位置する無線通信デバイスを用いて、無線リンクを介して通信する。さらに、コンピューティングデバイス107は、リンク113を介して、ハンドヘルドコントローラ115に連結される。例えば、コンピューティングデバイス107内に位置する無線通信デバイスは、無線通信プロトコル等を適用し、ハンドヘルドコントローラ115内の無線通信リンクデバイスを用いて、無線リンクを介して通信する。
一実施形態では、本明細書に使用されるような無線通信リンクデバイスは、プロセッサである。
プロジェクタ104のビーム発生器108は、ビーム110を発射し、微小電気機械システム(MEMS)ミラー112によってHMD102に向かって反射される。MEMSミラー112は、デバイス114(例えば、アクチュエータ、電磁アクチュエータ、熱アクチュエータ、磁石等)によって1つ以上の周波数で駆動される。例えば、MEMSミラー112は、MEMSミラー112のX軸に対して及び/またはMEMSミラー112のY軸に対して、移動(例えば、平行移動、回転、揺動等)するために駆動される。いくつかの実施形態では、MEMSミラー112の軸(例えば、X軸、Y軸等)は、プロジェクタの軸(例えば、X軸、Y軸等)と異なることに留意されたい。ビーム発生器108の例は、レーザビーム光源、不可視光源、可視光源等を含む。MEMSミラー108は、2軸ミラー(例えば、マイクロスキャナ等)である。一実施形態では、ドライバ114は、プロジェクタ104のプロセッサに接続され、プロジェクタ104のプロセッサは、制御信号をドライバ114に提供し、繰り返し周波数等(例えば、あるパターン(例えば、リサージュパターン、ラスタ走査パターン等)がMEMSミラー112によって繰り返される)で、MEMSミラー112を駆動させる。制御信号を受信すると、ドライバ114は、電界(例えば、磁場、電場等)を生成し、MEMSミラー112の移動を制御する。
MEMSミラー112の移動により、ビーム110は、プロジェクタ104のx軸に対する角度θx、プロジェクタ104のy軸に対する角度θyで、及びプロジェクタ104のz軸に対する角度θzで反射する。いくつかの実施形態では、プロジェクタ104のz軸は、MEMSミラー112の変位がないとき、MEMSミラー112から反射された後に、ビーム110の方向によって定義される。角度θx、θy、及びθzは、プロジェクタ104のxyz座標系の原点に対するビーム110の方位を提供する。xyz座標系の原点は、プロジェクタ104のx軸、プロジェクタ104のy軸、及びプロジェクタ104のz軸の交点である。y軸は、x軸に垂直であり、x軸とy軸との両方はz軸に垂直である。光検出器105aによって検出されたときのビーム110の方位は、プロジェクタ104のxyz座標系の原点に対する光検出器105aの方位を提供する。
複数の光検出器105a、105b、105c(例えば、フォトダイオード等)は、HMD102の外面に(例えば、適合される、置かれる、添着される等)位置付けられ、ビーム110を検出し電気センサ信号を生成し、その後、その信号は、プロジェクタ104からのHMD102の姿勢(例えば、プロジェクタ104のxyz座標系の原点からビーム110に沿った距離等)及びxyz座標系に対するHMD102の方位を判定するために、コンピューティングデバイス107によって使用される。
一実施形態では、HMD102は、ビーム110を感知するためにその外面上に任意の他の数の光検出器を含む。HMD102の外面は、HMD102の内面の反対側に位置することに留意されたい。HMD102の内面は、HMD102がユーザ102によって装着されるとき、ユーザ106の目に対面する。
ある実施形態では、リサージュパターンに代わりに、ラスタ走査が使用される。
一実施形態では、ビーム方向(例えば、角度θx、θy、及びθz等)は、水平軸(例えば、プロジェクタ104等のx軸、プロジェクタ104の垂直y軸、及びプロジェクタ104の前方z軸等)に対して測定される。
ある実施形態では、本明細書に説明されるプロバイダによって生成されたビームは、可視光ビーム、赤外光ビーム、または別の光周波数のビームである。
一実施形態では、プロジェクタ104に対する光検出器105aにヒットするビームの方位は、ビーム110が光検出器105aによって検出されたとき、プロジェクタ104の対応するx軸、y軸、及びz軸に対してビーム110によって形成される角度θx、θy、及びθzによって表される。
ある実施形態では、プロジェクタ104に対するHMD102の位置は、xyz座標系の原点に対するHMD102の位置と同じである。さらに、プロジェクタ104に対するHMD102の方位は、xyz座標系に対するHMD102の方位と同じである。
一実施形態では、広角は、ビーム110を掃引することによって取得される。例えば、MEMSミラー112が十分な既定量の偏向がないとき、プロジェクタ104から広角でビーム110を出力するために、広角レンズがMEMSミラー112とプロジェクタ104の出力との間で使用される。
ある実施形態では、広角レンズのビーム広がりの影響が判定される。
一実施形態において、ビーム110は、ガウシアンビームとしてモデル化される。
ある実施形態では、リサージュパターンの他の部分と比較してまばらであるリサージュパターンの一部は、プロジェクタ104のz軸に沿っている。
一実施形態において、ビーム110は、間隙を避けるように空間を満たす。その空間は、ある環境の一部である。例えば、その空間は、ある環境内のビーム110の移動の範囲になる環境の量である。別の例として、その空間は、HMD102の移動がビーム110の掃引によって検出された環境の量である。ビーム110によって満たされた空間の量は、ビーム110の径、プロジェクタ104からのビーム110の分岐、及び光検出器105aの集合エリアに依存する。光検出器105aの集合エリアは、ビーム110を検出する。ビーム110の径が増加することで、対象範囲の拡大を可能にするが、測定精度及びビーム110を生成する所要電力を犠牲にする。
一実施形態では、ビーム110の径の代わりに、またはそれに加えて、光検出器105aの径は増加する。
ある実施形態では、光検出器105aがビーム110に対して斜角にあり、または、HMD112の設計によってさらに部分的に塞がれることにより、光検出器105aは、ビーム110を検出することができない。光検出器105a上の任意のレンズキャップがなければ、ビーム110の光の平面円盤形状は、プロジェクタ104からそれるように光検出器105a上にかかるにつれ楕円になる。レンズキャップは、光検出器105aの角感度を改善する。
ある実施形態では、ビーム110の分岐が光学投影円錐分岐に一致することにより、プロジェクタ104からの任意の特定の距離において、リサージュパターンは、同じ割合の満たされた空間を有する。しかしながら、一致が発生しない一実施形態では、例えば、プロジェクタ104から、1メートルの範囲で重なりがあり、3メートルの範囲で重なりがないなど、重なりの相違があることが把握される。
一実施形態では、HMD102は、リンク117を介して、プロジェクタ104に連結される。
いくつかの実施形態では、用語「姿勢」及び「位置」は、本明細書で同義的に使用される。
図1Bは、MEMSミラー112の様々な移動周波数を例示する、MEMSミラー112の実施形態の図である。MEMSミラー112は、周波数f1でMEMSミラー112のX軸に対して(例えば、そのX軸を中心に)駆動され、周波数f2でMEMSミラー112のY軸に対して駆動される。ある実施形態では、周波数f2は、周波数f1と異なる。例えば、f1が35060Hz(ヘルツ)であるとき、f2は35000Hzである。別の例として、f1が34,620Hzであるとき、f2は34,560Hzである。さらに別の例として、f1がMEMSミラー112の共振周波数であるとき、f2は共振周波数よりも遅くなる。さらに別の例として、MEMSミラー112の共振周波数は、f1及びf2の平均値である。
f1がf2よりも相当な規定量だけ小さいとき、HMD102の近似のラスタ走査がビーム110によって行われる。f1がf2と実質的に同じであるとき、より対称なリサージュ走査パターンが現れる。
一実施形態では、MEMSミラー112は、様々なモードで駆動される。例えば、MEMSミラー112の大きい角変位で速く走査するために、あるモードは、MEMSミラー112がドライバ114によって駆動される駆動周波数がMEMSミラー112の自然機械的共振に近い、共振モードである。したがって、リサージュパターンは、一定の時間フレームで空間の全対象範囲に関して効率的である。
図2は、HMD102の代わりに、またはそれに加えて、ハンドヘルドコントローラ202が、角度θx、θy、及びθzを含むビーム方位を判定し、さらに、プロジェクタ104に対するハンドヘルドコントローラ202の姿勢を判定するために、プロジェクタ104のビーム110によって走査されることを例示する、システム200の実施形態の図である。本明細書に使用されるようなハンドヘルドコントローラの例は、ゲームコントローラ、ゲームパッド、パドル、ジョイスティック、トラックボール、ガン型コントローラ、弓型コントローラ、操縦ハンドル、ヨーク、キーボード、マウス、タブレット、携帯電話等を含む。一実施形態では、HMD102は、コントローラの例である。
ハンドヘルドコントローラ202は、ビーム110を感知するために、その表面上に複数の光検出器204a及び204b(例えば、フォトダイオード等)を有する。いくつかの実施形態では、ハンドヘルドコントローラ202は、ビーム110を感知するために、その表面上に任意の他の数の光検出器(例えば、3、4、5、10、20等)を含む。プロジェクタ104は、上記に説明されるものと同じ様式で動作し、ビーム110を生成し、プロジェクタ104に対して角度θx、θy、及びθzでビーム110を導く。ハンドヘルドコントローラ202上の光検出器204aは、ビーム110を感知し電気センサ信号を生成し、その後、その信号は、光検出器204aがビーム110を感知すると、プロジェクタ104に対するビーム110の角度θx、θy、及びθzを含む方位を判定されるために使用される。ビーム110が光検出器204aによって感知されるときのプロジェクタ104に対するビーム110の方位は、プロジェクタ104のxyz座標系の原点に対する光検出器204aの方位を提供する。そのとき、その方位は、プロジェクタ104のxyz座標系の原点から光検出器204aの位置を判定するために使用される。このように、プロジェクタ104のxyz座標系に対するハンドヘルドコントローラ202の姿勢を判定するために、プロジェクタ104のxyz座標系に対する光検出器204a及び204bの方位が判定される。ハンドヘルドコントローラ上の少なくとも3つの光検出器が、ある技術(例えば、Perspective−n−Point等)を使用して、プロジェクタの座標系に対する方向を把握しているとき、ハンドヘルドコントローラの姿勢が予測される。例示するために、光検出器105aと105bとの間の距離の2乗は、l2 ab=a2+b2−2ab(cosθab)として表される第1の関係式として表現される。式中、aは、プロジェクタ104のxyz座標系の原点からの光検出器105aの距離であり、bは、プロジェクタ104のxyz座標系の原点からの光検出器105bの距離であり、cosは余弦関数であり、θabは、距離aと距離bとの間の角度である。さらに、光検出器105bと105cとの間の距離の2乗は、l2 bc=b2+c2−2bc(cosθbc)として表される第2の関係式として表現される。式中、cは、プロジェクタ104のxyz座標系の原点からの光検出器105cの距離であり、θbcは、距離bと距離cとの間の角度である。また、光検出器105aと105cとの間の距離の2乗は、l2 ac=a2+c2−2ab(cosθac)として表される第3の関係式として表現される。式中、θacは、距離aと距離cとの間の角度である。距離lab、lbc、及びlacは、プロセッサ302によって事前に判定される。さらに、角度θac、θbc、及びθacは、プロジェクタ104のxyz座標系の原点に対する光検出器105a、105b、及び105cの方位から、プロセッサ302によって判定される。プロセッサ302は、3つの関係式を解くことによって、距離a、b、及びcの値を求める。
ある実施形態では、プロジェクタ104に対するハンドヘルドコントローラ202の位置は、プロジェクタ104のxyz座標系の原点に対するハンドヘルドコントローラ202の位置と同じである。さらに、プロジェクタ104に対するハンドヘルドコントローラ202の方位は、プロジェクタ104のxyz座標系に対するハンドヘルドコントローラ202の方位と同じである。
ある実施形態では、ハンドヘルドコントローラ202は、ハンドヘルドコントローラ202が複数の光検出器204a、204b他を含むことを除いて、ハンドヘルドコントローラ115(図1A)と同じである。
図3は、本明細書に説明される1つ以上の操作(例えば、数学演算、演算動作、判定動作等)を行うコンピューティングデバイス107を例示するブロック図である。コンピューティングデバイス107は、プロセッサ302、メモリデバイス304、ネットワークインターフェースコントローラ306、ならびに複数の入力/出力(I/O)ポート308a、308b、308c、及び308dを含む。ネットワークインターフェースコントローラ306は、コンピュータネットワーク(例えば、ローカルエリアネットワーク(LAN)、インターネット等の広域ネットワーク(WAN)等)、またはそれらの組み合わせ等にアクセスするためのネットワークインターフェースカード(NIC)を含む。I/Oポート308a〜308dのそれぞれの例は、シリアルポート、パラレルポート、ユニバーサルシリアルバス(USB)を含む。シリアルポートは、プロセッサ302とシリアルポートに連結されるI/Oデバイス(例えば、HMD102、ハンドヘルドコントローラ115(図1A)、プロジェクタ104(図1A)等)との間で、連続様式(例えば、1回当たり1ビット等)でデータを転送する。パラレルポートは、プロセッサ302とパラレルポートに連結されるI/Oデバイスとの間で、並行様式(例えば、1回当たり複数のビット等)でデータを転送する。USBポートは、USBプロトコルを適用し、プロセッサ302とUSBポートに連結されるI/Oデバイスとの間でデータを転送する。本明細書に使用されるようなプロセッサは、中央演算処理装置(CPU)を指し、特定用途向け集積回路(ASIC)またはプログラム可能論理回路(PLD)が使用され、これらの用語は、本明細書で同義的に使用される。本明細書に使用されるようなメモリデバイスの例は、読取専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、ハードディスク、揮発性メモリ、不揮発性メモリ、冗長アレイ記憶ディスク、フラッシュメモリ等を含む。コンピューティングデバイスの例は、ゲーム機、デスクトップコンピュータ、ラップトップコンピュータ、多機能テレビ、タブレット、携帯電話等を含む。
一実施形態では、コンピューティングデバイス107は、HMD102及び/またはプロジェクタ104によって、コンピュータネットワークを介してアクセス可能である。例えば、コンピューティングデバイス300は、ネットワークまたはサーバラックの一部である。
ある実施形態では、コンピューティングデバイス107によって行われるような本明細書に説明される任意の処理操作は、クラウドネットワーク内で行われる。
図4Aは、xyz座標系の原点に対する光検出器105aの方位を判定するための方法400の実施形態のフローチャートである。HMD102上に位置する光検出器105aは、工程402において、ビーム110が光検出器105aによって感知されるとき、検出ビームヒット信号(例えば、光線強度ピークを含むパルスを有する信号、光線極大を含むパルスを有する信号、電気センサ信号、最大振幅を含むパルスを有する信号等)を生成する。光検出器105aは、検出ビームヒット信号をコンピューティングデバイス107のプロセッサ302に送信する。プロセッサ302は、工程404において、図4Bに関して下記に説明される方法450に従って、検出ビームヒット信号に基づいて、xyz座標系の原点に対する光検出器105aの方位を判定する。
図4Bは、プロジェクタ104のxyz座標系の原点に対する光検出器105aの方位を判定するための方法450の実施形態のフローチャートである。プロジェクタ104(図1A)からのビーム110の投影及びスキャニングの間、プロジェクタ104のクロックソース(例えば、水晶振動子、クロック発振器、クロック信号発生器等)によって生成されたクロック信号は、工程452において、HMD102のクロックソース(例えば、水晶振動子、クロック発振器、クロック信号発生器等)によって生成されたクロック信号と連続的に同期されることに留意されたい。例えば、HMD102のクロックソースによって生成されたクロック信号は、プロジェクタ104のクロックソースによって生成されたクロック信号との規定の位相差内にある。別の例として、HMD102のクロック信号は、プロジェクタ104のクロック信号のものと同じ位相を有する。あるパターン(リサージュパターン、ラスタ走査パターン等)でのMEMSミラー112及びビーム110の移動場所は、光検出器105aによって、プロジェクタ104内で生成されたクロック信号及びビーム110の検出時間(例えば、ビーム110のパルスのピーク強度の時間、パルスの最大振幅の時間、パルスの振幅ピークの時間等)を使用して判定される。ビーム110の検出時間は、HMD102内で生成されたクロック信号によって測定される。
プロジェクタ104内で生成されたクロック信号とHMD102内で生成されたクロック信号との同期は、コンピューティングデバイス107のプロセッサ302によって行われる。例えば、コンピューティングデバイス107のプロセッサ302は、リンク111(図1A)を介してプロジェクタ104のプロセッサと通信し、プロジェクタ104のクロック信号の位相を受信する。プロジェクタ104のプロセッサは、プロジェクタ104のクロックソースに連結される。さらに、コンピューティングデバイス107のプロセッサ302は、リンク109(図1A)を介してHMD102のプロセッサと通信し、HMD102のクロック信号の位相を提供する。位相を受信すると、HMD102のプロセッサは、信号をHMD102のクロックソースに送信し、HMD102のクロック信号の位相を修正することにより、プロジェクタ104のクロック信号及びHMD102のクロック信号の位相は同期される。
一実施形態では、プロジェクタ104のプロセッサは、プロジェクタ104のクロックソースによって生成されたクロック信号の位相を、リンク117(例えば、プロジェクタ104とHMD102との間の無線周波数信号リンク、無線リンク、有線通信媒体等)を介して、HMD102のプロセッサに送信する。HMD102のプロセッサは、プロジェクタ104のクロック信号の位相を受信し、HMD102のクロックソースによって生成されたクロック信号の位相を修正し、プロジェクタ104のクロック信号と一致させる。
ある実施形態では、HMD102のプロセッサは、HMD102のクロックソースによって生成されたクロック信号の位相を、プロジェクタ104とHMD102との間のリンク117を介して、プロジェクタ104のプロセッサに送信する。プロジェクタ104のプロセッサは、HMD102のクロック信号の位相を受信し、プロジェクタ104のクロックソースによって生成されたクロック信号の位相を修正し、HMD102のクロック信号の位相と一致させる。
一実施形態では、HMD102及びプロジェクタ104のクロック信号は同期され、クロック信号の位相間の規定の位相差よりも小さくなる。
ある実施形態では、デバイス(例えば、HMD102、プロジェクタ104等)のプロセッサは、別のデバイス(例えば、プロジェクタ104、HMD102等)から受信されたクロック信号の位相を、そのデバイスの位相ロックループ(PLL)に送信し、PLLは、その位相をそのデバイスによって生成されたクロック信号の位相に一致させる。
光検出器105aは、検出ビームヒット信号をHMD102のプロセッサに送信する。HMD102のプロセッサは、検出ビームヒット信号をアナログ形式からデジタル形式に変換し、デジタル形式のビームヒット信号タイミングを、リンク109(図1A)を介して、コンピューティングデバイス107に送信する。さらに、HMD102のプロセッサは、光検出器105a上のビーム110のヒット時間(例えば、ビーム110のパルスの最大振幅の発生時間、ビーム110のパルスの強度極大の発生時間、既定の限度を超えるビーム110の強度の増加時間、検出ビームヒット信号のパルスの生成時間等)を、HMD102のクロックソースから取得し、ヒット時間を、リンク109を介して、コンピューティングデバイス107のプロセッサ302に送信する。コンピューティングデバイス107のプロセッサ302は、工程454において、検出ビームヒット信号及び光検出器105a上のビーム110のヒット時間を受信する。ビーム110のヒット時間は、ビーム110が光検出器105aによって検出されHMD102のクロックソースによって測定される時間である。
プロセッサ302は、工程456において、ヒット時間及びパターンの開始時間に基づいて、ビーム110の場所を判定する。一実施形態では、パターンの開始時間は、プロジェクタ104のプロセッサから111(図1A)を介してプロセッサ302によって取得され、MEMSミラー112がパターンを作りまたは繰り返すように移動する時間である。プロジェクタ104のプロセッサは、パターンの開始時間を、プロジェクタ104のクロックソースから取得する。プロジェクタ104のクロックソースは、パターンの開始時間を測定する。パターン内のビーム110の場所の判定の例として、コンピューティングデバイス107のプロセッサ302は、パターンの開始時間、周波数f1、周波数f2、及びヒット時間から、パターン内のビーム110の場所を判定する。例示するために、コンピューティングデバイス107のプロセッサ302は、開始時間がパターン内のビーム110の初期場所に対応することを判定する。さらに、プロセッサ302は、初期場所がMEMSミラー112の周波数f1及びf2によって変化し、ヒット時間においてパターン110上のビームの場所に達する。一実施形態では、周波数f1及びf2と、ヒット時間と、開始時間と、パターン内のビーム110の場所との間の対応関係(例えば、1対1の関係等)は、コンピューティングデバイス107のメモリデバイス304内に記憶される。その対応関係はプロセッサ302によってアクセスされ、パターン内のビーム110の場所を開始時間、周波数f1及びf2、及びヒット時間から判定する。
図4Cは、図4Bのフローチャート及び図4Bの方法450の続きである。工程458において、コンピューティングデバイス107のプロセッサ302は、プロジェクタ104のxyz座標系の原点に対する光検出器105aの方位をそのパターンの場所から判定する。例えば、図4Dに示されるように、プロジェクタ104及びHMD470のクロック信号は同期される。HMD470は、HMD102(図1A)の例である。ビーム110がパターンに従うように、プロジェクタ104は、時間T1〜T8においてビーム110を発射する。時間T1〜T8は、プロジェクタ104のクロックソースによって測定される。各時間T1〜T8は、プロジェクタ104のxyz座標系に対するビーム110の異なる方位に対応する。ビーム110の生成は、簡単に説明するために、プロジェクタ104のy軸に沿って示されることに留意されたい。ビーム110は、図4Dのxyz座標系によって示されるような、プロジェクタ104のx軸、またプロジェクタ104のy軸に沿ってパターンを形成するように走査する。光検出器105aは、時間T3において、ビーム110を検出する。図4Eを参照して例示されるように、時間T3で、1対1の対応関係(例えば、マッピング、関係式、リンク等)に基づいて、コンピューティングデバイス107のプロセッサ302は、ビーム110の方位がプロジェクタ104のxyz座標系の原点に対する角度θx1、θy1、及びθz1であることを判定する。パターンの繰り返し毎に、ヒット時間と、角度θx、θy、及びθzと、パターン内のビーム110の場所との間に1対1の対応関係がある。そのとき、ユーザ106は、プロジェクタ104のxyz座標系の原点に対してHMD102を移動させるように動く。HMD102の移動後、光検出器105aは、時間T4において、ビーム110を検出する。時間T4での1対1の対応関係から、プロセッサ302は、ビーム110の方位がプロジェクタ104のxyz座標系の原点に対して角度θx2、θy2、及びθz2にあることを判定する。
図4Eに示されるように、HMD470の光検出器のそれぞれは、HMD102の例であるHMD470の前面に対して角度付けられる。例えば、光検出器105aは、HMD470のy軸に対して角度Φ1を形成するように角度付けられる。HMD470のy軸の方位は、HMD470の移動とともに変化する。
図4Cに戻ってそれを参照すると、プロセッサ302はさらに、工程460において、ビーム110を検出する光検出器105aがビーム110に沿ったいずれかの場所に位置することを判定する。プロセッサ302は、工程462において、下記に説明される三角形分割法を適用し、プロジェクタ104(図1A)のxyz座標系に対する光検出器105aの位置を判定する。
いくつかの実施形態では、HMD470の前面に対して角度付けられてない(例えば、平行であるなど)光検出器の方位から、ビーム110が既定のビーム110のものと同じであると判定する。これらの実施形態では、光検出器及びビーム110の方位は、プロジェクタ104のxyz座標系に対して角度付けられる。様々な実施形態では、HMD470の前面に対して角度付けられた光検出器の方位は、HMD470の前面に対して光検出器によって形成される角度と、プロジェクタ104のxyz座標系に対してビーム110によって形成される角度との組み合わせである。
図4Dは、プロジェクタ104に対する光検出器105aの方位の判定を例示するシステムの実施形態の図である。図4Dに例示されるようなシステムは、HMD470及びプロジェクタ104を含む。プロジェクタ104は、走査中に、時間T1〜T8においてビーム110を発射してパターンを形成し、ビーム110がHMD470の1つ以上の光検出器によって検出される。
図4Eは、ビーム110が生成された各時間T1〜T8がプロジェクタ104のxyz座標系に対するビーム110の異なる方位に対応することを例示する、システムの実施形態の図である。例えば、時間T3は、角度θx、θy、及びθzの値の第1の組み合わせに対応し、時間T4は、角度θx、θy、及びθzの値の第2の組み合わせに対応する。第1の組み合わせの少なくとも1つの値は、第2の組み合わせの少なくとも1つの対応する値と異なることに留意されたい。例えば、第1の組み合わせの角度θxの値は、第2の組み合わせの角度θxの値と異なり、及び/または第1の組み合わせの角度θyの値は、第2の組み合わせの角度θyの値と異なり、及び/または第1の組み合わせの角度θzの値は、第2の組み合わせの角度θzの値と異なる。
図5は、リサージュパターン500の実施形態の図である。リサージュパターン500は、中央領域502及びエッジ領域504を含む。示されるように、中央領域502内のリサージュパターン500の交差角度は、エッジ領域504内のリサージュパターン500の交差角度よりも大きい。例えば、リサージュパターン500の部分506aとリサージュパターン500の部分506bとの間の角度は、リサージュパターン500の部分506bと部分506cとの間の角度よりも大きい。例えば、中央領域502内の部分506aと部分506bとの間の角度は、80度〜90度であり、エッジ領域504内の部分506bと部分506cとの間の角度は、45度未満である。別の例として、エッジ領域504内のリサージュパターン500の部分510aとエッジ領域504内のリサージュパターン500の部分510bとの間の角度は、45度未満である。
リサージュパターン500は、プロジェクタ104のxyz座標系に対してビーム110の角変位がゼロである原点に512を有する。リサージュパターン500は、原点512で始まり、原点512で終了し、その後、連続的方法で繰り返す。
ある実施形態では、リサージュパターン500は、MEMSミラー112のX軸に沿ったものについて、
x=Asin(ω1t+δ)...(方程式1)として表され、
MEMSミラー112のY軸に沿ったものについて、
y=Bsin(ω2t)...(方程式2)として表される。
式中、ω1=2πtf1及びω2=2πtf2、tは時間であり、Aは、MEMSミラー112のX軸に沿ったリサージュパターン500の振幅であり、Bは、MEMSミラー112のY軸に沿ったパターン500の振幅であり、δは、MEMSミラー112のY軸と比較したMEMSミラー112のX軸に沿ったリサージュパターン500の位相差である。
一実施形態では、位相δは必要とされない。したがって、方程式(1)は、
x=Asin(ω1t)...(方程式3)になる。
f1がf2よりも大きい実施形態では、リサージュパターン500のフレームが繰り返される繰り返し周波数Fは、f1とf2との間の差に等しい。f1の値及び/またはf2の値は、リサージュパターン500の密度である。
図6Aは、リサージュパターン500のビームヒットの場所を判定するために、光検出器105aの実際の場所604に対する光検出器105aの測定場所602を例示する、実施形態の図である。光検出器105の測定場所602は、プロジェクタ104のxyz座標系の原点を基準にして判定される。ビーム110のリサージュパターン500は、プロジェクタ105a上に入射されるように示され、リサージュパターン500が続く方向をもたらすリサージュ軸606を有する。リサージュパターン500の径は、d1、例えば、10ミリメートル、5ミリメートル、8ミリメートル等である。実際の場所604の代わりに、プロセッサ302は、リサージュ軸606に直交する軸608に沿ったいずれかの位置にある、プロジェクタ104のxyz座標系の原点に対する光検出器105aの場所を判定する。例えば、プロセッサ302は、測定場所602の点である、プロジェクタ104のxyz座標系の原点に対する光検出器105aの場所を判定する。測定場所602の点は、リサージュ軸606及び軸608の交点にある。軸608は、ビームヒットが検出された実際の場所604を通って延在する。このように、読み取りは、ビーム110の掃引に従った精度があるであろうが、ビーム110に直交するその精度は、ビーム110の直径d1及び光検出器105aのサイズ(例えば、直径等)に依存する。示されるように、光検出器105の直径は、ビーム110が続くリサージュパターン500の直径d1よりも小さい。
図6Bは、示されるリサージュパターン掃引のそれぞれによって光検出器105aの点灯の間に移動がないとき、リサージュパターン500の部分506aの直径d1及び部分506bの直径d1の交点を使用して、ビームヒットの場所が判定されることを例示する、実施形態の図である。ビームヒットの場所は、部分506aの直径d1及び部分506bの直径d1の交点である実際の場所604である。光検出器105aは、リサージュパターン500の部分506aの期間の時間T1において検出ビームヒット信号を生成し、リサージュパターン500の部分506bの期間の時間T2において別の検出ビームヒット信号を生成する。部分506aは、部分506bが横断する方向に対して、ある方向角(例えば、90度、80度〜95度等)で横断する。さらに、リサージュパターン500がその角度方向で横断するとき、光検出器105aの移動がない。光検出器105aがビームヒットを複数回検出するとき(例えば、時間T1及びT2等)、リサージュパターン500のフレーム期間(例えば、実行の1周期等)、ビームヒットの場所が判定される。
一実施形態では、リサージュパターン500及び光検出器105aのサイズが一致する場合(例えば、同じ直径、相互に既定範囲内の直径になるなど)、部分506aが光検出器105aを横切って掃引するとき(例えば、第1の掃引の期間等)、第1の検出ビームヒット信号は、フレーム期間に取得され、ビーム110が第1の掃引にほぼ直交して掃引するとき(例えば、第2の掃引の期間等)、第2の検出ビームヒット信号は、フレーム期間に取得される。部分506bが光検出器105aを横切って掃引すると、第2の掃引が発生する。HMD102のクロックソースは、第1の検出ビームヒット信号が生成された時間を測定し、第2の検出ビームヒット信号が生成された時間を測定する。プロセッサ302は、第1及び第2の検出ビームヒット信号に関連する時間から、プロジェクタ104のxyz座標系の原点に対する光検出器105aの方位を判定する。例えば、プロセッサ302は、第1の検出ビームヒット信号が生成された時間に基づいて、プロジェクタ104のxyz座標系の原点に対するビーム110の対応する第1の方位を判定する。さらに、プロセッサ302は、第2の検出ビームヒット信号が生成された時間に基づいて、プロジェクタ104のxyz座標系の原点に対するビーム110の対応する第2の方位を判定する。プロセッサ302は、統計値(第1の方位と第2の方位との間にあるd1の交点の不確実性等)を計算し、プロジェクタ104のxyz座標系の原点に対するビーム110の方位を判定する。一実施形態では、プロセッサ302によって判定されたビーム110の方位は、プロジェクタ104のxyz座標系の原点に対する光検出器105aのものと同じである。
図6Cは、光検出器105aの移動があるとき、リサージュパターン500の部分506aの直径d1及び部分506bの直径d1の交点を使用して、ビームヒットの場所が判定され、その場所が補正されることを例示する、実施形態の図である。リサージュパターン500の部分506aから部分506bへの移動の間に、光検出器105aは、量610だけ、位置P1から位置P2に移動する。位置P1において、光検出器105aは、リサージュパターン500の部分506aの期間の時間taにおいて検出ビームヒット信号を生成し、位置P2において、光検出器105bは、リサージュパターン500の部分506aの期間の時間tbにおいて別の検出ビームヒット信号を生成する。光検出器105aが位置P1にあるときの直径d1と、光検出器105aが位置P2にあるときの直径d1との交点は、プロジェクタ104のxyz座標系の原点に対する光検出器105aの誤り位置である。誤り位置が移動610に基づいてプロセッサ302によって補正されることにより、誤り位置612の誤差614が除去され、プロジェクタ104のxyz座標系の原点に対する光検出器105aの場所に達する。コンピューティングデバイス107のメモリデバイス304内に記録され及び慣性計測装置(IMU)等(例えば、加速度計及びジャイロスコープ等)の他の測定センサとのセンサフュージョンの結果であり得る、光検出器105aの事前に記憶された移動に基づいて、移動610は、プロセッサ302によって予測される。
ある実施形態では、直径d1の交点が使用された図6Bまたは図6Cを参照して上記に説明される方法は、光検出器105aがリサージュパターン500のエッジ領域504(図5)内のビーム110に直面するとき、プロジェクタ104のxyz座標系の原点に対する光検出器105aの場所を判定するために使用される。
図6Dは、光検出器105aが静止しリサージュパターン500のエッジ領域504(図5)内のビーム110に直面するとき、プロジェクタ104のxyz座標系の原点に対する光検出器105aの場所の判定を例示するために、リサージュパターン500の部分510a及び510bを示す。ビーム110を検出する光検出器105aの場所は、部分510aの区間ia及び部分510bの区間ibの交点620になることをプロセッサ302によって判定される。例えば、光検出器105aがビーム110の区間iaの一部を検出したときの時間tcにおいて、プロセッサ302は、リサージュパターン区分510aの曲線軌道を計算し、同様に、光検出器105aがビーム110の区間ibの一部を検出したときの時間tdにおいて、プロセッサ302は、リサージュパターン区分510bの曲線軌道を計算する。プロジェクタ104のxyz座標系の原点に対する光検出器105aの測定場所は、2つの測定された曲線軌道(例えば、区分等)を交差させることによって、プロセッサ302によって計算される。
図7Aは、プロジェクタ104に対する光検出器105aの位置を判定する三角形分割法を例示するためのシステム700の実施形態の図である。システム700は、プロジェクタ104及びプロジェクタ702(例えば、1つの代わりの2つのプロジェクタ等)を含む。プロジェクタ702は、構造及び機能において、プロジェクタ104と同じである。プロジェクタ104及びプロジェクタ702は、三角形分割の既知の基準値を提供するために、相互に対して、剛体及び既知のトポロジに固定される。プロジェクタ104から発射されたビーム110の方向は、プロジェクタ104のz軸に対して角度θaであり、プロジェクタ702から発射されたビーム704(例えば、レーザビーム、可視光ビーム、赤外光ビーム、不可視光ビーム等)の方向は、プロジェクタ702のz軸に対して角度θbであり、角度θaとθbとの両方は、方位を判定する工程458(図4C)を適用することによって、コンピューティングデバイス107のプロセッサ302によって判定される。プロジェクタ702は、プロジェクタ104のMEMSミラー112と同じであるMEMSミラーを含む。プロジェクタ702のz軸は、プロジェクタ702のx軸に垂直であり、プロジェクタ702のz軸とx軸との両方は、プロジェクタ702のy軸に垂直である。
プロセッサ302は、三角形分割法を角度θa及びθbに適用させ、ビーム704とのビーム110の交点(または、2直線の最接近点)を判定し、交点がビーム110及び704を検出するHMD102の光検出器105aの位置であることを判定する。光検出器105aの位置は、プロジェクタ104のxyz座標系及び/またはプロジェクタ702のxyz座標系の原点に対して測定される。プロジェクタ702のxyz座標系は、プロジェクタ702のx軸、プロジェクタ702のy軸、及びプロジェクタ702のz軸を含む。
ある実施形態では、プロジェクタ102及び702は、ビーム110及び704の時分割多重生成を行ない、HMD102の光検出器105aによって検出されたビーム110及び704の対応する1つのものから、プロジェクタ104及び702のうちの1つを識別する。プロジェクタ104は、リサージュパターン走査の周波数(例えば、リサージュパターンがMEMSミラー112によって繰り返される周波数等)である周波数(例えば、60Hz等)において、ビーム110を発射する。その後、パターンがプロジェクタ104によって実行された後に、プロジェクタ104は、ビーム110の発射を停止し、プロジェクタ702は、ビーム110によって形成されるものと同じプロジェクタ702のMEMSミラーのパターンを形成するように、ビーム104が発射されたものと同じ周波数で、ビーム704を発射する。その後、パターンがビーム704によって形成された後、プロジェクタ702は、ビーム704の発射を停止し、プロジェクタ104は、ビーム704が発射されたものと同じ周波数でビーム110を発射する。これは、プロジェクタ104及び702が時分割多重を行う方法である。
一実施形態では、60Hzの周波数での時分割多重の代わりに、プロジェクタ104及び702は、数千ヘルツの周波数(例えば、MEMSミラー112がMEMSミラー112の共振周波数に対して移動する周波数)で時分割多重を行う。
ある実施形態では、プロジェクタ104のプロセッサは、制御信号をコンピューティングデバイス107のプロセッサ302にリンク111を介して送信し、プロジェクタ104のビーム発生器108がビーム110の発射を停止させていることを示し、プロジェクタ702のプロセッサは、制御信号をプロセッサ302にリンク706(リンク111と同じ構造及び機能のもの)を介して送信し、プロジェクタ702のビーム発生器がビーム704の発射を停止させていることを示す。さらに、プロジェクタ104のプロセッサは、制御信号をコンピューティングデバイス300のプロセッサ302にリンク111を介して送信し、プロジェクタ104のビーム発生器108がビーム110の発射を停止させていることを示し、プロジェクタ702のプロセッサは、制御信号をプロセッサ302にリンク706を介して送信し、プロジェクタ702のビーム発生器がビーム704の発射を停止させていることを示す。プロジェクタ104のプロセッサは、ビーム発生器108に連結され、プロジェクタ702のプロセッサは、プロジェクタ702のビーム発生器に連結される。プロジェクタ104によってプロセッサ302に送信される制御信号は、プロジェクタ104の識別情報を含み、プロジェクタ702によってプロセッサ302に送信される制御信号は、プロジェクタ702の識別情報を含む。制御信号をプロジェクタ104から受信すると、プロセッサ302は、プロジェクタ104をプロジェクタ104の識別情報から識別する。同様に、制御信号をプロジェクタ702から受信すると、プロセッサ302は、プロジェクタ702をプロジェクタ702の識別情報から識別する。
ある実施形態では、コンピューティングデバイス107のプロセッサ302は、制御信号をプロジェクタ104及び702のプロセッサに送信し、プロジェクタ104のビーム発生器108をオンにし、プロジェクタ702のビーム発生器をオンにし、制御信号をプロジェクタ104及び702のプロセッサに送信し、プロジェクタ104のビーム発生器108をオフにし、プロジェクタ702のビーム発生器をオンにし、ビーム110及び704の時分割多重生成を行う。例えば、コンピューティングデバイス107は、制御信号をプロジェクタ104に送信し、ある時間(例えば、クロックサイクルの間、クロックサイクルの立ち上がりエッジの間、クロックサイクルの立ち下がりエッジの間等)で、プロジェクタ104をオンにし、同時に、制御信号をプロジェクタ702に送信し、プロジェクタ702をオフにする。別の例として、コンピューティングデバイス107は、制御信号をプロジェクタ702に送信し、ある時間(例えば、クロックサイクルの間、クロックサイクルの立ち上がりエッジの間、クロックサイクルの立ち下がりエッジの間等)で、プロジェクタ702をオンにし、同時に、制御信号をプロジェクタ104に送信し、プロジェクタ104をオフにする。プロジェクタのプロセッサは、制御信号を受信しプロジェクタをオンにし、制御信号をプロジェクタのビーム発生器のドライバ(例えば、1つ以上のトランジスタ等)に送信することにより、ドライバがオンになり、電流信号を生成し、ビーム発生器のビーム源(例えば、発光ダイオード(LED)灯、白熱灯、ネオン放電灯、ガス放電灯、キセノンアーク燈、レーザ発光体、電磁放射発光体、ガスレーザ光源、化学レーザ光源、固体レーザ光源、ファイバーレーザ光源、光子クリスタルレーザ光源、半導体レーザ光源、ダイオード等)を駆動させる。ビーム源をオンにするためのドライバから電流信号を受信すると、ビーム源は、光線を発射する。同様に、プロジェクタのプロセッサは、制御信号を受信しプロジェクタをオフにし、制御信号をプロジェクタのドライバに送信することにより、ドライバがオフになり電流信号を生成することを中断する。電流信号が生成されたことが中止されると、ビーム源は、光線を発射することをやめる。
コンピューティングデバイス107は、リンク706を介して、プロジェクタ702に連結され、リンク706を介して、制御信号をプロジェクタ702に送信する。同様に、プロジェクタ702は、リンク706を介して、コンピューティングデバイス107と通信する。さらに、コンピューティングデバイス107は、リンク111を介して、制御信号をプロジェクタ104に送信する。同様に、プロジェクタ104は、リンク111を介して、コンピューティングデバイス107と通信する。
いくつかの実施形態では、図4A〜4Eを参照して上記に説明された方法は、プロジェクタ104とHMD102の代わりに、プロジェクタ702及びHMD102に適用可能であることに留意されたい。例えば、図4Aの方法は、プロジェクタ702のxyz座標系に対するビーム704の方位を判定するために使用され、図4B及び図4Cを参照して説明された方法は、プロジェクタ702のxyz座標系に対するビーム704の方位と、プロジェクタ702のxyz座標系に対する光検出器105aの位置とを判定するために使用される。
図7Bは、プロジェクタ104に対する光検出器105aの位置を判定する別の方法を例示するためのシステム750の実施形態の図である。光検出器105a、105b、及び105cにビーム110がヒットすると、コンピューティングデバイス107のプロセッサ302は、検出ビームヒット信号の生成タイミングをHMD102のプロセッサから受信する。そのタイミングは、HMD102のクロックソースによって測定され、HMD102のクロックソースから、HMD102のプロセッサによって取得される。プロセッサ302は、光検出器105a、105b、及び105cの方位を、工程458(図4C)の方位の判定と同様の様式のタイミングから判定する。プロセッサ302は、Perspective−n−Point等の方法を適用し、プロジェクタ104のxyz座標系の原点に対するHMD102の姿勢を推定する。
図8Aは、プロジェクタ104及び702を識別するためにビーム110及び704の変調を例示する、システム700の実施形態の図である。プロジェクタ104の変調器(例えば、デジタル変調器等)は、プロジェクタ104のビーム発生器108のビーム源に連結され、プロジェクタ104のビーム源によって発射されるビームを、第1のビットコード(例えば、ビットパターン、Lビットシーケンス等(Lは2よりも大きい整数))で変調する。例えば、ビーム発生器108のビーム源によって発射されるビームは、ビットシーケンスで重ねられることにより、光検出器105aによって生成された検出ビームヒット信号のパルスが、第1のLビットシーケンスで重ねられる。プロジェクタ104のビーム源によって発射されるビームは、ビーム110を生成するために変調される。
同様に、プロジェクタ702のビーム発生器のビーム源によって発射されるビームは、ビットシーケンスで重ねられることにより、ビーム704を検出するときの光検出器105aによって生成された検出ビームヒット信号のパルスは、第2のビットコード(例えば、ビットパターン、第2のLビットシーケンス等)で重ねられる。第2のビットコードは、第1のビットコードと異なる組み合わせを有し、ビーム704とビーム110を区別する。例えば、第1のシーケンスは、0110011のビット組み合わせを有し、第2のシーケンスは、1001100のビット組み合わせを有する。プロジェクタ702の変調器(例えば、デジタル変調器等)は、プロセッサ702のビーム発生器のビーム源に連結され、プロジェクタ702のビーム源によって発射されるビームを、ビットシーケンスで変調することにより、光検出器105aによって発射される検出ビームヒット信号のパルスが第2のビットコードでその上に重ねられる。第1及び第2のビットコードの例は、下記に与えられる。
ある実施形態では、対応するビットシーケンスでの変調の後に生成されたビーム110とビーム704との両方は、常に発射される。例えば、プロジェクタ104のビーム発生器108及びプロジェクタ702のビーム発生器は、それらの各ビームを連続的に発射する。ビーム110及び704を生成するために、プロジェクタ104及び702による時分割多重が行われない。2つのビーム110及び704が同時に光検出器105aにヒットする衝突は稀であり、これらの場合は、誤差ケースとして考慮しなくてもよい。
一実施形態では、衝突を避けるために、対応するビットシーケンスでの変調の後に生成されたビーム110とビーム704との両方は、異なる時間で発射される。例えば、プロジェクタ702のビーム発生器がビーム704を発射しないとき、プロジェクタ104のビーム発生器108は、ビーム110を発射し、プロジェクタ702のビーム発生器がビーム704を発射するとき、プロジェクタ104のビーム発生器108は、ビーム110を発射しない。ビーム110及び704を生成するために、プロジェクタ104及び702による時分割多重が行われる。
ビーム110及び704が光検出器105a上に入射すると、HMD102の光検出器105aは、ビーム110を検出して第1の検出ビームヒット信号を生成し、ビーム704を検出して第2の検出ビームヒット信号を生成する。光検出器105aによって生成された第1及び第2の検出ビームヒット信号は、光検出器105aからHMD102の復調器に提供される。HMD102の復調器は、第1の検出ビームヒット信号を復調し、第1のLビットシーケンスを第1の検出ビームヒット信号から抽出し、第2の検出ビームヒット信号bを復調し、第2のLビットシーケンスを第2の検出ビームヒット信号から抽出する。コンピューティングデバイス107のプロセッサ302は、第1及び第2のLビットシーケンスをHMD102の復調器からリンク109(図1A)を介して受信し、第1のビットシーケンスが第2のビットシーケンスと比較して異なる組み合わせ(例えば、パターン等)を有することを判定し、第1の検出ビームヒット信号がプロジェクタ104によって生成されたビーム110から生成され、第2の検出ビームヒット信号がプロジェクタ702によって生成されたビーム704から生成されたことを判定する。プロジェクタ110及びプロジェクタ702と第1のシーケンス及び第2のシーケンスとの間の対応関係(例えば、マッピング、関連付け等)は、コンピューティングデバイス107のメモリデバイス304内に記憶される。例えば、プロジェクタ104の識別方法は、第1のビットシーケンスのものと同じ行にあり、プロジェクタ702の識別情報は、第2のビットシーケンスのものと同じ行にある。その対応関係はプロセッサ302によってアクセスされ、第1のシーケンスがプロジェクタ104またはプロジェクタ702によって生成されたかどうかを判定し、及び第2のシーケンスがプロジェクタ104またはプロジェクタ702によって生成されたかどうかを判定する。したがって、プロジェクタ104及び702は、プロセッサ302によって識別される。
一実施形態では、一意のビットコードを有する変調器によって生成された変調信号の周波数は、高い(例えば、100MHz、90MHz、90MHz〜110MHz、1GHz以上等の周波数)。変調信号の例は、ビットシーケンス(例えば、第1のビットシーケンス、第2のビットシーケンス等)である。
ある実施形態では、プロジェクタの変調器は、プロジェクタのプロセッサによって実行されるコンピュータソフトウェアであり、プロジェクタのビーム源によって生成されたビームを変調する。例えば、プロジェクタ104の変調器は、プロジェクタ104のプロセッサによって実行されるコンピュータソフトウェアルーチンであり、プロジェクタ702の変調器は、プロジェクタ702のプロセッサによって実行されるコンピュータソフトウェアルーチンである。ある実施形態では、HMD102の復調器は、HMD102のプロセッサによって実行されるコンピュータソフトウェアであり、HMD102の光検出器105aによって生成された検出ビームヒット信号を復調する。
一実施形態では、変調器は電気回路であり、復調器は電気回路である。
ある実施形態では、パターンのフレーム期間のプロジェクタ104のxyz座標系の原点に対するプロジェクタ105aの方位の判定と同様の様式で、HMD102の残りの光検出器(例えば、光検出器105b及び105c等)によって生成された複数の検出ビームヒット信号が、プロジェクタ104のxyz座標系に対するHMD102の光検出器の方位を判定するために使用される。プロセッサ702のxyz座標系に対するHMD102の残りの光検出器の方位は、プロセッサ302によって判定される。三角形分割またはPerspective−n−Pointの方法は、プロジェクタ104のxyz座標系及びプロジェクタ702のxyz座標系に対するHMD102の光検出器(例えば、光検出器105a、光検出器105b、光検出器105c等)の方位にプロセッサ302によって適用され、プロジェクタ104のxyz座標系またはプロジェクタ702のxyz座標系に対するHMD102の方位及び位置を判定する。
ある実施形態では、プロジェクタ104のxyz座標系またはプロジェクタ702のxyz座標系の原点に対するHMD102の方位及び位置を判定するために、HMD102の動きは、プロセッサ302によって考慮に入れられる。
複数のプロジェクタ(例えば、プロジェクタ104及び702等)の場合、ある実施形態では、プロジェクタによって発射されたビーム(例えば、ビーム104及び704等)間で、ビーム衝突が発生する。光検出器105aが2つ以上のプロジェクタビーム(例えば、ビーム104及び704等)によって同時にヒットされると、ビーム衝突が発生する。プロジェクタ数の増加、プロジェクタによって発射されるビーム径の増加、及びHMD102とプロジェクタとの間の距離の減少に伴って、衝突機会が増加する。ビーム衝突は、シミュレーションでモデル化される。ビームの異なる光周波数を使用することによって及びノッチフィルタを伴う複数の光検出器を使用することによって、ビーム衝突が減る。例えば、ビーム110の周波数は、ビーム704の周波数と異なる。
一実施形態では、リサージュパターン500(図5)の境界(例えば、エッジ領域504等)でプロジェクタによって発射されるビームのスイッチを切ることによって、衝突が減らされ、そこでは、リサージュパターン500が中央領域502(図5)とより深く比較される。例えば、ビーム110がリサージュパターン500の中央領域502からエッジ領域504に到着する時間において、ビーム発生器108がオフ(例えば、電源オフ等)になり、ビーム704がリサージュパターン500の中央領域502からエッジ領域504に到着する時間において、プロジェクタ702のビーム発生器がオフになる。ある実施形態では、プロジェクタのプロセッサは、制御信号をプロジェクタの電源(例えば、バッテリ、交流電流源、発電機等)に送信し、プロセッサが、ビームがリサージュパターン500の中央領域502からエッジ領域504に到着することを判定する時間において、電源をオフにする。その電源は、プロセッサに連結される。その電源は、電力をビーム発生器に提供するために、プロセッサのビーム発生器に結合される。
ある実施形態では、ビーム110がリサージュパターン500のエッジ領域504から中央領域502に到着する時間において、プロジェクタ104がオンになり、ビーム704がリサージュパターン500のエッジ領域504から中央領域502に到着する時間において、プロジェクタ702がオン(例えば、電源オン等)になる。ある実施形態では、プロジェクタのプロセッサは、制御信号をプロジェクタの電源に送信し、プロセッサが、ビームがリサージュパターン500のエッジ領域504から中央領域502に到着することを判定する時間において、電源をオンにする。
一実施形態では、ビーム110の第1の変調周波数(例えば、ビーム110がビットシーケンスで変調される周波数等)は、ビーム704の第2の変調周波数(ビーム704がビットシーケンス等で変調される周波数)と異なる。プロセッサ302は、2つの変調周波数を表す第1及び第2の検出ビームヒット信号を受信し、第1及び第2の検出ビームヒット信号を時間領域から周波数領域に変換するフーリエ変換を適用し、2つの異なる変調周波数を検出ビームヒット信号から抽出する。プロセッサ302は、第1の変調周波数と、第1の変調周波数とプロジェクタ104の識別情報との間の記憶された対応関係とから、第1の検出ビームヒット信号がプロジェクタ104から発射されたビーム110から生成されたことを識別する。同様に、プロセッサ302は、第2の変調周波数と、第2の変調周波数とプロジェクタ702の識別情報との間の記憶された対応関係とから、第2の検出ビームヒット信号がプロジェクタ702から発射されたビーム704から生成されたことを識別する。
ある実施形態では、第1の周波数でフィルタ処理を行う第1のフィルタは、光検出器105aに接続され、第2の周波数でフィルタ処理を行う第2のフィルタは、光検出器105aに近接する別の光検出器(例えば、光検出器105b等)に接続される。第1のフィルタは、第1の周波数を有する第1の検出ビームヒット信号を光検出器105aから受信し第1のフィルタ信号を出力し、第2の周波数を有する第2の検出ビームヒット信号を他の光検出器から受信し第2のフィルタ信号を出力する。プロセッサ302は、第1のフィルタ信号を第1のフィルタからリンク109(図1A)を介して受信し、第2のフィルタ信号を第2のフィルタからリンク109を介して受信する。第1のフィルタ信号が第1のフィルタから受信したこと及び第2のフィルタ信号が第2のフィルタから受信したことを判定すると、プロセッサ302は、第1のフィルタ信号がプロジェクタ104から発射されたビーム110に基づいて生成されたこと及び第2のフィルタ信号がプロジェクタ702から発射されたビーム704に基づいて生成されたことを識別する。第1及び第2のプロジェクタは、HMD102内に位置する。
図8Bは、ビーム110からビームヒットを検出すると、光検出器105aによって生成された検出ビームヒット信号のパルス810の実施形態の図である。例示されるようなパルス810は、Lビットシーケンスで重ねられる。
ある実施形態では、グローバル一意Mビットウィンドウを伴うK個の独立ビットシーケンスが生成され、K個の独立ビットシーケンスのそれぞれは、長さLを有する。ここで、Kは、一意に識別されるプロジェクタ104及び702の個数であり、Lは、そのシーケンス自体が繰り返すためのビットパターンの前のビット数である。例えば、光検出器105aは、検出ビームヒット信号を生成し、検出ビームヒット信号の各パルスは、Lビットシーケンスで重ねられるように、プロジェクタ104の変調器によって変調される。別の例として、光検出器105aは、検出ビームヒット信号を生成し、検出ビームヒット信号の各パルスは、Lビットシーケンスで重ねられるように、プロジェクタ702の変調器によって変調される。これらのLビットシーケンスのそれぞれの範囲内において、Mビットの任意のサブウィンドウは、そのシーケンス内で一意であり、また、K個の独立ビットシーケンスの全てにわたってグローバル的に一意である。例えば、光検出器105aは、検出ビームヒット信号を生成し、検出ビームヒット信号の第1のパルスは、第1のLビットシーケンスで重ねられるように、プロジェクタ104の変調器によって変調され、検出ビームヒット信号の第2のパルスは、第2のLビットシーケンスで重ねられるように、プロジェクタ104の変調器によって変調される。第2のLビットシーケンスは、第1のLビットシーケンス内のビットのMビットシーケンスと異なる及び第2のLビットシーケンス内の任意の他のMビットシーケンスと異なる、ビットのMビットシーケンスを有する。光検出器105aは、検出ビームヒット信号を生成し、検出ビームヒット信号の第3のパルスは、第3のLビットシーケンスで重ねられるように、プロジェクタ702の変調器によって変調され、検出ビームヒット信号の第4のパルスは、第4のLビットシーケンスで重ねられるように、プロジェクタ702の変調器によって変調される。第4のLビットシーケンスは、第4のLビットシーケンス内の任意の残りのMビットシーケンスと異なる、第3のLビットシーケンス内のビットの任意のMビットシーケンスと異なる、第1のLビットシーケンス内の任意のMビットシーケンスと異なる、及び第2のLビットシーケンス内の任意のMビットシーケンスと異なる、ビットのMビットシーケンスを有する。
ある実施形態では、任意のMビットシーケンスは、復調器によってデコードされる。デコードを達成するために、変調器がビームを変調することにより、任意のMビットシーケンスは、同じビットの既定数のインスタンス未満であるものを有し、スイッチ2値パターンの010及び101の少なくとも1つが、任意のMビットシーケンスに導入され、誤り耐性により、2値パターンの識別を容易にする。
ある実施形態では、変調器がビームを変調することにより、各Mビットシーケンスは、少なくとも2ビットだけ、任意の別のMビットシーケンスと異なるように拘束される。この制限により、誤り耐性の改善を可能にする。
一実施形態では、ビットシーケンスをビーム上へ重ねるためにプロジェクタ104の変調器によって適用されるビットレートは、プロジェクタ104からのHMD102の最大可能距離、ならびに周波数f1及びf2に基づいて判定される。例えば、プロジェクタ104の変調器は、高ビットレートを適用し、ビットシーケンスをビーム発生器108のビーム源によって生成されたビーム上へ重ねることにより、ビーム110が空間を走査するために速く移動し及び光検出器105aが最大定義距離に置かれたとき、光検出器105aがMビットシーケンスを含有する検出ビームヒット信号を生成する時間が十分にある。最大定義距離の例は、HMD102が位置する部屋の2つの対壁間の距離である。最大定義距離の別の例は、プロジェクタ104と壁との間の距離であり、その壁は、プロジェクタ104が位置する部屋の別の側と比較して、HMD102が位置する部屋の側に位置する。空間内のビーム110の移動は、MEMSミラー112の移動周波数f1及びf2に依存することに留意されたい。
ある実施形態では、ビーム110が光検出器105a上でわずかにヒットすることにより、プロジェクタ104のビーム源によって生成されたビームを変調する時間が短縮する。時間短縮によって、Mビットシーケンスが光検出器105aによって生成された検出ビームヒット信号のパルス内に組み込まれる機会を減らすことになる。本実施形態では、Mビットシーケンスは、プロジェクタ104のビーム源によって生成されたビームの半径を横切るがプロジェクタ104のビーム源によって生成されたビームの直径を横切らないように、プロジェクタ104の変調器によって配列される。プロジェクタ104のビーム源によって生成されたビームがプロジェクタ104の変調器によって変調されるビットレートは、最大定義距離及び最大可能距離でのビーム半径に基づいて、変調器によって判定される。検出器105aによって生成された検出ビームヒット信号の各パルスがMビットシーケンスを有するように、ビットレートが判定される。
一実施形態では、光検出器105aは、半径rの円盤形状としてモデル化され、時々、本明細書にグレージングビームヒットとして参照されるように、ビーム110が円盤形状の中心側をわずかに横断すると、検出ビームヒット信号が光検出器105aによって生成される。円盤形状の半径の例として、ビーム110に曝される光検出器105aのレンズの半径が挙げられる。さらに、ビーム110の横断距離は、円盤形状の半径に等しい。これは、妥当な対象範囲または妥当な数のグレージングビームヒットを可能にする。円盤がパターンの中心にあるとき、ビーム110は、MEMSミラー112の正弦波の動きの特質により、その最大スピードで素早く掃引する。最大速度において、円盤形状の半径にわたって、プロジェクタ104の変調器は、プロジェクタ104のビーム源によって生成されたビームをMビットシーケンスで変調することにより、光検出器105aがMビットシーケンスを有する検出ビームヒット信号を生成する。したがって、円盤形状の半径及び最大速度により、プロジェクタ104の変調器によって行われる変調器のビットレートが定義される。
一実施形態では、ビットシーケンスをプロジェクタのビームソースによって生成されたビーム上へ重ねるためにプロジェクタの変調器によって適用されるビットレートは、高データレートである。例えば、f1=21,060Hz及びf2=21,000Hz、ならびに、パターン(例えば、正方形パターン等)は、左右の変位に対して60度(例えば、正方形パターンの中心から+/−30度)の振幅があり、ならびに光検出器105aが1ミリメートルの直径を有し、ビーム110の半径がプロジェクタ140から3メートルの距離において5ミリメートルであり、ならびにM=10ビットシーケンスが使用されるとき、長さ61ビットの2つのバラバラなシーケンスは、復調後にプロセッサ302によって識別される。2つのシーケンスは、L=61ビットの長さであり、M=10ビットシーケンスである。繰り返しシーケンスと任意のM=10ビットシーケンスとの両方のLビットシーケンスは、各ビットシーケンス内及び両方のLビットシーケンスにわたって、一意である。加えて、各Mビットシーケンスは、2つのもの(例えば、no000またはno111等)よりも長い同じビットの連続シーケンスを有しないように、変調器によって拘束され、少なくとも1つのビットフリップパターン(例えば、101または010等)を含むように、変調器によって拘束される。2つのLビットシーケンスの第1のシーケンスの例は、0010010010100100110010010110010011010010101010011010101101101であり、2つのLビットシーケンスの第2のシーケンスの例は、0010101101001101101010010110101010101100110101101011001011011である。ビームを変調するプロジェクタの変調器によって適用されるビットレートの例は、370メガビット/秒(Mbps)である。ビームを変調するプロジェクタの変調器によって適用されるビットレートの別の例は、500Mbpsである。
ある実施形態では、復調器が少なくとも10ビットの長さLの61ビットシーケンスをデコードし及びHMD120によって生成されたクロック信号とプロジェクタ104によって生成されたクロック信号との同期があるとき、LビットシーケンスのMビットシーケンスは、61ビットシーケンス内の正確な場所を識別し、さらにビームヒットの正確な時間を提供するために使用される。
ある実施形態では、MビットシーケンスがKプロジェクタのLビットシーケンスにわたって一意であるため、Mビットシーケンスがエンコードされるビームを生成するプロジェクタが識別される。例えば、HMD102の復調器(デコーダ等)は、検出ビームヒット信号をデコードし、少なくともMビットのLビットシーケンスを抽出する。Lビットシーケンスは、復調器からリンク109(図1A)を介して、コンピューティングデバイス107のプロセッサ302に提供される。プロセッサ302は、Lビットから、プロジェクタ104及び702の全てのLビットシーケンスに一意であるMビットシーケンスを識別する。プロセッサ302は、Mビットシーケンスをメモリデバイス304内に事前に記憶されたシーケンスと比較し、2つのシーケンス間で一致があるかどうか判定し、そのように判定が行われると、Mビットシーケンスが、プロジェクタ104がビーム110を発射するときに生成された検出ビームヒット信号のパルス上で重ねられたことを判定する。プロジェクタとMビットシーケンスとの間の対応関係(例えば、1対1の関係等)は、メモリデバイス304内に記憶される。
ある実施形態では、より長いMビットシーケンスは、より長いLビットシーケンス及び時間同期の許容範囲の改善を可能にし、より長いMビットシーケンスは、より大きい値のM、したがって、より高いビットレートを意味する。
一実施形態では、プロジェクタ104の変調器は、プロジェクタ104のビーム源によって生成されたビームを、MビットシーケンスのMシーケンスウィンドウで変調する。Mシーケンスウィンドウ内では、任意のMビットシーケンスは一意である。光検出器105aが1つ以上のMビットシーケンスを含むパルスを有する検出ビームヒット信号を生成するとき、プロセッサ302は、Mシーケンス内のMビットシーケンスの1つの場所を判定する。HMD102のクロックソースは、MビットシーケンスがMシーケンスウィンドウ内で始まる時間tsを測定する。Mビットシーケンスの1つは、Mシーケンスウィンドウ内の全てのMビットシーケンスのうち、検出ビームヒット信号のパルス810のピークの中心に最も近い。HMD102のクロックソースは、さらに、時間tsとMビットシーケンスの1つの中心がパルス内で発生する時間との間の時間差である、オフセット時間toffを測定する。値ts、toff、及びMビットシーケンスの1つは、HMD102のプロセッサからプロジェクタ104のプロセッサに、リンク117(例えば、Bluetoothリンク、RFリンク等)を介して、送信される。プロジェクタ104のプロセッサは、時間tsに基づいて、プロジェクタ104が伝送されるMシーケンスウィンドウ内のビット位置を発見する。プロジェクタ104のプロセッサは、Mシーケンスウィンドウ内の前後をビット位置から検索することで、Mビットシーケンスの1つの場所を発見し、プロジェクタ104のメモリデバイスから、ビーム110内に組み込まれるようにMビットシーケンスの1つがプロジェクタ104から送信される時間taを判定する。時間taは、プロジェクタ104のクロックソースによって測定され、プロジェクタ104のプロセッサによって、プロセッサ104のメモリデバイス内に記憶される。プロジェクタ104のプロセッサは、その後、時間tsを時間taに補正し、時間taをプロセッサ302に送信する。プロセッサ302は、工程456及び458(図4B及び図4C)に説明された様式で、時間taに基づいて、プロジェクタ104のxyz座標系に対する光検出器105aの方位を判定する。例えば、時間taは、プロジェクタ104のxyz座標系の原点を基準にして、光検出器105aの方位を判定するためのヒット時間として使用される。
ある実施形態では、プロジェクタ104のプロセッサは、ts及びtaの時間差ts−taを計算する。時間差ts−taは、HMD102のクロック信号とプロジェクタ104のクロック信号との間のクロック誤差であり、プロジェクタ104のプロセッサは、HMD102のプロセッサに対する時間差を示す信号を送信する。HMD102のプロセッサは、制御信号をプロジェクタ104のクロックソースに送信し、時間差を除去することにより、プロジェクタ104のクロック信号をHMD102のクロック信号を同期させる。
ある実施形態では、プロジェクタ104のプロセッサは、時間差ta‐toffである論理オフセットを算出し、ビーム110が光検出器105aの円盤形状の中心にヒットする時間であるtrを取得する。時間trは、プロジェクタ104のプロセッサからプロセッサ302にリンク111を介して送信する。時間trを受信すると、プロセッサ302は、工程456及び458(図4B及び図4C)を適用させ、プロジェクタ104のxyz座標系に対する光検出器105aの方位を判定する。例えば、時間trは、プロジェクタ104のxyz座標系の原点を基準にして、光検出器105aの方位を判定するためのヒット時間として使用される。
図8Cは、プロジェクタに関するLビットシーケンスがリサージュパターン500に従って何度も繰り返すことを例示する図である。各シーケンスS1、S2、S3、S4、S5、S6、及びS7は、Lビットシーケンスである。
ある実施形態では、各シーケンスS1、S2、S3、S4、S5、S6、及びS7は、リサージュパターン500の対角部(例えば、左対角部830)から反対側に位置する対角部(例えば、右対角部832等)までの掃引中に、任意のいずれかの回数(例えば、150回、100回、200回等)を繰り返す。一実施形態では、リサージュパターン500は、図8Cに示されるものと比較して、Lビットシーケンスの任意の他の数(例えば、8、9、10等)を有する。
図8Dは、Lビットシーケンスを検出するコンピューティングデバイス107のプロセッサ302によって適用される相関フィルタ864の実施形態の図である。ビットシーケンスが重ねられる検出ビームヒット信号が光検出器105aによって生成されたとき、相関フィルタ864は、プロセッサ302によって適用され、HMD102の復調器は、検出ビームヒット信号を復調しビットシーケンスをプロセッサ302に提供する。相関フィルタ864は、メモリデバイス302内に記憶される。一実施形態では、相関フィルタは、事前に記憶されたLビットシーケンスである。プロセッサ302が相関フィルタ864とHMD102の復調器から受信されたビットシーケンス内の連続ビットシーケンスとの間で一致が発生していることを判定するとき、プロセッサ302は、Lビットシーケンスが発見されたことを判定する。図8Dに例示されるように、プロセッサ302は、LビットシーケンスのMビットよりも少ない部分が復調器から受信されたビットシーケンス862内でA、B、C、D、及びEのようにラベルで示される5箇所で発見されたことを判定する。
一実施形態では、相関フィルタ864とビットシーケンス862との間での一致数が1または別の既定数を超えたことを判定すると、不十分なビットがLビットシーケンスを一意に識別するためにデコードされたため、プロセッサ302は、その一致を無視する。
図8Eは、相関フィルタ864への閾値の適用を例示する、実施形態の図である。プロセッサ302は、リンク109を介してHMD102の復調器から受信されたビットシーケンス872内の連続ビットシーケンスと相関フィルタ864との間の一意の一致を判定し、Lビットシーケンスが検出ビームヒット信号内で受信されたことを判定する。復調シーケンス内のビット数がMよりも多い数に増加するにつれて、Lビットシーケンスがビームヒット信号内で検出される可能性が高くなる。図8Eに示されるように、シーケンス864内でAのラベルで示される場所で一致が発生する。
ビットシーケンスが重ねられる検出ビームヒット信号が光検出器105aによって生成されたとき、相関フィルタ864は、プロセッサ302によって適用され、HMD102の復調器は、検出ビームヒット信号を復調しビットシーケンスをプロセッサ302に提供する。相関フィルタ864は、メモリデバイス302内に記憶される。一実施形態では、相関フィルタは、事前に記憶されたLビットシーケンスである。プロセッサ302が、相関フィルタ864とHMD102の復調器から受信されたビットシーケンス内の連続ビットシーケンスとの間で一致が発生していることを判定するとき、プロセッサ302は、Lビットシーケンスが発見されたことを判定する。
一実施形態では、検出ビームヒット信号のパルスの時間tA(例えば、最大振幅時間、ピーク強度時間等)は、Lビットシーケンス内のビットシーケンスウィンドウの識別の時間tBに基づいて、プロセッサ302によって修正される。Lビットシーケンスは、相関フィルタ864を使用することによって識別される。例えば、プロセッサ302は、時間tAを、パルスのピーク強度が発生する時間として判定し、相関フィルタ864を適用させることによって、時間tBを、プロセッサ302がビットシーケンス内のビットシーケンスウィンドウ位置を識別する時間として判定する。Lビットシーケンスは、HMD102のプロセッサからプロセッサ302によってリンク109(図1A)を介して受信される。時間tAは、HMD102のクロックソースによって測定され、時間tBは、コンピューティングデバイス107のクロックソースによって測定される。時間tAを使用する代わりに、プロセッサ302は、時間tBをヒット時間に対する補正として、工程456及び458(図4B及び図4C)に適用し、プロジェクタ104のxyz座標系の原点に対するビーム110の対応する方位を判定する。
図8Fは、相関フィルタとLビットシーケンスとの一致がリサージュパターン500に従って何度も発生することを例示する、リサージュパターン500の一部の実施形態の図である。例えば、相関フィルタとLビットシーケンスとの一致は、リサージュパターン500にわたって、図8Fの点で示されるように、何度も発生する。
図8Gは、Lビットシーケンスがリサージュパターン500の直径d1内の光検出器105aの場所を判定するために使用されるMシーケンス技術を例示する、リサージュパターン500の部分506aの実施形態の図である。プロジェクタ104のxyz座標系に対する光検出器105aの方位を判定するために使用される検出ビームヒット信号の強度(例えば、最大振幅、ピーク強度、最大振幅等)が検出されると、光検出器105の場所は、リサージュパターン500の直径d1に沿ったいずれかの位置にある。例えば、HMD102のクロックソースは、検出ビームヒット信号のパルスの中心における時間を測定し、その時間をプロセッサ302に提供し、その時間における光検出器105aの場所を判定する。直径d1に沿ったいずれかの位置にある光検出器105aの場所は、リサージュパターン500の軌道(例えば、リサージュ軸等)からビーム110の半径をある量(例えば、+/−数ミリメートル等)だけ延在する不確実な区間を提供する。Mシーケンス技術では、プロジェクタ104の変調器が、プロジェクタのビーム源によって生成されたビームを変調することにより、検出ビームヒット信号が、リサージュパターン500の直径に沿って複数のLビットシーケンスで変調され、LビットシーケンスのP個が変調される。この値Pは、ビーム110の中心に沿った最大のものであり、ビーム110の端部に向かって小さくなるであろう。不確実な区間は、リサージュパターン500の軌跡の片側の2つのミラー領域(例えば、領域1及び領域2等)に限定されるようになる。Mシーケンス技術では、プロセッサ302は、直径d1に沿った光検出器105aの場所を領域1または領域2になるように狭くする。ある実施形態では、空間内のビーム110の分岐及びビーム110の範囲に関する情報の一部が使用される。
一実施形態では、単一のビームヒット(例えば、ビームヒット信号のパルスが生成されたときなどのもの)で、複数の場所(例えば、領域1及び領域2等)は、Lビットシーケンスの繰り返しによりリサージュパターン500にわたって取得される。複数のビームヒットがあると、リサージュパターン500にわたる複数のセットが、プロセッサ302によって判定される。リサージュパターン500にわたる場所が、複数のビームヒットにわたって共通である1つ以上の場所を選択することによって、プロセッサ302によって狭くされる。例えば、プロセッサ302が、第1のビームヒットに関する領域1が第2のビームヒットに関するものと同じであることを判定するとき、プロセッサ302は、光検出器105aの場所が、領域2の代わりに、第1のビームヒットの期間、直径d1に沿った領域1にあることを判定する。複数領域が存在する可能性をなくすような十分なビームヒットが取得されるとき、プロジェクタ104のクロック信号とHMD102のクロック信号との同期を行う必要がない。ある実施形態では、リサージュパターン500の軌跡に沿ったLビットシーケンスによって占有された距離が、より小さい高密度領域(例えば、リサージュパターン500の中央領域502等)内でリサージュパターン500の交差部間の距離を超えると、多重可能領域の数が、プロセッサ302によって減らされる。
ある実施形態では、あるアプローチは、いくつかの比較的粗いレベルのものに対する時間同期(例えば、プロジェクタ104のクロック信号とHMD102のクロック信号との同期等)の組み合わせを使用するためのものであり、ひいては、Mシーケンス技術を使用して、タイミングを改良し、結果として、プロジェクタ104のxyz座標系に対する光検出器105aの方位を改良する。
一実施形態では、バラバラなシーケンスウィンドウ内と、全てのバラバラなシーケンスウィンドウ(例えば、K個のLビットシーケンスの全てのバラバラなシーケンスウィンドウ等)にわたることとの両方において、K個のLビットシーケンスのMビットサブシーケンスは一意である。プロジェクタ104及び702は、異なるLビットシーケンスウィンドウを使用する。例えば、プロジェクタ104の変調器がプロジェクタ104のビーム源によって生成されたビームを変調することにより、第1のLビットシーケンスの第1のシーケンスウィンドウがプロジェクタ104を識別するビットの一意の組み合わせを有し、また、プロジェクタ702の変調器がプロジェクタ702のビーム源によって生成されたビームを変調することにより、第2のLビットシーケンスの第2のシーケンスウィンドウがプロジェクタ702を識別するビットの一意の組み合わせを有する。HMD102の復調器が第2のLビットシーケンスをプロセッサ302に提供すると、プロセッサ302は、第2のシーケンスウィンドウから、プロジェクタ702を識別するために第2のLビットシーケンスがプロジェクタ702から送信されたことを判定する。一方、HMD102の復調器が第1のLビットシーケンスをプロセッサ302に提供すると、プロセッサ302は、第1のウィンドウから、第1のLビットシーケンスがプロジェクタ104を識別するためにプロジェクタ104から送信されたことを判定する。プロセッサ302によってプロジェクタの識別が使用され、光検出器105aの方位が一方のプロジェクタのxyz座標系の原点または別のプロジェクタのxyz座標系の原点に対するものであるかどうかを判定する。
ある実施形態では、リサージュパターン500のフレーム周波数、ビーム110の直径、ビーム110の発散、リサージュパターン500の光掃引幅、ビーム源によって生成されたビームの変調器のビットレート、LビットMシーケンス内のM及びLの値、光検出器105aの円盤形状のサイズに関する多くのパラメータ選択がある。他のパラメータは、リサージュパターン500の光検出器の場所を含む。これらのパラメータは、プロジェクタ104のxyz座標系に対する光検出器105aの測定された方位に影響を及ぼす。ある例が以下に提供される。仮に、リサージュ基本周波数(例えば、周波数f1は、34,000ヘルツ)、リサージュ第2の周波数(周波数f2は、34,060ヘルツ)、リサージュ繰り返し周期(例えば、フレーム周波数が1/60秒)、光掃引幅が60度(中心から+/−30度)、光検出器105aの円盤形状の半径が1ミリメートル、プロジェクタ104から3メートルにおいて、ビーム110の直径が4ミリメートル、Mが10であり長さLの2つのウィンドウを伴い、Lが61ビットであるとする。また、光検出器105aの円盤形状は、プロジェクタ104の円錐の中心から3メートルの距離におけるプロジェクタ104に対して平坦である。ビーム110が光検出器の半径に等しい長さの光検出器105aの端部を横切って距離distを横断する大体の時間が、以下のようにプロセッサ302によって計算される。掃引速度は、60度を掃引するのに約0.0000147である。掃引速度は、4,080,000度/秒に達する。プロジェクタ104からd=3メートルの範囲では、光検出器105aの距離distにわたる角距離は、2*arctan(0.5*dist/d)=0.0191度である。その結果として、光検出器105aの円盤形状を横切って距離distを横断することにかかる時間は、4.68x10−9秒(約5ナノ秒)である。約5ナノ秒で10ビットのデータを取得するために、プロジェクタ104の変調器は、2.14ギガビット/秒(Gbps)のビットレートで変調する。したがって、プロジェクタ104のビーム源によって生成されたビームを61ビットシーケンスで変調するプロジェクタ104の変調器に関してプロセッサ302によって計算された時間は、28ナノ秒である。その結果として、プロジェクタ104によって生成されたクロック信号とHMD102によって生成されたクロック信号との同期は、最大14ナノ秒の誤差がある可能性があり、さらに、絶大なる自信を持って、xyz座標系の原点に対する光検出器105aの方位を取得することを可能にするLビットウィンドウ内に含まれるように一義的に判定される。例えば、ビーム110の掃引に沿う精度は、1ビットよりも優れている(1ビットは、約1/10ミリメートルである)。
ある実施形態では、長さL(例えば、61ビット等)のシーケンス内に対して正確であるグローバル同期イベント(例えば、無線周波数(RF)パルスまたはグローバル光パルス等)がある。例えば、プロジェクタ104のプロセッサは、RFパルスをプロジェクタ702及びHMD102に送信し、HMD102及びプロジェクタ702(図7A)のクロックソースを、プロジェクタ104のクロックソースと同期させる。例示するために、プロジェクタ104のクロック信号がある状態から別の状態まで(例えば、高い状態から低い状態に、低い状態から高い状態等)パルスを発する時間において、プロジェクタ104のプロセッサは、RFパルスを、リンク117(図1A)を介してHMD102に送信し、プロジェクタ104とプロジェクタ702との間のリンクを介してプロジェクタ702に送信する。RFパルスを受信すると、HMD102のプロセッサは、信号をHMD102のクロックソースに送信し、HMD102のクロックソースのクロック信号を、プロジェクタ104のクロック信号と同期させる。さらに、プロジェクタ702のプロセッサは、信号をプロジェクタ702のクロックソースに送信し、プロジェクタ702のクロックソースのクロック信号を、プロジェクタ104のクロック信号と同期させる。別の例として、プロジェクタ104のビーム発生器(例えば、ビーム108等以外のもの)は、ビームのストロボを発生し、ビームのストロボは、光検出器105aによって検出される。ビームのストロボが検出された時間において、HMD102のクロック信号は、プロジェクタ104のクロック信号と同期される。グローバル同期イベントは、各フレーム期間に1回または各フレーム期間に複数回、発生する。
ある実施形態では、ビーム110及び704は、異なる光周波数を有し、光検出器105a及び105bのそれぞれは、異なるフィルタを有し、異なる周波数を検出する。例えば、プロジェクタ104は、第1の周波数を有するビーム110を生成し、プロジェクタ702は、第1の周波数と異なる第2の周波数を有するビーム704を生成する。光検出器105aは、第1のフィルタに連結され、光検出器105bは、第2のフィルタに接続される。第1のフィルタは、第1の周波数(ただし、第2の周波数ではない)でフィルタ処理を行い、第2のフィルタは、第2の周波数(ただし、第1の周波数ではない)でフィルタ処理を行う。光検出器105aは、第1の周波数を第1のフィルタから受信し第1の検出ビームヒット信号を生成し、光検出器105bは、第2の周波数を第2のフィルタから受信し第2の検出ビームヒット信号を生成する。第1の検出ビームヒット信号が第1の周波数を有することを判定すると、プロセッサ302は、第1の検出ビームヒット信号がプロジェクタ104から受信されたビーム110から生成されたことを判定する。同様に、第2の検出ビームヒット信号が第2の周波数を有することを判定すると、プロセッサ302は、第2の検出ビームヒット信号がプロジェクタ702から受信されたビーム704から生成されたことを判定する。第1の周波数とプロジェクタ104の識別との間の対応関係(例えば、1対1の関係、関連付け、マッピング等)は、メモリデバイス304内に記憶され、第2の周波数とプロジェクタ702の識別との間の別の対応関係は、メモリデバイス304内に記憶される。
図9は、デバイス902と別のデバイス904との間の同期方法を例示する、システム900の実施形態の図である。デバイス902の例は、プロジェクタ104であり、デバイス904は、HMD102である。デバイス902の別の例は、プロジェクタ702であり、デバイス904は、HMD102である。
ある実施形態では、デバイス902及び904のクロック信号は、ナノ秒レベル精度まで同期される。例えば、コンピュータネットワークのネットワークタイムプロトコル(NTP)に関連するプロトコルが使用される。デバイス902は、ローカル時間A1で、パケットXを送信し、ローカル時間A2で、応答パケットYをデバイス904から受信する。ローカル時間A1及びA2は、デバイス902のクロックソースによって測定される。パケットXは、時間A1を含む。デバイス904がパケットXを受信すると、デバイス904のクロックソースは、パケットXが受信された時間B1のタイムスタンプを記録する。その後、デバイス904は、時間B2でパケットYを伝送し、パケットYに時間B1及び時間B2を含む。時間B2は、デバイス904のクロックソースによって測定される。デバイス902は、時間A2でパケットYを受信する。いったんデバイス902がパケットYを取得すると、デバイス902のプロセッサは、デバイス904によって費やされる合計時間と処理時間との差として、往復ネットワーク時間を計算する。合計時間は、(A2−A1)であり、処理時間は、(B2−B1)である。往復ネットワーク時間は対称的に考えられ、したがって、片方のネットワーク時間は、T1=0.5[(A2−A1)−(B2−B1)]である。したがって、時間A2における実時間は、B2+T1である。したがって、オフセット時間Toff=B2+T1−A2が、デバイス902のクロック信号をデバイス904のクロック信号と同期させるために、デバイス902のプロセッサによって、デバイス902のクロックソースのクロック信号に加えられる。パケットがデバイスのプロセッサによって生成されたことに留意されたい。例えば、パケットXは、デバイス902のプロセッサによって生成され、パケットYは、デバイス904のプロセッサによって生成される。ある実施形態では、パケットXの代わりに、リクエスト信号が使用され、パケットYの代わりに、リクエスト信号が使用される。
ある実施形態では、いくつかの統計もまた、プロジェクタ104及びHMD102のクロック信号を同期するために使用される。
一実施形態では、時間B2及びB1の測定において、いくつかの誤差があり、ひいては、B2−B1の計算で求められる。本実施形態では、時間A1及びA2の測定において、いくつかの誤差が発生するであろう。本実施形態では、デバイス902のクロック信号の調整の決定がデバイス902のプロセッサによって行われる前に、数回の伝送時間を測定し及び数回の受信時間を測定するために、パケットX及びYが数回送信され、または、伝送時間及び受信時間は、均等化及びフィルタ処理される。例えば、デバイス902は、ローカル時間A3で、パケットXを送信し、ローカル時間A4で、応答パケットYをデバイス904から受信する。ローカル時間A3及びA4は、デバイス902のクロックソースによって測定される。パケットXは、時間A3を含む。デバイス904がパケットXを受信すると、デバイス904のクロックソースは、パケットXが受信された時間B3のタイムスタンプを記録する。その後、デバイス904は、時間B4でパケットYを伝送し、パケットYに時間B3及び時間B4を含む。時間B4は、デバイス904のクロックソースによって測定される。デバイス902は、時間A4でパケットYを受信する。いったんデバイス902がパケットYを取得すると、デバイス902のプロセッサは、デバイス904によって費やされる合計時間と処理時間との差として、往復ネットワーク時間を計算する。合計時間は、(A4−A3)であり、処理時間は、(B4−B3)である。往復ネットワーク時間は対称的に考えられ、したがって、片方のネットワーク時間は、T2=0.5[(A4−A3)−(B4−B3)]である。したがって、時間A4における実時間は、B4+T2である。オフセット時間Toff1=B4+T2−A4の代わりに、オフセット時間Toff及びToff1の平均値が、デバイス902のクロック信号をデバイス904のクロック信号と同期させるために、デバイス902のプロセッサによって、デバイス902のクロックソースのクロック信号に加えられる。
Lビットシーケンス及びMシーケンスウィンドウが使用される実施形態では、Lビットシーケンスは、HMD102のプロセッサまたはプロセッサ302によって識別される。f1=21,060Hz、f2=21,000Hz、及びリサージュパターン500が30度の振幅を有し、長さLのシーケンスがプロジェクタ104のビーム源によって生成されたビームを変調するために使用され、61ビット、M=10であり、ビームを変調するデータレートが500メガビット/秒(Mbps)であるとき、ビームを変調するプロジェクタ104の変調器によって費やされる時間は、122ナノ秒である。ビームヒットから復調されたM以上のビットシーケンスは、L=61ビットの長さのシーケンス内で一意である。プロジェクタ104のプロセッサは、プロジェクタ104のクロック信号を使用し、隣接するLビットシーケンスに最も近いMビットシーケンスを前後にわたり検索する。HMD102のクロック信号とプロジェクタ104のクロック信号との同期における誤差が122ナノ秒未満である限り、最も近いLビットシーケンスが発見される。いくつかの許容値を用いることで、これは、同期に関する制限を100ナノ秒まで減らせる。このレベルにおいて、一実施形態では、HMD102及びプロジェクタ104のクロック信号は、ある周波数帯のRF通信の範囲外のNTPスタイルを使用して、フレームごとに1回補正される。
図10は、光検出器105aによって生成された検出ビームヒット信号から、ビーム発生器108のビーム源によって生成されたビームを変調するために使用される変調信号の周波数を抽出することによって、プロジェクタ104のクロックソースのクロック信号とHMD102のクロックソースのクロック信号を同期させるための方法1000の実施形態のフローチャートである。変調信号は、プロジェクタのクロック信号と同期される。例えば、変調信号のビット0は、プロジェクタ104のクロックソースのクロック信号の第1の立ち上がりエッジにおいて、プロジェクタ104の変調器によって生成され、ビット1が、クロック信号の第2の立ち上がりエッジにおいて、プロジェクタ104の変調器によって生成される。第1の立ち上がりエッジは、第2の立ち上がりエッジに先行し、ビット0は、変調信号のビットシーケンス内でビット1に先行する。別の例として、変調信号のビット0は、プロジェクタ104のクロックソースのクロック信号の第1の立ち下がりエッジにおいて、プロジェクタ104の変調器によって生成され、ビット1が、クロック信号の第2の立ち下がりエッジにおいて、プロジェクタ104の変調器によって生成される。第1の立ち下がりエッジは、第2の立ち下がりエッジに先行し、ビット0は、変調信号のビットシーケンス内でビット1に先行する。
HMD102の復調器は、光検出器105aに連結され、ビーム110を感知することによって、光検出器105aによって生成された検出ビームヒット信号を受信する。HMD102の復調器は、検出ビームヒット信号を復調し、変調信号を生成する。変調信号は、HMD102の復調器からコンピューティングデバイス107のプロセッサ302に、リンク109(図1A)を介して提供される。プロセッサ302は、工程1002において、変調信号の周波数を判定し、プロジェクタ104内に生成されたクロック信号の位相(例えば、タイミング等)を判定する。プロセッサ302によって判定されるクロック信号の位相は、プロセッサ302に連結されるPLLに提供される。PLLは、コンピューティングデバイス107内に位置する。PLLは、工程1004において、プロジェクタ104のクロックソースによって生成されたクロック信号の位相を、HMD102内に生成されたクロック信号の位相と比較する。HMD102内で生成されたクロック信号の位相は、HMD102のプロセッサから、プロセッサ302によってリンク109を介して受信される。
PPLは、工程1006において、HMD102内に生成されたクロック信号の位相をプロジェクタ104のクロック信号の位相と同期させる。例えば、HMD102のクロック信号の位相は、プロジェクタ104のクロック信号の位相より遅れまたは進むとき、PLLは、位相差を示す位相差信号をコンピューティングデバイス107のプロセッサ302に送信し、プロセッサ302は、位相差信号をHMD102のクロックソースにリンク109を介して送信し、HMD102のクロック信号の位相をプロジェクタ104のクロック信号の位相と一致させる。例示するために、位相差信号は、プロセッサ302から、HMD102のプロセッサにリンク109を介して送信され、また、位相差信号の受信に応答して、HMD102のプロセッサは、信号をHMD102のクロックソースに送信し、HMD102のクロックソースによって生成されたクロック信号の位相を、プロジェクタ104のクロックソースによって生成されたクロック信号の位相と同期させる。別の例として、HMD102のクロック信号の位相は、プロジェクタ104のクロック信号の位相より遅れまたは進むとき、PLLは、位相差信号をコンピューティングデバイス107のプロセッサ302に送信し、プロセッサ302は、位相差信号をプロジェクタ104のクロックソースにリンク111(図1A)を介して送信し、プロジェクタ104のクロック信号の位相をHMD102のクロック信号の位相と一致させる。例示するために、位相差信号は、プロセッサ302から、プロジェクタ104のプロセッサにリンク111を介して送信され、また、位相差信号の受信に応答して、プロジェクタ104のプロセッサは、信号をプロジェクタ104のクロックソースに送信し、HMD102のクロックソースによって生成されたクロック信号の位相を、プロジェクタ104のクロックソースによって生成されたクロック信号の位相と同期させる。
同期は、プロジェクタ104のxyz座標系の原点に対する、ビーム110の方位(例えば、ビーム角θx、θy、及びθz等)及び光検出器105aの位置の精度を改善するために行われる。ビーム110の方位と光検出器105aの位置との両方は、図4Bを参照して上記に説明されたように、検出ビームヒット信号が光検出器105aに生成されたタイミングに依存する。
一実施形態では、ビーム110が光検出器105aに連結されたヒット時間は、ビーム110を検知するときに検出ビームヒット信号が光検出器105aによって生成された時間と同じである。
ある実施形態では、ビームヒット信号を生成する光検出器105aの立ち上がり時間周期は、ヒット時間を判定する際にプロセッサ302によって構成される。例えば、光検出器105aがビームヒット信号を検出することを始動する始動時間は、ヒット時間として、プロセッサ302によって受信され、プロセッサ302は、立ち上がり時間周期を、始動時間(ヒット時間を修正し及びその修正されたヒット時間を修正する光検出器105aがヒット時間の代わりにプロジェクタ104のxyz座標系の原点に対する光検出器105aの方位を判定するために使用されるもの)から差し引く。
ある実施形態では、プロジェクタ104のxyz座標系の原点に対する光検出器105aの方位の精度は、HMD102及びプロジェクタ104のクロック信号の同期に依存する。例えば、プロジェクタ104から3メートルの距離において1ミリメートルの精度を取得するために、ビーム110は、プロジェクタ104のxyz座標系の原点を横切ってまたはプロジェクタ104のxyz座標系のz軸を中心に、速く移動する。3メートルの距離において、1ミリメートルは、0.00033ラジアン変位を表す。プロジェクタ104の錐台は60度、f1=21,060ヘルツ、及びf2=21,000ヘルツであるとき、MEMSミラー112のX軸に沿ったMEMSミラー112の移動は、x=Asin(2πtf1)として表され、MEMSミラー112のX軸に沿ったMEMSミラー112の移動速度は、dx/dtである。
dx/dt=A2πf1cos(2πtf1)...方程式(4)
式中、Aは、リサージュパターン500(図5)を形成するMEMSミラー112のX軸に沿って、MEMSミラー112の移動振幅であり、tは時間である。コサインが1.0及び最大速度が69,285ラジアン/秒であるとき、速度はt=0で最大であるであろう。したがって、0.00033ラジアンを横断するために、MEMSミラー112に関して4.8ナノ秒かかる。プロジェクタ104及びHMD102のクロック信号が4.8ナノ秒間、同期されないとき、xyz座標系の原点に対する光検出器105aに関連する1ミリメートルの精度と同等のものが低下する。
一実施形態では、プロジェクタ104のクロックソースは、温度補償水晶発振器(TCXO)であり、HMD102のクロックソースは、TCXOである。TCXOのそれぞれにおいて、ppm(百万分の1)ドリフト当たり1〜3の部分が到達される。したがって、TCXOが同時に起動する場合、それらは、起動の1秒後に2マイクロ秒間ドリフトする。ある実施形態では、ドリフトは、フレーム毎(例えば、16.667ミリ秒等)に補正される。したがって、16.667ミリ秒の終わりにおけるドリフトは、33ナノ秒である。本実施形態では、HMD102及びプロジェクタ104のクロック信号は、フレーム毎に33回補正される。
図11は、プロジェクタ104のxyz座標系の原点に対する光検出器105aの方位を判定するために、検出ビーム信号の強度(例えば、振幅等)の平均化を例示する図である。リサージュパターン500の端部(例えば、端部1102等)において、ビーム110が光検出器105aを横断することにより、ビーム110が第1の方向から第2の方向に方向転換するとき、ビーム110によって覆われる光検出器105aのエリアに間隙がなくなる。第2の方向は、第1の方向の反対方向である。例えば、第1の方向がy軸の+y方向であるとき、第2の方向はy軸の−y方向である。別の例として、第1の方向がx軸の+x方向であるとき、第2の方向はx軸の−x方向である。別の例として、リサージュパターン500の端部1102の方向転換の結果として、ビーム110は方向転換する。
HMD102の光検出器105aは、ビーム110が第1の方向で横断すると、第1の強度を検出し、ビーム110が第2の方向で横断すると、第2の強度を検出し、HMD102のプロセッサに提供される検出ビームヒット信号を生成する。さらに、HMD102のプロセッサは、HMD102のクロックソースから、第1及び第2の強度が検出された時間(例えば、第1の強度が検出された第1の時間及び第2の強度が検出された第2の時間)を受信する。時間は、HMD102のプロセッサによって、コンピューティングデバイス107のプロセッサ302に、リンク109(図1A)を介して送信される。プロセッサ302は、第1及び第2のビーム強度の検出時間を平均化し、平均時間を計算する。
プロセッサ302は、工程456(図4B)に説明されたものと同様の様式で、平均時間、リサージュパターン500の開始時間、及びMEMSミラー112の周波数f1及びf2に基づいて、リサージュパターン500内のビーム110の場所を判定する。例えば、プロセッサ302は、パターンの開始時間、周波数f1、周波数f2、及び平均時間から、リサージュパターン500上のビーム110の場所を判定する。例示するために、コンピューティングデバイス107のプロセッサ302は、開始時間がリサージュパターン500内の初期場所に対応することを判定する。さらに、プロセッサ302は、初期場所が、MEMSミラー112の周波数f1及びf2によって変化し、リサージュパターン500上のビーム110の場所に達することを判定する。ビーム110の場所は、平均時間に対応する。一実施形態では、周波数f1及びf2と、平均時間と、開始時間と、リサージュパターン500上のビーム110の場所との間の対応関係(例えば、1対1の関係等)は、コンピューティングデバイス107のメモリデバイス304内に記憶される。その対応関係はプロセッサ302によってアクセスされ、リサージュパターン500上のビーム110の場所を、開始時間、周波数f1及びf2、及び平均時間から判定する。リサージュパターン500上のビーム110の場所は、プロジェクタ104のxyz座標系の原点に対する、ビーム110の方位(例えば、ビーム角θx、θy、及びθz等)を提供する。2回の平均値を使用することによって、プロジェクタ104のxyz座標系の原点に対するビーム110の方位は、単一のビーム強度がリサージュパターン500の端部1102において使用される場合よりも正確である。
図12は、HMD102内で生成されたクロック信号をプロジェクタ104内で生成されたクロック信号と同期させるための方法1200の実施形態のフローチャートである。MEMSミラー112上のパターンに続くビーム110は、検出ビームヒット信号を生成するパターンのフレーム期間(例えば、実行の1周期等)に複数回、光検出器105aによって感知される。光検出器105aは、検出ビームヒット信号の強度をコンピューティングデバイス107のプロセッサ302に、HMD102のプロセッサ及びリンク109(図1A)を介して、送信する。また、HMD102のプロセッサは、工程1202において、HMD102のクロックソースから強度が検出された時間を受信し、その時間をプロセッサ302にリンク109を介して送信する。プロセッサ302は、工程1204において、その時間をバックトラックし(例えば、入れ替える等)、パターンの開始時間(例えば、パターンが開始する時間、フレームが開始する時間等)を判定する。例えば、プロセッサ302は、強度が検出された時間と周波数f1及びf2とから、パターンの開始時間を判定する。例示するために、プロセッサ302は、強度が検出された時間と、周波数f1及びf2におけるMEMSミラー112の移動に関連する時間とから、パターンの開始時間を判定する。別の例示として、強度の1つが検出された時間tと、周波数f1及びf2におけるMEMSミラー112の移動に関連する時間と、パターンの開始時間との間の対応関係(例えば、1対1の関係、関連時間等)は、コンピューティングデバイス107のメモリデバイス304内に記憶され、プロセッサ302は、対応関係にアクセスし開始時間を判定する。
一実施形態では、2つの時間の相対的時間差は、パターンの開始時間を判定するために、プロセッサ302によってバックトラックされる一意のシグネチャを提供する。ある例示として、2つの連続的強度が光検出器105aによって検出された時間と、周波数f1及びf2におけるMEMSミラー112の移動に関連する時間と、パターンの開始時間との間の時間差の間の対応関係(例えば、1対1の関係、関連時間等)は、コンピューティングデバイス107のメモリデバイス304内に記憶され、プロセッサ302は、対応関係にアクセスし開始時間を判定する。
プロセッサ302は、工程1206において、プロジェクタ104のクロック信号が工程1204で判定された開始時間に同期されたかどうかを判定する。例えば、プロセッサ302は、プロジェクタ104のクロック信号の位相をプロジェクタ104のプロセッサ及びリンク111(図1A)を介して受信し、開始時間がクロック信号の位相と同相であるかどうかを判定する。プロジェクタ104のクロック信号が工程1204で判定された開始時間に同期されないことを判定すると、プロセッサ302は、制御信号をプロジェクタ104のクロックソースに、プロジェクタ104のプロセッサ及びリンク111を介して送信し、クロック信号を開始時間に同期させる。ある例として、プロジェクタ104のプロセッサが制御信号をプロジェクタ104のクロックソースに送信することにより、クロックソースによって生成されたクロック信号は、開始時間と同相になる。例示するために、クロック信号の立ち上がりエッジまたは立下りエッジが開始時間と同時に発生するとき、プロジェクタ104のクロックソースによって生成されたクロック信号は、開始時間と同期される。
ある実施形態では、クロック信号と工程1204で判定された開始時間との同期は、プロジェクタ104のPLLによって行われる。例えば、プロジェクタ104のプロセッサは、開始時間を有する制御信号をプロジェクタ104のPLLに送信する。プロジェクタ104のPLLは、プロジェクタ104のプロセッサ及びプロジェクタ104のクロックソースに連結される。プロジェクタ104のPLLは、パターンの開始時間を、プロジェクタ104のクロックソースのクロック信号と比較し、開始時間をクロック信号と同期させ、PLL信号を生成する。PLL信号がプロジェクタ104のクロックソースに送信されることにより、開始時間とプロジェクタ104のクロックソースのクロック信号との間に位相遅れまたは位相進みがないようになる。
ある実施形態では、信号(例えば、検出ビームヒット信号等)がプロセッサに提供されると、信号は、プロセッサに送信される前に、アナログ形式からデジタル形式に変換されることに留意されたい。例えば、アナログデジタル変換器は、光検出器105aとプロセッサとの間に接続され、検出ビームヒット信号をアナログ形式からデジタル形式に変換する。
一実施形態では、フレームは、既定の繰り返し間隔(例えば、60ヘルツ(Hz)、50Hz、40Hz等)で繰り返される。
図13は、HMD102(図1A)の例である、HMD1300の等角図である。HMD1300は、ユーザ106によって装着されるとき、ユーザの後頭部まで届くバンド1302及びバンド1304を含む。さらに、HMD1300は、コンピュータプログラム(例えば、ゲームプログラム、仮想環境生成プログラム等)の実行によって生成された仮想環境(例えば、ゲーム環境、仮想ツアー環境等)に関連するサウンドを発するイヤホン1306A及び1306B(例えば、スピーカ等)を含む。HMD1300は、ユーザがHMD1300の表示画面上に表示される仮想環境を視認することを可能にする、レンズ1308A及び1308Bを含む。溝部1380は、ユーザ106の鼻上にあり、鼻上のHMD1300を支持する。
いくつかの実施形態では、HMD1300は、サングラス、眼鏡、または老眼鏡がユーザ106によって装着されるものに同様の様式で、ユーザ106によって装着される。
図14は、本開示に説明される実施形態に従った、ビデオゲームの対話型ゲームプレイに関するシステムを例示する。HMD102を装着するユーザ106が示される。HMD102は、眼鏡、ゴーグル、またはヘルメットと同様の様式で装着され、ビデオゲームまたは他のコンテンツをユーザ106に表示するように構成される。HMD102は、ユーザ106の目に近接した表示機構(例えば、光学素子及び表示画面)及びHMD102に提供されるコンテンツのフォーマットの提供によって、ユーザ106に没入型体験を提供する。一例では、HMD102は、表示領域をユーザ106の目のそれぞれに提供し、その表示領域は、ユーザ106の視野の大部分またはさらに全体を占める。
一実施形態において、HMD102は、コンピューティングデバイス107に接続される。コンピューティングデバイス107への接続は、有線または無線である。コンピューティングデバイス107は、一実施形態では、ゲーム機、パーソナルコンピュータ、ラップトップ、タブレット、携帯デバイス、スマートフォン、タブレット、シンクライアント、セットトップボックス、メディアストリーミングデバイス、多機能テレビ等を含むがそれに限定されない、任意の汎用または専用コンピュータである。いくつかの実施形態では、HMD102は、コンピュータネットワーク1410(例えば、インターネット、イントラネット、ローカルエリアネットワーク、ワイドエリアネットワーク等)に直接接続し、それによって、別個のローカルコンピュータを必要とすることなくクラウドゲームが可能になる。一実施形態では、コンピューティングデバイス107は、ビデオゲーム(及び他のデジタルコンテンツ)を実行し、HMD102によるレンダリングのために、映像及び音声をビデオゲームから出力する。また、コンピューティングデバイス107は、時々、本明細書においてクライアントシステムとも称され、一例ではビデオゲームコンソールである。
コンピューティングデバイス107は、いくつかの実施形態では、ローカルまたはリモートコンピュータであり、コンピュータはエミュレーションソフトウェアを起動させる。クラウドゲームの実施形態では、コンピューティングデバイス107は、リモートであり、データセンタ内で仮想化される複数のコンピューティングサービスによって表され、ゲームシステム/論理は仮想化され、コンピュータネットワーク1410を介してユーザ106に分配される。
ユーザ106は、ハンドヘルドコントローラ115を動作させ、入力を仮想環境に提供する。一例では、ハンドヘルドコントローラ115は、ユーザ106が位置する環境(例えば、実世界環境)の画像を取り込む。これらの取込画像を分析して、ユーザ106、HMD102、及びコントローラ115の位置及び移動を判定する。一実施形態では、コントローラ115は、その位置及び方位を判定するために追跡される光(または複数の光)を含む。加えて、下記にさらに詳細に説明されるように、HMD102は、仮想環境の表示中に実質的にリアルタイムで、HMD102の位置及び方位を判定するためにマーカとして追跡される1つ以上の光を含む。
ハンドヘルドコントローラ115は、一実施形態では、サウンドを実世界環境から取り込む1つ以上のマイクロホンを含む。マイクロホンアレイによって取り込まれたサウンドは、音源の場所を識別するために処理される。識別場所からのサウンドは、識別場所からではない他のサウンドを除外するために、選択的に利用するか、または処理される。さらに、一実施形態では、ハンドヘルドコントローラ115またはHMD102は、複数の画像取込装置(例えば、ステレオペアのカメラ)、赤外線(IR)カメラ、デプスカメラ、及びその組み合わせを含む。
いくつかの実施形態において、コンピューティングデバイス107は、コンピューティングデバイス107の処理ハードウェア上においてゲームをローカルで実行する。ゲームまたはコンテンツは、物理媒体形式等(例えば、デジタルディスク、テープ、カード、サムドライブ、ソリッドステートチップまたはカード等)の任意の形式で、またはコンピュータネットワーク1410からのダウンロードによって取得される。
ある実施形態では、コンピューティングデバイス107は、コンピュータネットワーク1410を通じて、クラウドゲームプロバイダ1412と通信するクライアントとして機能する。クラウドゲームプロバイダ1412は、ユーザ106がプレイしているビデオゲームを持続し実行する。コンピューティングデバイス107は、HMD102及びコントローラ1404からの入力をクラウドゲームプロバイダ1412に送信し、クラウドゲームプロバイダ1412は入力を処理して、実行されるビデオゲームのゲーム状態に影響を与える。映像データ、音声データ、及び触覚フィードバックデータ等の実行するビデオゲームからの出力は、コンピューティングデバイス107に伝送される。コンピューティングデバイス107はさらに、伝送前のデータを処理し、または、データを関連デバイスに直接送信する。例えば、映像及び音声ストリームがHMD102に提供される一方で、振動フィードバックコマンドが、ハンドヘルドコントローラ115に提供される。
一実施形態では、HMD102及びハンドヘルドコントローラ115は、コンピュータネットワーク1410に接続しクラウドゲームプロバイダ1412と通信するネットワークデバイスである。例えば、コンピューティングデバイス107は、他の方法ではビデオゲーム処理を実行しないが、ネットワークトラフィックの流れを促進する、ルータ等のローカルネットワークデバイスである。HMD102及びハンドヘルドコントローラ115によるコンピュータネットワーク1410への接続は、有線または無線である。
いくつかの実施形態では、HMD102上で実行されるか、または表示デバイス1414上で表示可能なコンテンツを、コンテンツソース1416のいずれかから取得される。例示的なコンテンツソースは、例えば、ダウンロード可能なコンテンツ及び/またはストリーミングコンテンツを提供するインターネットウェブサイトを含むことができる。いくつかの例では、コンテンツは、映画、ゲーム、静的/動的コンテンツ、ピクチャ、ソーシャルメディアコンテンツ、ソーシャルメディアウェブサイト等の任意の種類のマルチメディアコンテンツを含むことができる。
一実施形態では、ユーザ106は、HMD102上でゲームをプレイしており、そのようなコンテンツは、没入型3次元(3D)対話型コンテンツである。HMD102上のコンテンツは、ユーザ106がプレイしている間、表示デバイス1414に共有される。一実施形態では、表示デバイス1414に共有されるコンテンツにより、ユーザ106の近くのまたはユーザ106から離れた他のユーザが、ユーザ106のゲームプレイを一緒に見ることが可能になる。さらに別の実施形態では、表示デバイス1414上のユーザ106のゲームプレイを視認する別のプレイヤは、ユーザ106と対話形式で参加する。例えば、表示デバイス1414上でゲームプレイを視認する別のユーザは、ゲームシーン内のキャラクタを制御し、フィードバックを提供し、ソーシャル対話を提供し、及び/または、(テキストを介し、音声を介し、行動を介し、ジェスチャを介するなどして)コメントを提供することにより、HMD102を装着していない他のユーザが、ユーザ106とソーシャル上で対話することを可能にする。
一実施形態では、ハンドヘルドコントローラ115の代わりに、または、それに加えて、プロジェクタ104に対するHMD102の位置/方位は、本明細書に説明される方法を使用することによって判定される。
図15は、本開示に説明される実施形態に従った、ヘッドマウントディスプレイ(HMD)1500を例示する。HMD1500は、HMD102(図1A)の例である。示されるように、HMD1500は、複数の光検出器1502A−H、J、及びKを含む(例えば、1502K及び1502Jは、HMDヘッドバンドの後部または背面に向かって位置する)。これらの検出器のそれぞれは、特有の形状及び/または位置を有するように構成される。光検出器1502A、1502B、1502C、及び1502Dは、HMD1500の正面(例えば、前面等)に配列される。光検出器1502E及び1502Fは、HMD1500の側面に配列される。また、光検出器1502G及び1502Hは、HMD1500の正面及び側面に及ぶように、HMD1500の角部に配列される。
1つ以上の光検出器1502A−H、J、及びKによって検出された1つ以上のビーム110及び704に基づいて、環境内のHMD1500の場所が判定される。光検出器の一部は、光検出器104及び702のうちの1つに対するHMD1500の特定の方位に応じて、ビームを確認できないことをさらに理解されたい。いくつかの実施形態では、慣性センサは、HMD1500内に配置され、光検出器1502A−H、J、及びKの代わりに位置付けに関するフィードバックを提供する。いくつかの実施形態では、光検出器1502A−H、J、及びKならびに慣性センサは共に連動し、位置/動作データのミキシング及び選択を可能にする。
HMD1500は、一実施形態では、加えて、1つ以上のマイクロホンを含む。例示される実施形態では、HMD1500は、HMD1500の正面に位置するマイクロホン1504A及び1504Bと、HMD1500の側面に位置するマイクロホンとを含む。マイクロホンの配列を利用することによって、マイクロホンのそれぞれからのサウンドは、音源の場所を判定するために処理される。この情報は、不要な音源の除去、視覚識別との音源との関連付け等を含む、様々な方法で利用される。
ある実施形態では、HMD1500は、1つ以上の画像取込デバイスを含む。例示される実施形態では、HMD1500は、画像取込デバイス1506A及び1506Bを含むことが示される。ある実施形態では、画像取込デバイスの立体画像を利用することによって、実世界環境の3D画像及び映像は、HMD1500の視点から取り込まれる。そのような映像は、ユーザ106にHMD1500を装着している間の「映像シースルー」能力を提供するために、ユーザ106に提示される。すなわち、ユーザ106が厳密にHMD1500を透視できないにもかかわらず、それでも、画像取込デバイス1506A及び1506Bによって取り込まれた映像は、HMD1500全体を見るようなHMD1500の外部の実世界環境を確認することが可能であるものに同等の機能を提供する。
そのような映像は、一実施形態では、拡張現実環境を提供するために仮想要素で拡張され、または、他の方法で仮想要素と組み合わせられ、もしくは混成される。例示される実施形態では、2つのカメラがHMD1500の正面に示されるが、外部に向いている任意の数のカメラがあってもよく、単一のカメラが、HMD1500に設置され、任意の方向に向けられることができることが理解されるであろう。例えば、別の実施形態では、環境の追加のパノラマ画像取込を提供するために、HMD1500側に搭載されたカメラがあってもよい。
図16は、ユーザ106によって動作するHMD1500のビデオゲームコンテンツをレンダリングすることが可能であるクライアントシステム1602を使用する、ゲームプレイの一例を例示する。この例示では、HMD1500に提供される仮想オブジェクト(例えば、ゲームコンテンツ等)の状態は、豊富な対話型3D空間内に存在する。上記に説明されたように、仮想オブジェクトの状態がクライアントシステム1602にダウンロードされ、または、クラウド処理システムによって、一環境で実行される。クラウドゲームサービス1632は、特定のゲーム1630にアクセスし、体験を他の友人と共有し、コメントを投稿し、それらのアカウント情報を管理することが可能であるユーザ1604のデータベースを含む。
クラウドゲームサービス1632は、ゲームプレイ中、今後のゲームプレイ中、ソーシャルメディアネットワークでの共有時に、または、トロフィー、賞、ステータス、ランキング等の記憶するために使用されるときに、利用可能であり得る特定のユーザのゲームデータ1606を記憶することができる。ソーシャルデータ1608は、クラウドゲームサービス1632によって管理される。一実施形態では、ソーシャルデータ1608は、コンピュータネットワーク1410を通して、クラウドゲームサービス1632とインターフェースされる別個のソーシャルメディアネットワークによって管理される。コンピュータネットワーク1410を通して、任意の数のクライアントシステム1610は、コンテンツへのアクセス及び他のユーザとの対話のために接続される。
図16の例を続けて説明すると、HMD102で視認される3次元対話型シーンは、3Dビュー、または他の仮想環境で示されるキャラクタ等のゲームプレイを含む。あるキャラクタ(例えば、P1等)は、HMD102を装着するユーザ106によって制御される。この例は、2人のプレイヤ間のバスケットのボールシーンを示し、ユーザ106は、3Dビューで別のキャラクタの上部で、ボールをダンクシュートしている。他のキャラクタは、ゲームのAI(人工知能)のキャラクタであることができ、または、別の1人のプレイヤまたは複数のプレイヤ(Pn)によって制御されることができる。HMD102を装着しているユーザ106は、ユーザの空間を中心に移動していることを示され、HMD102は、ユーザ106の頭部の動き及び体位に基づいて周囲を移動する。室内の表示デバイス1414上にわたって位置付けられたカメラ1612が示されるが、しかしながら、HMD102を使用するために、HMD102の画像を取り込むことができるカメラ1612は、任意の場所に置かれる。したがって、カメラ1612の視点から、HMD102内でレンダリングされるコンテンツがHMD102に位置付けられる方向に依存するように、カメラ1612及び表示デバイス1414から約90度回転されたユーザ106が示される。当然ながら、HMD120の使用中、ユーザ106は、HMD102によってレンダリングされた動的仮想シーンを活用する必要性に応じて、動き回り、ユーザの頭部の向きを変え、様々な方向に目を向けるであろう。
一実施形態では、カメラ1612の代わりに、または、それに加えて、プロジェクタ104に対するHMD102の位置及び/または方位は、本明細書に説明される方法を使用することによって判定される。
図17は、一実施形態に従って、使用中のHMD102を装着するユーザを例示する。この例では、HMD102がカメラ1612によって取り込まれたビデオフレームから取得された画像データを使用して追跡されることが示される(1702)。加えて、ハンドヘルドコントローラ115がカメラ1612によって取り込まれたビデオフレームから取得された画像データを使用して追跡されることも示される(1704)。また、HMD102がケーブル1710を介してコンピューティングシステム2202に接続される構成が示される。コンピューティングシステム2202は、コンピューティングシステム107の例である。一実施形態において、HMD102は、電力を同じケーブルから取得し、または、別のケーブルに接続することができる。さらに別の実施形態では、HMD102は、追加の電源コードを回避するように、再充電可能であるバッテリを有する。
図18を参照すると、本開示に説明される実施形態に従った、HMD1800の例示的構成要素を例示する図が示される。HMD1800は、図1Aに示されるHMD102の例である。HMD1800がいくつかのカメラを含まないとき、HMD1800は、HMD102(図1A)の例である。構成及び可能になる機能に応じて、多少の構成要素がHMD1800に含まれる、または含まれない可能性があることを理解されたい。HMD1800は、プログラム命令を実行するためのプロセッサ1802を含む。メモリデバイス1804は、記憶する目的で提供され、一実施形態では、揮発性と不揮発性メモリとの両方を含む。ユーザが視認する視覚インターフェースを提供する、ディスプレイ1806が含まれる。
ディスプレイ1806は、1つの単一の表示画面によって、またはユーザ106の目毎に別個の表示画面の形態で定義される。2つの画面表示が提供されるとき、左目及び右目に映像コンテンツを別個に提供することが可能である。各目への映像コンテンツの別個の提示は、例えば、3Dコンテンツの没入型制御の改善をもたらす。本明細書に説明されるように、一実施形態では、第2の画面には、片方の目に対する出力を使用し、その後、2次元(2D)形式での表示のためにコンテンツをフォーマットすることによって、HMD1800の第2のスクリーンコンテンツが提供される。片方の目は、一実施形態では、左目の映像フィードであるが、他の実施形態では、右目の映像フィードである。
バッテリ1808は、HMD1800用電源として提供される。他の実施形態では、電源は、電気系統へのコンセント接続口を含む。他の実施形態では、電気系統へのコンセント接続及びバッテリ1808は提供される。動き検出モジュール1810は、磁気計1812、加速度計1814、及びジャイロスコープ1816等の任意の様々な種類の動き感知ハードウェアを含む。
加速度計1814は、加速度及び重力誘導反応力を測定するためのデバイスである。単一及び複数軸(例えば、6軸)モデルは、異なる方向の加速度の大きさ及び方向を検出することが可能である。加速度計1814は、傾き、振動、及び衝撃を感知するために使用される。一実施形態では、3つの加速度計は、2つの角度(ワールド空間ピッチ及びワールド空間ローラ)に関する絶対参照を与える重力方向を提供するために使用される。
磁気計1812は、HMD1800の近くの磁界の強度及び方向を測定する。一実施形態では、3つの磁気計は、HMD1800内で使用され、ワールド空間のヨー角の絶対参照を確保する。一実施形態では、磁気計1812は、地磁界(±80マイクロテルサ)に及ぶように設計される。磁気計は、金属によって影響を及ぼされ、実際のヨーで単調であるヨー測定を提供する。磁界は、ヨー測定で歪みを生じさせる環境内の金属に起因して歪められる。必要に応じて、この歪みは、ジャイロスコープまたはカメラ等の他のセンサからの情報を使用して校正される。一実施例では、加速度計1814は、磁気計1812と一緒に使用され、HMD1800の傾き及びアジマスを取得する。
ジャイロスコープ1816は、角運動量の原理に基づいて、方位を測定または維持するためのデバイスである。一実施形態では、3つのジャイロスコープは、慣性感知に基づいて、それぞれの軸(x、y、及びz)にわたる移動についての情報を提供する。ジャイロスコープは、高速回転を検出することに役立つ。しかしながら、ジャイロスコープは、絶対参照の存在なしで、時間超過してドリフトする。ドリフトを減らすために、ジャイロスコープは、周期的にリセットされ、物体、加速度計、磁気計等の視覚追跡に基づいて位置/方位判定等の他の利用可能情報を使用して行われることができる。
カメラ1818は、実世界環境の画像及び画像ストリームを取り込むために提供される。一実施形態では、2つ以上のカメラ(選択式)は、HMD1800内に含まれ、後向きカメラ(ユーザがHMD1800のディスプレイを視認しているときにユーザから離れるような向きになる)と、前向きカメラ(ユーザがHMD1800のディスプレイを視認しているときにユーザに向かった向きになる)とを含む。加えて、ある実施形態では、デプスカメラ1820は、実世界環境内の物体の深さ情報を感知するために、HMD1800内に含まれる。
HMD1800は、音声出力を提供するためのスピーカ1822を含む。また、一実施形態では、マイクロホン1824は、周囲環境からのサウンド、ユーザによって行われるスピーチ等を含む、音声を実世界環境から取り込むために含まる。ある実施形態では、HMD1800は、触覚フィードバックをユーザに提供するための触覚フィードバックモジュール1826を含む。一実施形態では、触覚フィードバックモジュール1826は、触覚フィードバックをユーザに提供するように、HMD1800の移動及び/または振動を生じさせることが可能である。
光検出器1830は、1つ以上のビームを検出するために提供される。カードリーダ1832は、HMD1800が、情報をメモリカードから読み取り及び情報をメモリカードに書き込むことを可能にするために提供される。USBインターフェース1834は、周辺デバイスの接続または他の携帯デバイス、コンピュータ等の他のデバイスへの接続を可能にするためのインターフェースの一例として含まれる。HMD1800の様々な実施形態では、任意の様々な種類のインターフェースは、HMD1800の良好な接続性を可能にするために含まれてもよい。
ある実施形態では、Wi−Fiモジュール1836は、無線ネットワーキング技術を介して、コンピュータネットワークへの接続を可能にするために含まれる。また、ある実施形態では、HMD1800は、他デバイスへの無線通信を可能にするためのBluetoothモジュール1838を含む。通信リンク1840は、他のデバイスへの接続のために含まれる。一実施形態では、通信リンク1840は、無線通信のための赤外線伝送を利用する。他の実施形態では、通信リンク1840は、他のデバイスとの通信のために、任意の様々な無線または有線伝送プロトコルを利用する。
入力ボタン/センサ1842は、入力インターフェースをユーザに提供するために含まれる。ボタン、ジェスチャ、タッチパッド、ジョイスティック、トラックボール等の、任意の様々な種類の入力インターフェースが含まれてもよい。一実施形態では、超音波通信モジュール1844は、超音波技術を介して他のデバイスとの通信を容易にするために、HMD1800内に含まれる。
ある実施形態では、生物学的センサ1846は、ユーザからの生理学的データの検出を可能にするために含まれる。一実施形態では、生物学的センサ1846は、ユーザ/外形を識別するために、ユーザの皮膚、音声検出、目の網膜検出によってユーザの生体電気信号を検出するための1つ以上の乾電極を含む。
HMD1800の前述の構成要素は、HMD1800内に含み得る単なる例示的構成要素として説明されている。本開示に説明される様々な実施形態では、HMD1800は、様々な後述の構成要素の一部を含んでもよく、または含まなくてもよい。HMD1800の実施形態は、加えて、本明細書に説明されるような本発明の態様を容易にする目的のために、現在説明されないが当技術分野で既知である他の構成要素を含んでもよい。
一実施形態では、HMD1800は、発光ダイオードを含み、その発光ダイオードは、HMD1800の位置及び/または方位を判定するために、光検出器1830に追加されて使用される。例えば、HMD1800が位置する環境内に位置するLED及びカメラが、光検出器1830及び本明細書に説明される方法を使用して判定された位置及び/または方位を承認または拒否するために使用される。
本開示に説明される様々な実施形態では、後述のハンドヘルドデバイスは、様々な対話機能を提供するために、ディスプレイ上に表示される対話型アプリケーションと併せて利用されることは、当業者によって理解されるであろう。本明細書に説明される例示的実施形態は、一例としてのみ提供されるが、これに限定されるものではない。
一実施形態では、本明細書に参照されるようなクライアント及び/またはクライアントデバイスは、HMD、端末、パーソナルコンピュータ、ゲームコンソール、タブレットコンピュータ、電話、セットトップボックス、キオスク、無線デバイス、デジタルパッド、スタンドアローンデバイス、ハンドヘルドゲームプレイデバイス、及び/または同等物を含んでもよい。通常、クライアントは、エンコードされたビデオストリームを受信し、ビデオストリームをデコードし、ユーザ(例えば、ゲームのプレイヤ)に結果として得られた映像を提示するように構成される。エンコードされたビデオストリームの受信及び/またはビデオストリームのデコードの処理は通常、クライアントの受信バッファ内に個別の映像フレームを記憶することを含む。ビデオストリームは、クライアントと一体化されたディスプレイ上で、または、モニタもしくはテレビ等の別個のデバイス上で、ユーザに提示されてもよい。
クライアントは、随意に、2人以上のゲームプレイヤをサポートするように構成される。例えば、ゲームコンソールは、2人、3人、4人、またはそれ以上の同時プレイヤ(例えば、P1、P2、・・・Pn)をサポートするように構成されてもよい。これらのプレイヤのそれぞれがビデストリームを受信もしくは共有し、または単一のビデオストリームが、プレイヤごとに特別に生成された(例えば、各プレイヤの視点に基づき生成された)フレームの領域を含んでもよい。任意の数のクライアントは、ローカル(例えば、同一場所)に存在し、または地理的に分散される。ゲームシステムに含まれるクライアントの数は、1または2〜数千、数万以上まで、大きく変化する。本明細書において使用されるように、用語「ゲームプレイヤ」は、ゲームをプレイする人を指し、「ゲームプレイデバイス」は、ゲームをプレイするために使用されるデバイスを指す。いくつかの実施形態では、ゲームプレイデバイスは、ゲーム体験をユーザに提供するために協働する複数のコンピューティングデバイスを指してもよい。
例えば、ゲームコンソール及びHMDは、映像サーバシステムと協働して、HMDを通じて視認されるゲームを提供する。一実施形態では、ゲームコンソールは、ビデオストリームを映像サーバシステムから受信し、ゲームコンソールは、レンダリングのために、HMD及び/またはテレビに対して、ビデオストリームを転送するか、またはビデオストリームを更新する。
さらに、HMDは、任意の種類のコンテンツ(ビデオゲームコンテンツ、映画コンテンツ、ビデオクリップコンテンツ、ウェブコンテンツ、広告コンテンツ、コンテストコンテンツ、跳ね回りゲーム、電話会議/ミーティングコンテンツ、ソーシャルメディア(例えば、投稿、メッセージ、メディアストリーム、友人のイベント、及び/またはゲームプレイ)、ビデオポーション、及び/または音声コンテンツのような作成または使用されたもの)と、ブラウザ及びアプリケーションを介してインターネットを通してソースから消費されたコンテンツと、任意の種類のストリーミングコンテンツとを視認するために、及び/または、それらと相互作用するために使用される。当然ながら、任意の種類のコンテンツがHMD内で視認されることができる、または、ある画面もしくはHMDの画面にレンダリングされることができる限り、レンダリングされることができるように、前述のコンテンツリストは限定されていない。
一実施形態では、クライアントはさらに、受信された映像を修正するためのシステムを含む。例えば、クライアントは、1つの映像を別の映像に重ね、映像をクロップし、及び/または同等のことをするために、さらなるレンダリングを行う。別の例として、クライアントは、Iフレーム、Pフレーム、及びBフレーム等の様々な種類の映像フレームを受信し、ユーザに表示するために、これらのフレームを画像に処理する。いくつかの実施形態において、クライアントの要素は、レンダリング、シェーディング、3Dへの変換、2Dへの変換、歪み除去、サイジング、またはビデオストリーム上で同様の動作をさらに行うように構成される。クライアントの要素は、随意に、2つ以上の音声またはビデオストリームを受信するように構成される。
クライアントの入力デバイスは、例えば、片手ゲームコントローラ、両手ゲームコントローラ、ジェスチャ認識システム、視線認識システム、音声認識システム、キーボード、ジョイスティック、ポインティングデバイス、力フィードバックデバイス、動き、及び/もしくは場所感知装置、マウス、タッチスクリーン、ニュートラルインターフェース、カメラ、まだ開発されていない入力デバイス、ならびに/または同等物を含む。
映像ソースは、レンダリング論理、例えば、ハードウェア、ファームウェア、及び/または、記憶装置等のコンピュータ可読媒体上に記憶されるソフトウェアを含む。このレンダリングロジックは、ゲーム映像状態に基づいて、ビデオストリームの映像フレームを作成するように構成される。レンダリング論理の全部または一部は、1つ以上のグラフィック処理ユニット(GPU)内に随意に配置される。レンダリング論理は通常、ゲーム状態及び視点に基づいて、対象物間の3次元空間的関係を決定するために及び/または適切なテクスチャを付与するように構成される処理ステージを含む。レンダリング論理は、エンコードされた生映像を生成する。例えば、生映像は、Adobe Flash(登録商標)規格、HTML−5、.wav、H.264、H.263、On2、VP6、VC−1、WMA、Huffyuv、Lagarith、MPG−x、Xvid、FFmpeg、x264、VP6−8、real video、mp3、または同等物によってエンコードされる。エンコード処理により、デバイス上のデコーダへの提供のために随意にパッケージされるビデオストリームが作成される。ビデオストリームは、フレームサイズ及びフレームレートによって特徴付けられる。典型的なフレームサイズは、800x600、1280x720(例えば、720p)、1024x768、1080pを含むが、任意の他のフレームサイズが使用されてもよい。フレームレートは、毎秒の映像フレームの数である。一実施形態では、ビデオストリームは、異なる種類の映像フレームを含む。例えば、H.264規格は、「P」フレーム及び「I」フレームを含む。Iフレームは、表示デバイス上の全てのマクロブロック/画素をリフレッシュする情報を含む一方、Pフレームは、そのサブセットをリフレッシュする情報を含む。Pフレームのデータサイズは、通常、Iフレームよりも小さい。本明細書に使用されるように、用語「フレームサイズ」は、フレーム内の画素数を指すことを意味する。用語「フレームデータサイズ」は、フレームを記憶するために必要なバイト数を指すために使用される。
いくつかの実施形態では、クライアントは、汎用コンピュータ、専用コンピュータ、ゲーム機、パーソナルコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、モバイルコンピューティングデバイス、携帯ゲーム機、携帯電話、セットトップボックス、ストリーミングメディアインターフェース/デバイス、多機能テレビもしくはネットワークディスプレイ、または本明細書に定義されるようなクライアントの機能を満足するように構成することが可能である任意の他のコンピューティングデバイスである。一実施形態では、クラウドゲームサーバは、ユーザによって利用されているクライアントデバイスの種類を検出するように構成され、ユーザのクライアントデバイスに適切であるクラウドゲーム環境を提供するように構成される。例えば、画像設定、音声設定、及び他の種類の設定は、ユーザのクライアントデバイス向けに最適化されてもよい。
図19は、情報サービスプロバイダアーキテクチャの実施形態を例示する。情報サービスプロバイダ(ISP)1902は、多数の情報サービスをユーザ1900−1、1900−2、1900−3、1900−4(例えば、コンピュータネットワーク1410を介して、地理的に分散され及び接続される)に提供する。一実施形態では、ISPは、株価最新情報等の一種類のサービス、または放送メディア、ニュース、スポーツ、ゲーム等の様々なサービスを提供する。加えて、各ISPによって提供されるサービスは動的であり、すなわち、そのサービスは、時間内に任意の点において追加され、または取り除かれることができる。したがって、特定の種類のサービスを特定の個人に提供するISPは、経時的に変化することができる。例えば、ユーザがホームタウンにいる間、ISPがユーザの近くでユーザのための役割を果たし、ユーザが異なる町で旅行しているとき、異なるISPがユーザのための役割を果たす。ホームタウンISPが必要情報及びデータを新しいISPを転送することにより、ユーザ情報は新しい町までユーザに「随行」し、ユーザにより近く及びよりアクセスしやすいデータを作る。別の実施形態では、マスターサーバの関係性は、ユーザ用の情報を管理するマスターISPと、マスターISPからの制御下でのユーザと直接インターフェース接続するサーバISPとの間で確立される。別の実施形態では、クライアントが世界中を移動しISPを良好な位置にさせ、これらのサービスを提供するものをユーザにサービスを行うとき、データは、あるISPから別のISPに転送される。
ISP1902は、コンピュータベースのサービスを顧客にコンピュータネットワーク1410を介して提供する、アプリケーションサービスプロバイダ(ASP)1906を含む。また、ASPモデルを使用して提供されたソフトは、時々、オンデマンドソフトウェアまたはサービス型ソフトウェア(SaaS)と呼ばれる。特定のアプリケーションプログラム(顧客関係管理等)へのアクセスを提供するための単純形式は、HTTP等の標準プロトコルを使用するものである。アプリケーションソフトウェアは、ベンダシステム上に存在し、ベンダによって提供される特殊用途クライアントソフトウェアまたはシンクライアント等の他のリモートインターフェースによって、HTMLを使用してウェブブラウザを経由してユーザによってアクセスされる。
広い地理的エリアを通して提供されるサービスは、多くの場合、クラウドコンピューティングを使用する。クラウドコンピューティングは、動的に拡張可能で及びほとんどの場合仮想化されたリソースがコンピュータネットワーク1410を通したサービスとして提供される、コンピューティングのスタイルである。ユーザは、ユーザをサポートする「クラウド」内の技術基盤における専門家である必要はない。一実施形態では、クラウドコンピューティングは、サービス型インフラストラクチャ(IaaS)、サービス型プラットフォーム(PaaS)、及びサービス型ソフトウェア(SaaS)等の異なるサービスで分けられる。クラウドコンピューティングサービスは、多くの場合、ウェブブラウザからアクセスされる共通ビジネスアプリケーションオンラインを提供する一方、ソフトウェア及びデータは、サーバ上に記憶される。用語「クラウド」は、インターネットがコンピュータネットワーク図にどのように描写されたかと、隠される複雑なインフラストラクチャに関する抽出されたものとに基づく、インターネット(例えば、使用サーバ、ストレージ、及び論理回路)の比喩として使用される。
さらに、ISP1902は、1人用及び多人数参加型ビデオゲームをプレイするゲームクライアントによって使用されるゲーム処理サーバ(GPS)1908を含む。インターネットを通してプレイする大部分のビデオゲームは、ゲームサーバへの接続を介して動作する。通常、ゲームは、データをプレイヤから収集し及び他のプレイヤに分配する、専用サーバアプリケーションを使用する。これは、ピアツーピア配列よりも効率的及び効果的であるが、サーバアプリケーションをホストする別個のサーバを必要とする。別の実施形態では、GPSは、プレイヤ間の通信を確立し、プレイヤのそれぞれのゲームプレイデバイスは、集中GPSに頼ることなく、情報交換を行う。
専用GPSは、クライアントから独立して起動するサーバである。そのようなサーバは、通常、データセンタ内に位置する専用ハードウェア上で起動し、より大きい帯域幅及び専用処理能力を提供する。専用サーバは、大部分のPCベースの多人数参加型ゲーム用のゲームサーバをホストする推奨方法である。多人数同時参加型オンラインゲームは、通常、ゲームタイトルを所有するソフトウェア会社によってホストされ、サーバがコンテンツを制御及び更新することを可能にする。
放送処理サーバ(BPS)1910は、音声信号またはビデオ信号を視聴者に分配する。視聴者の非常に狭い範囲への放送は、時々、ナローキャスティングと呼ばれる。放送分配の最終行程は、信号が聴取者または視聴者にどのように届けるかの方法が考察される。ラジオ局もしくはテレビ局と同様に、信号がアンテナ及び受信器に電波で届けられ、または、放送局を介してもしくはネットワークから直接、ケーブルテレビもしくはケーブルラジオ(または「無線ケーブル」)を経由して、信号が届けられる。また、インターネットは、特に、信号及び帯域幅が共有されることを可能にするマルチキャストで、ラジオまたはテレビのどちらか一方を受信者に届ける。歴史的に、放送は、全国放送または地方放送等の地理的領域によって区切られている。しかしながら、高速インターネットの普及により、コンテンツが世界中のほとんど全ての国に届くことができるように、放送は地理によって定義されていない。
ストレージサービスプロバイダ(SSP)1912は、コンピュータストレージスペース及び関連管理サービスを提供する。SSPは、また、定期的なバックアップ及びアーカイブを提供する。ストレージをサービスとして提供することによって、ユーザは、必要に応じて、より多くのストレージを注文することができる。別の大きな利点は、SSPがバックアップサービスを含み、ユーザのコンピュータのハードディスクが機能しなくなる場合、ユーザは全てのユーザデータを失わないであろうことである。さらに、ある実施形態では、複数のSSPは、ユーザデータの全部または一部のコピーを有し、ユーザが位置する場所またはデバイスがデータにアクセスするために使用される場所から独立して、ユーザが効率的方法でデータにアクセスすることを可能にする。例えば、ユーザが移動中に、ユーザがホームコンピュータ内及び携帯電話内の個人ファイルにアクセスすることできる。
通信プロバイダ1914は、ユーザへの接続性を提供する。ある種類の通信プロバイダは、インターネットへのアクセスを提供する、インターネットサービスプロバイダ(ISP)である。ダイアルアップ、DSL、ケーブルモデム、ファイバー、無線、または専用高速相互接続等のインターネットプロトコルデータグラムを提供するために適切なデータ伝送技術を使用して、ISPは、その顧客を接続させる。通信プロバイダは、また、eメール、インスタントメッセージ、及びSMSテキストメッセージ等のメッセージサービスを提供することができる。別の種類の通信プロバイダは、インターネットへの直接バックボーンアクセスを提供することによって帯域幅またはネットワークアクセスを販売するネットワークサービスプロバイダ(NSP)である。ネットワークサービスプロバイダは、一実施形態では、電気通信会社、データキャリア、無線通信プロバイダ、インターネットサービスプロバイダ、高速インターネットアクセスを提供するケーブルテレビ運営業者等を含む。
データ交換器1904は、ISP1902内の数個のモジュールを相互接続させ、これらのモジュールをユーザ1900にコンピュータネットワーク1410を介して接続する。データ交換器1904は、ISP1902の全てのモジュールが近接する小さいエリアが範囲となり、または、異なるモジュールが地理的に分散されるとき、大きいエリアが範囲となる。例えば、データ交換器1988は、データセンタのキャビネット内の高速ギガビットイーサネット(登録商標)(または、さらに高速なもの)、または大陸間仮想エリアネットワーク(VLAN)を含む。
ユーザ1900は、少なくとも、CPU、ディスプレイ、及び入力/出力(I/O)デバイスを含むクライアントデバイス1920で、リモートサービスにアクセスする。クライアントデバイスは、パーソナルコンピュータ(PC)、携帯電話、ノートブック、タブレット、ゲーム機、パーソナルデジタルアシスタント(PDA)等であることができる。一実施形態では、ISP1902は、クライアントによって使用されるデバイスの種類を認識し、採用される通信方法を調整する。他の場合、クライアントデバイスは、標準の通信方法(例えば、html)を使用し、ISP1902にアクセスする。
図20は、HMD2000の実施形態の図である。HMD2000は、HMD102(図1A)の例である。HMD2000は、光検出器の配列を含む。光検出器の一部は、2006としてラベルで示される。HMD2000の光検出器の全てが、混乱を避けるためにラベルで示されるとは限らない。光検出器2006は、光検出器105aの例である。HMD2000の光検出器は、HMD2000の前面2002の幅に沿って垂直に分散され、また、HMD2000の前面2002の高さにわたって水平に分配される。また、ある実施形態では、HMD2000の光検出器の一部が、HMD2000のヘッドバンド2004上に位置する。プロジェクタ104に対する2つ以上の光検出器の方位が把握されたとき、プロジェクタ104に対するHMD2000の方位は、コンピューティングデバイス107のプロセッサ302によって判定される。一実施形態では、HMD2000の各光検出器2006は、一意の識別コードを用いて、コンピューティングデバイス107のプロセッサ302によって識別される。
矢印は、光検出器2006が向いている方向を示すために提供される。例えば、HMD2000の上左角部の光検出器2006のレンズは上向きであるが、垂直線2007に対して角度付けられる。別の例として、HMD2000の中間左角部の光検出器2006のレンズは、垂直線2007に対して90度の角度に向いている。さらなる別の例として、HMD2000の中間上角部の光検出器2006のレンズは、垂直線2007に対して0度の角度を形成するように垂直に上に向いている。さらに別の例として、HMD2000の中間下角部の光検出器2006のレンズは、垂直線2007に対して180度の角度を形成するように垂直に下に向いている。さらに別の例として、HMD2000の中間部の光検出器2006のレンズは、垂直線2007に対して90度の角度を形成するように、図20の紙面の外側に向いている。
いくつかの実施形態では、光検出器2006が前面2002の表面の置かれたパターンの例は、ランダム非平面パターン、ジグザグパターン、曲線パターン、直線パターン、曲線及び直線パターンの組み合わせ等を含む。様々な実施形態では、光検出器2006は、図20に例示されるものに比べて、前面2002及び/または垂直線2007に対して異なる角度で置かれる。
一実施形態では、HMD2000は、前面カバー2010(例えば、ガラスカバー、プラスチックカバー、影付きカバー、色付きカバー等)を有し、前面カバーは、前面2002の上を通るような埋め込まれたレンズ2008を有する。各レンズ2008は、HMD2000の対応する光検出器2006の上部に位置する。レンズ2008は、迷光をビーム110から指向(例えば、屈折等)させ、レンズ下部に位置する対応する光検出器2006上へのビーム110の入射を容易にする。
ある実施形態では、光検出器の1つは、光検出器の別の1つと比較して、HMD2000の前面2002に対して異なる角度を形成する。
一実施形態では、HMD2000の光検出器の全ては、HMD2000の前面(例えば、正面等)に対して同じ角度を有する。
ある実施形態では、各光検出器2006は、湾曲を有する。一実施形態において、その湾曲は、光に曝され、または曝されない。
本開示に説明される実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースの家電製品またはプログラム可能な家電製品、ミニコンピュータ、メインフレームコンピュータ、及び同等物を含む、様々なコンピュータシステム構成によって実施されてもよい。本開示に説明される実施形態は、また、有線ベースネットワークまたは無線ネットワークを経由してリンクされる遠隔処理デバイスによってタスクが行われる分散型コンピューティング環境内で実施されることができる。
上述の実施形態を考慮し、本開示に説明される実施形態が、コンピュータシステムに記憶されたデータを含有する様々なコンピュータ実装動作を採用することができることを理解されたい。これらの動作は、物理量の物理的操作を必要とするものである。本開示に説明される実施形態の一部を形成する本明細書に説明される動作のいずれかは、有用な機械動作である。本明細書に説明されるいくつかの実施形態は、また、これらの動作を実行するためのデバイスまたは装置に関する。本装置は、必要な目的のために特別に構築されることができ、または、本装置は、コンピュータ内に記憶されたコンピュータプログラムによって選択的に作動もしくは構成される汎用コンピュータであることができる。特に、様々な汎用機械は、本明細書の教示に従って、書き込まれたコンピュータプログラムを用いて使用されることができる、または、より特殊な装置を構築し必要動作を行うことがより便利になり得る。
本開示に説明されるいくつかの実施形態は、また、コンピュータ可読媒体上のコンピュータ可読コードとして具現化されることができる。コンピュータ可読媒体は、コンピュータシステムが後で読み取ることができるデータを記憶することができる任意のデータ記憶装置である。コンピュータ可読媒体の例は、ハードドライブ、NAS、ROM、RAM、CD−ROM、CD−R、CD−RW、磁気テープ、光学データストレージデバイス、及び非光学データストレージデバイス等を含む。コンピュータ可読媒体は、コンピュータ可読コードが記憶され、ある分散方式で実行されるように、ネットワーク接続コンピュータシステム上で分散されるコンピュータ可読有形媒体を含むことができる。
いくつかの実施形態では、本開示に説明される実施形態のいずれかは、残りの実施形態のいずれかと組み合わせられることに留意されたい。
さらに、上記に説明された実施形態の一部がゲーム環境に関して説明されるが、いくつかの実施形態では、ゲームの代わりに、他の実施形態(例えば、ビデオ会議等)が使用される。
本方法の動作は特定の順番で記載されていたが、動作の間で他のハウスキーピング動作が行われてもよいこと、または、動作が若干異なる回数で発生するように調節されてもよいこと、または、システム内で分散され、それによって、オーバーレイ動作の処理が所望の方法で実行される限りは、処理に関連する様々な間隔で処理動作の発生が可能になってもよいことを理解されたい。
本開示に説明される前述の実施形態について、理解を明確にするために、ある程度詳細に説明してきたが、特定の変更および修正が、添付の特許請求の範囲内で実施され得ることは明らかである。したがって、記載された実施形態は例示であり、限定するものではないと考えられるべきであり、本実施形態は、本明細書に与えられた詳細に限定されるものではなく、添付の特許請求の範囲および均等物内で修正されてもよい。