説明

ゲーム装置およびゲームシステム

【課題】加速度センサの出力から、振動子の振動に起因するゲームコントローラの動き成分を簡易に除去または低減する技術を提供する。
【解決手段】ゲーム装置10において、無線通信モジュール100は、ゲームコントローラにおいてアナログデジタル変換された加速度センサ出力を受け取る。センサ出力補正部110は、受け取った加速度センサ出力を補正して、アプリケーション処理部130にゲーム操作データとして供給する。センサ出力補正部110において、マスク処理部118は、所定のマスク範囲内の加速度センサ出力に、マスク処理を施す。マスク処理部118は、加速度0を含んだマスク範囲内の加速度センサ出力を、加速度0に補正する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ゲーム装置およびゲームシステムの技術に関する。
【背景技術】
【0002】
ゲームシステムにおいて、モータなどの振動子を備えたゲームコントローラが普及している。ゲームの進行にあわせて振動子が駆動されることで、ユーザに現実感を与えることができる。
【0003】
また近年、ゲームコントローラに動きセンサを搭載して、ゲームコントローラの姿勢や動きそのものをゲームへの入力として利用することが現実化されている。ユーザがゲームコントローラを動かすと、動きセンサはゲームコントローラの傾きや回転量などを検出し、その検出値をゲーム装置に送信することで、従来からあるボタン操作とは異なるゲーム入力が実現される。たとえばレーシングゲームでは、ゲームコントローラが自動車のハンドルのように扱われて、ユーザは、ボタン操作よりもリアルな感覚をもってゲームを行うことができる。
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、ゲームコントローラに振動子と動きセンサが搭載された場合、動きセンサは、ユーザの動作により与えられるゲームコントローラの動き成分に加えて、振動子の振動に起因するゲームコントローラの動き成分も検出する。そのため、ユーザが本来意図するゲーム操作とは異なる入力がゲームキャラクタの挙動に反映されることがあり、ユーザに違和感を生じさせることもある。
【0005】
そこで本発明は、加速度センサや角速度センサなどの動きセンサの出力から、振動子の振動に起因するゲームコントローラの動き成分を簡易に除去または低減する技術を提供することを目的とする。
【課題を解決するための手段】
【0006】
上記課題を解決するために、本発明のある態様のゲーム装置は、ゲームアプリケーションを実行するゲーム装置であって、ゲームアプリケーションを処理するアプリケーション処理部と、ゲームコントローラにおいてアナログデジタル変換された動きセンサ出力を受け取る取得部と、受け取った動きセンサ出力を補正して、アプリケーション処理部にゲーム操作データとして供給する補正部とを備える。補正部は、所定のマスク範囲内の動きセンサ出力に、マスク処理を施すマスク処理部を有する。
【0007】
本発明の別の態様は、ゲームシステムである。このゲームシステムは、ゲームコントローラと、ゲームアプリケーションを実行するゲーム装置とを備えたゲームシステムであって、ゲームコントローラは、ゲーム装置から供給される振動制御信号により駆動を制御される少なくとも1つの振動子と、動きセンサと、動きセンサの出力が供給されるローパスフィルタと、ローパスフィルタの出力をアナログデジタル変換するアナログデジタル変換器と、アナログデジタル変換された動きセンサ出力をゲーム装置に供給する通信モジュールとを有する。ゲーム装置は、ゲームコントローラから動きセンサ出力を受け取る通信モジュールと、ゲームアプリケーションを処理するアプリケーション処理部と、ゲームコントローラに供給する振動制御信号を生成する生成部と、受け取った動きセンサ出力を補正して、アプリケーション処理部にゲーム操作データとして供給する補正部とを有する。補正部は、所定のマスク範囲内の動きセンサ出力に、マスク処理を施す。
【0008】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【0009】
本発明によると、動きセンサの出力から、振動子の振動に起因するゲームコントローラの動き成分を簡易に除去または低減する技術を提供することができる。
【発明を実施するための最良の形態】
【0010】
図1は、本発明の実施例にかかるゲームシステムの使用環境を示す。ゲームシステム1は、画像表示装置3、音声出力装置4、ゲーム装置10およびコントローラ20を備える。画像表示装置3、音声出力装置4およびコントローラ20は、ゲーム装置10に接続される。
【0011】
画像表示装置3は画像信号を出力するディスプレイであって、ゲーム装置10において生成された画像信号を受けて、ゲーム画面を表示する。音声出力装置4は音声を出力するスピーカであって、ゲーム装置10において生成された音声信号を受けて、ゲーム音声を出力する。画像表示装置3および音声出力装置4は、ゲームシステム1における出力装置を構成する。ゲーム装置10と出力装置は、AVケーブルなどの有線により接続されてもよく、また無線により接続されてもよい。またゲーム装置10と出力装置との間には、ネットワーク(LAN)ケーブルやワイヤレスLANなどで構築したホームネットワークが構築されてもよい。
【0012】
コントローラ20は、ユーザがゲーム中のキャラクタを動作させるゲーム操作データを入力するための入力装置であり、またゲーム装置10は、コントローラ20から供給されるゲーム操作データをもとにゲームアプリケーションを処理して、ゲームアプリケーションの処理結果を示す画像信号および音声信号を生成する処理装置である。なお、本実施例に示す技術は、ゲームアプリケーションに限らず、他の種類のアプリケーションを実行する処理装置を備えたエンタテインメントシステムにおいても実現できる。以下では、エンタテインメントシステムを代表して、ゲームアプリケーションを実行するゲームシステム1について説明する。
【0013】
コントローラ20は、ユーザによるゲーム操作データをゲーム装置10に伝送する機能をもち、本実施例ではゲーム装置10との間で無線通信可能な無線コントローラとして構成される。コントローラ20とゲーム装置10は、Bluetooth(ブルートゥース)(登録商標)プロトコルを用いて無線接続を確立してもよい。ゲーム操作データの送受信において、ゲーム装置10は親機すなわちマスタとして機能し、コントローラ20は子機すなわちスレーブとして機能する。なおコントローラ20は、無線コントローラに限らず、ゲーム装置10とケーブルを介して接続される有線コントローラであってもよい。
【0014】
コントローラ20は、図示しないバッテリにより駆動され、ゲームを進行させるゲーム入力を行うための複数のボタンやキーを有して構成される。ユーザがコントローラ20のボタンやキーを操作すると、そのゲーム操作データが無線により周期的にゲーム装置10に送信される。またコントローラ20は、コントローラ20の3軸方向の加速度を検出する3軸加速度センサと、所定の軸回りの角速度を検出する角速度センサを有して構成される。3軸加速度センサおよび角速度センサは、コントローラ20の動きを検出する動きセンサを構成する。ゲームアプリケーションによっては、各センサの検出値がゲーム操作データとして扱われ、無線により周期的にゲーム装置10に送信される。たとえば、コントローラ20を自動車のハンドルに見立て、ユーザがコントローラ20をハンドルのように動かすことで、ゲーム中の自動車を動かすレーシングゲームにおいては、3軸加速度センサおよび角速度センサの出力値がゲーム操作データとして利用される。
【0015】
ゲーム装置10は、コントローラ20からゲームアプリケーションに関するゲーム操作データを受信し、ゲーム操作データに応じてゲーム進行を制御して、ゲーム画像信号およびゲーム音声信号を生成する。生成されたゲーム画像信号およびゲーム音声信号は、それぞれ画像表示装置3および音声出力装置4により出力される。またゲーム装置10は、ゲームアプリケーションの進行状況に応じて、コントローラ20を振動させる振動制御信号をコントローラ20に送信する機能ももつ。コントローラ20は振動子を有し、振動開始信号を受信すると振動子を駆動させ、振動停止信号を受信すると振動子の駆動を停止させる。なおゲーム装置10は、振動子を駆動させるか否かを特定する振動制御信号を、送信フレームごとに送信してもよく、この場合、コントローラ20は、この振動制御信号にしたがって動作する。
【0016】
図2は、コントローラの外観構成を示す。コントローラ20には、方向キー21、アナログスティック27と、4種の操作ボタン26が設けられている。4種のボタン22〜25には、それぞれを区別するために、異なる色で異なる図形が記されている。すなわち、○ボタン22には赤色の丸、×ボタン23には青色のバツ、□ボタン24には紫色の四角形、△ボタン25には緑色の三角形が記されている。
【0017】
ユーザは左手で左側把持部28aを把持し、右手で右側把持部28bを把持して、コントローラ20を操作する。方向キー21、アナログスティック27、操作ボタン26は、ユーザが左側把持部28a、右側把持部28bを把持した状態で操作可能なように、筐体上面30に設けられる。
【0018】
左側把持部28aおよび右側把持部28bの筐体内部には、モータなどで構成される振動子が配置される。コントローラ20の無線通信モジュールがゲーム装置10から振動開始信号を受信すると、左右の振動子が駆動され、その振動がコントローラ20の筐体に伝達されて、コントローラ20が振動する。またコントローラ20の筐体内部の中央付近には、コントローラ20の動作を制御するための基板が配置される。この基板には、既述した3軸加速度センサや角速度センサなども設けられている。なおコントローラ20の外郭を構成する筐体は、下側筐体と上側筐体とを嵌め合わせることで構成され、振動子および基板は、下側筐体に固定されている。
【0019】
基板上の3軸加速度センサおよび角速度センサは、コントローラ20の動きを検出するが、振動子が駆動されたときには、その駆動により生じるコントローラ20の振動成分も検出値に含まれる。上記したレーシングゲームにおいて、コントローラ20を水平に維持することで自動車がまっすぐに走るようなゲーム設定がされている場合、振動子が駆動されると、まっすぐに走行するはずの自動車が、振動成分によりジグザグ走行するようなことも想定される。このような自動車の挙動はユーザに違和感を与えることになるため、振動子による振動成分は、可能な限りゲーム操作データから取り除くことが好ましい。以下において、ユーザの動作によるコントローラ20の姿勢や動きを、できるだけ忠実にゲーム中のキャラクタに反映させる仕組みを説明する。
【0020】
図3は、コントローラの内部構成を示す。コントローラ20は、処理部90を有し、さらに、モータと偏心部材から構成される振動子80a、80bと、無線通信モジュール92とを備える。振動子80a、80bは、それぞれコントローラ20の左側把持部28a、右側把持部28bの筐体内部に配置される。無線通信モジュール92は、ゲーム装置10の無線通信モジュールとの間でデータを送受信する機能をもつ。処理部90は、コントローラ20における所期の処理を実行する。処理部90および無線通信モジュール92の機能は、筐体内部に設けられる基板に作り込まれた回路として実現されてもよい。
【0021】
処理部90は、メイン制御部50、入力受付部52、センサユニット56、フィルタユニット60、アナログデジタル変換装置64、平均処理ユニット68、メモリ70、読出部72、通信制御部74および駆動制御部76を備える。通信制御部74は、無線通信モジュール92との間で必要なデータの送受を行う。
【0022】
入力受付部52は、方向キー21、操作ボタン26、アナログスティック27などの入力部からの入力情報を受け付け、メイン制御部50に送る。メイン制御部50は、受け取った入力情報をメモリ70に供給し、記憶させる。各種入力部からの入力情報は、メモリ70においてそれぞれに割り当てられる領域に上書きして記憶される。
【0023】
通信制御部74は、所定の周期で無線通信モジュール92の送信処理を制御する。ゲーム装置10のゲーム画像のフレーム周期は1/60秒に設定されているため、無線通信モジュール92の送信周期は、1/60秒以下の時間、たとえば11.25m秒に設定される。読出部72は、無線通信モジュール92の送信周期にあわせてメモリ70からデータを読み出し、通信制御部74に供給する。各種入力部からの情報は、それぞれの記憶領域において上書き保存されているため、読出部72は、最新のゲーム操作データを通信制御部74に供給できる。
【0024】
センサユニット56は、複数の加速度センサ54を有する。センサユニット56が3軸加速度センサを含む場合、センサユニット56は、3つの加速度センサ54を有して構成される。加速度センサ54は、ユーザの動作によるコントローラ20の動きを検出する。本実施例において加速度センサ54の検出値は、ゲームアプリケーションのゲーム操作データとして利用される。なお、センサユニット56は、加速度センサ以外に、角速度センサを備えてもよい。
【0025】
フィルタユニット60は、複数のローパスフィルタ(LPF)58を有する。LPF58は、加速度センサ54の下流に設けられ、加速度センサ54の出力のうち、カットオフ周波数以下の周波数成分を通過させ、カットオフ周波数近傍から、それ以上の周波数成分を減衰させるフィルタである。センサユニット56における内部抵抗が、LPF58とともにローパスフィルタを構成する抵抗成分として利用されてもよい。
【0026】
アナログデジタル変換装置64は、複数のアナログデジタル変換器(ADC)62を有する。ADC62は、LPF58から出力されるアナログ信号をデジタル信号に変換する。サンプリング周期は、無線通信モジュール92による送信周期と比較して短く設定されることが好ましく、たとえば2m秒程度であってよい。アナログデジタル変換装置64は、固定のサンプリング周期を保持してもよく、またメイン制御部50によりサンプリング周期を所望に制御されてもよい。
【0027】
平均処理ユニット68は、複数の平均処理部66を有する。平均処理部66は、ADC62から出力されるサンプリング値を、無線通信モジュール92の送信周期の間、平均処理し、メモリ70において割り当てられる領域に上書きする。このように、平均処理部66が、送信周期の間のサンプリング値を平均化することで、センサ出力に重畳されている振動子80起因の筐体の振動成分の影響を低減することが可能となる。なお、処理部90において、平均処理部66は存在しなくてもよく、その場合には、ADC62のサンプリング値は、メモリ70においてそれぞれに割り当てられる領域に、サンプリング周期で上書きされて記憶されることになる。
【0028】
なお以上は、加速度センサ54の出力を、フィルタユニット60におけるLPF58、アナログデジタル変換装置64におけるADC62、平均処理ユニット68における平均処理部66により処理する場合を示したが、角速度センサの出力も同様に処理されてよい。
【0029】
既述したように、読出部72は、無線通信モジュール92の送信周期で特定される送信タイミングにあわせてメモリ70からデータを読み出し、通信制御部74に供給する。平均処理部66、またはADC62から供給されるセンサ出力値は、それぞれの記憶領域において上書き保存されているため、読出部72は、最新のセンサ情報を通信制御部74に供給できる。通信制御部74は、無線通信モジュール92から、入力受付部52で受け付けた操作ボタン26などの操作情報とともに、動きセンサ、すなわち加速度センサ54および角速度センサにより取得されたセンサ情報をゲーム操作データとして、ゲーム装置10に送信させる。
【0030】
また無線通信モジュール92は、ゲーム装置10から振動開始または振動停止を指示する振動制御信号を受信すると、メイン制御部50に供給する。メイン制御部50は、振動制御信号を駆動制御部76に供給し、駆動制御部76は、振動制御信号をもとに振動子80a、80bを動作させる。駆動制御部76は、振動子80a、80bを駆動するためのスイッチとして構成されてもよく、また供給電圧のデューティ比を可変とするPWM制御部として構成されてもよい。
【0031】
図4は、ローパスフィルタの構成を示す。LPF58は、センサユニット56における加速度センサ54などの動きセンサの出力に配置されており、図4には、2次パッシブフィルタ59が例示される。この2次パッシブフィルタ59は、センサユニット56における内部抵抗R1と、LPF58における容量C1、抵抗R2、容量C2から構成される。なお、フィルタの次数は2次に限定されるものではなく、3次以上の高次フィルタであってもよく、また1次フィルタであってもよい。
【0032】
本実施例のコントローラ20には、加速度センサ54および角速度センサとともに、自らが振動する振動子80が存在している。加速度センサ54などの動きセンサでは、ユーザの動作によるコントローラ20の動きが正確に検出されることが好ましく、動きセンサが、振動子80の振動により筐体に与えられる振動成分を検出することは好ましくない。通常、ユーザがコントローラ20を動かすスピードには限界があり、その限界値は、15Hz程度であることが予想される。そのため、2次パッシブフィルタ59のカットオフ周波数を15Hz以下の所定値に設定することで、振動子80の振動に起因するコントローラ20の振動成分を加速度センサ54の出力から除去することができる。
【0033】
また、加速度センサ54などの動きセンサによる検出値に影響を与える振動成分は、振動子80自身の振動成分よりも、振動子80の振動に起因する共振成分の方がはるかに大きい。そこで、本実施例のゲーム装置10では、筐体内の部材を筐体にきつく固定することで、コントローラ20の固有周波数を高く設定する。具体的には、2次パッシブフィルタ59のカットオフ周波数Fcよりもコントローラ20の固有周波数を高く設定することで、2次パッシブフィルタ59において、共振成分の少なくとも一部を除去することが可能となる。
【0034】
図5(a)は、コントローラの上側筐体を外して、下側筐体に固定される基板および振動子を露出させた状態を示す。基板88は横長の形状を有し、下側筐体の前方中央位置に固定される。振動子80aは、モータ82aと、モータシャフトの先端に取り付けられた偏心部材86aを有し、一対の締結爪84aにより挟持されて、下側筐体の左側把持部28aの位置に固定される。同様に振動子80bは、モータ82bと偏心部材86bを有し、一対の締結爪84bにより挟持されて、下側筐体の右側把持部28bの位置に固定される。偏心部材86は半円形状を有して、モータシャフトに対して偏心して固定され、モータシャフトが回転すると、筐体を振動させる。
【0035】
図5(b)は、モータの固定構造を示す。一対の締結爪84は下側筐体から延出され、モータ82は、一対の締結爪84の間に押し込まれる。モータ82が押し込まれた状態で、一対の締結爪84は、互いに近づく方向にモータ82を押しつける弾性を有し、この弾性力でモータ82は下側筐体にきつく固定される。なお基板88についても、固有周波数を上げるべく、下側筐体にきつく固定される。
【0036】
ユーザの動作によりコントローラ20に与えられる振動数は、振動子80の振動によりコントローラ20に与えられる振動数よりも一般には低い。そのため、カットオフ周波数Fcをユーザ動作によるコントローラ20の動きを検出できる範囲で可能な限り低くすると(たとえば5Hz程度)、振動子80に起因するコントローラ20の振動を効果的に除去できるが、一方で時定数の影響により、LPF58における遅延時間が大きくなる。ゲームシステム1においては、ユーザによるゲーム操作データを、瞬時にゲーム中のキャラクタの動きに反映させることが好ましく、LPF58における遅延時間は、できるだけ小さくすることが好ましい。そのため上記したように、コントローラ20の固有周波数を高く設定して、振動子80の振動に起因する周波数成分をLPF58において効果的に除去できれば、カットオフ周波数Fcを15Hzに設定しても、許容可能な遅延時間の範囲内で加速度センサ54のセンサ出力をゲーム操作データとして利用することが可能となる。たとえば、コントローラ20の固有周波数を、LPF58のカットオフ周波数の2倍以上に設定することで、振動子80によるノイズ成分をLPF58において効果的に除去できる。
【0037】
図6は、LPFの変形例を示す。このLPF58は、異なるカットオフ周波数をもつフィルタ回路58a、58bを、スイッチ55により選択的に利用可能に構成される。たとえばフィルタ回路58aは10Hzのカットオフ周波数をもち、フィルタ回路58bは15Hzのカットオフ周波数をもってもよい。また、スイッチ55は、フィルタ回路を経由しないバイパス経路58cを選択することも可能である。
【0038】
上記したように、フィルタ回路では時定数による遅延が発生するため、ユーザのゲーム操作データを瞬時にゲーム中のキャラクタ動作に反映させることが要求されるゲームアプリケーションでは、遅延時間の観点からは、センサ出力がフィルタ回路に接続されていないことが望ましい。そこで、振動子80の振動が発生しないゲームアプリケーションでは、メイン制御部50がスイッチ55を制御して、センサユニット56とバイパス経路58cとを接続させる。一方、振動子80の振動が発生するゲームアプリケーションでは、低遅延が要求されるゲームアプリケーションと、低遅延が要求されないゲームアプリケーションとで、メイン制御部50がセンサユニット56の接続先を決定する。すなわち、低遅延が要求されるゲームアプリケーションでは、メイン制御部50がスイッチ55を制御して、センサユニット56とフィルタ回路58bとを接続させ、低遅延が要求されないゲームアプリケーションでは、センサユニット56とフィルタ回路58aとを接続させる。このように、振動発生の有無、さらには低遅延要求の有無に応じてメイン制御部50がスイッチ55を制御することで、ゲーム装置10に対してゲームアプリケーションに応じた適切なゲーム操作データを送信することが可能となる。
【0039】
ゲームアプリケーションにおける振動発生の有無、低遅延要求の有無の情報は、ゲーム装置10からコントローラ20に予め送信されてもよい。ゲームプログラム中に、振動発生の有無、および/または低遅延要求の有無の情報が埋め込まれている場合は、ゲーム装置10がその情報を読み出して、予めコントローラ20に通知しておいてもよい。メイン制御部50は、通知された情報をもとに、スイッチ55の接続先を設定する。
【0040】
また、振動子80の駆動は、ゲーム装置10から送信される振動制御信号によって制御される。したがってメイン制御部50は、振動開始信号を受け取ると、振動子80を振動する前にスイッチ55をバイパス経路58cからフィルタ回路58aまたはフィルタ回路58bに切り替え、振動停止信号を受け取ると、スイッチ55をバイパス経路58cに戻してもよい。これにより、振動子80の振動が発生している間は、振動子80の振動に起因する振動成分をフィルタ処理しつつ、振動子80の振動が発生していない間は、加速度センサ54の出力がバイパス経路58cに接続されるため、フィルタ処理による遅延を回避することができる。
【0041】
図7は、ゲーム装置の構成を示す。ゲーム装置10は、無線通信モジュール100、通信制御部102、メイン制御部104、センサ出力補正部110、振動制御信号生成部120、アプリケーション処理部130および出力部140を備える。本実施例におけるゲーム装置10の処理機能は、CPU、メモリ、メモリにロードされたプログラムなどによって実現され、ここではそれらの連携によって実現される構成を描いている。プログラムは、ゲーム装置10に内蔵されていてもよく、また記録媒体に格納された形態で外部から供給されるものであってもよい。したがってこれらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者に理解されるところである。図示の例では、ゲーム装置10のCPUが、通信制御部102、メイン制御部104、センサ出力補正部110、振動制御信号生成部120、アプリケーション処理部130としての機能を実現する。なお、ハードウェアの構成上、ゲーム装置10は複数のCPUを有してもよい。このような場合、1つのCPUが無線通信モジュール100の動作を制御する通信制御部102として機能し、別のCPUがゲーム装置10全体の動作を制御するメイン制御部104として機能し、別のCPUがゲームアプリケーションを実行するアプリケーション処理部130および振動制御信号生成部120として機能し、また別のCPUがセンサ出力を補正するセンサ出力補正部110として機能してもよい。
【0042】
通信制御部102は、無線通信モジュール100との間で必要なデータを送受して、無線通信モジュール100の通信処理を制御し、無線通信モジュール100は、コントローラ20の無線通信モジュール92との間で無線通信を確立する。無線通信モジュール100および無線通信モジュール92は、たとえばBluetooth(登録商標)プロトコルによる接続を確立する。コントローラ20の無線通信モジュール92からは、所定の周期でゲーム操作データなどのデータが送信され、通信制御部102は、無線通信モジュール100で受信したデータをメイン制御部104に供給する。
【0043】
メイン制御部104は、方向キー21などの入力部から入力されたゲーム操作データをアプリケーション処理部130に供給する。アプリケーション処理部130は、ゲーム操作データをゲームアプリケーションの処理に反映する。
【0044】
またメイン制御部104は、デジタル化されたセンサ出力値をセンサ出力補正部110に供給する。アプリケーション処理部130で起動されているゲームアプリケーションは、センサ出力値をゲーム操作データとして利用するものであり、センサ出力補正部110は、センサ出力値を適切に補正して、アプリケーション処理部130にゲーム操作データとして供給する。アプリケーション処理部130は、センサ出力値をゲームアプリケーションの処理に反映する。
【0045】
センサ出力取得部112は、センサ出力を受け取ると、マスク処理部118に供給する。なおセンサ出力取得部112は、コントローラ20から所定の送信周期で供給されるセンサ出力を平均処理して、マスク処理部118に供給してもよい。たとえば、センサ出力取得部112は、所定数の周期分のセンサ出力を平均処理する。このように、連続して供給される所定数のセンサ出力を平均化することで、センサ出力に重畳されている振動子80起因の筐体の振動成分の影響を低減することが可能となる。マスク処理部118は、加速度0を含んだ所定のマスク範囲内にある加速度センサ出力をマスク処理する。具体的にマスク処理部118は、そのような加速度センサ出力を、加速度0に補正する。なお、コントローラ20において加速度センサ54は複数存在しており、センサ出力補正部110は、加速度センサ54の個数分だけ設けられる。なお、マスク処理部118は、角速度0を含んだ所定のマスク範囲内にある角速度センサ出力をマスク処理してもよい。具体的に、マスク処理部118は、そのような角速度センサ出力を、角速度0に補正する。
【0046】
図8は、ユーザの動作によるコントローラの動きを検出したセンサ出力を示す。たとえば、このセンサ出力はZ軸成分(垂直成分)の加速度センサ出力であるとする。図8(a)は、ユーザがコントローラを水平に把持して垂直方向に動かさないときのセンサ出力SO_10を示し、図8(b)は、ユーザがコントローラを水平に把持しながら垂直方向に上下に動かしたときのセンサ出力SO_20を示す。
【0047】
図9は、ユーザの動作によるコントローラの動きとともに、振動子の振動によるコントローラの振動を検出したセンサ出力を示す。図9(a)は、ユーザがコントローラを水平に把持して垂直方向に動かさないときのセンサ出力SO_12を示し、図9(b)は、ユーザがコントローラを水平に把持しながら垂直方向に上下に動かしたときのセンサ出力SO_22を示す。図8と比較すると、ユーザ動作によるコントローラ20の動きに、振動子80の振動に起因するコントローラ20の振動が重畳していることが示される。
【0048】
振動子80による振動成分がセンサ出力に重畳され、そのセンサ出力がゲームキャラクタを動作させるゲーム操作データとして利用される場合、ユーザからすると、自分の動作によるゲーム入力に対してゲームキャラクタが意図しない挙動を示すことになる。そのため、本来であれば、振動子80の振動に起因するノイズ成分は、全て除去されることが好ましい。
【0049】
しかしながら、発明者は、ユーザがコントローラ20を動かしている場合と、そうでない場合とで、振動子80の振動に起因するノイズ成分がユーザに与える影響に違いがあるという知見を、被験者を通じた実験により取得した。この実験では、ユーザがゲームキャラクタの動作を固定することを意図して、コントローラ20を動かさない場合、振動子80の振動に起因するノイズ成分によりゲームキャラクタが動いてしまうと、ユーザが違和感を感じる傾向にあり、一方、ユーザがゲームキャラクタを動作させることを意図してコントローラ20を動かしている場合、振動子80の振動に起因するノイズ成分がゲームキャラクタの動作に影響しても、ユーザは、ほとんど気がつかないことが判明した。この実験を通じて、発明者は、そもそもコントローラ20を正確に思い通りに動かすことが容易ではないため、ユーザの動作よりも小さい振幅のノイズ成分は、ユーザ動作の誤差範囲とみなすことができるという知見を得るに至った。
【0050】
したがって、図9(a)に示すSO_12のセンサ出力は、ゲームキャラクタの動きを固定したいユーザの意図に反して、ゲームキャラクタが動いてしまうため好ましくなく、一方、図9(b)に示すSO_22のセンサ出力は、ユーザにとって違和感のないゲームキャラクタの動作を実現できることが分かる。以上の知見をもとに、本実施例のマスク処理部118は、加速度0を含んだ所定範囲内の振幅成分をマスク処理することで、センサ出力を補正する。
【0051】
図10は、マスク処理する加速度の範囲を示す。図10(a)は、センサ出力SO_12とマスク範囲の関係を示し、図10(b)は、センサ出力SO_22とマスク範囲の関係を示す。ここでは、−Ath(Athは正の所定値)以上、Ath以下をマスク範囲としており、マスク範囲の負の下限値の絶対値および正の上限値を等しくしている。これは、振動子80に起因するノイズ成分が、コントローラ20の現在姿勢を基準に正負に略均等に振れるためである。なお、マスク範囲の負の下限値の絶対値および正の上限値は、必ずしも等しい必要はない。
【0052】
図11は、マスク処理する際のセンサ出力と加速度の関係を示す。この例では、センサ出力が00h(ヘキサ)からFFhの値をとり、センサ出力00hは、−3Gの加速度に対応し、センサ出力FFhは、+3Gの加速度に対応する。たとえば、センサ出力74hが、−Athの加速度に対応し、センサ出力8Chが、+Athの加速度に対応すると、マスク処理部118は、センサ出力が、74hから8Chの範囲にあるときに、加速度を0に補正して出力する。
【0053】
図12は、図10に示すセンサ出力をマスク処理した結果を示す。図12(a)は、センサ出力SO_12をマスク処理して生成したセンサ出力SO_14を示し、図12(b)は、センサ出力SO_22をマスク処理して生成したセンサ出力SO_24を示す。図12(a)のセンサ出力SO_14は、マスク範囲内にある加速度成分を除去されることで、ユーザが静止させているコントローラ20の状態を適切に表現している。一方、図12(b)のセンサ出力SO_24は、マスク範囲内にある加速度成分は除去されるものの、ユーザ動作によるコントローラ20の動きを実質的に表現できている。このように、マスク処理部118は、加速度0の前後にある所定の加速度成分をマスク処理して無視することで、センサ出力を、適切なゲーム操作データに補正することが可能となる。
【0054】
マスク処理部118は、補正したセンサ出力を、ゲーム操作データとしてアプリケーション処理部130に供給する。アプリケーション処理部130は、メイン制御部104から直接供給される操作ボタン26などによるゲーム操作データとともに、マスク処理部118から供給されるゲーム操作データをゲームキャラクタの動作に反映した画像信号、音声信号を生成し、出力部140から画像表示装置3および音声出力装置4のそれぞれに供給する。
【0055】
なおマスク処理部118は、コントローラ20の動作状態をもとに、マスク処理を実行するか否かを定めてもよい。上記したようにマスク処理は、マスク範囲内の加速度成分を0に設定する処理であるため、ユーザがコントローラ20を動かしている場合には、その動き成分もマスクされて、破棄されることになる。
【0056】
そこで、動作状態判定部114が、コントローラ20の動作状態を判定し、その判定結果をもとに、マスク処理の実行が制御されてもよい。具体的に動作状態判定部114は、センサ出力取得部112からセンサ出力を取得し、センサ出力が連続して所定時間マスク範囲内の値をとり続けるか判定する。この判定時間は、たとえば数秒であってよい。動作状態判定部114が、センサ出力がマスク範囲内の値を所定時間とり続けたことを判定すると、その判定結果をマスク処理部118に通知する。マスク処理部118は、この判定結果を受けると、センサ出力のマスク処理を開始する。また動作状態判定部114は、センサ出力がマスク範囲外の値をとったことを判定すると、その判定結果をマスク処理部118に通知する。マスク処理部118は、この判定結果を受けると、センサ出力のマスク処理を終了する。このように、動作状態判定部114がコントローラ20の動作状態を監視することで、マスク処理部118は、適切なタイミングでマスク処理を実行することが可能となる。
【0057】
また、コントローラ20の動作状態は、振動子80が振動しているか否かにより判定されてもよい。振動制御信号生成部120は、アプリケーション処理部130からの指示により振動制御信号を生成し、メイン制御部104に供給する。通信制御部102は、メイン制御部104から振動制御信号を受け取ると、無線通信モジュール100からコントローラ20に振動制御信号を送信させる。このように、コントローラ20の振動子80は、振動制御信号生成部120で生成された振動制御信号により制御されているため、このことを利用して、コントローラ20の動作状態を判定するアプローチも有効である。
【0058】
具体的に振動状態判定部116は、振動制御信号生成部120から振動制御信号を受け取る。これにより、振動状態判定部116は、これから振動子80が振動を開始するのか、または振動を停止するのかを判定できる。振動状態判定部116は、振動開始信号を受け取ると、振動子80が振動する状態にあることを判定し、マスク処理部118に通知する。マスク処理部118は、この通知を受けると、センサ出力のマスク処理を開始する。また振動状態判定部116は、振動停止信号を受け取ると、振動子80の振動が停止する状態にあることを判定し、マスク処理部118に通知する。マスク処理部118は、この通知を受けると、センサ出力のマスク処理を停止する。なお、振動停止信号がコントローラ20に供給されて、モータ82への電力の印加が停止されても、偏心部材86の惰性回転が停止するまでに、ある程度の時間がかかる。そのため、電力印加の停止から、偏心部材86の回転が停止するまでの時間を考慮して、マスク処理部118は、通知を受けた後、所定時間の経過後に、マスク処理を停止するようにしてもよい。このように、振動状態判定部116が、振動子80の振動にコントローラ20が共振しうる状態にあるか否かを判定することで、マスク処理部118は、適切なタイミングでマスク処理を実行することが可能となる。
【0059】
動作状態判定部114および振動状態判定部116を利用したマスク処理の制御は、それぞれ単独で実行することも可能であるが、組み合わせることで、コントローラ20の動作状態を適切に反映したマスク処理を実現できる。なお、これらを組み合わせてマスク処理を制御する場合、振動状態判定部116による振動状態の判定結果に基づいたマスク処理制御が、動作状態判定部114による動作状態の判定結果に基づいたマスク処理制御よりも優先されてもよい。振動子80の振動に起因するコントローラ20の振動は、振動子80が振動していなければ発生しないため、振動子80の振動の有無を優先して判定することで、より適切なマスク処理制御を実現できる。
【0060】
以上、本発明を実施例をもとに説明した。この実施例は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。実施例においては、加速度センサ出力をマスク処理する例について説明したが、角速度センサ出力についても同様にマスク処理することで、振動子80の振動に起因するコントローラ20の振動成分を、角速度センサ出力から除去または低減することが可能である。
【0061】
実施例においては、センサ出力の補正機能をゲーム装置10にもたせたが、コントローラ20がセンサ出力の補正機能を実現してもよい。たとえば、マスク処理部118を、コントローラ20においてアナログデジタル変換装置64または平均処理ユニット68の後段に配置することで、コントローラ20にセンサ出力の補正機能をもたせることが可能となる。なお、このとき、動作状態判定部114および振動状態判定部116の機能は、メイン制御部50により実現される。
【図面の簡単な説明】
【0062】
【図1】本発明の実施例にかかるゲームシステムの使用環境を示す図である。
【図2】コントローラの外観構成を示す図である。
【図3】コントローラの内部構成を示す図である。
【図4】ローパスフィルタの構成を示す図である。
【図5】(a)は、下側筐体に固定される基板および振動子を露出させた状態を示す図であり、(b)はモータの固定構造を示す図である。
【図6】LPFの変形例を示す図である。
【図7】ゲーム装置の構成を示す図である。
【図8】ユーザの動作によるコントローラの動きを検出したセンサ出力を示す図である。
【図9】ユーザの動作によるコントローラの動きとともに、振動子の振動によるコントローラの振動を検出したセンサ出力を示す図である。
【図10】マスク処理する加速度の範囲を示す図である。
【図11】マスク処理する際のセンサ出力と加速度の関係を示す図である。
【図12】図10に示すセンサ出力をマスク処理した結果を示す図である。
【符号の説明】
【0063】
1・・・ゲームシステム、3・・・画像表示装置、4・・・音声出力装置、10・・・ゲーム装置、20・・・コントローラ、50・・・メイン制御部、52・・・入力受付部、54・・・加速度センサ、55・・・スイッチ、56・・・センサユニット、58・・・LPF、58a・・・フィルタ回路、58b・・・フィルタ回路、58c・・・バイパス経路、59・・・2次パッシブフィルタ、60・・・フィルタユニット、62・・・ADC、64・・・アナログデジタル変換装置、66・・・平均処理部、68・・・平均処理ユニット、70・・・メモリ、72・・・読出部、74・・・通信制御部、76・・・駆動制御部、80・・・振動子、82・・・モータ、84・・・締結爪、86・・・偏心部材、88・・・基板、90・・・処理部、92・・・無線通信モジュール、100・・・無線通信モジュール、102・・・通信制御部、104・・・メイン制御部、110・・・センサ出力補正部、112・・・センサ出力取得部、114・・・動作状態判定部、116・・・振動状態判定部、118・・・マスク処理部、120・・・振動制御信号生成部、130・・・アプリケーション処理部、140・・・出力部。

【特許請求の範囲】
【請求項1】
ゲームアプリケーションを実行するゲーム装置であって、
ゲームアプリケーションを処理するアプリケーション処理部と、
ゲームコントローラにおいてアナログデジタル変換された動きセンサ出力を受け取る取得部と、
受け取った動きセンサ出力を補正して、前記アプリケーション処理部にゲーム操作データとして供給する補正部とを備え、
前記補正部は、所定のマスク範囲内の動きセンサ出力に、マスク処理を施すマスク処理部を有することを特徴とするゲーム装置。
【請求項2】
前記動きセンサ出力は、加速度センサの出力であって、
前記マスク処理部は、加速度0を含んだマスク範囲内の加速度センサ出力を、加速度0に補正することを特徴とする請求項1に記載のゲーム装置。
【請求項3】
前記補正部は、ゲームコントローラの振動状態を判定する振動状態判定部を有し、
前記振動状態判定部が、ゲームコントローラの振動子が振動していることを判定した場合に、前記マスク処理部が、マスク処理を実行することを特徴とする請求項1または2に記載のゲーム装置。
【請求項4】
前記補正部は、ゲームコントローラの動作状態を判定する動作状態判定部を有し、
前記動作状態判定部が、動きセンサ出力が所定時間連続してマスク範囲内の値をとることを判定した場合に、前記マスク処理部が、マスク処理を実行することを特徴とする請求項1から3のいずれかに記載のゲーム装置。
【請求項5】
ゲームコントローラと、ゲームアプリケーションを実行するゲーム装置とを備えたゲームシステムであって、
前記ゲームコントローラは、
前記ゲーム装置から供給される振動制御信号により駆動を制御される少なくとも1つの振動子と、
動きセンサと、
前記動きセンサの出力が供給されるローパスフィルタと、
前記ローパスフィルタの出力をアナログデジタル変換するアナログデジタル変換器と、
アナログデジタル変換された動きセンサ出力を前記ゲーム装置に供給する通信モジュールとを有し、
前記ゲーム装置は、
前記ゲームコントローラから動きセンサ出力を受け取る通信モジュールと、
ゲームアプリケーションを処理するアプリケーション処理部と、
前記ゲームコントローラに供給する振動制御信号を生成する生成部と、
受け取った動きセンサ出力を補正して、前記アプリケーション処理部にゲーム操作データとして供給する補正部とを有し、
前記補正部は、所定のマスク範囲内の動きセンサ出力に、マスク処理を施すことを特徴とするゲームシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate