(57)【特許請求の範囲】
【請求項１】
ゲームアプリケーションを実行するゲーム装置であって、
ゲームアプリケーションを処理するアプリケーション処理部と、
ゲームコントローラにおいてアナログデジタル変換された動きセンサ出力を受け取る取得部と、
受け取った動きセンサ出力を補正して、前記アプリケーション処理部にゲーム操作データとして供給する補正部とを備え、
前記補正部は、
出力０を含む所定のマスク範囲内の動きセンサ出力を所定値に補正するマスク処理を実行するマスク処理部と、
ゲームコントローラの振動状態を判定する振動状態判定部を有し、
前記振動状態判定部が、ゲームコントローラの振動子が振動していることを判定した場合に、前記マスク処理部が、マスク処理を実行することを特徴とするゲーム装置。
【請求項２】
前記補正部は、ゲームコントローラの動作状態を判定する動作状態判定部を有し、
前記動作状態判定部が、動きセンサ出力が所定時間連続してマスク範囲内の値をとることを判定した場合に、前記マスク処理部が、マスク処理を実行することを特徴とする請求項１に記載のゲーム装置。
【請求項３】
ゲームコントローラと、ゲームアプリケーションを実行するゲーム装置とを備えたゲームシステムであって、
前記ゲームコントローラは、
前記ゲーム装置から供給される振動制御信号により駆動を制御される少なくとも１つの振動子と、
動きセンサと、
前記動きセンサの出力が供給されるローパスフィルタと、
前記ローパスフィルタの出力をアナログデジタル変換するアナログデジタル変換器と、
アナログデジタル変換された動きセンサ出力を前記ゲーム装置に供給する通信モジュールとを有し、
前記ゲーム装置は、
前記ゲームコントローラから動きセンサ出力を受け取る通信モジュールと、
ゲームアプリケーションを処理するアプリケーション処理部と、
前記ゲームコントローラに供給する振動制御信号を生成する生成部と、
受け取った動きセンサ出力を補正して、前記アプリケーション処理部にゲーム操作データとして供給する補正部とを有し、
前記補正部は、
出力０を含む所定のマスク範囲内の動きセンサ出力を所定値に補正するマスク処理を実行するマスク処理部と、
ゲームコントローラの振動状態を判定する振動状態判定部を有し、
前記振動状態判定部が、ゲームコントローラの振動子が振動していることを判定した場合に、前記マスク処理部が、マスク処理を実行することを特徴とするゲームシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ゲーム装置およびゲームシステムの技術に関する。
【背景技術】
【０００２】
ゲームシステムにおいて、モータなどの振動子を備えたゲームコントローラが普及している。ゲームの進行にあわせて振動子が駆動されることで、ユーザに現実感を与えることができる。
【０００３】
また近年、ゲームコントローラに動きセンサを搭載して、ゲームコントローラの姿勢や動きそのものをゲームへの入力として利用することが現実化されている。ユーザがゲームコントローラを動かすと、動きセンサはゲームコントローラの傾きや回転量などを検出し、その検出値をゲーム装置に送信することで、従来からあるボタン操作とは異なるゲーム入力が実現される。たとえばレーシングゲームでは、ゲームコントローラが自動車のハンドルのように扱われて、ユーザは、ボタン操作よりもリアルな感覚をもってゲームを行うことができる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、ゲームコントローラに振動子と動きセンサが搭載された場合、動きセンサは、ユーザの動作により与えられるゲームコントローラの動き成分に加えて、振動子の振動に起因するゲームコントローラの動き成分も検出する。そのため、ユーザが本来意図するゲーム操作とは異なる入力がゲームキャラクタの挙動に反映されることがあり、ユーザに違和感を生じさせることもある。
【０００５】
そこで本発明は、加速度センサや角速度センサなどの動きセンサの出力から、振動子の振動に起因するゲームコントローラの動き成分を簡易に除去または低減する技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明のある態様のゲーム装置は、ゲームアプリケーションを実行するゲーム装置であって、ゲームアプリケーションを処理するアプリケーション処理部と、ゲームコントローラにおいてアナログデジタル変換された動きセンサ出力を受け取る取得部と、受け取った動きセンサ出力を補正して、アプリケーション処理部にゲーム操作データとして供給する補正部とを備える。補正部は、所定のマスク範囲内の動きセンサ出力に、マスク処理を施すマスク処理部を有する。
【０００７】
本発明の別の態様は、ゲームシステムである。このゲームシステムは、ゲームコントローラと、ゲームアプリケーションを実行するゲーム装置とを備えたゲームシステムであって、ゲームコントローラは、ゲーム装置から供給される振動制御信号により駆動を制御される少なくとも１つの振動子と、動きセンサと、動きセンサの出力が供給されるローパスフィルタと、ローパスフィルタの出力をアナログデジタル変換するアナログデジタル変換器と、アナログデジタル変換された動きセンサ出力をゲーム装置に供給する通信モジュールとを有する。ゲーム装置は、ゲームコントローラから動きセンサ出力を受け取る通信モジュールと、ゲームアプリケーションを処理するアプリケーション処理部と、ゲームコントローラに供給する振動制御信号を生成する生成部と、受け取った動きセンサ出力を補正して、アプリケーション処理部にゲーム操作データとして供給する補正部とを有する。補正部は、所定のマスク範囲内の動きセンサ出力に、マスク処理を施す。
【０００８】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【０００９】
本発明によると、動きセンサの出力から、振動子の振動に起因するゲームコントローラの動き成分を簡易に除去または低減する技術を提供することができる。
【発明を実施するための最良の形態】
【００１０】
図１は、本発明の実施例にかかるゲームシステムの使用環境を示す。ゲームシステム１は、画像表示装置３、音声出力装置４、ゲーム装置１０およびコントローラ２０を備える。画像表示装置３、音声出力装置４およびコントローラ２０は、ゲーム装置１０に接続される。
【００１１】
画像表示装置３は画像信号を出力するディスプレイであって、ゲーム装置１０において生成された画像信号を受けて、ゲーム画面を表示する。音声出力装置４は音声を出力するスピーカであって、ゲーム装置１０において生成された音声信号を受けて、ゲーム音声を出力する。画像表示装置３および音声出力装置４は、ゲームシステム１における出力装置を構成する。ゲーム装置１０と出力装置は、ＡＶケーブルなどの有線により接続されてもよく、また無線により接続されてもよい。またゲーム装置１０と出力装置との間には、ネットワーク（ＬＡＮ）ケーブルやワイヤレスＬＡＮなどで構築したホームネットワークが構築されてもよい。
【００１２】
コントローラ２０は、ユーザがゲーム中のキャラクタを動作させるゲーム操作データを入力するための入力装置であり、またゲーム装置１０は、コントローラ２０から供給されるゲーム操作データをもとにゲームアプリケーションを処理して、ゲームアプリケーションの処理結果を示す画像信号および音声信号を生成する処理装置である。なお、本実施例に示す技術は、ゲームアプリケーションに限らず、他の種類のアプリケーションを実行する処理装置を備えたエンタテインメントシステムにおいても実現できる。以下では、エンタテインメントシステムを代表して、ゲームアプリケーションを実行するゲームシステム１について説明する。
【００１３】
コントローラ２０は、ユーザによるゲーム操作データをゲーム装置１０に伝送する機能をもち、本実施例ではゲーム装置１０との間で無線通信可能な無線コントローラとして構成される。コントローラ２０とゲーム装置１０は、Bluetooth（ブルートゥース）（登録商標）プロトコルを用いて無線接続を確立してもよい。ゲーム操作データの送受信において、ゲーム装置１０は親機すなわちマスタとして機能し、コントローラ２０は子機すなわちスレーブとして機能する。なおコントローラ２０は、無線コントローラに限らず、ゲーム装置１０とケーブルを介して接続される有線コントローラであってもよい。
【００１４】
コントローラ２０は、図示しないバッテリにより駆動され、ゲームを進行させるゲーム入力を行うための複数のボタンやキーを有して構成される。ユーザがコントローラ２０のボタンやキーを操作すると、そのゲーム操作データが無線により周期的にゲーム装置１０に送信される。またコントローラ２０は、コントローラ２０の３軸方向の加速度を検出する３軸加速度センサと、所定の軸回りの角速度を検出する角速度センサを有して構成される。３軸加速度センサおよび角速度センサは、コントローラ２０の動きを検出する動きセンサを構成する。ゲームアプリケーションによっては、各センサの検出値がゲーム操作データとして扱われ、無線により周期的にゲーム装置１０に送信される。たとえば、コントローラ２０を自動車のハンドルに見立て、ユーザがコントローラ２０をハンドルのように動かすことで、ゲーム中の自動車を動かすレーシングゲームにおいては、３軸加速度センサおよび角速度センサの出力値がゲーム操作データとして利用される。
【００１５】
ゲーム装置１０は、コントローラ２０からゲームアプリケーションに関するゲーム操作データを受信し、ゲーム操作データに応じてゲーム進行を制御して、ゲーム画像信号およびゲーム音声信号を生成する。生成されたゲーム画像信号およびゲーム音声信号は、それぞれ画像表示装置３および音声出力装置４により出力される。またゲーム装置１０は、ゲームアプリケーションの進行状況に応じて、コントローラ２０を振動させる振動制御信号をコントローラ２０に送信する機能ももつ。コントローラ２０は振動子を有し、振動開始信号を受信すると振動子を駆動させ、振動停止信号を受信すると振動子の駆動を停止させる。なおゲーム装置１０は、振動子を駆動させるか否かを特定する振動制御信号を、送信フレームごとに送信してもよく、この場合、コントローラ２０は、この振動制御信号にしたがって動作する。
【００１６】
図２は、コントローラの外観構成を示す。コントローラ２０には、方向キー２１、アナログスティック２７と、４種の操作ボタン２６が設けられている。４種のボタン２２〜２５には、それぞれを区別するために、異なる色で異なる図形が記されている。すなわち、○ボタン２２には赤色の丸、×ボタン２３には青色のバツ、□ボタン２４には紫色の四角形、△ボタン２５には緑色の三角形が記されている。
【００１７】
ユーザは左手で左側把持部２８ａを把持し、右手で右側把持部２８ｂを把持して、コントローラ２０を操作する。方向キー２１、アナログスティック２７、操作ボタン２６は、ユーザが左側把持部２８ａ、右側把持部２８ｂを把持した状態で操作可能なように、筐体上面３０に設けられる。
【００１８】
左側把持部２８ａおよび右側把持部２８ｂの筐体内部には、モータなどで構成される振動子が配置される。コントローラ２０の無線通信モジュールがゲーム装置１０から振動開始信号を受信すると、左右の振動子が駆動され、その振動がコントローラ２０の筐体に伝達されて、コントローラ２０が振動する。またコントローラ２０の筐体内部の中央付近には、コントローラ２０の動作を制御するための基板が配置される。この基板には、既述した３軸加速度センサや角速度センサなども設けられている。なおコントローラ２０の外郭を構成する筐体は、下側筐体と上側筐体とを嵌め合わせることで構成され、振動子および基板は、下側筐体に固定されている。
【００１９】
基板上の３軸加速度センサおよび角速度センサは、コントローラ２０の動きを検出するが、振動子が駆動されたときには、その駆動により生じるコントローラ２０の振動成分も検出値に含まれる。上記したレーシングゲームにおいて、コントローラ２０を水平に維持することで自動車がまっすぐに走るようなゲーム設定がされている場合、振動子が駆動されると、まっすぐに走行するはずの自動車が、振動成分によりジグザグ走行するようなことも想定される。このような自動車の挙動はユーザに違和感を与えることになるため、振動子による振動成分は、可能な限りゲーム操作データから取り除くことが好ましい。以下において、ユーザの動作によるコントローラ２０の姿勢や動きを、できるだけ忠実にゲーム中のキャラクタに反映させる仕組みを説明する。
【００２０】
図３は、コントローラの内部構成を示す。コントローラ２０は、処理部９０を有し、さらに、モータと偏心部材から構成される振動子８０ａ、８０ｂと、無線通信モジュール９２とを備える。振動子８０ａ、８０ｂは、それぞれコントローラ２０の左側把持部２８ａ、右側把持部２８ｂの筐体内部に配置される。無線通信モジュール９２は、ゲーム装置１０の無線通信モジュールとの間でデータを送受信する機能をもつ。処理部９０は、コントローラ２０における所期の処理を実行する。処理部９０および無線通信モジュール９２の機能は、筐体内部に設けられる基板に作り込まれた回路として実現されてもよい。
【００２１】
処理部９０は、メイン制御部５０、入力受付部５２、センサユニット５６、フィルタユニット６０、アナログデジタル変換装置６４、平均処理ユニット６８、メモリ７０、読出部７２、通信制御部７４および駆動制御部７６を備える。通信制御部７４は、無線通信モジュール９２との間で必要なデータの送受を行う。
【００２２】
入力受付部５２は、方向キー２１、操作ボタン２６、アナログスティック２７などの入力部からの入力情報を受け付け、メイン制御部５０に送る。メイン制御部５０は、受け取った入力情報をメモリ７０に供給し、記憶させる。各種入力部からの入力情報は、メモリ７０においてそれぞれに割り当てられる領域に上書きして記憶される。
【００２３】
通信制御部７４は、所定の周期で無線通信モジュール９２の送信処理を制御する。ゲーム装置１０のゲーム画像のフレーム周期は１／６０秒に設定されているため、無線通信モジュール９２の送信周期は、１／６０秒以下の時間、たとえば１１．２５ｍ秒に設定される。読出部７２は、無線通信モジュール９２の送信周期にあわせてメモリ７０からデータを読み出し、通信制御部７４に供給する。各種入力部からの情報は、それぞれの記憶領域において上書き保存されているため、読出部７２は、最新のゲーム操作データを通信制御部７４に供給できる。
【００２４】
センサユニット５６は、複数の加速度センサ５４を有する。センサユニット５６が３軸加速度センサを含む場合、センサユニット５６は、３つの加速度センサ５４を有して構成される。加速度センサ５４は、ユーザの動作によるコントローラ２０の動きを検出する。本実施例において加速度センサ５４の検出値は、ゲームアプリケーションのゲーム操作データとして利用される。なお、センサユニット５６は、加速度センサ以外に、角速度センサを備えてもよい。
【００２５】
フィルタユニット６０は、複数のローパスフィルタ（ＬＰＦ）５８を有する。ＬＰＦ５８は、加速度センサ５４の下流に設けられ、加速度センサ５４の出力のうち、カットオフ周波数以下の周波数成分を通過させ、カットオフ周波数近傍から、それ以上の周波数成分を減衰させるフィルタである。センサユニット５６における内部抵抗が、ＬＰＦ５８とともにローパスフィルタを構成する抵抗成分として利用されてもよい。
【００２６】
アナログデジタル変換装置６４は、複数のアナログデジタル変換器（ＡＤＣ）６２を有する。ＡＤＣ６２は、ＬＰＦ５８から出力されるアナログ信号をデジタル信号に変換する。サンプリング周期は、無線通信モジュール９２による送信周期と比較して短く設定されることが好ましく、たとえば２ｍ秒程度であってよい。アナログデジタル変換装置６４は、固定のサンプリング周期を保持してもよく、またメイン制御部５０によりサンプリング周期を所望に制御されてもよい。
【００２７】
平均処理ユニット６８は、複数の平均処理部６６を有する。平均処理部６６は、ＡＤＣ６２から出力されるサンプリング値を、無線通信モジュール９２の送信周期の間、平均処理し、メモリ７０において割り当てられる領域に上書きする。このように、平均処理部６６が、送信周期の間のサンプリング値を平均化することで、センサ出力に重畳されている振動子８０起因の筐体の振動成分の影響を低減することが可能となる。なお、処理部９０において、平均処理部６６は存在しなくてもよく、その場合には、ＡＤＣ６２のサンプリング値は、メモリ７０においてそれぞれに割り当てられる領域に、サンプリング周期で上書きされて記憶されることになる。
【００２８】
なお以上は、加速度センサ５４の出力を、フィルタユニット６０におけるＬＰＦ５８、アナログデジタル変換装置６４におけるＡＤＣ６２、平均処理ユニット６８における平均処理部６６により処理する場合を示したが、角速度センサの出力も同様に処理されてよい。
【００２９】
既述したように、読出部７２は、無線通信モジュール９２の送信周期で特定される送信タイミングにあわせてメモリ７０からデータを読み出し、通信制御部７４に供給する。平均処理部６６、またはＡＤＣ６２から供給されるセンサ出力値は、それぞれの記憶領域において上書き保存されているため、読出部７２は、最新のセンサ情報を通信制御部７４に供給できる。通信制御部７４は、無線通信モジュール９２から、入力受付部５２で受け付けた操作ボタン２６などの操作情報とともに、動きセンサ、すなわち加速度センサ５４および角速度センサにより取得されたセンサ情報をゲーム操作データとして、ゲーム装置１０に送信させる。
【００３０】
また無線通信モジュール９２は、ゲーム装置１０から振動開始または振動停止を指示する振動制御信号を受信すると、メイン制御部５０に供給する。メイン制御部５０は、振動制御信号を駆動制御部７６に供給し、駆動制御部７６は、振動制御信号をもとに振動子８０ａ、８０ｂを動作させる。駆動制御部７６は、振動子８０ａ、８０ｂを駆動するためのスイッチとして構成されてもよく、また供給電圧のデューティ比を可変とするＰＷＭ制御部として構成されてもよい。
【００３１】
図４は、ローパスフィルタの構成を示す。ＬＰＦ５８は、センサユニット５６における加速度センサ５４などの動きセンサの出力に配置されており、図４には、２次パッシブフィルタ５９が例示される。この２次パッシブフィルタ５９は、センサユニット５６における内部抵抗Ｒ１と、ＬＰＦ５８における容量Ｃ１、抵抗Ｒ２、容量Ｃ２から構成される。なお、フィルタの次数は２次に限定されるものではなく、３次以上の高次フィルタであってもよく、また１次フィルタであってもよい。
【００３２】
本実施例のコントローラ２０には、加速度センサ５４および角速度センサとともに、自らが振動する振動子８０が存在している。加速度センサ５４などの動きセンサでは、ユーザの動作によるコントローラ２０の動きが正確に検出されることが好ましく、動きセンサが、振動子８０の振動により筐体に与えられる振動成分を検出することは好ましくない。通常、ユーザがコントローラ２０を動かすスピードには限界があり、その限界値は、１５Ｈｚ程度であることが予想される。そのため、２次パッシブフィルタ５９のカットオフ周波数を１５Ｈｚ以下の所定値に設定することで、振動子８０の振動に起因するコントローラ２０の振動成分を加速度センサ５４の出力から除去することができる。
【００３３】
また、加速度センサ５４などの動きセンサによる検出値に影響を与える振動成分は、振動子８０自身の振動成分よりも、振動子８０の振動に起因する共振成分の方がはるかに大きい。そこで、本実施例のゲーム装置１０では、筐体内の部材を筐体にきつく固定することで、コントローラ２０の固有周波数を高く設定する。具体的には、２次パッシブフィルタ５９のカットオフ周波数Ｆｃよりもコントローラ２０の固有周波数を高く設定することで、２次パッシブフィルタ５９において、共振成分の少なくとも一部を除去することが可能となる。
【００３４】
図５（ａ）は、コントローラの上側筐体を外して、下側筐体に固定される基板および振動子を露出させた状態を示す。基板８８は横長の形状を有し、下側筐体の前方中央位置に固定される。振動子８０ａは、モータ８２ａと、モータシャフトの先端に取り付けられた偏心部材８６ａを有し、一対の締結爪８４ａにより挟持されて、下側筐体の左側把持部２８ａの位置に固定される。同様に振動子８０ｂは、モータ８２ｂと偏心部材８６ｂを有し、一対の締結爪８４ｂにより挟持されて、下側筐体の右側把持部２８ｂの位置に固定される。偏心部材８６は半円形状を有して、モータシャフトに対して偏心して固定され、モータシャフトが回転すると、筐体を振動させる。
【００３５】
図５（ｂ）は、モータの固定構造を示す。一対の締結爪８４は下側筐体から延出され、モータ８２は、一対の締結爪８４の間に押し込まれる。モータ８２が押し込まれた状態で、一対の締結爪８４は、互いに近づく方向にモータ８２を押しつける弾性を有し、この弾性力でモータ８２は下側筐体にきつく固定される。なお基板８８についても、固有周波数を上げるべく、下側筐体にきつく固定される。
【００３６】
ユーザの動作によりコントローラ２０に与えられる振動数は、振動子８０の振動によりコントローラ２０に与えられる振動数よりも一般には低い。そのため、カットオフ周波数Ｆｃをユーザ動作によるコントローラ２０の動きを検出できる範囲で可能な限り低くすると（たとえば５Ｈｚ程度）、振動子８０に起因するコントローラ２０の振動を効果的に除去できるが、一方で時定数の影響により、ＬＰＦ５８における遅延時間が大きくなる。ゲームシステム１においては、ユーザによるゲーム操作データを、瞬時にゲーム中のキャラクタの動きに反映させることが好ましく、ＬＰＦ５８における遅延時間は、できるだけ小さくすることが好ましい。そのため上記したように、コントローラ２０の固有周波数を高く設定して、振動子８０の振動に起因する周波数成分をＬＰＦ５８において効果的に除去できれば、カットオフ周波数Ｆｃを１５Ｈｚに設定しても、許容可能な遅延時間の範囲内で加速度センサ５４のセンサ出力をゲーム操作データとして利用することが可能となる。たとえば、コントローラ２０の固有周波数を、ＬＰＦ５８のカットオフ周波数の２倍以上に設定することで、振動子８０によるノイズ成分をＬＰＦ５８において効果的に除去できる。
【００３７】
図６は、ＬＰＦの変形例を示す。このＬＰＦ５８は、異なるカットオフ周波数をもつフィルタ回路５８ａ、５８ｂを、スイッチ５５により選択的に利用可能に構成される。たとえばフィルタ回路５８ａは１０Ｈｚのカットオフ周波数をもち、フィルタ回路５８ｂは１５Ｈｚのカットオフ周波数をもってもよい。また、スイッチ５５は、フィルタ回路を経由しないバイパス経路５８ｃを選択することも可能である。
【００３８】
上記したように、フィルタ回路では時定数による遅延が発生するため、ユーザのゲーム操作データを瞬時にゲーム中のキャラクタ動作に反映させることが要求されるゲームアプリケーションでは、遅延時間の観点からは、センサ出力がフィルタ回路に接続されていないことが望ましい。そこで、振動子８０の振動が発生しないゲームアプリケーションでは、メイン制御部５０がスイッチ５５を制御して、センサユニット５６とバイパス経路５８ｃとを接続させる。一方、振動子８０の振動が発生するゲームアプリケーションでは、低遅延が要求されるゲームアプリケーションと、低遅延が要求されないゲームアプリケーションとで、メイン制御部５０がセンサユニット５６の接続先を決定する。すなわち、低遅延が要求されるゲームアプリケーションでは、メイン制御部５０がスイッチ５５を制御して、センサユニット５６とフィルタ回路５８ｂとを接続させ、低遅延が要求されないゲームアプリケーションでは、センサユニット５６とフィルタ回路５８ａとを接続させる。このように、振動発生の有無、さらには低遅延要求の有無に応じてメイン制御部５０がスイッチ５５を制御することで、ゲーム装置１０に対してゲームアプリケーションに応じた適切なゲーム操作データを送信することが可能となる。
【００３９】
ゲームアプリケーションにおける振動発生の有無、低遅延要求の有無の情報は、ゲーム装置１０からコントローラ２０に予め送信されてもよい。ゲームプログラム中に、振動発生の有無、および／または低遅延要求の有無の情報が埋め込まれている場合は、ゲーム装置１０がその情報を読み出して、予めコントローラ２０に通知しておいてもよい。メイン制御部５０は、通知された情報をもとに、スイッチ５５の接続先を設定する。
【００４０】
また、振動子８０の駆動は、ゲーム装置１０から送信される振動制御信号によって制御される。したがってメイン制御部５０は、振動開始信号を受け取ると、振動子８０を振動する前にスイッチ５５をバイパス経路５８ｃからフィルタ回路５８ａまたはフィルタ回路５８ｂに切り替え、振動停止信号を受け取ると、スイッチ５５をバイパス経路５８ｃに戻してもよい。これにより、振動子８０の振動が発生している間は、振動子８０の振動に起因する振動成分をフィルタ処理しつつ、振動子８０の振動が発生していない間は、加速度センサ５４の出力がバイパス経路５８ｃに接続されるため、フィルタ処理による遅延を回避することができる。
【００４１】
図７は、ゲーム装置の構成を示す。ゲーム装置１０は、無線通信モジュール１００、通信制御部１０２、メイン制御部１０４、センサ出力補正部１１０、振動制御信号生成部１２０、アプリケーション処理部１３０および出力部１４０を備える。本実施例におけるゲーム装置１０の処理機能は、ＣＰＵ、メモリ、メモリにロードされたプログラムなどによって実現され、ここではそれらの連携によって実現される構成を描いている。プログラムは、ゲーム装置１０に内蔵されていてもよく、また記録媒体に格納された形態で外部から供給されるものであってもよい。したがってこれらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者に理解されるところである。図示の例では、ゲーム装置１０のＣＰＵが、通信制御部１０２、メイン制御部１０４、センサ出力補正部１１０、振動制御信号生成部１２０、アプリケーション処理部１３０としての機能を実現する。なお、ハードウェアの構成上、ゲーム装置１０は複数のＣＰＵを有してもよい。このような場合、１つのＣＰＵが無線通信モジュール１００の動作を制御する通信制御部１０２として機能し、別のＣＰＵがゲーム装置１０全体の動作を制御するメイン制御部１０４として機能し、別のＣＰＵがゲームアプリケーションを実行するアプリケーション処理部１３０および振動制御信号生成部１２０として機能し、また別のＣＰＵがセンサ出力を補正するセンサ出力補正部１１０として機能してもよい。
【００４２】
通信制御部１０２は、無線通信モジュール１００との間で必要なデータを送受して、無線通信モジュール１００の通信処理を制御し、無線通信モジュール１００は、コントローラ２０の無線通信モジュール９２との間で無線通信を確立する。無線通信モジュール１００および無線通信モジュール９２は、たとえばBluetooth（登録商標）プロトコルによる接続を確立する。コントローラ２０の無線通信モジュール９２からは、所定の周期でゲーム操作データなどのデータが送信され、通信制御部１０２は、無線通信モジュール１００で受信したデータをメイン制御部１０４に供給する。
【００４３】
メイン制御部１０４は、方向キー２１などの入力部から入力されたゲーム操作データをアプリケーション処理部１３０に供給する。アプリケーション処理部１３０は、ゲーム操作データをゲームアプリケーションの処理に反映する。
【００４４】
またメイン制御部１０４は、デジタル化されたセンサ出力値をセンサ出力補正部１１０に供給する。アプリケーション処理部１３０で起動されているゲームアプリケーションは、センサ出力値をゲーム操作データとして利用するものであり、センサ出力補正部１１０は、センサ出力値を適切に補正して、アプリケーション処理部１３０にゲーム操作データとして供給する。アプリケーション処理部１３０は、センサ出力値をゲームアプリケーションの処理に反映する。
【００４５】
センサ出力取得部１１２は、センサ出力を受け取ると、マスク処理部１１８に供給する。なおセンサ出力取得部１１２は、コントローラ２０から所定の送信周期で供給されるセンサ出力を平均処理して、マスク処理部１１８に供給してもよい。たとえば、センサ出力取得部１１２は、所定数の周期分のセンサ出力を平均処理する。このように、連続して供給される所定数のセンサ出力を平均化することで、センサ出力に重畳されている振動子８０起因の筐体の振動成分の影響を低減することが可能となる。マスク処理部１１８は、加速度０を含んだ所定のマスク範囲内にある加速度センサ出力をマスク処理する。具体的にマスク処理部１１８は、そのような加速度センサ出力を、加速度０に補正する。なお、コントローラ２０において加速度センサ５４は複数存在しており、センサ出力補正部１１０は、加速度センサ５４の個数分だけ設けられる。なお、マスク処理部１１８は、角速度０を含んだ所定のマスク範囲内にある角速度センサ出力をマスク処理してもよい。具体的に、マスク処理部１１８は、そのような角速度センサ出力を、角速度０に補正する。
【００４６】
図８は、ユーザの動作によるコントローラの動きを検出したセンサ出力を示す。たとえば、このセンサ出力はＺ軸成分（垂直成分）の加速度センサ出力であるとする。図８（ａ）は、ユーザがコントローラを水平に把持して垂直方向に動かさないときのセンサ出力ＳＯ＿１０を示し、図８（ｂ）は、ユーザがコントローラを水平に把持しながら垂直方向に上下に動かしたときのセンサ出力ＳＯ＿２０を示す。
【００４７】
図９は、ユーザの動作によるコントローラの動きとともに、振動子の振動によるコントローラの振動を検出したセンサ出力を示す。図９（ａ）は、ユーザがコントローラを水平に把持して垂直方向に動かさないときのセンサ出力ＳＯ＿１２を示し、図９（ｂ）は、ユーザがコントローラを水平に把持しながら垂直方向に上下に動かしたときのセンサ出力ＳＯ＿２２を示す。図８と比較すると、ユーザ動作によるコントローラ２０の動きに、振動子８０の振動に起因するコントローラ２０の振動が重畳していることが示される。
【００４８】
振動子８０による振動成分がセンサ出力に重畳され、そのセンサ出力がゲームキャラクタを動作させるゲーム操作データとして利用される場合、ユーザからすると、自分の動作によるゲーム入力に対してゲームキャラクタが意図しない挙動を示すことになる。そのため、本来であれば、振動子８０の振動に起因するノイズ成分は、全て除去されることが好ましい。
【００４９】
しかしながら、発明者は、ユーザがコントローラ２０を動かしている場合と、そうでない場合とで、振動子８０の振動に起因するノイズ成分がユーザに与える影響に違いがあるという知見を、被験者を通じた実験により取得した。この実験では、ユーザがゲームキャラクタの動作を固定することを意図して、コントローラ２０を動かさない場合、振動子８０の振動に起因するノイズ成分によりゲームキャラクタが動いてしまうと、ユーザが違和感を感じる傾向にあり、一方、ユーザがゲームキャラクタを動作させることを意図してコントローラ２０を動かしている場合、振動子８０の振動に起因するノイズ成分がゲームキャラクタの動作に影響しても、ユーザは、ほとんど気がつかないことが判明した。この実験を通じて、発明者は、そもそもコントローラ２０を正確に思い通りに動かすことが容易ではないため、ユーザの動作よりも小さい振幅のノイズ成分は、ユーザ動作の誤差範囲とみなすことができるという知見を得るに至った。
【００５０】
したがって、図９（ａ）に示すＳＯ＿１２のセンサ出力は、ゲームキャラクタの動きを固定したいユーザの意図に反して、ゲームキャラクタが動いてしまうため好ましくなく、一方、図９（ｂ）に示すＳＯ＿２２のセンサ出力は、ユーザにとって違和感のないゲームキャラクタの動作を実現できることが分かる。以上の知見をもとに、本実施例のマスク処理部１１８は、加速度０を含んだ所定範囲内の振幅成分をマスク処理することで、センサ出力を補正する。
【００５１】
図１０は、マスク処理する加速度の範囲を示す。図１０（ａ）は、センサ出力ＳＯ＿１２とマスク範囲の関係を示し、図１０（ｂ）は、センサ出力ＳＯ＿２２とマスク範囲の関係を示す。ここでは、−Ａｔｈ（Ａｔｈは正の所定値）以上、Ａｔｈ以下をマスク範囲としており、マスク範囲の負の下限値の絶対値および正の上限値を等しくしている。これは、振動子８０に起因するノイズ成分が、コントローラ２０の現在姿勢を基準に正負に略均等に振れるためである。なお、マスク範囲の負の下限値の絶対値および正の上限値は、必ずしも等しい必要はない。
【００５２】
図１１は、マスク処理する際のセンサ出力と加速度の関係を示す。この例では、センサ出力が００ｈ（ヘキサ）からＦＦｈの値をとり、センサ出力００ｈは、−３Ｇの加速度に対応し、センサ出力ＦＦｈは、＋３Ｇの加速度に対応する。たとえば、センサ出力７４ｈが、−Ａｔｈの加速度に対応し、センサ出力８Ｃｈが、＋Ａｔｈの加速度に対応すると、マスク処理部１１８は、センサ出力が、７４ｈから８Ｃｈの範囲にあるときに、加速度を０に補正して出力する。
【００５３】
図１２は、図１０に示すセンサ出力をマスク処理した結果を示す。図１２（ａ）は、センサ出力ＳＯ＿１２をマスク処理して生成したセンサ出力ＳＯ＿１４を示し、図１２（ｂ）は、センサ出力ＳＯ＿２２をマスク処理して生成したセンサ出力ＳＯ＿２４を示す。図１２（ａ）のセンサ出力ＳＯ＿１４は、マスク範囲内にある加速度成分を除去されることで、ユーザが静止させているコントローラ２０の状態を適切に表現している。一方、図１２（ｂ）のセンサ出力ＳＯ＿２４は、マスク範囲内にある加速度成分は除去されるものの、ユーザ動作によるコントローラ２０の動きを実質的に表現できている。このように、マスク処理部１１８は、加速度０の前後にある所定の加速度成分をマスク処理して無視することで、センサ出力を、適切なゲーム操作データに補正することが可能となる。
【００５４】
マスク処理部１１８は、補正したセンサ出力を、ゲーム操作データとしてアプリケーション処理部１３０に供給する。アプリケーション処理部１３０は、メイン制御部１０４から直接供給される操作ボタン２６などによるゲーム操作データとともに、マスク処理部１１８から供給されるゲーム操作データをゲームキャラクタの動作に反映した画像信号、音声信号を生成し、出力部１４０から画像表示装置３および音声出力装置４のそれぞれに供給する。
【００５５】
なおマスク処理部１１８は、コントローラ２０の動作状態をもとに、マスク処理を実行するか否かを定めてもよい。上記したようにマスク処理は、マスク範囲内の加速度成分を０に設定する処理であるため、ユーザがコントローラ２０を動かしている場合には、その動き成分もマスクされて、破棄されることになる。
【００５６】
そこで、動作状態判定部１１４が、コントローラ２０の動作状態を判定し、その判定結果をもとに、マスク処理の実行が制御されてもよい。具体的に動作状態判定部１１４は、センサ出力取得部１１２からセンサ出力を取得し、センサ出力が連続して所定時間マスク範囲内の値をとり続けるか判定する。この判定時間は、たとえば数秒であってよい。動作状態判定部１１４が、センサ出力がマスク範囲内の値を所定時間とり続けたことを判定すると、その判定結果をマスク処理部１１８に通知する。マスク処理部１１８は、この判定結果を受けると、センサ出力のマスク処理を開始する。また動作状態判定部１１４は、センサ出力がマスク範囲外の値をとったことを判定すると、その判定結果をマスク処理部１１８に通知する。マスク処理部１１８は、この判定結果を受けると、センサ出力のマスク処理を終了する。このように、動作状態判定部１１４がコントローラ２０の動作状態を監視することで、マスク処理部１１８は、適切なタイミングでマスク処理を実行することが可能となる。
【００５７】
また、コントローラ２０の動作状態は、振動子８０が振動しているか否かにより判定されてもよい。振動制御信号生成部１２０は、アプリケーション処理部１３０からの指示により振動制御信号を生成し、メイン制御部１０４に供給する。通信制御部１０２は、メイン制御部１０４から振動制御信号を受け取ると、無線通信モジュール１００からコントローラ２０に振動制御信号を送信させる。このように、コントローラ２０の振動子８０は、振動制御信号生成部１２０で生成された振動制御信号により制御されているため、このことを利用して、コントローラ２０の動作状態を判定するアプローチも有効である。
【００５８】
具体的に振動状態判定部１１６は、振動制御信号生成部１２０から振動制御信号を受け取る。これにより、振動状態判定部１１６は、これから振動子８０が振動を開始するのか、または振動を停止するのかを判定できる。振動状態判定部１１６は、振動開始信号を受け取ると、振動子８０が振動する状態にあることを判定し、マスク処理部１１８に通知する。マスク処理部１１８は、この通知を受けると、センサ出力のマスク処理を開始する。また振動状態判定部１１６は、振動停止信号を受け取ると、振動子８０の振動が停止する状態にあることを判定し、マスク処理部１１８に通知する。マスク処理部１１８は、この通知を受けると、センサ出力のマスク処理を停止する。なお、振動停止信号がコントローラ２０に供給されて、モータ８２への電力の印加が停止されても、偏心部材８６の惰性回転が停止するまでに、ある程度の時間がかかる。そのため、電力印加の停止から、偏心部材８６の回転が停止するまでの時間を考慮して、マスク処理部１１８は、通知を受けた後、所定時間の経過後に、マスク処理を停止するようにしてもよい。このように、振動状態判定部１１６が、振動子８０の振動にコントローラ２０が共振しうる状態にあるか否かを判定することで、マスク処理部１１８は、適切なタイミングでマスク処理を実行することが可能となる。
【００５９】
動作状態判定部１１４および振動状態判定部１１６を利用したマスク処理の制御は、それぞれ単独で実行することも可能であるが、組み合わせることで、コントローラ２０の動作状態を適切に反映したマスク処理を実現できる。なお、これらを組み合わせてマスク処理を制御する場合、振動状態判定部１１６による振動状態の判定結果に基づいたマスク処理制御が、動作状態判定部１１４による動作状態の判定結果に基づいたマスク処理制御よりも優先されてもよい。振動子８０の振動に起因するコントローラ２０の振動は、振動子８０が振動していなければ発生しないため、振動子８０の振動の有無を優先して判定することで、より適切なマスク処理制御を実現できる。
【００６０】
以上、本発明を実施例をもとに説明した。この実施例は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。実施例においては、加速度センサ出力をマスク処理する例について説明したが、角速度センサ出力についても同様にマスク処理することで、振動子８０の振動に起因するコントローラ２０の振動成分を、角速度センサ出力から除去または低減することが可能である。
【００６１】
実施例においては、センサ出力の補正機能をゲーム装置１０にもたせたが、コントローラ２０がセンサ出力の補正機能を実現してもよい。たとえば、マスク処理部１１８を、コントローラ２０においてアナログデジタル変換装置６４または平均処理ユニット６８の後段に配置することで、コントローラ２０にセンサ出力の補正機能をもたせることが可能となる。なお、このとき、動作状態判定部１１４および振動状態判定部１１６の機能は、メイン制御部５０により実現される。
【図面の簡単な説明】
【００６２】
【図１】本発明の実施例にかかるゲームシステムの使用環境を示す図である。
【図２】コントローラの外観構成を示す図である。
【図３】コントローラの内部構成を示す図である。
【図４】ローパスフィルタの構成を示す図である。
【図５】（ａ）は、下側筐体に固定される基板および振動子を露出させた状態を示す図であり、（ｂ）はモータの固定構造を示す図である。
【図６】ＬＰＦの変形例を示す図である。
【図７】ゲーム装置の構成を示す図である。
【図８】ユーザの動作によるコントローラの動きを検出したセンサ出力を示す図である。
【図９】ユーザの動作によるコントローラの動きとともに、振動子の振動によるコントローラの振動を検出したセンサ出力を示す図である。
【図１０】マスク処理する加速度の範囲を示す図である。
【図１１】マスク処理する際のセンサ出力と加速度の関係を示す図である。
【図１２】図１０に示すセンサ出力をマスク処理した結果を示す図である。
【符号の説明】
【００６３】
１・・・ゲームシステム、３・・・画像表示装置、４・・・音声出力装置、１０・・・ゲーム装置、２０・・・コントローラ、５０・・・メイン制御部、５２・・・入力受付部、５４・・・加速度センサ、５５・・・スイッチ、５６・・・センサユニット、５８・・・ＬＰＦ、５８ａ・・・フィルタ回路、５８ｂ・・・フィルタ回路、５８ｃ・・・バイパス経路、５９・・・２次パッシブフィルタ、６０・・・フィルタユニット、６２・・・ＡＤＣ、６４・・・アナログデジタル変換装置、６６・・・平均処理部、６８・・・平均処理ユニット、７０・・・メモリ、７２・・・読出部、７４・・・通信制御部、７６・・・駆動制御部、８０・・・振動子、８２・・・モータ、８４・・・締結爪、８６・・・偏心部材、８８・・・基板、９０・・・処理部、９２・・・無線通信モジュール、１００・・・無線通信モジュール、１０２・・・通信制御部、１０４・・・メイン制御部、１１０・・・センサ出力補正部、１１２・・・センサ出力取得部、１１４・・・動作状態判定部、１１６・・・振動状態判定部、１１８・・・マスク処理部、１２０・・・振動制御信号生成部、１３０・・・アプリケーション処理部、１４０・・・出力部。
【図１】
0005183987.tif 000002
【図２】
0005183987.tif 000003
【図３】
0005183987.tif 000004
【図４】
0005183987.tif 000005
【図５】
0005183987.tif 000006
【図６】
0005183987.tif 000007
【図７】
0005183987.tif 000008
【図８】
0005183987.tif 000009
【図９】
0005183987.tif 000010
【図１０】
0005183987.tif 000011
【図１１】
0005183987.tif 000012
【図１２】
0005183987.tif 000013