説明

情報処理装置、情報処理方法及びプログラム

【課題】操作デバイスの保持状態を示す状態値を取得する場合に、注目する範囲の保持状態について精度を向上できる情報処理装置を提供する。
【解決手段】操作デバイスの保持状態に応じた出力値を取得し、操作デバイスの所定の第1保持状態に応じた出力値を第1基準値として取得し、操作デバイスの第1保持状態とは異なる所定の第2保持状態に応じた出力値を第2基準値として取得し、取得した出力値と、第1及び第2基準値とに基づいて、当該取得した出力値に応じた操作デバイスの保持状態を示す状態値を算出する情報処理装置である。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、操作デバイスの保持状態に応じた処理を行う情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【0002】
例えば家庭用ゲーム機など、ユーザが保持する操作デバイス(コントローラ)と接続され、当該操作デバイスに対するユーザの操作に応じた処理を行う情報処理装置がある。このような操作デバイスの中には、例えば加速度センサやジャイロセンサなどにより、当該操作デバイスの保持状態を示す信号を出力する機能を有するものがある。これにより、ユーザが操作デバイスそのものを傾けたり移動させたりする操作を行うことによって、情報処理装置は操作デバイスの保持状態に応じた処理を行うことができる。
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかしながら、このような操作デバイスの保持状態に応じて得られる出力値は、操作デバイスや、その内部に搭載されるセンサの個体差などによって、同じ保持状態に対して異なる値になってしまう場合がある。そのため、センサなどの出力値に基づいて操作デバイスの保持状態を示す状態値を得るには、出力値を補正するキャリブレーション処理が必要となる。この場合において、情報処理装置が実行するアプリケーションプログラムの処理内容によっては、様々な操作デバイスの保持状態のうち、特に注目する範囲の保持状態に対して、操作デバイスの個体差を吸収する補正を行い、補正後の状態値の精度を向上することが求められる。
【0004】
また、操作デバイスの保持状態を示す状態値は、ユーザの手ぶれや、操作デバイスに対する操作内容(例えば、操作デバイスに備えられたボタンの押下等)などによって、ユーザの意図しない変動を示す場合がある。そのため、このような変動によって生じるノイズ性の信号を除去するフィルタリング処理を実行する必要がある。しかしながら、情報処理装置が実行するアプリケーションプログラムの処理内容によっては、場面ごとにユーザの操作に対して要求される状態値の感度が異なる。したがって、常に状態値に対して一定のフィルタリング処理を実行してしまうと、場面によってはユーザの操作感に悪影響を生じさせてしまう。
【0005】
本発明は上記実情に鑑みてなされたものであって、その目的の一つは、操作デバイスの保持状態を示す状態値を取得する場合に、注目する範囲の保持状態について精度を向上できる情報処理装置、情報処理方法及びプログラムを提供することにある。
【0006】
また、本発明の別の目的は、操作デバイスの保持状態を示す状態値に対してフィルタリング処理を行う場合に、ユーザの操作性を向上できる情報処理装置、情報処理方法及びプログラムを提供することにある。
【課題を解決するための手段】
【0007】
上記課題を解決するための本発明に係る情報処理装置は、操作デバイスの保持状態に応じた出力値を取得する出力値取得手段と、前記操作デバイスの所定の第1保持状態に応じた前記出力値を、第1基準値として取得する第1基準値取得手段と、前記操作デバイスの前記第1保持状態とは異なる所定の第2保持状態に応じた前記出力値を、第2基準値として取得する第2基準値取得手段と、前記取得した出力値と、前記第1及び第2基準値とに基づいて、当該取得した出力値に応じた前記操作デバイスの保持状態を示す状態値を算出する状態値算出手段と、を含むことを特徴とする。
【0008】
また、本発明に係る別の情報処理装置は、操作デバイスの保持状態に応じた処理を行うためのアプリケーションプログラムを実行するアプリケーション実行手段を備える情報処理装置であって、前記操作デバイスの保持状態を示す状態値を、所定時間ごとに状態値列として取得する状態値取得手段と、所定のフィルタリング処理に用いられるパラメタを少なくとも一つ含むパラメタセットを、複数保持するパラメタセット保持手段と、前記保持された複数のパラメタセットの中から、前記アプリケーション実行手段の指示に応じて、一のパラメタセットを選択するパラメタセット選択手段と、前記取得した状態値列に対して、前記選択されたパラメタセットを用いて、前記所定のフィルタリング処理を実行するフィルタリング手段と、を含み、前記アプリケーション実行手段は、前記フィルタリング処理の結果得られる前記状態値を用いて処理を行うことを特徴とする。
【0009】
また、本発明に係る情報処理方法は、操作デバイスの保持状態に応じた出力値を取得するステップと、前記操作デバイスの所定の第1保持状態に応じた前記出力値を、第1基準値として取得するステップと、前記操作デバイスの前記第1保持状態とは異なる所定の第2保持状態に応じた前記出力値を、第2基準値として取得するステップと、前記取得した出力値と、前記第1及び第2基準値とに基づいて、当該取得した出力値に応じた前記操作デバイスの保持状態を示す状態値を算出するステップと、を含むことを特徴とする。
【0010】
また、本発明に係るプログラムは、操作デバイスの保持状態に応じた出力値を取得する出力値取得手段、前記操作デバイスの所定の第1保持状態に応じた前記出力値を、第1基準値として取得する第1基準値取得手段、前記操作デバイスの前記第1保持状態とは異なる所定の第2保持状態に応じた前記出力値を、第2基準値として取得する第2基準値取得手段、及び前記取得した出力値と、前記第1及び第2基準値とに基づいて、当該取得した出力値に応じた前記操作デバイスの保持状態を示す状態値を算出する状態値算出手段、としてコンピュータを機能させるためのプログラムである。このプログラムは、コンピュータ読み取り可能な情報記憶媒体に記憶されてよい。
【発明を実施するための最良の形態】
【0011】
以下、本発明の一実施形態について、図面を参照しながら説明する。
【0012】
図1は、本実施形態に係るエンタテインメントシステム(情報処理装置)のハードウェア構成を示す図である。同図に示すように、エンタテインメントシステム10は、MPU(Micro Processing Unit)11と、メインメモリ20と、画像処理部24と、モニタ26と、入出力処理部28と、音声処理部30と、スピーカ32と、光ディスク読み取り部34と、ハードディスク38と、インタフェース(I/F)40,44と、操作デバイス42と、カメラユニット46と、ネットワークインタフェース48と、を含んで構成されるコンピュータシステムである。
【0013】
図2は、MPU11の構成を示す図である。同図に示すように、MPU11は、メインプロセッサ12と、サブプロセッサ14a,14b,14c,14d,14e,14f,14g,14hと、バス16と、メモリコントローラ18と、インタフェース(I/F)22と、を含んで構成される。
【0014】
メインプロセッサ12は、図示しないROM(Read Only Memory)に記憶されるオペレーティングシステム、例えばDVD(Digital Versatile Disk)−ROM等の光ディスク36から読み出されるプログラム及びデータや、通信ネットワークを介して供給されるプログラム及びデータ等に基づいて、各種情報処理を行ったり、サブプロセッサ14a乃至14hに対する制御を行ったりする。
【0015】
サブプロセッサ14a乃至14hは、メインプロセッサ12からの指示に従って、各種情報処理を行ったり、エンタテインメントシステム10の各部を、例えばDVD−ROM等の光ディスク36から読み出されるプログラム及びデータや、通信ネットワークを介して供給されるプログラム及びデータ等に基づいて制御したりする。
【0016】
バス16は、アドレス及びデータをエンタテインメントシステム10の各部でやり取りするためのものである。メインプロセッサ12、サブプロセッサ14a乃至14h、メモリコントローラ18、インタフェース22は、バス16を介して相互にデータ授受可能に接続される。
【0017】
メモリコントローラ18は、メインプロセッサ12及びサブプロセッサ14a乃至14hからの指示に従って、メインメモリ20へのアクセスを行う。メインメモリ20には、光ディスク36やハードディスク38から読み出されたプログラム及びデータや、通信ネットワークを介して供給されたプログラム及びデータが必要に応じて書き込まれる。メインメモリ20はメインプロセッサ12やサブプロセッサ14a乃至14hの作業用としても用いられる。
【0018】
インタフェース22には画像処理部24及び入出力処理部28が接続される。メインプロセッサ12及びサブプロセッサ14a乃至14hと、画像処理部24又は入出力処理部28と、の間のデータ授受はインタフェース22を介して行われる。
【0019】
画像処理部24は、GPU(Graphical Processing Unit)とフレームバッファとを含んで構成される。GPUは、メインプロセッサ12やサブプロセッサ14a乃至14hから供給される画像データに基づいてフレームバッファに各種画面を描画する。フレームバッファに形成された画面は、所定のタイミングでビデオ信号に変換されてモニタ26に出力される。なお、モニタ26には例えば家庭用テレビ受像機が用いられる。
【0020】
入出力処理部28には、音声処理部30、光ディスク読み取り部34、ハードディスク38、インタフェース40及び44、並びにネットワークインタフェース48が接続される。入出力処理部28は、メインプロセッサ12及びサブプロセッサ14a乃至14hと、音声処理部30、光ディスク読み取り部34、ハードディスク38、インタフェース40及び44、ネットワークインタフェース48と、の間のデータ授受を制御する。
【0021】
音声処理部30は、SPU(Sound Processing Unit)とサウンドバッファとを含んで構成される。サウンドバッファには、光ディスク36やハードディスク38から読み出されたゲーム音楽、ゲーム効果音やメッセージなどの各種音声データが記憶される。SPUは、これらの各種音声データを再生してスピーカ32から出力させる。なお、スピーカ32には例えば家庭用テレビ受像機の内蔵スピーカが用いられる。
【0022】
光ディスク読み取り部34は、メインプロセッサ12及びサブプロセッサ14a乃至14hからの指示に従って、光ディスク36に記憶されたプログラムやデータを読み取る。なお、エンタテインメントシステム10は、光ディスク36以外の他のコンピュータ読み取り可能な情報記憶媒体に記憶されたプログラムやデータを読み取り可能に構成されてもよい。
【0023】
光ディスク36は例えばDVD−ROM等の一般的な光ディスク(コンピュータ読み取り可能な情報記憶媒体)である。また、ハードディスク38は一般的なハードディスク装置である。光ディスク36やハードディスク38には各種プログラムやデータがコンピュータ読み取り可能に記憶される。
【0024】
インタフェース(I/F)40,44は、操作デバイス42やカメラユニット46等の各種周辺機器を接続するためのインタフェースである。このようなインタフェースとしては、例えばUSB(Universal Serial Bus)インタフェースが用いられる。また、例えばBluetooth(登録商標)インタフェースなどの無線通信インタフェースが用いられてもよい。
【0025】
操作デバイス42は汎用操作入力手段であり、ユーザが各種操作(例えばゲーム操作)を入力するために用いられる。入出力処理部28は、所定時間(例えば1/60秒)ごとに操作デバイス42の各部の状態をスキャンし、その結果を表す操作信号をメインプロセッサ12やサブプロセッサ14a乃至14hに供給する。メインプロセッサ12やサブプロセッサ14a乃至14hは、ユーザによって行われた操作の内容をその操作信号に基づいて判断する。なお、エンタテインメントシステム10は複数の操作デバイス42を接続可能に構成されており、各操作デバイス42から入力される操作信号に基づいて、メインプロセッサ12やサブプロセッサ14a乃至14hが各種処理を実行するようになっている。
【0026】
カメラユニット46は、例えば公知のデジタルカメラを含んで構成され、白黒、グレイスケール又はカラーの撮影画像を所定時間(例えば1/60秒)ごとに入力する。本実施の形態におけるカメラユニット46は、撮影画像をJPEG(Joint Photographic Experts Group)形式の画像データとして入力するようになっている。また、カメラユニット46は、例えばレンズをプレイヤに向けた状態でモニタ26の上に設置され、ケーブルを介してインタフェース44に接続される。ネットワークインタフェース48は入出力処理部28と通信ネットワークとに接続されており、エンタテインメントシステム10が通信ネットワークを介して他のエンタテインメントシステム10とデータ通信するのを中継するようになっている。
【0027】
また、本実施形態において、操作デバイス42は、ユーザによる当該操作デバイス42の保持状態を示す信号を出力する手段(例えば、操作デバイス42の姿勢や運動を検知するモーションセンサ等)を備えている。具体例として、操作デバイス42は、図3に示すように、その表面に、方向キーやアナログデバイス、操作ボタン、その他のキー(図中「A」ないし「D」と描く)を備えており、その内部に加速度センサ51及びジャイロセンサ52を備える。加速度センサ51及びジャイロセンサ52は、後述するように、操作デバイス42の保持状態を示す信号(センサ信号)をそれぞれ出力する。なお、本実施形態においては、加速度センサ51及びジャイロセンサ52が出力するセンサ信号は、いずれも電圧信号であることとする。
【0028】
図4は、操作デバイス42内部の概略の回路構成を示す図である。操作デバイス42は、図4に示すように、加速度センサ51と、ジャイロセンサ52と、信号出力部53と、アナログデジタル(A/D)コンバータ54a及び54bと、基準信号入力部55と、記憶部56と、インタフェース(I/F)57と、を含んで構成される。
【0029】
加速度センサ51は、梁に支持された錘を内蔵し、当該錘にかかる加速度によって、錘が変位して、それにより梁に生じるたわみ量を検出することで錘にかかる加速度を検出する。加速度センサ51は、互いに略直交する3軸方向の加速度をそれぞれ検出する、3軸加速度センサであってもよい。具体例として、図3に示したように、加速度センサ51は、操作デバイス42の筐体内部に固定されており、互いに直交するx軸、y軸、及びz軸の3つの基準軸が設定されている。ここで、例えばx軸は操作デバイス42の長手方向(左右方向)、y軸は操作デバイス42の奥行方向(前後方向)、z軸は操作デバイス42の厚み方向(図3において紙面に対して鉛直手前側の方向)にそれぞれ対応させてもよい。そして、加速度センサ51は、3つの基準軸のそれぞれに対する加速度を検知し、検知した加速度に応じた3つの電圧信号を、センサ信号として出力する。
【0030】
図5は、加速度センサ51が検知するいずれかの軸に対する加速度と、検知した加速度に応じて出力する電圧信号と、の対応関係を模式的に示すグラフである。図5に示すように、加速度センサ51は加速度に略比例する電圧信号を出力し、加速度を検知しない状態では基準電圧信号Varを出力する。出力される電圧信号の基準電圧信号Varに対する高低により、各軸について、その正負いずれの方向に加速度が生じているかを検知できる。なお、図において1Gは、重力加速度に相当する加速度を示している。
【0031】
ジャイロセンサ52は、操作デバイス42のz軸(ジャイロ基準軸)を中心とした回転の角速度を検知し、当該検知した角速度に応じたセンサ信号を出力する。例えばジャイロセンサ52は、圧電素子を振動させ、当該圧電素子の回転によって生じるコリオリ力に応じた振動を検知する圧電振動型ジャイロセンサである。なお、以下では、ジャイロセンサ52が角速度を検知しない状態(操作デバイス42がz軸に対して回転していない状態)において出力する電圧信号を、基準センサ信号Vgrという。
【0032】
エンタテインメントシステム10は、加速度センサ51の場合と同様に、ジャイロセンサ52が出力するセンサ信号の基準センサ信号Vgrに対する高低によって、z軸に対していずれの向きに回転が生じているかを検知できる。具体例として、図3におけるRa方向(紙面に向かって時計回り方向)に操作デバイス42が回転している場合、基準センサ信号Vgrより高い電圧信号が出力され、図3におけるRb方向(紙面に向かって反時計回り方向)に操作デバイス42が回転している場合には、基準センサ信号Vgrより低い電圧信号が出力される。エンタテインメントシステム10は、このジャイロセンサ52の出力を一定時間ごとにサンプリングし、積分演算を行うことで、操作デバイス42のz軸に対する回転の変位量(回転角)を取得できる。
【0033】
信号出力部53は、ジャイロセンサ52が出力するセンサ信号と、所与の基準信号と、の差に応じた出力信号を出力する。例えば信号出力部53は、図4に例示する回路構成の増幅回路である。この増幅回路は、ジャイロセンサ52が出力する電圧信号と、所与の電圧信号(以下、増幅基準信号Vrという)と、の電位差を増幅して得られる電圧信号を、出力信号として出力する。信号出力部53の増幅によって得られる出力信号は、A/Dコンバータ54aに入力される。
【0034】
この増幅回路による増幅は、ジャイロセンサ52が出力するセンサ信号の角速度に対する感度が低い場合(すなわち、センサから出力される電圧信号の変動幅が小さい場合)に必要となる。ここで、増幅基準信号Vrが基準センサ信号Vgrと乖離していると、ジャイロセンサ52から出力されるセンサ信号は基準センサ信号Vgrに対して非対称に増幅されることとなる。その結果、特に乖離の度合いが大きい場合には、回路が想定する電圧変動範囲を超えてしまい、正しく増幅ができなくなるおそれがある。そのため、増幅回路に対して入力される増幅基準信号Vrを、基準センサ信号Vgrに応じて制御する必要がある。本実施形態における増幅基準信号Vrの制御方法については、後述する。
【0035】
A/Dコンバータ54a及び54bは、電圧信号などのアナログ信号を、所定範囲のデジタル出力信号に変換する回路である。本実施形態において、A/Dコンバータ54aは、信号出力部53が出力する増幅後の電圧信号を、デジタル出力信号に変換し、インタフェース57に対して出力する。また、A/Dコンバータ54bは、加速度センサ51が出力する各基準軸の加速度に応じた3つの電圧信号を、それぞれデジタル出力信号に変換し、インタフェース57に対して出力する。ここで、A/Dコンバータ54a及び54bが出力するデジタル出力信号は、いずれも10ビットの分解能を有し、0から1023までの範囲の値をとり得ることとする。
【0036】
基準信号入力部55は、インタフェース57を介して所与の基準デジタル信号Drを取得し、当該取得した基準デジタル信号Drに応じた電圧信号を、増幅基準信号Vrとして信号出力部53に入力する。本実施形態において、基準信号入力部55は、PWM(Pulse Width Modulation)信号ジェネレータ55aと、平滑回路55bと、を含んでなる。
【0037】
PWM信号ジェネレータ55aは、後述する基準信号制御部62bが出力する基準デジタル信号Drを、インタフェース57を介して取得する。そして、取得した基準デジタル信号Drに応じたデューティー比によりパルス幅変調がなされた電圧信号(PWM信号)を生成し、当該PWM信号を平滑回路55bに対して出力する。なお、PWM信号ジェネレータ55aに入力される基準デジタル信号Drは、ここでは8ビットの分解能を有し、0から255までの範囲の値をとり得ることとする。
【0038】
平滑回路55bは、例えば図4に示すような回路構成のローパスフィルタであって、PWM信号ジェネレータ55aによって生成されたPWM信号の平滑化を行う。これによって、基準デジタル信号Drに応じた大きさの電圧信号が生成され、増幅基準信号Vrとして信号出力部53に入力される。
【0039】
なお、ここで説明した基準信号入力部55の構成は例示である。基準信号入力部55は、例えばデジタルアナログコンバータ等、上記構成とは異なる手段によって基準デジタル信号Drを増幅基準信号Vrに変換し、信号出力部53に対して出力することとしてもよい。
【0040】
記憶部56は、EEPROM(Electronically Erasable and Programmable Read Only Memory)等であって、操作デバイス42の生産工程などにおいて書き込まれたデータを記憶する。記憶部56に記憶されたデータは、インタフェース57を介して読み出され、エンタテインメントシステム10のMPU11が実行する処理に供される。なお、本実施形態において記憶部56に記憶されるデータの内容については、後述する。
【0041】
インタフェース57は、USBインタフェースやBluetooth(登録商標)インタフェースなどであって、インタフェース40と操作デバイス42との間のデータの送受信を中継する。
【0042】
以下では、以上のハードウェア構成を有するエンタテインメントシステム10が、加速度センサ51やジャイロセンサ52の出力するセンサ信号を用いて、操作デバイス42の保持状態に応じた処理を行う場合に実現する機能について、説明する。
【0043】
図6は、この場合のエンタテインメントシステム10が実現する機能の一例を示す機能ブロック図である。エンタテインメントシステム10は、機能的に、図6に示すように、出力値取得部61と、ジャイロセンサ信号制御部62と、キャリブレーション処理部63と、フィルタリング処理部64と、アプリケーション実行部65と、を含んで構成される。これらの機能は、例えばMPU11が、メインメモリ20に格納されるプログラムに従って動作することにより、実現できる。このプログラムは、インターネット等の通信ネットワークを介して提供されるものであってもよいし、光ディスク、メモリカード等のコンピュータで読み取り可能な各種情報記憶媒体に格納されて提供されるものであってもよい。
【0044】
出力値取得部61は、操作デバイス42の保持状態に応じて操作デバイス42が出力する出力値を取得する。ここでは具体的に、A/Dコンバータ54aが出力する操作デバイス42の角速度を示すデジタル出力信号を、出力値Dgとして取得する。また、A/Dコンバータ54bが出力する操作デバイス42に対する各基準軸の加速度を示す3つのデジタル出力信号を、出力値Daとして取得する。出力値取得部61は、操作デバイス42のインタフェース57及びエンタテインメントシステム10本体のインタフェース40を介して、出力値を取得する。なお、出力値取得部61は、所定時間ごと(例えば垂直同期信号が入力されたタイミングごと)に継続して出力値を取得することとする。
【0045】
ジャイロセンサ信号制御部62は、出力値取得部61が取得する出力値のうち、ジャイロセンサ52の出力に応じた出力値Dgを用いて、前述した信号出力部53に入力される増幅基準信号Vrの制御を行う。ジャイロセンサ信号制御部62の機能の詳細については、後述する。
【0046】
キャリブレーション処理部63は、出力値取得部61が取得する出力値のうち、加速度センサ51の出力に応じた出力値Daに対して、キャリブレーション処理を行い、結果として得られるデジタル値を操作デバイス42の保持状態を示す状態値Dsとして出力する。また、フィルタリング処理部64は、キャリブレーション処理部63が出力する状態値Dsを取得し、取得した状態値Dsに対して所定のフィルタリング処理を実行することにより、状態値Dsからノイズ性の信号による影響を除去する処理を行う。キャリブレーション処理部63及びフィルタリング処理部64の機能の詳細については、後述する。
【0047】
アプリケーション実行部65は、例えば光ディスク36等から読み出されてメインメモリ20に格納されたアプリケーションプログラムを実行することにより、ゲーム等の処理を実行する。ここで、アプリケーション実行部65は、ジャイロセンサ信号制御部62及び/又はフィルタリング処理部64から出力されるデータを用いて、操作デバイス42の保持状態に応じた処理を実現する。
【0048】
次に、ジャイロセンサ信号制御部62の機能例について、図7の機能ブロック図に基づいて説明する。ジャイロセンサ信号制御部62は、機能的に、図7に示すように、基準センサ信号推定部62aと、基準信号制御部62bと、出力値補正部62cと、初期値設定部62dと、を含んで構成される。これらの機能は、例えばエンタテインメントシステム10に予め格納されたシステムソフトウェアをMPU11が実行することによって実現される。
【0049】
基準センサ信号推定部62aは、信号出力部53から出力される出力信号に基づいて、ジャイロセンサ52が角速度を検知しない状態において出力する基準センサ信号Vgrを推定する。ここでは具体的に、基準センサ信号推定部62aは、基準センサ信号Vgrと、後述する基準信号制御部62bによって制御される増幅基準信号Vrと、に応じて出力される出力値Dgの推定値(基準センサ信号推定値De)を算出することにより、基準センサ信号Vgrの推定を行う。また、基準センサ信号推定部62aは、出力値取得部61が出力値Dgを所定時間ごとに取得して得られる出力値列に基づいて、基準センサ信号推定値Deの算出を行う。
【0050】
ここで、基準センサ信号推定部62aが出力値列に基づいて基準センサ信号推定値Deを算出する推定値算出処理の具体例について、説明する。以下の例では、基準センサ信号推定部62aは、出力値列を構成する出力値Dgの中から、処理の対象として用いる出力値Dgを選択する。そして、当該選択された出力値Dgの代表値(例えば平均値)を算出することにより、基準センサ信号推定値Deを算出する。
【0051】
具体例として、基準センサ信号推定部62aは、出力値列を所定の時間区間に区切って得られる複数の評価区間Pnのそれぞれについて、当該各評価区間Pnにおける出力値Dgの代表値を算出し、当該算出された代表値に基づいて基準センサ信号の推定を行う。ここで評価区間Pn(n=1,2,3・・・)には、出力値列において連続する所定のサンプル数の出力値Dgが属している。基準センサ信号推定部62aは、この評価区間ごとに、各評価区間に属する出力値Dgの平坦性(変動の程度)を示す評価指数Enを算出し、評価指数Enに基づいて基準センサ信号推定値Deの算出対象として用いる評価区間を選択する。そして、選択した評価区間における出力値Dgの代表値(平均値等)に基づいて、基準センサ信号推定値Deを算出する。
【0052】
以下、基準デジタル信号算出処理の具体例を、図8のフロー図に基づいて説明する。このフローによる処理は、出力値取得部61が各評価区間Pnに属する所定のサンプル数の出力値Dgを取得するごとに、実行される。
【0053】
まず基準センサ信号推定部62aは、処理対象となる現在の評価区間Pnについて、当該評価区間Pnに属する出力値Dgの最大値(区間最大値)Dmaxn、最小値(区間最小値)Dminn、及び平均値(区間平均値)Davgnを算出する(S1)。続いて、S1で算出された区間最大値Dmaxn、区間最小値Dminn、及び区間平均値Davgnに基づいて、以下の計算式により、評価指数Enを算出する(S2)。
【数1】

【0054】
この計算式の例においては、評価指数Enは、区間最大値Dmaxn及び区間最小値Dminnの区間平均値Davgnに対する分散の和となっている。これにより、評価指数Enは、評価区間Pnにおける出力値Dgが一定に近いほど、小さな値となる。通常、ユーザが操作デバイス42を操作している状況においては、出力値Dgの変動が大きくなり、逆にユーザが操作デバイス42を操作していない場合には出力値Dgの変動は小さくなると推定される。したがって、評価指数Enが小さく、出力値Dgの変動の小さい状態における出力値Dgは、ジャイロセンサ52の基準センサ信号Varに応じて出力された値に近いものと推定される。
【0055】
ただし、操作デバイス42の回転の角速度がジャイロセンサ52の測定範囲を越える状況にある場合、センサ信号は最大値又は最小値に飽和してしまう。その結果、このような場合にも出力値Dgは一定になり、評価指数Enの値は小さくなると考えられる。そこで、基準センサ信号推定部62aは、評価区間Pnに属する出力値Dgが所定の上限値THmax及び下限値THminの範囲内(すなわち、THmin<Dg<THmax)に含まれるか否かの判定を行う(S3)。判定の結果、出力値Dgが所定の閾値の範囲内に含まれない場合には、当該評価区間Pnに対する処理を終了する。
【0056】
続いて基準センサ信号推定部62aは、評価指数Enが所定の閾値Eth未満(すなわち、En<Eth)であるか否かを判定する(S4)。判定の結果、評価指数Enが閾値Eth以上であれば、当該評価区間Pnの情報を基準センサ信号推定値Deの推定には使用しないこととし、評価区間Pnに対する処理を終了する。
【0057】
S3及びS4の処理の結果、判定条件が満たされると判定した場合には、基準センサ信号推定部62aは、評価区間Pnの情報を基準センサ信号Varの推定に用いることとする。この場合、基準センサ信号推定部62aは、S1で算出された区間平均値Davgnを、当該評価区間Pnに属する出力値Dgの代表値として、メインメモリ20内に格納する(S5)。なお、この場合において、メインメモリ20内には、常に所定数の評価区間に係る区間平均値の情報が保持されるよう制御される。すなわち、既に所定数の区間平均値の情報が保持されている場合、基準センサ信号推定部62aは、S5の処理において、新たな区間平均値の情報をメインメモリ20に書き込むとともに、最も古い区間平均値の情報を削除する。
【0058】
さらに、基準センサ信号推定部62aは、S5の処理によってメインメモリ20内に格納された所定数の区間平均値の情報に基づいて、基準センサ信号推定値Deの算出を行う。ここで、S3及びS4の条件を満たす評価区間の区間平均値Davgnが所定数得られたとしても、この中には基準センサ信号Varに対応しない情報が含まれている可能性がある。なぜなら、ユーザが操作デバイス42を一定の角速度でゆっくり動かした場合など、特殊な状況においては、ジャイロセンサ52が角速度を検知しない状態でないにもかかわらずS3及びS4の判定条件を満たすことがありうるからである。
【0059】
そこで、基準センサ信号推定部62aは、S5の処理によってメインメモリ20内に格納されている複数の区間平均値Davgnについて、その最大値と最小値との差Wが所定の閾値Wth未満(すなわち、W<Wth)であるか否かを判定する(S6)。判定の結果、Wの値が所定の閾値以上と判定した場合には、処理を終了する。これにより、複数の区間平均値Davgnの間でばらつきがある場合には、その時点での基準センサ信号推定値Deの算出を中止することができる。
【0060】
S6の判定条件が満たされる場合、基準デジタル信号推定部62aは、S5の処理によってメインメモリ20内に格納されている所定数の区間平均値Davgnのさらに平均値を算出することによって、当該算出された平均値を基準センサ信号推定値Deとして決定する(S7)。
【0061】
以上説明した例により、温度等の影響でジャイロセンサ52の使用中に基準センサ信号Vgrが変動した場合であっても、基準センサ信号推定部62aは、この変化した基準センサ信号Vgrに応じた基準センサ信号推定値Deを算出できる。
【0062】
なお、基準センサ信号推定部62aは、上述した例と異なる方法で基準センサ信号推定値Deの算出を行ってもよい。例えば基準センサ信号推定部62aは、互いに異なる長さの複数種類に評価区間についてそれぞれ代表値(平均値等)を算出し、当該算出された複数種類の代表値に基づいて基準センサ信号の推定を行ってもよい。すなわち、上述した例においては、基準センサ信号推定部62aは、比較的短周期の評価区間を用いて基準センサ信号推定値Deの算出を行っている。この場合、基準センサ信号Varが使用中に変動した場合には、比較的早くこの変動に応じた基準センサ信号推定値Deの更新を行うことができる。しかし、一方で、ユーザが操作デバイス42を頻繁に操作している間など、センサ出力が安定しない場合には、基準センサ信号推定値Deの更新を行う頻度が低下する。そこで、この短周期の推定値算出処理によって推定される推定値と、比較的長周期の評価区間による推定値算出処理によって推定される推定値と、のいずれか一方を選択することにより、より精度の高い基準センサ信号推定値Deの算出を実現することとしてもよい。
【0063】
具体例として、基準センサ信号推定部62aは、上述した短周期の推定値算出処理のほかに、この推定値算出処理によって算出されたDavgnを出力値Dgに代わる入力として用いて、短周期の推定値算出処理と同様の処理を実行してもよい。これは、より長周期の評価区間による推定値算出処理であって、出力値列に対してローパスフィルタによるフィルタリングがなされた後の信号列に対する推定値算出処理に相当する。そして、短周期の推定値算出処理によって基準センサ信号推定値Deが更新された場合には、長周期の推定値算出処理の処理結果をリセットする制御を行う(すなわち、これまで蓄積された長周期の評価区間の平均値に関する情報を削除する)。一方、短周期の推定値算出処理による基準センサ信号推定値Deの更新が一定時間なされない場合には、長周期の推定値算出処理によって得られた基準センサ信号推定値Deを、基準信号制御部62bに対して出力することとする。こうすれば、可能な場合には、基準センサ信号Vgrに対する追従性のよい短周期の処理によって基準センサ信号推定値Deの更新を行い、一方で、短周期の処理によって基準センサ信号推定値Deの算出が行えない状況においては、長周期の処理によって基準センサ信号推定値Deの更新を行うことができる。
【0064】
なお、アプリケーション実行部65は、このような基準センサ信号推定部62aによる基準センサ信号推定値Deの算出を可能にするために、所定のタイミングで、ユーザに対して操作デバイス42を静止させる指示情報を提示してもよい。この指示情報に応じてユーザが操作デバイス42を静止させることで、基準センサ信号推定部62aは素早く精度のよい基準センサ信号推定値Deの算出を行うことができる。
【0065】
また、上述した例においては、基準センサ信号推定部62aは、出力値取得部61が取得したジャイロセンサ52の出力に応じた出力値Dgのみに基づいて、基準センサ信号Vgrの推定を行うこととしたが、これ以外の情報を用いてもよい。例えば基準センサ信号推定部62aは、加速度センサ51などの他のセンサの出力や、操作デバイス42に備えられたボタン等の状態を示す情報など、ユーザの操作デバイス42に対する操作に関する情報を取得する。そして、この操作デバイス42に対するユーザの操作に関する情報に基づいて、基準センサ信号の推定を行う。
【0066】
具体例として、基準センサ信号推定部62aは、前述した評価指数Enとともに、操作デバイス42に対するユーザの操作に関する情報を用いて、基準センサ信号推定値Deの算出に使用する出力値Dgを選択する。これにより、操作デバイス42の状態に応じて基準センサ信号Vgrの推定に用いるジャイロセンサ52の出力値を選択でき、推定の精度を向上できる。さらに、基準センサ信号推定部62aは、操作デバイス42の使用時間や、アプリケーション実行部65が実行している処理の内容等に関する情報を用いて、基準センサ信号Vgrの推定を行うこととしてもよい。
【0067】
基準信号制御部62bは、基準センサ信号推定部62aによって推定された基準センサ信号に応じて、信号出力部53に入力される増幅基準信号Vrを変化させる制御を実行する。ここでは具体的に、基準信号制御部62bは、基準センサ信号推定部62aによって算出された基準センサ信号推定値Deに応じて、基準デジタル信号Drの値を決定する。そして、この基準デジタル信号Drを操作デバイス42のインタフェース57を介して基準信号入力部55に入力することにより、増幅基準信号Vrの制御を行う。
【0068】
具体例として、基準信号制御部62bは、基準センサ信号Vgrに応じて得られる出力値Dgが、所定の目標値Dcに一致するように、基準センサ信号推定値Deに応じて基準デジタル信号Drを変化させる。すなわち、基準センサ信号推定値Deと、所定の目標値Dcと、の差に応じて、現在出力している基準デジタル信号Drを変化させる。こうすれば、ジャイロセンサ52から基準センサ信号Vgrが出力されている場合、基準信号制御部62bの制御に応じて出力される出力値Dgは所定の目標値Dcに略一致することとなる。これにより、出力値Dgは目標値Dcを振幅中心として角速度の変動を示す値となる。
【0069】
この場合の目標値Dcは、例えばA/Dコンバータ54aが出力するデジタル出力信号のとり得る値の範囲の中央値(ここでは512)に設定される。また、アプリケーション実行部65の指示に応じて決定される値であってもよい。
【0070】
ここで、基準デジタル信号Drの分解能及びこれに応じて基準信号入力部55が出力する増幅基準信号Vrの精度が十分高ければ、基準センサ信号Vgrに応じて出力される出力値Dgを正確に目標値Dcに一致させるような微調整が可能となる。しかしながら、回路構成上の制約などによって、ある程度粗い精度でしか増幅基準信号Vrの制御ができない場合がある。この場合、以下に説明する方法によって、基準デジタル信号Drの調整と、出力値Dgに対する補正処理と、を組み合わせることで、基準センサ信号推定値Deに応じた出力値Dgの微調整が可能となる。
【0071】
例えば本実施形態において、信号出力部53は、入力される2つの電圧信号の電位差を−A倍に増幅する増幅回路であることとする。この場合、ジャイロセンサ52が出力するセンサ信号Vgと、信号出力部53が出力する出力信号Voとの間には、以下の関係式が成り立つ。
Vo−Vr=−A(Vg−Vr)
この関係式を変形すると、以下の式になる。
Vo=−A・Vg+(A+1)Vr
上記関係式より、増幅基準信号Vrの変化量に対する出力信号Voの変化量の比率は、(A+1)となる。
【0072】
さらに、上述したように、本実施形態において、出力信号Voに応じてA/Dコンバータ54aが出力するデジタル出力信号(すなわち出力値Dg)の分解能は10ビットである。また、基準信号入力部55に入力される基準デジタル信号Drの分解能は8ビットであり、この基準デジタル信号Drに応じて増幅基準信号Vrは制御される。この出力値Dgと基準デジタル信号Drの分解能の比率は、4倍(2ビット×2)となる。
【0073】
以上のことから、本実施形態において、基準デジタル信号Drの変化量に対する出力値Dgの変化量の比率は、4(A+1)となる。すなわち、基準デジタル信号Drの変化量ΔDrと、この変化に応じた出力値Dgの変化量ΔDgと、の間に、以下の関係式が成り立つ。
ΔDg=4(A+1)ΔDr
ここで、基準デジタル信号Drの変化量に対する出力値Dgの変化量の比率を、以下では変動比率Rとする。この関係式から分かるように、本実施形態においては、基準デジタル信号Drを1変化させるごとに、出力値DgはR(=4(A+1))ずつ変化することとなる。ただし、Aは整数値とは限らず、その場合、出力値Dgの変化量ΔDgは上記計算式によって得られた値を例えば四捨五入等によって整数に変換した値となる。
【0074】
以上説明したように、本実施形態においては、基準デジタル信号Drを変化させるだけでは、出力値Dgを十分精度よく制御することはできない。そこで、ジャイロセンサ信号制御部62は、基準デジタル信号Drの変化で調整しきれない範囲の調整を、出力値Dgに対する補正によって行う。具体例として、基準信号制御部62bは、上述した変動比率Rに基づいて、基準デジタル信号Drの現在の値に対する変化量ΔDrを決定し、決定した変化量を反映した新たな基準デジタル信号Drを基準信号入力部55に対して出力する。また、併せて基準信号制御部62bは、変動比率Rに基づいて、当該新たな基準デジタル信号Drの入力に応じて基準センサ信号Vgrに対して出力されると想定される出力値Dgと、基準センサ信号推定部62aによって推定された基準センサ信号Vgrに対して出力されるべき出力値Dg(ここでは目標値Dc)と、の差を補正する補正値ΔDgを算出する。
【0075】
例えば基準信号制御部62bは、以下の関係式を満たすように、基準デジタル信号Drの変化量ΔDr及び補正値ΔDgを算出する。
Dc−De=R・ΔDr+ΔDg
ここでΔDrは、ΔDgの絶対値がR未満となるような整数値に決定される。例えば、Dc−DeをRで割った商がΔDr、余りがΔDgとなる。そして、基準信号制御部62bは、現在出力している基準デジタル信号DrにΔDrを加算した値を新たな基準デジタル信号Drとして出力するとともに、メインメモリ20に格納されている補正値ΔDgを算出された値に更新する。この場合、新たな基準デジタル信号Drの入力に応じて基準センサ信号Vgrに対して出力されると想定される出力値Dgは、De+R・ΔDrとなる。なお、Dc−Deの絶対値がR未満の場合、基準信号制御部62bは基準デジタル信号Drを変化させることなく、補正値ΔDgの更新のみ実行する。
【0076】
出力値補正部62cは、基準信号制御部62bが算出し、メインメモリ20内に格納した補正値ΔDgに基づいて、出力値取得部61が取得した出力値Dgの補正を行う。すなわち、基準信号制御部62bが基準デジタル信号Drを変化させた後、当該変化に応じて出力される出力値Dgに対して、基準信号制御部62bが算出したΔDgを加算することにより、出力値Dgの補正を行う。これにより、基準センサ信号Vgrに対して得られる出力値Dgが目標値Dcに略一致するように、出力値Dgを補正できる。
【0077】
本実施形態においては、この補正された出力値がアプリケーション実行部65に対して出力される。アプリケーション実行部65は、補正された出力値と、目標値Dcと、の差を積分演算することで、操作デバイス42の回転角に関する情報を取得できる。
【0078】
初期値設定部62dは、基準デジタル信号Drの初期値を取得し、基準信号制御部62bに対して出力する。初期値設定部62dは、例えばエンタテインメントシステム10の電源投入時や、操作デバイス42がエンタテインメントシステム10に接続された時点などにおいて、操作デバイス42の記憶部56に格納されたデータを読み出すことで、基準デジタル信号Drの初期値を取得する。基準信号制御部62bは、初期値設定部62dが初期値を取得した場合、当該取得された初期値に応じて基準デジタル信号Drを決定し、基準信号入力部55に対して出力する。
【0079】
また、初期値設定部62dは、出力値補正部62cが出力値Dgの補正に使用する補正値ΔDgの初期値についても、基準デジタル信号Drの初期値とともに取得し、メインメモリ20に格納することとしてもよい。
【0080】
本実施形態においては、出力値Dgの時間変化に応じて基準デジタル信号Drを制御している。そのため、基準デジタル信号Drの初期値が例えば0などの所定値の場合、基準デジタル信号Drが基準センサ信号Vgrに応じた値に調整されるまでに、時間がかかってしまう場合がある。そこで、本実施形態においては、予め操作デバイス42の記憶部56に格納された基準デジタル信号Drの初期値に応じて、基準デジタル信号Drの制御を行うこととしている。
【0081】
この場合において、記憶部56に格納される基準デジタル信号Drの初期値は、例えば操作デバイス42の生産工程などにおいて、操作デバイス42を静止させた状態で、基準デジタル信号Drを変化させてA/Dコンバータ54aが出力するデジタル出力信号を測定することによって、このデジタル出力信号が目標値Dcに最も近づくように決定される。また、この場合の基準デジタル信号Drの初期値に対して出力されるデジタル出力信号と、目標値Dcと、の差が、補正値ΔDgの初期値として決定される。
【0082】
以上説明した処理によって、ジャイロセンサ信号制御部62は、信号出力部53が出力した出力信号に基づいて推定された基準センサ信号に応じて、信号出力部53に入力される基準信号を制御することにより、ジャイロセンサ52が出力するセンサ信号を、振幅中心がセンサの個体差によらない所定値(ここでは目標値Dc)となるような出力信号に変換できる。これにより、アプリケーション実行部65は、得られた出力信号を用いて積分演算を行うことで、操作デバイス42のジャイロ基準軸に対する回転角の情報を精度よく求めることができる。
【0083】
次に、キャリブレーション処理部63の機能例について、図9の機能ブロック図に基づいて説明する。キャリブレーション処理部63は、機能的に、図9に示すように、基準値取得部63aと、状態値算出部63bと、を含んで構成される。これらの機能は、例えばエンタテインメントシステム10に予め格納されたシステムソフトウェアをMPU11が実行することによって実現される。
【0084】
基準値取得部63aは、操作デバイス42の所定の保持状態(基準状態)に応じた出力値を、基準値として取得する。基準値は、例えば操作デバイス42の生産工程において、操作デバイス42を基準状態に保ってセンサ出力を測定等することによって取得され、記憶部56に格納される。基準値取得部63aは、例えばエンタテインメントシステム10の電源投入時や、操作デバイス42がエンタテインメントシステム10に接続された時点などにおいて、記憶部56に格納されたデータを読み出すことで基準値を取得する。読み出された基準値は、メインメモリ20に格納される。
【0085】
ここで、記憶部56に格納される基準値の具体例について説明する。記憶部56に格納される基準値は、操作デバイス42の所定の第1保持状態(第1基準状態)に応じた出力値(第1基準値)と、第1基準状態とは異なる所定の第2保持状態(第2基準状態)に応じた出力値(第2基準値)と、を含む。ここで、第1基準状態及び第2基準状態は、出力値の特に精度が要求される範囲に応じて決定される。
【0086】
また、記憶部56は、所定の第3保持状態(第3基準状態)に応じた出力値(第3基準値)を含んでもよい。例えばこの場合の第3基準状態は、第1基準状態と第2基準状態の間の保持状態であって、加速度センサ51が加速度を検知しない状態など、操作デバイス42の標準的な保持状態を示している。なお、操作デバイス42の標準的な保持状態が、前述した第1基準状態又は第2基準状態のいずれかに一致する場合などにおいては、記憶部56は必ずしも第3基準状態に応じた第3基準値を保持しなくともよい。
【0087】
これらの基準状態は、キャリブレーション処理部63によるキャリブレーション処理の対象となる複数種類の出力値のそれぞれについて、予め定められているものとする。本実施形態においては、加速度センサ51が測定する3つの基準軸の加速度に応じた3種類の出力値が、それぞれキャリブレーション処理の対象となる。したがって、3つの基準軸のそれぞれについて複数の基準状態が定められている。この各基準軸の基準状態に応じた出力値が、それぞれ測定され、基準値として記憶部56に格納される。
【0088】
具体例として、ここではx軸及びy軸の加速度に応じた出力値について、各軸の正方向が鉛直方向(重力方向)に一致する状態を第1基準状態とする。この場合、第1基準値は、+1Gの重力加速度に応じた出力値となる。また、各軸の負方向が鉛直方向に一致する状態を第2基準状態とする。この場合、第2基準値は、−1Gの重力加速度に応じた出力値となる。さらに、各軸が鉛直方向に対して水平となった状態を、第3基準状態とする。この場合、第3基準値は、0Gの重力加速度に応じた出力値となる。図10(a),(b)及び(c)は、x軸の加速度に応じた出力値についての、基準状態の例を示す説明図である。図10(a)が第1基準状態を、図10(b)が第2基準状態を、図10(c)が第3基準状態を、それぞれ示している。なお、いずれの図についても、図3に例示する操作デバイス42をy軸の正方向に向かって見た様子を示している。また、図10(c)の状態は、y軸の第3基準状態でもある。
【0089】
また、z軸の加速度に応じた出力値については、z軸が鉛直方向に対して水平となった状態を、第1基準状態とする。この場合、第1基準値は、0Gの重力加速度に応じた出力値となる。また、z軸の負方向が鉛直方向に一致する状態を第2基準状態とする。この場合、第2基準値は、−1Gの重力加速度に応じた出力値となる。
【0090】
図11は、以上説明した例において、操作デバイス42の記憶部56に格納される基準値の一例を示す説明図である。なお、この例においては、z軸についての第3基準状態はないものとする。これは、一般的にユーザが操作デバイス42を上下逆になるまで傾けて用いることは少ないと考えられるため、加速度センサ51を操作デバイス42の傾きを検出する用途に用いる場合、x軸及びy軸については−1Gから+1Gまで、z軸については−1Gから0Gまでの範囲を精度よく測定することが求められるからである。
【0091】
状態値算出部63bは、出力値取得部61が取得した出力値Daと、基準値取得部63aが取得してメインメモリ20に格納した第1及び第2基準値と、に基づいて、出力値Daに応じた操作デバイス42の保持状態を示す状態値Dsを算出し、出力する。状態値算出部63bは、出力値取得部61によって出力値Daが取得されるごとに状態値Dsを算出する処理を実行し、各出力値Daに対して補正がなされた状態値Dsを出力する。なお、状態値算出部63bは、さらに第3基準値も用いて、状態値Dsを算出することとしてもよい。
【0092】
ここで、状態値算出部63bが状態値Dsを算出する状態値算出処理の具体例について、説明する。まず、x軸の加速度に応じた出力値Daを補正して、状態値Dsを算出する処理の例について、説明する。この場合、状態値算出部63bは、以下の計算式により、第1及び第2基準値を用いた直線補間を行うことで、状態値Dsを算出する。
【数2】

この計算式において、R1x,R2x及びR3xは、それぞれ第1、第2及び第3基準値を示しており、C1x及びC2xは所定の補正パラメタを示している。
【0093】
操作デバイス42が第3基準状態(ここでは0Gの重力加速度に対応した状態)にある場合、出力値Daは第3基準値R3xになると想定される。この場合、状態値算出処理によって算出される状態値Dsは、固定値であるC2xになる。したがって、第3基準値R3xがセンサの個体差等によって異なる値になっても、状態値算出部63bは、操作デバイス42の第3基準状態を示す状態値として常に所定の値C2xを出力する。このC2xは、例えばA/Dコンバータ54bが出力するデジタル信号のとり得る値の範囲の中央値(ここでは512)に設定される。
【0094】
また、状態値算出処理によって算出される状態値Dsは、係数C1/(R1x−R2x)を比例定数として、出力値Daに比例する値となる。その結果、第1基準状態を示す状態値と、第2基準状態を示す状態値と、の差は、センサの個体差等によらず所定の値C1xになる。したがって、センサの個体差等のために、第1基準状態と第2基準状態との間で、ユーザの一定量の操作に対する出力値Daの変化量が異なったとしても、一定量の操作に対して補正後の状態値Dsの変化量は一定になる。すなわち、重力加速度の変化量に対する状態値Dsの変化量は、常に一定となる。これにより、前述した第3基準状態を示す状態値C2xを基準として、第1基準状態と第2基準状態との間の範囲(注目範囲)において、状態値Dsが正しく操作デバイス42の保持状態を示すこととなり、状態値Dsの精度を向上できる。
【0095】
なお、y軸の加速度に応じた出力値Daを補正する場合も、x軸の場合と同様の計算式によって実現できる。この場合、C1y,C2yはそれぞれC1x,C2xと等しい値であってよい。
【0096】
次に、z軸の加速度に応じた出力値Daを補正する処理の例について、説明する。この場合、状態値算出部63bは、以下の計算式によって状態値Dsを算出する。
【数3】

ここで、(1)式の場合と同様に、R1z及びR2zは、それぞれ第1及び第2基準値を示しており、C1z及びC2zは所定の補正パラメタを示している。この(2)式によれば、第1基準値R1z及び第2基準値R2zは、常に固定値C2z及び(C2z−C1z)に補正されることとなる。
【0097】
z軸については、前述したように、第1基準状態は0Gの重力加速度に、第2基準状態は−1Gの重力加速度に、それぞれ対応している。この両者の間の範囲は、x軸及びy軸の場合における注目範囲の1/2に対応する。したがって、
【数4】

とすることで、いずれの基準軸についても、重力加速度の変化量に対する状態値Dsの変化量が一定になるよう制御できる。また、(2)式においては、(1)式における第3基準値に代えて第1基準値が用いられており、z軸についての第1基準状態はx軸及びy軸の場合の第3基準状態と同様に0Gの重力加速度に対応している。したがって、C2z=C2x=C2yとすることで、各基準軸について、0Gの重力加速度に対する状態値Dsが同じ値になるよう制御できる。
【0098】
また、以上説明した計算式によって算出された状態値Dsが、A/Dコンバータ54bが出力するデジタル出力信号のとり得る値の範囲に含まれない場合、状態値算出部63bは、状態値Dsがこの範囲に含まれるように補正することとしてもよい。すなわち、状態値算出部63bは、算出される状態値が所定の上限値及び下限値の間に含まれるように、状態値を補正する。具体例として、本実施形態においては、計算式によって算出された値が下限値0未満の場合には0を、上限値1023を超える場合には1023を、それぞれ状態値Dsとして出力する。こうすれば、注目範囲における補正後の状態値Dsの精度を保ったまま、出力値Daの全体を、元の出力値Daがとり得る値の範囲に含まれるよう補正し、状態値Dsとして出力できる。これにより、例えば加速度に応じた出力値として10ビットの分解能のデジタル値を取得することを前提にアプリケーションプログラムが設計されている場合、アプリケーション実行部65は、このアプリケーションプログラムをそのまま実行して、キャリブレーション処理部63によるキャリブレーション処理実行後の状態値Dsに応じた処理を実現できる。
【0099】
以上説明した機能によって、キャリブレーション処理部63は、出力値取得部61が取得した出力値Daと、第1及び第2基準状態に応じて予め取得された第1及び第2基準値と、に基づいて状態値Dsを算出することで、注目範囲における状態値Dsの精度を確保しつつ、操作デバイス42の個体差を吸収する補正を行うことができる。
【0100】
次に、フィルタリング処理部64の機能例について、図12の機能ブロック図に基づいて説明する。フィルタリング処理部64は、機能的に、図12に示すように、パラメタセット保持部64aと、パラメタセット選択部64bと、フィルタ演算実行部64cと、を含んで構成される。パラメタセット保持部64aの機能は、メインメモリ20等によって実現できる。また、パラメタセット選択部64b及びフィルタ演算実行部64cの機能は、例えばアプリケーションプログラムとともに光ディスク36等に格納されて提供されるライブラリプログラムをMPU11が実行することによって実現される。
【0101】
パラメタセット保持部64aは、所定のフィルタリング処理に用いられるパラメタを少なくとも一つ含むパラメタセットを、複数保持する。具体例として、パラメタセット保持部64aは、パラメタセット番号と、所定の数のパラメタからなるパラメタセットと、を関連づけるテーブルを保持する。図13は、このようなテーブルに格納される複数のパラメタセットの一例を示す説明図である。
【0102】
パラメタセット選択部64bは、パラメタセット保持部64aが保持している複数のパラメタセットの中から、アプリケーション実行部65の指示に応じて、一のパラメタセットを選択する。例えばパラメタセット選択部64bは、アプリケーション実行部65から通知されるパラメタセット番号に応じて、当該パラメタセット番号に関連づけられたパラメタセットを選択する。
【0103】
フィルタ演算実行部64cは、パラメタセット選択部64bが選択したパラメタセットを用いて、状態値Dsに対する所定のフィルタリング処理を行う。具体的に、フィルタ演算実行部64cは、状態値算出部63bが所定時間ごとに出力する状態値Dsを、状態値列として取得し、当該状態値列に対してフィルタリング処理を行う。
【0104】
フィルタ演算実行部64cが実行するフィルタリング処理は、例えば状態値列の高周波数成分を除去するローパスフィルタ処理である。以下では、フィルタ演算実行部64cが実行するフィルタリング処理がローパスフィルタ処理である場合の具体例について、説明する。
【0105】
この場合、パラメタセット保持部64aが保持する各パラメタセットに含まれるパラメタは、フィルタ処理に用いられるフィルタ係数である。一つのパラメタセットに含まれるパラメタの組を、P1,P2,P3,P4及びP5とすると、ローパスフィルタ処理は具体的に例えば以下の計算式によって実現される。
【数5】

【0106】
ここで、Ds[n]は、n回目のサンプリングにおいて得られる状態値であり、Ds′[n]はフィルタリング後の状態値を示す。また、u[n]は、(3)式によりサンプリングごとに一時的に算出される計算値である。このu[n]は、過去所定回数分の値が一時的にメインメモリ20に格納され、(3)式及び(4)式の演算に用いられる。なお、この計算式は、2次のIIR(Infinite Impulse Response)フィルタによるローパスフィルタ処理の例を示している。このようなフィルタによれば、ユーザの操作に対する状態値Dsの変化の応答速度を比較的犠牲にせずに、ノイズ性の信号を除去することができる。
【0107】
上記の例において、パラメタセット保持部64aが保持する複数のパラメタセットは、それぞれ互いに異なるカットオフ周波数に対応しているものとする。したがって、各パラメタセットを用いたローパスフィルタ処理によって、それぞれ異なる範囲の周波数成分が除去されることとなる。具体例として、状態値Dsを取得するサンプリング周波数が100Hzの場合に、カットオフ周波数25Hz、10Hz及び5Hzにそれぞれ対応した3つのフィルタ係数の組が、パラメタセットとして保持される。この3つのパラメタセットのうち、アプリケーション実行部65の指示によって選択されたパラメタセットにより、状態値列に対してカットオフ周波数以上の周波数成分を除去するフィルタリング処理が実行される。
【0108】
これにより、エンタテインメントシステム10は、例えばメニュー画面をモニタ26に表示させてユーザにメニュー項目を選択させる場面など、操作デバイス42の操作に対する感度をそれほど必要としない場合には、より低いカットオフ周波数でフィルタリング処理を行うことにより、効果的にノイズ性の信号を状態値列から除去できる。逆に、アプリケーション実行部65が例えばユーザの微妙な操作に応じて画面上に表示されたオブジェクト(ゲームキャラクタや、ポインタなど)の動作を制御する処理を実行する場合には、より高いカットオフ周波数でフィルタリング処理を行うことにより、ユーザの操作に対する応答性を向上させることができ、ユーザの操作性を向上できる。
【0109】
なお、フィルタリング処理部64は、加速度センサ51が出力する各基準軸の加速度を示す3つの状態値列に対して、共通するパラメタセットを用いてフィルタリング処理を実行してもよいし、それぞれの状態値列に対して互いに異なるパラメタセットを用いてフィルタリング処理を実行してもよい。
【0110】
例えばパラメタセット保持部64aは、一つのパラメタセット番号に関連づけて、複数種類の状態値列のそれぞれに対応したパラメタセットを保持することとしてもよい。この場合、パラメタセット選択部64bは、アプリケーション実行部65の指示に応じて、複数種類の状態値列のそれぞれについて、一つずつパラメタセットを選択する。そして、フィルタ演算実行部64cは、複数種類の状態値列のそれぞれに対して、選択されたパラメタセットを用いたフィルタリング処理を行う。
【0111】
こうすれば、例えば加速度センサ51が出力する各基準軸の加速度を示す状態値列について、それぞれ異なるカットオフ周波数によるローパスフィルタ処理が実現できる。これにより、例えばアプリケーション実行部65が実行する処理の内容に応じて、特定方向の基準軸について特にノイズ性の信号が生じることが予測される場合(例えば操作デバイス42の特定の面に配置されたボタンが使用される場合)、当該基準軸に応じた状態値列に対してより低いカットオフ周波数によるローパスフィルタ処理を行うことで、望ましい条件でノイズ性の信号を除去できる。また、ユーザが特定方向に操作デバイス42を傾ける操作に応じた処理を実現する場合、当該方向に対応する基準軸以外の基準軸についてより低いカットオフ周波数によるローパスフィルタ処理を行うことで、ユーザの操作に対する感度を落とさずに、ノイズ性の信号を除去できる。
【0112】
アプリケーション実行部65は、以上説明したフィルタリング処理部64によるフィルタリング処理の結果得られる状態値Ds′を用いて、操作デバイス42の保持状態に応じた処理を実行する。このように、アプリケーション実行部65の指示に応じてフィルタリング処理部64によるフィルタリング処理の条件を変化させることで、エンタテインメントシステム10は、アプリケーション実行部65の処理内容に応じたフィルタリング処理を実現でき、ユーザの操作性を向上できる。
【0113】
なお、本発明は上記実施形態に限定されるものではなく、種々の変形実施が可能である。
【0114】
例えば以上の説明においては、エンタテインメントシステム10の本体が、信号出力部53に入力される所与の基準信号を制御する操作デバイス制御装置として動作する場合の例について説明したが、操作デバイス制御装置は、操作デバイス42に内蔵されてもよい。
【0115】
また、ジャイロセンサ52が出力する電圧信号に対して、増幅回路による増幅が必要ない場合などにおいては、信号出力部53は例えばエンタテインメントシステム10本体が所定のプログラムを実行することによって実現されることとしてもよい。すなわち、信号出力部53は、ジャイロセンサ52の出力する電圧信号に応じたデジタル信号と、所与の基準信号(デジタル信号)と、の差に応じたデジタル信号を出力信号として出力する機能を持つソフトウェアとして実現される。
【0116】
また、以上の説明においては、加速度センサ51の出力に応じた出力値Daに基づいてキャリブレーション処理やフィルタリング処理を行うこととしたが、エンタテインメントシステム10は、ジャイロセンサ52の出力に応じた出力値Dgに基づいて、キャリブレーション処理部63によるキャリブレーション処理や、フィルタリング処理部64によるフィルタリング処理を実行してもよい。この場合、前述した各基準状態は、加速度センサ51の例のような操作デバイス42が所定の姿勢で静止した状態ではなく、所定の角速度で回転している状態であってもよい。また、エンタテインメントシステム10は、その他の操作デバイス42の姿勢や運動を検知するモーションセンサ等を用いて、操作デバイス42の保持状態に応じた出力値を取得し、この出力値に対してキャリブレーション処理やフィルタリング処理を実行してもよい。
【0117】
さらに、フィルタリング処理部64は、ローパスフィルタによるフィルタリング処理に限らず、別の種類のフィルタリング処理を状態値列に対して実行することとしてもよい。
【図面の簡単な説明】
【0118】
【図1】本発明の実施の形態に係るエンタテインメントシステムのハードウェア構成図である。
【図2】MPUの詳細構成図である。
【図3】操作デバイスの外観の一例を示す図である。
【図4】操作デバイスの内部構成の一例を示す図である。
【図5】加速度センサが出力する電圧信号の一例を示すグラフ図である。
【図6】本発明の実施の形態に係るエンタテインメントシステムの機能例を示す機能ブロック図である。
【図7】ジャイロセンサ信号制御部の機能例を示す機能ブロック図である。
【図8】ジャイロセンサ信号制御部によって実行される処理の一例を示すフロー図である。
【図9】キャリブレーション処理部の機能例を示す機能ブロック図である。
【図10】操作デバイスの所定の保持状態の例を示す説明図である。
【図11】操作デバイスの記憶部に格納される基準値の一例を示す説明図である。
【図12】フィルタリング処理部の機能例を示す機能ブロック図である。
【図13】本実施形態に係るエンタテインメントシステムが保持する複数のパラメタセットの一例を示す説明図である。
【符号の説明】
【0119】
10 エンタテインメントシステム、11 MPU、12 メインプロセッサ、14a〜14h サブプロセッサ、16 バス、18 メモリコントローラ、20 メインメモリ、22,40,44,57 インタフェース、24 画像処理部、26 モニタ、28 入出力処理部、30 音声処理部、32 スピーカ、34 光ディスク読み取り部、36 光ディスク、38 ハードディスク、42 操作デバイス、46 カメラユニット、48 ネットワークインタフェース、51 加速度センサ、52 ジャイロセンサ、53 信号出力部、54a,54b アナログデジタルコンバータ、55 基準信号入力部、56 記憶部、61 出力値取得部、62 ジャイロセンサ信号制御部、62a 基準センサ信号推定部、62b 基準信号制御部、62c 出力値補正部、62d 初期値設定部、63 キャリブレーション処理部、63a 基準値取得部、63b 状態値算出部、64 フィルタリング処理部、64a パラメタセット保持部、64b パラメタセット選択部、64c フィルタ演算実行部、65 アプリケーション実行部。

【特許請求の範囲】
【請求項1】
操作デバイスの保持状態に応じた出力値を取得する出力値取得手段と、
前記操作デバイスの所定の第1保持状態に応じた前記出力値を、第1基準値として取得する第1基準値取得手段と、
前記操作デバイスの前記第1保持状態とは異なる所定の第2保持状態に応じた前記出力値を、第2基準値として取得する第2基準値取得手段と、
前記取得した出力値と、前記第1及び第2基準値とに基づいて、当該取得した出力値に応じた前記操作デバイスの保持状態を示す状態値を算出する状態値算出手段と、
を含むことを特徴とする情報処理装置。
【請求項2】
請求項1に記載の情報処理装置において、
前記状態値算出手段は、前記第1保持状態を示す状態値と、前記第2保持状態を示す状態値と、の差が所定の値となるように前記状態値を算出する
ことを特徴とする情報処理装置。
【請求項3】
請求項1又は2に記載の情報処理装置において、
前記第1保持状態と前記第2保持状態の間の、前記操作デバイスの所定の第3保持状態に応じた前記出力値を、第3基準値として取得する第3基準値取得手段をさらに含み、
前記状態値算出手段は、前記第3基準値に基づいて、前記第3保持状態を示す状態値が所定の値となるように前記状態値を算出する
ことを特徴とする情報処理装置。
【請求項4】
請求項1乃至3のいずれか一項に記載の情報処理装置において、
前記状態値算出手段は、前記算出された状態値が所定の上限値及び下限値の間に含まれるように前記状態値を補正する
ことを特徴とする情報処理装置。
【請求項5】
請求項1乃至4のいずれか一項に記載の情報処理装置において、
前記操作デバイスの保持状態に応じた処理を行うためのアプリケーションプログラムを実行するアプリケーション実行手段と、
前記状態値算出手段が算出する状態値を、所定時間ごとに状態値列として取得する状態値取得手段と、
所定のフィルタリング処理に用いられるパラメタを少なくとも一つ含むパラメタセットを、複数保持するパラメタセット保持手段と、
前記保持された複数のパラメタセットの中から、前記アプリケーション実行手段の指示に応じて、一のパラメタセットを選択するパラメタセット選択手段と、
前記取得した状態値列に対して、前記選択されたパラメタセットを用いて、前記所定のフィルタリング処理を実行するフィルタリング手段と、
をさらに含み、
前記アプリケーション実行手段は、前記フィルタリング処理の結果得られる前記状態値を用いて処理を行うことを特徴とする情報処理装置。
【請求項6】
操作デバイスの保持状態に応じた処理を行うためのアプリケーションプログラムを実行するアプリケーション実行手段を備える情報処理装置であって、
前記操作デバイスの保持状態を示す状態値を、所定時間ごとに状態値列として取得する状態値取得手段と、
所定のフィルタリング処理に用いられるパラメタを少なくとも一つ含むパラメタセットを、複数保持するパラメタセット保持手段と、
前記保持された複数のパラメタセットの中から、前記アプリケーション実行手段の指示に応じて、一のパラメタセットを選択するパラメタセット選択手段と、
前記取得した状態値列に対して、前記選択されたパラメタセットを用いて、前記所定のフィルタリング処理を実行するフィルタリング手段と、
を含み、
前記アプリケーション実行手段は、前記フィルタリング処理の結果得られる前記状態値を用いて処理を行うことを特徴とする情報処理装置。
【請求項7】
請求項6に記載の情報処理装置において、
前記所定のフィルタリング処理は、前記取得した状態値列の高周波数成分を除去するローパスフィルタ処理である
ことを特徴とする情報処理装置。
【請求項8】
請求項7に記載の情報処理装置において、
前記パラメタセット保持手段は、それぞれ異なる周波数成分を除去対象とする前記ローパスフィルタ処理に用いられる複数のパラメタセットを保持する
ことを特徴とする情報処理装置。
【請求項9】
請求項6乃至8のいずれか一項に記載の情報処理装置において、
前記状態値取得手段は、前記操作デバイスの保持状態を示す複数種類の状態値に応じて、複数種類の状態値列を取得し、
前記パラメタセット保持手段は、前記複数種類の状態値列ごとに、それぞれ複数の前記パラメタセットを保持し、
前記パラメタセット選択手段は、前記複数種類の状態値列のそれぞれについて、一のパラメタセットを選択し、
前記フィルタリング手段は、前記複数種類の状態値列のそれぞれに対して、前記選択されたパラメタセットを用いて前記フィルタリング処理を実行する
ことを特徴とする情報処理装置。
【請求項10】
操作デバイスの保持状態に応じた出力値を取得するステップと、
前記操作デバイスの所定の第1保持状態に応じた前記出力値を、第1基準値として取得するステップと、
前記操作デバイスの前記第1保持状態とは異なる所定の第2保持状態に応じた前記出力値を、第2基準値として取得するステップと、
前記取得した出力値と、前記第1及び第2基準値とに基づいて、当該取得した出力値に応じた前記操作デバイスの保持状態を示す状態値を算出するステップと、
を含むことを特徴とする情報処理方法。
【請求項11】
操作デバイスの保持状態に応じた出力値を取得する出力値取得手段、
前記操作デバイスの所定の第1保持状態に応じた前記出力値を、第1基準値として取得する第1基準値取得手段、
前記操作デバイスの前記第1保持状態とは異なる所定の第2保持状態に応じた前記出力値を、第2基準値として取得する第2基準値取得手段、及び
前記取得した出力値と、前記第1及び第2基準値とに基づいて、当該取得した出力値に応じた前記操作デバイスの保持状態を示す状態値を算出する状態値算出手段、
としてコンピュータを機能させるためのプログラム。
【請求項12】
請求項11に記載のプログラムを記憶したコンピュータ読み取り可能な情報記憶媒体。

【図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

【図13】
image rotate


【公開番号】特開2008−77425(P2008−77425A)
【公開日】平成20年4月3日(2008.4.3)
【国際特許分類】
【出願番号】特願2006−256324(P2006−256324)
【出願日】平成18年9月21日(2006.9.21)
【出願人】(395015319)株式会社ソニー・コンピュータエンタテインメント (871)
【Fターム(参考)】