(57)【要約】      （修正有）【解決手段】センサで計測した角速度をＡ／Ｄ変換器によって変換したディジタルデータがリモコンからゲーム機に送信され、ゲーム機のＣＰＵがそのディジタルデータを補正する。つまり、ＣＰＵが、順次のディジタルデータをバッファに順次記憶させる。ステップＳ３７で、最新のディジタルデータに対して各ディジタルデータが安定していると定義できる安定範囲（d1-d2）を算出し、ステップＳ４９で、バッファに格納されたディジタルデータのうち、最新のディジタルデータから遡って連続して安定範囲内にあるディジタルデータの平均値を算出し、ステップＳ４９で、その平均値を用いて最新のディジタルデータを修飾して修飾ディジタルデータを出力する。【効果】ディジタルデータの精度向上と、追従性の向上が達成できる。【選択図】図１４
2010019751.tif 000002
【特許請求の範囲】
【請求項１】
所定のセンサで計測したアナログ量をＡ／Ｄ変換手段によって変換したディジタルデータを補正するディジタルデータ補正装置のコンピュータに実行させるディジタルデータ補正プログラムであって、前記コンピュータを、
前記Ａ／Ｄ変換手段で変換されたディジタルデータを順次記憶するバッファ手段、
前記Ａ／Ｄ変換手段で変換された最新のディジタルデータに対する安定範囲を算出する安定範囲算出手段、
前記バッファ手段に記憶されたディジタルデータのうち、前記最新のディジタルデータから遡って連続して前記安定範囲内にあるディジタルデータの平均値を算出する平均値算出手段、および
前記平均値算出手段で算出された平均値を用いて前記最新のディジタルデータを補正するデータ補正手段として機能させる、ディジタルデータ補正プログラム。
【請求項２】
前記コンピュータを、前記バッファ手段に記憶されたディジタルデータのうち、前記最新のディジタルデータから遡って連続して前記安定範囲内にあるディジタルデータの連続個数を算出する連続個数算出手段としてさらに機能させ、
前記データ補正手段は、前記連続個数に基づいて、前記最新のディジタルデータと前記平均値との加重平均値を算出する加重平均値算出手段を含み、前記加重平均値を補正後のディジタルデータとする、請求項１記載のディジタルデータ補正プログラム。
【請求項３】
前記加重平均値算出手段は、前記連続個数が多いほど、前記平均値の重みを重くする、請求項２記載のディジタルデータ補正プログラム。
【請求項４】
前記加重平均値算出手段は、前記連続個数のべき乗に比例して、前記平均値の重みを重くする、請求項３記載のディジタルデータ補正プログラム。
【請求項５】
前記安定範囲は、前記最新のディジタルデータを含む範囲である、請求項１記載のディジタルデータ補正プログラム。
【請求項６】
前記安定範囲は、前記最新のディジタルデータを中心とした上下均等な範囲である、請求項５記載のディジタルデータ補正プログラム。
【請求項７】
前記コンピュータを、
前記バッファ手段に記憶されたディジタルデータのうち、前記最新のディジタルデータから遡って連続して前記安定範囲内にあるディジタルデータの連続個数を算出する連続個数算出手段、
前記連続個数に応じて、前記データ補正手段で補正後のディジタルデータに収束する修正オフセット値を算出する修正オフセット値算出手段、および
前記データ補正手段で補正後のディジタルデータを前記修正オフセット値で補正するオフセット補正手段としてさらに機能させる、請求項１記載のディジタルデータ補正プログラム。
【請求項８】
前記修正オフセット値算出手段は、前記連続個数が多いほど、前記データ補正手段で補正後のディジタルデータに収束する度合いの強い修正オフセット値を算出する、請求項７記載のディジタルデータ補正プログラム。
【請求項９】
前記修正オフセット値算出手段は、前記連続個数のべき乗に比例して、前記データ補正手段で補正後のディジタルデータに収束する度合いの強い修正オフセット値を算出する、請求項８記載のディジタルデータ補正プログラム。
【請求項１０】
前記データ補正手段は、前記平均値算出手段で算出された平均値を用いて前記最新のディジタルデータを補正した補正後ディジタルデータを出力するデータ出力手段を含む、請求項１記載のディジタルデータ補正プログラム。
【請求項１１】
前記センサはジャイロセンサを含み、前記ディジタルデータは角速度データである、請求項１ないし１０のいずれかに記載のディジタルデータ補正プログラム。
【請求項１２】
前記ジャイロセンサはゲーム機のコントローラに設けられ、前記ゲーム機は前記ディジタルデータに基づいてゲーム処理を実行する、請求項１１記載のディジタルデータ補正プログラム。
【請求項１３】
所定のセンサで計測したアナログ量をＡ／Ｄ変換手段によって変換したディジタルデータを補正するディジタルデータ補正装置であって、
前記Ａ／Ｄ変換手段で変換されたディジタルデータを順次記憶するバッファ手段、
前記Ａ／Ｄ変換手段で変換された最新のディジタルデータに対する安定範囲を算出する安定範囲算出手段、
前記バッファ手段に記憶されたディジタルデータのうち、前記最新のディジタルデータから遡って連続して前記安定範囲内にあるディジタルデータの平均値を算出する平均値算出手段、および
前記平均値算出手段で算出された平均値を用いて前記最新のディジタルデータを補正するデータ補正手段を備える、ディジタルデータ補正装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ディジタルデータ補正プログラムおよびディジタルデータ補正装置に関し、特に、アナログ値を出力するセンサからの出力値をディジタルデータに変換して出力するデバイスから出力したディジタルデータを補正する、ディジタルデータ補正プログラムおよびディジタルデータ補正装置に関する。
【背景技術】
【０００２】
たとえば、アナログ値で角速度を出力するジャイロセンサのようなセンサからの出力値（アナログ値）を、ディジタルの整数値データに変換して出力するデバイスを、人が手に持って操作するゲーム機のコントローラなどに使用する場合、アナログ値とディジタルの整数値データとの対応付け、および角速度がゼロであることを示すアナログ値が予め定義されおり、デバイスから得られるディジタルの整数値データが、角速度がゼロであることを示すアナログ値に対応付けられたディジタルの整数値データより小さければマイナスの角速度、大きければプラスの角速度と認識する。
【０００３】
しかし、このようにアナログ値を出力するセンサから出力された出力値をディジタルの整数値データに変換するデバイスには以下のような問題がある。
【０００４】
１つは、アナログ値を出力するセンサから出力された出力値（アナログ値）とそのアナログ値を変換したディジタルの整数値データとの対応付けにずれが生じることである。たとえば、センサが静止している状態（角速度がゼロ）のセンサ電圧が２．９Ｖであるとすると、センサから得られる電圧をディジタルの整数値データに変換する場合は、２．４Ｖ（＝２．９−０．５）〜３．４Ｖ（＝２．９＋０．５）の電圧範囲が、角速度がゼロであることを示す整数値データに変換されるべきとしても、センサの個体差等により必ずしもその電圧範囲である場合に角速度がゼロであることを示す整数値データに変換されず、たとえば、２．０Ｖ（＝２．９−０．９）〜３．０Ｖ（＝２．９＋０．１）という電圧範囲が、角速度がゼロであることを示す整数値データに変換される場合がある。
【０００５】
その結果、２．４Ｖ（＝２．９−０．５）〜３．４Ｖ（＝２．９＋０．５）の電圧範囲が、角速度がゼロであることを示す整数値データに変換されるような理想的な環境／条件の場合には、２．９Ｖからどちらの方向に動いても、同じだけの電圧「０．５Ｖ」が変化したときに、整数値データが「＋１」または「‐１」変化するが、２．０Ｖ（＝２．９−０．９）〜３．０Ｖ（＝２．９＋０．１）の電圧範囲が、角速度がゼロであることを示す整数値データに変換されるような環境／条件の場合には、マイナス側には０．９Ｖの変化が生じないと整数値データがディクリメントされないが、プラス側には０．１Ｖの変化が生じただけで整数値データがインクリメントされるような現象が起こる。つまり、アナログ値を出力するセンサから出力された出力値（アナログ値）とそのアナログ値を変換したディジタルの整数値データとの対応付けにずれが生じていることになる。
【０００６】
２つ目の問題は、温度ドリフトの問題である。たとえばゲームをしている環境の温度が変化することによって、コントローラの使用中に上記のセンサが静止している状態（角速度がゼロ）のセンサ電圧が変化してしまう。たとえば、或る時点までは静止を示す電圧が２．９Ｖであったのに、いつの間にか３．３Ｖに変わっている、といったことが起こる。そのため、ゲームのプレイ中に、コントローラすなわちジャイロセンサを静止させているのにも拘らず、動いているかのような整数値データを出力してしまうことが起こる。
【０００７】
このようなアナログ‐ディジタル変換の１番目の問題に対処できる背景技術が特許文献１に開示されている。
【０００８】
特許文献１の従来技術として記載されているディジタル圧力計では、入力値が所定の規定値より大きく変動する場合には、入力値をそのまま出力値として出力し、入力値の変動が所定の規定値以下の場合には、入力値を蓄積して平均化して出力している。
【特許文献１】特開平１１−１１８６５１号公報[G01L19/08]
【発明の開示】
【発明が解決しようとする課題】
【０００９】
特許文献１の背景技術では、一定個数の入力値を平均化の対象とするために、少ない一定個数の入力値を平均化する場合には、出力値の精度が低くなる。逆に、平均化する入力値の個数を多くすると、追従性が悪くなってしまう。たとえば、入力値の変動が規定値を超えている状態から、入力値の変動が規定値より小さい状態へ変化した場合においては、多くの個数の、規定値より大きい入力値が平均化の対象となってしまい、平均化出力値は実際より大きくなることがある。
【００１０】
それゆえに、この発明の主たる目的は、新規な、ディジタルデータ補正プログラムおよびディジタルデータ補正装置を提供することである。
【００１１】
この発明の他の目的は、アナログ‐ディジタル変換の問題に有効に対処できる、ディジタルデータ補正プログラムおよびディジタルデータ補正装置を提供することである。
【００１２】
この発明のさらに他の目的は、出力ディジタルデータの精度がよくしかも追従性が悪くない、ディジタルデータ補正プログラムおよびディジタルデータ補正装置を提供することである。
【課題を解決するための手段】
【００１３】
この発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、この発明の理解を助けるために後述する実施の形態との対応関係を示したものであって、この発明を何ら限定するものではない。
【００１４】
第１の発明は、所定のセンサで計測したアナログ量をＡ／Ｄ変換手段によって変換したディジタルデータを補正するディジタルデータ補正装置のコンピュータに実行させるディジタルデータ補正プログラムであって、コンピュータを、Ａ／Ｄ変換手段で変換されたディジタルデータを順次記憶するバッファ手段、Ａ／Ｄ変換手段で変換された最新のディジタルデータに対する安定範囲を算出する安定範囲算出手段、バッファ手段に記憶されたディジタルデータのうち、最新のディジタルデータから遡って連続して安定範囲内にあるディジタルデータの平均値を算出する平均値算出手段、および平均値算出手段で算出された平均値を用いて最新のディジタルデータを補正するデータ補正手段として機能させる、ディジタルデータ補正プログラムである。
【００１５】
第１の発明では、センサ（５６：実施例で相当する部分を例示する参照符号。以下同じ。）で計測したアナログ量がＡ／Ｄ変換手段（５８ａ,５８ｂ）によってディジタルデータに変換される。このディジタルデータがコントローラ(１４)からゲーム機（１２）にたとえば近距離無線によって送信され、ゲーム機（１２)のＣＰＵ（６０）がそのディジタルデータを補正する。つまり、ゲーム機(１２)のＣＰＵ（６０）が、メモリ手段（６２ｅ、６６）と協働して、Ａ／Ｄ変換手段で変換されたディジタルデータを順次記憶するバッファ手段（１００）として機能する。安定範囲算出手段（Ｓ３７）は、最新のディジタルデータに対して各ディジタルデータが安定していると定義できる安定範囲の上限および下限（d1、d2）を算出する。平均値算出手段（Ｓ４９）は、バッファ手段（１００）に格納された順次のディジタルデータのうち、今回のディジタルデータから遡って連続して安定範囲内にあるディジタルデータの平均値を算出し、データ補正手段（Ｓ４９）が、その平均値を用いて最新のディジタルデータを補正する。
【００１６】
第１の発明によれば、連続して安定範囲内に入っているディジタルデータを平均化して最新のディジタルデータを補正するようにしたので、動作時は追従性よく、静止（安定）時は滑らかに高精度な補正を行える。
【００１７】
第２の発明は、第１の発明に従属し、コンピュータを、バッファ手段に記憶されたディジタルデータのうち、最新のディジタルデータから遡って連続して安定範囲内にあるディジタルデータの連続個数を算出する連続個数算出手段としてさらに機能させ、データ補正手段は、連続個数に基づいて、最新のディジタルデータと平均値との加重平均値を算出する加重平均値算出手段を含み、加重平均値を補正後のディジタルデータとする、ディジタルデータ補正プログラムである。
【００１８】
第２の発明では、連続個数算出手段（Ｓ４３）が、バッファ手段に記憶されたディジタルデータのうち、最新のディジタルデータから遡って安定範囲に入っているディジタルデータの連続個数（ct）を計算する。データ補正手段（Ｓ４９）は、連続個数算出手段で算出した連続個数に基づいて最新のディジタルデータと平均値算出手段で計算した平均値との加重平均値を算出し、加重平均値を補正後のディジタルデータとする。第２の発明によれば、加重平均を用いるため、補正後のディジタルデータの信頼性が高くなる。
【００１９】
第３の発明は、第２の発明に従属し、加重平均値算出手段は、連続個数が多いほど、平均値の重みを重くする、ディジタルデータ補正プログラムである。
【００２０】
第３の発明では、静止（安定）しているときの補正後のディジタルデータの精度がよい。
【００２１】
第４の発明は、第３の発明に従属し、加重平均値算出手段は、連続個数のべき乗に比例して、平均値の重みを重くする、ディジタルデータ補正プログラムである。
【００２２】
第４の発明でも、静止（安定）しているときの補正後のディジタルデータの精度がよい。
【００２３】
第５の発明は、第１の発明に従属し、安定範囲は、最新のディジタルデータを含む範囲である、ディジタルデータ補正プログラムである。
【００２４】
第５の発明では、安定範囲が最新のディジタルデータを含んで設定されるので、補正後のディジタルデータの信頼性が損なわれることがない。
【００２５】
第６の発明は、第５の発明に従属し、安定範囲は、最新のディジタルデータを中心とした上下均等な範囲である、ディジタルデータ補正プログラムである。
【００２６】
第６の発明では、安定範囲の上限値および下限値を、最新のディジタルデータより所定値を増減させた値に設定する。第６の発明によれば、安定状態の判断を偏りのなく行え、高精度な補正を行える。
【００２７】
第７の発明は、第１の発明に従属し、コンピュータを、バッファ手段に記憶されたディジタルデータのうち、最新のディジタルデータから遡って連続して安定範囲内にあるディジタルデータの連続個数を算出する連続個数算出手段、連続個数に応じて、データ補正手段で補正後のディジタルデータに収束する修正オフセット値を算出する修正オフセット値算出手段、およびデータ補正手段で補正後のディジタルデータを修正オフセット値で補正するオフセット補正手段としてさらに機能させる、ディジタルデータ補正プログラムである。
【００２８】
第７の発明では、連続個数算出手段（Ｓ４３）が、バッファ手段に記憶されたディジタルデータのうち、最新のディジタルデータから遡って連続して安定範囲内にあるディジタルデータの連続個数を算出し、修正オフセット値算出手段（Ｓ５３）は、その連続個数に応じて、補正後のディジタルデータに収束する修正オフセット値を算出する。そして、オフセット補正手段（Ｓ５５）が補正後のディジタルデータを修正オフセット値で補正する。したがって、修正オフセット値で補正した補正後のディジタルデータを採用する。第７の発明では、連続個数に応じた修正オフセット値を用いるので、高精度なオフセット補正が達成できる。
【００２９】
第８の発明は、第７の発明に従属し、修正オフセット値算出手段は、連続個数が多いほど、データ補正手段で補正後のディジタルデータに収束する度合いの強い修正オフセット値を算出する、ディジタルデータ補正プログラムである。
【００３０】
第８の発明でも、高精度なオフセット補正が達成できる。
【００３１】
第９の発明は、第８の発明に従属し、修正オフセット値算出手段は、連続個数のべき乗に比例して、データ補正手段で補正後のディジタルデータに収束する度合いの強い修正オフセット値を算出する、ディジタルデータ補正プログラムである。
【００３２】
第９の発明でも、高精度なオフセット補正が達成できる。
【００３３】
第１０の発明は、第１の発明に従属し、データ補正手段は、平均値算出手段で算出された平均値を用いて最新のディジタルデータを補正した補正後ディジタルデータを出力するデータ出力手段を含む、ディジタルデータ補正プログラムである。
【００３４】
第１０の発明では、データ補正手段（Ｓ４９）は、補正後のディジタルデータを出力する。つまり、データ補正手段は、たとえばステップＳ４９に示す計算式で計算した補正後のデータを出力する。
【００３５】
第１１の発明は、第１ないし第１０のいずれかの発明に従属し、センサはジャイロセンサを含み、ディジタルデータは角速度データである、ディジタルデータ補正プログラムである。
【００３６】
第１１の発明では、ジャイロセンサを用いることができるので、ゲーム機などに好適する。
【００３７】
第１２の発明は、第１１の発明に従属し、ジャイロセンサはゲーム機のコントローラに設けられ、ゲーム機はディジタルデータに基づいてゲーム処理を実行する、ディジタルデータ補正プログラムである。
【００３８】
第１２の発明では、ジャイロセンサを用いて、精度よいゲーム処理が可能である。
【００３９】
第１３の発明は、所定のセンサで計測したアナログ量をＡ／Ｄ変換手段によって変換したディジタルデータを補正するディジタルデータ補正装置であって、Ａ／Ｄ変換手段で変換されたディジタルデータを順次記憶するバッファ手段、Ａ／Ｄ変換手段で変換された最新のディジタルデータに対する安定範囲を算出する安定範囲算出手段、バッファ手段に記憶されたディジタルデータのうち、最新のディジタルデータから遡って連続して安定範囲内にあるディジタルデータの平均値を算出する平均値算出手段、および平均値算出手段で算出された平均値を用いて最新のディジタルデータを補正するデータ補正手段を備える、ディジタルデータ補正装置である。
【００４０】
第１３の発明によれば第１の発明と同様の効果が期待できる。
【発明の効果】
【００４１】
この発明によれば、ディジタルデータの精度の向上と、追従性の向上という二律背反的な要求に効果的に対応できる。
【００４２】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【００４３】
図１を参照して、この発明の一実施例であるゲームシステム１０は、ビデオゲーム装置（以下、単に「ゲーム装置」ということがある。）１２およびコントローラ１４を含む。コントローラ１４は、ユーザないしプレイヤの入力装置ないし操作装置（デバイス）として機能する。ゲーム装置１２とコントローラ１４とは無線によって接続される。たとえば、無線通信は、Bluetooth（登録商標）規格に従って実行されるが、赤外線や無線ＬＡＮなど他の規格に従って実行されてもよい。
【００４４】
ゲーム装置１２は、略直方体のハウジング１６を含み、ハウジング１６の前面にはディスクスロット１８および外部メモリカードスロットカバー２０が設けられる。ディスクスロット１８から、ゲームプログラムおよびデータを記憶した情報記憶媒体の一例である光ディスク２２が挿入されて、ハウジング１６内のディスクドライブ７４（図４）に装着される。外部メモリカードスロットカバー２０の内側には外部メモリカード用コネクタ８２（図４）が設けられており、その外部メモリカード用コネクタ８２には外部メモリカード（図示せず）が挿入される。外部メモリカードは、光ディスク２２から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム１０を利用してプレイされたゲームのゲームデータ（結果データまたは途中データ）を保存（セーブ）しておいたりするために利用される。また、上記ゲームデータの保存は、外部メモリカードに代えて、たとえばフラッシュメモリ６４（図４）等の内部メモリに対して行うようにしてもよい。
【００４５】
ゲーム装置１２のハウジング１６の後面には、ＡＶケーブルコネクタ（図示せず）が設けられ、当該ＡＶケーブルコネクタを用いて、ゲーム装置１２はＡＶケーブル２４を介してモニタ（ディスプレイ）２６に接続される。このモニタ２６は典型的にはカラーテレビジョン受像機であり、ＡＶケーブル２４は、ゲーム装置１２からの映像信号をカラーテレビのビデオ入力端子に入力し、音声信号を音声入力端子に入力する。したがって、カラーテレビ（モニタ）２６の画面上にたとえば３Ｄビデオゲームのゲーム画像が表示され、内蔵されるスピーカ２８からゲーム音楽や効果音などのステレオゲーム音声が出力される。
【００４６】
また、モニタ２６の周辺（この実施例では、モニタ２６の上側）には、２つの赤外ＬＥＤ（マーカ）３０ａおよび３０ｂを備えるマーカ部３０が設けられる。このマーカ部３０は、電源ケーブル（図示せず）を通してゲーム装置１２に接続される。したがって、マーカ部３０には、ゲーム装置１２から電源が供給される。これによって、マーカ３０ａ，３０ｂは発光し、それぞれモニタ２６の前方に向けて赤外光を出力する。
【００４７】
なお、ゲーム装置１２の電源は、一般的なＡＣアダプタ（図示せず）によって与えられる。ＡＣアダプタは家庭用の標準的な壁ソケットに接続され、家庭用電源を、ゲーム装置１２を駆動するのに適した低いＤＣ電圧信号に変換する。他の実施例では、電源としてバッテリが用いられてもよい。
【００４８】
コントローラ１４は、詳細は後述されるが、片手で把持可能なリモコン３２およびそのリモコン３２に着脱可能に装着されるジャイロセンサユニット３４を含む。ジャイロセンサユニット３４がリモコン３２と物理的および電気的に結合されるので、リモコン３２からは入力データないし操作データが出力されるとともに、ジャイロセンサユニット３４で検出したリモコン３２の角速度を示す角速度データが出力される。
【００４９】
このゲームシステム１０において、ゲーム（または他のアプリケーション）をプレイするために、ユーザはまずゲーム装置１２の電源をオンし、次いで、ユーザはビデオゲーム（もしくは実行したいと思う他のアプリケーション）を記憶している適宜の光ディスク２２を選択し、その光ディスク２２をゲーム装置１２のディスクスロット１８からディスクドライブ７４にローディングする。これに応じて、ゲーム装置１２がその光ディスク２２に記憶されているソフトウェアに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザはゲーム装置１２に入力を与えるためにコントローラ１４を操作する。
【００５０】
図２にはリモコンまたはリモコン３２の外観の一例が示される。図２（Ａ）は、リモコン３２を上面後方から見た斜視図であり、図２（Ｂ）は、リモコン３２を下面前方から見た斜視図である。
【００５１】
リモコン３２は、たとえばプラスチック成型によって形成されたハウジング３６を有している。ハウジング３６は、その前後方向（Ｚ軸方向）を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。一例として、ハウジング３６は人間の掌とほぼ同じ長さまたは幅を持つ大きさをしている。プレイヤは、リモコン３２を用いて、それに設けられたボタンを押下したり、リモコン３２自体の位置や向きを変えることによって、ゲーム操作を行うことができる。
【００５２】
ハウジング３６には、複数の操作ボタンが設けられる。すなわち、ハウジング３６の上面には、十字キー３８ａ、１（いち）ボタン３８ｂ、２（に）ボタン３８ｃ、Ａボタン３８ｄ、−（マイナス)ボタン３８ｅ、ホーム（HOME）ボタン３８ｆ、および＋（プラス）ボタンないしスタートボタン３８ｇが設けられる。一方、ハウジング３６の下面には凹部が形成されており、当該凹部の後方側傾斜面にはＢボタン３８ｈが設けられる。これら各ボタン（スイッチ）３８ａ‐３８ｈには、ゲーム装置１２が実行するゲームプログラムに応じてそれぞれ適宜な機能が割り当てられる。また、ハウジング３６の上面には、遠隔からゲーム装置１２本体の電源をオン／オフするための電源スイッチ３８ｉが設けられる。リモコン３２に設けられる各ボタン（スイッチ）を、包括的に参照符号３８を用いて操作手段または入力手段として示すこともある。
【００５３】
十字キー３８ａは、４方向プッシュスイッチであり、矢印で示す４つの方向、前（または上）、後ろ（または下）、右および左の操作部を含む。この操作部のいずれか１つを操作することによって、プレイヤによって操作可能なキャラクタまたはオブジェクト（プレイヤキャラクタまたはプレイヤオブジェクト）の移動方向を指示したり、カーソルの移動方向を指示したり、単に方向を指示したりすることができる。
【００５４】
１ボタン３８ｂおよび２ボタン３８ｃは、それぞれ、押しボタンスイッチである。たとえば３次元ゲーム画像を表示する際の視点位置や視点方向、すなわち仮想カメラの位置や画角を調整する等のゲームの操作に使用される。または、１ボタン３８ｂおよび２ボタン３８ｃは、Ａボタン３８ｄおよびＢボタン３８ｈと同じ操作或いは補助的な操作をする場合に用いるようにしてもよい。
【００５５】
Ａボタンスイッチ３８ｄは、押しボタンスイッチであり、プレイヤキャラクタまたはプレイヤオブジェクトに、方向指示以外の動作、すなわち、打つ（パンチ）、投げる、つかむ（取得）、乗る、ジャンプするなどの任意のアクションをさせるために使用される。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かすなどを指示することができる。また、ロールプレイングゲーム（ＲＰＧ）やシミュレーションＲＰＧにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。また、Ａボタンスイッチ３８ｄは、リモコン３２をポインティングデバイスとして用いる場合に、ゲーム画面上でポインタ（指示画像）が指示するアイコンないしボタン画像の決定を指示するために使用される。たとえば、アイコンやボタン画像が決定されると、これらに対応して予め設定されている指示ないし命令（コマンド）を入力することができる。
【００５６】
−ボタン３８ｅ、ホームボタン３８ｆ、＋ボタン３８ｇおよび電源スイッチ３８ｉもまた、押しボタンスイッチである。−ボタン３８ｅは、ゲームモードを選択するために使用される。ホームボタン３８ｆは、ゲームメニュー（メニュー画面）を表示するために使用される。＋ボタン３８ｇは、ゲームを開始（再開）したり、一時停止したりするなどのために使用される。電源スイッチ３８ｉは、ゲーム装置１２の電源を遠隔操作によってオン／オフするために使用される。
【００５７】
なお、この実施例では、リモコン３２自体をオン／オフするための電源スイッチは設けておらず、リモコン３２の操作手段ないし入力手段３８のいずれかを操作することによってリモコン３２はオンとなり、一定時間（たとえば、３０秒）以上操作しなければ自動的にオフとなるようにしてある。
【００５８】
Ｂボタン３８ｈもまた、押しボタンスイッチであり、主として、弾を撃つなどのトリガを模した入力を行ったり、リモコン３２で選択した位置を指定したりするために使用される。また、Ｂボタン３８ｈを押し続けると、プレイヤオブジェクトの動作やパラメータを一定の状態に維持することもできる。また、一定の場合には、Ｂボタン３８ｈは、通常のＢボタンと同様に機能し、Ａボタン３８ｄによって決定したアクションやコマンドなどを取り消すなどのために使用される。
【００５９】
ハウジング３６内には、図２に示すＸ、ＹおよびＺの３軸方向（すなわち左右方向、上下方向および前後方向）の加速度を検出する加速度センサ８４（図５）が設けられる。なお、加速度センサ８４としては、ハウジング３６の形状またはリモコン３２の持たせ方の限定等に応じて、上下方向、左右方向および前後方向のうちいずれか２方向の加速度を検出する２軸加速度センサが用いられてもよい。場合によっては１軸加速度センサが用いられてもよい。
【００６０】
ハウジング３６の前面には光入射口３６ｂが形成され、ハウジング３６内には撮像情報演算部４０がさらに設けられる。撮像情報演算部４０は、赤外線を撮像するカメラと撮像対象の画像内での座標を算出する演算部とによって構成され、上述のマーカ３０ａおよび３０ｂを含む被写界を赤外線で捉えて、マーカ３０ａおよび３０ｂの被写界内における位置座標を算出する。
【００６１】
また、ハウジング３６の後面には、コネクタ４２が設けられている。コネクタ４２は、リモコン３２に他の機器を接続するために利用される。この実施例では、コネクタ４２にはジャイロセンサユニット３４のコネクタ５０（図３(Ａ)）が接続される。
【００６２】
ハウジング３６の後面にはまた、コネクタ４２を左右（Ｘ軸方向）に挟んで対向する位置に、１対の孔４４が形成されている。この１対の孔４４には、ジャイロセンサユニット３４をハウジング３６の後面に固定するためのフック５２（図３（Ａ））が挿入される。ハウジング３６の後面にはさらに、ストラップ（図示せず）を装着するための孔４６も形成されている。
【００６３】
図３にはジャイロセンサユニット３４の外観の一例が示される。図３（Ａ）は、ジャイロセンサユニット３４を上面前方から見た斜視図であり、図３（Ｂ）は、ジャイロセンサユニット３４を下面後方から見た斜視図である。
【００６４】
ジャイロセンサユニット３４は、たとえばプラスチック成型によって形成されたハウジング４８を有している。ハウジング４８は、略直方体形状を有しており、その長さはリモコン３２のハウジング３６の長さのおよそ１／５、その幅および厚みはハウジング３６の幅および厚みとほぼ同じである。プレイヤは、リモコン３２にジャイロセンサユニット３４を装着した状態で、リモコン３２自体の位置や向きを変えることによって、ゲーム操作を行うことができる。
【００６５】
ハウジング４８の前面にはコネクタ５０が設けられている。コネクタ５０は、このハウジング４８すなわちジャイロセンサユニット３４をリモコン３２に一体的に装着するために、コネクタ４２（図２)と嵌め合わせられる。ハウジング４８の前面にはまた、コネクタ５０を挟んで横方向（Ｘ軸方向）に対向する位置に、１対のフック５２が設けられている。ジャイロセンサユニット３４をリモコン３２に装着するべく、コネクタ５０をコネクタ４２に接続すると、１対のフック５２はハウジング３６後面の１対の孔４４（図２（Ａ））に挿入され、フック５２の爪がハウジング３６の内壁に引っ掛かる。これによって、ジャイロセンサユニット３４は、リモコン３２の後面に固定される。
【００６６】
なお、ジャイロセンサユニット３４のハウジング４８の後端には、必要に応じてこのジャイロセンサユニット３４に別の拡張デバイスを機械的かつ電気的に装着するための、コネクタ５４が設けられる。
【００６７】
また、ジャイロセンサユニット３４のハウジング４８内には、図５に示すジャイロセンサ５６およびマイコン５８が基板（図示せず）に装着されて内蔵される。このジャイロセンサ５６は、一般的には、２チップ構成であり、一方のチップで２軸の角速度を検出し、他方のチップで残りの１軸の角速度を検出する。ただし、２チップ構成とは限らず、３個の１軸ジャイロセンサ（３チップ）で構成してもよく、１個の３軸ジャイロセンサ（１チップ）で構成してもよい。いずれの場合も、上述の３つの角速度を適正に検出できるように、各チップの位置や向きが決定される。マイコン５８は、後述のように、ジャイロセンサ５６で検出した各軸角速度に応じた出力電圧をディジタルデータに変換する。
【００６８】
また、コントローラ１４の電源は、リモコン３２内に取替可能に収容されるバッテリ（図２に示すハウジング３６の下面の蓋３６ａの中に設けられる。）によって与えられる。ジャイロセンサユニット３４にはコネクタ４２および５０を介して電源が供給される。
【００６９】
図４は図１実施例のビデオゲームシステム１０の電気的な構成を示すブロック図である。図示は省略するが、ハウジング１４内の各コンポーネントは、プリント基板に実装される。図４に示すように、ゲーム装置１２には、ＣＰＵ６０が設けられ、ゲームプロセッサとして機能する。また、ＣＰＵ６０には、システムＬＳＩ６２が接続される。このシステムＬＳＩ６２には、外部メインメモリ６６、ＲＯＭ／ＲＴＣ６８、ディスクドライブ７４およびＡＶ  ＩＣ７６が接続される。
【００７０】
外部メインメモリ６６は、ゲームプログラム等のプログラムを記憶したり、各種データを記憶したりして、ＣＰＵ６０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ６８は、いわゆるブートＲＯＭであり、ゲーム装置１２の起動用のプログラムが組み込まれるとともに、時間をカウントする時計回路が設けられる。ディスクドライブ７４は、光ディスク１８からプログラム，画像データや音声データ等を読み出し、ＣＰＵ６０の制御の下で、後述する内部メインメモリ６２ｅまたは外部メインメモリ６６に書き込む。
【００７１】
システムＬＳＩ６２には、入出力プロセッサ６２ａ、ＧＰＵ(GraphicsProcessor Unit)６２ｂ，ＤＳＰ(Digital Signal Processor)６２ｃ，ＶＲＡＭ６２ｄおよび内部メインメモリ６２ｅが設けられ、図示は省略するが、これらは内部バスによって互いに接続される。入出力プロセッサ（Ｉ／Ｏプロセッサ）６２ａは、データの送受信を実行したり、データのダウンロードを実行したりする。データの送受信やダウンロードについては後述する。
【００７２】
ＧＰＵ６２ｂは、描画手段の一部を形成し、ＣＰＵ６０からのグラフィクスコマンド(作画命令)を受け、そのコマンドに従ってゲーム画像データを生成する。ただし、ＣＰＵ６０は、グラフィクスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラムをＧＰＵ６２ｂに与える。
【００７３】
図示は省略するが、上述したように、ＧＰＵ６２ｂにはＶＲＡＭ６２ｄが接続される。ＧＰＵ６２ｂが作画コマンドを実行するにあたって必要なデータ（画像データ：ポリゴンデータやテクスチャデータなどのデータ）は、ＧＰＵ６２ｂがＶＲＡＭ６２ｄにアクセスして取得する。ただし、ＣＰＵ６０は、描画に必要な画像データを、ＧＰＵ６２ｂを介してＶＲＡＭ６２ｄに書き込む。ＧＰＵ６２ｂは、ＶＲＡＭ６２ｄにアクセスして描画のためのゲーム画像データを作成する。
【００７４】
なお、この実施例では、ＧＰＵ６２ｂがゲーム画像データを生成する場合について説明するが、ゲームアプリケーション以外の任意のアプリケーションを実行する場合には、ＧＰＵ６２ｂは当該任意のアプリケーションについての画像データを生成する。
【００７５】
また、ＤＳＰ６２ｃは、オーディオプロセッサとして機能し、内部メインメモリ６２ｅや外部メインメモリ６６に記憶されるサウンドデータや音波形（音色）データを用いて、スピーカ２８から出力する音、音声或いは音楽に対応するオーディオデータを生成する。
【００７６】
上述のように生成されたゲーム画像データおよびオーディオデータは、ＡＶ  ＩＣ７６によって読み出され、ＡＶコネクタ７８を介してモニタ２６およびスピーカ２８に出力される。したがって、ゲーム画面がモニタ２６に表示され、ゲームに必要な音（音楽）がスピーカ２８から出力される。
【００７７】
また、入出力プロセッサ６２ａには、フラッシュメモリ６４、無線通信モジュール７０および無線コントローラモジュール７２が接続されるとともに、拡張コネクタ８０およびメモリカード用コネクタ８２が接続される。また、無線通信モジュール７０にはアンテナ７０ａが接続され、無線コントローラモジュール７２にはアンテナ７２ａが接続される。
【００７８】
図示は省略するが、入出力プロセッサ６２ａは、無線通信モジュール７０を介して、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。ただし、ネットワークを介さずに、直接的に他のゲーム装置と通信することもできる。入出力プロセッサ６２ａは、定期的にフラッシュメモリ６４にアクセスし、ネットワークへ送信する必要があるデータ（「送信データ」とする）の有無を検出し、当該送信データが有る場合には、無線通信モジュール７０およびアンテナ７０ａを介してネットワークに送信する。また、入出力プロセッサ６２ａは、他のゲーム装置から送信されるデータ（「受信データ」とする）を、ネットワーク、アンテナ７０ａおよび無線通信モジュール７０を介して受信し、当該受信データをフラッシュメモリ６４に記憶する。ただし、受信データが一定の条件を満たさない場合には、当該受信データはそのまま破棄される。さらに、入出力プロセッサ６２ａは、ダウンロードサーバからダウンロードしたデータ（ダウンロードデータとする）をネットワーク、アンテナ７０ａおよび無線通信モジュール７０を介して受信し、そのダウンロードデータをフラッシュメモリ６４に記憶する。
【００７９】
また、入出力プロセッサ６２ａは、リモコン３２から送信される入力データをアンテナ７２ａおよび無線コントローラモジュール７２を介して受信し、内部メインメモリ６２ｅまたは外部メインメモリ６６のバッファ領域に記憶（一時記憶）する。入力データは、ＣＰＵ６０の処理（たとえば、ゲーム処理）によって利用された後、バッファ領域から消去される。
【００８０】
なお、この実施例では、上述したように、無線コントローラモジュール７２は、Bluetooth規格に従ってリモコン３２との間で通信を行う。このため、コントローラ１４からデータを取得するだけでなく、ゲーム装置１２からコントローラ１４に所定の命令を送信し、コントローラ１４の動作をゲーム装置１２から制御することもできる。
【００８１】
さらに、入出力プロセッサ６２ａには、拡張コネクタ８０およびメモリカード用コネクタ８２が接続される。拡張コネクタ８０は、ＵＳＢやＳＣＳＩのようなインタフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、リモコン３２とは異なる他のコントローラのような周辺機器を接続したりすることができる。また、拡張コネクタ８０に有線ＬＡＮアダプタを接続し、無線通信モジュール７０に代えて当該有線ＬＡＮを利用することもできる。メモリカード用コネクタ８２には、メモリカードのような外部記憶媒体を接続することができる。したがって、たとえば、入出力プロセッサ６２ａは、拡張コネクタ８０やメモリカード用コネクタ８２を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【００８２】
詳細な説明は省略するが、電源ボタンがオンされると、システムＬＳＩ６２には、ゲーム装置１２の各コンポーネントに図示しないＡＣアダプタを経て電源が供給され、通常の通電状態となるモード（「通常モード」と呼ぶこととする）が設定される。一方、電源ボタンがオフされると、システムＬＳＩ６２には、ゲーム装置１２の一部のコンポーネントのみに電源が供給され、消費電力を必要最低限に抑えるモード（以下、「スタンバイモード」という）が設定される。
【００８３】
この実施例では、スタンバイモードが設定された場合には、システムＬＳＩ６２は、入出力プロセッサ６２ａ、フラッシュメモリ６４、外部メインメモリ６６、ＲＯＭ／ＲＴＣ６８および無線通信モジュール７０、無線コントローラモジュール７２以外のコンポーネントに対して、電源供給を停止する指示を行う。したがって、この実施例では、スタンバイモードにおいて、ＣＰＵ６０がアプリケーションを実行することはない。
【００８４】
なお、システムＬＳＩ６２には、スタンバイモードにおいても電源が供給されるが、ＧＰＵ６２ｂ、ＤＳＰ６２ｃおよびＶＲＡＭ６２ｄへのクロックの供給を停止することにより、これらを駆動しないようにして、消費電力を低減するようにしてある。
【００８５】
また、図示は省略するが、ゲーム装置１２のハウジング１４内部には、ＣＰＵ６０やシステムＬＳＩ６２などのＩＣの熱を外部に排出するためのファンが設けられる。スタンバイモードでは、このファンも停止される。
【００８６】
ただし、スタンバイモードを利用したくない場合には、スタンバイモードを利用しない設定にしておくことにより、電源ボタンがオフされたときに、すべての回路コンポーネントへの電源供給が完全に停止される。
【００８７】
また、通常モードとスタンバイモードとの切り替えは、リモコン３２の電源スイッチ３８ｉのオン／オフの切り替えによって、遠隔操作によって行うことが可能である。当該遠隔操作を行わない場合には、スタンバイモードにおいて無線コントローラモジュール７２ａへの電源供給を行わない設定にしてもよい。
【００８８】
リセットボタンもまた、システムＬＳＩ６２に接続される。リセットボタンが押されると、システムＬＳＩ６２は、ゲーム装置１２の起動プログラムを再起動する。イジェクトボタンは、ディスクドライブ７４に接続される。イジェクトボタンが押されると、ディスクドライブ７４から光ディスク２２が排出される。
【００８９】
図５には、リモコン３２とジャイロセンサユニット３４とが接続されたときのコントローラ１４全体の電気的構成の一例が示される。図５に示す通信部８６は、マイクロコンピュータ（マイコン）８８、メモリ９０、無線モジュール９２およびアンテナ９４を含む。マイコン８８は、処理の際にメモリ９０を記憶領域（作業領域やバッファ領域）として用いながら、無線モジュール９２を制御して、取得したデータをゲーム装置１２に送信したりゲーム装置１２からのデータを受信したりする。
【００９０】
ジャイロセンサユニット３４から通信部８６に出力されたデータは、マイコン８８を経て一時的にメモリ９０に格納される。リモコン３２内の操作部３８、撮像情報演算部４０および加速度センサ８４から通信部８６に出力されたデータもまた、メモリ９０に一時的に格納される。マイコン８８は、ゲーム装置１２への送信タイミングが到来すると、メモリ９０に格納されているデータをコントローラデータとして無線モジュール９２へ出力する。コントローラデータには、図１０に示したジャイロデータ（角速度データ）が含まれる。
【００９１】
無線モジュール９２は、Bluetoothのような近距離無線通信技術を用いて、所定周波数の搬送波をコントローラデータで変調し、その微弱電波信号をアンテナ９４から放射する。つまり、コントローラデータは、無線モジュール９２で微弱電波信号に変調されてリモコン３２から送信される。微弱電波信号はゲーム装置１２側の無線コントローラモジュール（Bluetooth通信ユニット）７２で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置１２はコントローラデータを取得することができる。ゲーム装置１２のＣＰＵ６０は、コントローラ１４から取得したコントローラデータに基づいてゲーム処理を行う。なお、リモコン３２とゲーム装置１２との無線通信は、無線ＬＡＮなど他の規格に従って実行されてもよい。
【００９２】
リモコン３２は、操作部３８すなわち上述の操作ボタンないし操作スイッチ３８ａ‐３８ｉが操作されると、その操作を示すデータが通信部８６に出力される。撮像情報演算部４０からは、マーカ３０ａおよび３０ｂの被写界内における位置座標を示すデータが通信部８６に出力される。
【００９３】
図６は、リモコン３２を用いてゲームプレイするときの状態を概説する図解図である。ただし、ゲームプレイのみならず、他のアプリケーションを実行したり、ＤＶＤを再生したりする場合も同様である。図６に示すように、ビデオゲームシステム１０でリモコン３２を用いてゲームをプレイする際、プレイヤは、一方の手でリモコン３２を把持する。厳密に言うと、プレイヤは、リモコン３２の先端面（撮像情報演算部４０が撮像する光の入射口３６ｂ側）がマーカ３０ａおよび３０ｂの方を向く状態でリモコン３２を把持する。ただし、図１からも分かるように、マーカ３０ａおよび３０ｂは、モニタ２６の画面の横方向と平行に配置されている。この状態で、プレイヤは、リモコン３２が指示する画面上の位置を変更したり、リモコン３２と各マーカ３０ａおよび３０ｂとの距離を変更したりすることによってゲーム操作を行う。
【００９４】
撮像情報演算部４０は、赤外線フィルタ４０ａ、レンズ４０ｂ、撮像素子４０ｃおよび画像処理回路４０ｄによって構成される。赤外線フィルタ４０ａは、リモコン３２の前方から入射する光から赤外線のみを通過させる。上述したように、モニタ２６の表示画面近傍（周辺）に配置されるマーカ３０ａおよび３０ｂは、モニタ２６の前方に向かって赤外光を出力する赤外ＬＥＤである。したがって、赤外線フィルタ４０ａを設けることによってマーカ３０ａおよび３０ｂの画像をより正確に撮像することができる。レンズ４０ｂは、赤外線フィルタ４０ａを透過した赤外線を集光して撮像素子４０ｃへ出射する。撮像素子４０ｃは、たとえばＣＭＯＳセンサあるいはＣＣＤのような固体撮像素子であり、レンズ４０ｂによって集光された赤外線を撮像する。したがって、撮像素子４０ｃは、赤外線フィルタ４０ａを通過した赤外線だけを撮像して画像データを生成する。撮像素子４０ｃによって生成された画像データは、画像処理回路４０ｄで処理される。画像処理回路４０ｄは、撮像画像内における撮像対象（マーカ３０ａおよび３０ｂ）の位置を算出し、所定時間毎に、当該位置を示す各座標値をマーカ座標データとしてプロセッサ７０に出力する。
【００９５】
なお、図６では分かり難いが、上述したジャイロユニット３４がリモコン３２に接続される場合も同様である。
【００９６】
一例として、撮像素子４０ｃによって撮像された撮像画像の解像度が１２６×９６であるとき、マーカ座標は、（０，０）から（１０２４，７６８）までの整数値で表現される。出力されたマーカ座標データは、上述したように、プロセッサ７０によって入力データに含まれ、ゲーム装置１２に送信される。
【００９７】
ゲーム装置１２（ＣＰＵ６０）は、受信した入力データからマーカ座標データを検出すると、このマーカ座標データに基づいて、モニタ２６の画面上におけるリモコン３２の指示位置（指示座標）と、リモコン３２からマーカ３０ａおよび３０ｂまでの各距離とを算出することができる。具体的には、２つのマーカ座標の中点の位置から、リモコン３２の向いている位置すなわち指示位置が算出される。また、撮像画像における対象画像間の距離が、リモコン３２と、マーカ３０ａおよび３０ｂとの距離に応じて変化するので、２つのマーカ座標間の距離を算出することによって、ゲーム装置１２はリモコン３２と、マーカ３０ａおよび３０ｂとの間の距離を把握できる。
【００９８】
図５に戻って、加速度センサ８４が検出した加速度を示すデータもまた、通信部８６へ出力される。加速度センサ８４は、たとえば最大１００フレーム／秒程度のサンプリング周期を有する。
【００９９】
コネクタ４２には、ジャイロセンサユニット３４のコネクタ５０が接続される。ジャイロセンサユニット３４は、その内部にジャイロセンサ５６およびマイコン５８を含む。ジャイロセンサ５６は、たとえば加速度センサ８４と同様のサンプリング周期を有する。マイコン５８は、ジャイロセンサ５６が検出した角速度を示すデータをコネクタ５０およびコネクタ４２を介して通信部８６に出力する。
【０１００】
なお、上述した通信部８６への各出力は、たとえば１／２００秒周期で実行される。したがって、任意の１／２００秒間に、操作部３８からの操作データと、撮像情報演算部４０のからの位置座標データと、加速度センサ８４からの加速度データと、ジャイロセンサ５６からの角速度データとが、１回ずつ通信部８６に出力される。
【０１０１】
図７には、図５に示した全体構成のうちジャイロセンサユニット３４の要部構成が示される。上述のコネクタ４２およびコネクタ５０は、それぞれたとえば６ピンのコネクタであり、この６ピンの中に、コネクタ間の接続状態を示す変数“Attach”を制御するためのAttachピンが含まれている。Attachは、コネクタ４２・コネクタ５０間つまりリモコン３２・ジャイロセンサユニット３４間が切断されていることを示す“Ｌｏｗ”と、コネクタ４２・コネクタ５０間つまりリモコン３２・ジャイロセンサユニット３４間が接続されていることを示す“Ｈｉｇｈ”との間で変化する。
【０１０２】
上記６ピンのうち他の２つにはＩ２Ｃバスが割り当てられており、このＩ２Ｃバスから、図８に示すジャイロセンサユニット３４からの出力データ（角速度データ）がリモコン３２へ入力される。
【０１０３】
ジャイロセンサユニット３４のマイコン５８は、Ａ／Ｄ変換回路５８ａおよび５８ｂを含んでおり、ジャイロセンサ５６から出力される３軸周りの角速度信号は、これらＡ／Ｄ変換回路５８ａおよび５８ｂの各々に与えられる。Ａ／Ｄ変換回路５８ａでは、ジャイロセンサ５６の検出範囲の全部（たとえば±３６０度／秒）を対象とする高角速度モードのＡ／Ｄ変換処理が実行され、Ａ／Ｄ変換回路５８ｂでは、ジャイロセンサ５６の検出範囲の一部（たとえば±９０度／秒）を対象とする低角速度モードのＡ／Ｄ変換処理が実行される。マイコン５８は、これら２種類のＡ／Ｄ変換結果のいずれか一方を角速度データとして出力する。
【０１０４】
具体的には、Ａ／Ｄ変換回路５８ａおよび５８ｂからある時刻に対応する２種類の角速度データが出力されると、マイコン５８は最初、このうち低角速度モードの角速度データについて、その値Ａが第１閾値Ｔｈ１から第２閾値Ｔｈ２（＞Ｔｈ１）までの範囲内にあるかどうか、すなわち条件“Ｔｈ１≦Ａ≦Ｔｈ２”が満足されるか否かを、軸毎に、つまりヨー、ロールおよびピッチの各々について判定する。次に、これら３つの判定結果に基づいて、低角速度モードおよび高角速度モードのいずれか１つを選択する。たとえば、３つの判定結果それぞれに関して、ＹＥＳであれば低角速度モードを選択し、ＮＯであれば高角速度モードを軸ごとに選択する。そして、軸ごとに選択されたモードに従う角速度データを、選択されたモードを示すモード情報と共にそれぞれ出力する。つまり、角速度に応じてデータの精度を変えることによって、同じデータ量であっても、低速のときにはより精度の高いデータを出力することができる。
【０１０５】
図８には、ジャイロセンサユニット３４が取り扱うデータのフォーマットが示される。ジャイロセンサユニット３４用のデータは、ヨー角速度データ、ロール角速度データおよびピッチ角速度データと、ヨー角速度モード情報、ロール角速度モード情報およびピッチ角速度モード情報とを含む。ただし、図９に示すように、ｙ軸の回転がヨー角で表わされ、ｘ軸の回転がピッチ角で表わされ、そして、z軸の回転がロール角で表わされるものとする。
【０１０６】
ヨー角速度データ、ロール角速度データおよびピッチ角速度データは、ジャイロセンサ５６から出力されるヨー角速度信号、ロール角速度信号およびピッチ角速度信号をＡ／Ｄ変換して得られる、たとえば各１４ビットのデータである。ヨー角速度モード情報、ロール角速度モード情報およびピッチ角速度モード情報は、それぞれ対応する角速度データのモードを示す各１ビットの情報であり、高角速度モードに対応する“０”と、低角速度モードに対応する“１”との間で変化する。
【０１０７】
ジャイロセンサユニット３４は通信部８６に、図８のフォーマットに従うジャイロ用データを、たとえば１／１００秒周期で出力する。これはゲームの処理等で一般的な処理期間である１／６０秒周期よりも十分短いことから、ゲーム処理でそのデータを完全に利用することができる。
【０１０８】
この図８に示すようなジャイロデータが、後述の角速度データdataとして、リモコン３２からゲーム機12に送信される。
【０１０９】
このゲームシステム１０では、ボタン操作だけでなく、コントローラ１４自体を動かすことによっても、ゲームなどのアプリケーションに対する入力を行うことができる。ゲームをプレイする際には、リモコン３２には３軸方向の加速度を検出する加速度センサ８４が内蔵され、リモコン３２にジャイロセンサユニット３４が装着されている場合には、リモコン３２自身の動きを示す３軸周りの角速度がさらに検出される。
【０１１０】
これらの検出値は、先述したコントローラデータの態様でゲーム装置１２に送信される。ゲーム装置１２（図４）では、コントローラ１４からのコントローラデータは、入出力プロセッサ６２ａによってアンテナ７２ａおよび無線コントローラモジュール７２を介して受信され、受信されたコントローラデータは、内部メインメモリ６２ｅまたは外部メインメモリ６６のバッファ領域に書き込まれる。ＣＰＵ４４は、内部メインメモリ６２ｅまたは外部メインメモリ６６のバッファ領域に格納されたコントローラデータを読み出し、このコントローラデータから検出値つまりコントローラ１４によって検出された加速度および／または角速度の値を復元する。
【０１１１】
なお、角速度データには高角速度および低角速度の２つのモードがあるため、これら２つのモードにそれぞれ対応する２種類の角速度復元アルゴリズムが準備される。角速度データから角速度の値を復元するにあたっては、当該角速度データのモードに対応する角速度復元アルゴリズムが、角速度モード情報に基づいて選択される。
【０１１２】
ＣＰＵ６０はまた、このような復元処理と並行して、復元された加速度からコントローラ１４の速度を計算する処理を実行してもよい。さらに並行して、計算された速度からコントローラ１４の移動距離ないし位置を求めることもできる。一方、復元された角速度からは、コントローラ１４の回転角が求まる。なお、加速度を積算して速度を求めたり、角速度を積算して回転角を求めたりする際の初期値（積分定数）は、たとえば、撮像情報演算部４０のからの位置座標データに基づいて計算できる。位置座標データはまた、積算によって蓄積されていく誤差の修正にも用いることができる。
【０１１３】
ゲーム処理は、こうして求められた加速度、速度、移動距離、角速度および回転角などの変数に基づいて実行される。したがって、上記の処理は全てを行わなくともよく、ゲーム処理に必要な変数を適宜算出すればよい。なお、角速度や回転角も、原理的には加速度から計算し得るが、そのためには、ゲームプログラムに複雑なルーチンが必要で、ＣＰＵ６０にも重い処理負荷がかかる。ジャイロセンサユニット３４を利用することで、プログラム開発が容易になり、ＣＰＵ６０の処理負荷も軽減される。
【０１１４】
図１０は図２に示した内部メインメモリ６２ｅまたは外部メインメモリ６６のメモリマップを示す図解図である。図１０に示すように、メインメモリ（６２ｅ，６６）は、プログラム記憶領域９６およびデータ記憶領域９８を含む。なお、データ記憶領域９８の具体的な内容については、図１１に示す。
【０１１５】
プログラム記憶領域９６には、ゲームプログラムが記憶され、ゲームプログラムは、ゲームメイン処理プログラム９６ａ、画像生成プログラム９６ｂ、画像表示プログラム９６ｃ、角速度検出プログラム９６ｄおよび加速度検出プログラム９６ｅなどによって構成される。
【０１１６】
ゲームメイン処理プログラム９６ａは、この実施例の仮想ゲームのメインルーチンを処理するためのプログラムである。画像生成プログラム９６ｂは、後述する画像データ９８ａ（図１１参照）を用いて、モニタ２６にゲーム画面を表示するためのゲーム画像を生成するプログラムである。画像表示プログラム９６ｃは、画像生成プログラム９６ｂに従って生成されたゲーム画像をゲーム画面としてモニタ２６に表示するためのプログラムである。
【０１１７】
角速度検出プログラム９６ｄは、ジャイロセンサ５６で検出された角速度についての角速度データを検出するためのプログラムである。上述したように、角速度データは、リモコン３２からの入力データに含まれているため、ＣＰＵ６０は、角速度検出プログラム９６ｄに従って、リモコン３２からの入力データに含まれる角速度データを検出する。ただし、この角速度検出プログラム９６ｄは、後述の図１４に示す補正プログラムを含む。
【０１１８】
加速度検出プログラム９６ｅは、加速度センサ８４で検出された加速度についての加速度データを検出するためのプログラムである。上述したように、加速度データは、リモコン３２からの入力データに含まれているため、ＣＰＵ６０は、加速度検出プログラム９６ｅに従って、リモコン３２からの入力データに含まれる１つまたは２つの加速度データを検出するのである。
【０１１９】
なお、図示は省略するが、ゲームプログラムには、音出力プログラムやバックアッププログラムなども含まれる。音出力プログラムは、音（音楽）データを用いて、音楽（ＢＧＭ）、オブジェクトの音声ないし擬声音、効果音のようなゲームに必要な音を出力するためのプログラムである。バックアッププログラムは、ゲームデータ（途中データ，結果データ）をメモリカードにセーブ（保存）するためのプログラムである。
【０１２０】
また、図１１に示すように、データ記憶領域９８には、画像データ９８ａ、角速度データ９８ｂおよび加速度データ９８ｃなどの各種データが一時的に記憶される。また、データ記憶領域９８には、タイマやレジスタさらには必要なフラグのためのフラグレジスタ領域９８ｄ、ＦＩＦＯ（先入れ先出し）バッファ１００等が適宜設けられる。
【０１２１】
画像データ９８ａは、ゲーム画像を生成するための画像データであり、プレイヤオブジェクトやノンプレイヤオブジェクトなどのオブジェクト画像データ、さらにはポリゴンデータやテクスチャデータなどを含む。角速度データ９８ｂは、角速度検出プログラム９６ｄに従って検出し、補正プログラムに従って補正した角速度データである。ただし、この実施例では、１フレーム毎に、３ないし４個の角速度データが検出される。加速度データ９８ｃは、加速度検出プログラム９６ｅに従って検出されたリモコン３２の加速度データである。角速度や加速度のデータは、フレーム毎に姿勢を算出するために用いられるが、補正等の目的のために複数フレーム期間分の個数（たとえば２０個）を記憶しておくようにしてもよい。
【０１２２】
データ記憶領域９８には、図１２に詳細に示す、ＦＩＦＯバッファ１００が形成される。このＦＩＦＯバッファ１００は、複数段の直列に接続されたデータバッファを含み、各段（記憶場所）がバッファインデックスidxによって指定される。データバッファには、角速度データ、加速度データ等のディジタルデータが格納される。
【０１２３】
図４に示したＣＰＵ６０が実行するこの実施例の処理について、図１３‐図１４を参照して説明する。図１３に示すゲームメイン処理の最初のステップＳ１において、図１1に示すデータ記憶領域９８のフラグレジスタ領域９８ｄに設定されている修正オフセット値ofsを初期化する。修正オフセット値ofsは、温度ドリフト等により、ジャイロセンサ５６から出力される角速度がゼロであることを示すアナログ値に対応付けられたディジタルの整数値データが、実際に速度がゼロであることを示すアナログ値を変換したディジタルの整数値データとの間に差異が生じた際に、その差異をなくす（減らす）ための補正に用いられるオフセット値（ゼロ点オフセット値）である。この初期化の際に格納される初期値（デバイス固有値）は、たとえば、ジャイロセンサユニット３４に含まれる個々のジャイロセンサ５６に固有のもので、ジャイロセンサ５６の工場出荷時に設定されている。個々では、そのデバイス固有の初期値を修正オフセット値ofsとして設定する。たとえば、工場で２５°Ｃで計測した値が初期値となる。工場出荷後に、所定の方法により更新可能であってもよい。
【０１２４】
続くステップＳ３において、ＣＰＵ６０は、ＦＩＦＯバッファ１００の各データバッファを指定するためのバッファインデックスidxを初期化する。一例としては、バッファインデックスidxに「０」を設定する。ただし、この初期値は、「０」から「BUFS−１」の範囲のどの値であってもよい。ここで、BUFSとは、ＦＩＦＯバッファ１００の大きさを示す数値であり、たとえばフラグレジスタ領域９８ｄにバッファ容量BUFSとして記憶されている。たとえば、バッファ容量BUFSが「４００」で設定された大きさのＦＩＦＯバッファ１００であれば、バッファインデックスidxの初期値は「０」から「３９９（４００−１）」の範囲で設定される。
【０１２５】
その後、ステップＳ５で、ＦＩＦＯバッファ１００内を初期化する。たとえば、「−１００」のように、ジャイロセンサ５６から得られる値の範囲から定数C1（たとえば、「１」）よりも十分離れた値を設定する（buf[0-(BUFS-1)]←−１００）。
【０１２６】
そして、ステップＳ７において、図１４に示す角速度データ取得プログラムに従って角速度データを取得する。
【０１２７】
その後、ステップＳ１１では、ゲーム処理中に、ＣＰＵ６０は、リモコン３２すなわちジャイロセンサユニット３４を等速で移動させる操作を行う可能性がある場面かどうかを判断する。たとえば射撃ゲームにおいて、弾を装填した銃や、矢を番えた弓によって標的を狙うときなどにおいては、プレイヤは銃口や弓をたとえば左から右へゆっくり動かすような操作をする。銃口や弓による狙いをリモコン３２で操作する場合、リモコン３２を実空間内でゆっくり動かす。その場合には、リモコン３２すなわちジャイロセンサユニット３４を実空間内で等速操作される可能性がある。ステップＳ１１では、現在の場面がそのような等速操作を行う可能性がある場面かどうか判断する。これは、予めゲーム内の場面ごとに設定されたフラグにより判定しても良いし、リモコン３２の入力モードによって判定しても良いし、リモコン３２からの入力データによって判定しても良いし、その他にリモコン３２を等速操作を判定できるような条件であれば何で判定しても良い。
【０１２８】
このステップＳ１１で“ＹＥＳ”を判断したとき、ＣＰＵ６０は、ステップＳ１３でオフセット補正フラグcfgを０に設定してステップＳ１５に進み、また、ステップＳ１１で“ＮＯ”なら、ステップＳ１４でオフセット補正フラグcfgを１に設定してステップＳ１５に進む。オフセット補正フラグcfgとは、修正オフセット値ofsを補正する必要があるかどうかを示すフラグで、修正オフセット値ofsを補正する必要がない場合（等速操作を行う可能性がある場合）は０が、修正オフセット値ofsを補正する必要がある場合（等速操作を行う可能性がない場合）は１が設定される。
【０１２９】
ついで、ステップＳ１５でゲーム終了かどうか判断する。たとえば、ゲームオーバーになったか、プレイヤがゲームを終了するようにリモコン３２を操作したとき、ステップＳ１５で“ＹＥＳ”となり、ゲームを終了する。ステップＳ１５で“ＮＯ”なら、先のステップＳ７に戻って角速度データの取得およびゲーム処理等を引き続き行う。
【０１３０】
先のステップＳ７における角速度データ取得処理を図１４を参照して詳しく説明する。ただし、この図１４では１軸の角速度取得処理についてのみ図示しているが、もし、軸が図９に示すように複数設定されている場合には、すべての軸について同様の処理を実行するということを、予め理解されたい。
【０１３１】
図１４の最初のステップＳ３１で、ＣＰＵ６０は、バッファインデックスidxをインクリメントする（idx←(idx+1)%BUFS）。ここで、記号「%」は、剰余を示す演算子であり、モジュロ演算が行われる。たとえば、バッファ容量BUFSが「４００」で設定された大きさのＦＩＦＯバッファ１００で処理が行われていれば、バッファインデックスidxは「０」から「３９９」の範囲を１ずつ増加するように更新（インクリメント）される。ただし、モジュロ演算が行われることにより、「３９９」は「０」に更新される。このように剰余を用いてバッファインデックスidxを更新している理由は、容量が予め定められたループバッファであるＦＩＦＯバッファ１００に含まれる複数段の直列に接続されたデータバッファを順序立てて効率よく利用するために行うバッファインデックスidxの更新処理を効率的に行う為である。
【０１３２】
次のステップＳ３３で、ＣＰＵ６０は、入／出力プロセッサ６２ａによって受け取った、コントローラ１４すなわちリモコン３２からの角速度データ（整数値）を取得して、フラグレジスタ領域９８ｄ（図１１)に含まれる角速度データdataにその角速度データを格納する。
【０１３３】
続くステップＳ３５において、ＣＰＵ６０は、角速度データdataに格納した角速度データ(最新の角速度データ)をステップＳ３１でインクリメントしたバッファインデックスidxで示されるＦＩＦＯバッファ１００のデータバッファに格納する（buf[idx]←data)。
【０１３４】
次のステップＳ３７で、ＣＰＵ６０は、過去のデータを調べる準備をする。つまり、この実施例では、コントローラ１４すなわちリモコン３２から取得した角速度データの補正及びジャイロセンサ５６の修正オフセット値ofsのずれを補正するために行われる、角速度データdataに格納した角速度データ(最新の角速度データ)と過去の角速度データ（ＦＩＦＯバッファ１００のデータバッファに格納された角速度データ）との比較処理の準備（変数やカウンタの初期化または設定）をこのステップＳ３７で実行する。
【０１３５】
ＣＰＵ６０は、まず、フラグレジスタ領域９８ｄに形成されている連続個数ctに「１」を設定する。この連続個数ctは、連続数をカウントするためのカウンタであって、この連続個数ctが示す値は、後述の一定条件（ステップＳ３９）を満たす値の入ったデータバッファが何回連続検出できたかを示す。同じくフラグレジスタ領域９８ｄに形成される合計値sumに、ステップＳ３３で角速度データdataに書き込んだ角速度データを格納する。つまり、初期状態としてステップＳ３３で角速度データdataに書き込んだ角速度データが合計値sumに格納される。そして、定数C1を用いて、安定範囲（下限）d1および安定範囲（上限）d2（ともにフラグレジスタ領域９８ｄに形成される。）を設定する。つまり、安定範囲（下限）d1に下限値data-C1を設定し、安定範囲（上限）d2に上限値data+C1を設定する。なお、安定範囲（下限）d1および安定範囲（上限）d2にそれぞれ設定する下限値および上限値によって、先のステップＳ３３で書き込んだ角速度データdataを中心として上下均等な範囲（上下C1分の幅）を設定することになる。他の例では、定数C1は変数として、角速度データdataや連続個数ct等に応じて変化させても良いし、その他の状況に応じて変化させても良い。
【０１３６】
ステップＳ３７における変数iは、ステップＳ３５で角速度データを書き込んだバッファインデックスidxで示される位置のＦＩＦＯバッファ１００のデータバッファから遡って調べるデータバッファの位置を指定するための値であって、フラグレジスタ領域９８ｄに設定されている。そして、この変数iを「１」ずつ減らす方向にずらして（(idx-1+BUFS)%BUFS）)、その変数が指定するデータバッファ内の値を調べ、変数iが変数i2になったとき、その遡り検索を終了する。ただし、変数i2は(idx-CMAX+BUFS)%BUFSで示される。ここで、最大検索数CMAXで示す数値は、最大何個のデータを遡って調べるかを示す数値である。つまり、最大検索数CMAX分の検索を行った際に、変数iがずらされた位置を示す値が変数i2となる。したがって、バッファ容量BUFSはこの最大検索数CMAXより大きくなければならない（BUFS≧CMAX）。たとえば、最大検索数CMAXはCMAX=400が設定される。このように剰余を用いて変数iおよび変数i2を設定している理由は、バッファインデックスidxを更新する際に剰余を用いている理由と同じである。また、変数iを設定する際にバッファ容量BUFSを加算している（+BUFS)理由は、バッファインデックスidxが０の場合には「idx-1」がマイナス(−)になってしまい、マイナスの値に対してモジュロ演算を行うと正しい計算結果を得ることができないためである。
【０１３７】
次のステップＳ３９からＳ４５においては、角速度データdataに格納した角速度データ(最新の角速度データ)と過去の角速度データ（ＦＩＦＯバッファ１００のデータバッファに格納された角速度データ）との比較処理が行われる。まず、ＣＰＵ６０は、ステップＳ３９において、ステップＳ３７でインクリメントした変数iで指定されるデータバッファ内の値が、安定範囲（下限）d1および安定範囲（上限）d2で設定された安定範囲内にあるかどうかを判断する（d1≦buf[i]≦d2)。もし、ステップＳ３９で“ＹＥＳ”が判断されるとき、つまり、変数iで指定されるデータバッファ内の値が安定範囲（下限）d1および安定範囲（上限）d2で設定された安定範囲内に含まれる（角速度データdataに近い値である）ときは、続くステップＳ４１において、上記安定範囲内に含まれる値つまり、その変数iで指定されるデータバッファ内の値を合計値sumに加算する。つまり、変数iで指定されるデータバッファ内の値が上記安定範囲の条件（安定範囲（下限）d1および安定範囲（上限）d2で設定された安定範囲内に含まれる）を満たすときは、そのデータバッファの値によって合計値を更新する。その後、ステップＳ４３において、連続個数ctをインクリメントする。これにより、上記安定範囲の条件を連続して満たすデータバッファの個数が連続個数ctによってカウントされる。さらにこのステップＳ４３においては、上記変数iを「１」減らす方向にずらして更新する（i←(i-1+BUFS)%BUFS）)。変数iを更新する際にバッファ容量BUFSを加算している（+BUFS)理由は、ステップＳ３７で変数iの設定を行う時と同様の理由である。そして、ステップＳ４５において、最大検索数CMAX分の検索を行ったかどうかを判断する。すなわち、変数iが更新されて、変数i2に達したかどうかを判断している。ここで、最大検索数CMAX分の検索を行っていれば“ＹＥＳ”が判断され、ステップＳ４７に進む。一方、最大検索数CMAX分の検索を行っていなければ“ＮＯ”が判断され、その場合には、先のステップＳ３９に戻って検索を継続する。
【０１３８】
これに対して、ステップＳ３９で“ＮＯ”が判断されるときは、最大検索数CMAX分の検索を行う前に、データバッファ内の値で安定範囲（下限）d1および安定範囲（上限）d2で設定された安定範囲外の値が検出されたことを意味し、そのことは、換言すれば、リモコン３２すなわちジャイロセンサユニット３４に速度変化の大きい動きを与えられた（急に動かされた）ことを意味する。この場合には、ステップＳ３９からステップＳ４７に進む。
【０１３９】
以上のステップＳ３９からステップＳ４５を繰り返すことにより、連続個数ctには、角速度データdataが格納されたデータバッファから遡って連続して安定範囲（下限）d1および安定範囲（上限）d2で設定された安定範囲内に収まると判断されたデータバッファの数が格納され、合計値sumには、そのデータバッファ内の値の合計値が格納されていることになる。つまり、ステップＳ３５で角速度データ書き込んだデータバッファの位置から遡って、新しいデータバッファから古いデータバッファへ順に、連続して上記安定範囲内（d1≦buf[i]≦d2)に含まれるデータバッファを繰り返し取得して、その個数（連続個数ct）及び合計値（合計値sum）を算出する（ただし、検索する上限数は最大検索数CMAX）。
【０１４０】
ステップＳ３９で“ＮＯ”が判断されたか、ステップＳ４５で“ＹＥＳ”が判断された後に、ステップＳ４７において、ＣＰＵ６０は、そのときのリモコン３２すなわちジャイロセンサユニット３４の静止具合値（静止の程度）aを求める。この静止具合値aは「０」〜「１」の範囲内の数値であり、リモコン３２すなわちジャイロセンサユニット３４の動きの変化が少ない（安定している）期間が長ければ長いほど「１」に近づく値で、連続個数ctでカウントした連続個数が最大検索数CMAXと等しいとき（ct=CMAXのとき）、すなわち角速度データdataが格納されたデータバッファから遡って連続して最大検索数CMAX分のデータバッファの値がすべて安定範囲（下限）d1および安定範囲（上限）d2で設定された範囲内に入っていたとき（ステップＳ４５で“ＹＥＳ”が判断されたとき）、最大値「１」になるようにして正規化している。
【０１４１】
具体的には、静止具合値aは、最大検索数CMAXに対する連続個数ctの割合（ct÷CMAX）で決まる。たとえば、最大検索数CMAXが４００のときに３９９個目のデータでステップＳ３９にて“ＮＯ”に分岐した場合（ct=３９９）は、静止具合値aは３９９／４００になる。また、最大検索数CMAXが４００のときに１個目のデータでステップＳ３９にて“ＮＯ”に分岐した場合（ct=１）は、静止具合値aは１／４００になる。つまり、静止具合値aは、角速度データdataが格納されたデータバッファから遡って連続してどれくらい前までデータバッファの値が上記安定所定範囲内に収まっていたか（安定していたか）を示す指標である。
【０１４２】
そして、さらに、k乗する（k≧1）（ak）ことによって、変動の少ない状態が長く続いたとき、つまりステップＳ３９で“ＹＥＳ”と判断される回数（連続個数ctの値）が多い（大きい）ときと少ない（小さい）ときとの差を大きくする。すなわち、静止具合値aをそのまま使うと連続個数ctに比例するだけであるが、べき乗たとえば、k乗することによって、連続個数ctに対して累乗的に静止具合値aが変化するように設定でき、連続個数ctを用いた処理を行う場合に、連続個数ctが大きいときと小さいときとの差を明確に出すことができる。実施例では、k=３２に設定した。ただし、k=１の時ように、静止具合値aが連続個数ctに比例するような値であっても実施可能である。さらに他の例では、kを変数として、角速度データdataや連続個数ct等に応じて変化させても良いし、その他の状況に応じて変化させても良い。
【０１４３】
次に、ステップＳ４９において、ＣＰＵ６０は、静止具合値aに応じた平均値を用いて、角速度データdataの補正を行う（data←data+(sum÷ct-data)×a）。つまり、合計値sumに格納している合計値を連続個数ctで割り、その商から角速度データdataを減じ、その結果に静止具合値aを乗算して角速度データdataに加算する。このことは換言すれば、静止具合値aの値に応じて、角速度データdataを採用するか平均値（sum÷ct）を採用するかの重み付けが決まるということである。したがって、静止具合値aが大きければ大きいほど平均値の重みが重くなるように（平均値の影響が大きくなるように）、平均値と角速度データdataの加重平均値が算出される。また、静止具合値aが小さければ小さいほど角速度データdataの重みが重くなるように（角速度データdataの影響が大きくなるように）、平均値と角速度データdataの加重平均値が算出される。この算出された加重平均値で角速度データdataが補正される。つまり、静止具合値ａが大きければ大きいほど、すなわち、リモコン３２すなわちジャイロセンサユニット３４の動きの変化が少ない（安定している）期間が長ければ長いほど、平均値の重みが重くなる（平均値の影響が大きくなる）ので、角速度データdataは、精度が高く、ぶれを抑えた滑らかな信頼度の高い値に補正される。また、静止具合値ａが小さければ小さいほど、すなわち、リモコン３２すなわちジャイロセンサユニット３４に変化が大きい（速度変化が大きい）動きが与えられた際には、角速度データdataの重みが重くなる（角速度データdataの影響が大きくなる）ので、角速度データdataは、変化の大きい動きを迅速に反映するような追従性の高い（レスポンスのよい）値に補正される。
【０１４４】
ただし、ステップＳ４９では、上記の計算を行うことにより角速度データdataを上書きして補正するようにしたが、角速度データdataはそのままの状態で更新を行わずに、補正後のデータを別途出力するようにすることも考えられ、コネクタ等で用いられる場合には、このステップＳ４９で補正を行った角速度データdataを別途出力しても良い。このように、別途出力を行うことにより、角速度データdataを別の目的で利用することが可能となる。
【０１４５】
また、このステップＳ４９では、静止具合値aを用いることにより重み付けを行っているが、ステップＳ３９において、角速度データdataが格納されたデータバッファから遡って連続して安定範囲（下限）d1および安定範囲（上限）d2で設定された安定範囲内に収まると判断されたデータバッファのみが、連続個数ctと合計値sumに影響を与え、変化の大きい動きが行われた際のデータは影響を与えにくい為、常に静止具合値aを１として、すなわち角速度データdataに平均値（sum÷ct）を代入することにより、角速度データdataの補正を行っても良い。更には、静止具合値aに対して所定の閾値を設けて、静止具合値aが所定の閾値を上回ったときのみ、ステップＳ４９による補正を行ったり、逆に静止具合値aが所定の閾値を下回ったときのみ、ステップＳ４９による補正を行ったりしてもよい。
【０１４６】
このように、この実施例では、取得した角速度データdataに対して設定された安定範囲（下限）d1および安定範囲（上限）d2で示される範囲（安定範囲）内に含まれるデータバッファが連続している度合い（静止具合値a）に応じた重み付けに基づいて、角速度データdataと平均値データとの加重平均が算出されるので、連続している度合い（静止具合値a）が大きいときには平均値データが重い重み付けで採用される（平均値の影響が大きくなる）ために、精度が高く、ぶれを抑えた滑らかな信頼度の高い角速度データdataが得られる。逆に、連続している度合い（静止具合値a）が小さいときには角速度データdataが重い重み付けで採用される（角速度データdataの影響が大きくなる）ために、たとえば急激な変動が生じている場合には、角速度データdataはその変動を迅速に反映するように補正されるので、変化の大きい動きを迅速に反映するような追従性の高い（レスポンスのよい）角速度データdataが得られる。
【０１４７】
つまり、このような処理によって、リモコン３２すなわちジャイロセンサユニット３４の動きの変化が少ない（安定している）時には精度が高く、ぶれを抑えた滑らかな信頼度の高いディジタルデータ（出力データ)が得られる反面、反応を鈍化させる平滑処理を行いながらも、機敏な反応が求められるときには、変化の大きい動きを迅速に反映するような追従性の高い（レスポンスのよい）ディジタルデータ（出力データ)が得られ、二律背反的な要求に効果的に応えることができる。
【０１４８】
さらに、前述の静止具合値aが大きければ大きいほど（リモコン３２すなわちジャイロセンサユニット３４の動きの変化が少ない（安定している）期間が長ければ長いほど）、ジャイロセンサ５６から出力される角速度におけるゼロ点のオフセットとして用いている修正オフセット値ofsを、ステップＳ４９で補正された角速度データdataに近づける補正も行うことで、温度ドリフトによりゼロ点のずれを軽減することができる。
【０１４９】
まず、ステップＳ５１において、修正オフセット値ofsを補正するかどうかを判定する。具体的には、図１３のステップＳ１１において、ゲーム処理中に、リモコン３２すなわちジャイロセンサユニット３４を等速で移動させる操作を行う可能性がある場面かどうかを判断した結果に基づき、図１３のステップＳ１３または図１３のステップＳ１４でセット（リセット）されたオフセット補正フラグcfgに基づいて判定する。オフセット補正フラグcfgが１、すなわち、図１３のステップＳ１１で“ＮＯ”に分岐し、ステップＳ１４でオフセット補正フラグcfgを１に設定した場合であり、リモコン３２すなわちジャイロセンサユニット３４を等速で移動させる操作を行う可能性がない場合には、ステップＳ５３で修正オフセット値ofsの補正を行う。また、オフセット補正フラグcfgが０、すなわち、図１３のステップＳ１１で“ＹＥＳ”に分岐し、ステップＳ１３でオフセット補正フラグcfgを０に設定した場合であり、リモコン３２すなわちジャイロセンサユニット３４を等速で移動させる操作を行う可能性がある場合には、修正オフセット値ofsの補正は行わずに、ステップＳ５５に進む。
【０１５０】
ステップＳ５３では、静止具合値aが大きければ大きいほど（リモコン３２すなわちジャイロセンサユニット３４の動きの変化が少ない（安定している）期間が長ければ長いほど）、リモコン３２すなわちジャイロセンサユニット３４の動きの変化が少ない（安定している）といえるので、静止具合値aの大きさに応じて、ステップＳ４９で補正された角速度データdataが、コントローラの静止状態における角速度データ（ゼロ点）であるように補正を行う度合いを算出して、その度合いに応じたオフセット値（修正オフセット値ofs）を補正する。
【０１５１】
具体的には、静止具合値aに定数C2を乗算して静止具合値aを変更する。定数C2は、たとえば「０．０１」として設定され、静止具合値aは0.01×aに変更される。定数C2を乗じることにより、静止具合値aを小さい値に変更している理由は、ステップＳ４７で算出された静止具合値aをそのまま利用すると、短期間で角速度データdataが、コントローラの静止状態における角速度データ（ゼロ点）であるように補正されてしまい、角速度データdataの値が出にくくなってしまうためである。また、ゼロ点のずれの原因となる温度ドリフトという現象は変化の激しい現象ではなく、この補正は反応良く行う必要がないためでもある。他の例では、定数C2は変数として、角速度データdataや連続個数ct等に応じて変化させても良いし、その他の状況に応じて変化させても良い。そして、その変更された静止具合値aを使って、修正オフセット値ofsを補正する。つまり、修正オフセット値ofsに対して、ステップＳ４９で補正された角速度データdataから修正オフセット値ofsを減算した結果に、定数C2を乗算して変更した静止具合値aを掛けた値を加算する。したがって、静止具合値aに応じて、ステップＳ４９で補正された角速度データdataと修正オフセット値ofsとの差分を、所定の割合（定数C2を乗算して変更した静止具合値a）に応じて、修正オフセット値ofsに加算される。その結果、静止具合値（静止の程度）aが大きければ大きいほど（リモコン３２すなわちジャイロセンサユニット３４の動きの変化が少ない（安定している）期間が長ければ長いほど）、修正オフセット値ofsがステップＳ４９で補正された角速度データdataに近い値に補正される、換言すれば、修正オフセット値ofsがステップＳ４９で補正された角速度データdataに収束する割合が大きく（度合いが強く）なる。また他の例では、所定の条件を満たす時（例えば、角速度データdataから修正オフセット値ofsを減算した結果が所定値以下の場合）にのみ、修正オフセット値ofsを補正しても良い。
【０１５２】
その後、ステップＳ５５では、ステップＳ４９で補正された角速度データdataから修正オフセット値ofsを減じることにより、ジャイロセンサ５６から出力される角速度におけるゼロ点の補正を考慮した上で、角速度データdataが再度補正され、図１３のステップＳ９にリターンする。なお、図１３のステップＳ１１で“ＹＥＳ”に分岐し、ステップＳ１３でオフセット補正フラグcfgを０に設定した場合であり、リモコン３２すなわちジャイロセンサユニット３４を等速で移動させる操作を行う可能性がある場合には、ステップＳ５３で補正が行われないままの修正オフセット値ofsをそのまま用いて、角速度データdataの補正が行われる。
【０１５３】
上述のように、静止具合値aの大きさ（リモコン３２すなわちジャイロセンサユニット３４の動きの変化が少ない（安定している）期間の長さ）により実施例のようなリモコン３２すなわちジャイロセンサユニット３４の安定状態の判定を行うと、リモコン３２すなわちジャイロセンサユニット３４を等速で移動させ続けた場合にも、静止具合値（静止の程度）aが大きい（リモコン３２すなわちジャイロセンサユニット３４の動きの変化が少ない（安定している）期間が長い）と判定されるという現象が起こる。ステップＳ４９における角速度データdataの補正に関しては、等速で移動させ続けた場合にコントローラ１４すなわちリモコン３２から出力される角速度データは同じ（または近い）データが出力され続け、変化の大きい動きを迅速に反映するような追従性は求められない為に、平均値データが重い重み付けで採用される（平均値の影響が大きくなる）ことには問題はないが、ステップＳ５３における修正オフセット値ofsの補正に関しては、修正オフセット値ofsがステップＳ４９で補正された角速度データdataに近い値に補正される割合が大きく（度合いが強く）なってしまい、リモコン３２すなわちジャイロセンサユニット３４の移動している状態を、コントローラの静止状態における角速度データ（ゼロ点）であるように補正されてしまうという問題が生じる。ただし、実施例のようなゲームシステムでは、リモコン３２すなわちジャイロセンサ５６を人が手に持って操作することを前提にしているため、角速度におけるゼロ点のオフセット修正が起こるほど、機械のように正確にリモコン３２すなわちジャイロセンサユニット３４を等速で移動させ続けられないということで、実用においては問題になることはない、ということもできる。
【０１５４】
それでももし、そのような都合の悪い状況が起こりやすい操作を必要とする場合には、修正オフセット値ofsの補正を行うタイミングを工夫する必要がある。たとえば、リモコン３２すなわちジャイロセンサユニット３４でゲーム画面上の弓を動かして何かを慎重に狙う場合、リモコン３２すなわちジャイロセンサユニット３４が静かに等速で動かされる可能性がある。したがって、この実施例においては、たとえば矢を番える前まではゼロ点オフセットの修正処理機能をＯＮにしておき、矢を番えて慎重に狙いだしたらＯＦＦにするようにしている。それらの判定基準として用いられているのが、前述のオフセット補正フラグcfgである。
【０１５５】
なお、ゼロ点のオフセット値は、温度センサを別途準備すれば、正確に温度ドリフトを補償できるように修正することができるが、それにはコストがかかる。これに対して、静止具合値（静止の程度）aに応じてゼロ点のオフセット値（修正オフセット値ofs）を補正しているため、簡易的ではあるが、温度センサを用いなくても温度ドリフトの影響を軽減するようにゼロ点のオフセット値（修正オフセット値ofs）を補正できる。
【０１５６】
なお、上述の実施例では、ジャイロセンサからの出力値をディジタルデータに変換した場合について説明した。しかしながら、この発明は、このようなＡ／Ｄ変換を用いてディジタルデータを取得する任意のセンサに適用できる。たとえば、加速度センサ、速度センサ、変位センサ、回転角センサなど、他のモーションセンサでもよい。モーションセンサ以外にも、傾斜センサ、イメージセンサ、光センサ、圧力センサ、磁気センサ、温度センサなどがあり、いずれのセンサの場合でも、センサからの検出アナログ値をディジタルデータに変換し、そのディジタルデータを使う任意の装置にこの発明を適用できる。ただし、修正オフセット値ofsの補正については必ずしもすべてのセンサが該当するという訳ではなく、たとえば加速度センサについてはゼロ点のオフセットという考え方はない。
【０１５７】
ここで、上記の実施例において具体的数値を当てはめて、この実施例の効果を検証する。
【０１５８】
数値の確認をし易くするために、ここでは次のようなパラメータを用いる。
【０１５９】
C1 = 1、C2 = 1、CMAX = 10、k = 1
正確なゼロ値が安定して出力される例
まず、或る状態として、ジャイロセンサのゼロ点の値が「２．４」であり、プログラム中における修正オフセット値ofsも「２．４」である正常な状況を示す。この場合、リモコン３２すなわちジャイロセンサユニット３４を手に持って静止させていると（完全に固定していない）、入力されるディジタルデータは、統計的に平均値が「２．４」になるように、たまに変動して、たとえば次のようになる。
ディジタルデータ：2 2 2 3 3 2 2 2 3 3
この場合、最新のディジタルデータは「２」または「３」となるが、いずれの場合でも、過去に安定範囲（下限）d1および安定範囲（上限）d2で設定された範囲内の値が続く回数（連続個数ct）は最大検索数CMAXの「１０」と等しくなり、図１４のステップＳ４７において算出される静止具合値aは「１」になる。
【０１６０】
その結果、平均値が２．４になるようなディジタルデータが出力されているという前提の上記のような状況下においては、ステップＳ４９で補正される角速度データdataは、sum/ctで算出されるので、最新値が「２」でも「３」でも「２．４」になる。
【０１６１】
さらに、ステップＳ５３の修正オフセット値ofsの計算結果も「２．４」のまま変化せず、ステップＳ５５の最終出力データとしては、以下のように、「２．４-２．４」＝０．０が続くことになる。
ディジタルデータ：2 2 2 3 3 2 2 2 3 3
アナログ出力：0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
ゼロ点が変化したときに補正される例
次に、上記状態からセンサのゼロ点が「３．６」に変化した場合、上記同様にリモコン３２すなわちジャイロセンサユニット３４を静止させていると、平均値が「３．６」となる次のような変動を生じる。
ディジタルデータ：2 2 2 3 3 (4) 4 4 3 3 4 4 4 3 3
上記ディジタルデータの左から６番目の括弧付の「４」でゼロ点変化が生じたとすると、このときの各ステップ中の変数は表１のようになる。
【０１６２】
【表１】
2010019751.tif 000003
【０１６３】
つまり、次のような結果となり、ゼロ点が変化しても出力データはやがて「０．０」に落ち着くことになる。
ディジタルデータ：2 2 2 3 3 4 4 4 3 3 4 4 4 3 3
アナログ出力：0.0 0.0 0.0 0.0 0.0 (1.0) 0.6 0.3 0.0 0.0 0.1 0.0 0.0 0.0 0.0
したがって、左から７番目のデータからゼロ点の補正がかかり始め、左から１２番目のデータで補正が完了する。
センサを動かしたときにすばやく出力データに反映される例
さらに、上記状態から正方向への回転を行った場合、たとえば次のような入力になる。
ディジタルデータ：4 4 4 3 3 4 (5) 6 7 8 10 12 16 20 25
上記ディジタルデータの左から７番目の括弧付きの「５」で回転を始めたとすると、このときの各ステップ中の変数は表２のようになる。
【０１６４】
【表２】
2010019751.tif 000004
【０１６５】
つまり、次のような結果となり、入力に追従する結果が得られる。
ディジタル入力：4 4 4 3 3 4 5 6 7 8 10 12 16 20 25 
アナログ出力：0.1 0.0 0.0 0.0 0.0 0.0 (1.0) 1.6 2.1 2.5 4.1 5.5 8.6 11.3 14.7
したがって、左から７番目の括弧付の「１．０」で、回転が生じる。
【０１６６】
なお、この例では出力の変化に若干遅れを感じるが、それは、ここの例で用いているパラメータが、少ないデータサンプル数でもゼロ点補正が確認できるように極端な値にしたためである。ゼロ点の補正が即座にかかるような調整は、ジャイロセンサを動かしたときの追従性が鈍くなる。しかしながら、実際の場合は、ゼロ点の補正は数百というデータサンプルが行われる中で変化していく調整がされており、その分ジャイロセンサを動かしたときの追従性は、ここの例に現れたような遅れは生じない。
【０１６７】
上述の実施例では、リモコン３２にジャイロセンサユニット３４（ジャイロセンサ５６）を接続するようにしたが、ジャイロセンサ５６をリモコン３２に内蔵するようにしてもよい。
【０１６８】
また、上述の実施例では、所定のセンサ（上記例ではジャイロセンサ）から出力されるディジタルデータ（角速度データ）を、同一のセンサ（ジャイロセンサ）から出力されるディタルデータ（角速度データ）を用いて静止具合等を算出した上で補正を行っていたが、異なるセンサから出力されるディジタルデータを用いて静止具合等を設定した上で補正を行っても良い。例えば、加速度センサから出力されるディジタルデータ（加速度データ）から静止具合を算出した上で、ジャイロセンサから出力されるディジタルデータ（角速度データ）の補正を行ってもよい。
【図面の簡単な説明】
【０１６９】
【図１】図１はこの発明の一実施例の構成を示すブロック図である。
【図２】図２は図１実施例に適用されるコントローラ（リモコン)の外観を示す図解図であり、図２（Ａ）はリモコンを上面後方から見た斜視図であり、図２（Ｂ）はリモコンを下面前方から見た斜視図である。
【図３】図３は図１実施例に適用されるジャイロセンサユニットの外観を示す図解図であり、図３（Ａ）はジャイロセンサユニットを上面前方から見た斜視図であり、図３（Ｂ）はジャイロセンサユニットを下面後方から見た斜視図である。
【図４】図４は図１実施例の電気的な構成を示すブロック図である。
【図５】図５は図１実施例に適用されるコントローラ全体の電気的な構成を示すブロック図である。
【図６】図６は図１に示すジャイロユニットが接続されたリモコンを用いてゲームプレイするときの状態を概説するための図解図である。
【図７】図７は図１のコントローラにおいて、リモコンに接続したジャイロセンサユニットの電気的な構成を示すブロック図である。
【図８】図８はジャイロセンサユニットが取り扱うデータのフォーマットを示す図解図である。
【図９】図９はジャイロセンサが検出できるヨー角、ピッチ角、ロール角を示す図解図である。
【図１０】図１０は図４に示すメインメモリのメモリマップを示す図解図である。
【図１１】図１１は図１０に示すデータ記憶領域の具体例を示す図解図である。
【図１２】図１２はＦＩＦＯバッファの一例を示す図解図である。
【図１３】図１３は実施例において図４に示すＣＰＵのゲーム処理を示すフロー図である。
【図１４】図１４は図１３に示す角速度データ取得処理の動作を示すフロー図である。
【符号の説明】
【０１７０】
１０  …ゲームシステム
１２  …ゲーム装置
１４  …コントローラ
３２  …リモコン
３４  …ジャイロセンサユニット
５６  …ジャイロセンサ
６０  …ＣＰＵ
６２  …システムＬＳＩ
１００  …ＦＩＦＯバッファ
【図１】
2010019751.tif 000005
【図２】
2010019751.tif 000006
【図３】
2010019751.tif 000007
【図４】
2010019751.tif 000008
【図５】
2010019751.tif 000009
【図６】
2010019751.tif 000010
【図７】
2010019751.tif 000011
【図８】
2010019751.tif 000012
【図９】
2010019751.tif 000013
【図１０】
2010019751.tif 000014
【図１１】
2010019751.tif 000015
【図１２】
2010019751.tif 000016
【図１３】
2010019751.tif 000017
【図１４】
2010019751.tif 000018
【手続補正書】
【提出日】平成20年8月6日(2008.8.6)
【手続補正１】
【補正対象書類名】図面
【補正対象項目名】図１４
【補正方法】変更
【補正の内容】
【図１４】
2010019751.tif 000019
【手続補正書】
【提出日】平成21年10月21日(2009.10.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
所定のセンサで計測したアナログ量をＡ／Ｄ変換手段によって変換したディジタルデータを補正するディジタルデータ補正装置のコンピュータに実行させるディジタルデータ補正プログラムであって、前記コンピュータを、
前記Ａ／Ｄ変換手段で変換されたディジタルデータを順次記憶するバッファ手段、
前記Ａ／Ｄ変換手段で変換された最新のディジタルデータに対する安定範囲を算出する安定範囲算出手段、
前記バッファ手段に記憶されたディジタルデータのうち、前記最新のディジタルデータから遡って連続して前記安定範囲内にあるディジタルデータの平均値を算出する平均値算出手段、
前記バッファ手段に記憶されたディジタルデータのうち、前記最新のディジタルデータから遡って連続して前記安定範囲内にあるディジタルデータの連続度合いを算出する連続度合い算出手段、
前記連続度合いに基づいて、前記最新のディジタルデータと前記平均値との加重平均値を算出する加重平均値算出手段、および
前記加重平均値算出手段で算出された加重平均値を用いて前記最新のディジタルデータを補正するデータ補正手段として機能させる、ディジタルデータ補正プログラム。
【請求項２】
前記連続度合い算出手段は、前記バッファ手段に記憶されたディジタルデータのうち、前記最新のディジタルデータから遡って連続して前記安定範囲内にあるディジタルデータの連続個数を算出する連続個数算出手段を含み、
前記加重平均値算出手段は、前記連続個数に基づいて、前記最新のディジタルデータと前記平均値との加重平均値を算出する、請求項１記載のディジタルデータ補正プログラム。
【請求項３】
前記加重平均値算出手段は、前記連続個数が多いほど、前記平均値の重みを重くする、請求項２記載のディジタルデータ補正プログラム。
【請求項４】
前記加重平均値算出手段は、前記連続個数のべき乗に比例して、前記平均値の重みを重くする、請求項３記載のディジタルデータ補正プログラム。
【請求項５】
前記安定範囲は、前記最新のディジタルデータを含む範囲である、請求項１記載のディジタルデータ補正プログラム。
【請求項６】
前記安定範囲は、前記最新のディジタルデータを中心とした上下均等な範囲である、請求項５記載のディジタルデータ補正プログラム。
【請求項７】
前記コンピュータを、
前記連続度合いに応じて、前記データ補正手段で補正後のディジタルデータに収束する修正オフセット値を算出する修正オフセット値算出手段、および
前記データ補正手段で補正後のディジタルデータを前記修正オフセット値で補正するオフセット補正手段としてさらに機能させる、請求項１記載のディジタルデータ補正プログラム。
【請求項８】
前記連続度合い算出手段は、前記バッファ手段に記憶されたディジタルデータのうち、前記最新のディジタルデータから遡って連続して前記安定範囲内にあるディジタルデータの連続個数を算出する連続個数算出手段を含み、
前記修正オフセット値算出手段は、前記連続個数に応じて、前記データ補正手段で補正後のディジタルデータに収束する修正オフセット値を算出する、請求項７記載のディジタルデータ補正プログラム。
【請求項９】
前記修正オフセット値算出手段は、前記連続個数が多いほど、前記データ補正手段で補正後のディジタルデータに収束する度合いの強い修正オフセット値を算出する、請求項８記載のディジタルデータ補正プログラム。
【請求項１０】
前記修正オフセット値算出手段は、前記連続個数のべき乗に比例して、前記データ補正手段で補正後のディジタルデータに収束する度合いの強い修正オフセット値を算出する、請求項９記載のディジタルデータ補正プログラム。
【請求項１１】
前記データ補正手段は、前記加重平均値を用いて補正した補正後のディジタルデータを出力するデータ出力手段を含む、請求項１記載のディジタルデータ補正プログラム。
【請求項１２】
前記センサはジャイロセンサを含み、前記ディジタルデータは角速度データである、請求項１ないし１１のいずれかに記載のディジタルデータ補正プログラム。
【請求項１３】
前記ジャイロセンサはゲーム機のコントローラに設けられ、前記ゲーム機は前記ディジタルデータに基づいてゲーム処理を実行する、請求項１２記載のディジタルデータ補正プログラム。
【請求項１４】
所定のセンサで計測したアナログ量をＡ／Ｄ変換手段によって変換したディジタルデータを補正するディジタルデータ補正装置であって、
前記Ａ／Ｄ変換手段で変換されたディジタルデータを順次記憶するバッファ手段、
前記Ａ／Ｄ変換手段で変換された最新のディジタルデータに対する安定範囲を算出する安定範囲算出手段、
前記バッファ手段に記憶されたディジタルデータのうち、前記最新のディジタルデータから遡って連続して前記安定範囲内にあるディジタルデータの平均値を算出する平均値算出手段、
前記バッファ手段に記憶されたディジタルデータのうち、前記最新のディジタルデータから遡って連続して前記安定範囲内にあるディジタルデータの連続度合いを算出する連続度合い算出手段、
前記連続度合いに基づいて、前記最新のディジタルデータと前記平均値との加重平均値を算出する加重平均値算出手段、および
前記加重平均値算出手段で算出された加重平均値を用いて前記最新のディジタルデータを補正するデータ補正手段を備える、ディジタルデータ補正装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
第１の発明は、所定のセンサで計測したアナログ量をＡ／Ｄ変換手段によって変換したディジタルデータを補正するディジタルデータ補正装置のコンピュータに実行させるディジタルデータ補正プログラムであって、コンピュータを、Ａ／Ｄ変換手段で変換されたディジタルデータを順次記憶するバッファ手段、Ａ／Ｄ変換手段で変換された最新のディジタルデータに対する安定範囲を算出する安定範囲算出手段、バッファ手段に記憶されたディジタルデータのうち、最新のディジタルデータから遡って連続して安定範囲内にあるディジタルデータの平均値を算出する平均値算出手段、バッファ手段に記憶されたディジタルデータのうち、最新のディジタルデータから遡って連続して安定範囲内にあるディジタルデータの連続度合いを算出する連続度合い算出手段、連続度合いに基づいて、最新のディジタルデータと平均値との加重平均値を算出する加重平均値算出手段、および加重平均値算出手段で算出された加重平均値を用いて最新のディジタルデータを補正するデータ補正手段として機能させる、ディジタルデータ補正プログラムである。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】変更
【補正の内容】
【００１５】
第１の発明では、センサ（５６：実施例で相当する部分を例示する参照符号。以下同じ。）で計測したアナログ量がＡ／Ｄ変換手段（５８ａ,５８ｂ）によってディジタルデー
タに変換される。このディジタルデータがコントローラ(１４)からゲーム機（１２）にたとえば近距離無線によって送信され、ゲーム機（１２)のＣＰＵ（６０）がそのディジタ
ルデータを補正する。つまり、ゲーム機(１２)のＣＰＵ（６０）が、メモリ手段（６２ｅ、６６）と協働して、Ａ／Ｄ変換手段で変換されたディジタルデータを順次記憶するバッファ手段（１００）として機能する。安定範囲算出手段（Ｓ３７）は、最新のディジタルデータに対して各ディジタルデータが安定していると定義できる安定範囲の上限および下限（d1、d2）を算出する。平均値算出手段（Ｓ４９）は、バッファ手段（１００）に格納された順次のディジタルデータのうち、今回のディジタルデータから遡って連続して安定範囲内にあるディジタルデータの平均値を算出する。連続度合い算出手段（Ｓ４３）が、たとえば、バッファ手段に記憶されたディジタルデータのうち、最新のディジタルデータから遡って安定範囲に入っているディジタルデータの連続個数（ct）である、連続度合いを計算する。加重平均値算出手段（Ｓ４９）は、その連続度合い基づいて最新のディジタルデータと平均値算出手段で計算した平均値との加重平均値を算出する。そして、データ補正手段（Ｓ４９）は、加重平均値を用いて最新のディジタルデータを補正する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１６
【補正方法】変更
【補正の内容】
【００１６】
第１の発明によれば、連続して安定範囲内に入っているディジタルデータを平均化して最新のディジタルデータを補正するようにしたので、動作時は追従性よく、静止（安定）時は滑らかに高精度な補正を行える。このとき、加重平均を用いるため、補正後のディジタルデータの信頼性が高くなる。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１７
【補正方法】変更
【補正の内容】
【００１７】
第２の発明は、第１の発明に従属し、連続度合い算出手段は、バッファ手段に記憶されたディジタルデータのうち、最新のディジタルデータから遡って連続して安定範囲内にあるディジタルデータの連続個数を算出する連続個数算出手段を含み、加重平均値算出手段は、連続個数に基づいて、最新のディジタルデータと平均値との加重平均値を算出する、ディジタルデータ補正プログラムである。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００１８
【補正方法】変更
【補正の内容】
【００１８】
第２の発明では、連続個数算出手段（Ｓ４３）が、バッファ手段に記憶されたディジタルデータのうち、最新のディジタルデータから遡って安定範囲に入っているディジタルデータの連続個数（ct）を計算する。加重平均値算出手段（Ｓ４９）は、連続個数算出手段で算出した連続個数に基づいて最新のディジタルデータと平均値算出手段で計算した平均値との加重平均値を算出し、データ補正手段はその加重平均値を補正後のディジタルデータとする。第２の発明によれば、加重平均を用いるため、補正後のディジタルデータの信頼性が高くなる。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００２７
【補正方法】変更
【補正の内容】
【００２７】
第７の発明は、第１の発明に従属し、コンピュータを、連続度合いに応じて、データ補正手段で補正後のディジタルデータに収束する修正オフセット値を算出する修正オフセット値算出手段、およびデータ補正手段で補正後のディジタルデータを修正オフセット値で補正するオフセット補正手段としてさらに機能させる、ディジタルデータ補正プログラムである。
第７の発明では、修正オフセット値算出手段（Ｓ５３）は、連続度合いに応じて、補正後のディジタルデータに収束する修正オフセット値を算出する。そして、オフセット補正手段（Ｓ５５）が補正後のディジタルデータを修正オフセット値で補正する。したがって、修正オフセット値で補正した補正後のディジタルデータを採用する。第７の発明では、連続度合いに応じた修正オフセット値を用いるので、高精度なオフセット補正が達成できる。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００２８
【補正方法】変更
【補正の内容】
【００２８】
第８の発明は、第７の発明に従属し、連続度合い算出手段は、バッファ手段に記憶されたディジタルデータのうち、最新のディジタルデータから遡って連続して安定範囲内にあるディジタルデータの連続個数を算出する連続個数算出手段を含み、修正オフセット値算出手段は、連続個数に応じて、データ補正手段で補正後のディジタルデータに収束する修正オフセット値を算出する、ディジタルデータ補正プログラムである。
第８の発明では、連続個数算出手段（Ｓ４３）が、バッファ手段に記憶されたディジタルデータのうち、最新のディジタルデータから遡って連続して安定範囲内にあるディジタルデータの連続個数を算出し、修正オフセット値算出手段（Ｓ５３）は、その連続個数に応じて、補正後のディジタルデータに収束する修正オフセット値を算出する。そして、オフセット補正手段（Ｓ５５）が補正後のディジタルデータを修正オフセット値で補正する。したがって、修正オフセット値で補正した補正後のディジタルデータを採用する。第８の発明では、連続個数に応じた修正オフセット値を用いるので、高精度なオフセット補正が達成できる。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００２９
【補正方法】変更
【補正の内容】
【００２９】
第９の発明は、第８の発明に従属し、修正オフセット値算出手段は、連続個数が多いほど、データ補正手段で補正後のディジタルデータに収束する度合いの強い修正オフセット値を算出する、ディジタルデータ補正プログラムである。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００３０
【補正方法】変更
【補正の内容】
【００３０】
第９の発明でも、高精度なオフセット補正が達成できる。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】００３１
【補正方法】変更
【補正の内容】
【００３１】
第１０の発明は、第９の発明に従属し、修正オフセット値算出手段は、連続個数のべき乗に比例して、データ補正手段で補正後のディジタルデータに収束する度合いの強い修正オフセット値を算出する、ディジタルデータ補正プログラムである。
【手続補正１２】
【補正対象書類名】明細書
【補正対象項目名】００３２
【補正方法】変更
【補正の内容】
【００３２】
第１０の発明でも、高精度なオフセット補正が達成できる。
【手続補正１３】
【補正対象書類名】明細書
【補正対象項目名】００３３
【補正方法】変更
【補正の内容】
【００３３】
第１１の発明は、第１の発明に従属し、データ補正手段は、加重平均値を用いて補正した補正後のディジタルデータを出力するデータ出力手段を含む、ディジタルデータ補正プログラムである。
【手続補正１４】
【補正対象書類名】明細書
【補正対象項目名】００３４
【補正方法】変更
【補正の内容】
【００３４】
第１１の発明では、データ補正手段（Ｓ４９）は、補正後のディジタルデータを出力する。つまり、データ補正手段は、たとえばステップＳ４９に示す計算式で計算した補正後のデータを出力する。
【手続補正１５】
【補正対象書類名】明細書
【補正対象項目名】００３５
【補正方法】変更
【補正の内容】
【００３５】
第１２の発明は、第１ないし第１１のいずれかの発明に従属し、センサはジャイロセンサを含み、ディジタルデータは角速度データである、ディジタルデータ補正プログラムである。
【手続補正１６】
【補正対象書類名】明細書
【補正対象項目名】００３６
【補正方法】変更
【補正の内容】
【００３６】
第１２の発明では、ジャイロセンサを用いることができるので、ゲーム機などに好適する。
【手続補正１７】
【補正対象書類名】明細書
【補正対象項目名】００３７
【補正方法】変更
【補正の内容】
【００３７】
第１３の発明は、第１２の発明に従属し、ジャイロセンサはゲーム機のコントローラに設けられ、ゲーム機はディジタルデータに基づいてゲーム処理を実行する、ディジタルデータ補正プログラムである。
【手続補正１８】
【補正対象書類名】明細書
【補正対象項目名】００３８
【補正方法】変更
【補正の内容】
【００３８】
第１３の発明では、ジャイロセンサを用いて、精度よいゲーム処理が可能である。
【手続補正１９】
【補正対象書類名】明細書
【補正対象項目名】００３９
【補正方法】変更
【補正の内容】
【００３９】
第１４の発明は、所定のセンサで計測したアナログ量をＡ／Ｄ変換手段によって変換したディジタルデータを補正するディジタルデータ補正装置であって、Ａ／Ｄ変換手段で変換されたディジタルデータを順次記憶するバッファ手段、Ａ／Ｄ変換手段で変換された最新のディジタルデータに対する安定範囲を算出する安定範囲算出手段、バッファ手段に記憶されたディジタルデータのうち、最新のディジタルデータから遡って連続して安定範囲内にあるディジタルデータの平均値を算出する平均値算出手段、バッファ手段に記憶されたディジタルデータのうち、最新のディジタルデータから遡って連続して安定範囲内にあるディジタルデータの連続度合いを算出する連続度合い算出手段、連続度合いに基づいて、最新のディジタルデータと平均値との加重平均値を算出する加重平均値算出手段、および加重平均値算出手段で算出された加重平均値を用いて最新のディジタルデータを補正するデータ補正手段を備える、ディジタルデータ補正装置である。
【手続補正２０】
【補正対象書類名】明細書
【補正対象項目名】００４０
【補正方法】変更
【補正の内容】
【００４０】
第１４の発明によれば第１の発明と同様の効果が期待できる。