(57)【特許請求の範囲】
【請求項１】
ユーザによって操作されているコントローラの位置情報を受け取るステップであって、前記位置情報の少なくとも一部が前記コントローラ内の慣性センサから求められ、前記位置情報の少なくとも一部は前記慣性センサから求められた前記コントローラの現在の計算された位置を含み、前記慣性センサは、該慣性センサから求められた前記コントローラの現在の計算された位置と、前記コントローラの実際の位置との間の不一致を生じさせるドリフト誤差の影響を受ける、ステップと、
前記コントローラ上の一つ以上の入力装置をユーザが起動するのに応じて、前記位置情報における前記コントローラの現在の計算された位置を、前記コントローラが視認可能となるように配置された画像取得装置から取得される画像から求められる位置に再設定することによって、前記慣性センサの前記ドリフト誤差を補償するステップと、
前記位置情報を解析して、コマンドに関連づけられたコントローラの所定の動きが実行されたか否かを決定するステップと、
前記コマンドに関連づけられたコントローラの所定の動きが実行された場合、前記コマンドを実行するステップと、
をプロセッサが実行することを特徴とする、ゲームに用いられる方法。
【請求項２】
前記コマンドに関連づけられたコントローラの所定の動きが実行された場合、ゲームに対し割り込みを生成するステップを前記プロセッサがさらに実行することを特徴とする、請求項１に記載の方法。
【請求項３】
前記解析するステップは、前記コントローラの位置情報が、コマンドに関連づけられたコントローラの所定の動きと関連する特定の範囲内に含まれたことを示すか否かを判定するステップを含むことを特徴とする、請求項１または２に記載の方法。
【請求項４】
コントローラ上で確立された幾何学的形状の射影をカメラの画像平面で受け取るステップを前記プロセッサがさらに実行することを特徴とする請求項１ないし３のいずれかに記載の方法。
【請求項５】
前記幾何学的形状の射影における動きと変形を解析するステップを前記プロセッサがさらに実行することを特徴とする、請求項４に記載の方法。
【請求項６】
コンピュータに以下のステップを実行させるプログラムが記録されたコンピュータ読み取り可能な記録媒体であって、前記プログラムは、
ユーザによって操作されているコントローラの位置情報を受け取るステップであって、前記位置情報の少なくとも一部が前記コントローラ内の慣性センサから求められ、前記位置情報の少なくとも一部は前記慣性センサから求められた前記コントローラの現在の計算された位置を含み、前記慣性センサは、該慣性センサから求められた前記コントローラの現在の計算された位置と、前記コントローラの実際の位置との間の不一致を生じさせるドリフト誤差の影響を受ける、ステップと、
前記コントローラ上の一つ以上の入力装置をユーザが起動するのに応じて、前記位置情報における前記コントローラの現在の計算された位置を、前記コントローラが視認可能となるように配置された画像取得装置から取得される画像から求められる位置に再設定することによって、前記慣性センサの前記ドリフト誤差を補償するステップと、
前記位置情報を解析して、コマンドに関連づけられたコントローラの所定の動きが実行されたか否かを決定するステップと、
前記コマンドに関連づけられたコントローラの所定の動きが実行された場合、前記コマンドを実行するステップと、
を含むことを特徴とする記録媒体。
【請求項７】
前記コマンドに関連づけられたコントローラの所定の動きが実行された場合、ゲームに対し割り込みを生成するステップをさらに含むことを特徴とする、請求項６に記載の記録媒体。
【請求項８】
前記解析するステップは、前記コントローラの位置情報が、コマンドに関連づけられたコントローラの所定の動きと関連する特定の範囲内に含まれたことを示すか否かを判定するステップを含むことを特徴とする、請求項６または７に記載の記録媒体。
【請求項９】
コントローラ上で確立された幾何学的形状の射影をカメラの画像平面で受け取るステップをさらに含むことを特徴とする請求項６ないし８のいずれかに記載の記録媒体。
【請求項１０】
前記幾何学的形状の射影における動きと変形を解析するステップをさらに含むことを特徴とする、請求項９に記載の記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコンピュータ・エンターテイメント・システムに関し、より詳細には、そのようなコンピュータ・エンターテイメント・システム用のコントローラのユーザ操作に関する。
【背景技術】
【０００２】
コンピュータ・エンターテイメント・システムは、一般的に手持ち型コントローラ、ゲーム・コントローラまたは他のコントローラを含む。ユーザまたはプレーヤは、プレイ中のテレビゲームまたは他のシミュレーションを制御するために、コントローラを使用してエンターテイメント・システムに対してコマンドまたは他の指示を送る。例えば、コントローラはユーザにより操作されるマニピュレータ（例えばジョイスティック）を備えていてもよい。ジョイスティックの操作された可変量はアナログ値からデジタル値に変換され、ゲーム機のメインフレームに送られる。コントローラは、ユーザによって操作可能であるボタンを備えていてもよい。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
これらの情報および他の背景情報に関して、本発明は考案された。
【課題を解決するための手段】
【０００４】
一実施形態は、情報を取得する際に用いられる方法を提供する。この方法は、コントローラ上で確立された幾何学的形状の射影をカメラの画像平面で受け取るステップと、前記幾何学的形状の射影における動きと変形を解析するステップと、前記幾何学的形状の射影における動きと変形の解析に基づき、コントローラの位置情報を決定するステップと、を含む。
【０００５】
別の実施形態は、情報を取得する際に用いられるシステムを提供する。このシステムは、幾何学的形状が自身の上で確立されるコントローラと、前記コントローラ上で確立された幾何学的形状の射影を画像平面上で受け取るように構成されたカメラと、前記幾何学的形状の射影における動きと変形を解析して、この解析に基づき前記コントローラの位置情報を決定するように構成された画像解析器と、を含む。
【０００６】
別の実施形態は、情報を取得する際に用いられるシステムを提供する。このシステムは、コントローラ上で確立された幾何学的形状の射影をカメラの画像平面上で受け取る手段と、前記幾何学的形状の射影における動きと変形を解析する手段と、前記幾何学的形状の射影における動きと変形の解析に基づき、前記コントローラの位置情報を決定する手段と、を含む。
【０００７】
別の実施形態は、コンピュータへ入力されるコンピュータプログラムを具現化するための媒体と、コンピュータに以下のステップを実行させるために前記媒体に具現化されているコンピュータプログラムと、を備えるコンピュータプログラム製品を提供する。このコンピュータプログラム製品は、コントローラ上で確立された幾何学的形状の射影をカメラの画像平面で受け取るステップと、前記幾何学的形状の射影における動きと変形を解析するステップと、前記幾何学的形状の射影における動きと変形の解析に基づき、コントローラの位置情報を決定するステップと、を実行する。
【０００８】
別の実施形態は、システムに入力を与える際に用いられる方法を提供する。この方法は、システムのコントローラの位置情報を決定するステップと、前記コントローラの決定された位置情報と、コマンドに関連づけられた所定の位置情報とを比較するステップと、前記決定された位置情報が、コマンドに対する所定の位置情報と一致する場合、コマンドをシステムに提供するステップと、を含む。
【０００９】
別の実施形態は、システムに入力を与える際に用いられるシステムを提供する。このシステムは、システムのコントローラの位置情報を決定する手段と、前記コントローラの決定された位置情報と、コマンドに関連づけられた所定の位置情報とを比較する手段と、前記決定された位置情報が、コマンドに対する所定の位置情報と一致する場合、コマンドをシステムに提供する手段と、を備える。
【００１０】
別の実施形態は、コンピュータへ入力されるコンピュータプログラムを具現化するための媒体と、コンピュータに以下のステップを実行させるために前記媒体に具現化されているコンピュータプログラムと、を備えるコンピュータプログラム製品を提供する。このコンピュータプログラム製品は、システムのコントローラの位置情報を決定するステップと、前記コントローラの決定された位置情報と、コマンドに関連づけられた所定の位置情報とを比較するステップと、前記決定された位置情報がコマンドに対する所定の位置情報と一致する場合、コマンドをシステムに提供するステップと、を実行する。
【００１１】
別の実施形態は、ゲームで使用される方法を提供する。この方法は、ユーザによって操作されているコントローラの位置情報を受け取るステップと、前記位置情報を解析して、コマンドに関連づけられたコントローラの所定の動きが実行されたか否かを決定するステップと、前記コマンドに関連づけられたコントローラの所定の動きが実行された場合、前記コマンドを実行するステップと、を含む。
【００１２】
別の実施形態は、コンピュータへ入力されるコンピュータプログラムを具現化するための媒体と、コンピュータに以下のステップを実行させるために前記媒体に具現化されているコンピュータプログラムと、を備えるコンピュータプログラム製品を提供する。このコンピュータプログラム製品は、ユーザによって操作されているコントローラの位置情報を受け取るステップと、前記位置情報を解析して、コマンドに関連づけられたコントローラの所定の動きが実行されたか否かを決定するステップと、前記コマンドに関連づけられたコントローラの所定の動きが実行された場合、前記コマンドを実行するステップと、を実行する。
【００１３】
本発明の様々な実施形態の特徴および利点は、本発明の実施形態の原理が利用される具体例について述べる以下の詳細な説明および添付の図面を参照することによって、より良く理解されるであろう。
【００１４】
本発明の実施形態の上記態様および他の態様、特徴、利点は、以下の図面とともに提示される以下のより詳細な説明から、さらに明らかになるであろう。
【図面の簡単な説明】
【００１５】
【図１Ａ】本発明の一実施形態にしたがって動作するシステムを示す模式図である。
【図１Ｂ】本発明の一実施形態にしたがって作成されるコントローラの斜視図である。
【図２Ａ】本発明の一実施形態にしたがってコントローラの位置情報を決定する方法を示す模式図である。
【図２Ｂ】本発明の一実施形態にしたがってコントローラの位置情報を決定する方法を示す画像平面の平面図である。
【図３Ａ】本発明の一実施形態にしたがって情報を取得する際に用いられる方法を示すフロー図である。
【図３Ｂ】本発明の一実施形態にしたがってシステムに入力を与える際に用いられる方法を示すフロー図である。
【図４】本発明の一実施形態にしたがって本明細書に記載されている方法および技術を実施、実装および／または実行するために使用可能であるシステムを示すブロック図である。
【図５】本発明の一実施形態にしたがって本明細書に記載されている方法および技術を実施、実装および／または実行するために使用可能であるプロセッサを示すブロック図である。
【発明を実施するための形態】
【００１６】
テレビゲームのユーザまたはプレーヤは、一般的に、コントローラ上に配置されたボタン、ジョイスティック等を操作するために、一方の手または両手でゲームコントローラを保持する。ゲームをしている間、ユーザはボタン、ジョイスティック等を操作するとき同時に、コントローラそのものも空中で動かすことが多い。ゲーム中に興奮し、コントローラそのものを空中で動かすことによってゲームの動作または状況を制御しようと試みる傾向のあるユーザもいる。
【００１７】
本明細書に記載される方法、装置、方式およびシステムの様々な実施形態は、ユーザによるコントローラ本体そのものの動き、動作および／または操作の検出、捕獲および追跡を提供する。ユーザによるコントローラ本体全体の検出された動き、動作および／または操作は、プレイ中のゲームまたは他のシミュレーションの様々な状況を制御するための追加のコマンドとして使用することができる。
【００１８】
ゲームコントローラ本体のユーザによる操作の検出および追跡は、様々な方法で実施することができる。例えば、一部の実施形態では、コンピュータ・エンターテイメント・システムとともにカメラ周辺機器を使用して、手持ちコントローラ本体の動きを感知してその動きをゲーム内でのアクションに変換することができる。カメラを用いて、コントローラの多くの異なる種類の動きを検出することができる。例えば、上下の動き、ひねる動き、横方向の動き、急な動き、杖のような動き、落ち込む動きなどである。このような動きは、ゲーム内のアクションに変換される様々なコマンドに対応していてもよい。
【００１９】
ゲームコントローラ本体のユーザによる操作の検出および追跡を使用して、多くの異なる種類のゲームやシミュレーション等を実施することができる。これによってユーザは、例えば、剣またはライトセーバーで戦い、杖を用いてアイテムの形状をなぞり、多くの異なる種類のスポーツ競技に参加し、スクリーン上の戦いまたは他の遭遇等に関わることができる。
【００２０】
図１Ａを参照すると、本発明の一実施形態により作動するシステム１００が示されている。図示するように、コンピュータ・エンターテイメント・システムまたはコンソール１０２は、テレビゲームまたは他のシミュレーションの画像を表示するためにテレビまたは他のビデオディスプレイ１０４を用いる。ゲームまたは他のシミュレーションは、ＤＶＤ、ＣＤ、フラッシュメモリ、ＵＳＢメモリ、またはコンソール１０２に挿入される他のメモリ媒体１０６に保存されてもよい。ユーザまたはプレーヤ１０８は、ゲームコントローラ１１０を操作してテレビゲームまたは他のシミュレーションを制御する。
【００２１】
コントローラ１１０がカメラの視野１１４の中に収まるように、カメラまたは他のビデオ画像取得装置１１２が配置される。図示するように、カメラ１１２はビデオディスプレイ１０４の上に置かれてもよいが、カメラをどこに配置してもよいことは十分理解されなければならない。一例として、カメラ１１２は、市販のＥｙｅＴｏｙ（登録商標）製品のようなカメラ周辺装置であってもよい。しかし、いかなる種類またはブランドのカメラでも使用可能であることを十分理解しなければならない。例えば、ウェブカメラ、アドオンのＵＳＢカメラ、赤外線（ＩＲ）カメラ、高フレームキャプチャレートのカメラなどである。
【００２２】
作動中、ユーザ１０８はコントローラ１１０そのものを物理的に動かす。すなわち、ユーザ１０８は空中でコントローラ１１０の全体を物理的に動かす。例えば、コントローラ１１０をユーザ１０８により任意の方向、つまり上下、左右、ねじり、回転、揺さぶり、急な動き、落ち込みのように動かすことができる。コントローラ１１０自体のこれらの動きは、以下に記す方法で画像解析による追跡によってカメラ１１２により検知および取得することができる。
【００２３】
一般に、検知され取得されたコントローラ１１０の動きを使用して、コントローラ１１０の位置データと方向データを生成することができる。画像フレーム毎にこのデータが収集されるので、データを用いてコントローラ１１０の動きの多くの物理的状況を計算することができる。例えば、任意の軸に沿ったコントローラの加速度および速度、その傾き、ピッチ、ヨー、ロール、およびコントローラ１１０の任意の遠隔測定点などである。
【００２４】
コントローラ１１０の動きを検出し追跡する能力により、コントローラ１１０の予め定義された動きが実行されるか否かを判定することが可能になる。すなわち、コントローラ１１０の特定の動きパターンまたはジェスチャを、ゲームまたは他のシミュレーションのための入力コマンドとして予め定義し用いることができる。例えば、コントローラ１１０を落下させるジェスチャを一つのコマンドとして定義することができ、コントローラ１１０をひねるジェスチャを別のコマンドとして定義することができ、コントローラ１１０を揺さぶるジェスチャを別のコマンドとして定義することができるなどである。このように、ユーザ１０８がコントローラ１１０自体を物理的に動かす態様を、ゲームを制御するためのもう一つの入力として使用する。これにより、より刺激的で面白い体験をユーザに提供する。コントローラ１１０の動きをゲームの入力コマンドに割り当てる方法が以下で説明される。
【００２５】
図１Ｂを参照すると、本発明の実施形態にしたがって作成されるコントローラ１１０のより詳細な図が示されている。コントローラ１１０は本体１１１を含む。本体１１１は、人が手で保持する（または、ウェアラブル・ゲームコントローラである場合は着用する）ゲームコントローラ１１０の一部である。ユーザにより操作可能である入力装置は、例えば、コントローラ上のボタンまたは多軸操作スティックなどである。一つ以上のボタンが本体１１１に配置されていてもよい。本体は手で保持できるハウジングを含んでもよい。ハウジングは手で把持可能なグリップを含んでもよい。したがって、ユーザ１０８がコントローラ１１０そのものを物理的に動かすとき、動作の間、ユーザ１０８はコントローラ１１０の本体１１１を物理的に動かす。ユーザは空中ですなわち自由空間で本体１１１を動かす。
【００２６】
ゲームコントローラにより制御されるゲームの進行がスクリーン上に表示されるとき、本体１１１はスクリーンの方向を向いた前部を有していてもよい。少なくとも１台の入力装置が、ユーザからの入力を登録するためにユーザにより操作可能である入力装置とともに、本体１１１に組み付けられていてもよい。
【００２７】
一つまたは複数の発光ダイオード（ＬＥＤ）が、幾何学的形状で構成された本体の上に配置されていてもよい。または、別の種類の光検出可能な（ＰＤ）要素が本体１１１と組み付けられていてもよい。前部が少なくともスクリーンの方向を向いているときに、光検出可能な要素の位置が、画像取得装置によって記録中の画像の範囲内にあってもよい。空間内での本体１１１の動きを定量化することで、異なる時点におけるＰＤ要素の位置を定量化することができる。
【００２８】
この実施形態では、コントローラ１１０は４つの発光ダイオード（ＬＥＤ）１２２、１２４、１２６、１２８を含む。図示するように、４つのＬＥＤ１２２、１２４、１２６、１２８は実質的に正方形または長方形のパターンで配置されてもよく、ＲｌボタンとＬｌボタンの間のコントローラ１１０のブリッジ部に配置されてもよい。したがって、本実施形態では、幾何学的形状は実質的に正方形か長方形のパターンである。４つのＬＥＤ１２２、１２４、１２６、１２８で作られる正方形または長方形のパターンは、本明細書ではＬＥＤにより形成される「バウンディング・ボックス（bounding box）」と呼ぶ。
【００２９】
幾何学的形状が多くの異なる形状であってもよいことは、十分理解されなければならない。例えば、幾何学的形状は線形パターンでも二次元パターンであってもよい。ＬＥＤを線形配置するのが好ましいが、代替的に、ＬＥＤを長方形パターンまたは円弧パターンで配置して、画像取得カメラにより取得されるＬＥＤパターンの画像を解析するときの、ＬＥＤ配列の画像平面の決定を容易にすることができる。
【００３０】
コントローラの図示した実施形態は４つのＬＥＤを利用するが、他の実施形態が５つ以上または４つ未満のＬＥＤを利用してもよいことは十分理解されなければならない。例えば、３つのＬＥＤでも機能するし、二つのＬＥＤでも追跡情報を提供するように機能する。１つのＬＥＤであっても、位置情報を提供することができる。さらに、ＬＥＤはコントローラ１１０の異なる部分に置かれてもよい。
【００３１】
４つのＬＥＤ  １２２、１２４、１２６、１２８は、カメラ１１２（図１Ａ）により認識される４つの点またはドットを生成する。手にコントローラ１１０を持つプレーヤ１０８をカメラ１１２が見ているので、カメラ１１２は、４つのＬＥＤ  １２２、１２４、１２６、１２８により作られるドットとこれらが作るバウンディング・ボックスの動きを追跡することによって、コントローラ１１０の動きを追跡することができる。
【００３２】
すなわち、ユーザ１０８がコントローラ本体１１０をひねったり回転したりすると、４つのドットの射影がカメラ１１２の出力の画像平面上に投影される。コントローラのユーザによる操作を追跡し、コントローラの位置と方向を決定するために、画像解析を使用する。このように、４つのＬＥＤ１２２、１２４、１２６、１２８は、本体の動きに関する情報を生成する。１台または２台のコントローラの位置を決定することができ、または、２台のコントローラの相対動作を追跡することができる。
【００３３】
図２Ａは、バウンディング・ボックスを用いてコントローラの動きを追跡する方法の例を示す。具体的には、コントローラと４つのＬＥＤ１２２、１２４、１２６、１２８がカメラ１１２の視野１１４の範囲内に配置される。コントローラが初期位置にあるとき、４つのＬＥＤ１２２、１２４、１２６、１２８はバウンディング・ボックス２０２を形成する。コントローラが第２の位置へ移動すると、４つのＬＥＤ１２２、１２４、１２６、１２８は第２のバウンディング・ボックス２０４を形成する。加えて、コントローラが初期位置から第２の位置へと移動するとき、移動速度とカメラ１１２のフレームレートとに応じて、バウンディング・ボックスの中間位置も取得される。
【００３４】
４つのＬＥＤ１２２、１２４、１２６、１２８によって形成されるバウンディング・ボックス２０２、２０４が、カメラ１１２の画像平面で取得される。図２Ｂは、バウンディング・ボックス２０２および２０４を表しているカメラ１１２の画像平面２２０の一例を示す。バウンディング・ボックスの運動と、バウンディング・ボックスの長方形がコントローラの傾き、ヨー等に基づき異なる形状に変形する仕方を導出し決定するために、物理解析を実行する。バウンディング・ボックスを画像平面上に投影することによって、コントローラの位置、方向、加速度、速度等を決定することができる。そして、これらを用いてゲームコントローラのユーザ操作を追跡することができる。
【００３５】
図３Ａを参照すると、本発明の一実施形態にしたがってコントローラから情報を取得する際に用いられる方法３００が示されている。方法３００は多くの異なる種類のシステムおよび装置（例えば、エンターテイメント・システム、コンソール、コンピュータ、家電装置など）で実施および実行することができる。方法３００を実行するために使用可能なシステムの例が以下で説明される。
【００３６】
方法３００は、コントローラ上で確立される幾何学的形状の射影がカメラの画像平面で受け取られるステップ３０２から始まる。上述したようにしてこのステップを実行することができる。
【００３７】
ステップ３０４で、幾何学的形状の射影における動きと変形が解析される。すなわち、バウンディング・ボックスの４つのドットが追跡され解析される。カメラ出力の画像平面上でフィールドおよびフレーム解析が実行されて、４つの参照点の操作を解析し、コントローラの位置、方向、傾き、ヨー、ロール等を決定する。さらに、コントローラの加速度を任意の方向で追跡することができる。画像のフレームの解析により、任意の軸に沿った加速度を求めることができる。コントローラの遠隔測定点を計算することもできる。コントローラが静止位置または静止状態にあるか否か、例えばコントローラがユーザの腰の近くで中立状態または安定状態にあるかを決定することもできる。
【００３８】
コントローラが回転すると、画像が平面上で変換する。バウンディング・ボックスの長方形の幅の変化は、コントローラが回転していることを示す。コントローラのヨーが調節されて、長方形の幅が変化する。ヨーは長方形の幅にマップされる。コントローラの傾きは、長方形の高さに影響を与える。
【００３９】
例えば、バウンディング・ボックス２０２（図２Ｂ）は、コントローラがカメラをまっすぐ前方に見るように最初に置かれたことを示す。バウンディング・ボックス２０４は、コントローラがその後下方に動かされ、回転し、ユーザの左方に向いたことを示す。
【００４０】
画像平面は変形した長方形を見るだけであるので、コントローラが「基平面」のいずれの側に置かれているのかを知ることが困難である。例えば、ユーザがコントローラを操作して軸水平線の向こう側に等距離だけコントローラを動かす時間の間に、誰かがカメラの前を歩いてカメラを遮るような場合に、この問題が生じ得る。これは、バウンディング・ボックスが画像平面で同じものを見る原因にもなり得る。コントローラが画像取得装置の視野領域の外側に移動する場合にも、これは起こりえる。
【００４１】
このように、変形が正または負の傾きまたはロール（安定した状態の元の位置から離れた上下および左右の動きに関しての正負）により引き起こされているか否かに関する判定が必要である。この判定は、コントローラからの他の遠隔測定を読むか、またはＬＥＤをストロボ発光あるいは変調させて、ビデオ解析システムが追跡目的のためにバウンディング・ボックスの長方形の個々の角を識別可能とすることによって、解決することができる。バウンディング・ボックスの異なる角の認識の助けとなるように、ＬＥＤをストロボ発光するかまたは変調させることができる。あるいは、バウンディング・ボックスの異なる角の認識の助けとなるように、各ＬＥＤに特有の周波数を持たせてもよい。境界領域の特定の角、すなわち各ＬＥＤを識別することによって、任意の時点においてコントローラが水平線のいずれの側にあるかを判定することができる。このようにして、カメラ平面を通り抜けるコントローラに関連した問題を取り扱うことができる。
【００４２】
スクリーン上でのバウンディング・ボックスの動きと回転の追跡は、フレーム単位の解析に基づく。カメラの出力は画像データのフレームを作成する。バウンディング・ボックスの射影がソフトウェアで取得される。フレームを横切るコントローラの動きは、箱の変換に基づいている。
【００４３】
高フレームレートを用いることで、コントローラの動きの加速度と加速度の変化を正確に追跡することができる。すなわち、高いレートで平面上に画像を投影することで、コントローラのデルタ運動を追跡することができる。これにより、加速度、加速度が最大になる点、重力がゼロになる点、および変曲点をプロットすることが可能になる。変曲点は、コントローラが停止して方向を変える変換点である。この解析の全ては、画像フレームを解析してバウンディング・ボックスの位置と方向を決定することによって実行される。一例として、毎秒１２０フレーム以上のフレームレートを使用してもよい。しかし、任意のフレームレートを使用できることを十分理解すべきである。
【００４４】
以下に述べるように、前のフレームの履歴をマッピングしてもよい。これにより、例えば、追跡の加速度および速度、停止点などの特定パラメータを決定するためにコントローラの前の遠隔測定を見ることができる。
【００４５】
ステップ３０６（図３Ａ）で、幾何学的形状の射影における動きと変形の解析に基づき、コントローラの位置情報が決定される。一例として、画像解析器を用いてステップ３０４および３０６の一方または両方を実行することができる。すなわち、画像解析器を用いて、カメラの画像平面におけるバウンディング・ボックスの動きと変形の解析を実行することができる。ビデオカメラの出力は、画像解析器の入力に接続される。本明細書に記載される一つまたは複数の方法、方式および機能を実施するために画像解析器を組み込むシステムの一例を以下に述べる。
【００４６】
画像解析器は、カメラの画像平面で取得される参照ＬＥＤで形成されるバウンディング・ボックスを監視する。画像解析器は、バウンディング・ボックスの位置、回転、水平方向および垂直方向の変形を解析し、コントローラの物理的なユーザ操作、その位置、ロール、傾き、およびヨー座標を決定する。画像解析の終了後、出力ＩＤその他の形でデータを出力してもよい。画像解析から得られたこのような出力ＩＤは、任意の軸に沿ったｘ、ｙ、ｚ座標、加速度および速度、コントローラが静止位置または静止状態にあるか等のデータを含んでもよい。こうして、画像解析の終了後、画像解析器はコントローラの場所およびコマンドが発行されるか否かを示すことができる。そして、画像解析器は任意の瞬間でｐｉｎｇを実行することができ、位置、方向、最後のコマンド等を提供することができる。
【００４７】
一例として、画像解析器は以下の出力を提供することができるが、これらに限られない：
コントローラの位置（Ｘ、Ｙ、Ｚ座標）
コントローラの方向  アルファ、ベータ、ガンマ（ラジアン）
コントローラのＸ軸速度
コントローラのＹ軸速度
コントローラのＺ軸速度
コントローラのＸ軸加速度
コントローラのＹ軸加速度
コントローラのＺ軸加速度
安定状態の静止位置  Ｙ／Ｎ（上述の腰の位置。しかし、任意の位置として定義することができる）
最後の安定状態からの時間
認識された最後のジェスチャ
最後に認識されたジェスチャの時刻
到達したゼロ加速度点の割り込み
これらの出力はそれぞれ、上述したようにバウンディング・ボックスの動きと変形を解析することによって生成することができる。コントローラの動きを追跡するために、これらの出力をさらに処理してもよい。このような追跡によりコントローラの特定の動きを認識することが可能となり、これを用いて以下に述べるように特定のコマンドを起動させることができる。上記の出力に加えて、または上記の出力の代わりに他の多くの出力を使用できることは十分理解されなければならない。
【００４８】
画像解析器へのさらなる入力を任意に提供することができる。このような任意の入力には以下が含まれるが、これらに限られない：
設定ノイズレベル（Ｘ、ＹまたはＺ軸）（これは、ゲームでの腕のいらいら（jitter）を解析するときの参照許容値である）
設定サンプリングレート（カメラのフレームが取得され解析される頻度）
設定ギア比率（gearing）
設定マッピングチェーン
【００４９】
上述のように、コントローラ１１０の動きを検出し追跡する能力により、コントローラ１１０の任意の予め定義された動きが実行されるか否かについて決定することが可能になる。すなわち、コントローラ１１０の特定の動きパターンまたはジェスチャをマッピングして、ゲームまたは他のシミュレーションのためにコマンドを入力することができる。
【００５０】
図３Ｂを参照すると、本発明の一実施形態にしたがってシステムに入力を与える際に用いられる方法３２０が示されている。方法３２０は、システムのコントローラの位置情報が決定されるステップ３２２から始まる。このステップは、上述の方法および技術を使用して実行することができる。
【００５１】
ステップ３２４で、コントローラの決定された位置情報が、コマンドと関連する予め定められた位置情報と比較される。すなわち、任意の数のコントローラの異なる動き、ジェスチャまたは操作を様々なコマンドに割り振ることができる。これにより、コントローラの異なる動き、ジェスチャまたは操作をゲームモデルにマッピングすることができる。例えば、コントローラを上に動かすことを１つのコマンドに割り振り、コントローラを下に動かすことを別のコマンドに割り振り、他の任意の方向にコントローラを動かすことを他のコマンドに割り振ることができる。
【００５２】
同様に、コントローラを一回揺することを一つのコマンドに割り振り、コントローラを二回揺することを別のコマンドに割り振り、以下同様にコントローラを三回、四回、五回等揺することを他のコマンドに割り振ることができる。すなわち、コントローラを特定の回数だけ揺することに基づき、様々なジェスチャを定めることができる。コントローラを特定の回数だけ強く上下に揺することに基づき、さらに他のジェスチャを定めることができる。ひねり、回転等のコントローラの他の動きをさらに他のコマンドに割り振ることができる。
【００５３】
このように、ゲームコントローラの様々な異なる軌跡をジェスチャに割り振ることができ、これがゲームのコマンドを起動させる。各コマンドは、コントローラの予め定められた動きに割り振られる。このようなコントローラの予め定められた動きは、予め定められた位置情報に関連づけられる。この実施形態では、コントローラの決定された位置情報を予め定められた位置情報と比較して、コマンドを起動させるか否かが確認される。
【００５４】
一例として、このようなジェスチャのゲームコマンドへのマッピングを以下のようにして実施することができる。コントローラの位置および方向情報を決定するために、画像解析器の出力を使用することができる。画像解析器は、コントローラの位置と方向を表す様々な異なるＩＤを出力することができる。例えば、１つのＩＤが定常状態の判定のための出力であり、別のＩＤがコントローラの振動を示すための出力であり、様々な他のＩＤが他の方向を示すための出力であってもよい。したがって、このようなＩＤを用いて、コントローラが定常状態にあるか移動中であるかを出力することができる。コントローラが定常状態にある場合、ＩＤはコントローラが定常状態にある時間を示してもよい。
【００５５】
コントローラの決定された位置および方向情報は、ゲームの入力コマンドと関連する予め定められた位置情報と比較されてもよい。決定された位置情報が所定の位置情報と一致する場合、コマンドがエンターテイメント・システムに提供される。また、コントローラの上下動、円を描くひねり、左右の動き、上下動中のひねり、右または左への回転と言った様々なジェスチャを、全て様々なコマンドに割り振ることができる。
【００５６】
新しいコマンドまたはジェスチャが認識されると、画像解析器は割り込みを起動してもよい。このような割り込みの起動を、エンターテイメント・システムにコマンドを提供するプロセスの一部として用いてもよい。軸内でのゼロ加速点、停止点および／または他のイベントもまた割り込みを起動するように、システムを任意に構成してもよい。
【００５７】
決定された位置および方向情報を入力コマンドに関連する予め定められた位置情報と比較して一致するか否かを見るとき、完全な一致が存在しない場合もしばしば発生する。これは、コントローラが自由空間で動くため、予め定義された動きを正確に再現することが困難な場合があるためである。したがって、コマンドを起動させるために予め定められた位置情報に十分近いとみなされる範囲、許容値および／または閾値に関して、入力コマンドに関連する予め定められた位置情報を定義しておいてもよい。すなわち、閾値または範囲に関してコマンドを定義してもよい。このように、任意のコマンドまたはジェスチャが認識されたか否かを判定するときに、システムは、決定された位置および方向情報がジェスチャの範囲内に含まれるか否かを確認してもよい。したがって、定義されたコマンドは、コマンドを呼び出すか否かを判定するときに見られる閾値を有していてもよい。
【００５８】
さらに、決定された位置および方向情報を入力コマンドに関連する予め定められた位置情報と比較して一致するか否かを見るとき、前のフレームの履歴を保存したりマッピングしたりしてもよい。例えば、フレームバッファを監視してもよいし、またはシステムが前のフレームの履歴を記録し続けるようにしてもよい。前のフレームを見て、任意のコマンドが満足するか否かを判定してもよい。フレーム履歴のマッピングにより、特定の時刻におけるコントローラの遠隔測定をして、コマンドが満足するかどうかを判定する際の位置と方向を提供することが可能になる。
【００５９】
最後に、ステップ３２６で、コントローラの決定された位置情報がコマンドの予め定められた位置情報と一致する場合、コマンドがシステムに提供される。このようなコマンドを用いて、テレビゲームまたは他のシミュレーション内でイベントを発生させたりまたは発生させないようにすることができる。
【００６０】
他の実施形態では、ゲームコントローラの動きを、例えばテレビゲームにおけるゲームコマンドに割り振ることができる。テレビゲームまたは他のシミュレーションで使用可能なこの用法を用いると、ユーザにより操作中のコントローラの位置情報が受け取られる。この位置情報が解析され、コマンドに関連したコントローラの予め定められた動きが実行されたか否かが決定される。この解析は、上述したように実行することができる。コマンドに関連するコントローラの予め定められた動きが実行された場合、ゲームによってコマンドが実行される。コマンドの実行により、ゲームが表示されているビデオディスプレイ上で視覚効果またはその他を発生させることができる。
【００６１】
本明細書の議論は、ゲームまたは他のエンターテイメント・システムのコントローラでのＬＥＤの使用に関しているが、本明細書で提供される教示は、他の種類のシステム、装置、家電等のコントローラの動きの検出および追跡に適用できることを十分理解しなければならない。すなわち、上述のゲームコントローラのＬＥＤを使用して、家電装置または任意の装置の遠隔操作機能を実行することができる。コントローラを検出、追跡しその動きをシステムおよび装置のコマンドにマッピングできるように、多くの他の種類のシステムおよび装置のコントローラ上のＬＥＤを用いることができる。この種の他の種類のシステムおよび装置の例には、テレビ、ステレオ、電話、コンピュータ、ホームネットワーク、オフィスネットワーク、携帯型コンピュータ装置または通信装置等が含まれるが、これらに限定されない。
【００６２】
さらに、本明細書に記載された教示を、いくつかのまたは多数の異なる装置を制御する能力を有する汎用のリモコンに適用することができる。すなわち、そのような汎用のリモコンは本明細書で述べたＬＥＤを含んでもよく、いくつかのまたは多くの異なる装置またはシステムへの入力コマンドとして汎用リモコン本体の動きを用いることができる。
【００６３】
さらに、ゲームコントローラは汎用の遠隔機能を有していてもよい。例えば、ゲームコントローラにより制御されるゲームの進行がスクリーン上に表示されるとき、スクリーンの方向を向いた前部を有する本体を備えていてもよい。ユーザからの入力を登録するために、ユーザによって操作可能である入力装置を持つ本体に少なくとも１台の入力装置を組み付けてもよい。信号エンコーダが含まれてもよい。信号エンコーダにより発生する信号を用いて大気を介して赤外線信号を送信するよう作動可能な赤外線信号送信機が含まれてもよい。信号エンコーダは、赤外線レシーバと選択された一つの信号コードで作動可能な信号デコーダとを有する電子装置による受信のために、複数の信号コードのうち選択された一つを用いて信号を符号化するようプログラム可能であってもよい。
【００６４】
さらに、電池式おもちゃ（ブランドゲームの形とスタイルに形成されたおもちゃを含む）をＬＥＤを用いて形成し、検出された環境で追跡されるユーザ操作される本体を形成してもよい。
【００６５】
一部の実施形態では、画像解析器はユーザを認識するかまたは音声認証されたジェスチャを処理するなどすることができる。ジェスチャを通じてシステムの解析器によりユーザを識別可能であり、ジェスチャはユーザに特有であってもよい。ジェスチャはユーザによって記録されてもよいし、モデルに保存されてもよい。記録プロセスは、ジェスチャの記録中に生じた音声を選択的に保存してもよい。感知された環境をサンプルとして多重チャネル解析器に入力して処理してもよい。プロセッサは、ジェスチャモデルを参照し、音声または音響パターンに基づき、高精度かつ高性能にユーザの身元またはオブジェクトを決定し認証してもよい。
【００６６】
本発明の実施形態によると、本明細書に記載の方法および技術は、図４に示した信号処理装置４００の一部として実装することができる。装置４００は、プロセッサ４０１とメモリ４０２（例えば、ＲＡＭ、ＤＲＡＭ、ＲＯＭなど）を含んでもよい。さらに、並列処理を実装する場合には、信号処理装置４００が複数のプロセッサ４０１を備えていてもよい。メモリ４０２は、上述のように構成されたデータとコードを含んでもよい。
【００６７】
具体的には、メモリ４０２は信号データ４０６を含んでもよい。メモリ４０２は較正データ４０８を含んでもよい。較正データ４０８は、例えば、マイク配列４２２の較正から得られる一つ以上の対応する事前に調整されたリスニングゾーンの一つ以上の逆固有マトリックスＣ−１を表すデータである。一例として、メモリ４０２はマイク配列４２２を含む１８個の２０度のセクタのための固有マトリックスを含んでもよい。
【００６８】
装置４００は周知のサポート機能４１０、例えば入出力（Ｉ／Ｏ）要素４１１、電源（Ｐ／Ｓ）４１２、クロック（ＣＬＫ）４１３およびキャッシュ４１４等を備えてもよい。装置４００は、プログラムおよび／またはデータを記憶するディスクドライブ、ＣＤ−ＲＯＭドライブ、テープ装置等の大容量記憶装置４１５を任意に備えてもよい。コントローラは、コントローラ４００とユーザとの対話を促進するためのディスプレイ装置４１６とユーザインタフェースユニット４１８を任意に備えてもよい。ディスプレイ装置４１６は、テキスト、数字、グラフィック・シンボルまたは画像を表示する陰極線管（ＣＲＴ）またはフラットパネル・スクリーンの形であってもよい。ユーザ・インタフェース４１８は、キーボード、マウス、ジョイスティック、ライトペンまたは他の装置であってもよい。さらに、ユーザ・インタフェース４１８は分析される信号を直接取得するためのマイク、ビデオ・カメラまたは他の信号変換装置であってもよい。プロセッサ４０１、メモリ４０２およびシステム４００の他の構成要素は、図４で示すようにシステムバス４２０を介して互いに信号（例えば、コード命令とデータ）を交換してもよい。
【００６９】
マイク配列４２２は、Ｉ／Ｏ機能４１１を介して装置４００に接続されてもよい。マイク配列は、隣のマイクと約４ｃｍ未満、好ましくは約１〜２ｃｍ離して配置された約２〜８個のマイク、好ましくは４個のマイクであってもよい。好ましくは、配列４２２のマイクは全方向性マイクである。オプションの画像取得装置４２３（例えば、デジタルカメラ）は、Ｉ／Ｏ機能４１１を介して装置４００に結合される。カメラに機械的に結合される一つ以上のポインティングアクチュエータ４２５は、Ｉ／Ｏ機能４１１を介してプロセッサ４０１と信号を交換することができる。
【００７０】
本明細書においては、Ｉ／Ｏという用語は、一般にシステム４００と周辺装置との間でデータをやりとりする任意のプログラム、操作または装置のことを指す。あらゆるデータ転送は、一つの装置からの出力および別の装置への入力とみなすことができる。周辺装置には、キーボードやマウスなどの入力専用装置、プリンタなどの出力専用の装置の他、入出力装置として機能する書き込み可能なＣＤ−ＲＯＭ等の装置も含まれる。「周辺装置」という用語には、マウス、キーボード、プリンタ、モニター、マイク、ゲームコントローラ、カメラ、外部Ｚｉｐドライブまたはスキャナ等の外部装置の他、ＣＤ−ＲＯＭドライブ、ＣＤ−Ｒドライブまたは内蔵モデムなどの内部装置、またはフラッシュメモリ・リーダ／ライタ、ハードディスクなどの他の周辺機器も含まれる。
【００７１】
本発明の特定の実施形態では、装置４００はテレビゲームユニットであってもよく、ワイヤ（例えば、ＵＳＢケーブル）または無線によってＩ／Ｏ機能４１１を介してプロセッサに接続されたジョイスティック・コントローラ４３０を備えてもよい。ジョイスティック・コントローラ４３０は、テレビゲームのプレイ中に一般に用いられる制御信号を提供するアナログジョイスティックコントロール４３１と従来のボタン４３３とを備えていてもよい。そのようなテレビゲームは、メモリ４０２に記憶可能なプロセッサ可読のデータおよび／または命令として実装されてもよいし、あるいは、大容量記憶装置４１５と関連するような他のプロセッサ可読媒体として実装されてもよい。
【００７２】
ジョイスティックコントロール４３１は、コントロールスティックを左右に動かすとＸ軸に沿った運動の信号を送り、スティックを前後（上下）に動かすとＹ軸に沿った運動の信号を送るように通常構成されている。三次元動作用に構成された構成されるジョイスティックでは、スティックを左方向（反時計回り）または右方向（時計回り）にひねるとＺ軸に沿った運動の信号を送る。これら３軸Ｘ、Ｙ、Ｚは、特に航空機に関してそれぞれロール、ピッチ、ヨーと呼ばれることが多い。
【００７３】
従来の特徴に加えて、ジョイスティック・コントローラ４３０は一つ以上の慣性センサ４３２を備えていてもよい。慣性センサは、慣性信号を介してプロセッサ４０１に位置情報および／または方向情報を提供することができる。方向情報は、ジョイスティック・コントローラ４３０の傾き、ロールまたはヨーなどの角度情報を含んでもよい。一例として、慣性センサ４３２は、任意の数の加速度計、ジャイロスコープ、傾きセンサであってもよいし、および／またはこれらの組み合わせであってもよい。好ましい実施形態では、慣性センサ４３２は、傾き軸とロール軸に関してジョイスティック・コントローラの方向を感知するようにされた傾きセンサと、ヨー軸に沿って加速度を感知する第１加速度計と、ヨー軸に対する角加速度を感知する第２加速度計とを備えていてもよい。加速度計は、一つ以上の方向に対する質量の変位を感知するセンサを持ち一つ以上のバネにより取り付けられた質量を備えるＭＥＭＳ装置であってもよい。質量の変位に応じたセンサからの信号を用いて、ジョイスティック・コントローラ４３０の加速度を決定することができる。このような技術は、メモリ４０２に保存されプロセッサ４０１で実行可能なプログラムコード命令４０４により実装される。
【００７４】
一例として、慣性センサ４３２として適した加速度計は、例えばバネによって３点または４点でフレームに弾性結合された単一の質量であってもよい。ピッチ軸とロール軸はフレームを横切る平面内にあり、フレームはジョイスティック・コントローラ４３０に取り付けられる。フレーム（およびジョイスティック・コントローラ４３０）がピッチ軸とロール軸のまわりを回転すると、重力の影響により質量が変位し、ピッチおよび／またはロールの角度に応じてバネが伸縮する。質量の変位が感知され、ピッチおよび／またはロールの量に応じて信号に変換される。ヨー軸周りの角加速度またはヨー軸に沿った直線加速度は、感知可能であり角加速度または線形加速度の量に応じて信号に変換されるバネ伸縮または質量の動きの特徴的なパターンを生成する。そのような加速度計装置は、質量の動きあるいはバネの伸縮力を追跡することで、傾き、ロール、ヨー軸周りの角加速度およびヨー軸周りの線形加速度を測定することができる。質量の位置および／または質量にかかる力を追跡する多くの異なる方法があり、これには、抵抗歪みゲージ材料、フォトニック・センサ、磁気センサ、ホール効果デバイス、圧電デバイス、容量センサなどが含まれる。
【００７５】
さらに、ジョイスティック・コントローラ４３０は、発光ダイオード（ＬＥＤ）等の一つ以上の光源４３４を含んでもよい。光源４３４は、あるコントローラと別のコントローラとを区別するのに用いられてもよい。例えば、ＬＥＤパターンコードを点滅するか保持するかによって一つ以上のＬＥＤでこれを達成することができる。一例として、５個のＬＥＤを線形パターンまたは二次元パターンでジョイスティック・コントローラ４３０上に設けることができる。ＬＥＤを線形配列するのが好ましいが、代わりに、画像取得装置４２３により取得されるＬＥＤパターンの画像を解析するときにＬＥＤ配列の画像平面の決定を容易にすべく、ＬＥＤを長方形パターンまたは円弧状パターンで配置してもよい。さらに、ＬＥＤパターンコードを使用して、ゲーム中にジョイスティック・コントローラ４３０の位置を決定してもよい。例えば、ＬＥＤはコントローラの傾き、ヨー、ロールの区別を助けることができる。この検出パターンは、航空機飛翔ゲーム等のゲームにおけるユーザの感覚を改善するのに役立つ。画像取得装置４２３は、ジョイスティック・コントローラ４３０と光源４３４とを含む画像を捕捉することができる。そのような画像を解析して、ジョイスティック・コントローラの位置および／または方向を決定することができる。この種の解析は、メモリ４０２に保存されプロセッサ４０１で実行されるプログラムコード命令４０４により実装可能である。画像取得装置４２３による光源４３４の画像の捕捉を容易にするために、光源４３４はジョイスティック・コントローラ４３０の二つ以上の異なる側面に、例えば正面と背面（点線で示す）に配置されていてもよい。このように配置することで、画像取得装置４２３は、ユーザによるジョイスティックコントローラ４３０の持ち方に応じてジョイスティックコントローラ４３０の異なる方向について光源４３４の画像を取得することが可能になる。
【００７６】
加えて、光源４３４は、例えばパルスコード、振幅変調または周波数変調の形態で遠隔測定信号をプロセッサ４０１に提供することができる。このような遠隔測定信号は、どのジョイスティックボタンが押されているか、および／またはそのボタンがどの程度強く押されているかを表すことができる。遠隔測定信号は、パルスコーディング、パルス幅変調、周波数変調または光強度（振幅）変調によって光学信号に符号化することができる。プロセッサ４０１は光学信号から遠隔測定信号を復号し、復号された遠隔測定信号に応じてゲームコマンドを実行する。遠隔測定信号は、画像取得装置４２３により取得されたジョイスティック・コントローラ４３０の画像解析から復号されてもよい。あるいは、装置４０１は、光源４３４からの遠隔測定信号を受信するための専用の別個の光学センサを備えていてもよい。コンピュータプログラムと対話する際の強度決定に伴うＬＥＤの使用については、例えばRichard L. Marksらの共有された米国特許出願第11/429,414号、「USE OF COMPUTER IMAGE AND AUDIO PROCESSING IN DETERMINING AN INTENSITY AMOUNT WHEN INTERFACING WITH A COMPUTER PROGRAM」（代理人整理番号SONYP052）に記載されており、その全体が参照により本明細書に援用される。加えて、光源４３４を含む画像の解析を、遠隔測定とジョイスティック・コントローラ４３０の位置および／または方向の決定の両方に用いることができる。このような技術は、メモリ４０２に保存されプロセッサ４０１で実行可能なプログラムコード命令４０４によって実装することができる。プロセッサ４０１は、画像取得装置４２３により検出された光源４３４からの光学信号、および／またはマイク配列４２２により検出された音響信号から得られた音源位置と特徴の情報とともに、慣性センサ４３２からの慣性信号を使用して、ジョイスティックコントローラ４３０および／またはそのユーザの位置および／または方向を推測することができる。例えば、「音響レーダ」の音源位置および特徴をマイク配列４２２とともに使用して、ジョイスティックコントローラの動きが（慣性センサ４３２または光源４３４により）独立して追跡されている間に移動する音声を追跡することができる。制御信号をプロセッサ４０１に提供する任意の数、異なる組み合わせの異なるモードを、本発明の実施形態とともに使用することができる。そのような技術は、メモリ４０２に保存されプロセッサ４０１で実行可能なプログラムコード命令４０４によって実装することができる。
【００７７】
慣性センサ４３２からの信号が追跡情報入力の一部を与え、一つ以上の光源４３４の追跡により画像取得装置４２３から生成される信号が、追跡情報入力の別の部分を与えてもよい。一例として、クウォーターバックが頭を左方向にフェイクで動かした後にボールを右方向に投じるフットボールのテレビゲームでそのような「混在モード」信号を用いることができるが、これに限定されない。具体的には、コントローラ４３０を保持するゲームプレーヤが頭を左に回転させて音を出す一方、コントローラをフットボールであるかのように右方向に振るピッチ動作をすることができる。「音響レーダ」プログラム・コードと連携したマイク配列４２２は、ユーザの声を追うことができる。画像取得装置４２３は、ユーザの頭の動きを追跡するか、または音声やコントローラの使用を必要としない他のコマンドを追跡することができる。センサ４３２は、ジョイスティック・コントローラ（フットボールを表す）の動きを追跡することができる。画像取得装置４２３は、コントローラ４３０上の光源４３４を追跡してもよい。ユーザは、ジョイスティックコントローラ４３０の加速度の量および／または方向が特定値に達することで、またはジョイスティックコントローラ４３０のボタンを押すことで起動されるキーコマンドにより、「ボール」を離すことができる。
【００７８】
本発明の特定の実施形態では、例えば加速度計またはジャイロスコープからの慣性信号を使用して、ジョイスティック・コントローラ４３０の位置を決定することができる。具体的には、加速度計からの加速信号を一旦時間積分して速度変化を求め、速度を時間積分して位置変化を求めることができる。ある時間での初期位置と速度の値が分かっている場合、これらの値と速度変化および位置変化を用いて絶対位置を求めることができる。慣性センサを用いると、画像取得装置４２３と光源４３４をと用いるよりも早く位置決定することができるが、慣性センサ４３２は「ドリフト」として知られるタイプの誤差の影響を受けることがある。つまり、時間につれて誤差が蓄積して、慣性信号から計算されるジョイスティック４３０の位置（点線で示す）と、ジョイスティックコントローラ４３０の実際の位置との間に不一致Ｄが生じることがある。本発明の実施形態により、そのような誤差に対処するいくつかの方法が可能になる。
【００７９】
例えば、ジョイスティックコントローラ４３０の初期位置を、現在の計算された位置と等しくなるように再設定することで、ドリフトをマニュアルでキャンセルすることができる。ユーザは初期位置を再設定するコマンドを起動するためにジョイスティックコントローラ４３０の一つ以上のボタンを用いることができる。代わりに、画像取得装置４２３から得られる画像から求められる位置を参照として現在位置を再設定することで、画像ベースのドリフトを実施することができる。このような画像ベースのドリフト補正は、例えばユーザがジョイスティック・コントローラ４３０の一つ以上のボタンを起動するときにマニュアルで実施することができる。代わりに、例えば一定の時間間隔でまたはゲームプレイに応じて、画像ベースのドリフト補正を自動的に実施することもできる。このような技術は、メモリ４０２に保存されプロセッサ４０１で実行可能なプログラムコード命令４０４によって実装可能である。
【００８０】
特定の実施形態では、慣性センサ信号内の偽（スプリアス）データを補償することが望ましい。例えば、慣性センサ４３２からの信号をオーバーサンプリングし、オーバーサンプリングした信号から移動平均を計算して、慣性センサ信号からスプリアスデータを除去してもよい。ある状況では、信号をオーバーサンプリングし、データポイントの一部のサブセットから高値および／または低値を取り除き、残りのデータポイントから移動平均を計算してもよい。さらに、他のデータサンプリング技術およびデータ操作技術を使用して、慣性センサの信号を調節しスプリアスデータの有意性を除去または低減することができる。信号の性質、信号に対して実行される計算、ゲームプレイの性質、またはこれらのうちの二つ以上の組み合わせによって技術を選択することができる。このような技術は、メモリ４０２に保存されプロセッサ４０１で実行可能なプログラムコード命令４０４によって実装することができる。
【００８１】
プロセッサ４０１は、メモリ４０２で保存、読み出しされプロセッサモジュール４０１で実行されるデータ４０６とプログラム４０４のプログラムコード命令とに応じて、信号データ４０６に対しデジタル信号処理を実行することができる。プログラム４０４のコード部分は、アセンブリ、Ｃ＋＋、ＪＡＶＡ（登録商標）またはいくつかの他の言語などの複数の異なるプログラム言語のうちのいずれか一つに準拠していてもよい。プロセッサ・モジュール４０１は、プログラムコード４０４のようなプログラムを実行するとき特定目的のコンピュータになる汎用コンピュータを形成する。プログラム・コード４０４がソフトウェアで実装され汎用コンピュータ上で実行されると本明細書で述べられているが、当業者であれば、特定用途向け集積回路（ＡＳＩＣ）または他のハードウェア回路等のハードウェアを使用してもタスク管理方法を実装できることを理解するだろう。このように、本発明の実施形態の全体または一部を、ソフトウェア、ハードウェアまたは両方の組み合わせで実装できることを理解すべきである。
【００８２】
一実施形態では、プログラムコード４０４は、本明細書に記載された任意の一つ以上の方法および技術、またはこのような方法および技術の二つ以上の組み合わせを実施する一組のプロセッサ可読命令を含むことができる。例えば、本明細書に記載された画像解析器を実装するようにプログラムコード４０４を構成することができる。または代わりに、本明細書に記載された画像解析器をハードウェアで実装してもよい。
【００８３】
図示した実施形態では、上述の画像解析器機能は画像解析器４５０として例示されている。画像解析器４５０は、例えば画像取得装置４２３またはカメラ１１２（図１Ａ）等のカメラから入力を受け取ることができる。したがって、ビデオカメラ１１２または画像取得装置４２３の出力を画像解析器４５０の入力に結合してもよい。画像解析器４５０の出力を装置４００のシステムに提供してもよい。このように、コマンド自体、またはコマンドあるいはジェスチャが認識されたかどうかを見るために必要な情報が、装置４００に提供される。画像解析器４５０は、多くの異なる方法で装置４００の残りの部分に結合することができる。すなわち、図示の接続方法は一例に過ぎない。別の例では、画像解析器４５０をシステムバス４２０に結合してもよく、これにより、画像取得装置４２３から入力データを受け取り、出力を装置４００に提供することができる。
【００８４】
画像解析器４５０を装置４００、エンターテイメント・システムまたはコンソール１０２に選択的に含めてもよいし、または画像解析器４５０をこれらの装置およびシステムから離して配置してもよい。画像解析器４５０の全体または一部を、ソフトウェア、ハードウェアまたは両方の組み合わせで実装できることは十分理解されなければならない。画像解析器４５０がソフトウェアで実装されるシナリオでは、ブロック４５０は画像解析機能がソフトウェアで実装されることを表す。
【００８５】
プログラムコード４０４は、通常、一つ以上のプロセッサに対し実行時に予め調整されたリスニングゾーンを選択し、予め調整されたリスニングゾーンの外側の音源から生じる音を除去するように指示する一つ以上の命令を含むことができる。予め調整されたリスニングゾーンは、画像取得装置４２３の焦点の大きさまたは視野と一致するリスニングゾーンを含んでもよい。
【００８６】
プログラム・コードは、実行時に装置４００に音源を含む予め調整されたリスニングセクタを選択させる一つ以上の命令を含んでいてもよい。この指示により、音源が初期セクタの内部または初期セクタの特定の側のいずれにあるかを装置に判定させることができる。音源がデフォルトのセクタ内に存在しない場合、実行時、命令はデフォルトセクタの特定の側の異なるセクタを選択する。異なるセクタは、最適値に最も近い入力信号の減衰によって特徴づけることができる。これらの命令は、実行時に、マイク配列４２２からの入力信号の減衰と、最適値への減衰を計算することができる。実行時に、命令によって、一つ以上のセクタへの入力信号の減衰値を求め、減衰が最適値に最も近いセクタを装置に選択させることができる。
【００８７】
プログラム・コード４０４は、一つ以上のプロセッサに対し、マイクＭ０．．．ＭＭからの離散時間領域入力信号ｘｍ(ｔ)を生成するように指示し、セミブラインド音源分離でリスニングセクタを使用して有限インパルス応答フィルタ係数を選択して入力信号ｘｍ(ｔ)からの異なる音源を分離させる、一つ以上の命令を選択的に含んでもよい。プログラム４０４は、参照マイクＭ０からの入力信号ｘ０(ｔ)以外の選択された入力信号ｘｍ(ｔ)に対し一つ以上の非整数遅延を適用する命令を含んでもよい。非整数遅延のそれぞれを選択して、マイク配列から得られる離散時間領域出力信号ｙ(ｔ)の信号対雑音比を最適化することができる。参照マイクＭ０からの信号が配列の他のマイクからの信号に対して時間的に最初になるように非整数遅延を選択してもよい。プログラム４０４は、非整数時間遅延Δをマイク配列の出力信号ｙ(ｔ)に導入する命令を含んでもよい。
すなわち、ｙ(ｔ＋Δ)＝ｘ(ｔ＋Δ)＊ｂ０＋ｘ(ｔ−ｌ＋Δ)＊ｂ１＋ｘ(ｔ−２＋Δ)＊ｂ２＋．．．＋ｘ(ｔ−Ｎ＋Δ)ｂＮ、ここで、Δは０と１の間である。
【００８８】
プログラム・コード４０４は、実行時に、画像取得装置４２３の前方の視野を監視させ、視野内の一つ以上の光源４３４を特定させ、光源４３４から発せられた光の変化を画像取得装置４２３に検出させる一つ以上の命令を含むプロセッサ実行可能命令を選択的に含んでもよい。そして、変化の検出に応じて、プロセッサ４０１に入力コマンドがトリガされる。画像取得装置と連携したＬＥＤの使用によりゲームコントローラにアクションを引き起こすことは、2004年1月16日に出願された共有の米国特許出願第10/759,782号、Richard L. Marksらの「METHOD AND APPARATUS FOR LIGHT INPUT DEVICE」に記載されており、その全体が参照により本明細書に援用される。
【００８９】
プログラム・コード４０４は、実行時に、慣性センサからの信号と一つ以上の光源の追跡により画像取得装置から生成される信号とを上述のようにゲームシステムへの入力として使用する一つ以上の命令を含むプロセッサ実行可能命令を選択的に含んでもよい。プログラム・コード４０４は、実行時に慣性センサ４３２のドリフトを補償する一つ以上の命令を含むプロセッサ実行可能命令を選択的に含んでもよい。
【００９０】
さらに、プログラム・コード４０４は、実行時にゲーム環境に対するコントローラ操作のギアリング（gearing）とマッピングを調整する一つ以上の命令を含むプロセッサ実行可能命令を選択的に含んでもよい。このような特徴により、ユーザは、ゲーム状態に対するジョイスティック・コントローラ４３０の操作の「ギアリング」を変更することができる。例えば、ジョイスティック・コントローラ４３０の４５度回転が、ゲームオブジェクトの４５度回転に変換されてもよい。しかしながら、コントローラのＸ度回転（または傾き、ヨー、あるいは「操作」）がゲームオブジェクトのＹ度回転（または傾き、ヨー、あるいは「操作」）に変換されるように、この１：１のギア比を修正してもよい。ギアリングは１：１、１：２、１：Ｘ、またはＸ：Ｙの比率であってもよい。ここで、ＸとＹは任意の値を取ることができる。さらに、ゲームコントロールへの入力チャネルのマッピングが、時間とともにまたは直ちに修正されてもよい。修正は、ジェスチャの軌道モデルの変更、ジェスチャの位置、大きさ、閾値を修正することなどを含む。操作のダイナミックレンジをユーザに与えるために、このようなマッピングがプログラムされていても、ランダムでも、階段状（tiered）でも、ずらされて（staggered）いてもよい。マッピング、ギアリングまたは比率の修正は、ゲームコントローラ４３０上のユーザ修正ボタン（キーパッド等）の使用により、または大まかに入力チャネルに応答して、ゲームプレイやゲーム状態にしたがってプログラムコード４０４により調節されてもよい。入力チャネルには、ユーザ音声の成分、コントローラにより発生する音、コントローラにより発生する追跡音、コントローラボタン状態、ビデオカメラ出力、加速度計データ、傾き、ヨー、ロール、位置、加速度を含むコントローラ遠隔測定データ、およびユーザまたはオブジェクトのユーザによる操作を追跡可能なセンサから得られる任意の他のデータを含むが、これらに限定されない。
【００９１】
特定の実施形態では、プログラム・コード４０４は、予め定められた時間に依存する方法で、１つの方式または比率から別の方式へと時間とともにマッピングまたはギアリングを変更してもよい。ギアリングとマッピングの変更は、様々な方法でゲーム環境に適用することができる。一例では、キャラクタが健康なときにはあるギアリング方式でテレビゲームキャラクタを制御し、キャラクタの健康が悪化すると、システムがコントローラコマンドのギアを変更して、キャラクタへのジェスチャコマンドを与えるためのユーザのコントローラの動きを悪化させるようにしてもよい。例えばユーザが新しいマッピングの下でキャラクタの制御を回復するために入力の調整を要求されるとき、方向感覚を失ったテレビゲームキャラクタは、入力チャネルのマッピングの変更を強制されるようにしてもよい。ゲームコマンドに対する入力チャネルの変換を修正するマッピング方式がゲームプレイ中にも変化してもよい。この変換は、ゲーム状態に応じて、または入力チャネルの一つ以上の要素の下で発行される修正コマンドに応じて、様々な方法で発生する。ギアリングとマッピングは、入力チャネルの一つ以上の要素の設定および／または処理に影響を与えるように構成されてもよい。
【００９２】
さらに、ジョイスティック・コントローラ４３０にスピーカ４３６が取り付けられてもよい。プログラムコード４０４がマイク配列４２２を用いて検出された音を定位して特徴づける「音響レーダ」実施形態では、スピーカ４３６は、マイク配列４２２により検出可能であり、ジョイスティックコントローラ４３０の位置を追跡するためにプログラムコード４０４により使用される音声信号を提供することができる。スピーカ４３６は、ジョイスティック・コントローラ４３０からプロセッサ４０１に対し追加の「入力チャネル」を提供するためにも使用することができる。スピーカ４３６からの音声信号を周期的にパルス化して、位置追跡のために音響レーダ用のビーコンを提供してもよい。音声信号（パルス状またはそれ以外）は聞き取り可能であっても超音波であってもよい。音響レーダはジョイスティック・コントローラ４３０のユーザ操作を追跡することができる。このような操作追跡は、ジョイスティック・コントローラ４３０の位置および方向（例えば、ピッチ、ロールまたはヨー角度）に関する情報を含んでもよい。パルスは、当業者であれば適用可能であるように、適切なデューティサイクルでトリガすることができる。パルスは、システムから調整される制御信号に基づいて開始されてもよい。装置４００は、（プログラム・コード４０４によって）プロセッサ４０１に接続された二つ以上のジョイスティックコントローラ４３０の間での制御信号の発送を調整して、複数のコントローラが確実に追跡されるようにすることができる。
【００９３】
一例として、本発明の実施形態を並列処理システム上で実施することができる。このような並列処理システムは、一般的に、別々のプロセッサを使用してプログラムの部分を並列に実行するように構成された二つ以上のプロセッサ要素を含む。一例として、限定ではなく、図５は本発明の一実施形態による一種のセルプロセッサ５００を示す。セルプロセッサ５００を図４のプロセッサ４０１として用いることができる。図５に示す例では、セルプロセッサ５００はメインメモリ５０２と、パワープロセッサ要素（ＰＰＥ）５０４と、複数の相乗作用プロセッサ要素（ＳＰＥ）５０６とを備える。図５に示す例では、セルプロセッサ５００は一つのＰＰＥ５０４と８つのＳＰＥ５０６を備える。このような構成では、ＳＰＥ５０６のうちの７台を並列処理のために使用し、一台を他の７台のうちの一つが故障した場合のバックアップとして確保しておいてもよい。代替的に、セルプロセッサは、複数グループのＰＰＥ（ＰＰＥグループ）と複数グループのＳＰＥ（ＳＰＥグループ）とを備えていてもよい。この場合には、グループ内のユニット間でハードウェア資源を共有することができる。しかしながら、ＳＰＥとＰＰＥは独立した要素としてソフトウェアに見えなければならない。このように、本発明の実施形態は、図５に示す構成の使用に限定されない。
【００９４】
メインメモリ５０２は、一般に、汎用で不揮発性の記憶装置の場合と、システム構成、データ転送同期、メモリマップされたＩ／Ｏ、Ｉ／Ｏサブシステム等の機能のために用いられる特定目的のハードウェアレジスタまたはアレイの両方の場合を含む。本発明の実施形態では、信号処理プログラム５０３がメインメモリ５０２内に常駐してもよい。信号処理プログラム５０３がＰＰＥの上で動作してもよい。プログラム５０３は、ＳＰＥおよび／またはＰＰＥ上で実行可能な複数の信号処理タスクに分割されてもよい。
【００９５】
一例として、ＰＰＥ５０４は、関連するキャッシュＬ１、Ｌ２を持つ６４ビットパワーＰＣプロセッサユニット（ＰＰＵ）であってもよい。ＰＰＥ５０４は汎用処理ユニットであり、（例えばメモリ保護テーブルなどの）システム管理リソースにアクセス可能である。ＰＰＥによって見られるように、ハードウェア資源が明示的に実アドレス空間マッピングされていてもよい。したがって、ＰＰＥは、適当な実効アドレス値を使用して、これらの任意のリソースを直接アドレス指定することができる。ＰＰＥ５０４の主要な機能は、セルプロセッサ５００のＳＰＥ５０６のためのタスク管理とタスク割り当てである。
【００９６】
一つのＰＰＥのみがセル・ブロードバンド・エンジン・アーキテクチャ（ＣＢＥＡ）のようなセルプロセッサ実装として図５に示されているが、セルプロセッサ５００は、二つ以上のＰＰＥグループに組織された複数のＰＰＥを有していてもよい。これらのＰＰＥグループは、メインメモリ５０２へのアクセスを共有してもよい。さらに、セルプロセッサ５００は、二つ以上のＳＰＥグループを備えてもよい。ＳＰＥグループは、メインメモリ５０２へのアクセスを共有してもよい。このような構成は本発明の範囲内である。
【００９７】
各ＳＰＥ５０６は、相乗作用プロセッサユニット（ＳＰＵ）と自身のローカル記憶領域ＬＳとを備える。ローカル記憶領域ＬＳは、それぞれが特定のＳＰＵと関連づけられる一つ以上の別個のメモリ記憶領域を有していてもよい。各ＳＰＵは、自身の関連するローカル記憶領域内からの命令（データロード操作とデータ記憶操作を含む）のみを実行するように構成されていてもよい。このような構成では、ローカル記憶ＬＳとシステム５００内のいずれかの場所との間でのデータ転送は、（個々のＳＰＥの）ローカル記憶領域を出入りするデータ転送をするダイレクトメモリアクセス（ＤＭＡ）コマンドをメモリフローコントローラ（ＭＦＣ）から発行することで実行できる。ＳＰＵは、いかなるシステム管理機能も実行しないという点で、ＰＰＥ５０４よりも複雑さの少ない計算ユニットである。ＳＰＵは、一般に単一命令、複数データ（ＳＩＭＤ）能力を有し、割り当てられたタスクを実行するために、データを処理して任意の必要なデータ転送（ＰＰＥによりセットされた特性へのアクセスを受ける）を開始する。ＳＰＵの目的は、より高い計算単位密度を必要とし提供された命令セットを効果的に使用できるアプリケーションを実行可能とすることである。ＰＰＥ５０４によって管理されるシステム内の相当数のＳＰＥによって、広範囲にわたるアプリケーションについて費用効果の高い処理が可能になる。
【００９８】
各ＳＰＥ５０６は、メモリ保護とアクセス許可情報を保持し処理が可能である関連するメモリ管理ユニットを有する専用のメモリフローコントローラ（ＭＦＣ）を備えることができる。ＭＦＣは、セルプロセッサの主記憶装置とＳＰＥのローカル記憶装置との間のデータ転送、保護および同期の主要な方法を提供する。ＭＦＣコマンドは実行される転送を記述する。データを転送するためのコマンドは、ＭＦＣダイレクトメモリアクセス（ＤＭＡ）コマンド（またはＭＦＣ  ＤＭＡコマンド）と呼ばれることがある。
【００９９】
各ＭＦＣは、同時に複数のＤＭＡ転送をサポートすることができ、また複数のＭＦＣコマンドを維持かつ処理することができる。各ＭＦＣ  ＤＭＡデータ転送コマンドは、ローカル記憶装置のアドレス（ＬＳＡ）と実効アドレス（ＥＡ）の両方を必要とすることがある。ローカル記憶装置アドレスは、その関連するＳＰＥのローカル記憶領域のみを直接アドレス指定してもよい。実効アドレスにはより一般的なアプリケーションがあることがある。例えば、実効アドレスが実アドレス空間内にエイリアスされる場合、全てのＳＰＥローカル記憶領域を含む主記憶装置を参照することができる。
【０１００】
ＳＰＥ５０６の間の通信および／またはＳＰＥ５０６とＰＰＥ５０４の間の通信を容易にするために、ＳＰＥ５０６とＰＰＥ５０４は、イベントを合図する信号通知レジスタを含んでもよい。ＰＰＥ５０４とＳＰＥ５０６は、ＰＰＥ５０４がメッセージをＳＰＥ５０６に発信するルータの働きをするスター・トポロジによって結合されてもよい。代わりに、各ＳＰＥ５０６とＰＰＥ５０４は、メールボックスと呼ばれる一方向の信号通知レジスタを有していてもよい。メールボックスはＳＰＥ５０６により使用され、オペレーティングシステム（ＯＳ）の同期をホストすることができる。
【０１０１】
セルプロセッサ５００は、セルプロセッサ５００がマイク配列５１２やオプションの画像取得装置５１３のような周辺装置と対話する入出力（Ｉ／Ｏ）機能５０８を備えていてもよい。さらに、要素相互接続バス５１０が上記の様々な構成要素を接続してもよい。各ＳＰＥとＰＰＥは、バスインタフェースユニットＢＩＵを通してバス５１０にアクセスすることができる。セルプロセッサ５００は、プロセッサ内に通常見つかる二つのコントローラを備えてもよい。すなわち、バス５１０とメインメモリ５０２の間でのデータの流れを制御するメモリインタフェースコントローラＭＩＣと、Ｉ／Ｏ５０８とバス５１０の間でのデータの流れを制御するバスインタフェースコントローラＢＩＣである。ＭＩＣ、ＢＩＣ、ＢＩＵおよびバス５１０の要件は様々な実装に対して大きく異なることがあるが、当業者であれば、これらを実装するための機能および回路に精通しているであろう。
【０１０２】
セルプロセッサ５００は、内部割り込みコントローラＩＩＣを備えてもよい。ＩＩＣ構成要素は、ＰＰＥに提示される割り込みの優先度を管理する。ＩＩＣは、他の構成要素からの割り込みを、セルプロセッサ５００がメインシステムの割り込みコントローラを用いることなく処理することを可能にする。ＩＩＣは、第２のレベルコントローラとみなしてもよい。メインシステムの割り込みコントローラは、セルプロセッサ外部から生じる割り込みを処理してもよい。
【０１０３】
本発明の実施形態では、非整数遅延などの特定の計算を、ＰＰＥ５０４および／または一つ以上のＳＰＥ５０６を用いて並列に実行することができる。各非整数遅延計算を、異なるＳＰＥ５０６が利用可能になるにつれて引き受けることができる一つ以上の別個のタスクとして実行することができる。
【０１０４】
本明細書に開示された発明は特定の実施形態およびそのアプリケーションを用いて記載されているが、特許請求の範囲に記載の本発明の範囲から逸脱することなく、当業者によって多数の修正および変更を施すことができる。
【図１Ａ】
0005726793.tif 000002
【図１Ｂ】
0005726793.tif 000003
【図２Ａ】
0005726793.tif 000004
【図２Ｂ】
0005726793.tif 000005
【図３Ａ】
0005726793.tif 000006
【図３Ｂ】
0005726793.tif 000007
【図４】
0005726793.tif 000008
【図５】
0005726793.tif 000009