(57)【特許請求の範囲】
【請求項１】
ビデオゲーム機と併用して使用されるリモートコントローラの加速度センサの動作を較正して、一貫性のある測定値を生成するための方法であって、
前記コントローラを初期化した後の所定の期間を考慮するステップと、
前記所定の期間にわたり所定数のビデオフレームについて、複数の直交軸の各々に沿った前記加速度センサの加速度ベクトルの値を考慮するステップと、
前記所定の期間にわたって各フレームについての前記加速度ベクトルの最大差が所定の限度よりも小さいかどうかを判定するステップと、
前記判定ステップの結果が肯定である場合と否定である場合とで、異なる正規化係数を設定するステップと、
前記加速度センサの各軸についての各加速度ベクトルに前記正規化係数を乗算するステップとを含む方法。
【請求項２】
前記判定ステップの結果が肯定である場合に、前記正規化係数が各軸についての前記所定の期間にわたって平均した加速度ベクトルの大きさの逆数に等しい、請求項１に記載の方法。
【請求項３】
前記判定ステップの結果が否定である場合に、前記正規化係数は、所定の値に等しい、請求項１に記載の方法。
【請求項４】
前記方法は、前記ビデオゲーム機のプレイセッションの期間中に周期的に繰り返される、請求項１に記載の方法。
【請求項５】
ビデオゲーム機と併用して使用されるリモートコントローラの加速度センサの測定値を較正して、一貫性のある測定値を生成するためのシステムであって、
前記ビデオゲーム機に対してデータを送受信するリモートコントローラであって、複数の直交軸の各々に沿った加速度ベクトルに対する値を生成する加速度センサを含むリモートコントローラと、
前記リモートコントローラを初期化した後の所定の期間を考慮する前記ビデオゲーム機内の期間考慮プログラム論理回路と、
前記所定の期間にわたり所定数のビデオフレームについて、各軸に沿った前記加速度センサの加速度ベクトルの値を考慮する加速度値考慮プログラム論理回路と、
前記所定の期間にわたって各フレームについての前記加速度ベクトルの最大差が所定の限度よりも小さいかどうかを判定する閾値判定プログラム論理回路と、
前記閾値判定プログラム論理回路の判定結果が肯定である場合と否定である場合とで、異なる正規化係数を設定する設定プログラム論理回路と、
前記加速度センサの各軸についての各加速度ベクトルに前記正規化係数を乗算する正規化プログラム論理回路とを含むシステム。
【請求項６】
前記閾値判定プログラム論理回路の結果が肯定である場合に、前記正規化係数が各軸についての前記所定の期間にわたって平均した加速度ベクトルの大きさの逆数に等しい、請求項５に記載のシステム。
【請求項７】
前記閾値判定プログラム論理回路の結果が否定である場合に、前記正規化係数は、所定の値に等しい、請求項５に記載のシステム。
【請求項８】
前記リモートコントローラの加速度センサの測定値の較正は、前記ビデオゲーム機のプレイセッションの期間中に周期的に繰り返される、請求項５に記載のシステム。
【請求項９】
ビデオゲーム機のコンピュータに実行させるゲームプログラムであって、
前記コンピュータを、
前記コントローラを初期化した後の所定の期間を考慮する手段、
前記所定の期間にわたり所定数のビデオフレームについて、複数の直交軸の各々に沿った前記加速度センサの加速度ベクトルの値を考慮する手段、
前記所定の期間にわたって各フレームについての前記加速度ベクトルの最大差が所定の限度よりも小さいかどうかを判定する手段、
前記最大差が前記所定の限度よりも小さい場合と大きい場合とで、異なる正規化係数を設定する手段、
前記加速度センサの各軸についての各加速度ベクトルに設定された前記正規化係数を乗算する手段として機能させる、ゲームプログラム。
【請求項１０】
リモートコントローラの加速度センサの動作を較正して、一貫性のある測定値を生成するビデオゲーム機であって、
前記コントローラを初期化した後の所定の期間を考慮する手段と、
前記所定の期間にわたり所定数のビデオフレームについて、複数の直交軸の各々に沿った前記加速度センサの加速度ベクトルの値を考慮する手段と、
前記所定の期間にわたって各フレームについての前記加速度ベクトルの最大差が所定の限度よりも小さいかどうかを判定する手段と、
前記最大差が前記所定の限度よりも小さい場合と大きい場合とで、異なる正規化係数を設定する手段と、
前記加速度センサの各軸についての各加速度ベクトルに設定された前記正規化係数を乗算する手段とを備えるビデオゲーム機。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本願は、２００９年５月４日出願の米国出願第６１／１７５，０８１号の優先権を主張し、その全体を本明細書中にて援用する。
【０００２】
本明細書に開示される技術は、ゲームシステムに併用して使用されるコントローラの加速度センサの動作を較正するための方法およびシステムに関する。
【背景技術】
【０００３】
コンピュータシステムへのユーザ入力は、さまざまな方法で与えてもよい。例えば、コンピュータシステムがビデオゲーム機（コンソール）である場合、入力は、通常、コントローラ上に設けられた十字キー、ジョイスティック、ボタンなどを使用して与えられる。十字キーまたはジョイスティックは、ビデオゲームオブジェクトをさまざまな方向に移動させる制御に使用され、およびさまざまなボタンが、キャラクタにジャンプ、武器の使用などのアクションをさせる制御に使用される。
【０００４】
本明細書に記載のコントローラは、それに加えてまたはその代わりに、コントローラの所定の移動および／または向きに基づいてビデオゲーム機または他のコンピュータシステムへの入力を生成する加速度計構成体を含む。このようなコントローラは、より直感的なユーザインターフェースを提供できる。例えば、ビデオゲームオブジェクトの移動は、コントローラを特定の方法で移動させることによって制御することができる。例えば、プレイヤは、コントローラを上または下に傾けることによって、ビデオゲームにおける面高度を高くしたり、または低くしたりしてもよい。加速度計構成体を使用すると、十字キー、ジョイスティック、ボタンなどを有するコントローラの使用によっては容易に（あるいは全く）得ることのできないゲーム体験を提供できる。
【０００５】
加速度計が異なると、同じ動き（加速度）に対して適用した場合でも異なる測定値が得られることがあり得る。このように測定値が異なるのは、例えば、加速度計の電気的または機械的な構成要素の違いのよるものであり得る。このように、第１および第２のコントローラを同じように移動または保持した場合でも、これらのコントローラのそれぞれに設けられた加速度計の加速度計出力には差違が生じ得る。
【０００６】
さらに、多軸加速度計の場合は、同じ加速度に対して各軸の感度が異なることがある。例えば、重力と第１の軸（例えば、Ｙ軸）が同一線上に並ぶようにユーザがコントローラを保持する場合に生成される加速度計出力は、重力と第２の軸（例えば、Ｘ軸）が同一線上に並ぶようにコントローラが回転される場合に生成される加速度計出力と異なることがある。これが意味するところは、ユーザがゲームをプレイするやり方（例えば、ユーザが腰を下ろす場合または手首の向きを移動させる場合）が加速度の測定値に影響を与え得ることである。
【０００７】
本明細書に記載するシステムおよび方法は、加速度計出力が異なる加速度計間でばらつかない（一貫する）ように、かつ同じ加速度計の異なる軸に対してもばらつかない（一貫する）ように、加速度計出力を正規化するための正規化定数を提供する。これにより、コントローラの動きがビデオ画面上のプレイヤキャラクタの動きに一貫して自然に変換されることが可能なゲーム環境が提供される。
【０００８】
例えば、ビデオゲームシステムは、各フレームについて加速度ベクトルの最大差が所定の小さな限度内に収まる（プレイヤが特に操作していない状態でコントローラを保持している場合を意味する）所定の期間を調べるが、これに限定されない。次いで、ビデオゲームシステムは、この期間にわたって加速度ベクトルの平均を求め、この平均の大きさの逆数が正規化定数として使用される。
【０００９】
これらおよび他の特徴および利点は、以下の実施例の詳細な記載を添付の図面と併せて参照することによってより良くかつより完全に理解される。本発明は、以下の実施例には限定されない。
【図面の簡単な説明】
【００１０】
【図１】図１は、一例であるゲームシステム１０の図である。
【図２】図２は、図１に示す一例のゲーム機１００のブロック図である。
【図３】図３Ａおよび３Ｂは、図１に示す一例のコントローラ１０７をそれぞれ上および下から見た斜視図である。
【図４】図４は、図１に示す一例のコントローラ１０７の正面図である。
【図５Ａ】図５Ａは、図１に示す一例のコントローラ１０７のブロック図である。
【図５Ｂ】図５Ｂは、一例のコントローラ１０７が指す方向を説明するための図である。
【図６】図６は、正規化および再較正処理のための、一例であって本発明を限定しない、ソフトウェアフローチャートを示す図である。
【図７】図７は、正規化および再較正処理のための、一例であって本発明を限定しない、ソフトウェアフローチャートを示す図である。
【発明を実施するための形態】
【００１１】
図１は、ゲーム機１００、テレビ１０２、およびコントローラ１０７を含む、一例であって本発明を限定しない、ゲームシステム１０を示す。
【００１２】
ゲーム機１００は、その筐体１１０に形成されたスロット１０５に挿入された光ディスク１０４に記憶されたゲームプログラムまたは他のアプリケーションを実行する。ゲームプログラムまたは他のアプリケーションの実行結果は、ゲーム機１００がケーブル１０６によって接続されたテレビ１０２の表示画面１０１上に表示される。ゲームプログラムまたは他のアプリケーションに関連する音声は、テレビ１０２のスピーカ１０９を介して出力される。図１には光ディスクを示すが、その代わりにまたはそれに加えて、ゲームプログラムまたは他のアプリケーションは、半導体メモリ、光磁気メモリ、磁気メモリなどの他の記憶メディアに記憶させてもよい。
【００１３】
コントローラ１０７は、ゲームコントロールデータなどのデータをゲーム機１００へ無線送信する。ゲームコントロールデータは、例えば、複数の操作ボタン、キー、スティックなどを有するコントローラ１０７の操作部を使用して生成してもよい。また、コントローラ１０７は、ゲーム機１００から送信されたデータを無線受信してもよい。Ｂｌｕｅｔｏｏｔｈ（ブルートゥース（登録商標））などのさまざまな無線プロトコルのいずれか１つを使用してコントローラ１０７とゲーム機１００との間の無線送信を行ってもよい。
【００１４】
後述するように、コントローラ１０７は、また発光デバイス１０８ａおよび１０８ｂからの画像を取得および処理するための撮像情報演算部を含む。図１においてマーカ１０８ａおよび１０８ｂをテレビ１００の上にあるように示しているが、テレビ１００の下に配置してもよい。一実施例において、発光デバイス１０８ａと１０８ｂとの間の中心点は、表示画面１０１の垂直中心線に実質的に重なる。発光デバイス１０８ａおよび１０８ｂからの画像を使用して、コントローラ１０７が指す方向およびコントローラ１０７の表示画面１０１からの距離を測定できる。例えば、発光デバイス１０８ａおよび１０８ｂは、テレビ１０２の表示画面の近傍に設けられた２つのＬＥＤモジュール（以下、「マーカ」と称する）として実現してもよいが、これに限定されない。各マーカは、赤外線を出力し、およびコントローラ１０７の撮像情報演算部は、ＬＥＤモジュールから出力された光を検出して、上記のようにコントローラ１０７が指す方向およびコントローラ１０７のディスプレイ１０１からの距離を測定する。
【００１５】
図２のブロック図を参照すると、ゲーム機１００は、限定しないがビデオゲームプログラムなどを含むさまざまなタイプのアプリケーションを実行するＲＩＳＣ中央処理部（ＣＰＵ）２０４を含む。ＣＰＵ２０４は、例えば、ブートＲＯＭに記憶されたブートプログラムを実行してゲーム機１００を初期化し、および次いで、光ディスクドライブ２０８に挿入された光ディスク１０４に記憶された１つの（または複数の）アプリケーションを実行する。ゲーム機１００の筐体１１０上に設けられた、ユーザがアクセス可能なイジェクトボタン２１０を使用して、ディスクドライブ２０８から光ディスクをイジェクトしてもよい。
【００１６】
一実施例において、光ディスクドライブ２０８は、ＣＰＵ２０４およびグラフィックス処理装置２１６の能力を活用するように開発されたアプリケーションを含む第１のタイプ（例えば、第１のサイズおよび／または第１のデータ構造のものなど）の光ディスク、およびＣＰＵ２０４および／またはグラフィックス処理装置２１６とは異なる能力を有するＣＰＵおよび／またはグラフィックス処理装置によって実行するために本来開発されたアプリケーションを含む第２のタイプ（例えば、第２のサイズおよび／または第２のデータ構造のもの）の光ディスクの両方を受け取る。例えば、第２のタイプの光ディスクは、ニンテンドーゲームキューブプラットホーム用に本来開発されたアプリケーションでもよい。
【００１７】
ＣＰＵ２０４は、システムＬＳＩ２０２に接続される。システムＬＳＩ２０２は、関連のグラフィックスメモリ２２０を有するグラフィックス処理部（ＧＰＵ）２１６、音声デジタル信号処理装置（ＤＳＰ）２１８、内部メインメモリ２２２、および入力／出力（ＩＯ）処理装置２２４を含む。
【００１８】
システムＬＳＩ２０２のＩＯ処理装置２２４は、１以上のＵＳＢポート２２６、１以上の標準メモリカードスロット（コネクタ）２２８、ＷｉＦｉモジュール２３０、フラッシュメモリ２３２、および無線コントローラモジュール２４０に接続される。
【００１９】
ＵＳＢポート２２６は、非常にさまざまな外部デバイスをゲーム機１００に接続するために使用される。これらのデバイスには、例えば、ゲームコントローラ、キーボード、外部ハードディスクドライブなどの記憶装置、プリンタ、デジタルカメラなどがあるが、これらに限定されない。また、ＵＳＢポート２２６は、有線のネットワーク（例えば、ＬＡＮ）の接続のために使用してもよい。一実施例において、２つのＵＳＢポート２２６が設けられる。
【００２０】
標準メモリカードスロット（コネクタ）２２８は、工業規格タイプのメモリカード（例えば、ＳＤメモリカード）の受け入れに適応している。一実施例において、１つのメモリカードスロット２２８が設けられる。これらのメモリカードは、一般にデータ担体として使用されるが、もちろん、この使用方法は一例にすぎず、これに限定されない。例えば、プレイヤは、特定のゲームについてのゲームデータをメモリカード上に記憶させ、そしてメモリカードを友人宅に持って行き友人のゲーム機上でゲームをプレイしてもよい。また、メモリカードは、ゲーム機とパソコン、デジタルカメラ、などとの間でデータを転送するために使用してもよい。
【００２１】
ＷｉＦｉモジュール２３０によって、ゲーム機１００を無線アクセスポイントに接続することができる。アクセスポイントは、他の場所のプレイヤとオンラインゲームするためのインターネット接続性（音声チャット機能有りまたは無し）、ならびにウェッブ閲覧、電子メール、ファイルダウンロード（ゲームダウンロードを含む）、および多くの他のタイプのオンライン作業を提供してもよい。いくつかの実施例において、ＷｉＦｉモジュール２３０は、また適応する装置を備えた携帯ゲームデバイスなどの他のゲームデバイスと通信するために使用してもよい。モジュール２３０は、本明細書中で「ＷｉＦｉ」と称し、ＩＥＥＥ８０２．１１仕様ファミリーと関連して使用されるものを示す。しかし、ゲーム機１００は、もちろん、その代わりにまたはそれに加えて、他の無線規格に準拠した無線モジュールを使用してもよい。
【００２２】
フラッシュメモリ２３２は、例えば、ゲーム保存データ、システムファイル、ゲーム機のための内部アプリケーション、およびダウンロードされたデータ（ゲームなど）を記憶するが、これに限定されない。
【００２３】
無線コントローラモジュール２４０は、１以上のコントローラ１０７から無線送信された信号を受信し、そしてこれらの受信信号をＩＯ処理装置２２４に与える。コントローラ１０７によって無線コントローラモジュール２４０へ送信された信号は、コントローラ１０７に接続してもよい他のデバイスによって生成された信号と同様にコントローラ１０７自体によって生成された信号でもよい。例えば、あるゲームは、独立した右手および左手入力を利用してもよい。そのようなゲームにおいて、他のコントローラ（図示せず）をコントローラ１０７に接続してもよく（例えば、有線接続）、およびコントローラ１０７は、それ自体またはその他のコントローラによって生成された信号を無線コントローラモジュール２４０へ送信できる。
【００２４】
また、無線コントローラモジュール２４０は、信号をコントローラ１０７へ無線送信してもよい。例えば、コントローラ１０７（および／またはそれに接続された他のゲームコントローラ）には、振動回路が設けられてもよく、および振動回路制御信号は、無線コントローラモジュール２４０を介して送られ、振動回路を制御するようにしてもよい（例えば、振動回路のオン／オフ）が、これに限定されない。さらに、例えば、コントローラ１０７には、スピーカ（図示せず）が設けられてもよく（またはコントローラ１０７がスピーカに接続されてもよく）、およびこのスピーカからの出力のための音声信号は、無線コントローラモジュール２４０を介してコントローラ１０７に無線通信されてもよいが、これに限定されない。さらに、例えば、コントローラ１０７には、ディスプレイデバイス（図示せず）が設けられてもよく（またはコントローラ１０７がディスプレイデバイスに接続されてもよく）、およびこのディスプレイデバイスからの出力のための表示信号は、無線コントローラモジュール２４０を介してコントローラ１０７に無線通信されてもよいが、これに限定されない。
【００２５】
専用（ｐｒｏｐｒｉｅｔａｒｙ）メモリカードスロット２４６は、専用メモリカードの受け入れに適応している。一実施例において、２つの上記のようなスロットが設けられる。これらの専用メモリカードは、非標準コネクタおよび／または非標準メモリアーキテクチャなどのいくつかの標準でない特徴を有する。例えば、１以上の上記メモリカードスロット２４６は、ニンテンドーゲームキューブプラットホームとともに使用されるメモリカードの受け入れに適応している。この場合、そのようなスロットに挿入されたメモリカードは、ゲームキューブプラットホーム用に開発されたゲームからのデータを転送できる。一実施例において、メモリカードスロット２４６は、そこに挿入されたメモリカードへの読み取り専用アクセスのために使用してもよく、およびこれらのメモリカード上のデータをスロット２２８に挿入された標準メモリカードなどの他の記憶メディアへコピーまたは転送できるかどうかに制限を設けてもよい。
【００２６】
１以上のコントローラコネクタ２４４は、それぞれのゲームコントローラの有線接続に適応している。一実施例において、４つのそのようなコネクタがニンテンドーゲームキューブプラットホーム用のゲームコントローラに有線接続されるように設けられる。あるいは、それぞれの無線受信器が無線ゲームコントローラからの信号を受け取るようにコネクタ２４４に接続されてもよい。これらのコネクタによって、プレイヤは、特に、ニンテンドーゲームキューブプラットホーム用に開発されたゲームのための光ディスクが光ディスクドライブ２０８に挿入された場合に、このプラットホーム用のコントローラを使用することができる。
【００２７】
コネクタ２４８は、例えばゲーム機１００を通常の壁面コンセントから得られるＤＣ電力に接続するために設けられる。もちろん、この電力は、１以上のバッテリから得てもよい。
【００２８】
ＧＰＵ２１６は、ＣＰＵ２０４からの指示に基づいて画像処理を行う。ＧＰＵ２１６は、例えば、三次元（３Ｄ）グラフィックスを表示するために必要な演算を行うための回路を含む。ＧＰＵ２１６は、画像処理専用のグラフィックススメモリ２２０および内部メインメモリ２２２の一部を使用して画像処理を行う。ＧＰＵ２１６は、音声／ビデオコネクタ２１４によって音声／ビデオＩＣ（インターフェース）２１２を介してテレビ１０２へ出力するための画像データを生成する。
【００２９】
音声ＤＳＰ２１８は、ＣＰＵ２０４からの指示に基づいて音声処理を行う。音声ＤＳＰ２１８によって生成された音声は、音声／ビデオコネクタ２１４によって音声／ビデオＩＣ２１２を介してテレビ１０２へ出力される。
【００３０】
外部メインメモリ２０６および内部メインメモリ２２２は、ＣＰＵ２０４によって直接アクセス可能な記憶領域である。例えば、これらのメモリは、アプリケーションプログラム（ＣＰＵ２０４によって光ディスク１０４から読み出されたゲームプログラムなど）、さまざまなタイプのデータなどを記憶できる。
【００３１】
ＲＯＭ／ＲＴＣ２３８は、リアルタイムクロックを含み、および好ましくは、外部電力が供給されなくても使用可能なように内部バッテリ（図示せず）で動作する。また、ＲＯＭ／ＲＴＣ２３８は、ゲーム機によって使用可能なブートＲＯＭおよびＳＲＡＭを含んでもよい。
【００３２】
電力ボタン２４２はゲーム機１００の電源をオン／オフするために使用される。一実施例において、電力ボタン２４２は、誤って電源オフしてしまう可能性を低減するために、ゲーム機を電源オフするためには特定の時間（例えば、１または２秒）の間押されなければならない。リセットボタン２４４はゲーム機１００をリセット（リブート）するために使用される。
【００３３】
図３および図４を参照すると、一例であるコントローラ１０７は、操作コントロール３０２ａ〜３０２ｈが設けられた筐体３０１を含む。筐体３０１は、一般に直方体形状であり、プレイヤの片手で把持可能な大きさである。十字キー３０２ａは、筐体３０１の上面の前面側の中央に設けられる。十字キー３０２ａは、十字型の４方向プッシュスイッチであり、矢印で示す方向（前後左右）に対応する操作部分が十字の突出片にそれぞれ配置される。プレイヤが十字キー３０２ａのいずれかの操作部分を押下することによって前後左右いずれかの方向が選択される。プレイヤが十字キー３０２ａを操作することによって、例えば仮想ゲーム世界においてプレイヤを異なる方向に移動できる。
【００３４】
十字キー３０２ａは一例であり、他のタイプの操作部を使用してもよい。例えば、リング状に４方向の操作部分を備えたプッシュスイッチとセンタスイッチとを含む複合スイッチを使用してもよいが、これに限定されない。さらに、例えば、ハウジング３０１の上面から突出した傾倒可能なスティックであって、その傾倒方向に応じて操作信号を出力するスティックを使用してもよいが、これに限定されない。さらに、例えば、水平移動可能な円盤状部材であって、スライド方向に応じて操作信号を出力する部材を使用してもよいが、これに限定されない。さらに、例えば、タッチパッドを使用してもよいが、これに限定されない。さらに、例えば、少なくとも４つの方向（例えば、前後左右）に対応する独立したスイッチであって、プレイヤによって押下された場合にそれぞれの信号を出力するスイッチを使用してもよいが、これに限定されない。
【００３５】
ハウジング３０１の上面の十字キー３０２ａより後面側に、ボタン（またはキー）３０２ｂ〜３０２ｇが設けられる。ボタン３０２ｂ〜３０２ｇは、プレイヤがそれらを押下した場合にそれぞれの信号を出力する操作デバイスである。例えば、ボタン３０２ｂ〜３０２ｄは、それぞれ「Ｘ」ボタン、「Ｙ」ボタン、および「Ｂ」ボタンであり、ボタン３０２ｅ〜３０２ｇは、それぞれセレクトスイッチ、メニュースイッチ、およびスタートスイッチである。一般に、ボタン３０２ｂ〜３０２ｇには、ゲーム機１００が実行するアプリケーションに応じてさまざまな機能が割り当てられる。図３Ａに示す配置例では、ボタン３０２ｂ〜３０２ｄは、ハウジング３０１の上面の前後方向の中心線に沿って並設されている。ボタン３０２ｅ〜３０２ｇは、左右方向の線に沿ってボタン３０２ｂおよび３０２ｄの間に並設されている。ボタン３０２ｆは、ハウジング７０１の上面から埋没させて、コントローラ１０７を把持しているプレイヤが誤って押下する可能性を低減するようにしてもよい。
【００３６】
ハウジング３０１の上面の十字キー３０２ａより前面側に、ボタン３０２ｈが設けられる。ボタン３０２ｈは、遠隔からゲーム機１００の電源をオン／オフする電源スイッチである。また、ボタン３０２ｈは、ハウジング３０１の上面に埋没させて、プレイヤが誤って押下する可能性を低減してもよい。
【００３７】
ハウジング３０１の上面のボタン３０２ｃより後面側に、複数の（例えば、４つ）ＬＥＤ３０４が設けられる。コントローラ１０７は、ゲーム機１００とともに使用される他のコントローラと区別するためにコントローラ種別（番号）が割り当てられ、ＬＥＤ３０４は、この割り当てられているコントローラ種別をプレイヤに視覚的に示すために使用してもよい。例えば、コントローラ１０７が無線コントローラモジュール２４０へ信号を送信する際、コントローラ種別に対応する複数のＬＥＤのうちの１つが点灯する。
【００３８】
図３Ｂを参照すると、ハウジング３０１の下面には、凹部３０８が形成されている。凹部３０８は、プレイヤがコントローラ１０７を把持したときに当該プレイヤの人差し指または中指が位置するような位置に形成される。凹部の後面側傾斜面３０８ａには、ボタン３０２ｉが設けられる。ボタン３０２ｉは、例えば「Ａ」ボタンとして機能し、例えばシューティングゲームにおけるトリガスイッチとして使用できる。
【００３９】
図４に示すように、コントローラハウジング３０１の前面には、撮像素子３０５ａが設けられる。撮像素子３０５ａは、マーカ１０８ａおよび１０８ｂから受け取った画像データを解析するコントローラ１０７の撮像情報演算部の一部である。撮像情報演算部３０５は、例えば、最大２００フレーム／秒程度のサンプリング周期を有し、およびそのため比較的高速なコントローラ１０７の動きでも追跡して解析することができる。この部分の動作のさらなる詳細は、下記の文献を見ればよい。２００５年９月１５日出願の出願番号６０／７１６，９３７、題名「無線モジュール携帯コントローラを有するビデオゲームシステム」（米国特許公開番号２００７−００６６３９４Ａｌに対応）、２００５年１１月３日出願の６０／７３２，６４８、題名「情報処理プログラム」（米国特許公開番号２００７−００７２６７４Ａｌに対応）、および２００５年１１月３日出願の出願番号６０／７３２，６４９、題名「情報処理システムおよびそのためのプログラム」（米国特許公開番号２００７−００６０２２８Ａｌに対応）。これらの出願のそれぞれの全体の内容は、明示的に本明細書中にて援用する。
【００４０】
コントローラハウジング３０１の後面には、コネクタ３０３が設けられている。コネクタ３０３はデバイスをコントローラ１０７に接続するために使用される。例えば、プレイヤが両手からのゲームコントロール入力を使用してゲームをプレイできるように、同様又は異なる構成の第２のコントローラをコントローラ１０７にコネクタ３０３を介して接続してもよい。他のゲーム機用のゲームコントローラ、入力デバイス（キーボード、キーパッド、およびタッチパッド）を含む他のデバイス、および出力デバイス（スピーカおよびディスプレイ）がコネクタ３０３を使用してコントローラ１０７に接続されてもよい。
【００４１】
以下の説明を容易にするために、コントローラ１０７に対する座標系を定義する。図３および図４に示すように、左手系のＸＹＺ座標系をコントローラ１０７に対して定義してきた。もちろん、この座標系は、一例であってこれに限定されない、および本明細書に記載されるシステムおよび方法は、他の座標系を使用しても等しく適用可能である。
【００４２】
図５Ａのブロック図に示すように、コントローラ１０７は３軸の直線加速度センサ５０７を含む。この３軸の直線加速度センサ５０７は、３方向、すなわち、上下方向（図３および図４に示すＺ軸）、左右方向（図３および図４に示すＸ軸）、および前後方向（図３および図４に示すＹ軸）における直線加速度を検出する。あるいは、例えばＹ軸とＺ軸のそれぞれに沿った直線加速度を検出するのみの２軸の直線加速度計を使用してもよいし、または例えばＺ軸に沿った直線加速度を検出するのみの１軸の直線加速度計を使用してもよい。一般的に言えば、加速度計構成（例えば、３軸または２軸）は、求められる制御信号のタイプに依存する。例えば、３軸または２軸の直線加速度計は、アナログ・デバイセズ株式会社（Ａｎａｌｏｇ  Ｄｅｖｉｃｅｓ，Ｉｎｃ．）またはＳＴＭマイクロエロクトロニクス社（ＳＴＭｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ  Ｎ．Ｖ．）から入手可能であるタイプのものでもよいが、これに限定されない。加速度センサ５０７は、シリコン微細加工されたＭＥＭＳ（ｍｉｃｒｏ−ｅｌｅｃｔｒｏｍｅｃｈａｎｉｃａｌ  ｓｙｓｔｅｍｓ）の技術に基づいた静電容量式または静電容量結合式であることが好ましい。しかし、既存の、または将来開発される、いずれの他の適切な加速度計の技術（例えば、圧電方式や圧電抵抗方式）を使用して３軸または２軸の直線加速度センサ５０７を提供してもよい。
【００４３】
当業者に理解されるように、加速度センサ５０７として使用されるような直線加速度計は、加速度センサの各軸に対応する直線に沿った加速度を検出することができるだけである。つまり、加速度センサ５０７の直接の出力は、その２軸または３軸のそれぞれに沿った直線加速度（静的または動的）を示す信号に限られる。このため、加速度センサ５０７は、非直線状（例えば、円弧状）の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、姿勢または他の物理特性を直接検出することができない。
【００４４】
しかし、加速度センサ５０７から出力される直線加速度の信号に対して追加の処理を行うことによって、コントローラ１０７に関するさらなる情報を推測または算出（すなわち、判定）することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、静的な直線加速度（すなわち、重力）が検出されると、加速度センサ５０７からの直線加速度出力を使用して、傾斜角度と検出された加速度との相関をとることによって重力ベクトルに対する対象の傾きを判定することができる。このように、加速度センサ５０７をコントローラ１０７のマイクロコンピュータ５０２（または他の処理装置）と組み合わせて使用することによって、コントローラ１０７の傾き、姿勢または位置を判定することができる。同様に、加速度センサ５０７を含むコントローラ１０７が例えばユーザの手で動的に加速される場合に、加速度センサ５０７によって生成される直線加速度信号を処理することによって、コントローラ１０７のさまざまな動きおよび／または位置を算出することができる。
【００４５】
他の実施形態では、加速度センサ５０７は、信号をマイクロコンピュータ５０２に出力する前に内蔵の加速度計から出力される加速度信号に対して必要とされる処理を行うための、組込み式の信号処理装置または他のタイプの専用の処理装置を含んでもよい。例えば、組込み式または専用の処理装置を用いれば、加速度センサが静的な加速度（例えば、重力）を検出するためのものである場合、検出された加速度信号をそれに相当する傾斜角（あるいは、他の所望のパラメータ）に変換することができるであろう。
【００４６】
加速度センサに加えてまたはその代わりに、移動および／または向きを検出または判定するために使用可能なジャイロスコープなどの他のタイプのデバイスを使用してもよい。例えば、ジャイロスコープを使用して、加速度計からの測定値または読み取り値を高精度化または補正してもよいが、これに限定されない。
【００４７】
再び図５Ａを参照する。コントローラ１０７の撮像情報演算部５０５は、赤外線フィルタ５２８、レンズ５２９、撮像素子３０５ａ、および画像処理回路５３０を含む。赤外線フィルタ５２８は、コントローラ１０７の前面に入射する光から赤外線のみを通過させる。レンズ５２９は、赤外線フィルタ５２８からの赤外線を集光して撮像素子３０５ａ上に合焦させる。撮像素子３０５ａは、例えばＣＭＯＳセンサまたはＣＣＤのような固体撮像デバイスである。撮像素子３０５ａは、レンズ５２９が集光したマーカ１０８ａおよび１０８ｂからの赤外線を撮像する。したがって、撮像素子３０５ａは、赤外線フィルタ５２８を通過した赤外線だけを撮像し、そしてそれに基づいて画像データを生成する。この画像データは、画像処理回路５３０によって処理される。画像処理回路５３０は、画像データの高輝度領域を検出し、そしてこの検出に基づいて、その領域の検出座標位置およびサイズを示す処理結果データを通信部５０６へ出力する。この情報から、コントローラ１０７が指している方向およびコントローラ１０７のディスプレイ１０１からの距離を判定できる。
【００４８】
図５Ｂは、テレビ１０２の表示画面１０１の下に位置するセンサ１０８ａ、１０８ｂを示す。図５Ｂが示すように、コントローラ１０７がセンサを指している場合、実際には表示画面１０１の中心を指しているわけではない。しかし、ゲーム機１００によって実行されるゲームプログラムまたはアプリケーションは、この状況をコントローラ１０７が画面の中心を指している状況として扱ってもよい。この場合、実際の座標およびプログラム座標は、異なってくるが、ユーザがテレビから十分に離れている場合、ユーザの脳は、目によって見える座標と手の移動に対する座標との間の差違を自動的に補正する。
【００４９】
再び図５Ａを参照する。振動回路５１２は、またコントローラ１０７に含まれてもよい。振動回路５１２は、例えば、振動モータまたはソレノイドでもよい。コントローラ１０７は、振動回路５１２の作動によって振動し（例えば、ゲーム機１００からの信号に応答して）、そしてその振動は、コントローラ１０７を把持しているプレイヤの手に伝搬される。このように、いわゆる振動対応ゲームを実現してもよい。
【００５０】
上記のように、加速度センサ５０７は、コントローラ１０７の上下方向（Ｚ軸方向）、左右方向（Ｘ軸方向）、および前後方向（Ｙ軸方向）の３軸方向の成分の形態で加速度を検出して出力する。加速度センサ５０７が検出した３軸方向の成分として加速度を示すデータは、通信部５０６へ出力される。この加速度センサ５０７から出力される加速度データに基づいて、コントローラ１０７の動きを判定することができる。
【００５１】
通信部５０６は、マイクロコンピュータ５０２、メモリ５０３、無線モジュール５０４、およびアンテナ５０５を含む。マイクロコンピュータ５０２は、処理中にメモリ５０３を記憶領域として使用しながら、データを送受信するために無線モジュール５０４を制御する。マイクロコンピュータ５０２には、操作部３０２からの操作信号（例えば、十字キー、ボタン、またはキーのデータ）、加速度センサ５０７からの３軸方向の加速度信号（Ｘ、Ｙ、およびＺ軸方向の加速度データ）、および撮像情報演算部５０５からの処理結果データを含むデータが供給される。マイコン５０２は、供給されたデータをゲーム機１００へ送信するための送信データとして一時的にメモリ５０３に格納する。通信部５０６からゲーム機１００への無線送信は、所定の時間間隔で行われる。ゲームの処理は１／６０秒（１６．７ｍｓ）の周期で行われることが一般的であるので、無線送信はそれよりも短い期間の周期で行うことが好ましい。例えば、ブルートゥース（登録商標）の技術を使用して構成される通信部は、５ｍｓの周期を有することができる。マイクロコンピュータ５０２は、送信タイミングが到来すると、メモリ５０３に記憶されている送信データを一連の操作情報として無線モジュール５０４へ出力する。無線モジュール５０４は、例えばブルートゥース（登録商標）の技術を使用して、所定周波数を有する搬送波信号として操作情報をアンテナ５０５から送信する。このように、操作部３０２からの操作信号データ、加速度センサ５０７からのＸ、Ｙ、およびＺ軸方向加速度データ、および撮像情報演算部５０５からの処理結果データがコントローラ１０７から送信される。ゲーム機１００は、搬送波信号を受信し、そして搬送波信号を復調または復号することによって、操作情報（例えば、操作信号データ、Ｘ、Ｙ、およびＺ軸方向加速度データ、および処理結果データ）を取得する。この受信したデータと現在実行中のアプリケーションとに基づいて、ゲーム機１００のＣＰＵ２０４は、アプリケーション処理を行う。ブルートゥース（登録商標）の技術を用いて通信部５０６を構成する場合、コントローラ１０７はまた、ゲーム機１００を含むデバイスから無線送信されたデータを受信することができる。
【００５２】
一実施形態において、加速度計出力の正規化を行って、特に、異なるコントローラにおける加速度計間に存在し得る感度差および同じ加速度計の異なる軸間に存在し得る感度差に対処する。
【００５３】
本明細書に記載するシステムおよび方法は、加速度計出力を正規化するための正規化係数の生成を含む。ゲームの開始時またはその近くで、例えば、加速度計の各軸の加速度ベクトルを所定期間（例えば、２０フレームまたは約０．３秒）モニタする。この期間中、各軸についての加速度ベクトルにおける最大差が所定の限度内であれば、その期間にわたって各軸について加速度ベクトルの平均を算出する。各軸についての平均ベクトルの大きさの逆数を算出し、そしてその軸に対する正規化定数として使用する。加速度ベクトルに対するその後の測定値には、この正規化定数が乗算される。このように、例えば、重力と同一線上に並ぶ加速度計軸について平均測定値０．８ｇが得られたとすると、この平均の逆数（すなわち、１．２５）が正規化定数となり、そしてこの軸に対する加速度計測定値には、１．２５が乗算される。
【００５４】
上記の正規化方法においては、平均加速度ベクトルの大きさだけが考慮され、その方向は考慮されない。さらに、コントローラデバイスの各加速度計に対してスケール係数が算出され、したがって、例えば、コントローラ１０７の加速度計に対して１つ、およびコントローラ１０７に接続された（無線または有線のいずれかによって）いずれの他のコントローラに含まれるいずれの加速度計に対しても１つある。コントローラ１０７およびそれに接続されたいずれのコントローラからの信号もゲーム機１００との通信の異なるデータフィールド中に含まれるので、ゲーム機は、正規化加速度がコントローラ１０７から来るのか、およびコントローラ１０７に接続されたいずれのコントローラから正規化加速度が来るのかを判定できる。
【００５５】
一実施形態において、プレイヤがプレイする準備ができている場合、加速度計に対する正規化係数は、ゲームの開始時に算出される。しかし、実施形態は、この時間フレームの選択に限定されず、その算出は、例えば、以下に記載するように再較正中に発生するので、いずれの期間において発生してもよい。
【００５６】
正規化は、ユーザが気づくことなく発生する。これにより、ユーザが処理する必要があり得る多くの退屈な画面が排除され、およびまた、ユーザが正規化を行う必要があるとした場合にユーザエラーが起こる可能性が排除される。
【００５７】
さらに他の実施形態において、初期設定中にゲームプレイが実際に開始する前に正規化係数が算出された場合でも、スケール係数がゲームプレイセッション中に変化することがあるので（再）較正が必要となる場合がある。あるユーザセッション中に１つのコントローラ１０７に対してスケール係数が理論的には変化しないはずである場合でも、コントローラ１０７の向きが測定値に影響を与えることがある。より具体的には、Ｘ軸がＹ軸よりも少し感度がよいことがある。例えば、そのため、コントローラ１０７がいろいろな方向へ回転したとすると、システムは、それに基づいて若干異なる感度値を取る。これは、例えば、特定のプレイヤがゲームプレイセッション中にプレイのやり方を若干変更した場合に起こり得る。例えば、ユーザがコントローラを回転することによって重力が加速度計の異なる軸に作用する場合、この軸は、その他の軸とは若干異なる感度値を実際には有することがあり、そうなるとスケール係数も若干異なる。このように、較正値は、ゲーム中に変化する可能性があり、正規化処理は所定の周期で繰り返される。
【００５８】
上記の正規化方法は、コントローラに対して比較的静止している期間を調べる。しかし、プレイヤがコントローラを常に激しく振る場合は、デフォルトの正規化値（例えば、１．０）を使用する。
【００５９】
図６は、ビデオゲーム機１００がゲームプレイセッション中にコントローラ１０７の加速度計の測定値を較正することによって行われる処理を例示するフローチャートを示すが、これに限定されない。この例において、ステップ３０２において、コントローラ１０７の初期化が行われ、およびデフォルト正規化値（例えば、１．０）が設定される。ここで、ゲーム機１００は、ユーザに対して、コントローラ１０７で表示画面１０１の中心を指すように指示して、マーカ１０８ａと１０８ｂとの間の中心点を確立させる。その後、ステップ３０４において、ゲーム機１００は、加速度計の正規化が行われたがどうか判定する。その判定結果が否定の場合、正規化処理Ａ（図７に示す）が行われる。他方、判定結果が肯定の場合、プレイは、ステップ３０６に引き継がれる。
【００６０】
ステップ３０８において、ゲーム機１００は、ゲーム中に所定の時間量が経過したかどうか判定する。この時間量は、コントローラの加速度計に対して周期的に行われる再較正に関係する。所定の時間量が経過していない場合、処理はステップ３０６に戻る。しかし、ステップ３０８の判定結果が肯定の場合、システムは、ステップ３１０において正規化Ａを行う。最後に、ステップ３１２において、システムは、プレイが終了したかどうかを判定する。プレイが終了していない場合、処理はステップ３０６に戻り、そしてプレイを継続する。しかし、ゲームが終了した場合、処理は終了する。
【００６１】
図７は、一例である正規化処理Ａのフローチャートを示すが、これに限定されない。ステップ４０２において、所定の期間が考慮される（例えば、０．３秒）。その後、ステップ４０４において、ゲーム機１００は、所定の時間量における所定数のフレーム（例えば、２０フレーム）について加速度センサの各軸における加速度ベクトルの値を調べる。次いで、ゲーム機１００は、各フレームについての各軸に対する加速度ベクトルの最大差が所定の小さな値内にあるかどうかを判定する（ステップ４０６）。所定の小さな値内にあれば、コントローラが比較的操作されていない状態で把持されていることを示す。ステップ４０６の判定結果が否定である場合、デフォルト値（例えば、１．０）が正規化係数として使用され、そして正規化はステップ４１６へ継続する。
【００６２】
ステップ４０６の判定結果が肯定である場合、ステップ４１０において上記期間にわたってすべての加速度ベクトルの平均が算出され、その後ステップ４１２において、各軸について平均加速度ベクトルの大きさが算出される。正規化処理は、ステップ４１２において見つけられた平均ベクトルの大きさの逆数を算出することによって継続し、正規化係数を生成する（ステップ４１４）。最後に、ゲーム機１００は、加速度ベクトルに対する各測定値を、ステップ４１４において見つけられた正規化係数を乗算することによって正規化する（ステップ４１６）。
【００６３】
他の実施例において、ゲーム機１００は、特定の加速度計軸が重力と同一線上に並ぶようにコントローラ１０７を保持するようにユーザを促してもよい。所定の期間にわたってその特定の軸に対する加速度ベクトルの平均を算出して正規化係数を提供してもよい。他の実施例において、ゲーム機１００は、各加速度計軸が順次重力と同一線上に並ぶようにコントローラ１０７を保持するようにユーザを促してもよい。所定の期間にわたって各軸に対する加速度ベクトルの平均を算出してそれぞれの正規化係数を提供してもよい。
【００６４】
本明細書に記載のシステムおよび方法は、ハードウェア、ファームウェア、ソフトウェア、およびそれらの組み合わせによって実現してもよい。ソフトウェアまたはファームウェアは、マイクロ処理装置およびマイクロコントローラなどの処理システムを含む、汎用または専用の計算デバイスによって実行してもよい。ソフトウェアは、例えば、記憶媒体（光、磁気、半導体、またはそれらの組み合わせ）に記憶され、そして処理システムによる実行のためにＲＡＭにロードされてもよい。また、本明細書に記載のシステムおよび方法は、その一部または全部が、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、論理回路などのハードウェアによって実現されてもよい。
【００６５】
上記システムおよび方法を現時点で実用的および好適な実施形態と考えられるものと関連づけて説明してきたが、これらのシステムおよび方法が開示の実施形態に限定されず、反対に、添付の特許請求の範囲の趣旨および範囲に含まれるさまざまな変更および均等物を包含することを意図することが理解される。
【図１】
0005756796.tif 000002
【図２】
0005756796.tif 000003
【図３Ａ】
0005756796.tif 000004
【図３Ｂ】
0005756796.tif 000005
【図４】
0005756796.tif 000006
【図５Ａ】
0005756796.tif 000007
【図５Ｂ】
0005756796.tif 000008
【図６】
0005756796.tif 000009
【図７】
0005756796.tif 000010