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