JP5131908B2 - 歩数算出プログラム、歩数算出装置、歩数算出システム、および歩数算出方法 - Google Patents

歩数算出プログラム、歩数算出装置、歩数算出システム、および歩数算出方法 Download PDF

Info

Publication number
JP5131908B2
JP5131908B2 JP2007310903A JP2007310903A JP5131908B2 JP 5131908 B2 JP5131908 B2 JP 5131908B2 JP 2007310903 A JP2007310903 A JP 2007310903A JP 2007310903 A JP2007310903 A JP 2007310903A JP 5131908 B2 JP5131908 B2 JP 5131908B2
Authority
JP
Japan
Prior art keywords
acceleration
calculating
horizontal
acceleration data
amplitude
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2007310903A
Other languages
English (en)
Other versions
JP2009134572A (ja
Inventor
敬三 太田
賢太 佐藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nintendo Co Ltd
Original Assignee
Nintendo Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nintendo Co Ltd filed Critical Nintendo Co Ltd
Priority to JP2007310903A priority Critical patent/JP5131908B2/ja
Priority to US12/068,054 priority patent/US7684958B2/en
Publication of JP2009134572A publication Critical patent/JP2009134572A/ja
Priority to US12/654,114 priority patent/US7966148B2/en
Application granted granted Critical
Publication of JP5131908B2 publication Critical patent/JP5131908B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C22/00Measuring distance traversed on the ground by vehicles, persons, animals or other moving solid bodies, e.g. using odometers, using pedometers
    • G01C22/006Pedometers

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Measurement Of Distances Traversed On The Ground (AREA)
  • User Interface Of Digital Computer (AREA)

Description

本発明は、歩数算出プログラム、歩数算出装置、歩数算出システム、および歩数算出方法に関し、より特定的には、ユーザの歩数を算出する歩数算出プログラム、歩数算出装置、歩数算出システム、および歩数算出方法に関する。
従来、歩数計は、ユーザの身体に装着され、ユーザから受ける振動に応じて歩数を計測する。このような歩数計の一例として、加速度センサを内蔵する体動検出装置が開示されている(例えば、特許文献1参照)。上記特許文献1に記載されている体動検出装置は、検出する加速度方向がそれぞれ異なる複数の加速度センサを内蔵している。そして、当該体動検出装置は、それぞれの加速度センサから得られた信号を用いて、装置の姿勢を判定し、当該姿勢に基づいてユーザの体動(歩数)を検出している。例えば、当該体動検出装置では、加速度の波形を分析し、当該加速度が上閾値を越えた後に下閾値より低下することにより、ユーザが1歩進んだという判定を行っている。
特開2004−141669号公報
しかしながら、上記特許文献1で開示された体動検出装置では、ユーザの携帯の方法によって正しい歩数が計測できないことがある。具体的には、ユーザが体動検出装置を衣服に装着したり、カバンに入れたりして歩いた場合、ユーザが歩くことにより生じる身体の上下振動による加速度を検出することによって歩数の検出が可能となる。一方、ユーザが体動検出装置を手に持って歩いた場合、ユーザが腕を振ることにより生じる前後振動による加速度を検出するために、歩数の検出が正確にできなくなる。つまり、身体の上下振動によって生じる加速度の波形の1周期に対応するユーザの歩数と、腕を振ることによる前後振動によって生じる加速度の波形の1周期に対応するユーザの歩数とが異なっているために、正しい歩数が検出できない。ユーザは、必ずしも身体の上下振動によって生じる加速度が生じるように体動検出装置を携帯するとは限らないため、歩数を誤検出することが考えられる。また、ユーザにとっても、正確な歩数を検出するためには体動検出装置の携帯方法が制限されてしまうため、装置の使い勝手が悪くなることがある。
それ故に、本発明の目的は、加速度センサから出力されるデータを用いて、ユーザの歩数を正確に判定する歩数算出プログラム、歩数算出装置、歩数算出システム、および歩数算出方法を提供することである。
上記の目的を達成するために、本発明は以下の構成を採用した。なお、括弧内の参照符号やステップ番号等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明の範囲を何ら限定するものではない。
第1の発明は、所定の筐体(71)に加わる加速度(accX、accY、accZ)を検出する加速度センサ(701)から出力される加速度データ(Da)を用いて、当該筐体を携帯するユーザの歩数を算出する装置(5)のコンピュータ(10)で実行される歩数算出プログラムである。歩数算出プログラムは、加速度データ取得手段(ステップ42、ステップ122を実行するCPU10;以下、単にステップ番号のみ記載する)、重力方向加速度算出手段(S81、S141)、水平方向加速度算出手段(S100、S160)、第1歩数算出手段(S45、S125)、第2歩数算出手段(S46、S126)、および歩数選択手段(S47、S127、S128)として、コンピュータを機能させる。加速度データ取得手段は、加速度データを繰り返し取得する。重力方向加速度算出手段は、加速度データ取得手段が取得した加速度データを用いて、筐体における重力方向に作用する重力方向加速度(Vw、Vwa)を算出する。水平方向加速度算出手段は、加速度データ取得手段が取得した加速度データを用いて、筐体における重力方向に対して垂直な水平方向に作用する水平方向加速度(Hvec、Hwa)を算出する。第1歩数算出手段は、第1の係数(M)を用いて重力方向加速度の変化に応じた第1歩数(Vsd、Vs)を算出する。第2歩数算出手段は、第1の係数とは異なる第2の係数(N)を用いて水平方向加速度の変化に応じた第2歩数(Hsd、Hv)を算出する。歩数選択手段は、所定の条件に基づいて、第1歩数および第2歩数の一方をユーザの歩数として選択する。
第2の発明は、上記第1の発明において、重力方向算出手段(S43、S80)として、さらにコンピュータを機能させる。重力方向算出手段は、加速度データ取得手段が取得した加速度データを用いて、筐体における重力方向(vecg)を算出する。重力方向加速度算出手段は、重力方向算出手段が算出した重力方向に基づいて、加速度データ取得手段が取得した加速度データが示す加速度の重力方向の成分を重力方向加速度として算出する。水平方向加速度算出手段は、重力方向算出手段が算出した重力方向に基づいて、加速度データ取得手段が取得した加速度データが示す加速度の水平方向の成分を水平方向加速度として算出する。
第3の発明は、上記第2の発明において、第1歩数算出手段は、重力方向加速度が増減する周期(Vt)に応じて、第1歩数を算出する。第2歩数算出手段は、水平方向加速度が増減する周期(Ht)に応じて、第2歩数を算出する。
第4の発明は、上記第3の発明において、第1の係数および第2の係数は、水平方向加速度の増減する周期が重力方向加速度の増減する周期の2倍(図15A、図15B)であることにしたがって決められる値である。
第5の発明は、上記第3の発明において、第1歩数算出手段は、重力方向加速度が増減する周期に基づいて算出された単位時間あたりの歩数(Vsd)に、所定の割合で追従する歩数(Vs)を第1歩数として算出する。第2歩数算出手段は、水平方向加速度が増減する周期に基づいて算出された単位時間あたりの歩数(Hsd)に、所定の割合で追従する歩数(Hs)を第2歩数として算出する。
第6の発明は、上記第3の発明において、第1歩数算出手段は、第1減衰手段(S94、S156)を含む。第1減衰手段は、重力方向加速度が増減する周期が所定の閾値(Vtmax)より長い場合(S93、S155)、前回の処理で算出された第1歩数を減衰させる。第2歩数算出手段は、第2減衰手段(S113、S175)を含む。第2減衰手段は、水平方向加速度が増減する周期が所定の閾値(Htmax)より長い場合(S112、S174)、前回の処理で算出された第2歩数を減衰させる。
第7の発明は、上記第3の発明において、第1歩数算出手段は、第1極大値検出手段(S86、S146)を含む。第1極大値検出手段は、重力方向加速度が増減する極大値を検出する。第2歩数算出手段は、第2極大値検出手段(S105、S165)を含む。第2極大値検出手段は、水平方向加速度が増減する極大値を検出する。第1歩数算出手段は、第1極大値検出手段が検出した極大値間の時間間隔に応じて、第1歩数を算出し。第2歩数算出手段は、第2極大値検出手段が検出した極大値間の時間間隔に応じて、第2歩数を算出する。
第8の発明は、上記第7の発明において、第1歩数算出手段は、第1の係数を第1極大値検出手段が検出した極大値間の時間間隔で除算することによって第1歩数を算出する。第2歩数算出手段は、第2の係数を第2極大値検出手段が検出した極大値間の時間間隔で除算することによって第2歩数を算出する。第2の係数は、第1の係数の2倍である。
第9の発明は、上記第7の発明において、第1極大値検出手段は、重力方向加速度の絶対値が増減する極大値(Vwa)を検出する。第2極大値検出手段は、水平方向加速度の大きさ(Hwa)が増減する極大値を検出する。
第10の発明は、上記第7の発明において、第1極大値検出手段は、重力方向加速度が増減する極大値のうち所定の基準値(A)以上のもののみを検出する(S85、S145)。第2極大値検出手段は、水平方向加速度が増減する極大値のうち所定の基準値(B)以上のもののみを検出する(S104、S164)。
第11の発明は、上記第3の発明において、第1歩数算出手段は、第1極大値検出手段および第1時間間隔予測手段(S150、S151)を含む。第1極大値検出手段は、重力方向加速度が増減する極大値を検出する。第1時間間隔予測手段は、重力方向加速度の大きさに応じて、第1極大値検出手段が極大値を直前に検出した時点から次の極大値を検出するまでの時間間隔(VT)を予測する。第2歩数算出手段は、第2極大値検出手段および第2時間間隔予測手段(S169、S170)を含む。第2極大値検出手段は、水平方向加速度が増減する極大値を検出する。第2時間間隔予測手段は、水平方向加速度の大きさに応じて、第2極大値検出手段が極大値を直前に検出した時点から次の極大値を検出するまでの時間間隔(HT)を予測する。第1歩数算出手段は、第1時間間隔予測手段が予測した時間間隔に応じて、第1歩数を算出する。第2歩数算出手段は、第2時間間隔予測手段が予測した時間間隔に応じて、第2歩数を算出する。
第12の発明は、上記第11の発明において、第1時間間隔予測手段は、第1極大値検出手段が直前に検出した極大値の大きさ(Vh)と、重力方向加速度の値の変化量(|d|)とを用いて、時間間隔を予測する。第2時間間隔予測手段は、第2極大値検出手段が直前に検出した極大値の大きさ(Hh)と、水平方向加速度の値の変化量(|e|)とを用いて、時間間隔を予測する。
第13の発明は、上記第1または第2の発明において、歩数選択手段は、第1歩数および第2歩数を比較して、大きい一方を選択して採用する(S47)。
第14の発明は、上記第1または第2の発明において、歩数選択手段は、第1振幅検出手段(S127)、第2振幅検出手段(S127)、および比率算出手段(S127)を含む。第1振幅検出手段は、重力方向加速度が増減する第1振幅を検出する。第2振幅検出手段は、水平方向加速度が増減する第2振幅を検出する。比率算出手段は、第1振幅と第2振幅との比率(r)を算出する。歩数選択手段は、第1振幅が第2振幅の所定比率(K)より大きければ第1歩数を選択して採用し、第1振幅が第2振幅の所定比率以下であれば第2歩数を選択して採用する。
第15の発明は、上記第1または第2の発明において、歩数選択手段は、累積歩数算出手段(S48、S49、S129、S130)を含む。累積歩数算出手段は、選択して採用した第1歩数または第2歩数を順次累積して累積歩数(St)を算出する。
第16の発明は、上記第2の発明において、重力方向算出手段は、加速度データ取得手段が取得した加速度データが示す加速度ベクトル(acc)に所定の割合で追従するベクトル(accf)の方向を、筐体における重力方向として算出する。
第17の発明は、上記第16の発明において、重力方向加速度算出手段は、重力方向算出手段が算出した重力方向に基づいて、加速度データ取得手段が取得した加速度データが示す加速度ベクトルから追従するベクトルを減算(S44、S124)した後の重力方向の成分を重力方向加速度として算出する。水平方向加速度算出手段は、重力方向算出手段が算出した重力方向に基づいて、加速度データ取得手段が取得した加速度データが示す加速度ベクトルから追従するベクトルを減算(S44、S124)した後の水平方向の成分を水平方向加速度として算出する。
第18の発明は、携帯するユーザの歩数を算出する歩数算出装置である。歩数算出装置は、加速度センサ、表示部、加速度データ取得手段、重力方向加速度算出手段、水平方向加速度算出手段、第1歩数算出手段、第2歩数算出手段、歩数選択手段、および表示制御手段を備える。加速度センサは、装置本体に加わる加速度を検出して加速度データを出力する。表示部は、装置本体に設けられる。加速度データ取得手段は、加速度データを繰り返し取得する。重力方向加速度算出手段は、加速度データ取得手段が取得した加速度データを用いて、装置本体における重力方向に作用する重力方向加速度を算出する。水平方向加速度算出手段は、加速度データ取得手段が取得した加速度データを用いて、装置本体における重力方向に対して垂直な水平方向に作用する水平方向加速度を算出する。第1歩数算出手段は、第1の係数を用いて重力方向加速度の変化に応じた第1歩数を算出する。第2歩数算出手段は、第1の係数とは異なる第2の係数を用いて水平方向加速度の変化に応じた第2歩数を算出する。歩数選択手段は、所定の条件に基づいて、第1歩数および第2歩数の一方をユーザの歩数として選択する。表示制御手段は、歩数選択手段が選択した歩数に応じた情報を表示部に表示する。
第19の発明は、ユーザによって携帯可能な携帯機(7)と、有線または無線通信を介して当該携帯機と接続される本体機(5)とを含み、当該携帯機を携帯するユーザの歩数を算出する歩数算出システムである。歩数算出システムは、加速度センサ、加速度データ取得手段、重力方向加速度算出手段、水平方向加速度算出手段、第1歩数算出手段、第2歩数算出手段、歩数選択手段、および表示制御手段(S50、S131)を備える。加速度センサは、携帯機本体に加わる加速度を検出して加速度データを出力する。加速度データ取得手段は、加速度センサから加速度データを取得する。重力方向加速度算出手段は、加速度データ取得手段が取得した加速度データを用いて、携帯機における重力方向に作用する重力方向加速度を算出する。水平方向加速度算出手段は、加速度データ取得手段が取得した加速度データを用いて、携帯機における重力方向に対して垂直な水平方向に作用する水平方向加速度を算出する。第1歩数算出手段は、第1の係数を用いて重力方向加速度の変化に応じた第1歩数を算出する。第2歩数算出手段は、第1の係数とは異なる第2の係数を用いて水平方向加速度の変化に応じた第2歩数を算出する。歩数選択手段は、所定の条件に基づいて、第1歩数および第2歩数の一方をユーザの歩数として選択する。表示制御手段は、歩数選択手段が選択した歩数に応じた情報を表示装置(2)に表示する。なお、加速度データ取得手段、重力方向加速度算出手段、水平方向加速度算出手段、第1歩数算出手段、第2歩数算出手段、歩数選択手段、および表示制御手段は、携帯機および本体機の何れに設けられてもかまわない。例えば、これら全てが本体機に設けられてもいいし、これらの一部が携帯機に設けられてもかまわない。
上記第1の発明によれば、加速度センサから出力されるデータを用いて、ユーザの歩数を正確に判定することができる。例えば、ユーザの身体の上下の移動に応じた加速度が主に生じるような部位に筐体を装着する場合や、ユーザが腕を振ることによる加速度が主に生じるような部位に筐体を把持している場合等でも、ユーザの単位時間あたりの歩数を正確に算出することができ、ユーザが筐体を携帯する方法が制限されずに自由に筐体を取り扱うことができる。
上記第2の発明によれば、筐体に生じる重力方向の加速度成分と、水平方向の加速度成分とにそれぞれ分けて歩数を算出することによって、ユーザが筐体を携帯している方法に応じた歩数を算出することができる。
上記第3の発明によれば、加速度が増減する周期を利用して、容易に筐体を携帯するユーザの歩数を算出することができる。
上記第4の発明によれば、水平方向に生じる加速度の増減する周期が重力方向に生じる加速度の増減する周期の2倍であることを考慮した係数を用いることによって、それぞれの周期の特性に応じた適切な歩数を算出することができる。
上記第5の発明によれば、突発的な加速度の変化を無効にして正確な歩数を算出することができる。
上記第6の発明によれば、ユーザが歩行を停止したときに徐々に歩数が減衰するため、例えば当該歩数に応じてプレイヤキャラクタが動作するようなゲームを表示する場合、その動作が自然に見える。
上記第7の発明によれば、加速度変化の極大値間の時間間隔を用いることによって、加速度変化の周期を容易に算出することができる。
上記第8の発明によれば、水平方向に生じる加速度の増減する周期が重力方向に生じる加速度の増減する周期の2倍であることを考慮した係数を設定することによって、係数を極大値間の時間間隔で除算する数式を用いて容易に歩数を算出することができる。
上記第9の発明によれば、検出される極大値の数が増加するため、歩数算出精度が向上する。
上記第10の発明によれば、ユーザが歩行していないような弱い加速度変化を除外することができるため、正確な歩数を算出することができる。
上記第11の発明によれば、次の極大値までの時間を予測する簡易な方法で、加速度変化の周期を算出することができる。
上記第12の発明によれば、加速度の単位時間あたりの変化量と、前回検出した極大値の大きさとを用いて、容易に次の極大値までの時間を予測することができる。
上記第13の発明によれば、第1歩数および第2歩数の大きさ比較を用いて、自動的に歩数算出方法を切り替えることができる。
上記第14の発明によれば、重力方向に生じる加速度の振幅と、水平方向に生じる加速度の振幅の大きさ比較を用いて、自動的に歩数算出方法を切り替えることができる。また、両者の比率を用いて切り替えることによって、例えばユーザの身体の上下の移動に応じた加速度が主に生じるような部位に筐体を装着する場合や、ユーザが腕を振ることによる加速度が主に生じるような部位に筐体を把持している場合等の加速度特性を考慮した判定が可能となる。
上記第15の発明によれば、ユーザの歩数を累積した値を用いた処理が可能となる。
上記第16の発明によれば、筐体の重力方向を容易に算出することができる。
上記第17の発明によれば、筐体に生じる重力加速度を除去することができるため、さらに正確な歩数算出が可能となる。
本発明の歩数算出装置および歩数算出システムによれば、上述した歩数算出プログラムと同様の効果を得ることができる。
図1を参照して、本発明の一実施形態に係る歩数算出プログラムを実行する歩数算出装置について説明する。以下、説明を具体的にするために、当該装置の一例の据置型のゲーム装置本体5を含むゲームシステムについて説明する。なお、図1は据置型のゲーム装置3を含むゲームシステム1の外観図であり、図2はゲーム装置本体5のブロック図である。以下、当該ゲームシステム1について説明する。
図1において、ゲームシステム1は、表示手段の一例の家庭用テレビジョン受像機(以下、モニタと記載する)2と、当該モニタ2に接続コードを介して接続する据置型のゲーム装置3とから構成される。モニタ2は、ゲーム装置3から出力された音声信号を音声出力するためのスピーカ2aを備える。また、ゲーム装置3は、本願発明の歩数算出プログラムの一例のゲームプログラムを記録した光ディスク4と、当該光ディスク4のゲームプログラムを実行してゲーム画面をモニタ2に表示出力させるためのコンピュータを搭載したゲーム装置本体5と、ゲーム画面に表示されたキャラクタ等を操作するゲームに必要な操作情報をゲーム装置本体5に与えるためのコントローラ7とを備えている。
また、ゲーム装置本体5は、無線コントローラモジュール19(図2参照)を内蔵する。無線コントローラモジュール19は、コントローラ7から無線送信されるデータを受信し、ゲーム装置本体5からコントローラ7へデータを送信して、コントローラ7とゲーム装置本体5とを無線通信によって接続する。さらに、ゲーム装置本体5には、当該ゲーム装置本体5に対して交換可能に用いられる情報記憶媒体の一例の光ディスク4が脱着される。
また、ゲーム装置本体5には、セーブデータ等のデータを固定的に記憶するバックアップメモリとして機能するフラッシュメモリ17(図2参照)が搭載される。ゲーム装置本体5は、光ディスク4に記憶されたゲームプログラム等を実行することによって、その結果をゲーム画像としてモニタ2に表示する。また、ゲームプログラム等は、光ディスク4に限らず、フラッシュメモリ17に予め記録されたものを実行するようにしてもよい。さらに、ゲーム装置本体5は、フラッシュメモリ17に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ2に表示することもできる。そして、ゲーム装置3のプレイヤは、モニタ2に表示されたゲーム画像を見ながら、コントローラ7を操作することによって、ゲーム進行を楽しむことができる。
コントローラ7は、無線コントローラモジュール19を内蔵するゲーム装置本体5へ、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて操作情報等の送信データを無線送信する。コントローラ7は、主にモニタ2の表示画面に表示されるオブジェクト等を操作するための操作手段である。コントローラ7は、片手で把持可能な程度の大きさのハウジングと、当該ハウジングの表面に露出して設けられた複数個の操作ボタン(十字キーやスティック等を含む)とが設けられている。また、後述により明らかとなるが、コントローラ7は、当該コントローラ7から見た画像を撮像する撮像情報演算部74を備えている。また、撮像情報演算部74の撮像対象の一例として、モニタ2の表示画面近傍に2つのLEDモジュール(以下、マーカと記載する)8Lおよび8Rが設置される。これらマーカ8Lおよび8Rは、それぞれモニタ2の前方に向かって例えば赤外光を出力する。また、コントローラ7は、ゲーム装置本体5の無線コントローラモジュール19から無線送信された送信データを通信部75で受信して、当該送信データに応じた音や振動を発生させることもできる。
次に、図2を参照して、ゲーム装置本体5の内部構成について説明する。図2は、ゲーム装置本体5の構成を示すブロック図である。ゲーム装置本体5は、CPU(Central Processing Unit)10、システムLSI(Large Scale Integration)11、外部メインメモリ12、ROM/RTC(Read Only Memory/Real Time Clock)13、ディスクドライブ14、およびAV−IC(Audio Video−Integrated Circuit)15等を有する。
CPU10は、光ディスク4に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。CPU10は、システムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ROM/RTC13、ディスクドライブ14、およびAV−IC15が接続される。システムLSI11は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。なお、システムLSI11の内部構成については、後述する。揮発性の外部メインメモリ12は、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、CPU10のワーク領域やバッファ領域として用いられる。ROM/RTC13は、ゲーム装置本体5の起動用のプログラムが組み込まれるROM(いわゆるブートROM)と、時間をカウントするクロック回路(RTC)とを有する。ディスクドライブ14は、光ディスク4からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ35または外部メインメモリ12に読み出したデータを書き込む。
また、システムLSI11には、入出力プロセッサ31、GPU(Graphics Processor Unit)32、DSP(Digital Signal Processor)33、VRAM(Video RAM)34、および内部メインメモリ35が設けられる。図示は省略するが、これらの構成要素31〜35は、内部バスによって互いに接続される。
GPU32は、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。VRAM34は、GPU32がグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU32は、VRAM34に記憶されたデータを用いて画像データを作成する。
DSP33は、オーディオプロセッサとして機能し、内部メインメモリ35や外部メインメモリ12に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。
上述のように生成された画像データおよび音声データは、AV−IC15によって読み出される。AV−IC15は、AVコネクタ16を介して、読み出した画像データをモニタ2に出力するとともに、読み出した音声データをモニタ2に内蔵されるスピーカ2aに出力する。これによって、画像がモニタ2に表示されるとともに音がスピーカ2aから出力される。
入出力プロセッサ(I/Oプロセッサ)31は、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ31は、フラッシュメモリ17、無線通信モジュール18、無線コントローラモジュール19、拡張コネクタ20、および外部メモリカード用コネクタ21に接続される。無線通信モジュール18にはアンテナ22が接続され、無線コントローラモジュール19にはアンテナ23が接続される。
入出力プロセッサ31は、無線通信モジュール18およびアンテナ22を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ31は、定期的にフラッシュメモリ17にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール18およびアンテナ22を介して当該データをネットワークに送信する。また、入出力プロセッサ31は、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ22、および無線通信モジュール18を介して受信し、受信したデータをフラッシュメモリ17に記憶する。CPU10は、ゲームプログラムを実行することにより、フラッシュメモリ17に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ17には、ゲーム装置本体5と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置本体5を利用してプレイしたゲームのセーブデータ(ゲームの結果データまたは途中データ)が記憶されてもよい。
また、入出力プロセッサ31は、アンテナ23および無線コントローラモジュール19を介して、コントローラ7から送信される操作データ等を受信し、内部メインメモリ35または外部メインメモリ12のバッファ領域に記憶(一時記憶)する。なお、内部メインメモリ35には、外部メインメモリ12と同様に、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりしてもよく、CPU10のワーク領域やバッファ領域として用いられてもかまわない。
さらに、入出力プロセッサ31には、拡張コネクタ20および外部メモリカード用コネクタ21が接続される。拡張コネクタ20は、USBやSCSIのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール18に替えてネットワークとの通信を行ったりすることができる。外部メモリカード用コネクタ21は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ31は、拡張コネクタ20や外部メモリカード用コネクタ21を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
また、ゲーム装置本体5(例えば、前部主面)には、当該ゲーム装置本体5の電源ボタン24、ゲーム処理のリセットボタン25、光ディスク4を脱着する投入口、およびゲーム装置本体5の投入口から光ディスク4を取り出すイジェクトボタン26等が設けられている。電源ボタン24およびリセットボタン25は、システムLSI11に接続される。電源ボタン24がオンされると、ゲーム装置本体5の各構成要素に対して、図示しないACアダプタを経て電力が供給される。リセットボタン25が押されると、システムLSI11は、ゲーム装置本体5の起動プログラムを再起動する。イジェクトボタン26は、ディスクドライブ14に接続される。イジェクトボタン26が押されると、ディスクドライブ14から光ディスク4が排出される。
図3および図4を参照して、コントローラ7について説明する。なお、図3は、コントローラ7の上面後方から見た斜視図である。図4は、コントローラ7を下面前方から見た斜視図である。
図3および図4において、コントローラ7は、例えばプラスチック成型によって形成されたハウジング71を有しており、当該ハウジング71に複数の操作部72が設けられている。ハウジング71は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
ハウジング71上面の中央前面側に、十字キー72aが設けられる。この十字キー72aは、十字型の4方向プッシュスイッチであり、4つの方向(前後左右)に対応する操作部分が十字の突出片にそれぞれ90°間隔で配置される。プレイヤが十字キー72aのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー72aを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、複数の選択肢から選択指示したりすることができる。
なお、十字キー72aは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、十字方向に4つのプッシュスイッチを配設し、プレイヤによって押下されたプッシュスイッチに応じて操作信号を出力する操作部を設けてもかまわない。さらに、上記4つのプッシュスイッチとは別に、上記十字方向が交わる位置にセンタスイッチを配設し、4つのプッシュスイッチとセンタスイッチとを複合した操作部を設けてもかまわない。また、ハウジング71上面から突出した傾倒可能なスティック(いわゆる、ジョイスティック)を倒すことによって、傾倒方向に応じて操作信号を出力する操作部を上記十字キー72aの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー72aの代わりに設けてもかまわない。また、タッチパッドを、上記十字キー72aの代わりに設けてもかまわない。
ハウジング71上面の十字キー72aより後面側に、複数の操作ボタン72b〜72gが設けられる。操作ボタン72b〜72gは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン72b〜72gに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン72b〜72dには、1番ボタン、2番ボタン、およびAボタン等としての機能が割り当てられる。また、操作ボタン72e〜72gには、マイナスボタン、ホームボタン、およびプラスボタン等としての機能が割り当てられる。これら操作ボタン72a〜72gは、ゲーム装置本体5が実行するゲームプログラムに応じてそれぞれの操作機能が割り当てられる。なお、図3に示した配置例では、操作ボタン72b〜72dは、ハウジング71上面の中央前後方向に沿って並設されている。また、操作ボタン72e〜72gは、ハウジング71上面の左右方向に沿って操作ボタン72bおよび72dの間に並設されている。そして、操作ボタン72fは、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
また、ハウジング71上面の十字キー72aより前面側に、操作ボタン72hが設けられる。操作ボタン72hは、遠隔からゲーム装置本体5の電源をオン/オフする電源スイッチである。この操作ボタン72hも、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
また、ハウジング71上面の操作ボタン72cより後面側に、複数のLED702が設けられる。ここで、コントローラ7は、他のコントローラ7と区別するためにコントローラ種別(番号)が設けられている。例えば、LED702は、コントローラ7に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、無線コントローラモジュール19からコントローラ7へ、複数のLED702のうち、上記コントローラ種別に対応するLEDを点灯させるための信号が送信される。
また、ハウジング71上面には、操作ボタン72bおよび操作ボタン72e〜72gの間に後述するスピーカ(図5に示すスピーカ706)からの音を外部に放出するための音抜き孔が形成されている。
一方、ハウジング71下面には、凹部が形成されている。ハウジング71下面の凹部は、プレイヤがコントローラ7の前面をマーカ8Lおよび8Rに向けて片手で把持したときに、当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の傾斜面には、操作ボタン72iが設けられる。操作ボタン72iは、例えばBボタンとして機能する操作部である。
また、ハウジング71前面には、撮像情報演算部74の一部を構成する撮像素子743が設けられる。ここで、撮像情報演算部74は、コントローラ7が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大200フレーム/秒程度のサンプリング周期であるため比較的高速なコントローラ7の動きでも追跡して解析することができる。この撮像情報演算部74の詳細な構成については、後述する。また、ハウジング71の後面には、コネクタ73が設けられている。コネクタ73は、例えばエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
ここで、以下の説明を具体的にするために、コントローラ7に対して設定する座標系について定義する。図3および図4に示すように、互いに直交するXYZ軸をコントローラ7に対して定義する。具体的には、コントローラ7の前後方向となるハウジング71の長手方向をZ軸とし、コントローラ7の前面(撮像情報演算部74が設けられている面)方向をZ軸正方向とする。また、コントローラ7の上下方向をY軸とし、ハウジング71の上面(操作ボタン72aが設けられた面)方向をY軸正方向とする。さらに、コントローラ7の左右方向をX軸とし、ハウジング71の左側面(図3では表されていない側面)方向をX軸正方向とする。
次に、図5および図6を参照して、コントローラ7の内部構造について説明する。なお、図5は、コントローラ7の上筐体(ハウジング71の一部)を外した状態を後面側から見た斜視図である。図6は、コントローラ7の下筐体(ハウジング71の一部)を外した状態を前面側から見た斜視図である。ここで、図6に示す基板700は、図5に示す基板700の裏面から見た斜視図となっている。
図5において、ハウジング71の内部には基板700が固設されており、当該基板700の上主面上に操作ボタン72a〜72h、加速度センサ701、LED702、およびアンテナ754等が設けられる。そして、これらは、基板700等に形成された配線(図示せず)によってマイコン751等(図6、図7参照)に接続される。また、無線モジュール753(図7参照)およびアンテナ754によって、コントローラ7がワイヤレスコントローラとして機能する。なお、ハウジング71内部には図示しない水晶振動子が設けられており、後述するマイコン751の基本クロックを生成する。また、基板700の上主面上に、スピーカ706およびアンプ708が設けられる。また、加速度センサ701は、操作ボタン72dの左側の基板700上(つまり、基板700の中央部ではなく周辺部)に設けられる。したがって、加速度センサ701は、コントローラ7の長手方向を軸とした回転に応じて、重力加速度の方向変化に加え、遠心力による成分が含まれる加速度を検出することができるので、所定の演算により、検出される加速度データからコントローラ7の動きを良好な感度でゲーム装置本体5等が判定することができる。
一方、図6において、基板700の下主面上の前端縁に撮像情報演算部74が設けられる。撮像情報演算部74は、コントローラ7の前方から順に赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744によって構成されており、それぞれ基板700の下主面に取り付けられる。また、基板700の下主面上の後端縁にコネクタ73が取り付けられる。さらに、基板700の下主面上にサウンドIC707およびマイコン751が設けられている。サウンドIC707は、基板700等に形成された配線によってマイコン751およびアンプ708と接続され、ゲーム装置本体5から送信されたサウンドデータに応じてアンプ708を介してスピーカ706に音声信号を出力する。
そして、基板700の下主面上には、バイブレータ704が取り付けられる。バイブレータ704は、例えば振動モータやソレノイドである。バイブレータ704は、基板700等に形成された配線によってマイコン751と接続され、ゲーム装置本体5から送信された振動データに応じてその作動をオン/オフする。バイブレータ704が作動することによってコントローラ7に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。ここで、バイブレータ704は、ハウジング71のやや前方寄りに配置されるため、プレイヤが把持している状態において、ハウジング71が大きく振動することになり、振動を感じやすくなる。
次に、図7を参照して、コントローラ7の内部構成について説明する。なお、図7は、コントローラ7の構成を示すブロック図である。
図7において、コントローラ7は、上述した操作部72、撮像情報演算部74、加速度センサ701、バイブレータ704、スピーカ706、サウンドIC707、およびアンプ708の他に、その内部に通信部75を備えている。
撮像情報演算部74は、赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744を含んでいる。赤外線フィルタ741は、コントローラ7の前方から入射する光から赤外線のみを通過させる。レンズ742は、赤外線フィルタ741を透過した赤外線を集光して撮像素子743へ出射する。撮像素子743は、例えばCMOSセンサやあるいはCCDのような固体撮像素子であり、レンズ742が集光した赤外線を撮像する。したがって、撮像素子743は、赤外線フィルタ741を通過した赤外線だけを撮像して画像データを生成する。撮像素子743で生成された画像データは、画像処理回路744で処理される。具体的には、画像処理回路744は、撮像素子743から得られた画像データを処理して高輝度部分を検知し、それらの位置座標や面積を検出した結果を示す処理結果データを通信部75へ出力する。なお、これらの撮像情報演算部74は、コントローラ7のハウジング71に固設されており、ハウジング71自体の方向を変えることによってその撮像方向を変更することができる。
コントローラ7は、3軸(X、Y、Z軸)の加速度センサ701を備えていることが好ましい。この3軸の加速度センサ701は、3方向、すなわち、上下方向(図3に示すY軸)、左右方向(図3に示すX軸)、および前後方向(図3に示すZ軸)で直線加速度を検知する。また、少なくとも2軸方向に沿った直線加速度を検知する加速度検出手段を使用してもよい。例えば、これらの加速度センサ701は、アナログ・デバイセズ株式会社(Analog Devices, Inc.)またはSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能であるタイプのものでもよい。加速度センサ701は、シリコン微細加工されたMEMS(Micro Electro Mechanical Systems:微小電子機械システム)の技術に基づいた静電容量式(静電容量結合式)であることが好ましい。しかしながら、既存の加速度検出手段の技術(例えば、圧電方式や圧電抵抗方式)あるいは将来開発される他の適切な技術を用いて、加速度センサ701が提供されてもよい。
加速度センサ701に用いられるような加速度検出手段は、加速度センサ701の持つ各軸に対応する直線に沿った加速度(直線加速度)のみを検知することができる。つまり、加速度センサ701からの直接の出力は、それら3軸のそれぞれに沿った直線加速度(静的または動的)を示す信号である。このため、加速度センサ701は、非直線状(例えば、円弧状)の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。
しかしながら、加速度センサ701から出力される加速度の信号に基づいて、ゲーム装置のプロセッサ(例えばCPU10)またはコントローラのプロセッサ(例えばマイコン751)等のコンピュータが処理を行うことによって、コントローラ7に関するさらなる情報を推測または算出(判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。
例えば、加速度センサ701を搭載するコントローラ7が静的な状態であることを前提としてコンピュータ側で処理する場合(すなわち、加速度センサ701によって検出される加速度が重力加速度のみであるとして処理する場合)、コントローラ7が現実に静的な状態であれば、検出された加速度に基づいてコントローラ7の姿勢が重力方向に対して傾いているか否か、またはどの程度傾いているかを知ることができる。具体的には、加速度センサ701の検出軸が鉛直下方向を向いている状態を基準としたとき、当該検出軸方向に1G(重力加速度)が作用しているか否かだけでコントローラ7が鉛直下方向に対して傾いているか否かを知ることができる。また、上記検出軸方向に作用している加速度の大きさによって、コントローラ7が鉛直下方向に対してどの程度傾いているかも知ることができる。また、多軸方向の加速度を検出可能な加速度センサ701の場合には、さらに各軸に対して検出された加速度の信号に対して処理を施すことによって、重力方向に対してコントローラ7がどの程度傾いているかをより詳細に知ることができる。この場合において、加速度センサ701からの出力に基づいて、プロセッサがコントローラ7の傾き角度のデータを算出する処理を行ってもよいが、当該傾き角度のデータを算出する処理を行うことなく、加速度センサ701からの出力に基づいて、おおよそのコントローラ7の傾き具合を推定するような処理としてもよい。このように、加速度センサ701をプロセッサと組み合わせて用いることによって、コントローラ7の傾き、姿勢、または位置を判定することができる。
一方、加速度センサ701が動的な状態であることを前提とする場合には、当該加速度センサ701が重力加速度成分に加えて加速度センサ701の動きに応じた加速度を検出するので、重力加速度成分を所定の処理により除去すれば、コントローラ7の動き方向等を知ることができる。具体的には、加速度センサ701を備えるコントローラ7がプレイヤの手で動的に加速されて動かされる場合に、加速度センサ701によって生成される加速度信号を処理することによって、コントローラ7の様々な動きおよび/または位置を算出することができる。なお、加速度センサ701が動的な状態であることを前提とする場合であっても、加速度センサ701の動きに応じた加速度を所定の処理により除去すれば、重力方向に対するコントローラ7の傾きを知ることが可能である。
他の実施例では、加速度センサ701は、信号をマイコン751に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置を備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサ701が静的な加速度(例えば、重力加速度)を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角(あるいは、他の好ましいパラメータ)に変換するものであってもよい。加速度センサ701でそれぞれ検知された加速度を示すデータは、通信部75に出力される。
通信部75は、マイクロコンピュータ(Micro Computer:マイコン)751、メモリ752、無線モジュール753、およびアンテナ754を含んでいる。マイコン751は、処理の際にメモリ752を記憶領域として用いながら、送信データを無線送信する無線モジュール753を制御する。また、マイコン751は、アンテナ754を介して無線モジュール753が受信したゲーム装置本体5からのデータに応じて、サウンドIC707およびバイブレータ704の動作を制御する。サウンドIC707は、通信部75を介してゲーム装置本体5から送信されたサウンドデータ等を処理する。また、マイコン751は、通信部75を介してゲーム装置本体5から送信された振動データ(例えば、バイブレータ704をONまたはOFFする信号)等に応じて、バイブレータ704を作動させる。
コントローラ7に設けられた操作部72からの操作信号(キーデータ)、加速度センサ701からの3軸方向の加速度信号(X、Y、およびZ軸方向加速度データ)、および撮像情報演算部74からの処理結果データは、マイコン751に出力される。マイコン751は、入力した各データ(キーデータ、X、Y、およびZ軸方向加速度データ、処理結果データ)を無線コントローラモジュール19へ送信する送信データとして一時的にメモリ752に格納する。ここで、通信部75から無線コントローラモジュール19への無線送信は、所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は16.7ms(1/60秒)であり、ブルートゥース(登録商標)で構成される通信部75の送信間隔は5msである。マイコン751は、無線コントローラモジュール19への送信タイミングが到来すると、メモリ752に格納されている送信データを一連の操作情報として出力し、無線モジュール753へ出力する。そして、無線モジュール753は、例えばブルートゥース(登録商標)の技術を用いて、操作情報を示す電波信号を所定周波数の搬送波を用いてアンテナ754から放射する。つまり、コントローラ7に設けられた操作部72からのキーデータ、加速度センサ701からのX、Y、およびZ軸方向加速度データ、および撮像情報演算部74からの処理結果データがコントローラ7から送信される。そして、ゲーム装置本体5の無線コントローラモジュール19でその電波信号を受信し、ゲーム装置本体5で当該電波信号を復調や復号することによって、一連の操作情報(キーデータ、X、Y、およびZ軸方向加速度データ、および処理結果データ)を取得する。そして、ゲーム装置本体5のCPU10は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、ブルートゥース(登録商標)の技術を用いて通信部75を構成する場合、通信部75は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
次に、ゲーム装置本体5が行う具体的な処理を説明する前に、本ゲーム装置本体5で行うゲームの概要について説明する。図8に示すように、コントローラ7は、全体として大人や子供の片手で把持可能な大きさである。そして、ゲームシステム1でコントローラ7を用いてゲームをプレイするためには、プレイヤが身体にコントローラ7を装着または手に把持した状態で、その場で足踏みする。そして、プレイヤがウォーキング、ジョギング、ランニング等を模した足踏みをすることによって、その歩数に応じた操作入力がゲーム装置本体5に与えられる。
ここで、本実施形態におけるゲームでは、プレイヤがコントローラ7を衣服等に装着したりポケットに入れたりして足踏みしてもいいし、プレイヤが手にコントローラ7を把持して足踏みしてもかまわない。何れの状態でコントローラ7を扱っても、プレイヤの歩数を正確にカウントすることができる。なお、図8においては、プレイヤが腰位置にコントローラ7を装着して足踏みしている様子をコントローラ7aで示している。プレイヤが身体に装着したコントローラ7aには、プレイヤの足踏みに応じた上下の揺れ(以下、縦揺れと記載する)が主に生じる。また、図8においては、コントローラ7を手に把持して足踏みしている様子をコントローラ7bで示している。プレイヤが手に把持したコントローラ7bには、プレイヤの足踏みにおける腕の振りに応じた前後の揺れ(以下、横揺れと記載する)が主に生じる。このようなコントローラ7aや7bに生じる縦揺れや横揺れをゲーム装置本体5が区別し、その周期や振幅等を利用してゲーム処理が行われる。
プレイヤがコントローラ7を縦揺れまたは横揺れで動かす動作では、コントローラ7からその揺れ方向へ加速する際の加速度や遠心力、動作を停止するために減速する際の加速度や遠心力等に応じた動的な操作情報(具体的には、X、Y、およびZ軸方向加速度データ)がゲーム装置本体5に与えられる。このようなコントローラ7に加わる加速度の変化は、加速度センサ701によって検出できるため、加速度センサ701から出力されるX、Y、およびZ軸方向加速度データに対して追加の処理を行うことによって、コントローラ7の縦揺れおよび横揺れの区別やその揺れ周期を算出することができる。
例えば、図9Aに示すように、コントローラ7に縦揺れが生じる場合、コントローラ7に作用する重力方向の加速度に注目すると、一例としてプレイヤの足踏みの1歩毎に1周期の加速度の波形が生じる。これは、プレイヤが足を床に接地する毎に身体に上下振動が主に生じるためである。一方、図9Bに示すように、コントローラ7に横揺れが生じる場合、コントローラ7に作用する重力方向に垂直な平面方向(すなわち、水平。以下、水平方向と記載する)の加速度に注目すると、プレイヤの足踏みの2歩毎に1周期の加速度の波形が生じる。つまり、プレイヤが同じ歩数で足踏みしている場合、横揺れにおける水平方向の加速度波形の周期は、縦揺れにおける重力方向の加速度波形の周期の2倍となる。これは、プレイヤが一方の足を床に接地するときにコントローラ7を把持する腕を前に振り、他方の足を床に接地するときに当該腕を後ろに振る前後振動が主に生じるためである。なお、以下の説明において、加速度センサ701の特性として、加速度センサ701から出力される加速度データは、当該加速度センサ701に加えられる加速度(つまり実際に加速する方向や減速する方向)とは真逆方向の加速度を示すデータが出力されるものとする。すなわち、加速度センサ701の加速による慣性力に応じた加速度データが出力されるものである。また、コントローラ7の加速度センサ701に加わる重力加速度は、重力方向と同じ方向の加速度データとして出力されることになる。
図10は、上記足踏み動作に応じてモニタ2に表示されるゲーム画像の一例を示す図である。ゲーム処理の一例として、モニタ2に表示されるプレイヤキャラクタPCが上記足踏みの歩数に応じて、仮想ゲーム空間内を移動する処理を行う。
例えば、図10においては、仮想ゲーム空間内をウォーキング、ジョギング、またはランニングするプレイヤキャラクタPCが表示されている。そして、プレイヤは、コントローラ7を装着または把持して、ウォーキング、ジョギング、またはランニングするように足踏みする。この場合、プレイヤが足踏みする歩数に応じた速度で、プレイヤキャラクタPCが仮想ゲーム空間内を移動する。
次に、ゲームシステム1において行われるゲーム処理の詳細を説明する。まず、図11を参照して、ゲーム処理において用いられる主なデータについて説明する。なお、図11は、ゲーム装置本体5の外部メインメモリ12および/または内部メインメモリ35(以下、2つのメインメモリを総称して、単にメインメモリと記載する)に記憶される主なデータを示す図である。
図11に示すように、メインメモリには、加速度データDa、追従加速度ベクトルデータDb、追従成分除去ベクトルデータDc、重力方向ベクトルデータDd、重力方向成分データDe、重力方向成分の絶対値データDf、最終の絶対値データDg、絶対値変化量データDh、最終の絶対値変化量データDi、縦揺れの山からの経過時間データDj、縦揺れの目標値データDk、縦揺れスピードデータDl、水平方向成分ベクトルデータDm、水平方向成分ベクトルの大きさデータDn、最終の大きさデータDo、大きさ変化量データDp、最終の大きさ変化量データDq、横揺れの山からの経過時間データDr、横揺れの目標値データDs、横揺れスピードデータDt、歩数データDu、プレイヤキャラクタ位置データDv、縦揺れタイマーデータDw、横揺れタイマーデータDx、および画像データDy等が記憶される。なお、メインメモリには、図11に示す情報に含まれるデータの他、ゲームに登場するプレイヤキャラクタPC以外の他のオブジェクト等に関するデータ(位置データ等)や仮想ゲーム空間に関するデータ(背景のデータ等)等、ゲーム処理に必要なデータが記憶される。
加速度データDaは、コントローラ7に生じた加速度を示すデータであり、コントローラ7から送信データとして送信されてくる一連の操作情報に含まれる加速度データが格納される。この加速度データDaには、加速度センサ701がX軸成分に対して検出した加速度accXを示すX軸方向加速度データDa1、Y軸成分に対して検出した加速度accYを示すY軸方向加速度データDa2、およびZ軸成分に対して検出した加速度accZを示すZ軸方向加速度データDa3が含まれる。なお、ゲーム装置本体5に備える無線コントローラモジュール19は、コントローラ7から所定周期(例えば、1/200秒毎)に送信される操作情報に含まれる加速度データを受信し、無線コントローラモジュール19に備える図示しないバッファに蓄えられる。その後、上記バッファに蓄えられた加速度データがゲーム処理周期である1フレーム毎(例えば、1/60秒毎)に読み出されて、メインメモリの加速度データDaが更新される。
このとき、操作情報を受信する周期と処理周期とが異なるために、上記バッファには複数の時点に受信した操作情報が記述されていることになる。この場合、一例として、後述する各ステップにおいて、それぞれ何回か処理を繰り返すことによって複数の時点に受信した操作情報を全て処理した後に次のステップに進める態様がある。また、他の例として後述する各ステップにおいて、複数の時点に受信した操作情報のうち最新の操作情報のみを常に用いて処理して、次のステップに進める態様がある。なお、後述する処理の説明においては、説明を簡単にするために当該複数時点の操作情報のうち、最新の操作情報のみを用いる態様を用いる。
また、後述する処理フローでは、加速度データDaがゲーム処理周期である1フレーム毎に更新される例を用いて説明するが、他の処理周期で更新されてもかまわない。例えば、コントローラ7からの送信周期毎に加速度データDaを更新し、当該更新された加速度データをゲーム処理周期毎に利用する態様でもかまわない。この場合、加速度データDaに記憶する加速度データDa1〜Da3を更新する周期と、ゲーム処理周期とが異なることになる。
追従加速度ベクトルデータDbは、加速度ベクトルaccに所定の割合で追従する追従加速度ベクトルaccfを示すデータが格納される。例えば、追従加速度ベクトルデータDbは、追従加速度ベクトルaccfのX軸成分、Y軸成分、およびZ軸成分を示すデータを含む。
追従成分除去ベクトルデータDcは、加速度ベクトルaccから追従加速度ベクトルaccfを減算した追従成分除去ベクトルvecを示すデータが格納される。例えば、追従成分除去ベクトルデータDcは、追従成分除去ベクトルvecのX軸成分vecX、Y軸成分vecY、およびZ軸成分vecZを示すデータを含む。
重力方向ベクトルデータDdは、コントローラ7に生じている重力の方向を表す重力方向ベクトルvecgを示すデータが格納される。例えば、重力方向ベクトルvecgは、追従加速度ベクトルaccfを正規化することによって得られる。また、重力方向ベクトルデータDdは、重力方向ベクトルvecgのX軸成分vecgX、Y軸成分vecgY、およびZ軸成分vecgZを示すデータを含む。
重力方向成分データDeは、追従成分除去ベクトルvecの重力方向成分Vwを示すデータが格納される。重力方向成分の絶対値データDfは、重力方向成分Vwの絶対値Vwaを示すデータが格納される。最終の絶対値データDgは、処理に用いた絶対値Vwaを、次回の処理に用いるために一時的に記憶した最終の絶対値Vwalを示すデータが格納される。絶対値変化量データDhは、最終の絶対値Vwalに対する絶対値Vwaの変化量(絶対値変化量Vwah)を示すデータが格納される。最終の絶対値変化量データDiは、処理に用いた絶対値変化量Vwahを、次回の処理に用いるために一時的に記憶した最終の絶対値変化量Vwahlを示すデータが格納される。
縦揺れの山からの経過時間データDjは、直前に判定された絶対値Vwaのピーク(縦揺れの山)からの経過時間Vtを示すデータが格納される。縦揺れの目標値データDkは、縦揺れの周期から得られる縦揺れスピードVsの目標値Vsdを示すデータが格納される。また、縦揺れスピードデータDlは、縦揺れの周期から得られる単位時間あたりの歩数(縦揺れスピードVs)を示すデータが格納される。
水平方向成分ベクトルデータDmは、追従成分除去ベクトルvecの水平方向成分を表す水平方向成分ベクトルHvecを示すデータが格納される。水平方向成分ベクトルの大きさデータDnは、水平方向成分ベクトルHvecの大きさHwaを示すデータが格納される。最終の大きさデータDoは、処理に用いた大きさHwaを、次回の処理に用いるために一時的に記憶した最終の大きさHwalを示すデータが格納される。大きさ変化量データDpは、最終の大きさHwalに対する大きさHwaの変化量(大きさ変化量Hwah)を示すデータが格納される。最終の大きさ変化量データDqは、処理に用いた大きさ変化量Hwahを、次回の処理に用いるために一時的に記憶した最終の大きさ変化量Hwahlを示すデータが格納される。
横揺れの山からの経過時間データDrは、直前に判定された大きさHwaのピーク(横揺れの山)からの経過時間Htを示すデータが格納される。横揺れの目標値データDsは、横揺れの周期から得られる横揺れスピードHsの目標値Hsdを示すデータが格納される。また、横揺れスピードデータDtは、横揺れの周期から得られる単位時間あたりの歩数(横揺れスピードHs)を示すデータが格納される。
歩数データDuは、縦揺れスピードVsおよび/または横揺れスピードHsを累積して算出されるプレイヤの歩数Stを示すデータが格納される。プレイヤキャラクタ位置データDvは、仮想ゲーム空間におけるプレイヤキャラクタPCの位置を示すデータが格納される。
縦揺れタイマーデータDwは、後述する処理ループ毎に更新される縦揺れタイマーのカウント値であり、縦揺れの山からの経過時間Vtを取得するためのデータである。横揺れタイマーデータDxは、後述する処理ループ毎に更新される横揺れタイマーのカウント値であり、横揺れの山からの経過時間Htを取得するためのデータである。
画像データDyは、プレイヤキャラクタ画像データDy1および背景画像データDy2等を含んでいる。プレイヤキャラクタ画像データDy1は、仮想ゲーム空間にプレイヤキャラクタPCを配置してゲーム画像を生成するためのデータである。背景画像データDy2は、仮想ゲーム空間に背景を配置してゲーム画像を生成するためのデータである。
次に、図12〜図14を参照して、ゲーム装置本体5において行われるゲーム処理の詳細を説明する。なお、図12は、ゲーム装置本体5において実行されるゲーム処理の流れの一例を示すフローチャートである。図13は、図12におけるステップ45の縦揺れスピードVsを算出する処理の一例の詳細な動作を示すサブルーチンである。図14は、図12におけるステップ46の横揺れスピードHsを算出する処理の一例の詳細な動作を示すサブルーチンである。なお、図12〜図14に示すフローチャートにおいては、ゲーム処理のうち、プレイヤがコントローラ7を装着または把持して足踏みすることに応じて、その歩数をカウントする処理について主に説明し、本願発明と直接関連しない他のゲーム処理については詳細な説明を省略する。また、図12〜図14では、CPU10が実行する各ステップを「S」と略称する。
ゲーム装置本体5の電源が投入されると、ゲーム装置本体5のCPU10は、ROM/RTC13に記憶されている起動用のプログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリに読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。図12〜図14に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。
図12において、CPU10は、ゲーム処理の初期化を行い(ステップ41)、次のステップに処理を進める。例えば、上記ステップ41におけるゲーム処理初期化では、仮想ゲーム空間の設定やプレイヤキャラクタPCの配置等の初期設定を行う。また、上記ステップ41におけるゲーム処理初期化では、プレイヤの歩数を算出するための各パラメータを初期化する。例えば、CPU10は、上述したメインメモリに格納される各データが示すパラメータをそれぞれ0に設定する。ただし、CPU10は、経過時間VtおよびHtについては、それぞれ0でない値(例えば、40)に設定して初期化する。
次に、CPU10は、加速度accX、accY、およびaccZを取得して(ステップ42)、次のステップに処理を進める。例えば、CPU10は、コントローラ7から受信した操作情報を用いて、当該操作情報に含まれる最新の加速度データが示す加速度を加速度accX、accY、およびaccZとして加速度データDaに格納する。具体的には、コントローラ7から受信した最新の操作情報に含まれるX軸方向の加速度データが示す加速度が、加速度accXとしてX軸方向加速度データDa1に格納される。また、最新の操作情報に含まれるY軸方向の加速度データが示す加速度が、加速度accYとしてY軸方向加速度データDa2に格納される。そして、最新の操作情報に含まれるZ軸方向の加速度データが示す加速度が、加速度accZとしてZ軸方向加速度データDa3に格納される。
次に、CPU10は、追従加速度ベクトルaccfを算出し(ステップ43)、次のステップに処理を進める。例えば、CPU10は、X軸方向加速度データDa1に格納された加速度accX、Y軸方向加速度データDa2に格納された加速度accY、およびZ軸方向加速度データDa3に格納された加速度accZを参照して、加速度ベクトルaccを取得する。そして、CPU10は、追従加速度ベクトルデータDbに既に格納されている追従加速度ベクトルaccfのX軸成分、Y軸成分、およびZ軸成分とを参照する。そして、CPU10は、新たな追従加速度ベクトルaccfを、
accf←accf+(acc−accf)*C
で算出し、追従加速度ベクトルデータaccfを更新する。ここで、Cは追従係数であり、例えばC=0.15に設定される。このように、追従加速度ベクトルaccfは、現時点の加速度ベクトルaccの各軸成分値(accX、accY、accZ)に、所定の割合でそれぞれ追従させた各軸成分値を有しており、現時点の加速度ベクトルaccに所定の割合で逐次追従させたものである。上記算出式によって、追従加速度ベクトルaccfは、加速度ベクトルaccに追従するベクトルとして算出されているが、追従係数Cが非常に小さな値であるため、加速度ベクトルaccのX軸成分accX、Y軸成分accY、およびZ軸成分accZを平滑化したようなベクトルとなる。また、追従加速度ベクトルaccfは、常にコントローラ7に作用している重力加速度等の静的加速度成分を示すパラメータとしても扱うことができる。
次に、CPU10は、追従成分除去ベクトルvecを算出し(ステップ44)、次のステップに処理を進める。例えば、CPU10は、加速度データDaに格納された加速度ベクトルaccと、上記ステップ43で算出された追従加速度ベクトルaccfとを参照する。そして、CPU10は、追従成分除去ベクトルvecを
vec←acc−accf
で算出し、追従成分除去ベクトルデータDcを更新する。上記算出式から明らかなように、追従成分除去ベクトルvecは、加速度ベクトルaccから追従加速度ベクトルaccfが減算されている。
次に、CPU10は、プレイヤの単位時間あたりの歩数を示す縦揺れスピードVsを算出する処理を行って(ステップ45)、処理を次のステップに進める。以下、図13を参照して、上記ステップ45で行う縦揺れスピードVs算出処理について説明する。
図13において、CPU10は、重力方向ベクトルvecgを算出し(ステップ80)、処理を次のステップに進める。具体的には、CPU10は、追従加速度ベクトルデータDbに格納されている追従加速度ベクトルaccfを、長さ1のベクトルに正規化することによって重力方向ベクトルvecgを算出する。そして、CPU10は、算出された重力方向ベクトルvecgを用いて、重力方向ベクトルデータDdを更新する。
次に、CPU10は、追従成分除去ベクトルvecの重力方向成分Vwを算出し(ステップ81)、処理を次のステップに進める。具体的には、CPU10は、追従成分除去ベクトルデータDcに格納されている追従成分除去ベクトルvecおよび重力方向ベクトルデータDdに格納されている重力方向ベクトルvecgを参照して、重力方向成分Vwを
Vw←vecgX*vecX+vecgY*vecY+vecgZ*vecZ
で算出する。そして、CPU10は、算出された重力方向成分Vwを用いて重力方向成分データDeを更新する。
次に、CPU10は、重力方向成分Vwの絶対値Vwaを算出し(ステップ82)、処理を次のステップに進める。具体的には、CPU10は、算出された重力方向成分Vwの絶対値Vwaを用いて、絶対値データDfを更新する。
次に、CPU10は、絶対値変化量Vwahを算出し(ステップ83)、処理を次のステップに進める。具体的には、CPU10は、上記ステップ82で算出された絶対値Vwaから最終の絶対値Vwalを減算して絶対値変化量Vwahを算出し、算出された絶対値変化量Vwahを用いて、絶対値変化量データDhを更新する。後述により明らかとなるが、最終の絶対値Vwalは、最終の絶対値データDgに格納されており、前回の処理において算出された絶対値Vwaである。
次に、CPU10は、直前に判定された縦揺れの山からの経過時間Vtを取得し(ステップ84)、処理を次のステップに進める。具体的には、CPU10は、縦揺れタイマーデータDwに格納された縦揺れタイマーのカウント値を参照し、当該カウント値を経過時間Vtとして取得する。そして、CPU10は、取得した経過時間Vtを用いて、縦揺れの山からの経過時間データDjを更新する。
次に、CPU10は、絶対値Vwaが閾値Aより大きいか否かを判断する(ステップ85)。そして、CPU10は、絶対値Vwaが閾値Aより大きい場合、次のステップ86に処理を進める。一方、CPU10は、絶対値Vwaが閾値A以下の場合、次のステップ93に処理を進める。ここで、閾値Aは、絶対値Vwaがピーク(縦揺れの山)であることを判定する際の条件の1つであり、例えば閾値A=0.5に設定される。つまり、絶対値Vwaが変動していたとしても、閾値A以下であればピークと判定されないことになる。
ステップ86において、CPU10は、最終の絶対値変化量Vwahlが0以上で、かつ、絶対値変化量Vwahが0より小さいか否かを判断する。そして、CPU10は、Vwahl≧0、かつ、Vwah<0の場合、絶対値Vwaが縦揺れの山であると判定して、次のステップ87に処理を進める。一方、CPU10は、Vwahl<0、または、Vwah≧0の場合、絶対値Vwaが縦揺れの山ではないと判定して、次のステップ93に処理を進める。後述により明らかとなるが、最終の絶対値変化量Vwahlは、最終の絶対値変化量データDiに格納されており、前回の処理において算出された絶対値変化量Vwahである。つまり、上記ステップ85およびステップ86においては、絶対値Vwaが閾値Aより大きく、かつ、絶対値Vwaが増加から減少に変化した極大値を示した場合に、絶対値Vwaが縦揺れの山であると判定している。
ステップ87において、CPU10は、縦揺れタイマーデータDwに記述されたカウント値を0に初期化する。そして、CPU10は、上記ステップ84で取得した経過時間Vtが最短時間Vtmin(例えば、Vtmin=4)より短いか否かを判断する(ステップ88)。そして、CPU10は、経過時間Vtが最短時間Vtminより短い場合、最短時間Vtminの値によって経過時間Vtの値を置き換え、縦揺れの山からの経過時間データDjを更新して(ステップ89)、次のステップ90に処理を進める。一方、CPU10は、経過時間Vtが最短時間Vtmin以上の場合、そのまま次のステップ90に処理を進める。
ステップ90において、CPU10は、縦揺れスピードVsの目標値Vsdを算出して、次のステップに処理を進める。例えば、CPU10は、縦揺れの山からの経過時間データDjに格納されている経過時間Vtを参照して、目標値Vsdを
Vsd=M/Vt
で算出する。ここで、Mは、第1の係数であり、例えばM=0.25である。そして、CPU10は、算出した目標値Vsdを用いて縦揺れの目標値データDkを更新する。
次に、CPU10は、縦揺れスピードVsを算出して(ステップ91)、次のステップに処理を進める。例えば、CPU10は、縦揺れの目標値データDkに格納されている縦揺れスピードVsの目標値Vsdおよび縦揺れスピードデータDlに格納されている縦揺れスピードVsを参照して、新たな縦揺れスピードVsを
Vs←Vs+(Vsd−Vs)*0.3
で算出する。そして、CPU10は、算出した新たな縦揺れスピードVsを用いて、縦揺れスピードデータDlを更新する。
次に、ステップ92において、CPU10は、重力方向成分の絶対値データDfに格納されている現時点の絶対値Vwaの値によって最終の絶対値Vwalの値を置き換え、最終の絶対値データDgを更新する。また、CPU10は、絶対値変化量データDhに格納されている現時点の絶対値変化量Vwahの値によって最終の絶対値変化量Vwahlの値を置き換え、最終の絶対値変化量データDiを更新して、当該サブルーチンによる処理を終了する。
一方、ステップ93において、CPU10は、上記ステップ84で取得した経過時間Vtが最長時間Vtmax(例えば、Vtmax=20)より長いか否かを判断する。そして、CPU10は、経過時間Vtが最長時間Vtmaxより長い場合、次のステップ94に処理を進める。一方、CPU10は、経過時間Vtが最長時間Vtmax以下の場合、上記ステップ91に処理を進める。
ステップ94において、CPU10は、縦揺れスピードVsを減衰させて、上記ステップ92に処理を進める。例えば、CPU10は、縦揺れスピードデータDlに格納されている縦揺れスピードVsを参照して、新たな縦揺れスピードVsを
Vs←Vs*0.9
で減衰させる。そして、CPU10は、減衰させた新たな縦揺れスピードVsを用いて、縦揺れスピードデータDlを更新する。
図12に戻り、CPU10は、ステップ45の縦揺れスピードVsを算出する処理の後、プレイヤの単位時間あたりの歩数を示す横揺れスピードHsを算出する処理を行って(ステップ46)、処理を次のステップに進める。以下、図14を参照して、上記ステップ46で行う横揺れスピードHs算出処理について説明する。
図14において、CPU10は、追従成分除去ベクトルvecの水平方向成分ベクトルHvecを算出し(ステップ100)、処理を次のステップに進める。具体的には、CPU10は、追従成分除去ベクトルデータDcに格納されている追従成分除去ベクトルvec、重力方向ベクトルデータDdに格納されている重力方向ベクトルvecg、および重力方向成分データDeに格納されている重力方向成分Vwを参照して、水平方向成分ベクトルHvecを
Hvec←vec−vecg*Vw
で算出する。そして、CPU10は、算出された水平方向成分ベクトルHvecを用いて水平方向成分ベクトルデータDmを更新する。
次に、CPU10は、水平方向成分ベクトルHvecの大きさHwaを算出し(ステップ101)、処理を次のステップに進める。具体的には、CPU10は、水平方向成分ベクトルデータDmを参照して、水平方向成分ベクトルHvecの大きさHwaを算出し、算出された大きさHwaを用いて、水平方向成分ベクトルの大きさデータDnを更新する。
次に、CPU10は、大きさ変化量Hwahを算出し(ステップ102)、処理を次のステップに進める。具体的には、CPU10は、上記ステップ101で算出された大きさHwaから最終の大きさHwalを減算して大きさ変化量Hwahを算出し、算出された大きさ変化量Hwahを用いて、大きさ変化量データDpを更新する。後述により明らかとなるが、最終の大きさHwalは、最終の大きさデータDoに格納されており、前回の処理において算出された大きさHwaである。
次に、CPU10は、直前に判定された横揺れの山からの経過時間Htを取得し(ステップ103)、処理を次のステップに進める。具体的には、CPU10は、横揺れタイマーデータDxに格納された横揺れタイマーのカウント値を参照し、当該カウント値を経過時間Htとして取得する。そして、CPU10は、取得した経過時間Htを用いて、横揺れの山からの経過時間データDrを更新する。
次に、CPU10は、大きさHwaが閾値Bより大きいか否かを判断する(ステップ104)。そして、CPU10は、大きさHwaが閾値Bより大きい場合、次のステップ105に処理を進める。一方、CPU10は、大きさHwaが閾値B以下の場合、次のステップ112に処理を進める。ここで、閾値Bは、大きさHwaがピーク(横揺れの山)であることを判定する際の条件の1つであり、例えば閾値B=3.0に設定される。つまり、大きさHwaが変動していたとしても、閾値B以下であればピークと判定されないことになる。なお、閾値Bは、上述した閾値Aより大きな値に設定されることが好ましい。これは、縦揺れおよび横揺れに対する揺れの大きさ(コントローラ7を把持した横揺れの方が揺れの大きさが大きい)や揺れの周期(縦揺れの周期は横揺れの半分となる)の違いを考慮したものであり、閾値AおよびBは、揺れを判定する感度に応じてそれぞれ適切な値に設定すればよい。
ステップ105において、CPU10は、最終の大きさ変化量Hwahlが0以上で、かつ、大きさ変化量Hwahが0より小さいか否かを判断する。そして、CPU10は、Hwahl≧0、かつ、Hwah<0の場合、大きさHwaが横揺れの山であると判定して、次のステップ106に処理を進める。一方、CPU10は、Hwahl<0、または、Hwah≧0の場合、大きさHwaが横揺れの山ではないと判定して、次のステップ112に処理を進める。後述により明らかとなるが、最終の大きさ変化量Hwahlは、最終の大きさ変化量データDqに格納されており、前回の処理において算出された大きさ変化量Hwahである。つまり、上記ステップ104およびステップ105においては、大きさHwaが閾値Bより大きく、かつ、大きさHwaが増加から減少に変化した極大値を示した場合に、大きさHwaが横揺れの山であると判定している。
ステップ106において、CPU10は、横揺れタイマーデータDxに記述されたカウント値を0に初期化する。そして、CPU10は、上記ステップ103で取得した経過時間Htが最短時間Htmin(例えば、Htmin=8)より短いか否かを判断する(ステップ107)。そして、CPU10は、経過時間Htが最短時間Htminより短い場合、最短時間Htminの値によって経過時間Htの値を置き換え、横揺れの山からの経過時間データDrを更新して(ステップ108)、次のステップ109に処理を進める。一方、CPU10は、経過時間Htが最短時間Htmin以上の場合、そのまま次のステップ109に処理を進める。
ステップ109において、CPU10は、横揺れスピードHsの目標値Hsdを算出して、次のステップに処理を進める。例えば、CPU10は、横揺れの山からの経過時間データDrに格納されている経過時間Htを参照して、目標値Hsdを
Hsd=N/Ht
で算出する。ここで、Nは、第2の係数であり、例えばN=0.5である。そして、CPU10は、算出した目標値Hsdを用いて横揺れの目標値データDsを更新する。
次に、CPU10は、横揺れスピードHsを算出して(ステップ110)、次のステップに処理を進める。例えば、CPU10は、横揺れの目標値データDsに格納されている横揺れスピードHsの目標値Hsdおよび横揺れスピードデータDtに格納されている横揺れスピードHsを参照して、新たな横揺れスピードHsを
Hs←Hs+(Hsd−Hs)*0.3
で算出する。そして、CPU10は、算出した新たな横揺れスピードHsを用いて、横揺れスピードデータDtを更新する。
次に、ステップ111において、CPU10は、水平方向成分ベクトルの大きさデータDnに格納されている現時点の大きさHwaの値によって最終の大きさHwalの値を置き換え、最終の大きさデータDoを更新する。また、CPU10は、大きさ変化量データDpに格納されている現時点の大きさ変化量Hwahの値によって最終の大きさ変化量Hwahlの値を置き換え、最終の大きさ変化量データDqを更新して、当該サブルーチンによる処理を終了する。
一方、ステップ112において、CPU10は、上記ステップ103で取得した経過時間Htが最長時間Htmax(例えば、Htmax=40)より長いか否かを判断する。そして、CPU10は、経過時間Htが最長時間Htmaxより長い場合、次のステップ113に処理を進める。一方、CPU10は、経過時間Htが最長時間Htmax以下の場合、上記ステップ110に処理を進める。
ステップ113において、CPU10は、横揺れスピードHsを減衰させて、上記ステップ92に処理を進める。例えば、CPU10は、横揺れスピードデータDtに格納されている横揺れスピードHsを参照して、新たな横揺れスピードHsを
Hs←Hs*0.9
で減衰させる。そして、CPU10は、減衰させた新たな横揺れスピードHsを用いて、横揺れスピードデータDtを更新する。
ここで、図15Aおよび図15Bを用いて、上述した縦揺れスピードVs算出処理および横揺れスピードHsにおける基本原理について説明する。なお、図15Aは、コントローラ7に縦揺れが生じている状態における重力方向成分Vwの絶対値Vwaの変化の一例を示すグラフである。また、図15Bは、コントローラ7に横揺れが生じている状態における水平方向成分ベクトルHvecの大きさHwaの変化の一例を示すグラフである。
図15Aにおいて、重力方向成分Vwは、コントローラ7に生じる加速度における重力方向成分を示すパラメータである。また、重力方向成分Vwの絶対値Vwaは、当該重力方向成分Vwの負成分の正負が反転する。つまり、結果的に重力方向成分Vwの絶対値Vwaの変化周期は、図9Aで示したコントローラ7に作用する重力方向の加速度の変化周期(図15Aでは破線で示す)の半分となる。したがって、絶対値Vwaの周期に注目すると、プレイヤの足踏みの1歩毎に2周期の絶対値Vwaのピークが生じる。そして、絶対値Vwaのピーク間の時間間隔(経過時間Vt)がプレイヤの半歩分の時間であるとして目標値Vsdを算出する際の分子である第1の係数Mを例えば0.25とし、プレイヤの単位時間あたりの歩数を示す縦揺れスピードVsが算出される。
一方、図15Bにおいて、水平方向成分ベクトルHvecは、コントローラ7に生じる加速度における重力方向に垂直な平面方向成分(水平方向成分)を示すパラメータである。また、水平方向成分ベクトルHvecの大きさHwaは、負の大きさが存在しないため、図9Bで示した水平方向の加速度の負成分の正負が反転したような変化となる。つまり、結果的に水平方向成分ベクトルHvecの大きさHwaの変化周期は、図9Bで示したコントローラ7に作用する水平方向の加速度の変化周期(図15Bでは破線で示す)の半分となる。したがって、大きさHwaの周期に注目すると、プレイヤの足踏みの1歩毎に1周期の大きさHwaのピークが生じる。そして、大きさHwaのピーク間の時間間隔(経過時間Ht)がプレイヤの1歩分の時間であるとして、目標値Hsdを算出する際の分子である第2の係数Nを第1の係数Mとは異なる値(例えば、N=0.5)とし、プレイヤの単位時間あたりの歩数を示す横揺れスピードHsが算出される。
このように、縦揺れスピードVsにおいては正の値のみとなる絶対値Vwaの極大値が生じたタイミングに注目し、横揺れスピードHsにおいては正の値のみとなる大きさHwaの極大値が生じたタイミングに注目して、当該極大値間隔から算出されている。これによって、図9Aおよび図9Bに示した加速度変化の極大値を用いるよりも、2倍の頻度で出現する極大値を用いることができ、縦揺れスピードVsおよび横揺れスピードHsを算出する精度が向上する。また、重力方向成分Vwの変化をそのまま用いた場合、重力方向成分Vwの極小値を検出する処理が必要となるが、双方共に極大値のみを検出することによって処理が単純となって非常に効率的である。なお、これらの効果を期待しない場合、重力方向成分Vwの変化をそのまま用いて縦揺れスピードVsを算出してもかまわない。
また、上記ステップ91の縦揺れスピードVsを算出する処理においては、縦揺れスピードVsが目標値Vsdに少しずつ近づく計算をしている。また、上記ステップ110の横揺れスピードHsを算出する処理においては、横揺れスピードHsが目標値Hsdに少しずつ近づく計算をしている。これは、短期的な周期変化(すなわち、経過時間Vtおよび経過時間Htの変化)が、縦揺れスピードVsおよび横揺れスピードHsの算出結果に影響することを低減するためである。このような効果を期待しない場合、上記ステップ91における縦揺れスピードVsを算出する処理において、目標値Vsdをそのまま縦揺れスピードVsにしてもかまわない。また、上記ステップ110における横揺れスピードHsを算出する処理において、目標値Hsdをそのまま横揺れスピードHsにしてもかまわない。
図12に戻り、CPU10は、ステップ46の横揺れスピードHsを算出する処理の後、縦揺れスピードVsが横揺れスピードHsより大きいか否かを判断する(ステップ47)。具体的には、CPU10は、縦揺れスピードデータDlに格納されている縦揺れスピードVsと、横揺れスピードデータDtに格納されている横揺れスピードHsとを比較して、縦揺れスピードVsが横揺れスピードHsより大きいか否かを判断する。そして、CPU10は、Vs>Hsの場合、処理を次のステップ48に進める。一方、CPU10は、Vs≦Hsの場合、処理を次のステップ49に進める。
ステップ48において、CPU10は、縦揺れスピードVsを歩数Stに加算して、次のステップ50に処理を進める。具体的には、CPU10は、縦揺れスピードデータDlに格納された縦揺れスピードVと、歩数データDuに格納された歩数Stとを参照して、新たな歩数Stを
St←St+V
で算出する。そして、CPU10は、算出された新たな歩数Stを用いて、歩数データDuを更新する。
一方、ステップ49において、CPU10は、横揺れスピードHsを歩数Stに加算して、次のステップ50に処理を進める。具体的には、CPU10は、横揺れスピードデータDtに格納された横揺れスピードHと、歩数データDuに格納された歩数Stとを参照して、新たな歩数Stを
St←St+H
で算出する。そして、CPU10は、算出された新たな歩数Stを用いて、歩数データDuを更新する。
このように、上記ステップ47〜ステップ49の処理では、縦揺れスピードVと横揺れスピードHとを比較して、速度が速い方を歩数Stに加算することによって新たな歩数Stを算出している。例えば、プレイヤがコントローラ7を腰等に装着している場合、コントローラ7の横揺れがほとんど検出されないため、横揺れスピードHが小さくなって、縦揺れスピードVが歩数Stに加算される対象に採用される可能性が高くなる。一方、プレイヤがコントローラ7を手に把持している場合、コントローラ7の大きな横揺れが検出されるため、横揺れスピードHが大きくなって、横揺れスピードHが歩数Stに加算される対象に採用される可能性が高くなる。
ステップ50において、CPU10は、ステップ48またはステップ49で加算された歩数Stを用いて、プレイヤキャラクタPCを仮想ゲーム空間内で移動させ、モニタ2に表示して、処理を次のステップに進める。具体的には、CPU10は、歩数データDuに格納された歩数Stを参照し、当該歩数Stに応じた歩数でプレイヤキャラクタPCを動作/移動させる。また、CPU10は、仮想ゲーム空間におけるプレイヤキャラクタPCの位置を決定して、プレイヤキャラクタ位置データDvを更新する。そして、CPU10は、プレイヤキャラクタPCが配置された仮想ゲーム空間をモニタ2に表示する(図10参照)。
次に、CPU10は、縦揺れタイマーデータDwに格納されているカウント値および横揺れタイマーデータDxに格納されているカウント値にそれぞれ1を加算して、縦揺れタイマーデータDwおよび横揺れタイマーデータDxを更新する(ステップ51)。そして、CPU10は、ゲームを終了するか否かを判断する(ステップ52)。ゲームを終了する条件としては、例えば、ゲームオーバーとなる条件が満たされたことや、プレイヤがゲームを終了する操作を行ったこと等がある。CPU10は、ゲームを終了しない場合に上記ステップ42に戻って処理を繰り返し、ゲームを終了する場合に当該フローチャートによる処理を終了する。
このように、上述したゲーム処理によれば、コントローラ7に内蔵された加速度センサ701から出力されるデータを用いて、当該コントローラ7を装着または把持するプレイヤの歩数を正確に判定することができる。例えば、プレイヤの身体の上下の移動に応じた加速度が主に生じるような部位にコントローラ7を装着する場合や、プレイヤが腕を振ることによる加速度が主に生じるような部位にコントローラ7を把持している場合等でも、プレイヤの正しい歩数を算出することができ、プレイヤの携帯方法が制限されずに自由にコントローラ7を取り扱うことができる。
なお、上述したゲーム処理では、縦揺れスピードVsと横揺れスピードHsとを比較して、コントローラ7に与えられる揺れが、縦揺れ主体なのか横揺れ主体なのかを判断しているが、他のパラメータを比較して判断してもかまわない。以下、図16を用いて、他のパラメータを比較して判断するゲーム処理を説明する。なお、図16は、ゲーム装置本体5において実行されるゲーム処理の流れの他の例を示すフローチャートである。
図16において、ステップ121〜ステップ126の処理は、図12を用いて説明した上記ステップ41〜ステップ46の処理と同様であるため、詳細な説明を省略する。ステップ126の横揺れスピードHsを算出する処理の後、CPU10は、次のステップ127に処理を進める。
ステップ127において、CPU10は、横揺れスピードHsの振幅に対する縦揺れスピードVsの振幅の比rを算出し、処理を次のステップに進める。例えば、CPU10は、重力方向成分Vwの絶対値Vwaの変化における直前の極大値を、縦揺れスピードVsの振幅ampVとして取得する。また、CPU10は、水平方向成分ベクトルHvecの大きさHwaの変化における直前の極大値を、横揺れスピードHsの振幅ampHとして取得する。そして、CPU10は、縦揺れスピードVsの振幅ampVと、横揺れスピードHsの振幅ampHとを用いて、比rを
r=ampV/ampH
で算出する。
次に、CPU10は、上記ステップ127で算出した比rが係数Kより大きいか否かを判断する(ステップ128)。例えば、プレイヤがコントローラ7を装着して足踏みする場合の比rと、コントローラ7を把持して足踏みする場合の比rとを、それぞれ実験的に求め、それらの比rを区別可能な閾値が係数Kとして予め設定される。そして、CPU10は、r>Kの場合、処理を次のステップ129に進める。一方、CPU10は、r≦Kの場合、処理を次のステップ130に進める。
ステップ129〜ステップ133の処理は、図12を用いて説明した上記ステップ48〜ステップ52の処理と同様であるため、詳細な説明を省略する。
このように、ゲーム処理の他の例では、縦揺れスピードVの振幅ampVと横揺れスピードHの振幅ampHとの比を用いて、振幅比が所定値以上の方を歩数Stに加算することによって新たな歩数Stを算出している。例えば、プレイヤがコントローラ7を腰等に装着している場合、コントローラ7の横揺れがほとんど検出されないため、横揺れスピードHの振幅ampHが小さくなって、縦揺れスピードVが歩数Stに加算される対象に採用される可能性が高くなる。一方、プレイヤがコントローラ7を手に把持している場合、コントローラ7の大きな横揺れが検出されるため、横揺れスピードHの振幅ampHが大きくなって、横揺れスピードHが歩数Stに加算される対象に採用される可能性が高くなる。
また、上述したゲーム処理では、重力方向成分Vwの絶対値Vwaの極大値間隔を用いて縦揺れスピードVsを算出し、水平方向成分ベクトルHvecの大きさHwaの極大値間隔を用いて横揺れスピードHsを算出しているが、他の方法によって縦揺れスピードVsおよび横揺れスピードHsを算出してもかまわない。以下、図17および図18を参照して、縦揺れスピードVsおよび横揺れスピードHsを算出する処理の他の例を説明する。なお、図17は、図12におけるステップ45または図16におけるステップ125の縦揺れスピードVsを算出する処理の他の例の詳細な動作を示すサブルーチンである。図18は、図12におけるステップ46または図16におけるステップ126の横揺れスピードHsを算出する処理の他の例の詳細な動作を示すサブルーチンである。
図17において、ステップ140〜ステップ149の処理は、図13を用いて説明した上記ステップ80〜ステップ89の処理と同様であるため、詳細な説明を省略する。ステップ148で経過時間Vtが最短時間Vtmin以上と判断された後、またはステップ149で最短時間Vtminの値によって経過時間Vtの値を置き換えられた後、CPU10は、次のステップ150に処理を進める。
ステップ150において、CPU10は、縦揺れの山の高さVhを取得し、処理を次のステップに進める。具体的には、CPU10は、前回の処理で算出されている最終の絶対値Vwalの値を用いて、縦揺れの山の高さVhとして取得する。
次に、CPU10は、縦揺れの山の時間間隔VTを予測して(ステップ151)、処理を次のステップに進める。例えば、図19に示すように、CPU10は、絶対値Vwaの変化が直線的な波形であると仮定して、上記ステップ151において直前の絶対値Vwaの極大値から次に到来する絶対値Vwaの極大値までの時間間隔VTを予測する。例えば、CPU10は、時間間隔VTを、
VT=Vh*2/|d|
で算出する。ここで、dは、現時点の絶対値Vwaと最後の絶対値Vwalとの差分値(すなわち、1フレームあたりの絶対値Vwaの変化量)である。図19から明らかなように、時間間隔VTに対する絶対値Vwaの変化量は、縦揺れの山の高さVhの2倍となる。つまり、|d|*VT=2*Vhとなるため、上記数式を用いて時間間隔VTを求めることができる。
次に、CPU10は、縦揺れスピードVsの目標値Vsdを算出して(ステップ152)、次のステップに処理を進める。例えば、CPU10は、縦揺れの山からの経過時間データDjに格納されている経過時間Vtを参照して、目標値Vsdを
Vsd=M/Vt
で算出する。ここで、Mは、第1の係数であり、例えばM=0.25である。そして、CPU10は、算出した目標値Vsdを用いて、縦揺れの目標値データDkを更新する。
次に、CPU10は、縦揺れスピードVsを算出して(ステップ153)、次のステップに処理を進める。例えば、CPU10は、縦揺れの目標値データDkに格納されている縦揺れスピードVsの目標値Vsdおよび縦揺れスピードデータDlに格納されている縦揺れスピードVsを参照して、新たな縦揺れスピードVsを
Vs←Vs+(Vsd−Vs)*0.1
で算出する。そして、CPU10は、算出した新たな縦揺れスピードVsを用いて、縦揺れスピードデータDlを更新する。
上記ステップ153における縦揺れスピードVsを算出する処理においては、上記ステップ91と同様に、縦揺れスピードVsが目標値Vsdに少しずつ近づく計算をしている。これは、短期的な周期変化(すなわち、時間間隔VTの変化)が、縦揺れスピードVsの算出結果に影響することを低減するためである。また、図19に示すように時間間隔VTの予測において、絶対値Vwaが直線的な変化をする仮定をしているため、実際の変化波形と異なり極大値付近での算出誤差が大きくなるが、目標値Vsdに少しずつ近づく計算をすることによって当該誤差を吸収することができる。なお、このような効果を期待しない場合、上記ステップ153における縦揺れスピードVsを算出する処理においても、目標値Vsdをそのまま縦揺れスピードVsにしてもかまわない。
次に、ステップ154において、CPU10は、重力方向成分の絶対値データDfに格納されている現時点の絶対値Vwaの値によって最終の絶対値Vwalの値を置き換え、最終の絶対値データDgを更新する。また、CPU10は、絶対値変化量データDhに格納されている現時点の絶対値変化量Vwahの値によって最終の絶対値変化量Vwahlの値を置き換え、最終の絶対値変化量データDiを更新して、当該サブルーチンによる処理を終了する。
一方、絶対値Vwaが閾値A以下の場合(ステップ145でNo)、または絶対値Vwaが最終の絶対値Vwal以上の場合(ステップ146でNo)、ステップ155の処理が行われる。ステップ155において、CPU10は、上記ステップ144で取得した経過時間Vtが最長時間Vtmax(例えば、Vtmax=20)より長いか否かを判断する。そして、CPU10は、経過時間Vtが最長時間Vtmaxより長い場合、次のステップ156に処理を進める。一方、CPU10は、経過時間Vtが最長時間Vtmax以下の場合、上記ステップ151に処理を進める。
ステップ156において、CPU10は、縦揺れスピードVsを減衰させて、上記ステップ154に処理を進める。例えば、CPU10は、縦揺れスピードデータDlに格納されている縦揺れスピードVsを参照して、新たな縦揺れスピードVsを
Vs←Vs*0.9
で減衰させる。そして、CPU10は、減衰させた新たな縦揺れスピードVsを用いて、縦揺れスピードデータDlを更新する。
図18において、ステップ160〜ステップ168の処理は、図16を用いて説明した上記ステップ100〜ステップ108の処理と同様であるため、詳細な説明を省略する。ステップ167で経過時間Htが最短時間Htmin以上と判断された後、またはステップ168で最短時間Htminの値によって経過時間Htの値を置き換えられた後、CPU10は、次のステップ169に処理を進める。
ステップ169において、CPU10は、横揺れの山の高さHhを取得し、処理を次のステップに進める。具体的には、CPU10は、前回の処理で算出されている最終の大きさHwalの値を用いて、横揺れの山の高さHhとして取得する。
次に、CPU10は、横揺れの山の時間間隔HTを予測して(ステップ170)、処理を次のステップに進める。例えば、CPU10は、絶対値Vwaと同様に、大きさHwaの変化が直線的な波形であると仮定して、上記ステップ170において直前の大きさHwaの極大値から次に到来する大きさHwaの極大値までの時間間隔HTを予測する。例えば、CPU10は、時間間隔HTを、
HT=Hh*2/|e|
で算出する。ここで、eは、現時点の大きさHwaと最後の大きさHwalとの差分値(すなわち、1フレームあたりの大きさHwaの変化量)である。
次に、CPU10は、横揺れスピードHsの目標値Hsdを算出して(ステップ171)、次のステップに処理を進める。例えば、CPU10は、横揺れの山からの経過時間データDrに格納されている経過時間Htを参照して、目標値Hsdを
Hsd=N/Ht
で算出する。ここで、Nは、第2の係数であり、例えばN=0.5である。そして、CPU10は、算出した目標値Hsdを用いて、横揺れの目標値データDsを更新する。
次に、CPU10は、横揺れスピードHsを算出して(ステップ172)、次のステップに処理を進める。例えば、CPU10は、横揺れの目標値データDsに格納されている横揺れスピードHsの目標値Hsdおよび横揺れスピードデータDtに格納されている横揺れスピードHsを参照して、新たな横揺れスピードHsを
Hs←Hs+(Hsd−Hs)*0.1
で算出する。そして、CPU10は、算出した新たな横揺れスピードHsを用いて、横揺れスピードデータDtを更新する。
上記ステップ172における横揺れスピードHsを算出する処理においては、上記ステップ110と同様に、横揺れスピードHsが目標値Hsdに少しずつ近づく計算をしている。これは、短期的な周期変化(すなわち、時間間隔HTの変化)が、横揺れスピードHsの算出結果に影響することを低減するためである。また、時間間隔HTの予測においても、大きさHwaが直線的な変化をする仮定をしているため、実際の変化波形と異なり極大値付近での算出誤差が大きくなるが、目標値Hsdに少しずつ近づく計算をすることによって当該誤差を吸収することができる。なお、このような効果を期待しない場合、上記ステップ172における横揺れスピードHsを算出する処理においても、目標値Hsdをそのまま横揺れスピードHsにしてもかまわない。
次に、ステップ173において、CPU10は、水平方向成分ベクトルの大きさデータDnに格納されている現時点の大きさHwaの値によって最終の大きさHwalの値を置き換え、最終の大きさデータDoを更新する。また、CPU10は、大きさ変化量データDpに格納されている現時点の大きさ変化量Hwahの値によって最終の大きさ変化量Hwahlの値を置き換え、最終の大きさ変化量データDqを更新して、当該サブルーチンによる処理を終了する。
一方、大きさHwaが閾値B以下の場合(ステップ164でNo)、または大きさHwaが最終の大きさHwal以上の場合(ステップ165でNo)、ステップ174の処理が行われる。ステップ174において、CPU10は、上記ステップ163で取得した経過時間Htが最長時間Htmax(例えば、Htmax=40)より長いか否かを判断する。そして、CPU10は、経過時間Htが最長時間Htmaxより長い場合、次のステップ175に処理を進める。一方、CPU10は、経過時間Htが最長時間Htmax以下の場合、上記ステップ170に処理を進める。
ステップ175において、CPU10は、横揺れスピードHsを減衰させて、上記ステップ173に処理を進める。例えば、CPU10は、横揺れスピードデータDtに格納されている横揺れスピードHsを参照して、新たな横揺れスピードHsを
Hs←Hs*0.9
で減衰させる。そして、CPU10は、減衰させた新たな横揺れスピードHsを用いて、横揺れスピードデータDtを更新する。
このように、上述した処理では、重力方向成分Vwの絶対値Vwaの極大値を用いて極大値間の時間間隔VTを予測して縦揺れスピードVsを算出している。また、水平方向成分ベクトルHvecの大きさHwaの極大値を用いて極大値間の時間間隔HTを予測して横揺れスピードHsを算出している。このような極大値を利用した周期予測を用いても、縦揺れスピードVsおよび横揺れスピードHsを算出することができる。
なお、上述した歩数算出処理においては、縦揺れの山を検出した際の経過時間Vtが最長時間Vtmaxより長い場合や、横揺れの山を検出した際の経過時間Htが最長時間Htmaxより長い場合、縦揺れスピードVsおよび横揺れスピードHsをそれぞれ減衰させる処理をしている。これは、直前の縦揺れの山や横揺れの山を検出してから次の縦揺れの山や横揺れの山が検出されるまでの時間が長くなったとき、プレイヤがコントローラ7を装着または把持して足踏みしていないと判断するための処理であり、最長時間VtmaxおよびHtmaxの値は処理周期等に応じて当該判断の閾値を設定すればよい。上述した値の設定例(Vtmax=20、Htmax=40)は、極大値を検出する処理が1/200秒毎に行われる場合の一例である。
また、上述した歩数算出処理においては、縦揺れの山を検出した際の経過時間Vtが最短時間Vtminより短い場合や、横揺れの山を検出した際の経過時間Htが最短時間Htminより短い場合、経過時間VtおよびHtをそれぞれ最短時間VtminおよびHtminに変更して処理している。これは、プレイヤがコントローラ7を装着または把持して足踏みする状態を前提にするとあり得ない極大値が検出された場合の対応であり、最短時間VtminおよびHtminの値は処理周期等に応じて当該対応の閾値を設定すればよい。上述した値の設定例(Vtmin=4、Htmin=8)は、極大値を検出する処理が1/200秒毎に行われる場合の一例である。
また、上述した歩数算出処理で算出される歩数Stは、仮想ゲーム空間におけるプレイヤキャラクタPCが2歩移動するモーション(例えば、プレイヤキャラクタPCが右足を踏み出してから左足を踏み出して再び右足を踏み出すまでのモーション)を1Stとしたパラメータである。そして、この歩数Stの定義に応じて、目標値VsdおよびHsdを算出する際の第1の係数Mおよび第2の係数Nも設定される。したがって、目標値VsdおよびHsdを算出する際の第1の係数Mおよび第2の係数Nは、それぞれ上記歩数Stの定義に応じて設定すればよい。例えば、仮想ゲーム空間におけるプレイヤキャラクタPCが1歩移動するモーションを1Stとする場合、目標値Vsdを算出する際の第1の係数Mを0.5、目標値Hsdを算出する際の第2の係数Nを1.0に設定すればよい。
また、上述した歩数算出処理においては、加速度センサ701から得られる3軸方向の加速度をそれぞれ示す加速度データを用いているが、2軸方向の加速度をそれぞれ示す加速度データを用いてもかまわない。この場合、当該2軸方向に対して垂直方向へ生じる加速度に対する分析ができなくなるが、当該垂直方向のみに加速度が生じるような状態が非常に希であるために、2軸方向の加速度データを用いても同様の処理が可能となる。
また、上述した歩数算出処理では、プレイヤがコントローラ7を装着または把持した状態で足踏みする歩数を計測する例を用いた。しかしながら、本発明の歩数算出処理は、コントローラ7を装着または把持した状態で、プレイヤが現実に歩行、ジョギング、ランニング等をする歩数を計測できることは言うまでもない。
また、上述した歩数算出処理は、算出された歩数Stがゲームパラメータに利用されてプレイヤキャラクタPCが移動する例を示したが、他の処理に利用されてもかまわない。例えば、上述した歩数算出処理で算出された歩数Stの値をプレイヤの累積歩数として所定の表示装置に表示すれば、単純な歩数計として利用できる。また、上述した歩数算出処理で算出された歩数Stや単位時間あたりの歩数を示す縦揺れスピードVsおよび横揺れスピードHsを、プレイヤキャラクタPCの動作に関する他のゲームパラメータとして用いてもかまわない。
また、上述した説明では、据置型のゲーム装置本体5で歩数算出処理を行う例を説明したが、携帯ゲーム装置にも適用することができる。例えば、携帯ゲーム装置の本体に加速度センサを搭載し、当該本体をユーザが装着または把持して足踏み、歩行、ジョギング、ランニング等をときに、当該加速度センサの出力を用いて歩数算出処理を実行する。そして、算出された歩数Stの値を携帯ゲーム装置に設けられた表示装置に表示したり、歩数Stを用いたゲーム処理を携帯ゲーム装置で行ったりする。このように本願発明を適用することで、携帯ゲーム装置等を歩数計として用いたり、ゲームを行ったりするには好適である。
また、上述した説明では、ゲーム装置本体5へ別体のコントローラ7から加速度データを送信し、ゲーム装置本体5内で当該加速度データを用いてリアルタイムに歩数を算出する例を示したが、他の態様で歩数を算出してもかまわない。例えば、コントローラ7内に加速度データを時系列順に所定時間分記録する記録手段を搭載し、コントローラ7の記録手段に蓄積された所定時間分の加速度データを適宜ゲーム装置本体5に読み出して歩数算出処理を行ってもかまわない。このように、コントローラ7に所定時間分の加速度データを記録可能に構成することによって、ユーザがコントローラ7を持ち出し、その持ち出した際の加速度データを後でゲーム装置本体5内に読み込むことによって、持ち出した際のユーザの歩数等を算出することが可能となる。
また、上述した説明では、コントローラ7からゲーム装置本体5へ加速度データを送信する例を示したが、他のデータをゲーム装置本体5へ送信してもかまわない。例えば、コントローラ7内で歩数Stや歩数Stを算出するまでの途中の情報を算出し、当該算出された情報を示すデータをゲーム装置本体5へ送信してもかまわない。また、上述したようにコントローラ7に所定時間分のデータが記録可能に構成されている場合、上記歩数Stや歩数Stを算出するまでの途中の情報をコントローラ7内に記録すれば、同様にゲーム装置本体5で適宜情報を読み出す歩数算出処理が可能となる。
また、上述した説明では、据置型や携帯型のゲーム装置に本願発明を適用した例を説明したが、加速度センサを備えた入力装置によって操作される一般的なパーソナルコンピュータ等の情報処理装置や加速度センサが搭載された本体を有する情報処理装置にも適用することができる。例えば、前者の情報処理装置では、入力装置の加速度センサから出力される加速度データに応じて、情報処理装置が入力装置を装着または把持しているユーザの歩数を算出する等、入力装置に生じる加速度に基づいて様々な歩数算出処理を行うことができる。また、後者の情報処理装置は、本体に加わる加速度を検出する加速度センサを搭載し、当該加速度センサから出力される加速度データに応じた歩数算出処理を実行する情報処理装置であればよく、例えば一般的なパーソナルコンピュータ、携帯電話機、PDA(Personal Digital Assistant)等のデバイスにも適用することができる。
例えば、他の電話機との間で無線通信する通信部を備えた携帯電話機の場合には、携帯電話機本体に加速度センサが搭載される。そして、携帯電話機を装着または把持してユーザが足踏み、歩行、ジョギング、ランニング等をしたときに、携帯電話機に搭載された加速度センサからの出力値を用いて歩数算出処理を実行する。このように本願発明を適用することで、携帯電話機等を携帯するユーザの歩数を計測するには好適である。
また、上述した説明では、コントローラ7とゲーム装置本体5とが無線通信によって接続された態様を用いたが、コントローラ7とゲーム装置本体5とがケーブルを介して電気的に接続されてもかまわない。この場合、コントローラ7に接続されたケーブルをゲーム装置本体5の接続端子に接続する。
また、上述したコントローラ7の形状や、それらに設けられている操作部72の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。また、上述した処理で用いられる係数、判定値、数式、処理順序等は、単なる一例に過ぎず他の値や数式や処理順序であっても、本発明を実現できることは言うまでもない。
また、本発明の歩数算出プログラムは、光ディスク4等の外部記憶媒体を通じてゲーム装置本体5に供給されるだけでなく、有線または無線の通信回線を通じてゲーム装置本体5に供給されてもよい。また、歩数算出プログラムは、ゲーム装置本体5内部の不揮発性記憶装置に予め記録されていてもよい。なお、歩数算出プログラムを記憶する情報記憶媒体としては、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体の他に、不揮発性半導体メモリでもよい。
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示にすぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。
本発明に係る歩数算出プログラム、歩数算出装置、および歩数算出システムは、加速度センサから出力されるデータを用いてユーザの歩数を正確に判定することができ、ゲームコントローラ等の入力装置に与えられる動作に応じてゲーム処理、歩数計測、および他の情報処理等を行うプログラム、装置、およびシステムや、本体に与えられる動作に応じてゲーム処理、歩数計測、および他の情報処理等を行うプログラム、装置、およびシステムとして有用である。
本発明の一実施形態に係るゲームシステム1を説明するための外観図 図1のゲーム装置本体5の機能ブロック図 図1のコントローラ7の上面後方から見た斜視図 図3のコントローラ7を下面前方から見た斜視図 図3のコントローラ7の上筐体を外した状態を示す斜視図 図4のコントローラ7の下筐体を外した状態を示す斜視図 図3のコントローラ7の構成を示すブロック図 図3のコントローラ7を用いてゲーム操作するときの状態を概説する図解図 コントローラ7に縦揺れが生じる場合にコントローラ7に作用する重力方向の加速度の波形の一例を示す図 コントローラ7に横揺れが生じる場合にコントローラ7に作用する水平方向の加速度の波形の一例を示す図 プレイヤの足踏み動作に応じてモニタ2に表示されるゲーム画像の一例を示す図 ゲーム装置本体5のメインメモリに記憶される主なデータを示す図 ゲーム装置本体5において実行されるゲーム処理の流れの一例を示すフローチャート 図12におけるステップ45の縦揺れスピードVsを算出する処理の一例の詳細な動作を示すサブルーチン 図12におけるステップ46の横揺れスピードHsを算出する処理の一例の詳細な動作を示すサブルーチン コントローラ7に縦揺れが生じている状態における重力方向成分Vwの絶対値Vwaの変化の一例を示すグラフ コントローラ7に横揺れが生じている状態における水平方向成分ベクトルHvecの大きさHwaの変化の一例を示すグラフ ゲーム装置本体5において実行されるゲーム処理の流れの他の例を示すフローチャート 図12におけるステップ45または図16におけるステップ125の縦揺れスピードVsを算出する処理の他の例の詳細な動作を示すサブルーチン 図12におけるステップ46または図16におけるステップ126の横揺れスピードHsを算出する処理の他の例の詳細な動作を示すサブルーチン 直前の絶対値Vwaの極大値から次に到来する絶対値Vwaの極大値までの時間間隔VTを予測する一例を示す図
符号の説明
1…ゲームシステム
2…モニタ
2a、706…スピーカ
3…ゲーム装置
4…光ディスク
5…ゲーム装置本体
10…CPU
11…システムLSI
12…外部メインメモリ
13…ROM/RTC
14…ディスクドライブ
15…AV−IC
16…AVコネクタ
17…フラッシュメモリ
18…無線通信モジュール
19…無線コントローラモジュール
20…拡張コネクタ
21…外部メモリカード用コネクタ
22、23…アンテナ
24…電源ボタン
25…リセットボタン
26…イジェクトボタン
31…入出力プロセッサ
32…GPU
33…DSP
34…VRAM
35…内部メインメモリ
7…コントローラ
71…ハウジング
72…操作部
73…コネクタ
74…撮像情報演算部
741…赤外線フィルタ
742…レンズ
743…撮像素子
744…画像処理回路
75…通信部
751…マイコン
752…メモリ
753…無線モジュール
754…アンテナ
700…基板
701…加速度センサ
702…LED
704…バイブレータ
707…サウンドIC
708…アンプ
8…マーカ

Claims (21)

  1. 所定の筐体に加わる加速度を検出する加速度センサから出力される加速度データを用いて、当該筐体を携帯するユーザの歩数を算出する装置のコンピュータで実行される歩数算出プログラムであって、
    前記コンピュータを、
    前記加速度データを繰り返し取得する加速度データ取得手段と、
    前記加速度データ取得手段が取得した加速度データを用いて、前記筐体における重力方向に作用する重力方向加速度を算出する重力方向加速度算出手段と、
    前記加速度データ取得手段が取得した加速度データを用いて、前記筐体における重力方向に対して垂直な水平方向に作用する水平方向加速度を算出する水平方向加速度算出手段と、
    第1の係数を用いて前記重力方向加速度の変化に応じた第1歩数を算出する第1歩数算出手段と、
    第2の係数を用いて前記水平方向加速度の変化に応じた第2歩数を算出する第2歩数算出手段と、
    前記第1歩数および前記第2歩数を比較して、大きい一方をユーザの歩数として選択する歩数選択手段として機能させ
    前記第1の係数および前記第2の係数は、前記水平方向加速度の増減する周期が前記重力方向加速度の増減する周期の2倍であることにしたがって決められる値である、歩数算出プログラム。
  2. 所定の筐体に加わる加速度を検出する加速度センサから出力される加速度データを用いて、当該筐体を携帯するユーザの歩数を算出する装置のコンピュータで実行される歩数算出プログラムであって、
    前記コンピュータを、
    前記加速度データを繰り返し取得する加速度データ取得手段と、
    前記加速度データ取得手段が取得した加速度データを用いて、前記筐体における重力方向に作用する重力方向加速度を算出する重力方向加速度算出手段と、
    前記加速度データ取得手段が取得した加速度データを用いて、前記筐体における重力方向に対して垂直な水平方向に作用する水平方向加速度を算出する水平方向加速度算出手段と、
    第1の係数を用いて前記重力方向加速度の変化に応じた第1歩数を算出する第1歩数算出手段と、
    第2の係数を用いて前記水平方向加速度の変化に応じた第2歩数を算出する第2歩数算出手段と、
    所定の条件に基づいて、前記第1歩数および前記第2歩数の一方をユーザの歩数として選択する歩数選択手段として機能させ、
    前記歩数選択手段は、
    前記重力方向加速度が増減する第1振幅を検出する第1振幅検出手段と、
    前記水平方向加速度が増減する第2振幅を検出する第2振幅検出手段と、
    前記第1振幅と前記第2振幅との比率を算出する比率算出手段とを含み、
    前記歩数選択手段は、前記第1振幅が前記第2振幅の所定比率より大きければ前記第1歩数を選択して採用し、前記第1振幅が前記第2振幅の所定比率以下であれば前記第2歩数を選択して採用し、
    前記第1の係数および前記第2の係数は、前記水平方向加速度の増減する周期が前記重力方向加速度の増減する周期の2倍であることにしたがって決められる値である、歩数算出プログラム。
  3. 前記加速度データ取得手段が取得した加速度データを用いて、前記筐体における重力方向を算出する重力方向算出手段として、さらに前記コンピュータを機能させ、
    前記重力方向加速度算出手段は、前記重力方向算出手段が算出した重力方向に基づいて、前記加速度データ取得手段が取得した加速度データが示す加速度の重力方向の成分を前記重力方向加速度として算出し、
    前記水平方向加速度算出手段は、前記重力方向算出手段が算出した重力方向に基づいて、前記加速度データ取得手段が取得した加速度データが示す加速度の水平方向の成分を前記水平方向加速度として算出する、請求項1または2に記載の歩数算出プログラム。
  4. 前記第1歩数算出手段は、前記重力方向加速度が増減する周期に応じて、前記第1歩数を算出し、
    前記第2歩数算出手段は、前記水平方向加速度が増減する周期に応じて、前記第2歩数を算出する、請求項3に記載の歩数算出プログラム。
  5. 前記第1歩数算出手段は、前記重力方向加速度が増減する周期に基づいて算出された単位時間あたりの歩数に、所定の割合で追従する歩数を前記第1歩数として算出し、
    前記第2歩数算出手段は、前記水平方向加速度が増減する周期に基づいて算出された単位時間あたりの歩数に、所定の割合で追従する歩数を前記第2歩数として算出する、請求項4に記載の歩数算出プログラム。
  6. 前記第1歩数算出手段は、前記重力方向加速度が増減する周期が所定の閾値より長い場合、前回の処理で算出された前記第1歩数を減衰させる第1減衰手段を含み、
    前記第2歩数算出手段は、前記水平方向加速度が増減する周期が所定の閾値より長い場合、前回の処理で算出された前記第2歩数を減衰させる第2減衰手段を含む、請求項4に記載の歩数算出プログラム。
  7. 前記第1歩数算出手段は、前記重力方向加速度が増減する極大値を検出する第1極大値検出手段を含み、
    前記第2歩数算出手段は、前記水平方向加速度が増減する極大値を検出する第2極大値検出手段を含み、
    前記第1歩数算出手段は、前記第1極大値検出手段が検出した極大値間の時間間隔に応じて、前記第1歩数を算出し、
    前記第2歩数算出手段は、前記第2極大値検出手段が検出した極大値間の時間間隔に応じて、前記第2歩数を算出する、請求項4に記載の歩数算出プログラム。
  8. 記第1歩数算出手段は、前記第1の係数を前記第1極大値検出手段が検出した極大値間の時間間隔で除算することによって前記第1歩数を算出し、
    前記第2歩数算出手段は、前記第2の係数を前記第2極大値検出手段が検出した極大値間の時間間隔で除算することによって前記第2歩数を算出し、
    前記第2の係数は、前記第1の係数の2倍である、請求項に記載の歩数算出プログラム。
  9. 前記第1極大値検出手段は、前記重力方向加速度の絶対値が増減する極大値を検出し、
    前記第2極大値検出手段は、前記水平方向加速度の大きさが増減する極大値を検出する、請求項に記載の歩数算出プログラム。
  10. 前記第1極大値検出手段は、前記重力方向加速度が増減する極大値のうち所定の基準値以上のもののみを検出し、
    前記第2極大値検出手段は、前記水平方向加速度が増減する極大値のうち所定の基準値以上のもののみを検出する、請求項に記載の歩数算出プログラム。
  11. 前記第1歩数算出手段は、
    前記重力方向加速度が増減する極大値を検出する第1極大値検出手段と、
    前記重力方向加速度の大きさに応じて、前記第1極大値検出手段が極大値を直前に検出した時点から次の極大値を検出するまでの時間間隔を予測する第1時間間隔予測手段とを含み、
    前記第2歩数算出手段は、
    前記水平方向加速度が増減する極大値を検出する第2極大値検出手段と、
    前記水平方向加速度の大きさに応じて、前記第2極大値検出手段が極大値を直前に検出した時点から次の極大値を検出するまでの時間間隔を予測する第2時間間隔予測手段とを含み、
    前記第1歩数算出手段は、前記第1時間間隔予測手段が予測した時間間隔に応じて、前記第1歩数を算出し、
    前記第2歩数算出手段は、前記第2時間間隔予測手段が予測した時間間隔に応じて、前記第2歩数を算出する、請求項4に記載の歩数算出プログラム。
  12. 前記第1時間間隔予測手段は、前記第1極大値検出手段が直前に検出した極大値の大きさと、前記重力方向加速度の値の変化量とを用いて、前記時間間隔を予測し、
    前記第2時間間隔予測手段は、前記第2極大値検出手段が直前に検出した極大値の大きさと、前記水平方向加速度の値の変化量とを用いて、前記時間間隔を予測する、請求項1に記載の歩数算出プログラム。
  13. 前記歩数選択手段は、選択して採用した前記第1歩数または前記第2歩数を順次累積して累積歩数を算出する累積歩数算出手段を含む、請求項1乃至3の何れか1つに記載の歩数算出プログラム。
  14. 前記重力方向算出手段は、前記加速度データ取得手段が取得した加速度データが示す加速度ベクトルに所定の割合で追従するベクトルの方向を、前記筐体における重力方向として算出する、請求項3に記載の歩数算出プログラム。
  15. 前記重力方向加速度算出手段は、前記重力方向算出手段が算出した重力方向に基づいて、前記加速度データ取得手段が取得した加速度データが示す加速度ベクトルから前記追従するベクトルを減算した後の重力方向の成分を前記重力方向加速度として算出し、
    前記水平方向加速度算出手段は、前記重力方向算出手段が算出した重力方向に基づいて、前記加速度データ取得手段が取得した加速度データが示す加速度ベクトルから前記追従するベクトルを減算した後の水平方向の成分を前記水平方向加速度として算出する、請求項1に記載の歩数算出プログラム。
  16. 携帯するユーザの歩数を算出する歩数算出装置であって、
    装置本体に加わる加速度を検出して加速度データを出力する加速度センサと、
    前記装置本体に設けられた表示部と、
    前記加速度データを繰り返し取得する加速度データ取得手段と、
    前記加速度データ取得手段が取得した加速度データを用いて、前記装置本体における重力方向に作用する重力方向加速度を算出する重力方向加速度算出手段と、
    前記加速度データ取得手段が取得した加速度データを用いて、前記装置本体における重力方向に対して垂直な水平方向に作用する水平方向加速度を算出する水平方向加速度算出手段と、
    第1の係数を用いて前記重力方向加速度の変化に応じた第1歩数を算出する第1歩数算出手段と、
    第2の係数を用いて前記水平方向加速度の変化に応じた第2歩数を算出する第2歩数算出手段と、
    前記第1歩数および前記第2歩数を比較して、大きい一方をユーザの歩数として選択する歩数選択手段と、
    前記歩数選択手段が選択した歩数に応じた情報を前記表示部に表示する表示制御手段とを備え
    前記第1の係数および前記第2の係数は、前記水平方向加速度の増減する周期が前記重力方向加速度の増減する周期の2倍であることにしたがって決められる値である、歩数算出装置。
  17. 携帯するユーザの歩数を算出する歩数算出装置であって、
    装置本体に加わる加速度を検出して加速度データを出力する加速度センサと、
    前記装置本体に設けられた表示部と、
    前記加速度データを繰り返し取得する加速度データ取得手段と、
    前記加速度データ取得手段が取得した加速度データを用いて、前記装置本体における重力方向に作用する重力方向加速度を算出する重力方向加速度算出手段と、
    前記加速度データ取得手段が取得した加速度データを用いて、前記装置本体における重力方向に対して垂直な水平方向に作用する水平方向加速度を算出する水平方向加速度算出手段と、
    第1の係数を用いて前記重力方向加速度の変化に応じた第1歩数を算出する第1歩数算出手段と、
    第2の係数を用いて前記水平方向加速度の変化に応じた第2歩数を算出する第2歩数算出手段と、
    所定の条件に基づいて、前記第1歩数および前記第2歩数の一方をユーザの歩数として選択する歩数選択手段と、
    前記歩数選択手段が選択した歩数に応じた情報を前記表示部に表示する表示制御手段とを備え、
    前記歩数選択手段は、
    前記重力方向加速度が増減する第1振幅を検出する第1振幅検出手段と、
    前記水平方向加速度が増減する第2振幅を検出する第2振幅検出手段と、
    前記第1振幅と前記第2振幅との比率を算出する比率算出手段とを含み、
    前記歩数選択手段は、前記第1振幅が前記第2振幅の所定比率より大きければ前記第1歩数を選択して採用し、前記第1振幅が前記第2振幅の所定比率以下であれば前記第2歩数を選択して採用し、
    前記第1の係数および前記第2の係数は、前記水平方向加速度の増減する周期が前記重力方向加速度の増減する周期の2倍であることにしたがって決められる値である、歩数算出装置。
  18. ユーザによって携帯可能な携帯機と、有線または無線通信を介して当該携帯機と接続される本体機とを含み、当該携帯機を携帯するユーザの歩数を算出する歩数算出システムであって、
    前記携帯機本体に加わる加速度を検出して加速度データを出力する加速度センサと、
    前記加速度センサから前記加速度データを繰り返し取得する加速度データ取得手段と、
    前記加速度データ取得手段が取得した加速度データを用いて、前記携帯機における重力方向に作用する重力方向加速度を算出する重力方向加速度算出手段と、
    前記加速度データ取得手段が取得した加速度データを用いて、前記携帯機における重力方向に対して垂直な水平方向に作用する水平方向加速度を算出する水平方向加速度算出手段と、
    第1の係数を用いて前記重力方向加速度の変化に応じた第1歩数を算出する第1歩数算出手段と、
    第2の係数を用いて前記水平方向加速度の変化に応じた第2歩数を算出する第2歩数算出手段と、
    前記第1歩数および前記第2歩数を比較して、大きい一方をユーザの歩数として選択する歩数選択手段と、
    前記歩数選択手段が選択した歩数に応じた情報を表示装置に表示する表示制御手段とを備え
    前記第1の係数および前記第2の係数は、前記水平方向加速度の増減する周期が前記重力方向加速度の増減する周期の2倍であることにしたがって決められる値である、歩数算出システム。
  19. ユーザによって携帯可能な携帯機と、有線または無線通信を介して当該携帯機と接続される本体機とを含み、当該携帯機を携帯するユーザの歩数を算出する歩数算出システムであって、
    前記携帯機本体に加わる加速度を検出して加速度データを出力する加速度センサと、
    前記加速度センサから前記加速度データを繰り返し取得する加速度データ取得手段と、
    前記加速度データ取得手段が取得した加速度データを用いて、前記携帯機における重力方向に作用する重力方向加速度を算出する重力方向加速度算出手段と、
    前記加速度データ取得手段が取得した加速度データを用いて、前記携帯機における重力方向に対して垂直な水平方向に作用する水平方向加速度を算出する水平方向加速度算出手段と、
    第1の係数を用いて前記重力方向加速度の変化に応じた第1歩数を算出する第1歩数算出手段と、
    第2の係数を用いて前記水平方向加速度の変化に応じた第2歩数を算出する第2歩数算出手段と、
    所定の条件に基づいて、前記第1歩数および前記第2歩数の一方をユーザの歩数として選択する歩数選択手段と、
    前記歩数選択手段が選択した歩数に応じた情報を表示装置に表示する表示制御手段とを備え、
    前記歩数選択手段は、
    前記重力方向加速度が増減する第1振幅を検出する第1振幅検出手段と、
    前記水平方向加速度が増減する第2振幅を検出する第2振幅検出手段と、
    前記第1振幅と前記第2振幅との比率を算出する比率算出手段とを含み、
    前記歩数選択手段は、前記第1振幅が前記第2振幅の所定比率より大きければ前記第1歩数を選択して採用し、前記第1振幅が前記第2振幅の所定比率以下であれば前記第2歩数を選択して採用し、
    前記第1の係数および前記第2の係数は、前記水平方向加速度の増減する周期が前記重力方向加速度の増減する周期の2倍であることにしたがって決められる値である、歩数算出システム。
  20. 所定の筐体に加わる加速度を検出する加速度センサから出力される加速度データを用いて、当該筐体を携帯するユーザの歩数を算出する歩数算出方法であって、
    前記加速度データを繰り返し取得する加速度データ取得ステップと、
    前記加速度データ取得ステップにおいて取得された加速度データを用いて、前記筐体における重力方向に作用する重力方向加速度を算出する重力方向加速度算出ステップと、
    前記加速度データ取得ステップにおいて取得された加速度データを用いて、前記筐体における重力方向に対して垂直な水平方向に作用する水平方向加速度を算出する水平方向加速度算出ステップと、
    第1の係数を用いて前記重力方向加速度の変化に応じた第1歩数を算出する第1歩数算出ステップと、
    第2の係数を用いて前記水平方向加速度の変化に応じた第2歩数を算出する第2歩数算出ステップと、
    前記第1歩数および前記第2歩数を比較して、大きい一方をユーザの歩数として選択する歩数選択ステップとを含み、
    前記第1の係数および前記第2の係数は、前記水平方向加速度の増減する周期が前記重力方向加速度の増減する周期の2倍であることにしたがって決められる値である、歩数算出方法。
  21. 所定の筐体に加わる加速度を検出する加速度センサから出力される加速度データを用いて、当該筐体を携帯するユーザの歩数を算出する歩数算出方法であって、
    前記加速度データを繰り返し取得する加速度データ取得ステップと、
    前記加速度データ取得ステップにおいて取得された加速度データを用いて、前記筐体における重力方向に作用する重力方向加速度を算出する重力方向加速度算出ステップと、
    前記加速度データ取得ステップにおいて取得された加速度データを用いて、前記筐体における重力方向に対して垂直な水平方向に作用する水平方向加速度を算出する水平方向加速度算出ステップと、
    第1の係数を用いて前記重力方向加速度の変化に応じた第1歩数を算出する第1歩数算出ステップと、
    第2の係数を用いて前記水平方向加速度の変化に応じた第2歩数を算出する第2歩数算出ステップと、
    所定の条件に基づいて、前記第1歩数および前記第2歩数の一方をユーザの歩数として選択する歩数選択ステップとを含み、
    前記歩数選択ステップは、
    前記重力方向加速度が増減する第1振幅を検出する第1振幅検出ステップと、
    前記水平方向加速度が増減する第2振幅を検出する第2振幅検出ステップと、
    前記第1振幅と前記第2振幅との比率を算出する比率算出ステップとを含み、
    前記歩数選択ステップでは、前記第1振幅が前記第2振幅の所定比率より大きければ前記第1歩数が選択されて採用され、前記第1振幅が前記第2振幅の所定比率以下であれば前記第2歩数が選択されて採用され
    前記第1の係数および前記第2の係数は、前記水平方向加速度の増減する周期が前記重力方向加速度の増減する周期の2倍であることにしたがって決められる値である、歩数算出方法。
JP2007310903A 2007-11-30 2007-11-30 歩数算出プログラム、歩数算出装置、歩数算出システム、および歩数算出方法 Active JP5131908B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2007310903A JP5131908B2 (ja) 2007-11-30 2007-11-30 歩数算出プログラム、歩数算出装置、歩数算出システム、および歩数算出方法
US12/068,054 US7684958B2 (en) 2007-11-30 2008-02-01 Storage medium having step count calculation program stored therein, step count calculation apparatus, and step count calculation system
US12/654,114 US7966148B2 (en) 2007-11-30 2009-12-10 Storage medium having step count calculation program stored therein, step count calculation apparatus, and step count calculation system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007310903A JP5131908B2 (ja) 2007-11-30 2007-11-30 歩数算出プログラム、歩数算出装置、歩数算出システム、および歩数算出方法

Publications (2)

Publication Number Publication Date
JP2009134572A JP2009134572A (ja) 2009-06-18
JP5131908B2 true JP5131908B2 (ja) 2013-01-30

Family

ID=40676629

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007310903A Active JP5131908B2 (ja) 2007-11-30 2007-11-30 歩数算出プログラム、歩数算出装置、歩数算出システム、および歩数算出方法

Country Status (2)

Country Link
US (2) US7684958B2 (ja)
JP (1) JP5131908B2 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5294442B2 (ja) * 2006-09-13 2013-09-18 任天堂株式会社 ゲーム装置およびゲームプログラム
US20100292007A1 (en) * 2007-06-26 2010-11-18 Nintendo Of America Inc. Systems and methods for control device including a movement detector
JP5527940B2 (ja) 2008-04-16 2014-06-25 任天堂株式会社 ゲームシステム、ゲームプログラム、ゲーム装置、サーバおよびゲーム方法
TWI356722B (en) * 2008-05-12 2012-01-21 Princeton Technology Corp Game controller with speaker
WO2010013745A1 (ja) * 2008-07-29 2010-02-04 京セラ株式会社 携帯電子機器
JP4644274B2 (ja) * 2008-07-29 2011-03-02 京セラ株式会社 携帯機器、歩数カウント方法および重力方向検出方法
US10564178B2 (en) * 2012-12-21 2020-02-18 Qualcomm Incorporated Swing compensation in step detection
JP6496996B2 (ja) * 2013-11-05 2019-04-10 セイコーエプソン株式会社 運動諸量算出方法、運動諸量算出装置及び携帯機器
CN104949685B (zh) * 2015-05-22 2018-04-27 邓伟廷 能在多模式多部位实现精确计步的方法及其装置
JP6804087B2 (ja) * 2017-04-05 2020-12-23 株式会社タニタ 歩数計測プログラム及び携帯端末
CN110168315B (zh) * 2017-08-23 2021-10-22 华为技术有限公司 基于加速信息的足部计步方法、装置及设备
JP2020113098A (ja) * 2019-01-15 2020-07-27 日本電信電話株式会社 歩数計測装置および方法、並びにプログラム
JP6770145B1 (ja) 2019-07-05 2020-10-14 任天堂株式会社 情報処理プログラム、情報処理システム、情報処理装置、および、情報処理方法
JP6670028B1 (ja) 2019-07-18 2020-03-18 任天堂株式会社 情報処理システム、情報処理プログラム、情報処理装置、および情報処理方法
US11273367B1 (en) * 2019-09-24 2022-03-15 Wayne Hughes Beckett Non-CRT pointing device
JP7162911B2 (ja) * 2020-11-24 2022-10-31 株式会社タニタ 歩数計測プログラム及び携帯端末

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5574479A (en) 1994-01-07 1996-11-12 Selectech, Ltd. Optical system for determining the roll orientation of a remote unit relative to a base unit
GB2289756B (en) 1994-05-26 1998-11-11 Alps Electric Co Ltd Space coordinates detecting device and input apparatus using same
JP3256472B2 (ja) * 1996-09-11 2002-02-12 セイコーインスツルメンツ株式会社 Gps受信装置
US6301964B1 (en) * 1997-10-14 2001-10-16 Dyhastream Innovations Inc. Motion analysis system
US20010030667A1 (en) 2000-04-10 2001-10-18 Kelts Brett R. Interactive display interface for information objects
JP3772887B2 (ja) 2000-10-16 2006-05-10 オムロンヘルスケア株式会社 体動検出装置
JP3543778B2 (ja) * 2000-10-16 2004-07-21 オムロンヘルスケア株式会社 歩数計
US6982697B2 (en) 2002-02-07 2006-01-03 Microsoft Corporation System and process for selecting objects in a ubiquitous computing environment
JP4243684B2 (ja) * 2003-10-07 2009-03-25 独立行政法人産業技術総合研究所 歩行動作検出処理装置および歩行動作検出処理方法
KR101192514B1 (ko) 2004-04-30 2012-10-17 힐크레스트 래보래토리스, 인크. 틸트 보상과 향상된 사용성을 갖는 3d 포인팅 장치
WO2006014810A2 (en) 2004-07-29 2006-02-09 Kevin Ferguson A human movement measurement system
JP4967368B2 (ja) * 2006-02-22 2012-07-04 ソニー株式会社 体動検出装置、体動検出方法および体動検出プログラム
JP4151983B2 (ja) * 2006-04-27 2008-09-17 任天堂株式会社 移動方向算出装置および移動方向算出プログラム
FI122712B (fi) * 2007-07-11 2012-06-15 Vti Technologies Oy Menetelmä ja laite liikkujan etenemisen mittaamiseksi

Also Published As

Publication number Publication date
US20090144020A1 (en) 2009-06-04
JP2009134572A (ja) 2009-06-18
US7966148B2 (en) 2011-06-21
US7684958B2 (en) 2010-03-23
US20100121605A1 (en) 2010-05-13

Similar Documents

Publication Publication Date Title
JP5131908B2 (ja) 歩数算出プログラム、歩数算出装置、歩数算出システム、および歩数算出方法
JP4916390B2 (ja) 情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法
JP4668236B2 (ja) 情報処理プログラムおよび情報処理装置
JP5430246B2 (ja) ゲーム装置およびゲームプログラム
JP5582629B2 (ja) 情報処理装置および情報処理プログラム
US7716008B2 (en) Acceleration data processing program, and storage medium, and acceleration data processing apparatus for use with the same
US8096881B2 (en) Storage medium storing game program and game apparatus
JP5173174B2 (ja) ゲーム装置、ゲームプログラム、ゲームシステム、およびゲーム処理方法
JP4988273B2 (ja) ゲームプログラムおよびゲーム装置
JP5420824B2 (ja) ゲーム装置およびゲームプログラム
JP5429918B2 (ja) 情報処理プログラムおよび情報処理装置
JP4919887B2 (ja) 画像処理プログラムおよび画像処理装置
JP5358168B2 (ja) ゲーム装置およびゲームプログラム
JP2013175208A (ja) 情報処理装置および情報処理プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101020

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20110902

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20111111

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120323

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120327

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120509

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120717

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120830

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20121101

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121102

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151116

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5131908

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250