(57)【特許請求の範囲】
【請求項１】
ａ）コントロールデバイスに関連づけられた１以上のセンサから、前記コントロールデバイスの動きに関するサンプルモーションデータを受け取るステップと、
ｂ）前記モーションデータからエネルギー値と前記モーションデータに対する基準値とを計算するステップと、
ｃ）前記エネルギー値が静的エネルギー閾値よりも小さいなら、前記エネルギー値にもとづいて前記基準値を更新するステップと、
ｄ）更新された前記基準値にもとづいて前記サンプルモーションデータを調整するステップと、
ｅ）所定数の局所分散サンプルにわたって前記サンプルモーションデータの局所分散を計算するステップと、
ｆ）前記局所分散のスカラー値が記録を開始するための閾値よりも大きいなら、ジェスチャに対する前記サンプルモーションデータの１以上の値の記録を開始するステップと、
ｇ）ジェスチャに対する前記サンプルモーションデータの前記１以上の値を用いて平均的な局所分散のスカラー値を計算するステップと、
ｈ）前記局所分散のスカラー値が記録を中止するための閾値よりも小さいなら、ジェスチャに対する前記サンプルモーションデータの前記１以上の値の記録を中止するステップとを含むことを特徴とするジェスチャ認識方法。
【請求項２】
ｉ）前記ジェスチャにおける前記サンプル値の全分散を計算するステップと、
ｊ）前記ジェスチャにおける前記サンプル値と１以上のカタログジェスチャにおけるサンプル値を用いて、前記ジェスチャが前記カタログジェスチャとどれくらい一致するかを示す尺度であるメリットの数値を計算するステップと、
ｋ）前記メリットの数値にもとづいて、入力されたジェスチャが前記１以上のカタログジェスチャの一つと一致するかどうかを判定するステップと、
ｌ）前記入力されたジェスチャが前記１以上のカタログジェスチャの一つと一致した場合にアクションを取るステップとをさらに含む請求項１の方法。
【請求項３】
前記サンプルモーションデータはベクトル成分を含む請求項２の方法。
【請求項４】
前記全分散は、前記ベクトル成分の異なる成分に対応する全分散の成分に割り当てられたランクとともに計算される請求項３の方法。
【請求項５】
ステップｊ）は、入力されたジェスチャ成分のランクをカタログジェスチャ成分のランクと比較することを含む請求項４の方法。
【請求項６】
ステップｊ）は、全分散成分のランクキングによって成分を重みづけすることを含む請求項５の方法。
【請求項７】
ステップｊ）は、入力されたジェスチャとカタログジェスチャの間の相関を計算することを含む請求項６の方法。
【請求項８】
少ないサンプルしかもたない入力されたジェスチャまたはカタログジェスチャをスケールアップするステップをさらに含む請求項６の方法。
【請求項９】
入力されたジェスチャの全分散のランキングとカタログジェスチャの全分散のランキングを比較するステップと、一致しない入力されたジェスチャのランクにはそれぞれペナルティを適用するステップとをさらに含む請求項６の方法。
【請求項１０】
前記メリットの数値は、全分散のランキングにもとづいた重みで重みづけされた相関スカラの重み付き平均として計算された相関スカラを含む請求項９の方法。
【請求項１１】
全分散のランキングはジェスチャ内で異なる時間間隔で計算される請求項１０の方法。
【請求項１２】
ジェスチャ内の異なる時間間隔において重みを異ならせる請求項１１の方法。
【請求項１３】
当該方法はビデオゲームに適用される請求項２の方法。
【請求項１４】
アクションを取るステップは、ジェスチャに関連づけられたコマンドに応答することを含む請求項１３の方法。
【請求項１５】
入力されたジェスチャをゲームロジックにもとづいてカタログジェスチャの選択された対象と比較する請求項１４の方法。
【請求項１６】
前記サンプルモーションデータは慣性センサからの信号から得られたデータを含む請求項１の方法。
【請求項１７】
前記サンプルモーションデータはイメージキャプチャデバイスから得られた画像データを含む請求項１の方法。
【請求項１８】
前記サンプルモーションデータは音響センサからの信号から得られたデータを含む請求項１の方法。
【請求項１９】
ジェスチャ認識のための装置であって、
コントロールデバイスと、
ジェスチャ認識方法のプログラムを実行する機能を有するプロセッサとを含み、
前記方法は、
コントロールデバイスに関連づけられた１以上のセンサから、前記コントロールデバイスの動きに関するサンプルモーションデータを受け取るステップと、
前記モーションデータからエネルギー値と前記モーションデータに対する基準値とを計算するステップと、
前記エネルギー値が静的エネルギー閾値よりも小さいなら、前記エネルギー値にもとづいて前記基準値を更新するステップと、
更新された前記基準値にもとづいて前記サンプルモーションデータを調整するステップと、
所定数の局所分散サンプルにわたって前記サンプルモーションデータの局所分散を計算するステップと、
前記局所分散のスカラー値が記録を開始するための閾値よりも大きいなら、ジェスチャに対する前記サンプルモーションデータの１以上の値の記録を開始するステップと、
ジェスチャに対する前記サンプルモーションデータの前記１以上の値を用いて平均的な局所分散のスカラー値を計算するステップと、
前記局所分散のスカラー値が記録を中止するための閾値よりも小さいなら、ジェスチャに対する前記サンプルモーションデータの前記１以上の値の記録を中止するステップとを含むことを特徴とする装置。
【請求項２０】
前記ジェスチャ認識方法は、
前記ジェスチャにおける前記サンプル値の全分散を計算するステップと、
前記ジェスチャにおける前記サンプル値と１以上のカタログジェスチャにおけるサンプル値を用いて、前記ジェスチャが前記カタログジェスチャとどれくらい一致するかを示す尺度であるメリットの数値を計算するステップと、
前記メリットの数値にもとづいて、入力されたジェスチャが前記１以上のカタログジェスチャの一つと一致するかどうかを判定するステップと、
前記入力されたジェスチャが前記１以上のカタログジェスチャの一つと一致した場合にアクションを取るステップとをさらに含む請求項１９の装置。
【請求項２１】
コンピュータ読み取り可能なインストラクションが格納されたコンピュータ読み取り可能な記録媒体であって、前記コンピュータ読み取り可能なインストラクションが実行されるとき、ジェスチャ認識方法が実装されるように構成されており、前記方法は、
コントロールデバイスに関連づけられたセンサから、前記コントロールデバイスの動きに関するサンプルモーションデータを受け取るステップと、
前記モーションデータからエネルギー値と前記モーションデータに対する基準値とを計算するステップと、
前記エネルギー値が静的エネルギー閾値よりも小さいなら、前記エネルギー値にもとづいて前記基準値を更新するステップと、
更新された前記基準値にもとづいて前記サンプルモーションデータを調整するステップと、
所定数の局所分散サンプルにわたって前記サンプルモーションデータの局所分散を計算するステップと、
前記局所分散のスカラー値が記録を開始するための閾値よりも大きいなら、ジェスチャに対する前記サンプルモーションデータの１以上の値の記録を開始するステップと、
ジェスチャに対する前記サンプルモーションデータの前記１以上の値を用いて平均的な局所分散のスカラー値を計算するステップと、
前記局所分散のスカラー値が記録を中止するための閾値よりも小さいなら、ジェスチャに対する前記サンプルモーションデータの前記１以上の値の記録を中止するステップとを含むことを特徴とする記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
［優先権主張］
本願は、２００８年１月１１日に出願された、本出願と譲受人が共通する同時係属の特許文献１の優先権を主張し、その開示内容全体をここに参照により組み入れる。
【特許文献１】United States Provisional Patent application No. 61/020,669 to Thomas Miller IV entitled "GESTURE CATALOGING AND RECOGNITION" (Attorney Docket Number SCEA07026US00)
【０００２】
［技術分野］
本発明は、一般にコンピュータエンタテインメントシステムに関し、特にコンピュータエンタテインメントシステム用のコントローラのユーザ操作に関する。
【背景技術】
【０００３】
通常、コンピュータエンタテインメントシステムは、手持ち型コントローラ、ゲームコントローラ、またはその他のコントローラを備える。ユーザすなわちプレイヤは、コントローラを使ってコマンドや他の指令をエンタテインメントシステムに送り、プレイ中のビデオゲームやその他のシミュレーションを制御する。例えば、コントローラには、ジョイスティックなどのユーザが操作するマニピュレータが設けられてもよい。ジョイスティックの偏向量はアナログ値からデジタル値に変換され、ゲームマシンコンソールに送られる。コントローラにはユーザが操作することができるボタンも備えられる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ジョイスティックは幅広く使用されているけれども、ジョイスティックコントローラは多少扱いにくく、使用するとき直観ではわかりにくい。
これらの背景技術の情報要素に鑑みて本発明がなされた。
【課題を解決するための手段】
【０００５】
本発明のある態様は、コンピュータ読み取り可能なインストラクションが格納されたコンピュータ読み取り可能な媒体であって、前記コンピュータ読み取り可能なインストラクションが実行されるとき、ジェスチャ認識方法が実装されるように構成されている。前記方法は、ａ）複数のサンプル値をもつ入力ジェスチャにおいてサンプル値の全分散を計算するステップと、ｂ）前記ジェスチャにおける前記サンプル値と１以上のカタログジェスチャにおけるサンプル値を用いて、ジェスチャがカタログジェスチャとどれくらい一致するかを示す尺度であるメリットの数値を計算するステップと、ｃ）前記メリットの数値にもとづいて、入力されたジェスチャが１以上のカタログジェスチャの一つと一致するかどうかを判定するステップとを含む。
【図面の簡単な説明】
【０００６】
本発明が教示するものは、添付の図面と併せて、以下の詳細な説明を考慮することによって容易に理解される。
【０００７】
【図１】本発明の一実施形態にしたがって作動するビデオゲームシステムを示す図である。
【図２】本発明の一実施形態にしたがって作られたコントローラの透視図である。
【図３Ａ】図３Ａは、本発明の一実施形態によるコントローラに用いられる加速度計を示す３次元概略図である。
【図３Ｂ】図３Ｂは、ピッチまたはロール軸について回転状態にある図３Ａの加速時計を示す概略断面図である。
【図３Ｃ】図３Ｃは、並進加速状態にある図３Ａの加速時計を示す概略断面図である。
【図３Ｄ】図３Ｄは、ヨー軸について回転加速状態にある図３Ａの加速時計を示す概略平面図である。
【図３Ｅ】図３Ｅは、ヨー軸について回転加速状態にある図３Ａの加速時計を示す概略平面図である。
【図４】本発明の一実施形態による方向依存のゼロ点加速時計の補正を説明する３次元概略図である。
【図５Ａ】図１のビデオゲームシステム部のブロック図である。
【図５Ｂ】本発明の一実施形態によるビデオゲームシステムのコントローラ追跡方法を示すフロー図である。
【図５Ｃ】本発明の一実施形態によるビデオゲームシステムでのゲームプレイ中の、位置情報および／または方向情報の利用方法を示すフロー図である。
【図５Ｄ】本発明の一実施形態によるジェスチャを検出し準備する方法を示すフロー図である。
【図５Ｅ】本発明の一実施形態によるジェスチャを認識する方法を示すフロー図である。
【図６】本発明の一実施形態によるビデオゲームシステムを示すブロック図である。
【図７】本発明の一実施形態によるビデオゲームシステムにおけるセルプロセッサ実装のブロック図である。
【発明を実施するための形態】
【０００８】
以下の詳細な説明には、説明のための多くの具体的な詳細事項が含まれるが、それらに対する多くの変更や修正も本発明の技術範囲に含まれることは、当業者であれば誰でも理解するであろう。したがって、以下に説明する本発明の好適な実施形態は、クレームされた発明の普遍性をなんら損なうことなく、また限定も行うことなく記載されている。
【０００９】
本明細書に記述した方法、装置、スキームおよびシステムに関する様々な実施形態は、ユーザによるコントローラ本体そのものの移動、動きおよび／または操作の検出、取り込み、および追跡を提供する。ユーザによるコントローラ本体全体の検出された移動、動き、および／または操作は、プレイ中のゲームや他のシミュレーションの様々な局面を制御する付加コマンドとして用いられる。
【００１０】
ユーザによるゲームコントローラ本体の操作の検出および追跡は、様々な態様で実現されうる。例えば、ある実施の形態において、加速度計やジャイロスコープなどの慣性センサをコンピュータエンタテインメントシステムと共に使用し、ハンドヘルドコントローラ本体の動きを検出してゲームの中のアクションにその動きを送ることができる。慣性センサを用いて、コントローラの多くの違った動き方、例えば上下動、ねじり、水平動、急な動き（jerking movements）、棒のような動き（wand-like motions）、急降下の動きなどを検出することができる。そのような動きは、様々なコマンドに対応し、ゲームの中のアクションに移されるようになされていてもよい。
【００１１】
ユーザによるゲームコントローラ本体の操作を検出し追跡することによって、多くの違ったタイプのゲームやシミュレーションなどが実現できる。例えば、刀やライトセーバーで闘ったり、物の形をたどるために棒を使ったり、各種のスポーツイベントに参加したり、画面上での闘いやその他の遭遇戦等を行うことができる。
【００１２】
図１を参照する。本発明の一実施形態にしたがって作動するように構成されたシステム１００が図示されている。図示のように、システム１００はコンピュータエンタテインメントコンソール１０２を含み、コンピュータエンタテインメントコンソール１０２は、ビデオゲームや他のシミュレーションの画像を表示するためのテレビまたは他のビデオディスプレイ１０４に接続される。ゲームまたは他のシミュレーションは、コンソール１０２に挿入されたＤＶＤ、ＣＤ，フラッシュメモリ、ＵＳＢメモリ、または他の記録媒体１０６に保存できる。ユーザすなわちプレイヤ１０８は、ゲームコントローラ１１０を操作してビデオゲームまたは他のシミュレーションを制御する。図２に示されるように、ゲームコントローラ１１０は、ゲームコントローラ１１０の位置、動き、方向、または方向の変化に応じて信号を生成する慣性センサ１１２を備える。この慣性センサ１１２に加えて、ゲームコントローラ１１０は、既知の制御入力装置、例えば、ジョイスティック１１１、ボタン１１３、Ｒ１、Ｌ１などを備えていてもよい。
【００１３】
操作中、ユーザ１０８はコントローラ１１０を物理的に動かす。例えば、コントローラ１１０は、ユーザ１０８によって、上下動、水平動、ねじり、ロール、振動、急な動き、または急降下など、どの方向に動かされてもよい。以下に説明する態様で慣性センサ１１２からの信号を分析することを通して、コントローラ１１０自体のこれらの動きが検出され撮像されてもよい。
【００１４】
再び図１に戻り、システム１００は、カメラまたはデジタルカメラのような他のビデオ撮像装置１１４を任意に具備してもよく、それらはコントローラ１１０がカメラ視野角１１６内に入るように配置される。画像撮像装置１１４からの画像の分析は、慣性センサ１１２からのデータの分析と併せて利用される。図２に示されるように、コントローラには、発光ダイオード（ＬＥＤ）２０２、２０４、２０６、２０８などの光源が任意に設けられ、画像分析による追跡を容易にするようになされてもよい。コントローラ１１０を追跡することを目的としたビデオ画像分析は、例えば、米国特許出願第11/382,037号の”SCHEME FOR DETECTING AND TRACKING USER MANIPULATION OF A GAME CONTROLLER BODY”（米国特許出願公報第2006-027086号として公開されている）に開示されており、その開示内容は参照により本明細書に援用される。コンソール１０２は、マイクロホン配列１１８などの音響トランスデューサ（変換器）を備えてもよい。コントローラ１１０はさらに、音響信号発生器２１０（例えば、図２に示されるようなスピーカ）も備え、コントローラ１１０の音響追跡を容易にする音源を、マイクロホン配列１１８や適切な音響信号処理に提供するようにしてもよい。そのような音響信号処理は、たとえば、米国特許出願第11/381,724号（米国特許出願公報第2006-0233389号として公開されている）に開示されており、その開示内容は、参照により本明細書に援用される。
【００１５】
本発明のある実施の形態において、慣性センサ１１２からの信号は、コントローラ１１０に対する位置データおよび方向データの生成に用いられてもよい。そのようなデータは、コントローラ１１０の動きに関する多くの物理的側面、例えば、コントローラ１１０の場所の遠隔測定（テレメトリ）だけではなく、任意の軸方向の加速度や速度、傾斜、ピッチ、ヨー、ロールなどの計算に用いることができる。本明細書において、遠隔測定とは、一般に、対象の情報を遠隔で計測し、システムまたはシステムのデザイナやオペレータに報告することを言う。
【００１６】
コントローラ１１０の動きを検出し追跡できることにより、コントローラ１１０について予め決められた動きが行われているか否かがわかる。すなわち、コントローラ１１０の特定の動きのパターンまたはジェスチャを、ゲームまたは他のシミュレーションの入力コマンドとして予め決めて用いることができる。例えば、コントローラ１１０を下方に急降下させるジェスチャを一つのコマンドとして定義し、捻るジェスチャを別のコマンドとして定義し、振動させるジェスチャをさらに別のコマンドとして定義できる。このように、ユーザ１０８が物理的にコントローラ１１０を動かす態様を、ゲームを制御する別の入力として使用してもよく、より刺激的で楽しい体験をユーザに与えることができる。
【００１７】
例示として、またいかなる限定を行うことなく、慣性センサ１１２は加速度計であってよい。図３Ａに、フレーム３０４に４点で、例えばスプリング３０６、３０８、３１０、および３１２によって伸縮自在に取り付けられた単一質量３０２の形態での加速度計３００を示す。ピッチ軸およびロール軸（それぞれＸ軸、Ｙ軸で表示）はフレームを横断する面内にある。ヨー軸Ｚは、ピッチ軸Ｘとロール軸Ｙを含む平面に対して垂直に置かれている。フレーム３０４は適切な形態でコントローラ１１０に取り付けられている。フレーム３０４（およびゲームコントローラ１１０）の加速および／または回転に応じて、質量３０２はフレーム３０４に対して相対的に変位する。スプリング３０６、３０８、３１０、３１２は、並進加速度および／または回転加速度の量と方向、および／またはピッチ、ロール、ヨーの角度に応じて伸縮する。質量３０２の変位、および／またはスプリング３０６、３０８、３１０、３１２の伸縮量が、例えば適切なセンサ３１４、３１６、３１８、３２０を用いて計測され、公知のまたは確定可能な方法でピッチおよび／またはロールの加速度量に応じた信号に変換される。
【００１８】
質量の位置および／またはそれに働く力を追跡する方法には、抵抗歪みゲージ、音響センサ、磁気センサ、ホール素子、圧電素子、容量センサなど、多くの異なった方法がある。本発明の実施形態では、任意の数のセンサ、または任意のタイプ、任意の組み合わせのセンサを備えてもよい。例示として、またいかなる限定も行うことなく、センサ３１４、３１６、３１８、３２０は質量３２０の上方に配置されたギャップ封鎖電極とすることができる。質量と各電極センサ間の静電容量は、各電極に対する質量の位置変化に応じて変わることがある。各電極は、電極に対しての質量３０２の静電容量に関する信号（したがって質量の接近に関する信号）を生成する回路に接続されてもよい。あるいは、スプリング３０６、３０８、３１０、３１２は、伸縮に関連した信号を生成する抵抗歪みゲージを備えてもよい。さらにセンサ３１４、３１６、３１８、３２０は、静電容量センシングと歪みゲージセンシングの両方の組み合わせを実装してもよい。
【００１９】
いくつかの実施形態では、フレーム３０４はコントローラ１１０に取り付けられるジンバルであってもよく、これによって、加速度計３００はピッチ軸、ロール軸、および／またはヨー軸に対して一定の方向を保つことができる。このような態様にすると、実空間座標軸に対するコントローラ軸の傾きを考慮することなく、コントローラのＸ軸、Ｙ軸、Ｚ軸を実空間における対応軸に直接にマッピングすることが可能になる。
【００２０】
図３Ｂ〜３Ｄは、加速度および／または回転の異なる条件下におけるばね３０６、３０８、３１０、３１２に対する異なる伸長と圧縮の例を示す。具体的には、図３Ｂは、フレーム３０４がＹ軸に関して回転したときの状況を示す。質量３０２に作用する重力のために、ばね３０６、３１０が伸長し、質量３０２はセンサ３１４、３１８に近づき、センサ３１６、３２０から遠ざかる。Ｙ（ロール）軸に関する逆の回転は、同様にばね３０６、３１０を伸長させるが、質量をセンサ３１６、３２０に近づかせ、センサ３１４、３１８から遠ざける。同様に、Ｘ（ピッチ）軸に関する回転は、ばね３０８、３１２を伸長させ、回転の方向によっては、質力をセンサ３１４、３１６に近づかせ、センサ３１８、３２０から遠ざける。
【００２１】
図３Ｃは、フレーム３０４が鋭く下方に（矢印で示すように）加速されるが、レベルは維持された状況を示す。この状況において、４つのばね３０６、３０８、３１０、３１２すべてが伸長し、質量は４つのセンサ３１４、３１６、３１８、３２０すべてに近づく。図３Ｄにおいて、フレーム３０４が左に（矢印で示すように）加速されるがレベルは維持される。この状況では、ばね３０６、３０８および３１２は伸長するが、ばね３１０は圧縮される。質量３０２はセンサ３１４、３１８から離れ、センサ３１６、３２０に近づくように動く。図３Ｄはフレーム３０４にＺ（ヨー）軸に関する角加速度が与えられた状態を示し、この角加速度により、４つのばね３０６、３０８、３１０、３１２すべてが伸長し、質力３０２が４つのセンサ３１４、３１６、３１８、３２０から離れるように動く。図３Ｂ〜３Ｅからわかるように、フレーム３０４の異なる動きおよび／または方向によって、信号の特定の組み合わせが生成され、その信号はフレーム３０４（およびコントローラ１１０）の方向と動きを判定するために分析される。
【００２２】
質量３０２に作用する外的な力がないとき、質量３０２のＺ軸に沿った静止位置からの変位は、Ｚ軸に沿った加速度の大きさにおおよそ比例する。検出器３１４、３１６、３１８、３２０は、質量３０２の移動に比例し、したがって、フレーム３０４（およびコントローラ１１０）のＺ軸に沿った加速度に比例する信号を生成する。同様の方法で、センサからの信号は、Ｘ軸およびＹ軸に沿った加速度を導き出すために用いられる。重力が質量３０２に作用し、センサ３１４、３１６、３１８、３２０が非ゼロの信号を生成することがあることに留意する。たとえば、静止状態において、ジョイスティックコントローラにピッチもロールも適用されていないとき、Ｚ軸が（重力によって決定される）垂直軸に割り当てられてもよい。質量３０２は、重力によって、重力のないと仮定した場合に想定される位置から変位する。結果として、変位センサは非ゼロ信号Ｖ０を生成する。これをここでは「ゼロ点」加速度信号と呼ぶ。センサ３１４、３１６、３１８、３２０からの生の信号を分析する前に、加速度信号Ｖからゼロ点加速度信号Ｖ０を差し引く。
【００２３】
フレーム３０４（およびコントローラ１１０）がピッチおよびロールに関して同じ方位にとどまるなら、ゼロ点加速度信号Ｖ０は定数である。しかし、ゼロ点加速度信号Ｖ０はピッチおよびロール軸に関する回転量に依存する。本発明の実施の形態では、ゼロ点加速度信号Ｖ０に対するピッチとロールの影響を考慮に入れる。たとえば、図４は、チューブ軸Ｚに沿ってチューブ４０４内で質量４０２の動きが制約される単一軸加速度計４００の状態を示す。ばね４０６が質量４０２をチューブ４０４の端部のキャップに接続する。センサ４０８は、たとえば、上述の静電容量センサである。もしチューブ軸Ｚが、チューブ４０４のピッチおよびロールのゆえに垂直方向Ｚ’に関して角度θだけ（透視図で示すように）傾くと、「回転」ゼロ点加速度信号Ｖ０’がＶ０とθに関して次式のように予測される。
Ｖ０’＝Ｖ０ｃｏｓθ
θ＝９０度という極端な例では、Ｖ０’＝０であることに留意する。
【００２４】
角度θは一般にはピッチとロールの角度に依存する。これらの角度は個々のセンサからの信号によって判定される。チューブ軸Ｚに沿った方向の単位ベクトルｚは、既知の初期方位（たとえば、加速度計の軸が垂直軸に沿った方向の単位ベクトルｚ’に割り当てられた初期方位）に対するピッチとロールの絶対的な値から構成される。初期方位は、加速度計４００からの安定した信号を生成するジョイスティックコントローラの方位であれば任意の方向でよいことに留意する。単位ベクトルｚとｚ’の間のドット積は、二つのベクトル間の角度θのコサインで与えられる。このドット積にゼロ点信号Ｖ０を乗じて好ましい補正ファクタを供給してもよい。補正ファクタはセンサ４０８から得られた加速度信号から差し引きされる。
【００２５】
本センサの実施の形態において、いろいろなタイプの慣性センサデバイスを用いて６つの自由度（たとえば、Ｘ、Ｙ、Ｚの並進とＸ、Ｙ、Ｚ軸に関する回転）の情報を供給することができる。６つの自由度に関する情報を供給する好適な慣性センサの例には、図３Ａに示したタイプの加速度計、一つまたは複数の単一軸加速度計、機械的なジャイロスコープ、リングレーザジャイロスコープ、あるいはこれらの二つ以上の組み合わせが含まれる。
【００２６】
独創的な方法にしたがって、センサからの信号を分析してビデオゲームプレイ中のコントローラの動きおよび／または方位を判定してもよい。そのような方法は、プロセッサ読み取り可能な記録媒体に格納され、デジタルプロセッサ上で実行される、プロセッサ実行可能なプログラムコード列として実装することができる。たとえば、図５Ａに示すように、ビデオゲームシステム１００は、コンソール１０２上のプロセッサ５０２を含む。プロセッサ５０２は、たとえばビデオゲームコンソールで一般に使われるタイプのマイクロプロセッサのような、任意の好適なデジタルプロセッサユニットであってもよい。プロセッサは、プロセッサ読み取り可能なインストラクションの実行を通して慣性分析部５０４を実装する。これらのインストラクションの一部は、メモリ５０６に格納される。あるいは、慣性分析部５０４は、ハードウエアたとえば特定用途向け集積回路（ＡＳＩＣ）で実装してもよい。そのような分析部のハードウエアはコントローラ１１０またはコンソール１０２に設けてもよく、あるいは、他の場所にリモートに設けてもよい。ハードウエア実装において、分析部５０４はプログラマブルであり、プロセッサ５０２、または、たとえばＵＳＢケーブル、ワイヤレスコネクションあるいはネットワークで接続されたリモートに設置された他のソースからの外部信号に応答してもよい。
【００２７】
慣性分析部５０４は、慣性センサ１１２によって生成された信号を分析し、コントローラ１１０の位置および／または方向の情報を利用するインストラクションを含むか、実装する。たとえば、図５Ｂのフローダイアグラム５１０に示すように、ブロック５１２に示すように慣性センサ１１２によって信号が生成される。ブロック５１４に示すように、慣性センサ信号を分析してコントローラ１１０の位置および／または方向に関する情報を決定する。ブロック５１６に示すように、位置および／または方向の情報はシステム１００でビデオゲームプレイ中に利用される。
【００２８】
ある実施の形態において、ゲームプレイ中のユーザ１０８のジェスチャのカタログを作り、ジェスチャを認識する際、位置情報および／または方向情報を用いてもよい。図５Ｃのフロー図５２０に示されるように、コントローラ１１０の経路は、ブロック５２２で示される通り、位置情報および／または方向情報を用いて追跡することができる。例示として、またいかなる限定を与えることなく、この経路には、いくつかの座標系に対するコントローラの質量中心位置を示す点セットが含まれてもよい。各位置ポイントは、一つ以上の座標、例えば、デカルト座標系におけるＸ，Ｙ，Ｚ座標で表されてもよい。経路上の各点が時刻と関連付けられていてもよく、これによって、経路の形状と経路に沿ったコントローラの進行の両方を監視することができる。さらに、前記セットの各点は、コントローラの方向を表すデータ、例えば、コントローラの質量中心回りの一つ以上の回転角などと関連付けられてもよい。さらに、経路上の各点は、コントローラの質量中心の速度および加速度、質量中心回りのコントローラの角回転率および角加速度率の各値と関連付けられてもよい。
【００２９】
ブロック５２４に示されるように、追跡経路は、プレイ中のビデオゲームの状況に関連した既知のジェスチャおよび／または事前に記録されているジェスチャ５０８に対応する一つ以上の記憶された経路と比較されてもよい。分析部５０４は、ユーザを認識するか、または音声認証ジェスチャなどを処理するように構成されていてもよい。例えば、ユーザに特有のジェスチャを通して、分析部５０４によりユーザを特定してもよい。そのような特有のジェスチャは、メモリ５０６に保存されている事前に記録されたジェスチャ５０８に記録されて含められる。記録処理においては、任意に、ジェスチャの記録中に生成される音を保存してもよい。被計測環境がマルチチャネルの分析部でサンプリングされて処理される。プロセッサは、ジェスチャモデルを参照し、音声パターンまたは音響パターンに基づいて、高精度かつ高能率でユーザまたは物体を決定、認証、および／または特定できる。
【００３０】
図５Ａに示されるように、ジェスチャはメモリ５０６に保存される。ジェスチャの例として、ボールのような物を投げる、バットやゴルフクラブのようなものを振る、手押しポンプを押す、ドアまたは窓を開閉する、ハンドルまたは他の車両コントロールを回す、格闘家がパンチなどを出す、研磨（sanding）動作、ワックス掛けとふき取り、家のペンキ塗り、振動、おしゃべり、ロール、フットボール投げ、ノブを回す動き、３Ｄマウスの動き、スクロール、既知の輪郭を持った動き、記録可能なあらゆる動き、あらゆるベクトルに沿った前後の動き、すなわち空間内の任意の方向に沿ったタイヤの空気入れ、小道に沿った移動、正確な停止時間と開始時間を持った動き、ノイズフロア内やスプライン内などで記録、追跡および繰り返し可能なユーザ操作に基づく任意の時刻、などがあるが、これらに限定されない。これらのジェスチャはそれぞれ、経路データから事前に記録し、時間基準のモデルとして保存できる。経路が安定状態から外れると、その経路が除去処理によって保存ジェスチャと比較することができるという安定状態についての仮定から、経路と保存ジェスチャとの比較がスタートする。ブロック５２６において一致しなければ、分析部５０４はブロック５２２に戻ってコントローラ１１０の経路追跡を継続できる。経路（またはその一部分）と保存ジェスチャとの間で十分な一致があれば、５２８に示されるように、システム１００の状態、たとえばゲームの状態を変えることができる。システムまたはゲームの状態の変化は、これらに限定されないが、中断、コントロール信号の送信、変数の変化などを含んでもよい。
【００３１】
これがどのようにして起こるか、例を一つ示す。コントローラ１１０が経路の安定状態から外れたと判断すると、分析部５０４はコントローラ１１０の動きを追跡する。コントローラ１１０の経路が保存されているジェスチャモデル５０８に定義される経路と合致している間は、これらのジェスチャは「ヒット」であり得る。コントローラ１１０の経路が、いずれかのジェスチャモデル５０８から外れると（耐ノイズ設定内で）、そのジェスチャモデルはヒットリストから除去してもよい。各ジェスチャ参照モデルは、ジェスチャが記録される時間軸を備える。分析部５０２は、適切な時間指標で、コントローラの経路データを保存ジェスチャ５０８と比較する。安定状態条件が発生するとクロックをリセットする。安定状態から外れる（すなわち、ノイズしきい値外で動きが追跡される）と、ヒットリストには、可能性のあるジェスチャモデルすべてが入ってくる。クロックがスタートして、コントローラの動きがヒットリストと比較される。再び、時系列で見ると比較はたやすい。ヒットリスト内のいずれかのジェスチャがジェスチャの端に到達すると、それはヒットである。
【００３２】
ある実施形態では、分析部５０４は、特定のイベントが発生する時間をゲームプログラムに通知してもよい。そのようなイベントの例には下記のものが含まれる。
【００３３】
・加速度０点への到達で中断（Ｘ軸、Ｙ軸、および／またはＺ軸）
あるゲーム状況において、コントローラの加速度が変曲点で変化すると、分析部５０４は、ゲームプログラム内のルーチンに通知するかまたはルーチンを中断できる。例えば、ユーザ１０８は、コントローラ１１０を使ってフットボールシミュレーションゲーム内のクォータバックを表すゲームアバターを制御できる。分析部５０４は、慣性センサ１１２からの信号から生成される経路を介して（フットボールを表す）コントローラを追跡してもよい。コントローラ１１０のある特定の加速度変化は、フットボールが投げられたことを信号発信してもよい。このときに、分析部はプログラム内の別のルーチン（例えば、物理シミュレーションパッケージ）をトリガして、投てき点におけるコントローラの位置、速度および／または方向に基づき、フットボールの軌道をシミュレーションできる。
【００３４】
・新しいジェスチャの認識で中断
【００３５】
また、分析部５０４は一つ以上の入力で構成されてもよい。そのような入力の例を以下に示すが、これらに限定されない。
【００３６】
・ノイズレベルの設定（Ｘ軸、Ｙ軸またはＺ軸）
ノイズレベルは、ゲーム中のユーザの手の震えを分析するときの基準許容誤差であってもよい。
【００３７】
・サンプリングレート設定
本明細書において、サンプリングレートとは、分析部５０２による慣性センサからの信号のサンプリング頻度を言う。サンプリングレートは信号のオーバーサンプリングかまたは平均化に設定されてもよい。
【００３８】
・ギアリング設定
本明細書において、ギアリングとは、概してゲーム内で起こる動きに対するコントローラの動きの比を言う。ビデオゲーム制御の文脈におけるこのような「ギアリング」の例は、2006年5月7日付米国特許出願第11/382,040号（米国特許出願公報第20060252477号として公開）に開示されており、その開示内容は参照により本明細書に援用される。
【００３９】
・マッピングチェーンの設定
本明細書において、マッピングチェーンとはジェスチャモデルのマップを言う。ジェスチャモデルマップは特定の入力チャネルに対して（例えば、慣性センサ信号だけから生成される経路データに対して）、またはミキサ装置に形成されるハイブリッドチャネルに対して作成される。慣性分析部５０４と同様の２台以上の異なった分析部によって、３つの入力チャネルが供給される。具体的には、これらには、ここで述べた慣性分析部５０４、例えばその開示内容が参照により本明細書に援用される米国特許出願第11/382,034号の”SCHEME FOR DETECTING AND TRACKING USER MANIPULATION OF A GAME CONTROLLER BODY”（米国特許出願公報第20060256081号として公開）に開示されたビデオ分析部、および、例えばその開示内容が参照により本明細書に援用される米国特許出願第11/381,721号（米国特許出願公報第20060239471号として公開）に開示される音響分析部が含まれてもよい。これら分析部はマッピングチェーンを用いて構成することができる。マッピングチェーンは、分析部やミキサに対する設定ができるように、ゲームプレイ中にゲームによって交換することができる。
【００４０】
再び図５Ａ、ブロック５０２に戻る。当業者であれば、慣性センサ１１２からの信号を生成するには多くの方法があることは理解するであろう。とりわけ２〜３の例について図３Ａ〜３Ｅを参照して説明する。ブロック５０４を参照して、ブロック５０２で生成されるセンサ信号を分析しコントローラ１１０の位置および／または方向に関係する情報を得るには多くの方法がある。例示として、またいかなる限定を行うことなく、位置および／または方向に関係する情報には、個別にまたは任意の組み合わせて以下のパラメータに関する情報が含まれるが、これらに限定されない。
【００４１】
・コントローラの方向
コントローラ１１０の方向は、ある基準方向に対するピッチ、ロール、またはヨー角（例えばラジアン）で表されてもよい。コントローラ方向の変化率（例えば、角速度または角加速度）は、位置情報および／または方向情報に含まれていてもよい。慣性センサ１１２がジャイロスコープセンサを含む場合、コントローラの方向情報は、ピッチ角、ロール角、またはヨー角に比例した一つ以上の出力値の形で直接求めることができる。
【００４２】
・コントローラの位置（例えば、ある基準フレームにおけるコントローラ１１０のデカルト座標Ｘ、Ｙ，Ｚ）
・コントローラのＸ軸速度、たとえば、コントローラ１１０のＸ軸に沿った位置の時間変化率
・コントローラのＹ軸速度、たとえば、コントローラ１１０のＹ軸に沿った位置の時間変化率
・コントローラのＺ軸速度、たとえば、コントローラ１１０のＺ軸に沿った位置の時間変化率
・コントローラのＸ軸加速度、たとえばＸ軸速度の時間変化率
・コントローラのＹ軸加速度、たとえばＹ軸速度の時間変化率
・コントローラのＺ軸加速度、たとえばＺ軸速度の時間変化率
【００４３】
位置、速度および加速度に関して、位置情報および／または方向情報がデカルト以外の座標系で表されてもよいことに注意する。例えば、円柱座標系または球座標系を位置、速度、加速度のために使用してもよい。Ｘ軸、Ｙ軸、Ｚ軸に対する加速度情報を、例えば図３Ａ〜３Ｅを参照して説明したような加速度計タイプのセンサから直接に求めてもよい。Ｘ速度、Ｙ速度、Ｚ速度における変化を決定するために、ある初期時刻からの時間に対してＸ加速度、Ｙ加速度、Ｚ加速度を積分してもよい。これらの速度は、初期時刻における既知の値であるＸ速度、Ｙ速度、およびＺ速度に速度変化を加えることで算出してもよい。コントローラのＸ変位、Ｙ変位およびＺ変位を決定するために、時間に対してＸ速度、Ｙ速度およびＺ速度を積分してもよい。Ｘ位置、Ｙ位置およびＺ位置は、初期時刻における既知のＸ位置、Ｙ位置およびＺ位置に変位を加えることで決定してもよい。
【００４４】
・安定状態 Ｙ／Ｎ
この特殊な情報はコントローラが安定状態にあるかどうかを示し、いずれの位置として定義することができ、また変化もする。好適な実施例では、安定状態にある位置とは、コントローラが、ユーザの腰とほぼ同じ高さにあっておおよそ水平方向に保持されているような位置としてもよい。
【００４５】
・前回の安定状態からの時間
「前回の安定状態からの時間」は、概して、（上述したような）安定状態が最後に検出された以降に経過した期間の長さに関係するデータを指す。その時間の決定は、前に注目したように、実時間、処理サイクル、またはサンプリング周期で計算されてもよい。「前回の安定状態からの時間」のデータ時間は、ゲーム環境におけるキャラクタまたは物体のマッピングの正確さを確保するために、初期点に関するコントローラの追跡をリセットすることに対して重要である。このデータはまた、ゲーム環境でその後に（排他的にまたは包括的に）実行される可能性のある利用可能なアクションおよび／またはジェスチャの決定に対しても重要である。
【００４６】
・認識された最後のジェスチャ
「認識された最後のジェスチャ」とは、概して、（ハードウェアまたはソフトウェアで実装可能な）ジェスチャ認識部５０５によって認識された最後のジェスチャを指す。後に認識される可能性のあるジェスチャまたはゲーム環境で起こる他のアクションに前回のジェスチャが関係し得るという事実に対して、認識された最後のジェスチャの特定は重要である。
【００４７】
・認識された最後のジェスチャ時間
【００４８】
上記の出力は、ゲームプログラムまたはソフトウェアでいつでもサンプリングできる。
【００４９】
本発明の好ましい実施の形態によれば、コントローラ１１０で作られたジェスチャは、発明の方法にしたがって、カタログに入れられ、および／または、認識される。図５Ｄは、ジェスチャを検出し、それをカタログ作成と認識のために準備する方法５３０の一例を示すフローダイアグラムである。図５Ｄに示すように、慣性センサ１１２のようなセンサ、ビデオキャプチャデバイス１１４、またはイメージマイクロホンアレイ１１８（あるいはこれらの二つ以上の組み合わせ）からの入力データは、符号５３２で示すようにローパスフィルタされる。特に、当該入力データを約５０％のナイキスト周波数でローパスフィルタしてもよい。符号５３４において、コントローラ１１０のエネルギーＥは次のように計算することができる。
Ｅ＝（１−Δｔ）Ｅ０＋Δｔ・Ｄｏｔ（Ｓ−Ｂ，Ｓ−Ｂ）
ここで、Ｓは現在のサンプルベクトルであり、Ｂは基準ベクトルである。
Δｔは、現在のフレームのタイムスタンプと以前のフレームのタイムスタンプの間の差。
Ｅ０は、最後のフレームからのエネルギー。
Ｄｏｔ（Ｓ−Ｂ，Ｓ−Ｂ）は、ベクトル差Ｓ−Ｂとそれ自身の間のドット積である。
【００５０】
一例として、一般性を損なうことなく、サンプルベクトルＳと基準ベクトルＢの成分は、コントローラ１１０の動きのＸ、Ｙ、Ｚ成分とヨー量（Ｚ軸に関する回転）を含んでもよい。さらに、サンプルベクトルＳと基準ベクトルＢの成分は、重力ベクトルのＸ、Ｙ、Ｚ成分とヨー成分を含んでもよい。重力ベクトルは、コントローラ１１０の参照フレームに関して重力の方向を示す。サンプルベクトルＳと基準ベクトルＢのＸ、Ｙ、Ｚ、およびヨー成分は、コントローラ１１０の位置、速度、加速度値である。これらの値は、たとえば、慣性センサ１１２、イメージセンサ１１４、マイクロフォンアレイ１１８、あるいはこれらの二つ以上の組み合わせによって生成される信号から取得される。
【００５１】
静的エネルギー閾値は、試行錯誤によって調整される。コントローラ１１０のエネルギーがあらかじめ定められたある静的エネルギー閾値以下であるならば、符号５３６および５３８で示すように基準ベクトルが更新される。特に、基準ベクトルＢの値は次式にしたがって新しい値に更新される。
Ｂ＝（１−α）・Ｂ０＋α＊Ｓ
ここで、Ｂ０は以前のフレームからの基準ベクトルを表し、αは定数または変数の調整パラメータである。調整パラメータαを変えることで、ジェスチャの認識が終わったならば、基準値をより速くもとに戻すことができる。
【００５２】
サンプルベクトルＳは、符号５４０に示すように新しい基準に合わせるために調整される。特に、サンプルベクトルＳの新しい値は次式で与えられる。
Ｓ＝Ｓ−Ｂ
【００５３】
基準値を更新する際、ユーザ１０８が、たとえば、椅子に座ったり、もたれかかったりした結果、自分の静止位置を変えたことで、コントローラ１１０の方向に変化があったことを考慮に入れる。
【００５４】
入力データの局所分散（local variance；ＬＶ）は符号５４２で示すように所定数の分散サンプル（variance sample；ＶＳ）にわたって計算される。
ＬＶ＝（ＶＳ・ΣＳ２＋（ΣＳ）２）／ＶＳ２
【００５５】
局所分散ＬＶは、たとえば５サンプルのスライディングウインドウにわたって取られた分散であってもよい。局所分散はジェスチャの記録の開始と終了のために使うことができる。たとえば、平均局所分散のスカラ値があらかじめ定められたジェスチャ閾値よりも大きいならば、符号５４４に示すようにサンプルをジェスチャとして記録することを開始する。いったん平均局所分散ＬＶがジェスチャ閾値よりも低く下がったならば、符号５４６に示すようにサンプルの記録を中止する。実施の形態によっては、異なるジェスチャ閾値を記録の開始と終了のために用いてもよい。
【００５６】
記録を中止した後、符号５４８に示すように、記録されたジェスチャの全分散（total variance）をジェスチャの多くのサンプル（ＧＳ）にわたって計算する。特に、全分散ＴＶは次式にしたがって計算される。
ＴＶ＝（ＧＳ・ΣＳ２＋（ΣＳ）２）／ＧＳ２
上記の式において、合計はジェスチャのサンプルＧＳにわたって取られる。
【００５７】
一般的に、各サンプルは２以上の成分で形成されている。たとえば、コントローラの動きの各自由度に対して一つの成分である。全分散ＴＶは、個々の分散成分の集合（サンプルＳの各成分に対する分散成分について一つ）に分解することができる。符号５５０に示すように、全分散ＴＶのスカラ成分はランクづけされ、パッドの軸が最大動きから最小動きへ順序づけされる。そのようなランクづけは、一つのジェスチャの間の異なる期間で異ならせてもよい。
【００５８】
いったんジェスチャが記録されると、そのジェスチャはカタログに入れられ、符号５５２で示すように他のジェスチャに対する比較に使われる。あるいは、記録されたジェスチャは、符号５５４で示すようにジェスチャ認識のために、蓄積されたジェスチャのカタログと比較される。ジェスチャ認識の一例を、図５Ｅを参照して以下説明する。
【００５９】
図５Ｅは、本発明の実施の形態に係るジェスチャ認識の方法５６０を示すフローダイアグラムである。入力されたジェスチャＩＧはジェスチャカタログにおける一つ以上のカタログジェスチャＣＧのそれぞれと比較される。あるいは、入力されたジェスチャＩＧは、ジェスチャカタログにおけるあらかじめ定められたカタログジェスチャＣＧの部分集合に対してのみ比較されてもよい。カタログジェスチャＣＧの部分集合をゲームロジックによって決定してもよい。ある実施の形態では、ユーザが生成したジェスチャとカタログ化されたジェスチャの間の重複を判定し、互いに近すぎるジェスチャにフラグ付けをしてもよい。そのようなジェスチャにフラグ付けをすることにより、あるジェスチャを他のジェスチャと間違うことを避けることができる。
【００６０】
図５Ｅに示すように、スケールＳが符号５６２に示すように計算される。
Ｓ＝ＣＧＳＣ／ＩＧＳＣ
ここでＣＧＳＣはカタログジェスチャにおけるサンプルカウントを示し、ＩＧＳＣは入力されたジェスチャＩＧに対するサンプルカウントを示す。
【００６１】
このスケールは、入力されたジェスチャＩＧよりも著しく長いまたは著しく短いカタログジェスチャを取り除くために使われる。たとえば、特定のカタログジェスチャＣＧに対するスケールＳが低い方の閾値（たとえば０．５）よりも小さいか、高い方の閾値１．５よりも大きいなら、このカタログジェスチャはスキップされ、ジェスチャ認識を次のカタログジェスチャに進める。
【００６２】
符号５６４に示すように、カタログジェスチャを上記のように計算されたスケールＳにより、たとえば線形補間によってスケールする。スケールＳは、ＣＧおよびＩＧにもとづき、どちらがより多くのサンプルをもつかに依存して調整される。ＣＧとＩＧの内、短い方、すなわちサンプルが少ない方がスケールアップされる。
【００６３】
符号５６６に示すように、入力されたジェスチャＩＧとカタログジェスチャＣＧ間の相関（ＣＯＲ）が次に計算される。たとえば、相関ＣＯＲは次のように計算される。
ＣＯＲ＝ＣＯＶ（ＣＧ，ＩＧ）／（σｃｇ・σｉｇ）
ここでσｃｇはカタログジェスチャＣＧのサンプルに対する標準偏差ベクトルを示し、σｉｇは入力ジェスチャＩＧのサンプルに対する標準偏差ベクトルを示す。さらに、ＣＯＶ（ＣＧ，ＩＧ）はカタログジェスチャＣＧと入力ジェスチャＩＧの共分散を表し、たとえば、次式で与えられる。
ＣＯＶ（ＣＧ，ＩＧ）＝（１／ｓｃ）・Σ（ＣＧｉ−μｃｇ）・（ＩＧｉ−μｉｇ）
ここで、μｃｇはカタログジェスチャのサンプルの平均値であり、μｉｇは入力ジェスチャのサンプルの平均値である。総和（sum）は、入力ジェスチャのすべてのサンプルにわたって取られる。
【００６４】
相関ＣＯＲにおけるスカラ値は、符号５６８に示すように、最終的なスカラ相関ＦＣＯＲを計算するための入力として使われる。ＦＣＯＲはＣＯＲの成分の重みづけ平均を用いて計算される。たとえば、上記のように計算された全分散ランクに対応する重みを用いて、ＣＯＲのＸ、Ｙ、Ｚおよびヨー成分のそれぞれに０、０．５、０．２５、０．０２５の重みを適用してもよい。各ランクに関連づけられる重みは、入力されたジェスチャＩＧの間、時間とともに変化してもよい。
【００６５】
符号５７０で示されるように、入力されたジェスチャＩＧの全分散ランクはカタログジェスチャに対する全分散ランクと比較される。異なる各分散ランクに対して、ペナルティがＦＣＯＲに適用される。
【００６６】
ＦＣＯＲの最大値は、符号５７２で示すように各カタログジェスチャの比較から決定される。符号５７４に示すように、もし最大ＦＣＯＲがあらかじめ定められた認識閾値ＲＴよりも大きいならば、ジェスチャは、そのＦＣＯＲに対応するカタログジェスチャとして認識される。
【００６７】
本発明の実施形態によれば、上述のタイプのジェスチャ認識方法は、図６に示すようなビデオゲームシステムに実装することができる。具体的には、ビデオゲームシステム６００は、プロセッサ６０１とメモリ６０２（例えば、ＲＡＭ、ＤＲＡＭ、ＲＯＭなど）を備える。ある実施の形態では、ビデオゲームシステム６００は、並列処理が実装されるのであれば、複数のプロセッサ６０１を備えてもよい。メモリ６０２はデータとゲームプログラムコード６０４を備え、上述のように構成された部分を備える。具体的には、メモリ６０２は上述したような保存コントローラ経路情報を含む慣性信号データ６０６を備えてもよい。メモリ６０２は、保存ジェスチャデータ６０８、例えば、ゲームプログラム６０４に関連した一つ以上のジェスチャを表すデータなどを含んでもよい。プログラムコード６０４は、たとえば、図５Ｄを参照して上述したようなジェスチャ検出、および／または、図５Ｅを参照して上述したようなジェスチャ認識を実装する命令を含んでもよい。
【００６８】
システム６００はさらに、入出力（Ｉ／Ｏ）装置６１１、電源（Ｐ／Ｓ）６１２、クロック（ＣＬＫ）６１３およびキャッシュ６１４などの公知のサポート機能６１０を備えてもよい。装置６００は任意に、プログラムおよび／またはデータ保存のためのディスクドライブ、ＣＤ−ＲＯＭドライブ、テープドライブなどの大容量記憶装置６１５を備えてもよい。コントローラは任意に、コントローラ６３０とユーザとの相互作用を容易にするために、ディスプレイ装置６１６とユーザインタフェース６１８を備えてもよい。ディスプレイ装置６１６は、テキスト、数値、グラフ記号や画像を表示する陰極線管（ＣＲＴ）、またはフラットパネルスクリーンの形であってもよい。ユーザインタフェース６１８は、キーボード、マウス、ジョイスティック、ライトペンや他の装置を備えてもよい。また、ユーザインタフェース６１８は分析対象の信号を直接取り込むために、マイクロホン、ビデオカメラ、またはその他の信号変換装置を備えてもよい。システム６００のプロセッサ６０１、メモリ６０２、および他の部品は図６に示すように、システムバス６２０を介して、互いに信号（例えばコード命令およびデータ）を交換してもよい。
【００６９】
マイクロホン配列６２２は、入出力装置６１１を介してシステム６００に接続されてもよい。マイクロホン配列は、約２〜約８個のマイクロホン、好ましくは約４個を、隣接のマイクロホンとは約４ｃｍ未満、好ましくは約１〜２ｃｍの距離離間して備えてもよい。好適には、配列６２２のマイクロホンは無指向性マイクロホンである。オプションの撮像装置６２３（例えばデジタルカメラ）は、入出力装置６１１を介して装置６００に接続されてもよい。カメラに機械的に接続された一つ以上の位置決めアクチュエータ６２５が、入出力装置６１１を介してプロセッサ６０１との間で信号を交換してもよい。
【００７０】
本明細書では、「入出力装置」という用語は、概してシステム６００との間および周辺装置との間でデータを送受信するプログラム、操作または装置のいずれかを指す。すべてのデータ送受信は、ある装置からの出力と別の装置への入力と考えてよい。周辺装置には、キーボードやマウスなどの入力専用装置、プリンタなどの出力専用装置に加えて、入力装置および出力装置の両方として作動できる書き込み可能ＣＤ-ＲＯＭなどの装置が含まれてもよい。「周辺装置」という言葉には、マウス、キーボード、プリンタ、モニタ、マイクロホン、ゲームコントローラ、カメラ、外部Ｚｉｐドライバまたはスキャナなどの外部装置に加えて、ＣＤ−ＲＯＭドライブ、ＣＤ−Ｒドライブまたは内部モデムなどの内部装置、または、フラッシュメモリ読み取りおよび書き込みハードドライブなどの他の周辺装置が含まれる。
【００７１】
本発明のある実施形態では、装置６００は、有線（例えばＵＳＢケーブル）または無線を通した入出力装置６１１を介してプロセッサに接続されたコントローラ６３０を具備したビデオゲーム装置であってもよい。ある実施の形態では、ジョイスティックコントローラ６３０はユーザの身体に装着可能であってもよい。コントローラ６３０は、ビデオゲームプレイ中に通常使用されるコントロール信号を提供するアナログジョイスティックコントロール６３１と既知のボタン６３３を具備してもよい。そのようなビデオゲームは、メモリ６０２、または大容量記憶装置６１５に関連する他のプロセッサ読み取り可能媒体に保存されるプログラム６０４からの、プロセッサ読み取り可能データおよび／または指令として実装されてもよい。いくつかの実施形態では、ミキサ６０５は、アナログジョイスティックコントロール６３１とボタン６３３から入力を受信できる。
【００７２】
ジョイスティックコントロール６３１は、通常、コントロールスティックを左右に動かすとＸ軸沿いの動きの信号を発信し、前後（上下）に動かすとＹ軸沿いの信号を発信するように構成されていてもよい。３次元の動き用に構成されたジョイスティックでは、スティックを左（反時計回り）または右（時計回り）に捻るとＺ軸沿いの動きの信号を発信してもよい。これらＸ，Ｙ，Ｚの３軸は、特に航空機に関する場合に、それぞれロール、ピッチ、ヨーと呼ばれることがある。
【００７３】
従来の特徴に加えて、コントローラ６３０は、上述のような一つ以上の慣性センサ６３２を備えてもよい。慣性センサ６３２は、慣性信号を介して位置情報および／または方向情報をプロセッサ６０１に提供できる。方向情報には、コントローラ６３０の傾き、ロールまたはヨーなどの角度情報が含まれていてもよい。例示として、慣性センサ６３２には、任意の数の加速度計、ジャイロスコープまたは傾斜センサ、またはこれらの任意の組み合わせが含まれていてもよい。好適な実施形態では、慣性センサ６３２には、傾斜およびロール軸に対するジョイスティックコントローラの方向を検知するように適応された傾斜センサ、ヨー軸沿いの加速度を検知するように適応された第１の加速度計、およびヨー軸に対する角加速度を検知するように適応された第２の加速度計を備える。加速度計は、例えば、一つ以上のばねで取り付けられた質量と一つ以上の方向に対する質量の変位を検知するセンサとを備えるＭＥＭＳ装置として実装されてもよい。質量の変位に依存するセンサからの信号は、ジョイスティックコントローラ６３０の加速度決定に用いられてもよい。そのような技術は、メモリ６０２に保存されプロセッサ６０１によって実行されるゲームプログラム６０４からの命令によって実現される。
【００７４】
例示として、慣性センサ６３２として適した加速度計は、例えば、ばねなどで、フレームに３〜４点で伸縮自在に接続された単一の質量であってもよい。ピッチ軸とロール軸は、ジョイスティックコントローラ６３０に設けられたフレームと交差する面に存在する。フレーム（およびジョイスティックコントローラ６３０）がピッチ軸、ロール軸の回りを回転するにつれて、質量が重力の影響下で変位し、ばねがピッチ角および／またはロール角に依存する態様で伸縮する。質量の変位が検知され、ピッチ量および／またはロール量に依存した信号に変換される。ヨー軸回りの角加速度またはヨー軸沿いの線形加速度は、ばねの伸縮または質量の動きの特徴的なパターンを生成し、それらのパターンは検知されて角加速度量または線形加速度量に応じた信号に変換される。そのような加速度計装置は、質量の動きおよびばねの伸縮力を追跡することによって、傾斜、ヨー軸回りのロール角加速度およびヨー軸沿いの線形加速度を計測できる。質量の位置および／またはそれに働く力を追跡する方法には多くの違った方法があり、それらの方法には、抵抗歪みゲージ、音響センサ、磁気センサ、ホール効果素子、圧電素子、容量センサなどが含まれる。ある実施の形態では、慣性センサ６３２をジョイスティックコントローラ６３０の「本体」に取り外し可能に搭載してもよい。取り外し可能な慣性センサは、たとえばＵＳＢ接続を介して、コントローラ６３０の電子部品と信号を交換することができる。取り外し可能な慣性センサは、多数の異なる接続のいずれかを用いてジョイスティックコントローラの本体と機械的に接続されてもよい。
【００７５】
また、ジョイスティックコントローラ６３０は、発光ダイオード（ＬＥＤ）などの光源６３４を一つ以上含んでもよい。光源６３４は、コントローラを他のコントローラと識別するために用いられる。例えば、一つ以上のＬＥＤがあれば、ＬＥＤのパターンコードをぱっと光らせたり保持することで識別できる。例示として、ジョイスティックコントローラ６３０上に５個のＬＥＤが直線または２次元模様で設けることができる。ＬＥＤを直線状に配列することが好ましいが、他の方法として、四角形またはアーチ状に配置して、撮像装置６２３で得られたＬＥＤパターン画像の分析時に、ＬＥＤ配列の画面の決定を容易にするようになされてもよい。さらに、ＬＥＤパターンコードは、ゲームプレイ中のジョイスティックコントローラ６３０の位置決定にも使用できる。例えば、ＬＥＤは、コントローラの傾斜、ヨーおよびロールの特定を助けることができる。この検出パターンによって、例えば飛行機ゲームなどのゲームで、ユーザによりよい感情を提供できる。撮像装置６２３は、ジョイスティックコントローラ６３０と光源６３４を含む像を撮影してもよい。そのような画像を分析すると、ジョイスティックコントローラの位置および／または方向が決定できる。そのような分析は、メモリ６０２に保存されプロセッサ６０１で実行されるプログラムコード命令６０４によって実現されてもよい。撮像装置６２３による光源６３４の撮像を容易にするために、光源６３４は、ジョイスティックコントローラ６３０の複数の異なる端部、例えば、前方と後方に配置してもよい（図６に影として示す）。そのような配置することによって、撮像装置６２３は、ユーザのジョイスティックコントローラ６３０の保持の仕方に応じたジョイスティックコントローラ６３０の種々の方向に対して、光源６３４の像を得ることができる。
【００７６】
さらに、光源６３４は、例えば、パルスコード、振幅変調または周波数変調フォーマットでテレメトリ信号をプロセッサ６０１に提供してもよい。そのようなテレメトリ信号は、いずれのジョイスティックボタンが押されているか、および／またはどれ位強くボタンが押されているかを表してもよい。テレメトリ信号は、例えばパルス符号化、パルス幅変調、周波数変調または光強度（振幅）変調などによって、光信号に符号化されてもよい。プロセッサ６０１は、光信号からテレメトリ信号を復号化し、復号化されたテレメトリ信号に応じてゲームコマンドを実行してもよい。テレメトリ信号は、撮像装置６２３で得られたジョイスティックコントローラ６３０の画像の分析から復号化されてもよい。または、プロセッサ６０１は、光源６３４からのテレメトリ信号受信専用の独立した光学センサを具備してもよい。コンピュータプログラムとのインタフェースにおける強度決定に併せてのＬＥＤの使用は、例えば、2006年5月4日出願の米国特許出願第11/429,414号の”USE OF COMPUTER IMAGE AND AUDIO PROCESSING IN DETERMINING AN INTENSITY AMOUNT WHEN INTERFACING WITH A COMPUTER PROGRAM”（米国特許出願公報第20060277571号として公開）、発明者Richard L. Marks et al.に開示されており、その開示内容は全体として、参照により本明細書に援用される。また、光源６３４を含む画像の分析は、テレメトリおよびジョイスティックコントローラ６３０の位置および／または方向の決定にも用いることができる。そのような技術は、メモリ６０２に保存されプロセッサ６０１によって実行されるプログラム６０４の命令によって実現されてもよい。
【００７７】
プロセッサ６０１は、撮像装置６２３で検出された光源６３４からの光信号、および／またはマイクロホン配列６２２によって検出された音響信号からの音源場所と音源特性情報と共に、慣性センサ６３２からの慣性信号を用いて、ここで記述したようなジェスチャの検出と認識と共に、コントローラ６３０および／またはユーザの場所および／または方向に関する情報を推測してもよい。例えば、「音響レーダ」の音源場所およびその特性は、マイクロホン配列６２２と共に用いられて、ジョイスティックコントローラの動きが（慣性センサ６３２および／または光源６３４を通して）独立に追跡されている間、移動音源を追跡する。音響レーダ選択において、較正済み聴取領域が実行時間中に選択されてもよい。較正済み聴取領域以外の音源から発生した音はフィルタされて除かれてもよい。較正済み聴取領域は、撮像装置６２３の焦点または視野にある音量に対応した聴取領域を含んでいてもよい。音響レーダの例は、米国特許出願第11/381,724号（米国特許出願公報第20060233389号として公開）に開示されており、その開示内容は参照により本明細書に援用される。コントロール信号をプロセッサ６０１に供給するための種々の形態を種々組み合わせたものも、本発明の実施形態と併せて用いられてもよい。そのような技術は、メモリ６０２に保存されプロセッサ６０１で実行されるプログラムコード命令６０４によって実現されてもよく、また、任意に、実行時間中は較正済み聴取領域を選択し、較正済み聴取領域以外の音源から発生した音はフィルタをかけて除くための一つ以上のプロセッサを指揮する一以上の指令を含んでもよい。較正済み聴取領域は、撮像装置６２３の焦点または視野にある音量に対応した聴取領域を含んでいてもよい。
【００７８】
プログラム６０４は任意に、マイクロホン配列６２２のマイクロホンM０〜MMから離散時間領域入力信号Ｘｍ（t）を生成し、聴取セクタを決定し、有限インパルス応答フィルタ係数を選択するセミブラインド（semi-blind）音源分離において聴取セクタを用いて、入力信号Ｘｍ(t)から異なる音源を分離する一つ以上のプロセッサを指揮する一以上の命令を含んでもよい。プログラム６０４には、基準マイクロホンＭ０からの入力信号Ｘ０（ｔ）以外の選択入力信号Ｘｍ（ｔ）に、一つ以上の非整数遅延（fractional delay）を適用する命令をさらに備えてもよい。マイクロホン配列からの離散時間領域出力信号ｙ（ｔ）の信号対雑音比を最適化するために、各非整数遅延が選択されてもよい。非整数遅延は、基準マイクロホンＭ０からの信号が、配列の他のマイクロホンからの信号に対して最初であるように選択されてもよい。プログラム６０４は、非整数遅延Δを、y(t+Δ) = x(t+Δ)*b0 + x(t-1+Δ)*b1 + x(t-2+Δ)*b2 +…+ x(t-N+Δ)bNとなるようにマイクロホン配列の出力信号ｙ（ｔ）に導入する命令を含んでもよい。ここで、Δは０〜±１である。そのような技術の例は、2006年5月4日出願の米国特許出願第11/381,729号"ULTRA SMALL MICROPHONE ARRAY"（米国特許出願公報第20070260340号として公開）、発明者Xiadong Maoに詳細に開示されており、その開示内容は参照により本明細書に援用される。
【００７９】
さらに、例えばスピーカ、ブザー、ホーンあるいはパイプなどのサウンドエミッタ６３６がジョイスティックコントローラ６３０に取り付けられてもよい。ある実施形態では、サウンドエミッタはジョイスティックコントローラ６３０の「本体」に脱着可能に取り付けられても良い。プログラムコード６０４によって、マイクロホン配列６２２で検出した音の場所が特定され特性が明らかになる「音響レーダ」の実施例では、サウンドエミッタ６３６が、マイクロホン配列６２２で検出され、プログラムコード６０４に用いられてゲームコントローラ６３０の位置を追跡する音響信号を提供してもよい。サウンドエミッタ６３６はさらに、ゲームコントローラ６３０からプロセッサ６０１へ、追加の「入力チャネル」を提供するように用いられてもよい。サウンドエミッタ６３６からの音響信号は、周期的にパルス化され、音響レーダが場所を追跡するためのビーコンを提供してもよい。
音響信号（パルス化されたものあるいはその他）は、可聴超音波であってもよい。音響レーダはユーザのゲームコントローラ６３０操作を追跡し、この場合、そのような操作の追跡には、ゲームコントローラ６３０の位置および方向に関する情報（例えば、ピッチ角、ロール角、ヨー角など）が含まれてもよい。前記パルスは、当業者が適用可能な適当なデューティサイクルで始動されてもよく、また、システムから調整されたコントロール信号に基づいて起動されてもよい。システム６００（プログラムコード６０４を介した）は、プロセッサ６０１に接続された複数のジョイスティックコントローラ６３０の中でコントロール信号の送信を整合し、複数のコントローラの追跡が可能なことを保証してもよい。
【００８０】
プログラム６０４は、実行されると、システム６００に、音源を含んだ事前較正済み聴取領域を選択させる一つ以上の命令を含んでもよい。そのような命令によって、音源が最初の領域内にあるか、またはその領域の特定の側にあるか否かを装置が判断するようになされていてもよい。音源が初期設定領域内に存在しない場合、命令は、実行時に、初期設定領域の特定の側にある別の領域を選択してもよい。別の領域は、最適値に最も近い入力信号の減衰によって特徴付けられてもよい。これらの命令は、実行されると、マイクロホン配列６２２からの入力信号の減衰と最適値への減衰を計算してもよい。命令は、実行されると、装置６００が、一つ以上の領域に対する入力信号の減衰値を決定し、減衰が最適値に最も近い領域を選択するようになされてもよい。そのような技術の例は、2006年5月4日出願の米国特許出願第11/381,725号の"METHOD AND APPARATUS FOR TARGETED SOUND DETECTION"（米国特許出願公報第20070025562号として公開）、発明者Xiadong Maoに開示されており、その開示内容は参照により本明細書に援用される。
【００８１】
慣性センサ６３２からの信号は追跡情報入力の一部を提供し、撮像装置６２３による一つ以上の光源６３４の追跡から生成された信号は追跡情報入力の別の部分を提供する。例示として、またいかなる限定を行うことなく、そのような「混合モード」の信号は、フットボールタイプのビデオゲームで用いられ、ここでは、クォータバックが頭を左に動かすフェイントをかけた後ボールを右に投げる。具体的には、コントローラ６３０を保持したゲームプレイヤは、頭を左に向け、フットボールでするように、コントローラを右に振って投げる動作をしながら声を出す。「音響レーダ」プログラムコードと併せて、マイクロホン配列６２２はユーザの声を追跡できる。撮像装置６２３は、ユーザの頭の動きや、または、音やコントローラを必要としない他の命令を追跡できる。センサ６３２はジョイスティックコントローラ（フットボールを表す）の動きを追跡してもよい。撮像装置６２３はまた、コントローラ６３０の光源６３４を追跡してもよい。ユーザは、ジョイスティックコントローラ６３０の加速度がある量、および／またはある方向に達したとき、またはコントローラ６３０のボタンを押してトリガされるキーコマンドに基づいて、「ボール」を投げることができる。
【００８２】
本発明のある実施形態では、加速度計またはジャイロスコープなどからの慣性信号は、コントローラ６３０の位置決めに用いられてもよい。具体的には、加速度計からの加速度信号は、速度変化を決定するために一旦時間積分されてもよく、速度は位置変化を決定するために時間積分されてもよい。ある時刻における初期位置と速度が既知であれば、これらの値と速度および位置変化とを用いて絶対位置を決定できる。慣性センサを用いた位置決定は、撮像装置６２３や光源６３４を用いる方法よりも早く行えるが、慣性センサ６３２は「ドリフト」として知られるタイプの誤差が起こりやすい。これは、時間と共に累積される誤差によって、慣性信号から計算されるジョイスティック６３０の位置（透視図で示す）とジョイスティックコントローラの実際の位置との間で不一致Ｄが生じうる現象である。本発明の実施形態では、様々な方法でそのような誤差を処理できる。
【００８３】
例えば、コントローラ６３０の初期位置を現在の計算位置と等しくなるように設定することにより、ドリフトを手動でキャンセルすることができる。ユーザは、コントローラ６３０の一つ以上のボタンを使って、初期位置を再設定する命令をトリガできる。代替的に、画像ベースのドリフトであれば、撮像装置６２３から得られた基準となる画像から決定される位置に現在位置を再設定することによりキャンセルすることができる。そのような画像ベースのドリフトに対する補償は、例えば、ユーザがジョイスティックコントローラ６３０の一つ以上のボタンをトリガするときに、手動で行うことができる。または、画像ベースのドリフトに対する補償は、例えば、一定の間隔で、またはゲームプレイに応じて自動的に行える。そのような技術は、メモリ６０２に保存されプロセッサ６０１によって実行されるプログラムコード命令６０４によって実現される。
【００８４】
ある実施形態では、慣性センサ信号の誤りデータを補正することが望ましい。例えば、慣性センサ６３２からの信号をオーバーサンプリングし、オーバーサンプリングされた信号から移動平均（sliding average）を計算して、慣性センサ信号から誤りデータを取り除くことができる。ある状況では、信号をオーバーサンプリングし、高い値および／または低い値をデータポイントの一部のサブセットから除き、残りのデータポイントから移動平均を計算することが望ましい。また、慣性センサからの信号を調節して誤りデータから優位性を除去または軽減する他のデータサンプリング技術やデータ処理技術も使用できる。いずれの技術を選択するかは、信号の性質、信号に対しての計算、ゲームプレイの性質、またはこれらの複数の組み合わせに依存する。そのような技術は、メモリ６０２に保存されプロセッサ６０１によって実行されるプログラム６０４の命令によって実現される。
【００８５】
プロセッサ６０１は、上述のように、データ６０６と、メモリ６０２に保存、検索されプロセッサモジュール６０１によって実行されるプログラム６０４のプログラムコード命令とに応じて、慣性信号データ６０６の分析を実行する。プログラム６０４のコード部分は、アセンブリ、Ｃ＋＋、ＪＡＶＡ（登録商標）またはその他の多くの言語などの多くの異なるプログラム言語のいずれにも準拠してよい。プロセッサモジュール６０１は、プログラムコード６０４などのプログラムを実行するときに専用コンピュータとなる汎用コンピュータを形成する。ここでは、プログラムコード６０４はソフトウェアに組み込まれ、汎用コンピュータで実行されるように説明したが、当業者には、タスク管理方法は、別の方法として、特定用途向け集積回路（ＡＳＩＣ）やその他のハードウェア回路などのハードウェアを用いて実現されることは理解されるであろう。このように、本発明の実施形態は、全体であれ一部分であれ、ソフトウェア、ハードウェアおよびその両方の組み合わせで実現されることは理解されるべきである。
【００８６】
ある実施形態では、とりわけ、プログラムコード６０４は、図５Ｂの方法５１０と図５Ｃの方法５２０、またはこれらの複数の組み合わせに共通な特長を持った方法を実現するプロセッサ読み取り可能な命令セットを備えてもよい。プログラムコード６０４は、通常、一つ以上のプロセッサを指揮する一つ以上の命令を備えていて、慣性センサ６３２からの信号を分析し、位置情報および／または方向情報を生成して、ビデオゲームプレイ中、その情報を活用する。
【００８７】
プログラムコード６０４は、実行されると、撮像装置６２３に、前方の視野を監視し、視野内の一つ以上の光源６３４を特定し、光源６３４からの光の変化を検出させ、変化の検出に応じてプロセッサ６０１に対する入力指令をトリガさせる、一つ以上の命令を含んだプロセッサ実行可能指令を任意に備えてもよい。ゲームコントローラのアクションをトリガするために撮像装置と共にＬＥＤを使用することは、2004年1月16日出願の米国特許出願第10/759,782号の"METHOD AND APPARATUS FOR LIGHT INPUT DEVICE"（米国特許出願公報第20040207597号として公開）、発明者Richard L. Marksに開示されており、その開示内容は参照により本明細書に援用される。
【００８８】
プログラムコード６０４は、実行されると上述のように、ゲームシステムへの入力として、慣性センサからの信号と一つ以上の光源を追跡する撮像装置からの信号とを用いる一つ以上の命令を含むプロセッサ実行可能な命令を、任意に含んでもよい。プログラムコード６０４は、実行されると、慣性センサ６３２のドリフトを補償する一つ以上の命令を含むプロセッサ実行可能な命令を、任意に備えてもよい。
【００８９】
本発明の実施形態をビデオジョイスティックコントローラ６３０に関連する例として記述したが、システム６００を含む本発明の実施形態は、慣性センシング能力を有し、かつ無線であれそれ以外の方法であれ慣性センサ信号送信能力を有するユーザにより操作される本体、成型品、ノブ、または構造物などのいずれにも使用することができる。
【００９０】
例示として、本発明の実施形態は、並列処理システムに実装することができる。このような並列処理システムは、通常、別々のプロセッサを用いて並列にプログラムの一部を実行するように構成される複数のプロセッサを備える。例示として、また限定を行うことなく、図７は本発明の実施形態によるあるタイプのセルプロセッサ７００を示す。セルプロセッサ７００は、図６のプロセッサ６０１、または図５Ａのプロセッサ５０２として使用することができる。図７の例では、セルプロセッサ７００は、メインメモリ７０２、パワープロセッサ要素（power processor element：ＰＰＥ）７０４、および多数の相乗的プロセッサ要素（synergistic processor element：ＳＰＥ）７０６を備える。図７の例では、セルプロセッサ７００は、１個のＰＰＥ７０４と８個のＳＰＥ７０６とを備える。このような構成では、７個のＳＰＥ７０６が並列処理に用いられ、１個は他の７個の一つが故障したときのバックアップとして確保されている。代替的に、セルプロセッサは、複数のＰＰＥからなる複数のグループ（ＰＰＥグループ）と、複数のＳＰＥからなる複数のグループ（ＳＰＥグループ）とを備えてもよく、そのような場合、１グループ内の各ユニットでハードウェアリソースが共有される。しかしながら、ＳＰＥとＰＰＥは、ソフトウェアにとって独立要素であるように見える必要がある。このように、本発明の実施形態は、図７に示される構成での使用に限定されるものではない。
【００９１】
メインメモリ７０２は、通常、汎用の不揮発性記憶装置に加えて、システム構成、データ同期転送、メモリーマップドＩ／Ｏ、およびＩ／Ｏサブシステムなどの機能に用いられる専用のハードウェアレジスタまたはアレイも備える。本発明の実施形態では、ビデオゲームプログラム７０３がメインメモリ７０２内に常駐してもよい。プログラム７０３は、図５Ａ、図５Ｂおよび図５Ｃについて上述したような、またはこれらの組み合わせで構成される分析部を含んでもよい。さらに、プログラム７０３は、図５Ｄについて上述したようなジェスチャ検出および／または図５Ｅについて上述したようなジェスチャ認識を実装するためのインストラクションを含んでもよい。プログラム７０３はＰＰＥ上で走ってもよい。プログラム７０３は、ＳＰＥおよび／またはＰＰＥで実行される複数の信号処理タスクに分割されてもよい。
【００９２】
例示として、ＰＰＥ７０４は、関連するキャッシュＬ１およびＬ２を持った６４ビットのパワーＰＣプロセッサユニット（ＰＰＵ）であってもよい。ＰＰＥ７０４は、システム管理リソース（例えば、メモリ保護テーブルなど）にアクセス可能な汎用処理装置である。ハードウェアリソースは、ＰＰＥに見られるように実アドレス空間に明示的にマップされてもよい。したがって、ＰＰＥは適当な実効アドレス値を用いて、直接これらのリソースのいずれにでもアドレス指定できる。ＰＰＥ７０４の主な機能は、セルプロセッサ７００のＳＰＥ７０６に対するタスク管理とタスク割り当てである。
【００９３】
図７では１個のＰＰＥだけが示されているが、セルブロードバンドエンジンアーキテクチャ（ＣＢＥＡ）などのセルプロセッサ実装では、セルプロセッサ７００は、複数のＰＰＥが存在するＰＰＥグループに系統だてられた複数のＰＰＥを有してもよい。これらのＰＰＥグループはメインメモリ７０２へのアクセスを共有してもよい。さらに、セルプロセッサ７００は二つ以上のＳＰＥを備えてもよい。ＳＰＥグループもメインメモリ７０２へのアクセスを共有してもよい。このような構成も本発明の範囲内である。
【００９４】
ＳＰＥ７０６のそれぞれは、ＳＰＵと独自のローカル記憶領域ＬＳとを含む。ローカル記憶領域ＬＳは、メモリ記憶内の一つ以上の分離領域を備えており、それぞれの領域は専用のＳＰＵと関連付けられている。各ＳＰＵは、独自の関連付けられた記憶領域内からの命令（データロードとデータ保存操作とを含む）だけを実行するように構成されてもよい。そのような構成では、ローカル記憶領域ＬＳとシステム７００のそれ以外の間とのデータ転送は、メモリフローコントローラ（ＭＦＣ）からダイレクトメモリアクセス（ＤＭＡ）命令を出すことによって行われ、（個々のＳＰＥの）ローカル記憶領域との間でデータ転送される。なんらシステム管理機能を果たさないＳＰＵは、ＰＰＥ７０４よりは簡単な構造のコンピュータ装置である。ＳＰＵは、一般にＳＩＭＤ（single instruction, multiple data）機能を有し、通常はデータ処理を行い、割り当てられたタスクを行うために（ＰＰＥにより設定されたアクセス特性にしたがって）要求されたデータ転送を開始する。ＳＰＵの目的は、より高いコンピュータ装置密度を要求するアプリケーションを可能として、提供された命令セットを有効に利用できるようにすることである。ＰＰＥ７０４で管理されるシステムにおけるかなり多くのＳＰＥは、広範囲のアプリケーションにおいて費用効果の高い処理を可能にする。
【００９５】
各ＳＰＥ７０６は、メモリ保護情報とアクセス許可情報を保持し処理できる関連メモリ管理ユニットを備えた専用のメモリフローコントローラ（ＭＦＣ）を備えている。ＭＦＣは、セルプロセッサのメイン記憶とＳＰＥのローカル記憶間でのデータ転送、保護および同期化のための主要な方法を提供する。ＭＦＣ命令は実行される転送を記述する。データ転送命令は、ＭＦＣダイレクトメモリアクセス（ＤＭＡ）命令（またはＭＦＣＤＭＡ命令）と呼ばれることがある。
【００９６】
各ＭＦＣは、同時に複数のＤＭＡ転送をサポートし、複数のＭＦＣ命令を維持、処理してもよい。各ＭＦＣＤＭＡデータ転送命令要求は、ローカルストレージアドレス（ＬＳＡ）と有効アドレス（ＥＡ）の両方を伴ってもよい。ローカルストレージアドレスは、関連するＳＰＥのローカルストレージアドレスだけに直接アドレス指定できる。実効アドレスは、例えば、実アドレス空間に名前を変えられれば、すべてのＳＰＥローカルストレージ領域を含むメイン記憶を参照できるなどの、もっと一般的なアプリケーションを備えてもよい。
【００９７】
ＳＰＥ７０６同士の間、および／またはＳＰＥ７０６とＰＰＥ７０４との間の通信を容易にするために、ＳＰＥ７０６とＰＰＥ７０４は、シグナリングイベントに関する信号通知レジスタを備えてもよい。ＰＰＥ７０４とＳＰＥ７０６は、ＰＰＥ７０４がＳＰＥ７０６にメッセージを送信するルータのように働くスター構成（topology）によって接続されてもよい。代替的に、各ＳＰＥ７０６とＰＰＥ７０４は、メールボックスと呼ばれる一方向信号通知レジスタを有してもよい。メールボックスは、ＳＰＥ７０６によって使用されＯＳの同期操作を主催する。
【００９８】
セルプロセッサ７００は、マイクロホン配列７１２、任意の撮像装置７１３およびジョイスティックコントローラ７３０などの周辺装置とインタフェースできる入出力（Ｉ／Ｏ）機能を備えてもよい。ジョイスティックコントローラユニットは慣性センサ７３２と光源７３４を備えてもよい。さらに、要素相互接続バス７１０は、上記に挙げた種々の部品を接続できる。各ＳＰＥおよびＰＰＥは、バスインタフェースユニット（ＢＩＵ）を介してバス７１０にアクセスできる。セルプロセッサ７００は、通常プロセッサに見られる二つのコントローラと、バス７１０とメインメモリ７０２の間のデータ流れを制御するメモリインタフェースコントローラ（ＭＩＣ）と、Ｉ／Ｏ７０８とバス７１０の間のデータ流れを制御するバスインタフェースコントローラ（ＢＩＣ）とを備えてもよい。ＭＩＣ、ＢＩＣ，ＢＩＵおよびバス７１０に対する要件は、実装が異なると大きく変わるが、当業者はそれらの機能および実装回路については精通しているだろう。
【００９９】
セルプロセッサ７００は、内部割り込みコントローラ（ＩＩＣ）を備えてもよい。ＩＩＣ装置は、ＰＰＥに提示される割り込みの優先権を管理する。ＩＩＣによって、セルプロセッサ７００の他の要素からの割り込みを、メインシステムの割り込みコントローラを用いずに処理できる。ＩＩＣは第２レベルのコントローラと考えることもできる。メインシステムの割り込みコントローラは、セルプロセッサの外部で発生した割り込みを処理してもよい。
【０１００】
本発明の実施形態では、上述の非整数遅延などの計算は、ＰＰＥ７０４および／または一つ以上のＳＰＥ７０６を用いて並列に実行されてもよい。各非整数遅延計算は、使用可能な異なるＳＰＥ７０６が別々に請け負う一つ以上の別々のタスクとして実行されてもよい。
【０１０１】
上記は、本発明の好適な実施形態に関する完全な記述であるが、種々の変形、変更および等価物を用いることが可能である。したがって、本発明の技術範囲は、上記の内容を参照して決定されるべきではなく、その代わりに、添付の特許請求の範囲およびそれらの等価物の全範囲と併せて決定されるべきである。本明細書で説明した好適なまたはそれ以外のすべての特徴は、本明細書に記載された他の好適なまたはそれ以外のいかなる特徴とも組み合わせることができる。特許請求の範囲においては、不定冠詞“Ａ”または“Ａｎ”は、特にそうでないと明確に述べられた場合を除いて、冠詞に続く品目の一つ以上の数量を指す。添付の特許請求の範囲は、”means for”の句を使って明確にそのような限定が行われない限り、ミーンズプラスファンクションの限定が含まれると解釈されるべきではない。
【０１０２】
本発明のいろいろな好ましい特徴は次の番号を付けたパラグラフで定義される。
【０１０３】
パラグラフ１．
ａ）コントロールデバイスに関連づけられた１以上のセンサから、前記コントロールデバイスの動きに関するサンプルモーションデータを受け取るステップと、
ｂ）前記モーションデータからエネルギー値と前記モーションデータに対する基準値とを計算するステップと、
ｃ）前記エネルギー値が静的エネルギー閾値よりも小さいなら、前記エネルギー値にもとづいて前記基準値を更新するステップと、
ｄ）更新された前記基準値にもとづいて前記サンプルモーションデータを調整するステップと、
ｅ）所定数の局所分散サンプルにわたって前記サンプルモーションデータの局所分散を計算するステップと、
ｆ）前記局所分散のスカラ値が記録を開始するための閾値よりも大きいなら、ジェスチャに対する前記サンプルモーションデータの１以上の値の記録を開始するステップと、
ｇ）ジェスチャに対する前記サンプルモーションデータの前記１以上の値を用いて平均的な局所分散のスカラー値を計算するステップと、
ｈ）前記局所分散のスカラー値が記録を中止するための閾値よりも小さいなら、ジェスチャに対する前記サンプルモーションデータの前記１以上の値の記録を中止するステップとを含むことを特徴とするジェスチャ認識方法。
【０１０４】
パラグラフ２．
ｉ）前記ジェスチャにおける前記サンプル値の全分散を計算するステップと、
ｊ）前記ジェスチャにおける前記サンプル値と１以上のカタログジェスチャにおけるサンプル値を用いて、ジェスチャがカタログジェスチャとどれくらい一致するかを示す尺度であるメリットの数値を計算するステップと、
ｋ）前記メリットの数値にもとづいて、入力されたジェスチャが１以上のカタログジェスチャの一つと一致するかどうかを判定するステップと、
ｌ）前記入力されたジェスチャが前記１以上のカタログジェスチャの一つと一致した場合にアクションを取るステップとをさらに含むパラグラフ１の方法。
【０１０５】
パラグラフ３．
前記サンプルモーションデータはベクトル成分を含むパラグラフ２の方法。
【０１０６】
パラグラフ４．
前記全分散は、前記ベクトル成分の異なる成分に対応する全分散の成分に割り当てられたランクとともに計算されるパラグラフ３の方法。
【０１０７】
パラグラフ５．
ステップｊ）は、入力されたジェスチャ成分のランクをカタログジェスチャ成分のランクと比較することを含むパラグラフ４の方法。
【０１０８】
パラグラフ６．
ステップｊ）は、全分散成分のランクキングによって成分を重みづけすることを含むパラグラフ５の方法。
【０１０９】
パラグラフ７．
ステップｊ）は、入力されたジェスチャとカタログジェスチャの間の相関を計算することを含むパラグラフ６の方法。
【０１１０】
パラグラフ８．
少ないサンプルしかもたない入力されたジェスチャまたはカタログジェスチャをスケールアップするステップをさらに含むパラグラフ６の方法。
【０１１１】
パラグラフ９．
入力されたジェスチャの全分散のランキングとカタログジェスチャの全分散のランキングを比較するステップと、一致しない入力されたジェスチャのランクにはそれぞれペナルティを適用するステップとをさらに含むパラグラフ６の方法。
【０１１２】
パラグラフ１０．
前記メリットの数値は、全分散のランキングにもとづいた重みで重みづけされた相関スカラ平均として計算された相関スカラを含むパラグラフ９の方法。
【０１１３】
パラグラフ１１．
全分散のランキングはジェスチャ内で異なる時間間隔で計算されるパラグラフ１０の方法。
【０１１４】
パラグラフ１２．
ジェスチャ内の異なる時間間隔において重みを異ならせるパラグラフ１１の方法。
【０１１５】
パラグラフ１３．
当該方法はビデオゲームに適用されるパラグラフ２の方法。
【０１１６】
パラグラフ１４．
アクションを取るステップは、ジェスチャに関連づけられたコマンドに応答することを含むパラグラフ１３の方法。
【０１１７】
パラグラフ１５．
入力されたジェスチャをゲームロジックにもとづいてカタログジェスチャの選択された対象と比較するパラグラフ１４の方法。
【０１１８】
パラグラフ１６．
サンプルモーションデータは慣性センサからの信号から得られたデータを含むパラグラフ１の方法。
【０１１９】
パラグラフ１７．
サンプルモーションデータはイメージキャプチャデバイスから得られた画像データを含むパラグラフ１の方法。
【０１２０】
パラグラフ１８．
サンプルモーションデータは音響センサからの信号から得られたデータを含むパラグラフ１の方法。
【０１２１】
パラグラフ１９．
ジェスチャ認識のための装置であって、
コントロールデバイスと、
ジェスチャ認識方法のプログラムを実行する機能を有するプロセッサとを含み、
前記方法は、
コントロールデバイスに関連づけられた１以上のセンサから、前記コントロールデバイスの動きに関するサンプルモーションデータを受け取るステップと、
前記モーションデータからエネルギー値と前記モーションデータに対する基準値とを計算するステップと、
前記エネルギー値が静的エネルギー閾値よりも小さいなら、前記エネルギー値にもとづいて前記基準値を更新するステップと、
更新された前記基準値にもとづいて前記サンプルモーションデータを調整するステップと、
所定数の局所分散サンプルにわたって前記サンプルモーションデータの局所分散を計算するステップと、
前記局所分散のスカラ値が記録を開始するための閾値よりも大きいなら、ジェスチャに対する前記サンプルモーションデータの１以上の値の記録を開始するステップと、
ジェスチャに対する前記サンプルモーションデータの前記１以上の値を用いて平均的な局所分散のスカラー値を計算するステップと、
前記局所分散のスカラー値が記録を中止するための閾値よりも小さいなら、ジェスチャに対する前記サンプルモーションデータの前記１以上の値の記録を中止するステップとを含むことを特徴とする装置。
【０１２２】
パラグラフ２０．
前記ジェスチャ認識方法は、
前記ジェスチャにおける前記サンプル値の全分散を計算するステップと、
前記ジェスチャにおける前記サンプル値と１以上のカタログジェスチャにおけるサンプル値を用いて、ジェスチャがカタログジェスチャとどれくらい一致するかを示す尺度であるメリットの数値を計算するステップと、
前記メリットの数値にもとづいて、入力されたジェスチャが１以上のカタログジェスチャの一つと一致するかどうかを判定するステップと、
前記入力されたジェスチャが前記１以上のカタログジェスチャの一つと一致した場合にアクションを取るステップとをさらに含むパラグラフ１９の装置。
【０１２３】
パラグラフ２１．
コンピュータ読み取り可能なインストラクションが格納されたコンピュータ読み取り可能な記録媒体であって、前記コンピュータ読み取り可能なインストラクションが実行されるとき、ジェスチャ認識方法が実装されるように構成されており、前記方法は、
コントロールデバイスに関連づけられた１以上のセンサから、前記コントロールデバイスの動きに関するサンプルモーションデータを受け取るステップと、
前記モーションデータからエネルギー値と前記モーションデータに対する基準値とを計算するステップと、
前記エネルギー値が静的エネルギー閾値よりも小さいなら、前記エネルギー値にもとづいて前記基準値を更新するステップと、
更新された前記基準値にもとづいて前記サンプルモーションデータを調整するステップと、
所定数の局所分散サンプルにわたって前記サンプルモーションデータの局所分散を計算するステップと、
前記局所分散のスカラ値が記録を開始するための閾値よりも大きいなら、ジェスチャに対する前記サンプルモーションデータの１以上の値の記録を開始するステップと、
ジェスチャに対する前記サンプルモーションデータの前記１以上の値を用いて平均的な局所分散のスカラー値を計算するステップと、
前記局所分散のスカラー値が記録を中止するための閾値よりも小さいなら、ジェスチャに対する前記サンプルモーションデータの前記１以上の値の記録を中止するステップとを含むことを特徴とする記録媒体。
【０１２４】
パラグラフ２２．
コントロールデバイスと前記コントロールデバイスに接続されたプロセッサとを含むシステムにおけるジェスチャ認識方法であって、当該方法は、
ａ）プロセッサが、前記コントロールデバイスに関連づけられた１以上のセンサから得た前記コントロールデバイスの動きに関するサンプルモーションデータの複数のサンプル値をもつ入力ジェスチャにおいて、サンプル値の全分散を計算するステップと、
ｂ）前記ジェスチャにおける前記サンプル値と１以上のカタログジェスチャにおけるサンプル値を用いて、ジェスチャがカタログジェスチャとどれくらい一致するかを示す尺度であるメリットの数値を計算するステップと、
ｃ）前記メリットの数値にもとづいて、入力されたジェスチャが１以上のカタログジェスチャの一つと一致するかどうかを判定するステップと、
ｄ）前記入力されたジェスチャが前記１以上のカタログジェスチャの一つと一致すると判定された場合に前記システムの状態を変更するステップとを含むことを特徴とする方法。
【０１２５】
パラグラフ２３．
前記システムはビデオゲームシステムであり、ステップｄ）は、ステップｃ）において入力されたジェスチャが前記１以上のカタログジェスチャの一つと一致すると判定された場合に、プロセッサが前記ビデオゲームシステムで実装されたゲームの状態を変更することを含むパラグラフ２２のジェスチャ認識方法。
【０１２６】
パラグラフ２４．
前記サンプルモーションデータはベクトル成分を含むパラグラフ２２の方法。
【０１２７】
パラグラフ２５．
前記全分散は、前記ベクトル成分の異なる成分に対応する全分散の成分に割り当てられたランクとともに計算されるパラグラフ２４の方法。
【０１２８】
パラグラフ２６．
ステップｂ）は、入力されたジェスチャ成分のランクをカタログジェスチャ成分のランクと比較することを含むパラグラフ２５の方法。
【０１２９】
パラグラフ２７．
ステップｂ）は、全分散成分のランクキングによって成分を重みづけすることを含むパラグラフ２５の方法。
【０１３０】
パラグラフ２８．
ステップｂ）は、入力されたジェスチャとカタログジェスチャの間の相関を計算することを含むパラグラフ２５の方法。
【０１３１】
パラグラフ２９．
少ないサンプルしかもたない入力されたジェスチャまたはカタログジェスチャをスケールアップするステップをさらに含むパラグラフ２５の方法。
【０１３２】
パラグラフ３０．
入力されたジェスチャの全分散のランキングとカタログジェスチャの全分散のランキングを比較するステップと、一致しない入力されたジェスチャのランクにはそれぞれペナルティを適用するステップとをさらに含むパラグラフ２５の方法。
【０１３３】
パラグラフ３１．
前記メリットの数値は、全分散のランキングにもとづいた重みで重みづけされた相関スカラ平均として計算された相関スカラを含むパラグラフ３０の方法。
【０１３４】
パラグラフ３２．
ジェスチャ認識のための装置であって、
コントロールデバイスと、
ジェスチャ認識方法のプログラムを実行する機能を有するプロセッサとを含み、
前記方法は、
ａ）前記コントロールデバイスに関連づけられた１以上のセンサから得た前記コントロールデバイスの動きに関するサンプルモーションデータの複数のサンプル値をもつ入力ジェスチャにおいて、サンプル値の全分散を計算するステップと、
ｂ）前記ジェスチャにおける前記サンプル値と１以上のカタログジェスチャにおけるサンプル値を用いて、ジェスチャがカタログジェスチャとどれくらい一致するかを示す尺度であるメリットの数値を計算するステップと、
ｃ）前記メリットの数値にもとづいて、入力されたジェスチャが１以上のカタログジェスチャの一つと一致するかどうかを判定するステップと、
ｄ）前記入力されたジェスチャが前記１以上のカタログジェスチャの一つと一致すると判定された場合に当該装置の状態を変更するステップとを含むことを特徴とする装置。
【０１３５】
パラグラフ３３．
コンピュータ読み取り可能なインストラクションが格納されたコンピュータ読み取り可能な記録媒体であって、前記コンピュータ読み取り可能なインストラクションが実行されるとき、ジェスチャ認識方法が実装されるように構成されており、前記方法は、
ａ）コントロールデバイスに関連づけられた１以上のセンサから得た前記コントロールデバイスの動きに関するサンプルモーションデータの複数のサンプル値をもつ入力ジェスチャにおいて、サンプル値の全分散を計算するステップと、
ｂ）前記ジェスチャにおける前記サンプル値と１以上のカタログジェスチャにおけるサンプル値を用いて、ジェスチャがカタログジェスチャとどれくらい一致するかを示す尺度であるメリットの数値を計算するステップと、
ｃ）前記メリットの数値にもとづいて、入力されたジェスチャが１以上のカタログジェスチャの一つと一致するかどうかを判定するステップとを含むことを特徴とする記録媒体。
【図１】
0005496240.tif 000002
【図２】
0005496240.tif 000003
【図３Ｂ】
0005496240.tif 000004
【図３Ｃ】
0005496240.tif 000005
【図３Ｄ】
0005496240.tif 000006
【図３Ｅ】
0005496240.tif 000007
【図５Ａ】
0005496240.tif 000008
【図５Ｂ】
0005496240.tif 000009
【図５Ｃ】
0005496240.tif 000010
【図５Ｄ】
0005496240.tif 000011
【図５Ｅ】
0005496240.tif 000012
【図６】
0005496240.tif 000013
【図７】
0005496240.tif 000014
【図３Ａ】
0005496240.tif 000015
【図４】
0005496240.tif 000016