1…アダプタ、3,4…カートリッジ、5…テレビジョンモニタ、6,11…アクションセンサ、13…プロセッサ、15…外部メモリ、19,27,44…EEPROM、21,23…RFモジュール、24…アンテナユニット、29…加速度センサ、31…歩数計、17,25,48,52…MCU、35…LCD、20,37,50…スイッチ部、33…LCDドライバ、42…USBコントローラ、56…RTC。
以下、本発明の実施の形態について、図面を参照しながら説明する。なお、図中、同一または相当部分については同一の参照符号を付してその説明を援用する。
本実施の形態では、プレイヤキャラクタやトレーナキャラクタ等が配置される仮想空間はテレビジョンモニタに表示される。ただし、表示装置は、テレビジョンモニタ5に限定されず、様々な種類のディスプレイを使用できる。
(実施の形態1)
図1は、本発明の実施の形態1による運動支援システムの全体構成を示す外観斜視図である。図1を参照して、この運動支援システムは、アダプタ1、カートリッジ3、アクションセンサ11及びテレビジョンモニタ5を備える。アダプタ1には、カートリッジ3が装着される。また、アダプタ1は、AVケーブル7により、テレビジョンモニタ5に接続される。従って、カートリッジ3が生成したビデオ信号VD及びオーディオ信号AUは、アダプタ1及びAVケーブル7を介してテレビジョンモニタ5に与えられる。
アクションセンサ11は、ユーザ9の胴体又は頭部に装着される。胴体とは、ユーザ9の身体のうち、頭、首及び四肢を除く部分のことである。頭部とは、頭及び首のことである。アクションセンサ11は、LCD(Liquid Crystal Display)35、モード切替ボタン39及び表示切替ボタン41を備える。モード切替ボタン39は、歩数計モードと通信モードとを切り替えるために使用される。歩数計モードは、アクションセンサ11単体で使用され、ユーザ9の歩数を計数するモードである。通信モードは、アクションセンサ11とカートリッジ3とが通信を行い、両者が協働するモードであり、アクションセンサ11をカートリッジ3に対する入力装置として使用するモードである。例えば、アクションセンサ11を通信モードにして、テレビジョンモニタ5に表示された様々な画面(後述の図7〜図13、図15〜図18)を見ながらユーザ9に運動を行わせる。
LCD35は、歩数計モードでの歩数の計数結果及び時刻の表示、通信モードでの時刻の表示、並びにアクションセンサ11の設定情報の表示を切替えて表示するためのものである。表示切替ボタン41はLCD35に表示される情報を切替える際に使用する。
歩数計モードでは、例えば、図2(a)に示すように、ユーザ9は、アクションセンサ11をウエスト付近に装着する。通信モードにおいて、テレビジョンモニタ5を見ながら運動を行う時は、例えば、図2(b)に示すように、ユーザ9は、アクションセンサ11を胸部中央付近に装着する。もちろん、いずれの場合においても、胴体又は頭部の任意の部位に装着可能である。
図3は、図1の運動支援システムの電気的構成を示す図である。図3を参照して、運動支援システムのアクションセンサ11は、RF(Radio Frequency)モジュール23、MCU(Micro Controler Unit)25、EEPROM(Electrically Erasable Programmable Read Only Memory)27、加速度センサ29、歩数計31、LCDドライバ33、LCD35及びスイッチ部37を含む。アダプタ1に装着されるカートリッジ3は、プロセッサ13、外部メモリ15、MCU17、RFモジュール21及びEEPROM19を含む。EEPROM19及び27には、RFモジュール21と23との間の通信に必要な情報が格納される。アダプタ1は、スイッチ部20を含み、スイッチ部20の操作信号はプロセッサ13に入力される。スイッチ部20は、キャンセルキー、エンターキー及び方向キー(上下左右)を含む。
アクションセンサ11の加速度センサ29は、互いに直交する3軸(x,y,z)それぞれの方向の加速度を検出する。
歩数計31は、歩数計モードにおいて、加速度センサ29からの加速度データに基づいて、ユーザ9の歩数を計数し、歩数データをEEPROM27に格納すると共に、LCDドライバ33に与える。LCDドライバ33は、受け取った歩数データをLCD35に表示する。
一方、歩数計31は、通信モードにおいて、MCU25に対して、加速度センサ29からの加速度データ、スイッチ部37の状態及びバッテリ(図示せず)の出力電圧(バッテリ電圧)データvoの送信命令を出す。MCU25からの送信命令を受けて、RFモジュール23は、加速度データ、スイッチ部37の状態及び出力電圧データvoを変調し、カートリッジ3のRFモジュール23へ送信する。なお、歩数計モードでEEPROM27に格納された歩数データは、最初の通信時にアクションセンサ11からカートリッジ3に送信される。
LCDドライバ33は、RTC(Real Time Clock)を有し、時刻情報をLCD35に与えて表示する。スイッチ部37は、モード切替ボタン39及び表示切替ボタン41を含む。歩数計31は、表示切替ボタン41の操作に応答して、LCDドライバ33を制御し、LCD35の表示を切り替える。また、歩数計31は、モード切替ボタン39の操作に応答してモード(歩数計モード又は通信モード)を切り替える。
ここで、本実施の形態では、ユーザ9の左右方向が加速度センサ29のx軸に平行になり(ユーザ9から見て左を正)、ユーザ9の上下方向が加速度センサ29のy軸に平行になり(ユーザ9から見て上を正)、ユーザ9の前後方向が加速度センサ29のz軸に平行になるように(ユーザ9から見て前を正)、アクションセンサ11がユーザに装着されるものとする。
さて、カートリッジ3のプロセッサ13には、外部メモリ15が接続される。外部メモリ15は、ROM、RAM及び/又はフラッシュメモリ等、システムの仕様に応じて必要なものを備える。外部メモリ15は、プログラム領域、画像データ領域、および音声データ領域を含む。プログラム領域には、制御プログラム(アプリケーションプログラムを含む。)が格納される。画像データ領域には、テレビジョンモニタ5に表示される画面を構成するすべての画像データが格納されている。音声データ領域には、音楽、ボイス及び効果音等のための音声データが格納されている。プロセッサ13は、プログラム領域の制御プログラムを実行して、画像データ領域の画像データ及び音声データ領域の音声データを読み出し、必要な処理を施して、ビデオ信号VD及びオーディオ信号AUを生成する。
また、プロセッサ13は、制御プログラムを実行して、MCU17に対して、RFモジュール23と通信して、歩数データ、加速度データ及び出力電圧データvoを取得する命令を出す。RFモジュール21は、MCU17からの命令を受けて、RFモジュール23から歩数データ、加速度データ及び出力電圧データvoを受信し、復調して、MCU17に与える。MCU17は、復調した歩数データ、加速度データ及び出力電圧データvoをプロセッサ13に与える。プロセッサ13は、アクションセンサ11からの加速度データに基づいて、後述する図5のステップS9のエクササイズでテレビジョンモニタ5に表示するための、歩数や活動量の算出、ユーザ9の運動形態の識別を行う。また、プロセッサ13は、受信した出力電圧データvoに基づいて、アクションセンサ11のバッテリの残量をテレビジョンモニタ5に表示する。なお、アクションセンサ11が通信モードの場合にのみ、カートリッジ3はアクションセンサ11と通信可能である。このため、通信モードの場合にのみ、アクションセンサ11は、プロセッサ13への入力装置として機能する。
プロセッサ13は、図示しないが、中央演算処理装置(以下、「CPU」と呼ぶ。)、グラフィックスプロセシングユニット(以下、「GPU」と呼ぶ。)、サウンドプロセシングユニット(以下、「SPU」と呼ぶ。)、ジオメトリエンジン(以下、「GE」と呼ぶ。)、外部インタフェースブロック、メインRAM、及びA/Dコンバータ(以下、「ADC」と呼ぶ。)などを具備する。
CPUは、外部メモリ15に格納されたプログラムを実行して、各種演算やシステム全体の制御を行う。グラフィックス処理に関するCPUの処理として、外部メモリ15に格納されたプログラムを実行して、各オブジェクトの拡大・縮小、回転、及び/又は平行移動のパラメータ、視点座標(カメラ座標)、並びに視線ベクトルの算出等を行う。ここで、1または複数のポリゴン又はスプライトから構成され、同じ拡大・縮小、回転、及び平行移動の変換が適用される単位を「オブジェクト」と呼ぶ。例えば、後述するトレーナキャラクタ43やプレイヤキャラクタ78はオブジェクトの一種である。
GPUは、ポリゴン及びスプライトから構成される三次元イメージをリアルタイムに生成し、アナログのコンポジットビデオ信号VDに変換する。SPUは、PCM(pulse code modulation)波形データ、アンプリチュードデータ、及びメインボリュームデータを生成し、これらをアナログ乗算して、アナログオーディオ信号AUを生成する。GEは、三次元イメージを表示するための幾何演算を実行する。具体的には、GEは、行列積、ベクトルアフィン変換、ベクトル直交変換、透視投影変換、頂点明度/ポリゴン明度計算(ベクトル内積)、及びポリゴン裏面カリング処理(ベクトル外積)などの演算を実行する。
外部インタフェースブロックは、周辺装置(本実施の形態ではMCU17及びスイッチ部20)とのインタフェースであり、24チャンネルのプログラマブルなデジタル入出力(I/O)ポートを含む。ADCは、4チャンネルのアナログ入力ポートに接続され、これらを介して、アナログ入力装置から入力されたアナログ信号をデジタル信号に変換する。メインRAMは、CPUのワーク領域、変数格納領域、および仮想記憶機構管理領域等として利用される。
ここで、本実施の形態では、身体活動の強さを表す単位として、「メッツ」を使用し、身体活動の量を表す単位として、「エクササイズ(Ex)」を使用する。「メッツ」は、身体活動の強さを安静時の何倍に相当するかで表す単位で、座って安静にしている状態が1メッツ、普通歩行が3メッツに相当する。「エクササイズ(Ex)」は、身体活動の強度(メッツ)に身体活動の実施時間(時)を乗じたものである。なお、身体活動の量を活動量と呼ぶこともある。本実施の形態では、特別に明示しないかぎり、活動量の単位にエクササイズ(Ex)を用いる。
ところで、身体活動の量を表す他の指標として、エネルギ消費量がある。エネルギ消費量(kcal)は、1.05×エクササイズ(メッツ・時)×体重(kg)で表すことができる。
次に、歩数計31による運動形態の識別方法を説明する。本実施の形態では三種類の運動形態(歩き、ゆっくりしたランニング、通常のランニング)を識別する。
図4は、図3の歩数計31による運動形態の識別方法の説明図である。図4を参照して、縦軸は加速度センサ29のx及びy軸の加速度ax及びayの合成加速度Axy(=√(ax2+ay2))を示し、横軸は時間tを示す。ユーザ9が静止している場合は、重力加速度のみが検出されるので、合成加速度Axy=1G(9.8m/s2)である。
歩数計31は、合成加速度Axyが、1Gから増加し、閾値ThHを越え、その後に、閾値ThLを下回った場合に、1Gと最小値との差の絶対値Amが所定値C1を越えたか否かを判断する。所定値C1を越えた場合は、ユーザ9がゆっくりしたランニング又は通常のランニングを行ったと判断し、所定値C1以下の場合は、ユーザ9が歩いたと判断する。
さらに、歩数計31は、ユーザがゆっくりしたランニング又は通常のランニングを行ったと判断した場合、合成加速度Axyの連続する最大値間の時間Ttと、所定値C2と、を比較する。この時間Ttが所定値C2より大きい場合は、ユーザがゆっくりしたランニングを行ったと判断し、所定値C2以下の場合は、ユーザが通常のランニングを行ったと判断する。閾値ThH及びThL並びに所定値C1及びC2は、経験的及び実験的に定めることができる
また、歩数計31は、ユーザが歩いたと判断した回数(歩数)、ユーザがゆっくりしたランニングを行ったと判断した回数(歩数)、及び、ユーザが通常のランニングを行ったと判断した回数(歩数)を計数する。これらが歩数データとして、カートリッジ3に送信されるのである。
z軸方向の加速度を考慮しないのは、ここで説明した運動形態の識別方法の場合、次のようなことが発生する可能性があるからである。つまり、歩き始め又は走り始めでは、一歩を示す波形と同様の波形が検出されて、一歩と判断される可能性もあり、しかも、その次の本来の一歩を示す波形も一歩と判断されるので、歩き始め又は走り始めの一歩では、二歩と誤って判断される可能性もあるからである。
プロセッサ13は、アクションセンサ11から与えられた、三種類の運動形態(歩き、ゆっくりしたランニング、通常のランニング)のそれぞれの回数に基づいて、活動量(Ex)を算出する。この場合、それぞれの運動形態における一歩の活動量を予め求めておき、対応する運動形態の回数を乗ずることにより、その運動形態による活動量を算出する。なお、運動形態ごとに一時間の歩数を想定し、運動形態ごとの一歩の時間(単位:時)を求める。そして、この一歩の時間(単位:時)に、対応する運動形態の強度(メッツ)を乗じ、その結果が一歩の活動量(Ex)に相当する。
ところで、プロセッサ13もまた、アクションセンサ11から受信した加速度データに基づいて、歩数計31と同じ方法で、三種類の運動形態(歩き、ゆっくりしたランニング、通常のランニング)を識別する。そして、三種類の運動形態(歩き、ゆっくりしたランニング、通常のランニング)のそれぞれの回数に基づいて、活動量(Ex)を算出する。算出方法は、前記と同じである。
図5は、図3のプロセッサ13のよる処理の遷移を示す図である。図5を参照して、ステップS1にて、プロセッサ13は、テレビジョンモニタ5にタイトル画面を表示する。次に、ステップS3にて、プロセッサ13は、項目を選択するための項目選択画面を表示する。ユーザは、スイッチ部20を操作して、項目選択画面上で所望の項目を選択する。本実施の形態で用意される項目は、「今日の記録」、「エクササイズ」、「ログ」、「サブコンテンツ」、「ユーザ情報変更」及び「システム設定」である。
ステップS5では、プロセッサ13は、ステップS3で選択された項目に応じて、ステップS7、S9、S11、S13、S15又はS17のいずれかに処理を進める。
「今日の記録」項目が選択された後、ステップS7では、プロセッサ13は、今日の活動記録と測定記録を含む記録画面をテレビジョンモニタ5に表示する。具体的には、活動記録は、今日の歩数、今日の活動量(Ex)及び今日の活動量に対応する消費カロリ(kcal)並びにユーザが設定した1日の目標歩数までの歩数を含む。
今日の歩数は、アクションセンサ11から受け取った歩数計モードの歩数データと、通信モードのアクションセンサ11から受け取った加速度に基づきプロセッサ13が算出した歩数データと、の合計値である。今日の活動量は、アクションセンサ11から受け取った歩数計モードの歩数データに基づきプロセッサ13が算出した活動量と、通信モードのアクションセンサ11から受け取った加速度に基づきプロセッサ13が算出した活動量と、それらの合計値と、が表示される。アクションセンサ11から受け取った歩数計モードの歩数データに基づき算出した活動量については、ユーザ9の運動形態(歩き、ゆっくりしたランニング、通常のランニング)ごとに表示される。
測定記録は、今日の体重、腹囲、最高血圧、最低血圧及び心拍数並びにユーザ9が設定した目標体重までの重量及び目標腹囲までの長さを含む。今日の体重、腹囲、最高血圧、最低血圧及び心拍数は、ユーザ9が入力する。
また、記録画面には、今日の活動量と、ユーザ9が設定した一週間の目標活動量までの不足分の活動量と、が並べて表示される。
「エクササイズ」項目が選択された後、ステップS9では、プロセッサ13は、ユーザ9にエクササイズを行わせるための処理及び画面表示を実行する。具体的には次の通りである。
「エクササイズ」項目が選択された直後に、プロセッサ13は、図6のエクササイズ開始画面をテレビジョンモニタ5に表示する。このエクササイズ開始画面は、活動量表示部36を含む。活動量表示部36には、ユーザ9が今日行った活動量と、今日の目標値に対する不足分の活動量と、が表示される。今日の活動量は、アクションセンサ11から受け取った歩数計モードの歩数データに基づきプロセッサ13が算出した今日の活動量と、通信モードのアクションセンサ11から受け取った加速度に基づきプロセッサ13が算出した今日の活動量と、の合計値である。今日の不足分は、ユーザ9が設定した一週間の目標活動量から1日の目標活動量を算出し、その算出結果から今日の活動量を差し引いた値である。また、この画面は、今日の活動量と、ユーザ9が設定した一週間の目標活動量までの不足分の活動量と、が並べて表示される領域38を含む。
また、エクササイズ開始画面は、モード選択のためのアイコン40を含む。モードは、ストレッチ&サーキットモードとトレーニングモードとが用意される。ユーザ9は、スイッチ部20を操作して、所望のモードに対応するアイコン40を選択する。
ストレッチ&サーキットモードは、ストレッチモードとサーキットモードとを含む。そして、最初と最後にストレッチモードが設定され、その間にサーキットモードが設定される。
ストレッチモードでは、プロセッサ13は、図7のストレッチ画面を表示する。プロセッサ13は、この画面中にストレッチ体操を行うトレーナキャラクタ43のアニメーションを表示する。ユーザ9は、トレーナキャラクタ43の動きを見て、トレーナキャラクタ43が行うストレッチ体操を行う。本実施の形態では、トレーナキャラクタ43は、8種類のストレッチ体操を行う。つまり、「肩すくめ・下ろし(4回)」、「胸のはり・すくめ(4回)」、「斜め前屈(左右二回ずつ)」、「太ももの前伸ばし(左右四回ずつ)」、「上体ひねり(左右二回ずつ)」、「足首回し(左右四回ずつ回しを二回)」、「ふくらはぎ伸ばし(左右八回ずつ)」及び「左右開脚(股割り)(左右二回ずつ)」である。
また、プロセッサ13は、トレーナキャラクタ43がストレッチ体操の1動作を何回行ったかを回数表示部49に表示する。図7の例では、トレーナキャラクタ43は、「ふくらはぎ伸ばし」を行っており、回数表示部49には、全8回のうち、トレーナキャラクタ43が「ふくらはぎ伸ばし」を行った回数が表示される。
さらに、プロセッサ13は、アクションセンサ11のバッテリの出力電圧voに基づいて、電池残量表示部45のゲージを制御する。このゲージは、水平に並んだ3つの等長の矩形セグメントからなり、プロセッサ13は、アクションセンサ11のバッテリの出力電圧voに応じて、矩形セグメントの点灯及び消灯を制御する。バッテリの出力電圧voが十分にあるときは全ての矩形セグメントが点灯しており、バッテリの出力電圧voの減少に応じて、左から順に矩形セグメントが消灯する。ユーザ9は、電池残量表示部45を見ることで、アクションセンサ11のバッテリの残量を知ることができる。
具体的には、三つの閾値v0,v1及びv2を設ける。v0>v1>v2である。vo≧v0の場合、全ての矩形セグメントを点灯し、v0>vo≧v1の場合、中央及び右端の矩形セグメントを点灯し、v1>vo≧v2の場合、右端の矩形セグメントを点灯し、vo<v2の場合、全ての矩形セグメントを消灯する。
さらに、プロセッサ13は、アクションセンサ11とカートリッジ3との間の通信状態を通信状態表示部47に表示する。通信状態表示部47は、水平方向に並んだ三本の縦バーを含む。三本のバーは、右のものほど長い。プロセッサ13は、アクションセンサ11とカートリッジ3との間の通信状態に応じて、バーの点灯及び消灯を制御する。プロセッサ13は、通信状態が良好の場合は全てのバーを点灯し、通信状態の程度に応じて、右から順にバーを消灯する。ユーザ9は、通信状態表示部47を見ることで、通信状態を把握できる。具体的には、次の通りである。
プロセッサ13は、1秒間の通信の成否回数により、通信状態の良否を判断する。従って、プロセッサ13は、1秒間の通信の成否回数をカウントする。つまり、通信が成功した場合はカウント値Tcに1を加算し、失敗した場合はカウント値Tcから1を減算する。1/60秒に1回、このカウントを行うので、全て成功した場合、カウント値Tcは60であり、全て失敗した場合はカウント値Tcは0である。
プロセッサ13は、1秒間通信が無い場合若しくは1秒間1回も通信が成功していない場合、つまり、カウント値Tcが0の場合、全てのバーを消灯する。プロセッサ13は、1秒間通信エラーが発生していない場合、つまり、カウント値Tcが60の場合、全てのバーを点灯する。カウント値Tcがそれら以外の場合、プロセッサ13は、カウント値Tcに応じて、バーの点灯及び消灯を制御する。具体的には、点灯するバーの本数Nは、カウント値Tc/20で表される。Tc/20は、小数点を切り捨てる。したがって、Tc=60の場合に三本全てのバーを点灯、59≧Tc≧40の場合左端及び中央の二本のバーを点灯、39≧Tc≧20の場合左端の一本のバーを点灯、Tc<20場合三本全てのバーを消灯する。
さて、サーキットモードでは、プロセッサ13は、図8のサーキット画面を表示する。プロセッサ13は、この画面中にサーキット運動を行うトレーナキャラクタ43のアニメーションを表示する。ユーザ9は、トレーナキャラクタ43の動きを見て、トレーナキャラクタ43が行うサーキット運動を行う。初級(軽い筋肉トレーニング)と上級(少しきつい筋肉トレーニング)とが用意される。また、本実施の形態では、トレーナキャラクタ43は、10種類のサーキット運動を行う。つまり、「その場足踏み」、「サイドレイズ」、「サイドステップ」、「手足交互背伸び」、「両手片足交互背伸び」、「ワルツステップ」、「レッグアップ(膝屈曲)」、「レッグアップ(膝伸展)」、「チャチャチャステップ」及び「スクワット&カーフレイズ」である。
「その場足踏み」は、前進しない、その場での足踏みである。「サイドレイズ」は、立ったままかかとを着けて、下に垂らした両手を伸ばしたまま頭の上まで動かし、頭の上で、両手の平を接触させる運動である。「サイドステップ」は、手を振りながら、一方の足を横に動かし、他方の足を前記一方の足の方に運ぶ運動である。「手足交互背伸び」は、直立姿勢から、一方の足を後ろに引くと同時に逆の手を前方に伸ばし、再び直立姿勢に戻る運動である。「両手片足交互背伸び」は、直立姿勢から、一方の足を後ろに引くと同時に両手を前方に伸ばし、再び直立姿勢に戻る運動である。
「ワルツステップ」は、「サイドステップ」の後に、さらにもう一回、足踏みを行う運動である。「レッグアップ(膝屈曲)」は、交互に足を、太ももが水平になるくらい上げる運動である。「レッグアップ(膝伸展)」は、交互に、足の膝を伸ばしたまま、足が水平になるくらい上げる運動である。「チャチャチャステップ」は、「サイドステップ」の後に、さらにもう三回、足踏みを行う運動である。「スクワット&カーフレイズ」は、直立姿勢から、両膝を曲げ、腰を落とし、その後、かかとが上がるように背伸びし、起立状態に戻る運動である。
初級では、トレーナキャラクタ43は、「その場足踏み(30秒)」、負荷なしの「サイドレイズ(4回)」、「サイドステップ(30秒)」、「手足交互背伸び(左右四回ずつ)」、「ワルツステップ(30秒)」、「レッグアップ(膝屈曲)(左右四回ずつ)」、「チャチャチャステップ(30秒)」及び「スクワット&カーフレイズ(1/4)」を行う。トレーナキャラクタ43が、初級のサーキット運動を全て行った時点で、ユーザ9もこれらの運動を全て行ったとみなして、その時のユーザ9の活動量を0.11(Ex)とし、今日の活動量に加算する。
上級では、トレーナキャラクタ43は、「その場足踏み(30秒)」、負荷ありの「サイドレイズ(4回)」、「サイドステップ(30秒)」、「両手片足交互背伸び(左右四回ずつ)」、「ワルツステップ(30秒)」、「レッグアップ(膝伸展)(左右四回ずつ)」、「チャチャチャステップ(30秒)」及び「スクワット&カーフレイズ(1/2)」を行う。トレーナキャラクタ43が、上級のサーキット運動を全て行った時点で、ユーザ9もこれらの運動を全て行ったとみなして、その時のユーザ9の活動量を0.14(Ex)とし、今日の活動量に加算する。
なお、「スクワット&カーフレイズ(1/2)」は、「スクワット&カーフレイズ(1/4)」よりも深く腰を落とすことを意味する。
また、プロセッサ13は、ユーザ9がサーキット運動の1動作を何回行ったかを回数表示部51に表示する。図8の例では、トレーナキャラクタ43は、「レッグアップ(膝屈曲)」を行っており、回数表示部51には、全8回のうち、ユーザ9が「レッグアップ(膝屈曲)」を行った回数が表示される。
ユーザ9が、トレーナキャラクタ43が指示する動きを行ったか否かの判断は、次のようにして行われる。
図14(a)〜図14(e)は、図3のプロセッサ13による体動識別方法の説明図である。図14(a)〜図14(e)を参照して、縦軸は加速度センサ29のx,y及びz軸方向の加速度ax,ay及びazの合成加速度Axyz(=√(ax2+ay2+az2))を示し、横軸は時間tを示す。プロセッサ13は、合成加速度Axyzに基づいて、ユーザ9が、トレーナキャラクタ43が指示する動きを行ったか否かを判断する。また、ユーザ9が静止している場合は、重力加速度のみが検出されるので、合成加速度Axyz=1Gである。
なお、図14(a),図14(b),図14(c),図14(d)及び図14(e)の体動パターンを、それぞれ、第1体動パターン、第2体動パターン、第3体動パターン、第4体動パターン及び第5体動パターンと呼ぶこともある。
図14(a)は、ユーザ9が接地した一方の足を上げ、そして、下げて、着地した場合に発生する合成加速度Axyzの波形を模式的に示している。プロセッサ13は、合成加速度Axyzが、1Gから増加し、閾値ThHを越え、その後、閾値ThLを下回り、かつ、閾値ThHを越えた時点から閾値ThLを下回った時点までの時間Tpが所定範囲PD内に入っている場合に、ユーザ9が「その場足踏み」を行ったと判断する。なお、レッグアップ(膝屈曲)及びレッグアップ(膝伸展)も同様の判断が行われる。ただし、閾値ThH、ThL及び所定範囲PDは異なる。閾値ThH、ThL及び所定範囲PDは、動きの種類に応じて経験的に定められる。
図14(b)を参照して、プロセッサ13は、合成加速度Axyzが、1Gから増加し、閾値ThH1を越え、その後、閾値ThL1を下回り、かつ、閾値ThH1を越えた時点から閾値ThL1を下回った時点までの時間Tp1が所定範囲PD1内に入っている場合であって、閾値ThL1を下回った時点から一定時間Tiの経過以降に、閾値ThH2を越え、その後、閾値ThL2を下回り、かつ、閾値ThH2を越えた時点から閾値ThL2を下回った時点までの時間Tp2が所定範囲PD2内に入っている場合に、ユーザ9が「サイドレイズ」を行ったと判断する。合成加速度Axyzの最初の波形(凸凹)は、ユーザ9が両手を頭の上まで上げる過程で発生し、最後の波形(凸凹)は、ユーザ9が両手を下げ最初の起立姿勢になった時に発生する。時間Tiは、ユーザ9が両手の平を頭の上で接触させ静止している期間に相当し、その期間は波形のぶれが発生するので、この期間では判断を行わないことにした。閾値ThH1、ThL1、ThH2、ThL2、所定範囲PD1及びPD2は、経験的に定められる。
図14(c)を参照して、プロセッサ13は、合成加速度Axyzが、1Gから増加し、閾値ThH1を越え、その後、閾値ThL1を下回り、かつ、閾値ThH1を越えた時点から閾値ThL1を下回った時点までの時間Tp1が所定範囲PD1内に入っている場合であって、引き続き、閾値ThH2を越え、その後、閾値ThL2を下回り、かつ、閾値ThH2を越えた時点から閾値ThL2を下回った時点までの時間Tp2が所定範囲PD2内に入っている場合に、ユーザ9が「サイドステップ」を行ったと判断する。合成加速度Axyzの最初の波形(凸凹)は、ユーザ9が一方の足を横方向に移動する過程で発生し、その次の波形(凸凹)は、ユーザ9が他方の足を引き寄せたことにより発生する。
ワルツステップとチャチャチャステップも同様の判断が行われる。ただし、閾値ThH1、ThL1、ThH2、ThL2、所定範囲PD1及びPD2は異なる。閾値ThH1、ThL1、ThH2、ThL2、所定範囲PD1及びPD2は、動きの種類に応じて経験的に定められる。また、ワルツステップとチャチャチャステップでは、閾値ThL2を下回った時点から一定時間PD3は、判断は実行されない。なぜならば、追加の一歩や三歩を無視するためである。サーキットモードでは、ユーザ9に行わせる運動が予め決まっているので、このようにして判断しても問題ない。もちろん、ワルツステップとチャチャチャステップとでは、一定時間PD3は異なる。
図14(d)を参照して、プロセッサ13は、合成加速度Axyzが、1Gから減少し、閾値ThL1を下回り、その後、閾値ThH1を越え、かつ、閾値ThL1を下回った時点から閾値ThH1を越えた時点までの時間Tp1が所定範囲PD1内に入っている場合であって、閾値ThH1を越えた時点から一定時間Tiの経過以降に、閾値ThL2を下回り、その後、閾値ThH2を上回り、かつ、閾値ThL2を下回った時点から閾値ThH2を越えた時点までの時間Tp2が所定範囲PD2内に入っている場合に、ユーザ9が「手足交互背伸び」を行ったと判断する。
合成加速度Axyzの最初の波形(凸凹)は、ユーザ9が片足を後ろに引く過程で発生し、最後の波形(凸凹)は、ユーザ9が後ろに引いた片足を戻して起立状態に戻った時に発生する。時間Tiは、ユーザ9が片足を後ろに引いた後の静止状態と、それを元に戻すまでの期間に相当し、その期間は波形のぶれが発生するので、この期間では判断を行わないことにした。
両手片足交互背伸びも同様の判断が行われる。ただし、閾値ThH1、ThL1、ThH2、ThL2、所定範囲PD1及びPD2は異なる。閾値ThH1、ThL1、ThH2、ThL2、所定範囲PD1及びPD2は、動きの種類に応じて経験的に定められる。
図14(e)を参照して、プロセッサ13は、合成加速度Axyzが、1Gから減少し、閾値ThL1を下回り、その後、閾値ThH1を越え、かつ、閾値ThL1を下回った時点から閾値ThH1を越えた時点までの時間Tp1が所定範囲PD1内に入っている場合であって、閾値ThH1を越えた時点から一定時間Ti1の経過以降に、閾値ThL2を下回り、その後、閾値ThH2を上回り、かつ、閾値ThL2を下回った時点から閾値ThH2を越えた時点までの時間Tp2が所定範囲PD2内に入っている場合であって、閾値ThH2を越えた時点から一定時間Ti2の経過以降に、閾値ThL3を下回り、その後、閾値ThH3を上回り、かつ、閾値ThL3を下回った時点から閾値ThH3を越えた時点までの時間Tp3が所定範囲PD3内に入っている場合に、ユーザ9が「スクワット&カーフレイズ」を行ったと判断する。
合成加速度Axyzの最初の波形(凸凹)は、ユーザ9が膝を曲げて腰を落とす過程で発生し、その次の波形(凸凹)は、ユーザ9が伸び上がる過程で発生し、さらにその次の波形(凸凹)は、ユーザ9がかかとを着いた時に発生する。閾値ThH1、ThL1、ThH2、ThL2、ThH3、ThL3、所定範囲PD1、PD2及びPD3は、経験的に定められる。
以上のように、ユーザがどのような運動を行ったかを識別するのではなく、指示された運動をユーザが行ったかどうかを判断する。従って、指示された運動を行った場合の合成加速度Axyzを予め測定して、閾値、閾値を超えてから別の閾値を下回るまでの時間、閾値を下回ってから別の閾値を越えるまでの時間、閾値を下回った時点からの経過時間、及び、閾値を越えた時点からの経過時間といった複数要素のうち、必要な要素を設定して、設定した全ての要素を満たした場合に、ユーザ9が、当該運動を行ったと判断する。
さて、トレーニングモードは、ステップエクササイズ、トレインエクササイズ、メイズエクササイズ、及びリングエクササイズを含む。これらのエクササイズでは、ユーザ9は、テレビジョンモニタ5の前に立って、その場で足踏み等を行う。
ユーザ9がステップエクササイズを選択すると、プロセッサ13は、図9に示すステップエクササイズ画面をテレビジョンモニタ5に表示する。この画面は、トレーナキャラクタ43を含む。トレーナキャラクタ43は、ユーザ9が設定した一週間の目標活動量から求めた一日の目標活動量までの不足の活動量を消化するために必要な歩数を提示する。また、この画面の活動量表示部55には、ステップエクササイズでの活動量をリアルタイムで表示すると共に、一日の目標活動量までの不足の活動量が表示される。表示される活動量は、上述したように、運動形態(歩き、ゆっくりしたランニング又は通常のランニング)のそれぞれの回数から算出され、ステップエクササイズでのそれらの累積値である。
次に、プロセッサ13は、図10に示すように、画面奥に向かって、つまり、テレビジョンモニタ5に表示された仮想空間の奥に向かって、一定速度でトレーナキャラクタ43を走らせる。ユーザ9は、このようなトレーナキャラクタ43のランニングに従って、その場で足踏みを行う。
一人称視点の画面であり、ユーザ9の足踏みに応じて、ユーザ9が仮想空間をあたかも移動しているかのように映像が変化する。この場合、ユーザ9の足踏み速度に応じて仮想空間中のユーザ9の移動速度が決定される。
プロセッサ13は、ユーザ9の仮想空間中の位置とトレーナキャラクタ43の位置とが、第1所定距離D1に達したら、図11に示すように、トレーナキャラクタ43を停止させ振り向かせ、ボイスを発生する。プロセッサ13は、その後、ユーザ9の仮想空間中の位置とトレーナキャラクタ43の位置とが、第2所定距離D2に達したら、トレーナキャラクタ43を再び走らせる。第1所定距離D1>第2所定距離D2である。第1所定距離D1は、トレーナキャラクタ43が走り出して時点において、複数候補の中からランダムに決定される。第2所定距離D2は固定である。
前記ボイスは、トレーナキャラクタ43が走り出した時点から停止した時点までの時間に応じて異なる。両者の位置が第1所定距離D1だけ離れてはじめてトレーナキャラクタ43が停止するので、ユーザ9がトレーナキャラクタ43に追従している場合は、第1所定距離D1の差がつかないので、トレーナキャラクタ43が停止するまでには時間がかかる。一方、ユーザ9がトレーナキャラクタ43に追従していない場合は、第1所定距離D1の差が比較的すぐにつくので、トレーナキャラクタ43は比較的早く停止する。よって、トレーナキャラクタ43が走り出した時点から停止した時点までの時間が長いほど良い評価のボイスが与えられ、短いほど悪い評価のボイスが与えられる。
さて、トレインエクササイズは、いわゆる電車ごっこを模擬したものであり、所定数の仮想の駅を通過していく。ユーザ9がトレインエクササイズを選択すると、図12に示すように、プロセッサ13は、テレビジョンモニタ5にトレーナキャラクタ43を含むトレインエクササイズ画面を表示する。トレーナキャラクタ43は先頭で縄58を持ち、画面の奥に向かって、つまり、テレビジョンモニタ5に表示された仮想空間の奥に向かって、一定速度(本実施の形態では時速40km)で前進する。スタート時では、縄58はたるんでいる。ユーザ9は、このようなトレーナキャラクタ43の前進に従って、足踏みを行う。
一人称視点の画面であり、ユーザ9の足踏みに応じて、ユーザ9が仮想空間をあたかも移動しているかのように映像が変化する。この場合、ユーザ9の足踏み速度に応じて仮想空間中のユーザ9の移動速度が決定される。
トレーナキャラクタ43の位置とユーザ9の仮想空間中の位置との間の距離Dtpが、所定値DL(=縄58がピンと張った時の長さ)より小さく、かつ、所定値DS(=縄58が最も緩んだ時の長さ)より大きい場合、機嫌メータ61の針66はその位置を維持する。なお、DL>DS、である。
図13に示すように、距離Dtpが、所定距離DLに達したら、縄58がピンと張り、機嫌メータ61の針66が水平左方向に移動を開始し、トレーナキャラクタ43が減速し、機嫌が悪いことを示すエフェクトが表示される。そして、針66が左端に到達した後1秒後に、トレーナキャラクタ43が停止しゲームオーバとなる。一方、距離Dtpが、所定距離DSに達すると、針66は水平右方向に移動を開始し、トレーナキャラクタ43の機嫌が良いことを示すエフェクトが表示される。距離Dtpが所定距離DSに達した後、ユーザ9の速度が所定値(本実施の形態では時速50km)より大きくなると、その速度に合わせてトレーナキャラクタ43の速度を大きくする。
トレインエクササイズ画面の活動量表示部57には、トレインエクササイズでのユーザ9の活動量がリアルタイムに表示される。表示される活動量は、上述したように、運動形態(歩き、ゆっくりしたランニング又は通常のランニング)のそれぞれの回数から算出され、トレインエクササイズでのそれらの累積値である。経過駅表示部59には、駅を1つ経過するたびに、白丸が赤丸に変化する。
なお、トレーナキャラクタ43がランニングしないように設定することもできる。つまり、歩行のみである。
さて、図15は、メイズエクササイズ画面の例示図である。ユーザ9がメイズエクササイズを選択すると、プロセッサ13は、図15に示すメイズエクササイズ画面をテレビジョンモニタ5に表示する。この画面は、三人称視点であり、ユーザ9の動きに応答するプレイヤキャラクタ78を含む。プロセッサ13は、アクションセンサ11から受信した加速度データに基づき、歩数計31と同じ方法で、三種類の運動形態(歩き、ゆっくりしたランニング、通常のランニング)を識別する。プロセッサ13は、三種類の運動形態(歩き、ゆっくりしたランニング、通常のランニング)のそれぞれに対して、プレイヤキャラクタ78の前進速度(v0、v1、v2)を保持しており、識別した運動形態に応じて、プレイヤキャラクタ78の前進速度を決定し、仮想空間中の迷路82を前進させる。
また、プロセッサ13は、加速度センサ29のx軸方向の加速度axの絶対値が一定値を超えた場合、当該加速度axの符号に応じて、プレイヤキャラクタ78を左又は右に90度回転させる(方向転換)。なお、ユーザ9が、一定程度を超えて身体を左又は右に曲げた場合、加速度センサ29のx軸方向の加速度axの絶対値が一定値を超える。
さて、プロセッサ13は、迷路82に標識80を表示する。標識80は、ゴールの方向を示す。また、プロセッサ13は、プレイヤキャラクタ78が向いている方位を示す方位表示部70、ユーザ9が保持しているマップアイテムの個数を表示するアイテム数表示部72、制限時間の残りの時間を示す時間表示部74、メイズエクササイズでの総活動量と総歩数とを示す活動表示部76、電池残量表示部45及び通信状態表示部47を表示する。
メイズエクササイズの開始時では、所定数のマップアイテムが与えられている。ただし、マップアイテムは、迷路82中に出現し、プレイヤキャラクタ78をマップアイテムに接触させることにより随時取得できる。ユーザ9がマップアイテムを保持している場合、モード切替ボタン39を押下すると、プロセッサ13は、ユーザ9が保持しているマップアイテムを1つ減らし、図16に示すマップ画面を表示する。この画面で再びモード切替ボタン39が押下されると、マップ画面から迷路82の画面に戻る。マップ画面は、迷路82全体の構造84、ゴールの位置を示す標識86及びプレイヤキャラクタ78の現在位置を示す矢印88を含む。矢印88の向きは、プレイヤキャラクタ78が向いている方位を示す。
なお、マップ画面の表示中も時間表示部74はカウントを継続しているので、制限時間内にゴールに到達するためには、ユーザ9は、無制限にマップ画面を見ることができない。
さて、図17は、リングエクササイズ画面の例示図である。ユーザ9がリングエクササイズを選択すると、プロセッサ13は、図17に示すリングエクササイズ画面をテレビジョンモニタ5に表示する。この画面は、三人称視点であり、ユーザ9の動きに応答するプレイヤキャラクタ78を含む。プレイヤキャラクタ78は(図では女性を模している。)、アクションセンサ11からの加速度データに応じて、仮想空間に形成された水中を画面奥に向かって泳いでいく。つまり、プロセッサ13は、アクションセンサ11から受信した加速度データに基づき、プレイヤキャラクタ78の移動ベクトル(移動の速さ及び方向)を算出する。具体的には次の通りである。
ここで、プレイヤキャラクタ78等のオブジェクトをテレビジョンモニタ5に表示の際の三次元座標について説明しておく(本明細書において共通)。画面に平行かつ水平方向をX軸、画面に平行かつX軸に垂直な方向をY軸、X軸及びY軸に垂直な方向(画面に垂直な方向)をZ軸とする。X軸の正は、画面に向かって左方向、Y軸の正は、画面に向かって下方向、Z軸の正は、画面奥に向かう方向とする。
まず、プレイヤキャラクタ78の移動ベクトルの大きさの求め方を説明する。プロセッサ13は、加速度センサ29のx軸方向の加速度axとy軸方向の加速度ayとz軸方向の加速度azとの合成加速度Axyzを、プレイヤキャラクタ78の現在の移動ベクトルの大きさ(つまり、速さ)に加算し、加算結果を、次に設定するプレイヤキャラクタ78の移動ベクトルの大きさ(つまり、速さ)とする。
従って、ユーザ9は、身体の動きを調整して、合成加速度Axyzの大きさを調整し、プレイヤキャラクタ78の速さを制御する。例えば、ユーザ9は、スクワット運動(素早く膝を曲げて延ばす動作)を行うことによって、加速度(合成加速度Axyz)を発生することができ、プレイヤキャラクタ78の速度を上昇できる。なお、ユーザ9が加速度を発生するような動きをしていない場合は、プレイヤキャラクタ78は減速し、いずれ停止する。
次に、プレイヤキャラクタ78の移動ベクトルの方向の求め方を説明する。プロセッサ13は、加速度センサ29のz軸方向の加速度az及びx軸方向の加速度axを、それぞれ、プレイヤキャラクタ78のX軸回りの回転及びY軸回りの回転に対応させる。そして、単位ベクトル(0,0,1)を、加速度az及びaxに応じて、X軸及びY軸回りに回転し、この回転により得られた単位ベクトルの向きを、プレイヤキャラクタ78の移動ベクトルの向きに設定する。
ここで、z軸方向の加速度が正方向に大きくなった場合ユーザ9は前方に身体を傾けていること(前傾)を意味し、この方向は、仮想空間中のプレイヤキャラクタ78の下方向(Y軸の正方向)に対応する。z軸方向の加速度azが負方向に大きくなった場合ユーザ9は後方に身体を傾けていること(後傾)を意味し、この方向は、仮想空間中のプレイヤキャラクタ78の上方向(Y軸の負方向)に対応する。つまり、加速度センサのz軸方向の加速度azの向き及び大きさで仮想空間中のプレイヤキャラクタ78の上下の向き、つまり、X軸回りの回転が決定する。
また、x軸方向の加速度axが正方向に大きくなった場合ユーザ9は左方向に身体を傾けていることを意味し、この方向は、仮想空間中のプレイヤキャラクタ78の左方向(X軸の正方向)に対応する。x軸方向の加速度axが負方向に大きくなった場合ユーザ9は右方向に身体を傾けていることを意味し、この方向は、仮想空間中のプレイヤキャラクタ78の右方向(X軸の負方向)に対応する。つまり、加速度センサのx軸方向の加速度axの向き及び大きさで仮想空間中のプレイヤキャラクタ78の左右の向き、つまり、Y軸回りの回転が決定する。
従って、ユーザ9は、身体を前方向、後方向、左方向又は右方向に動かして、プレイヤキャラクタ78の移動方向を下方向、上方向、左方向又は右方向にすることができる。
さて、プロセッサ13は、画面のZ軸方向に複数のターゲットリング102を配置・表示する。ユーザ9は、プレイヤキャラクタ78がターゲットリング102を潜り抜けるように、身体を動かし、プレイヤキャラクタ78を操作する。また、プロセッサ13は、プレイヤキャラクタ78の操作をガイドすべく、ターゲットリング102と相似なガイドリング100を表示する。ガイドリング100のXY座標は、ターゲットリング102のXY座標と同一である。また、ガイドリング100のZ座標は、プレイヤキャラクタ78の頭頂部のZ座標と同一である。従って、プレイヤキャラクタ78がガイドリング100内に入るように操作していけば、プレイヤキャラクタ78はターゲットリング102を潜り抜けることができる。
また、プロセッサ13は、プレイヤキャラクタ78が現在位置するエリアを示すエリア表示部90、残りのターゲットリング102の数を示すリング数表示部92、制限時間の残りの時間を示す時間表示部94、リングエクササイズでの総活動量を示す活動表示部96、電池残量表示部45及び通信状態表示部47を表示する。
なお、1ステージは複数のエリアにより構成され、各エリアには、複数のターゲットリング102が配置される。この場合、複数のターゲットリング102を一組とした配置パターンが予め複数用意されている。この複数の配置パターンからランダムに選択された一つの配置パターンにより1エリアが構成される。
また、図18を参照して、プロセッサ13は、ガイドリング100が表示範囲(画面内)に入らないほどプレイヤキャラクタ78の位置がずれている場合は、次に通過すべきターゲットリング102の方向を指し示す標識104を表示する。この標識104に従って、プレイヤキャラクタ78を操作すれば、ガイドリング100が見えてくる。なお、図18に現れているターゲットリング102は、次に通過すべきターゲットリング102ではない。
図5に戻って、「ログ」項目が選択された後、ステップS11では、プロセッサ13は、ユーザ9のスイッチ部20の操作に応じて、活動量推移、バイタル推移又は記録を選択的に表示する。活動量の推移は、ユーザ9のスイッチ部20の操作に応じて、24時間の推移、1週間の推移又は1ヶ月の推移が選択的に棒グラフで表示される。この場合、アクションセンサ11から受け取った歩数計モードの歩数データに基づきプロセッサ13が算出した活動量と、通信モードのアクションセンサ11から受け取った加速度に基づきプロセッサ13が算出した活動量と、が色分けして表示される。さらに、アクションセンサ11からの歩数データに基づき算出した活動量については、ユーザ9の運動形態(歩き、ゆっくりしたランニング、通常のランニング)ごとに色分けして表示される。バイタルの推移は、ユーザ9のスイッチ部20の操作に応じて、1ヶ月の体重、腹囲又は血圧が選択的に棒グラフで表示される。記録は、ユーザ9が日を選択し、選択された日の活動記録と測定記録を含む。
「サブコンテンツ」項目が選択された後、ステップS13では、プロセッサ13は、ユーザ9のスイッチ部20の操作に応じて、心拍数測定、脚力測定(空気椅子テスト)、体力測定、体力年齢テスト又は脳トレーニングを選択的に実行する。これらは全てアクションセンサ11を利用して行われる。
心拍数測定では、プロセッサ13は、「準備ができたらアクションセンサのボタンを押してください。しばらくすると「測定開始」の合図がありますので、脈を10回数えて再びボタンを押してください。」なる指示と、脈の図り方の説明文と、をテレビジョンモニタ5に表示する。そして、プロセッサ13は、アクションセンサ11のモード切替ボタン39の押下を検知すると、「測定開始」の合図をテレビジョンモニタ5に表示し、時間の計測を開始する。プロセッサ13は、ユーザ9が10回の脈を計り終えてモード切替ボタン39の押下を検知すると、時間の計測を終了する。そして、プロセッサ13は、計測した時間に基づいて心拍数を算出し、表示する。
脚力測定では、プロセッサ13は、「準備ができたらアクションセンサのボタンを押してください。」なる指示と、説明文と、をテレビジョンモニタ5に表示する。説明文は、「1.両脚を肩幅に開き、つま先を少し外側に向けます。」、「2.アクションセンサを手に持ち、両手を前に伸ばします。」、「3.上半身をやや前傾し、膝を90度に曲げます。」、なる説明を含む。ユーザ9は、この説明文に従った姿勢(椅子がないにも拘らず、あたかも椅子に座っているかのような姿勢)をとり、モード切替ボタン39を押下する。プロセッサ13は、アクションセンサ11のモード切替ボタン39の押下を検知すると、測定中である旨の表示と、「現在の姿勢を維持できなくなったら、アクションセンサのボタンを押してください。」なる指示と、を表示する。同時に、プロセッサ13は、時間の計測を開始する。そして、プロセッサ13は、ユーザ9がモード切替ボタン39を再び押下したことを検知すると、時間の計測を終了し、測定結果(計測時間)とコメントを表示する。この計測時間が長いほど、上記姿勢を長く維持できたことを意味し、それは、脚力が強いことを意味する。
「ユーザ情報変更」項目が選択された後、ステップS15では、プロセッサ13は、ユーザ9のスイッチ部20の操作に応じて、基本情報変更、詳細情報変更又は目標変更を選択的に行う。基本情報は、名前、ID、性別及び年齢を含む。詳細情報は、身長、体重、腹囲、歩幅、生活強度、BMI、最高血圧、最低血圧、心拍数、中性脂肪、HDL及び血糖値を含む。目標は、1ヶ月ごとの体重減、1ヶ月ごとの腹囲減、1日の歩数及び1週間の活動量を含む。
「システム設定」項目が選択された後、ステップS17では、プロセッサ13は、ユーザ9のスイッチ部20の操作に応じて、時計設定又は初期設定を選択的に行う。
さて、以上のように、本実施の形態のアクションセンサ11は、三次元空間中のユーザ9の動きに応じた物理量(上記では加速度)を検出して、搭載したLCD35に、検出した物理量に基づく情報(上記では歩数)を表示でき、そのため、このアクションセンサ11単体でも機能する(上記では歩数計として機能)。つまり、歩数計モードでは、外部機器(上記ではカートリッジ3)と通信は行われず、外部機器とは無関係に単独で動作する。この機能に加えて、通信モードにおいて、検出した物理量に関する情報(上記では加速度)を外部機器(上記ではカートリッジ3)にリアルタイムで入力でき、当該外部機器と協働して、映像(代表的には、図7〜図13、図15〜図18など)を利用した様々なコンテンツ(代表的には、ストレッチ体操、サーキット運動、ステップエクササイズ、トレインエクササイズ、メイズエクササイズ及びリングエクササイズ等)をユーザ9に提供できる。
この場合、カートリッジ3のプロセッサ13は、アクションセンサ11から受信した物理量に関する情報(上記では加速度)に基づいて、映像(代表的には、図15〜図18など)を制御することもできるし、カートリッジ3のプロセッサ13が物理量に関する情報に依存すくことなく制御する映像(代表的には、図7〜図13など)と関連して、アクションセンサ11から受信した物理量に関する情報を処理することもできる。
また、ユーザ9は、歩数計モードにおいて、このアクションセンサ11だけを携帯して運動(歩行やラン)を行うこともできる。一方、通信モードでは、ユーザ9は、身体を動かして、外部機器(上記ではカートリッジ3)にリアルタイムで動きに応じた物理量(上記では加速度)を入力できる。つまり、外部機器に入力を行う行為自体が運動になる。この場合、外部機器は、ユーザ9からの入力に応じて、映像(代表的には、図7〜図13、図15〜図18など)を利用した様々なコンテンツ(代表的には、ストレッチ体操、サーキット運動、ステップエクササイズ、トレインエクササイズ、メイズエクササイズ及びリングエクササイズ等)をユーザ9に提供する。従って、ユーザ9は、ただ漫然と身体を動かすのではなく、これらのコンテンツを楽しみながら運動ができる。
その結果、歩数計モードで、アクションセンサ11だけを携帯して運動を行い、その場合の不足分の運動を、通信モードを利用して、アクションセンサ11及び外部機器(上記ではカートリッジ3)で補うことが可能となる。また、その逆も可能である。このように、二段構えで運動を行わせることで、運動目標達成をより効果的に支援できる。
さて、一般に、ストレッチ体操やサーキット運動等、各種の運動には目的があり、その目的を効果的に達成するためには、定められた動きを的確に行う必要がある。この場合、映像等により動きを指示することが行われるが、ユーザが指示された動きを的確に行っているか否かの判断は、ユーザ自身では困難である。
しかしながら、本実施の形態によれば、映像により指示した動きをユーザ9が行ったか否かを判断でき、判断結果をユーザ9に提示できる(代表的には、図8のサーキット運動)。このため、ユーザ9はその結果を見て、自身の動きを修正等することができ、指示された運動を的確に実行できる。その結果、ユーザ9は、指示された運動の目的を効果的に達成できる。
また、本実施の形態によれば、ユーザ9は、三次元空間中で身体を動かすことにより、動きに応じた加速度情報がアクションセンサ11からカートリッジ3に送信され、テレビジョンモニタ5に表示される動画像(図9〜図13のステップエクササイズ及びトレインエクササイズでの一人称視点による仮想空間内での移動、図15〜図18のメイズエクササイズ及びリングエクササイズでのプレイヤキャラクタ78の仮想空間内の移動)を制御できる。その結果、ユーザ9は、自分の身体の動きに応答する動画像を見ながら運動できるので、ただ漫然と身体を動かす場合と比較して、飽き難く、運動の継続を支援できる。
例えば、ユーザ9は、身体を動かすことにより、プレイヤキャラクタ78を制御できる(代表的には、メイズエクササイズ、リングエクササイズ)。その結果、ユーザ9は、自分の動きに応答するプレイヤキャラクタ78を見ながら運動できるので、ただ漫然と身体を動かす場合と比較して、飽き難く、運動の継続を支援できる。
また、例えば、ユーザ9は、三次元空間中で身体を動かすことにより、自分がテレビジョンモニタ5に表示される仮想空間中をあたかも移動しているかのような映像を見ることができる(代表的には、ステップエクササイズ、トレインエクササイズ、メイズエクササイズ、リングエクササイズ)。つまり、ユーザ9は、身体を動かすことにより、仮想空間内の事象を擬似的に体験できる。その結果、ただ漫然と身体を動かす場合と比較して、飽き難く、運動の継続を支援できる。
特に、ユーザ9は、メイズエクササイズにより、迷路82を擬似的に体験できる。迷路ゲームは多くの人に認知されており、知識や経験を必要とせず、多くのユーザ9は、アクションセンサ11及びカートリッジ3を利用した迷路ゲームを手軽に楽しむことができる。
ところで、仮想空間は実質的には無限大の大きさを持つが、テレビジョンモニタ5に表示されるのはその一部である。従って、仮想空間の所定位置まで、移動しようとしても、その位置がユーザ9には認識できない。しかしながら、本実施の形態では、仮想空間に形成された迷路82のゴールの方向を示す標識80を表示するので、広大な仮想空間に形成された迷路82のゴールまで行くことを目的とするユーザ9を補助できる(代表的には、メイズエクササイズ)。
さらに、本実施の形態では、仮想空間内での方向の変更は、アクションセンサ11から送信された加速度に基づいて行われる。従って、ユーザ9は、アクションセンサ11を装着した身体の向きを所望の向きに変えるだけで、仮想空間内の方向を直感的に変更できる(代表的には、メイズエクササイズ、リングエクササイズ)。
さて、一般に、テレビジョンモニタ5に表示された仮想空間内で自分の位置を移動していく場合、仮想空間中の遊びであるビデオゲーム等に不慣れな人にとっては、仮想空間の感覚(例えば、仮想空間内の自分の位置、仮想空間内の他のオブジェクトとの相対的位置関係等)をつかむことが困難な場合がある。しかしながら、特に、リングエクササイズにおいて、ガイドリング100を表示することにより、ユーザ9がターゲットリング102に向かって適切に移動できるように補助できる。その結果、仮想空間に不慣れな人でも扱いやすくなる。
さらに、本実施の形態によれば、ユーザ9はトレーナキャラクタ43に従って足踏み運動を行うことで、主観的なペースではなく、トレーナキャラクタ43のペース、つまり、客観的なペースで足踏み運動を行うことができる(代表的には、ステップエクササイズ及びメイズエクササイズ)。この場合、トレーナキャラクタ43がガイドする足踏み運動を適切にユーザ9が行っているか否かが判断され、テレビジョンモニタ5を通じて判断結果がユーザ9に提示される(上記では、ステップエクササイズでのトレーナキャラクタ43のボイス、トレインエクササイズでの機嫌メータ61やエフェクト)。このため、ユーザ9はその結果を見て、自身の足踏みのペース等を修正することができ、安定した足踏み運動を行うことができる。
さらに、本実施の形態によれば、アクションセンサ11は、ユーザ9の胴体又は頭部に装着されるので、ユーザ9の部分的な動き(四肢の動き)ではなく、身体全体の動きを計測できる。
一般に、四肢は胴体と独立して動かすことができるので、四肢にアクションセンサ11を装着しても、身体全体の動きを検出することは困難であるので、胴体にアクションセンサ11を装着する必要がある。ただし、頭部は胴体と独立して動かすことができるが、胴体を動かす場合、頭部はほとんど動かず、胴体と一体となって動くのが通常であり、アクションセンサ11を頭部に装着した場合でも、身体全体の動きを検出できる。
さらに、本実施の形態では、ユーザ9の活動量が算出されるので、テレビジョンモニタ5を介してそれをユーザ9に提示することにより、ユーザ9は自分の客観的な活動量を把握することができる。
上記のような効果を奏することから、例えば、本実施の形態の運動支援システムを、メタボリックシンドロームの予防や改善のために利用できる。
(実施の形態2)
実施の形態2と1との主な相違点は、加速度に基づく歩数の検出方法である。また、実施の形態1では、ユーザ9の動きを、歩き、ゆっくりしたランニング及び通常のランニングのいずれかに分類したが、実施の形態2では、ユーザ9の動きを、並足、早足及びランのいずれかに分類する。なお、ユーザ9に運動を行わせるためのコンテンツ(図7〜図13、図15〜図18)は、実施の形態2と1とで同様である。
図19は、本発明の実施の形態2による運動支援システムの全体構成を示す外観斜視図である。図19を参照して、この運動支援システムは、アダプタ1、カートリッジ4、アンテナユニット24、アクションセンサ6及びテレビジョンモニタ5を備える。アダプタ1には、カートリッジ4及びアンテナユニット24が装着される。また、アダプタ1は、AVケーブル7により、テレビジョンモニタ5に接続される。従って、カートリッジ4が生成したビデオ信号VD及びオーディオ信号AUは、アダプタ1及びAVケーブル7を介してテレビジョンモニタ5に与えられる。
アクションセンサ6は、ユーザ9の胴体又は頭部に装着される。胴体とは、ユーザ9の身体のうち、頭、首及び四肢を除く部分のことである。頭部とは、頭及び首のことである。アクションセンサ6は、LCD35、決定ボタン14、キャンセルボタン16及び方向(上下左右)キー18を備える。
アクションセンサ6には、2つのモード(歩数計モード、通信モード)が設定される。歩数計モードは、ユーザ9の歩数を計数するモードであり、アクションセンサ6単体で使用するモードである。通信モードは、アクションセンサ6とカートリッジ4(アンテナユニット24)とが通信を行い、両者が協働するモードであり、アクションセンサ6をカートリッジ4に対する入力装置として使用するモードである。例えば、通信モードのアクションセンサ6を使用して、テレビジョンモニタ5に表示された様々な画面(図7〜図13、図15〜図18)を見ながらユーザ9に運動を行わせる。
LCD35は、歩数計モードにおいて、時刻/年/月日並びに歩数を表示する。この場合、これらの表示後30秒経過したら、これらの表示は消える。電力消費を抑えるためである。また、LCD35には、アクションセンサ6の電池残量を示すアイコンが表示される。
決定ボタン14は、歩数計モードにおいて、時刻、年及び月日の表示を順に切り替えるために使用される。また、決定ボタン14は、通信モードにおいて、主に選択を決定するために使用される。キャンセルボタン16は、通信モードにおいて、主に選択を取り消す場合に使用される。方向キー18は、通信モードにおいて、テレビジョンモニタ5の画面操作のために使用される。
歩数計モードでは、例えば、図2(a)に示すように、ユーザ9は、アクションセンサ6をウエスト付近に装着する。通信モードにおいて、運動を行う時は、例えば、図2(b)に示すように、ユーザ9は、アクションセンサ6を胸部中央付近に装着する。もちろん、いずれの場合においても、胴体又は頭部の任意の部位に装着可能である。
図20は、図19の運動支援システムの電気的構成を示す図である。図20を参照して、運動支援システムのアクションセンサ6は、無線通信機能付きMCU52、EEPROM27、加速度センサ29、LCDドライバ33、LCD35、RTC56及びスイッチ部50を含む。スイッチ部50は、決定ボタン14、キャンセルボタン16及び方向キー18を含む。アダプタ1は、スイッチ部20を含み、スイッチ部20の操作信号はプロセッサ13に入力される。スイッチ部20は、キャンセルキー、エンターキー及び方向キー(上下左右)を含む。アダプタ1に装着されるカートリッジ4は、プロセッサ13、外部メモリ15、EEPROM44及びUSBコントローラ42を含む。アダプタ1に装着されるアンテナユニット24は、無線通信機能付きMCU48及びEEPROM19を含む。アンテナユニット24とカートリッジ4とは、アダプタ1を介して電気的に接続される。EEPROM19及び27には、MCU48と52との間の通信に必要な情報が格納される。
アクションセンサ6の加速度センサ29は、互いに直交する3軸(x,y,z)それぞれの方向の加速度ax,ay及びazを検出する。
MCU52は、歩数計モードにおいて、加速度センサ29からの加速度データに基づいて、ユーザ9の歩数を計数し、歩数データをEEPROM27に格納すると共に、LCDドライバ33に与える。LCDドライバ33は、受け取った歩数データをLCD35に表示する。
また、MCU52は、歩数計モードにおいて、決定ボタン14の操作に応答して、LCDドライバ33を制御し、LCD35の表示を切り替える。さらに、MCU52は、歩数計モードにおいて、決定ボタン14とキャンセルボタン16とが同時に押された場合に、通信モードに移行する。ただし、MCU52は、アンテナユニット24のMCU48から5秒以上ビーコンを受信しない場合は、再び歩数計モードに移行する。
一方、MCU52は、通信モードにおいて、加速度センサ29からの加速度データ、スイッチ部50の状態及びバッテリ(図示せず)の出力電圧データvoを変調し、アンテナユニット24のMCU48へ送信する。なお、歩数計モードでEEPROM27に格納された歩数データは、最初の通信時にアクションセンサ6からアンテナユニット24に送信される。
LCDドライバ33は、RTC56から時刻情報を受け取って、LCD35に表示すると共に、MCU52に与える。RTC56は、時刻情報を生成する。RTC56には、コンデンサ62の一方端子及びショットキーバリアダイオード64のカソードが接続される。コンデンサ62の他方端子は接地される。ダイオード64のアノードには、電池(図示せず)からの電源電圧Vccが与えられる。従って、コンデンサ62には、ダイオード64を介して、電池からの電荷が蓄積される。従って、電池交換のために、電池が抜かれた場合でも、RTC56は、コンデンサ62に蓄積された電荷により、一定時間は時刻情報を継続して生成できる。この一定時間が経過する前に、新しい電池がセットされると、RTC56は、リセットされることなく、正確な時刻情報を維持でき、LCDドライバ33に与えることができる。なお、電池が抜かれた場合、MCU52の内部RAM(図示せず)のデータは即座に消失する。
カートリッジ4のプロセッサ13には、外部メモリ15が接続される。外部メモリ15は、ROM、RAM及び/又はフラッシュメモリ等、システムの仕様に応じて必要なものを備える。外部メモリ15は、プログラム領域、画像データ領域、および音声データ領域を含む。プログラム領域には、制御プログラム(アプリケーションプログラムを含む。)が格納される。画像データ領域には、テレビジョンモニタ5に表示される画面を構成するすべての画像データが格納されている。音声データ領域には、音楽、ボイス及び効果音等のための音声データが格納されている。プロセッサ13は、プログラム領域の制御プログラムを実行して、画像データ領域の画像データ及び音声データ領域の音声データを読み出し、必要な処理を施して、ビデオ信号VD及びオーディオ信号AUを生成する。これらの処理の詳細は、後述のフローチャートにより明らかになる。
また、プロセッサ13は、制御プログラムを実行して、アンテナユニット24のMCU48に対して、アクションセンサ6のMCU52と通信して、加速度データ、スイッチ部50の状態及び出力電圧データvoを取得する命令を出す。MCU48は、プロセッサ13からの命令を受けて、MCU52から、加速度データ、スイッチ部50の状態及び出力電圧データvoを受信し、復調して、プロセッサ13に与える。
そして、プロセッサ13は、アクションセンサ6から受信した加速度データに基づいて、後述する図28のステップS109のエクササイズでテレビジョンモニタ5に表示するための、歩数や活動量の算出、ユーザ9の運動形態の識別を行い、それらの結果をEEPROM44に格納する。また、プロセッサ13は、受信した出力電圧データvoに基づいて、アクションセンサ6の電池の残量をテレビジョンモニタ5に表示する。さらに、歩数計モードの歩数データは、最初の通信時にアクションセンサ6からアンテナユニット24に送信されるところ、プロセッサ13は、この歩数データをEEPROM44に格納する。また、プロセッサ13は、通信モードのアクションセンサ6を使用してユーザ9が入力した様々な情報をEEPROM44に格納する。
ところで、アクションセンサ6が通信モードの場合にのみ、カートリッジ4及びアンテナユニット24はアクションセンサ6と通信可能である。このため、通信モードの場合にのみ、アクションセンサ6は、プロセッサ13への入力装置として機能する。
なお、プロセッサ13の外部インタフェースブロックは、周辺装置(本実施の形態では、MCU48、USBコントローラ42、EEPROM44及びスイッチ部20)とのインタフェースである。
USBコントローラ42は、パーソナルコンピュータ等のUSB機器と接続するためのものであり、プロセッサ13の制御を受けて、EEPROM44に格納された歩数や活動量等のデータを、USB機器に転送する。
図21は、図20のアクションセンサ6のMCU52が実行する運動形態測定処理の流れを示すフローチャートである。図21を参照して、ステップS1000にて、MCU52は、各種変数(フラグ及びカウンタを含む。)及びタイマを初期化する。具体的には、MCU52は、ユーザ9の運動形態を示す運動形態フラグを「停止」に設定し、現在が不確定期間内か否かを示す不確定フラグをオン(不確定期間内を示す。)にし、変数max及びminをリセットし、カウンタNw0,Nq0,Nr0及びNo0をクリアし、その他の変数を初期化し、第0〜第4タイマをリセットする。
不確定期間は、アクションセンサ6からの加速度が、ユーザ9の運動(歩行及びラン)に起因したものなのか、あるいは、ユーザ9の運動(歩行及びラン)以外の生活動作(例えば、起立、着席、小さな身体の揺れ等)や外来振動(例えば、電車や自動車等)に起因したノイズと判断すべきものなのか、を確定できない期間のことである。本実施の形態では、不確定期間を4秒に設定してある。
第0タイマは、ステップS1002の一歩検出処理において、停止判断期間を計数する。停止判断期間は、本実施の形態では、1秒に設定してあり、1秒の間に、一歩が検出されない場合は、一歩の検出処理がリセットされる。第1タイマは、不確定期間及び停止判断期間を計測するタイマである。本実施の形態では、不確定期間を4秒に設定している。また、停止判断期間は、本実施の形態では、1秒に設定してあり、1秒の間に、一歩が検出されない場合は、一歩の検出処理がリセットされ、不確定期間が最初から始まる。第2タイマは、ステップS1007で一歩が検出された時点から次回のステップS1007で次の一歩が検出される時点までの時間、つまり、一歩の時間を計測するタイマである。第3タイマは、第1待ち時間を計測する。本実施の形態では、第1待ち時間は180ミリ秒である。第4タイマは、第2待ち時間を計測する。本実施の形態では、第2待ち時間は264ミリ秒である。
ここで、不確定期間が満了して初めて、その不確定期間内に検出された複数の一歩の動作が有効なものとして確定し、歩数として計数される。そして、不確定期間の満了以降に検出される一歩の動作は逐次歩数として計数される。ただし、不確定期間の満了後であっても、停止判断期間内に一歩の動作が検出されない場合は、再び不確定期間に入る。不確定期間の満了時から停止判断期間の満了時(つまり、次の不確定期間の開始時)までを有効期間と呼ぶ。また、不確定期間内において、停止判断期間内に一歩の動作が検出されない場合は、不確定期間が最初から開始され、それまでに当該不確定期間内に一歩の動作が検出されていた場合でも全てクリアされる。
さて、カウンタNw0,Nq0,Nr0及びNo0は、それぞれ、不確定期間内において、並足、早足、ラン及び昇降の回数を計数するカウンタである。後述のカウンタNw1,Nq1,Nr1及びNo1は、それぞれ、1日分の有効期間中の、並足、早足、ラン及び昇降の回数を計数するカウンタである。ただし、カウンタNw1,Nq1,Nr1及びNo1には、それぞれ、不確定期間の満了時に、当該不確定期間のカウンタNw0,Nq0,Nr0及びNo0の値が加算される。よって、カウンタNw1,Nq1,Nr1及びNo1は、それぞれ、1日分の有効な、並足、早足、ラン及び昇降の回数を計数するカウンタである。なお、これらのカウンタNw1,Nq1,Nr1及びNo1は、ステップS1000ではクリアされず、例えば、午前0時にクリアされる。
ステップS1001にて、MCU52は、第0タイマをスタートする。ステップS1002にて、MCU52は、加速度センサ29からの加速度データに基づいて、ユーザ9の一歩の動作を検出する。ステップS1003にて、MCU52は、第0タイマをストップする。
ステップS1004にて、つまり、ステップS1002で一歩の動作を検出した時に、MCU52は、第1タイマをスタートする。ステップS1005にて、つまり、ステップS1002又はS1009で一歩の動作を検出した時に、MCU52は、第2タイマをスタートする。
ステップS1007にて、MCU52は、アクションセンサ6からの加速度データに基づいて、ユーザ9の一歩の動作を検出する。ステップS1009にて、つまり、ステップS1007で一歩の動作が検出された時に、MCU52は、第2タイマをストップする。ステップS1011にて、MCU52は、加速度センサ29からの加速度データに基づいて、ユーザ9が行った運動形態を判定する。本実施の形態は、ユーザ9の運動形態は、並足、早足及びランのうちのいずれかに分類される。ステップS1013にて、MCU52は、第2タイマをリセットする。
ステップS1015にて、MCU52は、キャンセルボタン16及び決定ボタン14が同時に押下されたか否かを判断し、同時押下された場合はステップS1017へ進んで通信モードに移行し、同時押下されていない場合は歩数計モードを維持し、ステップS1005へ戻り、一歩検出及び運動形態判定を繰り返す。
ところで、ステップS1009で第2タイマをストップしてから、ステップS1013で第2タイマをリセットし、再びステップS1005で第2タイマをスタートするまでの時間は、運動形態の測定処理においては、実質的に0時間である。また、ステップS1003で第0タイマをストップしてから、ステップS1004で第1タイマをスタートし、ステップS1005で第2タイマをスタートするまでの時間は、運動形態の測定処理においては、実質的に0時間である。
さて、ステップS1017で通信モードに移行した後、ステップS1019にて、MCU52は、アンテナユニット24のMCU48からビーコンを受信したか否かを判断し、受信した場合は歩数計モードを終了し、受信していない場合はステップS1021に進む。ステップS1021にて、MCU52は、通信モードに移行してから5秒が経過したか否かを判断し、経過した場合はステップS1023へ進んで、歩数計モードに戻り、経過していない場合はステップS1019に戻る。プロセッサ13は、ステップS1023で歩数計モードへ移行した後、ステップS1000へ進む。
このように、通信モードに移行しても、5秒以上、アンテナユニット24と通信できない、または、通信しない場合は、歩数計モードへ戻る。
図22及び図23は、図21のステップS1007で実行される一歩検出処理の流れを示すフローチャートである。図22を参照して、ステップS1031にて、MCU52は、第1タイマがスタート時(ステップS1004)から一秒(停止判断期間)経過したか否かを判断し、経過した場合はユーザ9が停止していると判断し図21のステップS1000に戻り、経過していない場合はステップS1033に進む。ステップS1033にて、MCU52は、加速度センサ29から加速度データを取得する。
図24は、図22のステップS1033で実行される加速度データ取得処理の流れを示すフローチャートである。図24を参照して、ステップS1101にて、MCU52は、三軸それぞれの加速度データax,ay及びazを加速度センサ29から取得する。ステップS1103にて、MCU52は、合成加速度Axyzを求める。
ステップS1105にて、MCU52は、今回算出した合成加速度Axyzから前回算出した合成加速度Axyzを減算し、減算結果Dを得る。ステップS1107にて、MCU52は、減算結果Dの絶対値を算出して、変数Daに代入する。
ステップS1109にて、MCU52は、変数maxの値と今回算出した合成加速度Axyzとを比較する。ステップS1111にて、MCU52は、今回算出した合成加速度Axyzが変数maxの値より大きい場合はステップS1113に進み、それ以外はステップS1115に進む。そして、ステップS1113では、MCU52は、変数maxに今回の合成加速度Axyzを代入する。ステップS1109〜S1113により、一歩検出時から次の一歩検出時までの期間、つまり、一歩の期間における合成加速度Axyzの最大値maxを取得できる。
ステップS1115にて、MCU52は、変数minの値と今回算出した合成加速度Axyzとを比較する。ステップS1117にて、MCU52は、今回算出した合成加速度Axyzが変数minの値より小さい場合はステップS1119に進み、それ以外はリターンする。そして、ステップS1119にて、MCU52は、変数minに今回の合成加速度Axyzを代入してリターンする。ステップS1115〜S1119により、一歩検出時から次の一歩検出時までの期間、つまり、一歩の期間における合成加速度Axyzの最小値maxを取得できる。
図22に戻って、ステップS1035にて、MCU52は、パスフラグがオンか否かを判断し、オンの場合ステップS1043に進み、オフの場合ステップS1037に進む。パスフラグは、ステップS1037及びS1039の双方で肯定的判断がされた時にオンになるフラグである。ステップS1037にて、MCU52は、減算結果Dが負か否かを判断し、負の場合ステップS1039に進み、それ以外はステップS1031に戻る。ステップS1039にて、MCU52は、絶対値Daが所定値C0より大きいか否かを判断し、大きい場合ステップS1041に進み、それ以外はステップS1031に戻る。そして、ステップS1041にて、MCU52は、パスフラグをオンにしてステップS1031に進む。
ここで、減算結果Dが負ということは、前回の合成加速度Axyzに対して、今回の合成加速度Axyzが減少したことを意味する。また、絶対値Daが所定値C0より大きいということは、前回に対する今回の合成加速度Axyzの減少幅が所定値C0より大きいことを意味する。つまり、ステップS1037及びS1039の双方で肯定的判断がされた場合、合成加速度Axyzが、前回より一定値C0以上減少したことを意味する。
さて、ステップS1035でYESが判断された後、ステップS1043にて、MCU52は、減算結果Dが正か否かを判断し、正の場合ステップS1045に進み、それ以外はステップS1049に進む。ステップS1045にて、MCU52は、絶対値Daが所定値C1より大きいか否かを判断し、大きい場合ステップS1047に進み、それ以外はステップS1049に進む。ステップS1047にて、MCU52は、変数minの値が所定値C2より小さいか否かを判断し、小さい場合ステップS1051に進み、それ以外はステップS1049に進む。ステップS1051では、MCU52は、パスフラグをオフにして、図23のステップ1061に進む。
ここで、減算結果Dが正ということは、前回の合成加速度Axyzに対して、今回の合成加速度Axyzが増加したことを意味する。また、絶対値Daが所定値C1より大きいということは、前回に対する今回の合成加速度Axyzの増加幅が所定値C1より大きいことを意味する。さらに、変数minの値が所定値C2より小さいということは、合成加速度Axyzが、最小値をとったことを意味する。つまり、ステップS1043〜S1047で肯定的判断がされた場合、合成加速度Axyzが、最小値をとった後、前回より一定値C1以上増加したことを意味する。
さて、ステップS1043,S1045,又はS1047でNOが判断された後、ステップS1049では、MCU52は、パスフラグをオフにしてステップS1031に戻る。つまり、ステップS1043〜S1047のいずれかで否定的判断がされた場合は、一歩の検出が最初から行われ、ステップS1043には戻らない。
図23を参照して、ステップS1061にて、MCU52は、第3タイマをスタートする。ステップS1063にて、MCU52は、第1タイマがスタート時から一秒(停止判断期間)経過したか否かを判断し、経過した場合はユーザ9が停止していると判断し図21のステップS1000に戻り、経過していない場合はステップS1065に進む。ステップS1065にて、MCU52は、第3タイマがスタート時から180ミリ秒(第1待ち時間)が経過したか否かを判断し、経過していない場合ステップS1063に戻り、経過した場合ステップS1067に進む。ステップS1067にて、MCU52は、第3タイマをストップしリセットする。
ここで、第1待ち時間(ステップS1065)を設けたのは、合成加速度Axyzの最大値及び最小値の近傍のノイズを判断対象から除外するためである。ちなみに、合成加速度Axyzの最大値は、着地してから足が地面から離れるまでに発生し、最小値は、着地の直前に発生する。
さて、ステップS1069にて、MCU52は、第1タイマがスタート時から一秒(停止判断期間)経過したか否かを判断し、経過した場合はユーザ9が停止していると判断し図21のステップS1000に戻り、経過していない場合はステップS1071に進む。ステップS1071にて、MCU52は、加速度センサ29から加速度データを取得する。この処理は、ステップ1033と同じである。ステップS1073にて、MCU52は、合成加速度Axyzが1Gを超えているか否かを判断し、超えている場合はステップS1074に進み、超えていない場合はステップS1069に戻る。そして、ステップS1074にて、MCU52は、第4タイマをスタートする。なお、ステップS1073の処理は、第4タイマのスタート時を決定するための処理である。
ステップS1075にて、MCU52は、第1タイマがスタート時から一秒(停止判断期間)経過したか否かを判断し、経過した場合はユーザ9が停止していると判断し図21のステップS1000に戻り、経過していない場合はステップS1077に進む。ステップS1077にて、MCU52は、加速度センサ29から加速度データを取得する。この処理は、ステップ1033と同じである。ステップS1079にて、MCU52は、減算結果Dが負か否かを判断し、負の場合ステップS1081に進み、それ以外はステップS1075に戻る。ステップS1081にて、MCU52は、変数maxの値が所定値C3より大きいか否かを判断し、大きい場合はステップS1082に進み、それ以外はステップS1075に戻る。
ここで、減算結果Dが負ということは、前回の合成加速度Axyzに対して、今回の合成加速度Axyzが減少したことを意味する。従って、合成加速度Axyzは、一歩の検出開始から減少し(ステップS1037及びS1039で肯定的判断)、最小値をとり(ステップS1043〜S1047で肯定的判断)、上昇し(ステップS1073で肯定的判断)、再び減少したことになる(ステップS1079で肯定的判断)。つまり、ステップS1079で肯定的判断がされたことは、合成加速度Axyzのピークが検出されたことを意味する。また、変数maxの値が所定値C3より大きいということは、合成加速度Axyzが、一歩の検出開始から現在までに最大値をとったことを意味する。なお、合成加速度Axyzのピークが最大値とは限らない。
さて、ステップS1082では、MCU52は、第4タイマをストップしリセットする。ステップS1083にて、MCU52は、未だ264ミリ秒(第2待ち時間)が経過していないか否かを判断し、経過した場合は(否定的判断)図21のステップS1000に戻り、未だ経過していない場合は(肯定的判断)ステップS1084に進み、一歩が発生したと判断する。このステップS1084で一歩が発生したと判断された時点が一歩の動作の検出時である。そして、処理はリターンする。
このように、ステップS1037,S1039,S1043,S1045,S1047,S1065,S1073,S1079,S1081及びS1083の全てにおいて、一秒(停止判断期間)以内に肯定的判断がされた場合に一歩が発生したと判断される。
ここで、第2待ち時間(ステップS1083)を設けたのは、最小値をとってから比較的緩やかに増加して最大値をとる合成加速度Axyzをノイズとみなして判断の対象から除外するためである。つまり、比較的低い周波数のノイズを判断の対象から除外するためである。
また、図22のステップS1043,S1045及びS1047のいずれかで否定的判断がされた場合に、ステップS1043に戻らずに、ステップS1049を経由してステップS1031に戻っており、一歩の検出が再び最初から実行される。なぜなら、ステップS1043,S1045及びS1047のいずれかで否定的判断がされた場合は、経験的・実験的に、ステップS1037及びS1039の肯定的判断が疑わしい、つまり、ノイズに基づき肯定的判断がされた可能性が高いからである。一方、ステップS1073,S1079及びS1081のいずれかで否定的判断がされた場合でも、ステップS1031に戻っていない。
なお、所定値C0>C1、所定値C2<C3、である。所定値C2は、合成加速度Axyzがノイズでない歩行に基づく場合に想定される合成加速度Axyzの最小値がとりうる値の最大値である。所定値C3は、合成加速度Axyzがノイズでない歩行に基づく場合に想定される合成加速度Axyzの最大値がとりうる値の最小値である。所定値C0〜C3は、実験的に定められる。
ところで、ステップS1084で一歩の動作を検出したと判断してから、図21のステップS1009で第2タイマをストップし、ステップS1013で第2タイマをリセットし、再びステップS1005で第2タイマをスタートするまでの時間は、一歩の検出においては、実質的に0時間である。従って、第2タイマは、一歩の検出時から次の一歩の検出時までの時間、つまり、一歩の時間を計測する。より具体的には、第2タイマは、合成加速度Axyzのピークから次のピークまでの時間を計測しており、この時間は、一歩の時間である。なお、一歩の検出においては、ステップS1079で肯定的判断がされてから、ステップS1081での肯定的判断を経て、ステップS1083で肯定的判断がされるまでは、実質的に0時間である。ここで、本実施の形態では、この一歩の時間を「テンポ」と呼ぶこともある。なぜなら、一歩の時間は、歩幅を定数とする場合、歩行及びランの速さに相関し(反比例し)、速さの目安になるからである。
さて、図21のステップS1002の一歩検出処理は、ステップS1007の一歩検出処理と同様である。ただし、図22及び図23の説明において、「第1タイマ」を「第0タイマ」と読み替える。
図25は、図21のステップS1011で実行される運動形態判定方法の説明図である。図25を参照して、ステップS5001にて、MCU52は、ユーザ9が一歩の動作を行ったと判断すると(図23のステップS1084)、ステップS5003に進む。ステップS5003にて、MCU52は、合成加速度Axyzの最大値max(図24のステップS1109〜S1113)が所定値CH0より大きく、かつ、合成加速度Axyzの最小値min(図24のステップS1115〜S1119)が所定値CLより小さい場合ステップS5017に進み、暫定的にユーザ9の動きをランを表す運動形態に分類し、それ以外はステップS5005に進み、暫定的にユーザ9の動きを歩行を表す運動形態に分類する。
ステップS5007では、MCU52は、ユーザ9の時速が6kmより小さいか否かを判断し、小さい場合ステップS5009に進み、最終的にユーザ9の動きを並足を表す運動形態に分類し、それ以外はステップS5015に進み、最終的にユーザ9の動きを早足を表す運動形態に分類する。
ステップS5011にて、MCU52は、合成加速度Axyzの最大値maxが所定値CH2より大きいか否かを判断し、大きい場合ステップS5013に進んで、ユーザ9の動きが、階段等の昇降を伴う並足であると特定し、それ以外は通常の並足と判断する。
一方、ステップS5019では、MCU52は、ユーザ9の時速が8kmより大きいか否かを判断し、大きい場合ステップS5021に進み、暫定的にユーザ9の動きを早足/ランを表す運動形態に分類し、それ以外はステップS5015に進み、最終的にユーザ9の動きを早足を表す運動形態に分類する。ここで、早足/ランは、ユーザ9の動きが早足及びランのいずれかであるが未だ確定していない状態を示している。
ステップS5023では、MCU52は、合成加速度Axyzの最大値maxが所定値CH1より大きいか否かを判断し、大きい場合ステップS5025に進み、最終的にユーザ9の動きをランを表す運動形態に分類し、それ以外はステップS5015に進んで、最終的にユーザ9の動きを早足を表す運動形態に分類する。
以上のように、ステップS5003でユーザ9の動きを暫定的に歩行又はランに分類している。理由は次の通りである。
本実施の形態では、後述するように、ユーザ9の運動形態に応じて活動量を算出する。活動量(Ex)は、運動強度(メッツ)に時間(時)を掛けたものである。この運動強度は、運動形態に応じて定められる。運動形態のうちの歩行及びランは、速度によって区別される。従って、歩行及びランに応じて活動量を算出するためには、最終的にはユーザの動きを速度によって分類する方が好ましい。
ところが、速度だけで分類すると次のような不都合が発生する可能せいがある。ユーザ9の速度を求めるためには、歩幅と一歩の時間(テンポ)とが必要である。一般的に、一歩の時間は、歩いている場合は短く、走っている場合は長い。一方、一般的に、歩幅は、歩いている場合は小さく、走っている場合は大きい。従って、実際には走っているが、歩いている場合の歩幅に基づいて、時速を算出すると、その値が小さくなり、並足に分類される可能性がある。一方、実際には歩いているが、走っている場合の歩幅に基づいて、時速を算出すると、大きな値となり、ランに分類される可能性がある。
このため、本実施の形態では、ステップS5003でまず、合成加速度Axyzの大きさに基づいて、ユーザ9の動きを大雑把に歩行及びランのいずれかに分類している。こうすることで、歩幅を、歩行の場合とランの場合とでそれぞれ設定することができる。その結果、上記不都合は発生せず、ユーザ9の動きを速度に応じて適切に分類でき、ひいては、適切に活動量を算出できる。本実施の形態では、歩行の場合の歩幅をランの場合の歩幅より小さく設定して、ユーザ9の速度を算出する。本実施の形態では、一歩の時間は、図21のステップS1009で第2タイマがストップした時の値である。
さて、ステップS5019でユーザ9の動きが早足/ランに分類された後、ステップS5023で合成加速度Axyzの大きさにより、最終的に早足及びランのいずれかに特定している。なぜなら、ステップS5019だけでは、人によっては、実際には早足であってもランに分類される場合があるところ、より確実に判断を行うためである。
また、ステップS5011で昇降の判断が可能なのは、昇降判断の前の段階において、ステップS5003で加速度の大きさによりユーザ9の動きを歩行又はランに分類し、それからさらに、速度で分類しているからである。仮にもし、加速度の大きさのみでユーザ9の動きを分類するならば、昇降とランとを区別することができない。
なお、所定値CL,CH0,CH1及びCH2は、CL<CH2<CH0<CH1、を満足する。また、図23のステップS1081の所定値C3は、C3<CH2<CH0<CH1、を満足する。
図26は、図21のステップS1011で実行される運動形態判定処理の流れを示すフローチャートである。図26を参照して、ステップS1131にて、MCU52は、第2タイマの値、つまり、一歩の時間をテンポTMに代入する。ステップS1133にて、MCU52は、不確定フラグがオンか否かを判断し、オンの場合ステップS1135に進み、オフの場合不確定期間が満了しており、有効期間であることが示されるので、ステップS1147に進む。ステップS1135では、MCU52は、第1タイマの値が4秒(不確定期間)か否かを判断し、4秒の場合不確定期間の満了を意味し、当該不確定期間で検出された複数の一歩の動作がノイズでないことが確定したので、不確定期間の暫定的な運動形態を正規の運動形態として採用すべくステップS1137に進み、それ以外は未だ不確定期間内なのでノイズの可能性もありステップS1145に進む。
ステップS1137にて、MCU52は、不確定期間が満了したので、不確定フラグをオフにする。ステップS1139にて、MCU52は、第1タイマをストップしリセットする。ステップS1141にて、MCU52は、並足を計数する正規のカウンタNw1の値に、不確定期間の暫定的なカウンタNw0の値を加算する。MCU52は、早足を計数する正規のカウンタNq1の値に、不確定期間の暫定的なカウンタNq0の値を加算する。MCU52は、ランを計数する正規のカウンタNr1の値に、不確定期間の暫定的なカウンタNr0の値を加算する。昇降を計数する正規のカウンタNo1の値に、不確定期間の暫定的なカウンタNo0の値を加算する。ステップS1143にて、MCU52は、不確定期間のカウンタNw0、Nq0、Nr0及びNo0に0を代入し、ステップS1149に進む。
ステップS1135でNOが判断された後、ステップS1145にて、MCU52は、不確定期間内の運動形態判定処理を実行しステップS1149に進む。一方、ステップS1133でNOが判断された後、ステップS1147にて、MCU52は、有効期間内の運動形態判定処理を実行しステップS1149に進む。ステップS1147、S1143、又はS1145の後、ステップS1149では、MCU52は、運動形態を区別しないトータルの歩数を表すカウンタNtに、正規のカウンタNw1とNq1とNr1との合計値を代入する。
そして、ステップS1150にて、MCU52は、RTC56からの年月日及び時刻と関連付けて、カウンタNt1、Nw1、Nq1、Nr1及びNo1の値をEEPROM27に格納し、リターンする。この場合、MCU52は、これらの値を、所定時間単位(例えば5分)でEEPROM27に格納する。
図27は、図26のステップS1145で実行される不確定期間内での運動形態判定処理の流れを示すフローチャートである。なお、このフローチャートの概略が図25である。図27を参照して、ステップS1161にて、MCU52は、合成加速度Axyzの最大値max(図24のステップS1109〜S1113)が所定値CH0より大きいか否かを判断し、大きい場合ステップS1163に進み、それ以外はユーザ9の動きを暫定的に歩行に分類してステップS1177に進む。ステップS1163にて、MCU52は、合成加速度Axyzの最小値min(図24のステップS1115〜S1119)が所定値CLより小さいか否かを判断し、小さい場合ユーザ9の動きを暫定的にランに分類してステップS1165に進み、それ以外はユーザ9の動きを暫定的に歩行に分類してステップS1177に進む。
ステップS1165にて、MCU52は、テンポTM(図26のステップS1131)が所定値(TMRミリ秒)より小さいか否かを判断し、小さい場合ユーザ9の動きを早足/ランに分類してステップS1167に進み、それ以外はユーザ9の動きを最終的に早足に分類してステップS1173に進む。
ステップS1167にて、MCU52は、最大値maxが所定値CH1より大きいか否かを判断し、大きい場合ユーザ9の動きを最終的にランに分類してステップS1169に進み、それ以外はユーザ9の動きを最終的に早足に分類してステップS1173に進む。一方、ステップS1161又はS1163でNOが判断された後、ステップS1177では、MCU52は、テンポTMが所定値(TMWミリ秒)より大きいか否かを判断し、大きい場合はユーザ9の動きを最終的に並足に分類してステップS1179に進み、それ以外はユーザ9の動きを最終的に早足に分類してステップS1173に進む。
ステップS1173では、MCU52は、早足を計数するカウンタNq0を1つインクリメントする。ステップS1175にて、MCU52は、ユーザ9の運動形態を示す運動形態フラグを早足に設定してリターンする。
一方、ステップS1167でYESが判断された後、ステップS1169にて、MCU52は、ランを計数するカウンタNr0を1つインクリメントする。ステップS1171にて、MCU52は、運動形態フラグをランに設定してリターンする。
また、一方、ステップS1177でYESが判断された後、ステップS1179では、MCU52は、並足を計数するカウンタNw0を1つインクリメントする。ステップS1181にて、MCU52は、運動形態フラグを並足に設定する。
ステップS1183にて、MCU52は、最大値maxが所定値CH2より大きいか否かを判断し、大きい場合ユーザ9の並足が昇降を伴うものとしてステップS1185に進み、それ以外はリターンする。ステップS1185では、MCU52は、昇降を計数するカウンタNo0を1つインクリメントする。ステップS1187にて、MCU52は、運動形態フラグを昇降に設定してリターンする。
ここで、図25のステップS5007及びS5019ではユーザ9の速度に基づいて分類した。ただし、図27のステップS1177及びS1165では、速度に相関する(反比例する)テンポTMに基づいて分類している。この場合、歩行の場合の歩幅WL及びランの場合の歩幅RLが一定であることを仮定している。歩幅WL及びWRの関係は、WL<WR、である。なぜなら、一般に、歩行の場合の歩幅は、ランの場合の歩幅より小さいからである。また、所定値TMW及びTMRの関係は、TMW<TMR、である。なぜなら、一般に、歩行はランよりテンポが小さいからである。
さて、図26のステップS1047の有効期間内での運動形態判定処理は、ステップS1145の不確定期間内での運動形態判定処理と同様である。ただし、図27の説明において、「カウンタNw0」、「カウンタNq0」、「カウンタNr0」及び「カウンタNo0」を、それぞれ、「カウンタNw1」、「カウンタNq1」、「カウンタNr1」及び「カウンタNo1」と読み替える。
図28は、図20のカートリッジ4のプロセッサ13の全体処理の流れを示すフローチャートである。図28を参照して、ステップS100にて、プロセッサ13は、テレビジョンモニタ5にログイン画面を表示して、ログイン処理を実行する。この場合、まず、ユーザ9は、アクションセンサ6のキャンセルボタン16及び決定ボタン14を同時に押下して通信モードに移行する。それから、ユーザ9は、アクションセンサ6のスイッチ部50を操作して、ログイン画面上のログインボタンを押下し、プロセッサ13にログインに指示を出す。この指示を受けて、プロセッサ13はログインする。
ここで、ログイン時に実行される、カートリッジ4とアンテナユニット24とアクションセンサ6との間の通信手順について説明する。
図29は、図28のステップS100のログイン時に実行されるカートリッジ4のプロセッサ13とアンテナユニット24のMCU48(以下、この図の説明において「ホスト48」と呼ぶ。)とアクションセンサ6のMCU52(以下、この図の説明において「ノード52」と呼ぶ。)との間の通信手順を示す図である。図29を参照して、ステップS2001にて、プロセッサ13は、加速度データのリードコマンドをホスト48に与える。すると、ステップS3001にて、ホスト48は、そのリードコマンド、ノードID及びデータを含むビーコンをノード52に送信する。ここで、ノードIDは、ノード52、つまり、アクションセンサ6を識別するための情報である。本実施の形態では、例えば、4個のアクションセンサ6がそれぞれログイン可能であり、それぞれに異なるノードIDが割り当てられる。
ノード52が、自分に割り当てられたノードIDが含まれるビーコンを受信した場合、ステップS4001において、ノード52は、ホスト48から受け取ったコマンド、自分のノードID、スイッチ部50のキー(14,16,18)の状態(以下、「キーステータス」と呼ぶ。)、及び加速度センサ29から取得した加速度データax,ay及びazをホスト48へ送信する。
ステップS3003にて、ホスト48は、ノード52から受信したデータをプロセッサ13へ送信する。ステップS2003にて、プロセッサ13は、ホスト48からデータを受信したか否かを判断し、受信していない場合ステップS2005に進み、受信した場合ステップS2007に進む。ステップS2005では、プロセッサ13は、ビーコンに含めるノードIDを変更してステップS2001に進む。ビーコンに含まれるノードIDを持つノード52が見つからなければ、応答が返ってこないので、ステップS2005でノードIDを変更して、別のノード52を探すのである。なお、プロセッサ13は、ノード52が見つかった場合、以降、そのノード52とのみ通信する。
ステップS2007にて、プロセッサ13は、加速度データのリードコマンドをホスト48に与える。すると、ステップS3005にて、ホスト48は、そのリードコマンド、ノードID及びデータを含むビーコンをノード52に送信する。ステップS4003にて、ノード52は、ホスト48から受け取ったコマンド、自分のノードID、キーステータス及び加速度センサ29の加速度データをホスト48へ送信する。
ステップS3007にて、ホスト48は、ノード52から受信したデータをプロセッサ13へ送信する。ステップS2009にて、プロセッサ13は、ホスト48からデータを受信したか否かを判断し、受信していない場合ステップS2007に戻り、受信した場合ステップS2011に進む。ステップS2011では、プロセッサ13は、キーステータスを見て、ユーザ9によりログイン操作が行われたか否かを判断して、行われた場合ステップS2013に進み、それ以外はステップS2007に戻る。
ステップS2013にて、プロセッサ13は、カレンダ情報のリードコマンドをホスト48に与える。すると、ステップS3009にて、ホスト48は、そのリードコマンド、ノードID及びデータを含むビーコンをノード52に送信する。ステップS4005にて、ノード52は、ホスト48から受け取ったコマンド、自分のノードID、RTC56から受け取った年月日情報、及び日数情報をホスト48へ送信する。日数情報は、EEPROM27に何日分の歩数データが格納されているかを示す情報である。ステップS3011にて、ホスト48は、ノード52から受信したデータをプロセッサ13へ送信する。すると、プロセッサ13は、受信したデータをそのメインRAM及び/又はEEPROM44に格納する。
ステップS2015にて、プロセッサ13は、時計情報のリードコマンドをホスト48に与える。すると、ステップS3013にて、ホスト48は、そのリードコマンド、ノードID及びデータを含むビーコンをノード52に送信する。ステップS4007にて、ノード52は、ホスト48から受け取ったコマンド、自分のノードID、RTC56から受け取った時刻情報、及び電池フラグをホスト48へ送信する。電池フラグは、アクションセンサ6の電池が抜かれたか否かを示すフラグである。ステップS3015にて、ホスト48は、ノード52から受信したデータをプロセッサ13へ送信する。すると、ステップS2017にて、プロセッサ13は、自身の時計設定を行う。また、プロセッサ13は、受信したデータをそのメインRAM及び/又はEEPROM44に格納する。
ステップS2019にて、プロセッサ13は、活動記録のリードコマンドをホスト48に与える。すると、ステップS3017にて、ホスト48は、そのリードコマンド、ノードID及びデータを含むビーコンをノード52に送信する。ステップS4009にて、ノード52は、ホスト48から受け取ったコマンド、自分のノードID、及びEEPROM27に格納している活動記録(年月日及び時刻情報並びにそれらに関連付けられた運動形態毎の歩数データを含む。)をホスト48へ送信する。ステップS3019にて、ホスト48は、ノード52から受信したデータをプロセッサ13へ送信する。すると、ステップS2021にて、プロセッサ13は、受信したデータをそのメインRAM及び/又はEEPROM44に格納する。
ステップS2023にて、プロセッサ13は、記録消去のコマンドをホスト48に与える。すると、ステップS3021にて、ホスト48は、そのコマンド、ノードID及びデータを含むビーコンをノード52に送信する。ステップS4011にて、ノード52は、ホスト48から受け取った記録消去のコマンドに応答して、EEPROM27に格納している活動記録(歩数データを含む。)を消去する。
図30は、図29のステップS2017の時計設定処理の流れを示すフローチャートである。図30を参照して、ステップS2041にて、プロセッサ13は、電池フラグを参照して、アクションセンサ6の電池が交換されたか否かを判断し、交換されていない場合ステップS2043に進み、交換された場合ステップS2045に進む。ステップS2043では、プロセッサ13は、自身の時計(つまり、テレビジョンモニタ5に表示する時計)を、図29のステップS4005及びS4007でアクションセンサ6が送信した年月日及び時刻に設定しリターンする。
ステップS2045にて、プロセッサ13は、アクションセンサ6が送信した年月日及び時刻の情報が初期値を示しているか否かを判断し、初期値を示している場合はアクションセンサ6からの年月日及び時刻の情報が無効であると判断しステップS2055に進み、初期値以外を示してしている場合、アクションセンサ6からの年月日及び時刻の情報が有効であるとみなしてステップS2047に進む。
なお、上記のように、アクションセンサ6の電池が抜かれた場合でも、一定期間は、図20のコンデンサ62によりRTC56は動作するので、その期間であれば、正しい年月日及び時刻の情報がアクションセンサ6から送信されてくる。従って、この場合に、ステップS2045でYESが判断される。
ステップS2047にて、プロセッサ13は、アクションセンサ6の情報が有効とみなしたので、自身の時計をアクションセンサ6の年月日及び時刻に設定する。ステップS2049にて、プロセッサ13は、時計の確認画面をテレビジョンモニタ5に表示する。ステップS2051にて、プロセッサ13は、ユーザ9のアクションセンサ6の操作により確認画面上で時計が修正されたか否かを判断し、修正されていない場合リターンし、修正された場合ステップS2053に進む。ステップS2053にて、プロセッサ13は、修正された時計データ(年月日及び時刻)をアンテナユニット24を介してアクションセンサ6に送信してリターンする。すると、アクションセンサ6は、自身の時計を、プロセッサ13から受け取った年月日及び時刻に設定する。
ステップS2045でNOが判断された後、ステップS2055にて、プロセッサ13は、アクションセンサ6から有効な時計データ(年月日及び時刻)を受信したか否かを判断し、受信した場合ステップS2047に進み、それ以外はステップS2057に進む。
なお、アクションセンサ6の電池が抜かれ、時計データが無効になった場合でも、ユーザ9がアクションセンサ6に年月日及び時刻を入力することができる。従って、この場合に、ステップS2055でYESが判断される。
ステップS2055でNOが判断された後、ステップS2057にて、プロセッサ13は、ユーザ9がアクションセンサ6を操作してテレビジョンモニタ5の画面上でプロセッサ13の時計を設定したか否かを判断し、設定していない場合ステップS2055に戻り、設定した場合ステップS2053に進む。ステップS2053にて、プロセッサ13は、設定された時計データ(年月日及び時刻)をアンテナユニット24を介してアクションセンサ6に送信してリターンする。すると、アクションセンサ6は、自身の時計を、プロセッサ13から受け取った年月日及び時刻に設定する。
なお、ユーザ9は、アクションセンサ6を操作して、テレビジョンモニタ5の画面上で、プロセッサ13の時計を設定できる。従って、この場合に、ステップS2057でYESが判断される。
ところで、図28のステップS115の時計設定において、ユーザ9がプロセッサ13の時計をテレビジョンモニタ5の画面上で設定した場合、その時計データはアクションセンサ6に送信され、アクションセンサ6の時計は、プロセッサ13の時計に合わせられる。
また、アクションセンサ6のMCU52は、その内部RAMに電池フラグを格納する。MCU52は、電池がセットされ、電源電圧が供給されている場合は、内部RAMの電池フラグを「1」に設定する。ところが、電池が抜かれると、内部RAMのデータは即座に消去され、再び電池がセットされると、内部RAMの電池フラグは初期値「0」にセットされる。従って、電池フラグにより、アクションセンサ6の電池が抜かれたか否かを判断できる。
さて、図28に戻って、ステップS100でログインすると、ステップS101にて、プロセッサ13は、項目を選択するための項目選択画面をテレビジョンモニタ5表示する。ユーザ9は、スイッチ部50を操作して、項目選択画面上で所望の項目を選択する。本実施の形態で用意される項目は、「ログアウト」、「日々の記録」、「全体の記録」、「エクササイズ」、「測定」、「ユーザ情報修正」及び「システム設定」である。
ステップS102では、プロセッサ13は、ステップS101で選択された項目に応じて、ステップS103、S105、S107、S109、S111、S113及びS115のいずれかに処理を進める。
ステップS101で「ログアウト」項目が選択された後、ステップS103では、プロセッサ13は、終了画面(図示せず)をテレビジョンモニタ5に表示する。この終了画面は、現在までの累積歩数(歩数計モードでの歩数+ステップS109で計測された歩数)と、その歩数を距離に換算した歩行距離と、を含む。この場合、歩行距離の現実感を演出するために、その歩行距離を実際の地図上の経路に対応させ、当該地図の上に足跡を表示する。ユーザ9は、スイッチ部50を操作して、終了画面上のログアウトボタンを押下し、プロセッサ13にログアウトの指示を出す。この指示を受けて、プロセッサ13は、ログアウトすると共に、歩数計モードに移行するコマンドをアクションセンサ6に送信して、ステップS100に戻る。このコマンドを受けて、アクションセンサ6は、歩数計モードに移行する。
ステップS101で「日々の記録」項目が選択された後、ステップS105では、プロセッサ13は、日々の記録を表す画面を表示して、ステップS101に戻る。具体的には、プロセッサ13は、まず、カレンダを含む画面をテレビジョンモニタ5に表示する。ユーザ9は、アクションセンサ6のスイッチ部50を操作して、所望の日付を当該カレンダから選択する。すると、プロセッサ13は、選択画面をテレビジョンモニタ5に表示する。この選択画面は、「活動量と歩数推移」のボタンと「バイタル推移」のボタンとを含む。
ユーザ9は、アクションセンサ6のスイッチ部50を操作して、所望のボタンを選択する。「活動量と歩数推移」のボタンが選択された場合、プロセッサ13は、現在まで蓄積してきた活動量や歩数を棒グラフで表す推移画面をテレビジョンモニタ5に表示する。この推移画面は、1週間分の表示、1日分の表示、1時間分の表示を切り替えて表示できる。
図57は、1週間分の表示を含む推移画面の例示図である。図57を参照して、プロセッサ13は、テレビジョンモニタ5に推移画面を表示する。この推移画面は、4週間の活動量を日単位で棒グラフで表示する活動量表示部124と、4週間の歩数を日単位で棒グラフで表示する歩数表示部126と、を含む。
活動量表示部124の棒グラフの各バーは、4色(色彩は省略)からなる。4色は、それぞれ、並足、早足、ラン、及びテレビに対応する。つまり、並足、早足、ラン、及びテレビのそれぞれでの活動量が色分けして示される。なお、ここでいうテレビは、図28のステップS109でユーザ9が行ったエクササイズ時の活動量を示す。これらの点は、歩数表示部126の棒グラフのバーについても同様である。
また、活動量表示部124及び歩数表示部126に跨ってカーソル120が表示される。このカーソル120は、活動量表示部124及び歩数表示部126の1週間分を覆い、このカーソル120が位置する一週間分の活動量及び歩数のデータが、データ表示部122に表示される。ユーザ9は、方向キー18を操作して、カーソル120を任意に移動できる。
ユーザ9が方向キー18を操作することにより、カーソル120が一日分の活動量表示部124及び歩数表示部126を覆い、このカーソル120が位置する一日分の活動量及び歩数のデータを、データ表示部122に表示することもできる。
また、ユーザ9が方向キー18を操作することにより、活動量表示部124が1日の活動量を時間単位で棒グラフで表示し、歩数表示部126が1日の歩数を時間単位で棒グラフで表示することもできる。この場合、カーソル120は、活動量表示部124及び歩数表示部126の1時間分を覆い、このカーソル120が位置する一時間分の活動量及び歩数のデータが、データ表示部122に表示される。なお、表示項目はこれら以外にも任意に設定できる。
さて、一方、ユーザ9が、アクションセンサ6のスイッチ部50を操作して、「バイタル推移」のボタンを選択した場合、プロセッサ13は、現在まで蓄積してきたバイタル記録を折線グラフで表すバイタル画面をテレビジョンモニタ5に表示する。
図58は、バイタル画面の例示図である。図58を参照して、このバイタル画面は、4週間の体重を日単位で折線グラフで表示する体重表示部130と、4週間の腹囲を日単位で折線グラフで表示する腹囲表示部132と、4週間の血圧を日単位で折線グラフで表示する血圧表示部134と、を含む。また、体重表示部130、腹囲表示部132及び血圧表示部134に跨ってカーソル138が表示される。このカーソル138は、体重表示部130、腹囲表示部132及び血圧表示部134の1日分を覆い、このカーソル138が位置する日の体重、腹囲及び血圧のデータが、データ表示136に表示される。ユーザ9は、方向キー18を操作して、カーソル138を任意に移動できる。なお、表示項目はこれら以外にも任意に設定できる。
図28に戻って、ステップS101で「全体の記録」項目が選択された後、ステップS107では、プロセッサ13は、全体の記録を表す画面をテレビジョンモニタ5に表示して、ステップS101に戻る。全体の記録を表す画面として、傾向グラフ画面、記録管理画面及び減量達成率画面が用意される。ユーザ9は、アクションセンサ6のスイッチ部50を操作して、これらの表示を切り替えることができる。
図56は、傾向グラフ画面の例示図である。図56を参照して、プロセッサ13は、テレビジョンモニタ5に傾向グラフ画面を表示することができる。この画面は、減量プログラムの開始日から終了日までの活動量、歩数、体重、腹囲及び血圧の推移を表した折線グラフを含む。なお、表示項目はこれら以外にも任意に設定できる。
図55は、減量達成率画面の例示図である。図55を参照して、プロセッサ13は、テレビジョンモニタ5に減量達成率画面を表示することができる。この減量達成率画面は、目標体重と現在の体重並びに体重の減量達成率を含む。また、体重の減量実績値と残りの減量目標値とを含む。また、この減量達成率画面は、目標腹囲と現在の腹囲並びに腹囲の減量達成率を含む。また、腹囲の減量実績値と残りの減量目標値とを含む。
なお、図示は省略したが、記録管理画面は、記録管理表を含む。記録管理表は、主要なバイタル情報や活動量・歩数などの記録を1日毎にまとめた表である。
図28に戻って、ステップS101で「エクササイズ」項目が選択された後、ステップS109では、プロセッサ13は、ユーザ9にエクササイズを行わせる処理を実行して、ステップS101に戻る。この処理の詳細は後述する。
ステップS101で「測定」項目が選択された後、ステップS111では、プロセッサ13は、ユーザ9のアクションセンサ6の操作に応じて、心拍数測定、脚力測定(空気椅子テスト)、体力測定、体力年齢テスト又は脳トレーニングを選択的に実行して、ステップS101に戻る。これらの処理は、図5のステップS13のサブコンテンツ処理と同じであり、説明を省略する。
ステップS101で「ユーザ情報修正」項目が選択された後、ステップS113では、プロセッサ13は、ユーザ9のアクションセンサ6の操作に応じて、ユーザ情報を修正する処理を実行して、ステップS101に戻る。
具体的には、ステップS113では、プロセッサ13は、ユーザ登録時にユーザがアクションセンサ6を操作して入力した、基本情報、初期バイタル情報、及び減量プログラムの修正処理を、ユーザ9のアクションセンサ6の操作に応じて、選択的に実行する。基本情報は、名前、ID、生年月日、及び性別等を含む。初期バイタル情報は、身長、体重、BMI(自動計算)、腹囲、血圧、心拍数、中性脂肪、HDL、血糖値、及び歩幅等を含む。減量プログラムは、本プログラム終了時の目標体重、本プログラム終了時の目標腹囲、本プログラム終了までの期間、現在の平均1日歩数、及び運動と食事の減量割合等を含む。
図53は、図28のステップS113で実行される減量プログラムの修正画面の例示図である。図53を参照して、この修正画面では、ユーザ9は、アクションセンサ6を操作して、減量プログラム終了時の目標体重、目標腹囲、終了までの期間、現在の平均1日歩数、及び、減量の割合(身体活動:食事)を修正できる。すると、プロセッサ13は、これらの入力値と、現在登録されている体重と、に基づいて、目標達成のために、ユーザ9が運動により消費すべき1週間の目標活動量(Ex、kcal)並びに1日の目標活動量(Ex、kcal)及び目標歩数を算出し、これらを表示する。また、プロセッサ13は、目標達成のために、ユーザ9が食事で削減すべき1週間及び1日の目標エネルギ(kcal)を表示する。
なお、ユーザ登録時においても、この修正画面と同様の入力画面が表示され、ユーザ9は、最初に減量プログラムを設定する。
図28に戻って、ステップS101で「システム設定」項目が選択された後、ステップS115では、プロセッサ13は、システム設定を実行して、ステップS101に戻る。具体的には、プロセッサ13は、ユーザ9のアクションセンサ6の操作に応じて、時計設定、アクションセンサ6の調整、及びセンシングプレビューを選択的に実行する。なお、ユーザ9は、プレイ中に歩数が正しくカウントされない、テレビジョンモニタ5に表示されたキャラクタが自分の動きと違う動きをしてしまう等、アクションセンサ6による検知に関して違和感を持ったときに、アクションセンサ6の調整を行うことができる。また、ユーザ9は、センシングプレビューにより、アクションセンサ6の感度を確認できる。
さて、次に、図28のステップS109で実行されるエクササイズ処理の詳細を説明する。ステップS109では、プロセッサ13は、まず、図54のメニュー画面をテレビジョンモニタ5に表示する。この画面は、「ストレッチ&サーキット」項目、「ステップエクササイズ」項目、「トレインエクササイズ」項目、「メイズエクササイズ」項目、及び「リングエクササイズ」項目を含む。ユーザ9は、アクションセンサ6を操作して、所望の項目を選択すると、プロセッサ13は、選択された項目に応じた処理を実行する。
また、プロセッサ13は、このメニュー画面に、減量プログラム終了までの日数を表示する。また、プロセッサ13は、当該画面に、今週の達成活動量と今週の目標までの活動量、今日の達成活動量と今日の目標までの活動量、今日の歩数と目標までの残りの歩数、現在の体重と目標体重との差、並びに、現在の腹囲と目標腹囲との差を表示する。これらの目標値は、ユーザ登録時の減量プログラムの入力画面又は図53の修正画面で算出された最新の身体活動目標値に基づき算出される。
実施の形態2における「ストレッチ&サーキット」、「ステップエクササイズ」、「トレインエクササイズ」、「メイズエクササイズ」、及び「リングエクササイズ」の処理は、それぞれ、実施の形態1の「ストレッチ&サーキット」、「ステップエクササイズ」「トレインエクササイズ」、「メイズエクササイズ」、及び「リングエクササイズ」と同様の処理である。
従って、図7〜図18を適宜参照しながら、以下、「ストレッチ&サーキット」、「ステップエクササイズ」、「トレインエクササイズ」、「メイズエクササイズ」、及び「リングエクササイズ」の順で詳細を説明する。
図31は、図28のステップS109のエクササイズ処理で実行されるストレッチ&サーキットモードの処理の流れを示すフローチャートである。図31を参照して、ステップS130にて、プロセッサ13は、ウォーミングアップのためのストレッチ体操をユーザ9に行わせるための処理を実行する(例えば図7)。ステップS132にて、プロセッサ13は、サーキット運動をユーザ9に行わせるための処理を実行する(例えば図8)。ステップS134にて、プロセッサ13は、クールダウンのためのストレッチ体操をユーザ9に行わせるための処理を実行する(例えば図7)。ステップS136にて、プロセッサ13は、今回のストレッチ&サーキットモードで行われた活動量を含む結果画面を表示してリターンする。
図32は、図31のステップS130で実行されるストレッチ処理の流れを示すフローチャートである。図32を参照して、ステップS150にて、プロセッサ13は、トレーナキャラクタ43が第Kストレッチ体操を行った回数を計数するカウンタCW1に0を代入する。ステップS152にて、プロセッサ13は、アニメーションテーブルを変更(設定)する。アニメーションテーブルは、ストレッチ体操を行うトレーナキャラクタ43のアニメーションを制御するためのテーブルであり、ストレッチ体操の種類ごとに用意される。ステップS154にて、プロセッサ13は、ステップS152で変更(設定)されたアニメーションテーブルに従って、第Kストレッチ体操を行うトレーナキャラクタ43のアニメーションを開始する。
ステップS156にて、プロセッサ13は、第Kストレッチ体操が一回終了したか否かを判断し、終了していない場合ステップS156に戻り、終了した場合ステップS158に進む。ステップS158にて、プロセッサ13は、カウンタCW1を1つインクリメントする。ステップS160にて、プロセッサ13は、カウンタCW1が所定値Ntに到達したか否かを判断し、つまり、第Kストレッチ体操がNt回行われたか否かを判断し、所定値Ntに到達していない場合ステップS154に戻り、所定値Ntに到達した場合第Kストレッチ体操のステージが終了したのでステップS162に進む。ステップS162にて、プロセッサ13は、最後のストレッチ体操が終了したか否かを判断し、終了した場合リターンし、それ以外は第(K+1)ストレッチ体操のための処理を行うべくステップS150に進む。
なお、図31のステップS134の処理は、ストレッチ体操のアニメーションがクールダウンに適した内容に変わるだけで、ステップS130の処理(図32の処理)と同様である。ちなみに、ステップS130では、ウォーミングアップに適したストレッチ体操のアニメーションが実行される。
図33は、図31のステップS132で実行されるサーキット処理の流れを示すフローチャートである。図33を参照して、ステップS170にて、プロセッサ13は、第Jサーキット運動をユーザ9が行った回数を計数するカウンタCW2に0を代入する。ステップS172にて、プロセッサ13は、アニメーションテーブルを変更(設定)する。アニメーションテーブルは、サーキット運動を行うトレーナキャラクタ43のアニメーションを制御するためのテーブルであり、サーキット運動の種類ごとに用意される。
ステップS174にて、プロセッサ13は、後述の図34〜図39の処理で使用する評価パラメータ(各種タイマTp,Tp1〜Tp3,Ti,Ti1,Ti2の値)をリセットする。ステップS176にて、プロセッサ13は、トレーナキャラクタ43が行うサーキット運動に応じて、ユーザ9の動きの識別を開始する。この場合、図14(a)〜図14(e)で説明した体動識別方法により、ユーザ9の動きを識別する。
ステップS178にて、プロセッサ13は、ステップS172で変更(設定)したアニメーションテーブルに従って、第Jサーキット運動を行うトレーナキャラクタ43のアニメーションを開始する。ステップS180にて、プロセッサ13は、第Jサーキット運動のアニメーションが1回終了したか否かを判断し、終了していない場合はステップS180に戻り、終了した場合はステップS182に進む。
ステップS182にて、プロセッサ13は、第Jサーキット運動がNk回終了したか否かを判断し、終了していない場合ステップS174に戻り、終了した場合ステップS183に進む。ステップS183にて、プロセッサ13第Jサーキット運動の活動量を算出する。具体的には、サーキット運動の種類ごとに、1回当たりの活動量を予め求めておく。そして、1回当たりの活動量に、対応するサーキット運動の回数(カウンタCW2の値)を乗じることにより、そのサーキット運動を行った場合のユーザ9の活動量EXUを算出する。ステップS184にて、プロセッサ13は、ステップS183で求めた活動量EXUを、今回のサーキット処理の中で算出された活動量の累積値AEXに加算して、最新の累積値を得る(AEX←AEX+EXU)。
ステップS186にて、プロセッサ13は、最後のサーキット運動のアニメーションが終了したか否かを判断し、終了していない場合第(J+1)サーキット運動のアニメーションを行うべくステップS170に進み、終了した場合はリターンする。
図31に戻って、ステップS136では、プロセッサ13は、ステップS186でYESが判断された直前のステップS184の活動量の累積値AEXを含む結果画面を表示する。なお、ステップS130及びS134のストレッチ処理で行われたユーザ9の活動量をサーキット処理での累積値AEXに加算して表示することもできる。この場合は、テレビジョンモニタ5に表示されたストレッチ運動をユーザ9が行ったとみなして、活動量を算出する。ただし、ユーザ9がスキップしたストレッチ運動については、当該ストレッチ運動をユーザ9が行ったとみなさない。なお、ユーザ9は、アクションセンサ6を操作することにより、テレビジョンモニタ5に映し出された、サーキット運動を行うトレーナキャラクタ43のアニメーションをスキップすることができる。
図34は、図33のステップS176で開始される体動識別処理(図14(a)の第1体動パターン)の流れを示すフローチャートである。図34を参照して、ステップS200にて、プロセッサ13は、アクションセンサ6から各軸の加速度データax,ay及びazを取得する。ステップS202にて、プロセッサ13は、加速度データax,ay及びazの合成加速度Axyzを算出する。ステップS204にて、プロセッサ13は、合成加速度Axyzが閾値ThHを超えたか否かを判断し、超えた場合ステップS206に進み、それ以外はステップS200に戻る。
ステップS206にて、プロセッサ13は、図14(a)の時間Tpを図るためのタイマTpをスタートする。ステップS208にて、プロセッサ13は、アクションセンサ6から各軸の加速度データax,ay及びazを取得する。ステップS210にて、プロセッサ13は、加速度データax,ay及びazの合成加速度Axyzを算出する。ステップS212にて、プロセッサ13は、合成加速度Axyzが閾値ThLを下回ったか否かを判断し、下回った場合ステップS214に進み、それ以外はステップS208に戻る。
ステップS214にて、プロセッサ13は、タイマTpをストップする。ステップS216にて、プロセッサ13は、タイマTpの値が所定値t0と所定値t1との間に入っているか否かを判断し、入っている場合ユーザ9がトレーナキャラクタ43が指示するサーキット運動(第1体動パターン)を行ったと判断してステップS218に進み、それ以外は処理を終了する。ステップS218にて、プロセッサ13は、カウンタCW2を1つインクリメントして処理を終了する。
図35及び図36は、図33のステップS176で開始される体動識別処理(図14(b)の第2体動パターン)の流れを示すフローチャートである。図35を参照して、ステップS230にて、プロセッサ13は、アクションセンサ6から各軸の加速度データax,ay及びazを取得する。ステップS232にて、プロセッサ13は、加速度データax,ay及びazの合成加速度Axyzを算出する。ステップS234にて、プロセッサ13は、合成加速度Axyzが閾値ThH1を超えたか否かを判断し、超えた場合ステップS236に進み、それ以外はステップS230に戻る。
ステップS236にて、プロセッサ13は、図14(b)の時間Tp1を図るための第1タイマTp1をスタートする。ステップS238にて、プロセッサ13は、アクションセンサ6から各軸の加速度データax,ay及びazを取得する。ステップS240にて、プロセッサ13は、加速度データax,ay及びazの合成加速度Axyzを算出する。ステップS242にて、プロセッサ13は、合成加速度Axyzが閾値ThL1を下回ったか否かを判断し、下回った場合ステップS244に進み、それ以外はステップS238に戻る。
ステップS244にて、プロセッサ13は、第1タイマTp1をストップする。ステップS246にて、プロセッサ13は、第1タイマTp1の値が所定値t0と所定値t1との間に入っているか否かを判断し、入っている場合ステップS248に進み、それ以外は処理を終了する。ステップS248にて、プロセッサ13は、図14(b)の時間Tiを図るための第2タイマTiをスタートする。ステップS250にて、プロセッサ13は、第2タイマTiの値が所定値Tiに等しくなったか否かを判断し、等しくなった場合ステップS252に進み、それ以外はステップS250に戻る。ステップS252にて、プロセッサ13は、第2タイマTiをストップして、図36のステップS260に進む。
図36を参照して、ステップS260にて、プロセッサ13は、アクションセンサ6から各軸の加速度データax,ay及びazを取得する。ステップS262にて、プロセッサ13は、加速度データax,ay及びazの合成加速度Axyzを算出する。ステップS264にて、プロセッサ13は、合成加速度Axyzが閾値ThH2を超えたか否かを判断し、超えた場合ステップS266に進み、それ以外はステップS260に戻る。
ステップS266にて、プロセッサ13は、図14(b)の時間Tp2を計るための第3タイマTp2をスタートする。ステップS268にて、プロセッサ13は、アクションセンサ6から各軸の加速度データax,ay及びazを取得する。ステップS270にて、プロセッサ13は、加速度データax,ay及びazの合成加速度Axyzを算出する。ステップS272にて、プロセッサ13は、合成加速度Axyzが閾値ThL2を下回ったか否かを判断し、下回った場合ステップS274に進み、それ以外はステップS268に戻る。
ステップS274にて、プロセッサ13は、第3タイマTp2をストップする。ステップS276にて、プロセッサ13は、第3タイマTp2の値が所定値t2と所定値t3との間に入っているか否かを判断し、入っている場合ユーザ9がトレーナキャラクタ43が指示するサーキット運動(第2体動パターン)を行ったと判断してステップS278に進み、それ以外は処理を終了する。ステップS278にて、プロセッサ13は、カウンタCW2を1つインクリメントして処理を終了する。
図37〜図39は、図33のステップS176で開始される体動識別処理(図14(e)の第5体動パターン)の流れを示すフローチャートである。図37を参照して、ステップS290にて、プロセッサ13は、アクションセンサ6から各軸の加速度データax,ay及びazを取得する。ステップS292にて、プロセッサ13は、加速度データax,ay及びazの合成加速度Axyzを算出する。ステップS294にて、プロセッサ13は、合成加速度Axyzが閾値ThL1を下回ったか否かを判断し、下回った場合ステップS296に進み、それ以外はステップS290に戻る。
ステップS296にて、プロセッサ13は、図14(e)の時間Tp1を図るための第1タイマTp1をスタートする。ステップS298にて、プロセッサ13は、アクションセンサ6から各軸の加速度データax,ay及びazを取得する。ステップS300にて、プロセッサ13は、加速度データax,ay及びazの合成加速度Axyzを算出する。ステップS302にて、プロセッサ13は、合成加速度Axyzが閾値ThH1を超えたか否かを判断し、超えた場合ステップS304に進み、それ以外はステップS298に戻る。
ステップS304にて、プロセッサ13は、第1タイマTp1をストップする。ステップS306にて、プロセッサ13は、第1タイマTp1の値が所定値t4と所定値t5との間に入っているか否かを判断し、入っている場合ステップS308に進み、それ以外は処理を終了する。ステップS308にて、プロセッサ13は、図14(e)の時間Ti1を図るための第2タイマTi1をスタートする。ステップS310にて、プロセッサ13は、第2タイマTi1の値が所定値Ti1に等しくなったか否かを判断し、等しくなった場合ステップS312に進み、それ以外はステップS310に戻る。ステップS312にて、プロセッサ13は、第2タイマTi1をストップして、図38のステップS320に進む。
図38を参照して、ステップS320にて、プロセッサ13は、アクションセンサ6から各軸の加速度データax,ay及びazを取得する。ステップS322にて、プロセ下回ったか否かを判断し、下回った場合ステップS326に進み、それ以外はステップS320に戻る。
ステップS326にて、プロセッサ13は、図14(e)の時間Tp2を計るための第3タイマTp2をスタートする。ステップS328にて、プロセッサ13は、アクションセンサ6から各軸の加速度データax,ay及びazを取得する。ステップS330にて、プロセッサ13は、加速度データax,ay及びazの合成加速度Axyzを算出する。ステップS332にて、プロセッサ13は、合成加速度Axyzが閾値ThH2を超えたか否かを判断し、超えた場合ステップS334に進み、それ以外はステップS328に戻る。
ステップS334にて、プロセッサ13は、第3タイマTp2をストップする。ステップS336にて、プロセッサ13は、第3タイマTp2の値が所定値t6と所定値t7との間に入っているか否かを判断し、入っている場合ステップS338に進み、それ以外は処理を終了する。
ステップS338にて、プロセッサ13は、図14(e)の時間Ti2を図るための第4タイマTi2をスタートする。ステップS340にて、プロセッサ13は、第4タイマTi2の値が所定値Ti2に等しくなったか否かを判断し、等しくなった場合ステップS342に進み、それ以外はステップS340に戻る。ステップS342にて、プロセッサ13は、第4タイマTi2をストップして、図39のステップS350に進む。
図39を参照して、ステップS350にて、プロセッサ13は、アクションセンサ6から各軸の加速度データax,ay及びazを取得する。ステップS352にて、プロセッサ13は、加速度データax,ay及びazの合成加速度Axyzを算出する。ステップS354にて、プロセッサ13は、合成加速度Axyzが閾値ThL3を下回ったか否かを判断し、下回った場合ステップS356に進み、それ以外はステップS350に戻る。
ステップS356にて、プロセッサ13は、図14(e)の時間Tp3を計るための第5タイマTp3をスタートする。ステップS358にて、プロセッサ13は、アクションセンサ6から各軸の加速度データax,ay及びazを取得する。ステップS360にて、プロセッサ13は、加速度データax,ay及びazの合成加速度Axyzを算出する。ステップS362にて、プロセッサ13は、合成加速度Axyzが閾値ThH3を超えたか否かを判断し、超えた場合ステップS364に進み、それ以外はステップS358に戻る。
ステップS364にて、プロセッサ13は、第5タイマTp3をストップする。ステップS366にて、プロセッサ13は、第5タイマTp3の値が所定値t8と所定値t9との間に入っているか否かを判断し、入っている場合ユーザ9がトレーナキャラクタ43が指示するサーキット運動(第5体動パターン)を行ったと判断してステップS368に進み、それ以外は処理を終了する。ステップS368にて、プロセッサ13は、カウンタCW2を1つインクリメントして処理を終了する。
さて、図33のステップS176で開始される体動識別処理(図14(c)の第3体動パターン)の流れは、図35及び図36で示したフローチャートと同様である。ただし、図14(c)の第3体動パターンの識別では、ステップS248〜S252は実行されず、ステップS246でYESが判断されると、ステップS260に進む。
また、図33のステップS176で開始される体動識別処理(図14(d)の第4体動パターン)の流れは、図37〜図39で示したフローチャートと同様である。ただし、図14(d)の第4体動パターンの識別では、ステップS338〜S366は実行されず、ステップS336でYESが判断されると、ステップS368に進む。
さて、次に、「ステップエクササイズ」の詳細を説明する。
図40は、図28のステップS109のエクササイズ処理で実行されるステップエクササイズ処理の流れを示すフローチャートである。図40を参照して、ステップS380にて、プロセッサ13は、遅れフラグをオフにする。遅れフラグは、ユーザ9の仮想空間内の位置とトレーナキャラクタ43の位置との間の距離が第1所定距離D1(>第2所定距離D2)より大きくなった時にオンになるフラグである。
ステップS381にて、プロセッサ13は、図9のスタート画面を表示する。ステップS382にて、プロセッサ13は、所定速度Vtに基づいてトレーナキャラクタ43の仮想空間内の位置を算出する。ステップS384にて、プロセッサ13は、ユーザ9の足踏み速度に応じてユーザ9の仮想空間内の位置を算出する。ステップS386にて、プロセッサ13は、仮想空間内のトレーナキャラクタ43とユーザ9との間の距離Dtpを算出する。
ステップS388にて、プロセッサ13は、第1所定距離D1をランダムに決定する。ステップS390にて、プロセッサ13は、遅れフラグがオンか否かを判断し、オンの場合ステップS404に進み、オフの場合ステップS392に進む。ステップS404にて、プロセッサ13は、距離Dtpが第2所定距離D2より小さいか否かを判断し、小さい場合ユーザ9が再びトレーナキャラクタ43に追いついたと判断しステップS406に進み、それ以外はユーザ9が未だトレーナキャラクタ43に対して遅れすぎていると判断してステップS410に進む。
ステップS406にて、プロセッサ13は、遅れフラグをオフにする。ステップS408にて、プロセッサ13は、トレーナキャラクタ43が前を向くアニメーションを表示して、ステップS382に進む。
ステップS392にて、プロセッサ13は、距離Dtpが第1所定距離D1より大きいか否かを判断し、大きい場合ユーザ9がトレーナキャラクタ43に対して遅れすぎと判断してステップS394に進み、それ以外はステップS400に進む。ステップS394にて、プロセッサ13は、遅れフラグをオンにする。ステップS396にて、プロセッサ13は、トレーナキャラクタ43が振り返るアニメーションを表示する(例えば図11)。ステップS398にて、プロセッサ13は、トレーナキャラクタ43が走り出してから現時点までの時間に応じてボイスを生成し、ステップS384に進む。
ステップS392でのNOの判断は、ユーザ9がトレーナキャラクタ43がガイドするペースで足踏みしていることを意味し、ステップS400にて、プロセッサ13は、ステップS382及びS384の結果に基づいて、仮想空間中のトレーナキャラクタ43及びユーザ9の位置を更新する(例えば図10)。ステップS402にて、プロセッサ13は、ユーザ9がゴールに到達したか否かを判断し、到達していない場合ステップS382に進み、到達した場合ステップS414に進む。
ステップS404でNOが判断された後、ステップS410にて、プロセッサ13は、ユーザ9の位置を更新する。ステップS412にて、プロセッサ13は、ユーザ9がゴールに到達したか否かを判断し、到達していない場合ステップS384に進み、到達した場合ステップS414に進む。
ステップS402又はS412でYESが判断された後、ステップS414にて、プロセッサ13は、今回のステップエクササイズで行われた活動量を含む結果画面を表示してリターンする。
さて、次に、「トレインエクササイズ」の詳細を説明する。
図41は、図28のステップS109のエクササイズ処理で実行されるトレインエクササイズ処理の流れを示すフローチャートである。図41を参照して、ステップS430にて、プロセッサ13は、ユーザフラグを第1状態に設定する。ユーザフラグは、ユーザ9の状態を示すフラグであり、図42で詳細に説明される。
ステップS432にて、プロセッサ13は、図12の出発画面を表示する。ステップS434にて、プロセッサ13は、ユーザ9の足踏み速度に応じてユーザ9の仮想空間内の実速度Vrを算出する。実速度Vrは、ユーザ9の足踏み速度に比例する。一方、後述の移動速度Vpは、ユーザ9の仮想空間中での移動速度、つまり、表示のための速度であり、必ずしも実速度Vrと一致するわけではなく、トレーナキャラクタ43との関係で決定されることもある。
ステップS436にて、プロセッサ13は、ユーザフラグの内容に応じて、トレーナキャラクタ43の速度Vtを設定する。ステップS438にて、プロセッサ13は、速度Vtに基づいて、トレーナキャラクタ43の仮想空間内の位置を算出する。
ステップS440にて、プロセッサ13は、ユーザフラグの内容に応じて、ユーザ9の仮想空間内の移動速度Vpを設定する。ステップS442にて、プロセッサ13は、移動速度Vpに基づいて、ユーザ9の仮想空間内の位置を算出する。
ステップS444にて、プロセッサ13は、ユーザ9の仮想空間内の位置に基づいて、次の駅までの距離を算出する。ステップS446にて、プロセッサ13は、ステップS438及びS442の結果に基づいて、仮想空間内のトレーナキャラクタ43とユーザ9との間の距離Dtpを算出する。ステップS448にて、プロセッサ13は、ユーザ9の実速度Vr及びユーザ9とトレーナキャラクタ43との間の距離Dtpに基づいて、ユーザフラグを設定する。ステップS450にて、プロセッサ13は、ステップS438及びS442の結果に基づいて、トレーナキャラクタ43及びユーザ9の仮想空間中の位置を更新する。
ステップS452にて、プロセッサ13は、ユーザ9が駅に到着したか否かを判断し、到着した場合ステップS454に進み、それ以外はステップS434に進む。ステップS454にて、プロセッサ13は、あたかもユーザ9が仮想空間中の駅に到着したかのような画面を表示する。ステップS456にて、プロセッサ13は、ユーザ9がゴール(つまり、最終駅)に到着したか否かを判断し、到着した場合ステップS458に進み、それ以外はステップS430に進む。ステップS458では、プロセッサ13は、今回のトレインエクササイズで行われた活動量を含む結果画面を表示してリターンする。
図42は、図41のステップS448で実行されるユーザフラグの設定処理の流れを示すフローチャートである。図42を参照して、ステップS470にて、プロセッサ13は、トレーナキャラクタ43とユーザ9との間の距離Dtpが、所定値DSより大きく、かつ、所定値DLより小さいか否かを判断し、この範囲に入っている場合ステップS472に進み、この範囲に入っていない場合ステップS474に進む。ステップS472では、プロセッサ13は、ユーザフラグを第1状態に設定してリターンする。なお、DS<DL、である。所定値DSは、縄58が最も緩んだ時の長さである。所定値DLは、図13のように縄58がピンと張った時の長さである。
ステップS474にて、プロセッサ13は、距離Dtpが所定値DSに等しくなったか否かを判断して、等しい場合ステップS476に進み、それ以外は、つまり、距離DtpがDLに等しい場合は、ステップS488に進む。
ステップS470でNO及びS474でYESが判断されたとういことは、距離Dtpが所定値DSに等しくなったことを意味する。従って、ステップS476では、プロセッサ13は、機嫌メータ61の針66の水平位置を実速度Vrに応じて右方向に更新する。この場合、実速度Vrが小さいほど移動量が小さくなり、大きいほど移動量は大きくなる。一方、ステップS470及びS474でNOが判断されたとういことは、距離Dtpが所定値DLに等しくなったことを意味する。従って、ステップS488にて、プロセッサ13は、機嫌メータ61の針66の水平位置を実速度Vrに応じて左方向に更新する。この場合、実速度Vrが小さいほど移動量が大きくなり、大きいほど移動量は小さくなる。
さて、ステップS476の後、ステップS478にて、プロセッサ13は、ユーザ9の実速度Vrが50km以上か否かを判断し、以上の場合ステップS480に進み、それ以外はステップS482に進む。ステップS480では、プロセッサ13は、ユーザフラグを第4状態に設定してリターンする。一方、ステップS482では、プロセッサ13は、ユーザ9の実速度Vrが40kmより小さいか否かを判断し、小さい場合ステップS484に進み、それ以外はステップS486に進む。ステップS486では、プロセッサ13は、ユーザフラグを第2状態に設定してリターンする。一方、ステップS484では、プロセッサ13は、ユーザフラグを第3状態に設定してリターンする。
ステップS488の後、ステップS490にて、プロセッサ13は、針66が左端に到達して一秒経過したか否かを判断し、経過した場合ステップS492に進み、それ以外はステップS494に進む。ステップS492にて、プロセッサ13は、ゲームオーバ画面を表示して図28のステップS101に戻る。一方、ステップS494にて、プロセッサ13は、ユーザ9の実速度Vrが40km以上か否かを判断し、以上の場合ステップS496に進み、それ以外はステップS498に進む。
ステップS494でYESが判断された後、ステップS496では、プロセッサ13は、ユーザフラグを第5状態に設定してリターンする。一方、テップS494でNOが判断された後、ステップS498では、プロセッサ13は、ユーザフラグを第6状態に設定してリターンする。
図43は、図41のステップS436で実行されるトレーナキャラクタ43の速度Vtの設定処理の流れを示すフローチャートである。図43を参照して、ステップS510にて、プロセッサ13は、ユーザフラグが第4状態又は第6状態に設定されている場合ステップS514に進み、第1状態、第2状態、第3状態、又は第5状態に設定されている場合ステップS512に進む。ステップS514では、プロセッサ13は、トレーナキャラクタ43の移動速度Vtにユーザ9の実速度Vrを代入してリターンする。一方、ステップS512では、トレーナキャラクタ43の移動速度Vtに40kmを代入してリターンする。
図44は、図41のステップS440で実行されるユーザ9の移動速度Vpの設定処理の流れを示すフローチャートである。図44を参照して、ステップS520にて、プロセッサ13は、ユーザフラグが第1状態、第3状態、第4状態、第5状態、又は第6状態に設定されている場合ステップS524に進み、第2状態に設定されている場合ステップS522に進む。ステップS524では、プロセッサ13は、ユーザ9の移動速度Vpにユーザ9の実速度Vrを代入してリターンする。一方、ステップS522では、ユーザ9の移動速度Vpに40kmを代入してリターンする。
ここで、図42〜図44の説明で明らかなように、トレーナキャラクタ43とユーザ9との間の距離Dtpが、所定値DSと所定値DLの間に入っている場合は(第1状態)、トレーナキャラクタ43の速度Vtは40km、ユーザ9の移動速度Vpは実速度Vrになる。距離Dtpが、所定値DLに等しく、縄58がピンと張っており、かつ、ユーザ9の実速度Vrが40km未満の場合は(第6状態)、トレーナキャラクタ43の速度Vtは実速度Vr、ユーザ9の移動速度Vpは実速度Vrになる。一方、距離Dtpが、所定値DLに等しく、縄58がピンと張っており、かつ、ユーザ9の実速度Vrが40km以上の場合は(第5状態)、トレーナキャラクタ43の速度Vtは40km、ユーザ9の移動速度Vpは実速度Vrになる。また、距離Dtpが、所定値DSに等しく、縄58が最も緩んでおり、かつ、ユーザ9の実速度Vrが50km以上の場合は(第4状態)、トレーナキャラクタ43の速度Vtは実速度Vr、ユーザ9の移動速度Vpは実速度Vrになる。一方、距離Dtpが、所定値DSに等しく、縄58が最も緩んでおり、かつ、ユーザ9の実速度Vrが40km以上50km未満の場合は(第2状態)、トレーナキャラクタ43の速度Vtは40km、ユーザ9の移動速度Vpは40kmになる。さらに一方、距離Dtpが、所定値DSに等しく、縄58が最も緩んでおり、かつ、ユーザ9の実速度Vrが40km未満の場合は(第3状態)、トレーナキャラクタ43の速度Vtは40km、ユーザ9の移動速度Vpは実速度Vrになる。
さて、次に、「メイズエクササイズ」の詳細を説明する。
図45は、図28のステップS109のエクササイズ処理で実行されるメイズエクササイズ処理の流れを示すフローチャートである。図45を参照して、ステップS540にて、プロセッサ13は、開始画面を表示する。ステップS542にて、プロセッサ13は、タイマをスタートする。ステップS544にて、プロセッサ13は、タイマを参照して、メイズエクササイズの残り時間を算出し、時間表示部74を更新する。ステップS545にて、プロセッサ13は、残り時間が0か否かを判断し、0の場合ステップS547に進み、それ以外はステップS546に進む。ステップS547では、残り時間がなくなったので、プロセッサ13は、ゲームオーバを表す画面をテレビジョンモニタ5に表示して、図28のステップS101に進む。
一方、ステップS546にて、プロセッサ13は、アクションセンサ6のx軸方向の加速度axの絶対値を算出する。ステップS548にて、プロセッサ13は、加速度axの絶対値が所定値より大きいか否かを判断し、大きい場合ユーザ9が左又は右に身体を曲げたと判断してステップS550に進み、それ以外はステップS554に進む。
ステップS550にて、プロセッサ13は、加速度axの符号に応じてプレイヤキャラクタ78を90度回転する。つまり、プロセッサ13は、加速度axの符号が正の場合プレイヤキャラクタ78を左に90度回転する。また、プロセッサ13は、加速度axの符号が負の場合プレイヤキャラクタ78を右に90度回転する。なお、ステップS550でのみプレイヤキャラクタ78の方向が変わる。従って、これ以外では、プレイヤキャラクタ78は直進する。ステップS552にて、プロセッサ13は、ステップS550での回転に応じて、プレイヤキャラクタ78が向いている方位を示す方位表示部70を更新してステップS570に進む。
ステップS548でNOが判断された後、ステップS554では、プロセッサ13は、ユーザ9の運動形態を示す運動形態フラグが「停止」に設定されているか否かを判断し、「停止」に設定されている場合ステップS556に進み、それ以外はステップS558に進む。ステップS556では、プロセッサ13は、プレイヤキャラクタ78が停止するアニメーションを表示してステップS570に進む。
ステップS558にて、プロセッサ13は、ユーザ9の運動形態(並足、早足、又は、ラン)に応じてプレイヤキャラクタ78の速度Vpを設定する。具体的には、ユーザ9の運動形態が並足の時は、速度Vpにv0を代入する。ユーザ9の運動形態が早足の時は、速度Vpにv1を代入する。ユーザ9の運動形態がランの時は、速度Vpにv2を代入する。これらの関係は、v0<v1<v2、である。ステップS560にて、プロセッサ13は、速度Vpに基づいて、プレイヤキャラクタ78の位置を算出する。ステップS562にて、プロセッサ13は、プレイヤキャラクタ78の位置とゴールの位置とに基づいて、標識80の向きを更新する。
ステップS564にて、プロセッサ13は、プレイヤキャラクタ78が迷路82の壁に衝突したか否かを判断し、衝突した場合ステップS568に進み、それ以外はステップS566に進む。ステップS568では、プロセッサ13は、プレイヤキャラクタ78が壁に突き当たり足踏みするアニメーションを表示する。一方、ステップS566では、プロセッサ13は、ステップS560の結果に基づいて、仮想空間内のプレイヤキャラクタ78の位置を更新する。
ステップS570にて、プロセッサ13は、プレイヤキャラクタ78がゴールに到着したか否かを判断し、到着した場合ステップS572に進み、それ以外はステップS544に戻る。ステップS572にて、プロセッサ13は、今回のメイズエクササイズで行われた活動量を含む結果画面を表示してリターンする。
ここで、ユーザ9がアクションセンサ6の決定ボタン14を押下すると、割り込みが発生して、ステップS574にて、プロセッサ13は、図16のマップ画面を表示する処理を実行する。そして、ユーザ9が再び決定ボタン14を押下すると、元のルーチン(図15の画面)に復帰する。
さて、次に、「リングエクササイズ」の詳細を説明する。
図46は、図28のステップS109のエクササイズ処理で実行されるリングエクササイズ処理の流れを示すフローチャートである。図46を参照して、ステップS590にて、プロセッサ13は、開始画面を表示する。ステップS592にて、プロセッサ13は、タイマをスタートする。ステップS594にて、プロセッサ13は、エリアをランダムに選択する。ステップS595にて、プロセッサ13は、選択したエリアにおけるターゲットリング102の配置パターンに従って仮想空間にターゲットリング102を配置する。
ステップS596にて、プロセッサ13は、タイマを参照して、このエリアでの残り時間を算出する。ステップS597にて、プロセッサ13は、このエリアの残り時間が0か否かを判断し、0の場合ステップS625に進み、それ以外はステップS598に進む。ステップS625では、残り時間がなくなったので、プロセッサ13は、ゲームオーバを表す画面をテレビジョンモニタ5に表示して、図28のステップS101に進む。
ステップS598にて、プロセッサ13は、アクションセンサ6の加速度データに基づいて、プレイヤキャラクタ78の仮想空間内の位置を算出する。ステップS600にて、プロセッサ13は、ガイドリング100を配置する。この場合、ガイドリング100のXY座標は、プレイヤキャラクタ78が次に潜るべきターゲットリング102のXY座標と同一である。また、ガイドリング100のZ座標は、プレイヤキャラクタ78のZ座標と同一である。ステップS602にて、プロセッサ13は、ガイドリング100が画面外に位置するか否かを判断し、画面外の場合ステップS604に進み、それ以外はステップS606に進む。ステップS604では、プロセッサ13は、標識104を設定する。この場合、標識104は、プレイヤキャラクタ78が次に潜るべきターゲットリング102を向くように設定される。
ステップS606にて、プロセッサ13は、プレイヤキャラクタ78のZ座標がターゲットリング102のZ座標と一致したか否かを判断し、一致した場合ステップS608に進み、それ以外はステップS618に進む。ステップS608では、プロセッサ13は、プレイヤキャラクタ78がターゲットリング102の範囲内か否かを判断し、範囲内の場合ステップS610に進み、範囲外の場合ステップS612に進む。
ステップS610では、プレイヤキャラクタ78がターゲットリング102を巧く潜り抜けたので、プロセッサ13は、成功エフェクトを設定する。一方、ステップS612では、プレイヤキャラクタ78がターゲットリング102を潜り抜けることができなかったので、プロセッサ13は、失敗エフェクトを設定する。ステップS614では、プロセッサ13は、残りのターゲットリング102の数を算出する。
ステップS615では、プロセッサ13は、リングエクササイズでのユーザ9の活動量を算出する。具体的には次の通りである。リングエクササイズでは、主にスクワット運動を行わせるものであるため、被験者がスクワット運動を行った時の活動量Eを予め実験的に求めておく。同時に、被験者にはアクションセンサ6を装着させ、活動量計測中の加速度ax,ay及びaz、つまり、合成加速度Axyzを記録する。ここで、活動量計測中の合成加速度Axyzのサンプリング回数をM回とする。また、それぞれのサンプリングにおける合成加速度Axyzを表すために、符号Axyzの後に、括弧を設け、その中にサンプリング番号を記載する。
そして、次式により、単位合成加速度当たりの活動量(以下、「単位活動量」と呼ぶ。)UEを予め求めておく。
そうすると、リングエクササイズにおいて逐次得られる合成加速度Axyzに単位活動量UEを乗じることにより、その合成加速度Axyzのサンプリング時の活動量SEを得ることができる。そして、合成加速度Axyzをサンプリングするたびに、活動量SEを累積していくことにより、リングエクササイズでのユーザ9の活動量AEを得ることができる(AE←AE+SE)。
ただし、スクワット運度以外のノイズを極力除去するために、得られた合成加速度Axyzが所定値CMIより小さい場合は、その合成加速度Axyzを無視し、その合成加速度Axyzに基づく活動量SEは算出しない。また、同様の理由で、得られた合成加速度Axyzが所定値CMAより大きい場合は、クリッピングを行い、合成加速度Axyzの値を所定値CMA(>CMI)に設定して、活動量SEを算出する。なお、スクワット運動時の合成加速度Axyzを測定して、スクワット運動時に合成加速度Axyzがとりうる最小値及び最大値を経験的に定め、それぞれを所定値CMI及びCMAとして設定する。
ステップS606でNOが判断された後、又は、ステップS615の後、ステップS618にて、プロセッサ13は、ステップS595,S598,S600,S604,S610,S612,S614及びS615の結果に従って、テレビジョンモニタ5に表示する画面(図17及び図18参照)を更新する。
ステップS620にて、プロセッサ13は、エリアが終了したか否かを判断し、了した場合ステップS621に進み、それ以外はステップS596に戻る。ステップS621では、プロセッサ13は、タイマをリセットする。そして、ステップS622では、プロセッサ13は、ステージが終了したか否かを判断し、終了した場合ステップS624に進み、それ以外はステップS592に戻る。ステップS624では、プロセッサ13は、今回のリングエクササイズで行われた活動量(ステップS615での最終的な活動量AE)を含む結果画面を表示してリターンする。
図47は、図46のステップS598で実行されるプレイヤキャラクタ78の位置算出処理の流れを示すフローチャートである。図47を参照して、ステップS630にて、プロセッサ13は、アクションセンサ6から各軸の加速度ax,ay及びazを取得する。ステップS632にて、プロセッサ13は、加速度ax,ay及びazに基づいて、合成加速度Axyz(=√(ax2+ay2+az2))を算出する。
ステップS632にて、プロセッサ13は、長さL(=√(ax2+az2))を算出する。ステップS634にて、プロセッサ13は、正規化加速度ax#(=ax/L)及びaz#(=az/L)を算出する。ステップS636にて、プロセッサ13は、回転角θax(=ax#*(π/2))及びθaz(=az#*(π/2))を算出する。
ステップS638にて、プロセッサ13は、単位ベクトル(X,Y,Z)=(0,0,1)をY軸の回りにθax、かつ、X軸の周りにθazだけ回転し、回転後の単位ベクトル(X,Y,Z)=(Xu,Yu,Zu)を取得する。ステップS640にて、プロセッサ13は、成分vecX(=Xu*Axyz),vecY(=Yu*Axyz)及びvecZ(=Zu*Axyz)を算出する。ステップS642にて、プロセッサ13は、次式により、プレイヤキャラクタ78の位置(X,Y,Z)=(Xp,Yp,Zp)を算出してリターンする。
Xp←Xp+VecX
Yp←Yp+VecY
Zp←Zp+VecZ
図48は、図46のステップS615で実行される活動量算出処理の流れを示すフローチャートである。図48を参照して、ステップS900にて、プロセッサ13は、合成加速度Axyzが所定値CMIより小さいか否かを判断し、小さい場合活動量を算出することなくリターンし、それ以外はステップS902に進む。ステップS902にて、プロセッサ13は、合成加速度Axyzが所定値CMAより大きいか否かを判断し、大きい場合ステップS906に進み、それ以外はステップS904に進む。ステップS906では、プロセッサ13は、合成加速度Axyzに所定値CMAを代入する。
ステップS902でNOが判断された後、又は、ステップS906の後、ステップS904では、単位活動量UEを合成加速度Axyzに乗じて、加速度サンプリング時の活動量SEを得る。そして、ステップS908にて、現在の活動量AEにステップS904で算出した活動量SEを加算して、最新の活動量AE得る。そして、リターンする。
図49は、図20のカートリッジ4のプロセッサ13が実行する運動形態測定処理の流れを示すフローチャートである。図49を参照して、ステップS761〜S789の処理は、それぞれ、図21のステップS1000〜S1013の処理と同様であり説明を省略する。ただし、ステップS787の運動形態判定処理は図21と異なるので後述する。また、図21の処理ではMCU52が処理を実行したが、図49の処理ではプロセッサ13が処理を実行する。さて、ステップS791では、プロセッサ13は、エクササイズが終了したか否かを判断し、終了した場合は処理を終了し、終了していない場合はステップS781に戻る。
図50は、図49のステップS787で実行される運動形態判定処理の流れを示すフローチャートである。図50を参照して、ステップS801にて、プロセッサ13は、第2タイマの値、つまり、一歩の時間をテンポTMに代入する。ステップS803,S805,S807,S809,S811,S813,S815,S817,S819,S821及びS823の処理は、それぞれ、図27のステップS1161,S1163,S1165,S1167,S1169,S1171,S1173,S1175,S1177,S1179及びS1181の処理と同様であり、説明を省略する。
ただし、ステップS811では、プロセッサ13は、カウンタNr1を1つインクリメントする。ステップS815では、プロセッサ13は、カウンタNq1を1つインクリメントする。ステップS821では、プロセッサ13は、カウンタNw1を1つインクリメントする。
さて、ステップS813で運動形態フラグがランに設定された後、ステップS814にて、プロセッサ13は、テンポTM及びランの場合に想定される歩幅に基づいて、ユーザ9の足踏みの速度を算出して、ステップS825に進む。また、ステップS817で運動形態フラグが早足に設定された後、ステップS818にて、プロセッサ13は、テンポTM及び早足の場合に想定される歩幅に基づいて、ユーザ9の足踏みの速度を算出して、ステップS825に進む。さらに、ステップS823で運動形態フラグが並足に設定された後、ステップS824にて、プロセッサ13は、テンポTM及び並足の場合に想定される歩幅に基づいて、ユーザ9の足踏みの速度を算出して、ステップS825に進む。
ステップS825にて、プロセッサ13は、運動形態を区別しないトータルの歩数を表すカウンタNtに、カウンタNw1とNq1とNr1との合計値を代入する。ステップS827にて、プロセッサ13は、このエクササイズにおける活動量の累積合計値Extを算出してリターンする。累積合計値Extは次式により算出する。
Ext←Nw1*Ew+Nq1*Eq+Nr1*Er
ここで、この式において、Ewは、並足の一歩に対する活動量であり、Eqは、早足の一歩に対する活動量であり、Erは、ランの一歩に対する活動量である。
また、プロセッサ13の運動形態判定処理では、不確定期間や昇降の判断を行わないのは次の理由による。ステップエクササイズ、トレインエクササイズ及びメイズエクササイズでは、プロセッサ13は、ユーザ9にその場で足踏みを行わせることを前提とした処理を実行し、また、ユーザ9は勝手に足踏みを行うのではなくテレビジョンモニタ5の映像に従って足踏みをするからである。
なお、図40のステップS414、図41のステップS458及び図45のステップS572では、それぞれのエクササイズで算出された図50のステップS827の累積合計値Extを含む結果画面がテレビジョンモニタ5に表示される。また、累積合計値Ext及び歩数Ntは、それぞれのエクササイズの画面にリアルタイムで表示される(例えば、活動表示部76)。
図51は、図20のカートリッジ4のプロセッサ13が実行する電池残量表示処理の流れを示すフローチャートである。図51を参照して、ステップS700にて、プロセッサ13は、アクションセンサ6からバッテリ電圧voの値を取得する。ステップS702にて、プロセッサ13は、バッテリ電圧voが所定値v0以上か否かを判断し、以上の場合ステップS704に進み、それ以外はステップS706に進む。ステップS704にて、プロセッサ13は、電池残量表示部45の全てのセグメントを点灯してステップS700に戻る。
ステップS706にて、プロセッサ13は、バッテリ電圧voが所定値v0より小さく、かつ、所定値v1以上か否かを判断し、YESの場合ステップS708に進み、NOの場合ステップS710に進む。ステップS708では、プロセッサ13は、電池残量表示部45の右端及び中央のセグメントを点灯してステップS700に戻る。
ステップS710にて、プロセッサ13は、バッテリ電圧voが所定値v1より小さく、かつ、所定値v2以上か否かを判断し、YESの場合ステップS712に進み、NOの場合ステップS714に進む。ステップS712では、プロセッサ13は、電池残量表示部45の右端のセグメントを点灯してステップS700に戻る。一方、ステップS714では、プロセッサ13は、電池残量表示部45の全てのセグメントを消灯してステップS700に戻る。
図52は、図20のカートリッジ4のプロセッサ13が実行する通信状態表示処理の流れを示すフローチャートである。図52を参照して、ステップS730にて、プロセッサ13は、タイマをスタートする。ステップS732にて、プロセッサ13は、アクションセンサ6との通信が成功したか否かを判断し、成功した場合ステップS734に進み、失敗した場合ステップS736に進む。ステップS734では、プロセッサ13は、カウンタTcを1つインクリメントする。一方、ステップS736では、プロセッサ13は、カウンタTcを1つデクリメントする。
ステップS738にて、プロセッサ13は、タイマが一秒経過したか否かを判断し、経過していない場合ステップS732に戻り、経過した場合ステップS740に進む。ステップS740にて、プロセッサ13は、通信状態表示部47のバーの本数N(=Tc/20)を算出する。ステップS742にて、プロセッサ13は、通信状態表示部47にN本のバーを表示する。ステップS744にて、プロセッサ13は、カウンタTcをリセットする。ステップS746にて、タイマをリセットしステップS730に戻る。
さて、まず、運動支援システムとしての効果を説明する。
以上のように、本実施の形態のアクションセンサ6は、三次元空間中のユーザ9の動きに応じた物理量(上記では加速度)を検出して、搭載したLCD35に、検出した物理量に基づく情報(上記では歩数)を表示でき、そのため、このアクションセンサ6単体でも機能する(上記では歩数計として機能)。つまり、歩数計モードでは、外部機器(上記ではカートリッジ4)との間の距離に依存することなく、外部機器とは無関係に単独で動作する。この機能に加えて、通信モードにおいて、検出した物理量に関する情報(上記では加速度)を外部機器(上記ではカートリッジ4)にリアルタイムで入力でき、当該外部機器と協働して、映像(代表的には、図7〜図13、図15〜図18など)を利用した様々なコンテンツ(代表的には、ストレッチ体操、サーキット運動、ステップエクササイズ、トレインエクササイズ、メイズエクササイズ及びリングエクササイズ等)をユーザ9に提供できる。この場合、カートリッジ4のプロセッサ13は、アクションセンサ6から受信した物理量に関する情報(上記では加速度)に基づいて、映像(代表的には、図15〜図18など)を制御することもできるし、カートリッジ4のプロセッサ13が物理量に関する情報に依存すくことなく制御する映像(代表的には、図7〜図13など)と関連して、アクションセンサ6から受信した物理量に関する情報を処理することもできる。
また、ユーザ9は、歩数計モードにおいて、このアクションセンサ6だけを携帯して運動(歩行やラン)を行うこともできる。一方、通信モードでは、ユーザ9は、身体を動かして、外部機器(上記ではカートリッジ4)にリアルタイムで動きに応じた物理量(上記では加速度)を入力できる。つまり、外部機器に入力を行う行為自体が運動になる。この場合、外部機器は、ユーザ9からの入力に応じて、映像(代表的には、図7〜図13、図15〜図18など)を利用した様々なコンテンツ(代表的には、ストレッチ体操、サーキット運動、ステップエクササイズ、トレインエクササイズ、メイズエクササイズ及びリングエクササイズ等)をユーザ9に提供する。従って、ユーザ9は、ただ漫然と身体を動かすのではなく、これらのコンテンツを楽しみながら運動ができる。
その結果、歩数計モードで、アクションセンサ6だけを携帯して運動を行い、その場合の不足分の運動を、通信モードを利用して、アクションセンサ6及び外部機器(上記ではカートリッジ4)で補うことが可能となる。また、その逆も可能である。このように、二段構えで運動を行わせることで、運動目標達成をより効果的に支援できる。
さて、一般に、ストレッチ体操やサーキット運動等、各種の運動には目的があり、その目的を効果的に達成するためには、定められた動きを的確に行う必要がある。この場合、映像等により動きを指示することが行われるが、ユーザが指示された動きを的確に行っているか否かの判断は、ユーザ自身では困難である。
しかしながら、本実施の形態によれば、映像により指示した動きをユーザ9が行ったか否かを判断でき、判断結果をユーザ9に提示できる(代表的には、図8のサーキット運動)。このため、ユーザ9はその結果を見て、自身の動きを修正等することができ、指示された運動を的確に実行できる。その結果、ユーザ9は、指示された運動の目的を効果的に達成できる。
また、本実施の形態によれば、ユーザ9は、三次元空間中で身体を動かすことにより、動きに応じた加速度情報がアクションセンサ6からカートリッジ4に送信され、テレビジョンモニタ5に表示される動画像(図9〜図13のステップエクササイズ及びトレインエクササイズでの一人称視点による仮想空間内での移動、図15〜図18のメイズエクササイズ及びリングエクササイズでのプレイヤキャラクタ78の仮想空間内の移動)を制御できる。その結果、ユーザ9は、自分の身体の動きに応答する動画像を見ながら運動できるので、ただ漫然と身体を動かす場合と比較して、飽き難く、運動の継続を支援できる。
例えば、ユーザ9は、身体を動かすことにより、プレイヤキャラクタ78を制御できる(代表的には、メイズエクササイズ、リングエクササイズ)。その結果、ユーザ9は、自分の動きに応答するプレイヤキャラクタ78を見ながら運動できるので、ただ漫然と身体を動かす場合と比較して、飽き難く、運動の継続を支援できる。
また、例えば、ユーザ9は、三次元空間中で身体を動かすことにより、自分がテレビジョンモニタ5に表示される仮想空間中をあたかも移動しているかのような映像を見ることができる(代表的には、ステップエクササイズ、トレインエクササイズ、メイズエクササイズ、リングエクササイズ)。つまり、ユーザ9は、身体を動かすことにより、仮想空間内の事象を擬似的に体験できる。その結果、ただ漫然と身体を動かす場合と比較して、飽き難く、運動の継続を支援できる。
特に、ユーザ9は、メイズエクササイズにより、迷路82を擬似的に体験できる。迷路ゲームは多くの人に認知されており、知識や経験を必要とせず、多くのユーザ9は、アクションセンサ6及びカートリッジ4を利用した迷路ゲームを手軽に楽しむことができる。
ところで、仮想空間は実質的には無限大の大きさを持つが、テレビジョンモニタ5に表示されるのはその一部である。従って、仮想空間の所定位置まで、移動しようとしても、その位置がユーザ9には認識できない。しかしながら、本実施の形態では、仮想空間に形成された迷路82のゴールの方向を示す標識80を表示するので、広大な仮想空間に形成された迷路82のゴールまで行くことを目的とするユーザ9を補助できる(代表的には、メイズエクササイズ)。
さらに、本実施の形態では、仮想空間内での方向の変更は、アクションセンサ6から送信された加速度に基づいて行われる。従って、ユーザ9は、アクションセンサ6を装着した身体の向きを所望の向きに変えるだけで、仮想空間内の方向を直感的に変更できる(代表的には、メイズエクササイズ、リングエクササイズ)。
さて、一般に、テレビジョンモニタ5に表示された仮想空間内で自分の位置を移動していく場合、仮想空間中の遊びであるビデオゲーム等に不慣れな人にとっては、仮想空間の感覚(例えば、仮想空間内の自分の位置、仮想空間内の他のオブジェクトとの相対的位置関係等)をつかむことが困難な場合がある。しかしながら、特に、リングエクササイズにおいて、ガイドリング100を表示することにより、ユーザ9がターゲットリング102に向かって適切に移動できるように補助できる。その結果、仮想空間に不慣れな人でも扱いやすくなる。
さらに、本実施の形態によれば、ユーザ9はトレーナキャラクタ43に従って足踏み運動を行うことで、主観的なペースではなく、トレーナキャラクタ43のペース、つまり、客観的なペースで足踏み運動を行うことができる(代表的には、ステップエクササイズ及びメイズエクササイズ)。この場合、トレーナキャラクタ43がガイドする足踏み運動を適切にユーザ9が行っているか否かが判断され、テレビジョンモニタ5を通じて判断結果がユーザ9に提示される(上記では、ステップエクササイズでのトレーナキャラクタ43のボイス、トレインエクササイズでの機嫌メータ61やエフェクト)。このため、ユーザ9はその結果を見て、自身の足踏みのペース等を修正することができ、安定した足踏み運動を行うことができる。
さらに、本実施の形態によれば、アクションセンサ6は、ユーザ9の胴体又は頭部に装着されるので、ユーザ9の部分的な動き(四肢の動き)ではなく、身体全体の動きを計測できる。
一般に、四肢は胴体と独立して動かすことができるので、四肢にアクションセンサ6を装着しても、身体全体の動きを検出することは困難であるので、胴体にアクションセンサ6を装着する必要がある。ただし、頭部は胴体と独立して動かすことができるが、胴体を動かす場合、頭部はほとんど動かず、胴体と一体となって動くのが通常であり、アクションセンサ6を頭部に装着した場合でも、身体全体の動きを検出できる。
さらに、本実施の形態では、ユーザ9の活動量が算出されるので(図46のステップS615、図50のステップS827)、テレビジョンモニタ5を介してそれをユーザ9に提示することにより、ユーザ9は自分の客観的な活動量を把握することができる。
上記のような効果を奏することから、例えば、本実施の形態の運動支援システムを、メタボリックシンドロームの予防や改善のために利用できる。
さて、次に、図21及び図49の運動形態計測処理に着目した効果を説明する。
以上のように、本実施の形態によれば、MCU52及びプロセッサ13は、ユーザ9の動きをまず暫定的に複数の第1運動形態(歩行及びラン)のいずれかに分類する。理由は次の通りである。
本実施の形態では、ユーザ9の運動形態に応じて活動量を算出する。活動量(Ex)は、運動強度(メッツ)に時間(時)を掛けたものである。この運動強度は、運動形態に応じて定められる。この場合の運動形態は、速度によって分類される。従って、運動形態に応じて活動量を算出するためには、最終的にはユーザ9の動きを速度によって分類する方が好ましい。
ところが、速度だけで分類すると次のような不都合が発生する可能性がある。具体例を挙げて説明する。ユーザの速度を求めるためには、歩幅と一歩の時間とが必要である。一般的に、一歩の時間は、歩いている場合は短く、走っている場合は長い。一方、一般的に、歩幅は、歩いている場合は小さく、走っている場合は大きい。従って、実際には走っているが、歩いている場合の歩幅に基づいて、時速を算出すると、その値が小さくなり、歩行に分類される可能性がある。一方、実際には歩いているが、走っている場合の歩幅に基づいて、時速を算出すると、大きな値となり、ランに分類される可能性がある。
このため、本実施の形態では、加速度の大きさに基づいて、ユーザ9の動きを暫定的に複数の第1運動形態(歩行及びラン)のいずれかに分類する(ステップS1161及びS1163、ステップS803及びS805)。こうすることで、歩幅を、第1運動形態ごとにそれぞれ設定することができる。その結果、上記不都合は発生せず、ユーザ9の動きを速度に応じて複数の第2運動形態(並足、早足、ラン)のいずれかに適切に分類でき、ひいては、適切に活動量を算出できる。
また、本実施の形態では、一歩の動作が発生したと判断した後に、運動形態判定のための分類処理を実行する(図21のステップS1007及びS1011、図49のステップS783及びS787)。このように、分類処理の前に、一歩の動作とノイズとを分別する。従って、分類処理において、ノイズを排除する処理を設ける必要がなく、分類処理を簡素化及び高速化できる。ちなみに、分類処理には多くの判断を伴い、最初の判断の後であればともかく、後の判断の後にノイズと判断された場合、それまでの判断及び処理が無駄になってしまう。本実施の形態では、分類処理の前にノイズを排除することにより、この無駄な処理を抑制できる。
さらに、本実施の形態では、MCU52及びプロセッサ13は、合成加速度Axyzの最大値max及び最小値minに基づいて分類処理を実行するので、簡易かつ的確に、ユーザ9の動きを複数の第1運動形態(歩行及びラン)のいずれかに分類できる(ステップS1161及びS1163、ステップS803及びS805)。具体的には、MCU52及びプロセッサ13は、合成加速度Axyzの振幅が大きい場合にユーザ9の動きをランに分類し、それ以外を歩行に分類する。
さらに、本実施の形態では、MCU52及びプロセッサ13は、第1運動形態の歩行を、ユーザ9の速度に応じて、並足及び早足のいずれかに、さらに詳細に分類できる(ステップS1177、ステップS819、)。
この場合、MCU52は、合成加速度Axyzの大きさ(上記ではmax)によって、並足が、さらにどのような態様(上記では昇降)を伴うかを特定できる(ステップS1183)。
このように、昇降の判断が可能なのは、昇降判断の前の段階において、合成加速度Axyzの大きさによりユーザ9の動きを暫定的に分類し(図27のステップS1161及びS1163)、それからさらに、ユーザ9の速度で分類しているからである(図27のステップS1177及びS1167)。仮にもし、合成加速度Axyzの大きさのみでユーザ9の動きを分類するならば、昇降とランとを区別することができない。
さらに、本実施の形態では、MCU52及びプロセッサ13は、第1運動形態のランを、ユーザ9の速度に応じて、早足/ラン、及び、早足のいずれかに、さらに詳細に分類できる(ステップS1165、S807)。この場合、MCU52及びプロセッサ13は、ユーザ9の動きが早足/ランに分類された後、合成加速度Axyzの大きさ(上記ではmax)により、最終的に早足及びランのいずれかに特定している(ステップS1167、S809)。なぜなら、図27のステップS1165及び図50のステップS807による分類だけでは、人によっては、実際には早足であってもランに分類される場合があるところ、より正確に分類を行うためである。
さて、次に、図48の活動量算出処理に着目した効果を説明する。
以上のように、本実施の形態では、単位加速度当たりの活動量、つまり、単位活動量UEを、取得したユーザ9の合成加速度Axyzに乗じて、加速度取得時の活動量SEを算出する。そして、加速度取得の度に、活動量SEは累算され、累算期間におけるユーザ9の総活動量AEが算出される。
このように、単位活動量UEに基づきユーザ9の活動量SE及びAEを算出することにより、歩数により活動量を算出する場合(一歩当たりの活動量を歩数に乗じてユーザ9の活動量を算出する場合)と比較して、ユーザ9の動きをより直接的に反映した活動量を算出できることが期待できる。理由は次の通りである。
一歩あたりの活動量をある値に設定したとする。しかし、歩行だけをとってみても、一歩一歩若しくは人により、又は、時々の状態により、動き方は異なってくる。従って、これらを一括りに歩行と判断して、一歩あたりの活動量を歩数に乗じても、必ずしもユーザの動きを直接反映した値とはいえない。確かに、歩行をさらに複数の形態に分類し、形態ごとに一歩当たりの活動量を設定すれば、より細かくユーザの動きを反映した活動量を算出できるが、その分類数には限りがあるし、また、各人の歩き方や時々の状態を考慮に入れることができない。自分の歩き方や時々の状態をユーザに入力させることもできるが現実的ではない。
ところで、アクションセンサ6の加速度データはユーザ9の動きに相関する。つまり、ユーザ9の動きは加速度に直接反映される。そして、本実施の形態では、ユーザ9の動きが直接反映される加速度データに基づき活動量を算出する。その結果、ユーザ9の動きをより直接反映した活動量を算出できる。
(実施の形態3)
実施の形態3による運動支援システムの構成及び動作は、実施の形態2による運動支援システムの構成及び動作と同様である。以下では、実施の形態2と異なる点を中心に説明する。
実施の形態2では、アクションセンサ6単体で使用する場合は、つまり、歩数計モードの場合は、アクションセンサ6を歩数計として使用した。ただし、実施の形態3では、アクションセンサ6単体で使用する場合は、自動記録モードと手動記録モードを有する。以下、詳しく説明する。
実施の形態3のアクションセンサ6は、通信モード(実施の形態2と同じなので説明を省略)に加えて、自動記録モード及び手動記録モードを有する。自動記録モード及び手動記録モードは、アクションセンサ6単体で機能する場合のモードである。従って、実施の形態2の歩数計モードと同様に、自動記録モード及び手動記録モードでは、アクションセンサ6はカートリッジ4と通信せず、独立して動作する。
自動記録モードは、アクションセンサ6が、ユーザ9の行動情報を年月日及び時刻と関連付けて自動でEEPROM27に記録するモードである。
自動記録モードで記録される「行動情報」は、本実施の形態では、運動形態(並足、早足及びラン)及び運動形態毎の回数(歩数)である。従って、本実施の形態では、自動記録モードは、実施の形態2の歩数計モードと同じである。
手動記録モードは、ユーザ9が、アクションセンサ6のスイッチ部50を操作して、自身の行動情報及び身体情報を入力しアクションセンサ6に記録するモードである。アクションセンサ6は、ユーザ9が入力した行動情報及び身体情報を年月日及び時刻に関連付けてEEPROM27に記録する。
手動記録モードで記録される「行動情報」は、運動形態(サーキットトレーニング・ウエイトトレーニング等のトレーニング内容、テニス等のスポーツ内容、身体の各部位の動き、その他の体動の内容・種類)、運動形態毎の回数(例えば、重量挙げの回数等の体動毎の回数)、運動形態毎の開始及び終了(例えば、テニスのプレイの開始及び終了等の体動毎の開始及び終了)、その他の行動に関する情報を含む。ただし、手動記録モードで記録される「行動情報」は、自動記録モードで記録される「行動情報」を含まない。
また、手動記録モードで記録される「行動情報」は、生活活動情報を含む。「生活活動情報」は、掃除、洗濯及び炊事等の家事の内容、食事(種類、内容及びカロリ等)、運搬、仕事、学校、通勤・移動(自動車・自転車・オートバイ・電車・飛行機・船等の乗り物への乗車を含む。)、及び趣味等、それらの回数、それらの開始及び終了、その他の個々人の日常生活の中で必然的に発生する行動・活動に関する情報を含む。
さらに、手動記録モードで記録される「身体情報」は、身長、体重、腹囲、及びBMI等の身体のサイズ情報、視力、生活活動強度、体内情報(尿の情報、血圧、赤血球数等の赤血球の情報、γ−GTP等の肝機能に関する情報、HDLコレステロール及び中性脂肪等の脂質代謝の情報、血糖値等の糖代謝の情報、並びに心拍数等)、その他の身体の状態を表す情報を含む。
なお、例えば、手動記録モードでは、MCU52は、主要な入力可能項目をLCD35に表示する。そして、ユーザ9は、スイッチ部50を操作して、所望の入力項目を選択し、情報を入力する。また、例えば、ユーザ9がスイッチ部50を操作して、入力項目を任意に登録することもできる。
さて、アクションセンサ6は、実施の形態2と同様に、通信モードにおいて、ユーザ9のログイン時に、自動記録モード及び手動記録モードで記録された情報をカートリッジ4に送信する。カートリッジ4は、受信した情報をEEPROM44に記録する。また、カートリッジ4は、ユーザ9によるアクションセンサ6の操作に応答して、EEPROM44に記録した情報を、適宜処理・加工し、ビジュアル化して、対応するビデオ信号VDをテレビジョンモニタ5に与える。そして、テレビジョンモニタ5は、受け取ったビデオ信号VDに応じた映像を表示する。
ここで、ビジュアル化とは、グラフ、表、及び/又は、図等を利用して、数値情報や文字情報を、直感的に理解し易い形式で表現することを意味する。言い換えると、ビジュアル化とは、グラフ、表、及び/又は、図等を利用して、数値情報や文字情報を、それらの直感的な理解に寄与する形式で表現することを意味する。図56〜図58は、ビジュアル化の代表的な例である。なお、図54や図55のように、数字及び文字だけの表示であっても、ユーザ9が理解し易いように、処理・加工して表示することも、ビジュアル化に含まれる。
ところで、上記では、自動記録モードで記録される行動情報は、並足、早足、ラン及びそれぞれの歩数であった。ただし、自動記録モードで記録される情報は、手動記録モードで記録されることができる行動情報及び身体情報であっても、アクションセンサ6に搭載されたセンサ(加速度センサ29及びジャイロスコープ等のセンサ)及びMCU52等のコンピュータにより検出・計測・算出等が可能な情報であれば、自動記録モードでの記録対象とすることができる。この場合、自動記録モードと手動記録モードとで、記録の対象となる情報(項目)を異ならせることもできるし、重複させることもできる。重複させる場合は、例えば、重複する情報(項目)に対して、予めデフォルトで自動記録を設定しておき、ユーザ9のスイッチ部50の操作によって手動記録を選択させる。また、その逆も可能である。さらに、その都度、ユーザ9に選択させてもよい。
また、手動記録モードでの記録の対象は、上記のものに限定されない。この場合、アクションセンサ6に搭載されたセンサ及びコンピュータにより検出・計測・算出が不可能なものでもよいし、可能なものでもよい。なぜなら、ユーザ9がスイッチ部50を操作して自分で情報を入力するからである。
さて、カートリッジ4がアクションセンサ6からの情報をビジュアル化してテレビジョンモニタ5に表示することからも明らかなように(図53〜図58の画面)、この運動支援システムは、ユーザ9の健康管理システム、生活管理システム、ないしは行動管理システムとしての性格も有する。ビジュアル化の結果は、小さなLCD35に表示するよりも、それより大きなテレビジョンモニタ5に表示する方が見易いし、画面操作も行いやすい。もちろん、アクションセンサ6のLCD35にビジュアル化の結果を表示することもできるが、携帯性を考慮すると、LCD35を大きくするにも限界があるし、携帯性を損なわない範囲で大きくした場合でも、表示能力はテレビジョンモニタ5に劣る。また、健康管理、生活管理及び行動管理は、出先で行うよりも、自宅で行うのが通常と考えられる。
このような管理システムとしての利便性及び性格、並びに、システム全体の合理性を考慮して、より好ましい例を検討する。
具体的な検討の前に、使用する用語を定義する。原データとは、センサ(例えば上記では加速度センサ29)が検出し出力する物理量(例えば上記では加速度)、あるいは、手動記録モードでユーザ9が入力する情報である。一次加工とは、原データを処理して目的のデータ(一次加工データ(例えば上記では歩数))を算出することである。二次加工とは、一次加工データを処理して、目的のデータ(二次加工データ(例えば上記では活動量))を算出することである。一般化すると、n次(nは1以上の整数)加工とは、(n−1)次加工データを処理して、目的のデータ(n次加工データ)を算出することである。ただし、この一般化された定義では、0次加工データは、原データを意味する。
この定義でいうセンサとは、物理量を検知して電気信号に変換するトランスデューサのことである。物理量とは、測定者によらない物理現象若しくは物質に固有の属性である。
これらの定義を踏まえて、具体的な検討を行う。自動記録モードでは、原データを記録することもできるが、アクションセンサ6のEEPROM27の記憶容量を抑制することを考慮すると、データ量が比較的大きい原データを記録するのではなく、上記のように、原データを一次加工した一次加工データをEEPROM27に記録する方が好ましい。また、送信データ量を少なくしてカートリッジ4との間のデータ通信を高速化するためにも、一次加工データを記録し、カートリッジ4に送信する方が好ましい。通信データ量が少なければ、アクションセンサ6の消費電力も少なくできる。また、一次加工して、ユーザ9が容易に認識可能な情報を表示することにより、自動記録モードのアクションセンサ6の単体としての機能をより向上できる。
そして、自動記録モードで記録されたデータの二次以上の加工(複数次の加工)は、カートリッジ4で行うほうが好ましい。アクションセンサ6のMCU52のパワー(演算能力)及び消費電力を極力抑えるためである。また、複数次の加工を行い、それらを十分に表現するためには、LCD35のサイズや解像度を比較的大きくする必要があるところ、サイズ及び解像度を抑えるためには、複数次の加工は、カートリッジ4で行う方が好ましい。
また、同様の理由により、手動記録モードでは、ユーザ9からの入力情報は、n次加工することなく原データのまま記録し、原データをカートリッジ4に送信して、n次加工はカートリッジ4で行う方が好ましい。ちなみに、手動記録モードでの原データは、ユーザ9が入力するものであり、センサの出力データと比較して、データ量は相当少ない。このため、センサの出力データのように、一次加工は不要である。
さらに、アクションセンサ6の携帯性を向上させるためにも、LCD35のサイズは小さい方が好ましい。また、管理システムとしての性格からすれば、ビジュアル化の結果をアクションセンサ6に表示する大きな理由はなく、LCD35のサイズは小さい方が好ましい。
以上のように、システム全体の合理性や管理システムとしての性格・利便性を考慮すると、アクションセンサ6の機能を極力抑えても、不都合はないばかりか、コストの低減や携帯性の向上を図ることができる。
なお、以上のことから明らかなように、アクションセンサ6は、行動記録計ないしは生活記録計としての性格を有する。
次に、フローチャートを用いて処理の流れを説明する。
図59は、本発明の実施の形態3におけるアクションセンサ6の手動記録モードでの処理の流れを示すフローチャートである。図59を参照して、ステップS6001にて、MCU52は、スイッチ部50からの入力をチェックする。そして、ステップS6003にて、MCU52は、所定時間無入力の場合、ステップS6021へ進み、自動記録モードへ移行して処理を終了し、それ以外はステップS6005に進む。ステップS6005にて、MCU52は、スイッチ部50からの入力があった場合ステップS6007に進み、それ以外はステップS6001に戻る。
ステップS6007にて、MCU52は、スイッチ部50からの入力が、自動記録モードへの移行を指示するものである場合、ステップS6021に進み、自動記録モードへ移行して処理を終了し、それ以外はステップS6009に進む。ステップS6009にて、MCU52は、スイッチ部50からの入力が、通信モードへの移行を指示するものである場合、ステップS6011へ進み、通信モードへ移行して処理を終了する。
ステップS6013にて、MCU52は、スイッチ部50からの入力が、LCD35の表示を切り替えることを指示するものである場合、ステップS6015に進み、当該入力に応じてLCD35の表示を切り替えてステップS6001に進み、それ以外はステップS6017に進む。ステップS6017にて、MCU52は、スイッチ部50からの入力が、入力を確定する指示である場合、ステップS6019に進み、それ以外はステップS6001に進む。
ステップS6019では、MCU52は、RTC56からの年月日及び時刻情報と関連付けて、スイッチ部50からの入力に応じた情報(行動情報及び身体情報:原データ)をEEPROM27に格納して、ステップS6001に進む。
図60は、本発明の実施の形態3におけるアクションセンサ6の自動記録モードでの処理の流れを示すフローチャートである。図60を参照して、ステップS6041にて、MCU52は、加速度センサ29から各軸の加速度データax,ay及びazを取得する。ステップS6043にて、MCU52は、加速度データax,ay及びazに対して、演算を施して、合成加速度Axyz及び運動形態毎の歩数を算出する。ステップS6045にて、MCU52は、RTC56からの年月日及び時刻情報と関連付けて、運動形態毎の歩数(行動情報の1つ:一次加工データ)をEEPROM27に格納する。
ステップS6047にて、MCU52は、スイッチ部50からの入力をチェックする。ステップS6049にて、MCU52は、スイッチ部50からの入力があった場合ステップS6051に進み、無かった場合ステップS6041に進む。ステップS6051にて、MCU52は、スイッチ部50からの入力が、LCD35の表示を切り替えることを指示するものである場合、ステップS6053に進み、当該入力に応じてLCD35の表示を切り替えてステップS6041に進み、それ以外はステップS6055に進む。ステップS6055にて、MCU52は、スイッチ部50からの入力が、手動記録モードへの移行を指示するものである場合、ステップS6057に進み、手動記録モードへ移行して処理を終了し、それ以外、つまり、スイッチ部50からの入力が、通信モードへの移行を指示するものである場合、ステップS6059に進み、通信モードへ移行して処理を終了する。
なお、実施の形態3のアクションセンサ6の通信モードでの処理、アンテナユニット24及びカートリッジ4の処理は、実施の形態2と同様であり説明を省略する。ただし、図29のステップS4009では、MCU(ノード)52は、自動記録モードでEEPROM27に記録した行動情報に加えて、手動記録モードでEEPROM27に記録した行動情報及び身体情報もホスト48及びプロセッサ13に送信する。
さて、以上のように、本実施の形態によれば、実施の形態2の効果に加えて下記の効果を有する。
本実施の形態によれば、アクションセンサ6は携帯可能であるため、ユーザ9は、自分が望む任意の時及び場所で行動情報や身体情報を入力し記録できる。そして、記録された情報はカートリッジ4に送信され、ビジュアル化される。この場合、記録は時刻と関連付けられているので、記録の時間変化をビジュアル化することができる。従って、ユーザ9の行動管理、健康管理ないしは生活管理等に有効である。
また、自動記録モードでは、自動的にユーザ9の動き(行動情報)が検出され、その処理結果が、記録されるので、ユーザ9による手入力が困難又は不可能な情報を記録できる。例えば、継続的に計測及び演算が必要な情報(例えば、加速度)の演算結果(例えば、歩数)の記録に好適である。
さらに、本実施の形態のより好ましい例によれば、自動記録モードでは、アクションセンサ6は二次以上の加工(複数次の加工)を行わない。従って、アクションセンサ6の演算能力及び消費電力を極力抑えることができる。また、複数次の加工を行い、それらを十分に表現するためには、LCD35のサイズや解像度を比較的大きくする必要があるところ、アクションセンサ6は、複数次の加工を行わないので、LCD35の能力を抑制できる。また、LCD35のサイズを小さくできるので、アクションセンサ6の携帯性を向上させることができ、さらに、消費電力を小さくすることができる。
さらに、本実施の形態のより好ましい例によれば、アクションセンサ6は、ユーザ9からの入力情報(行動情報及び身体情報)を、n次加工することなく原データのまま記録する。その結果、処理負荷を少なくでき、アクションセンサ6のMCU52の演算能力を抑制できる。ちなみに、この場合の原データは、ユーザ9が入力するものであり、センサの出力データと比較して、データ量は相当少ない。このため、センサの出力データのように、一次加工は不要である。
なお、本発明は、上記の実施の形態に限られるものではなく、その要旨を逸脱しない範囲で種々の態様において実施することが可能であり、例えば、以下のような変形も可能である。
(1)上記では、アクションセンサ6及び11に加速度センサ29を搭載した。ただし、これに加えて、角速度を検出するジャイロセンサを搭載することもできる。これにより、回転や向きを検出でき、アクションセンサ6及び11の入力装置としての利用方法が拡がる。ただし、ジャイロセンサを設けずに、加速度センサ29を2つ搭載し、回転を検出することもできる。また、アクションセンサ6及び11にジャイセンサのみを搭載することも可能である。また、アクションセンサ6には、傾斜センサ、方位センサ等、その他のモーションセンサを搭載することもできる。
(2)図4において、ユーザ9の運動形態の識別方法を説明した。これは一例であり、次の方法により、ユーザの運動形態を識別することもできる。
歩数計31は、合成加速度Axyが、1Gから増加し、閾値ThHを越え、その後に、閾値ThLを下回った場合に、ユーザ9が、並足、早足及びランのいずれかを行ったと暫定的に判断する。そして、歩数計31は、合成加速度Axyの連続する最大値間の時間Ttと、予め設定された歩幅に基づいて、ユーザ9の速度を算出する。そして、歩数計31は、例えば、ユーザ9の速度が、時速6kmより小さい場合に、ユーザ9の動きを並足に分類し、ユーザ9の速度が、時速8kmより大きい場合は、ユーザ9の動きをランに分類し、ユーザ9の速度が時速6km以上8km以下の場合に、ユーザ9の動きを早足に分類する。ただし、ユーザ9の動きをランに分類した場合において、1Gと合成加速度Axyzの最小値との差の絶対値Amが所定値を下回った場合、ノイズと判断し、越えた場合ランを維持する。
(3)上記では、アクションセンサ6及び11は、ユーザ9の胴体又は頭部に装着された。歩数計モードでは、このように装着するのが好適であるが、ポケットやカバン等に入れて、歩行等を行ってもよい。また、上記のコンテンツでは、通信モードにおいても、アクションセンサ6及び11は、胴体又は頭部に装着するのが好適である。ただし、提供するコンテンツの内容によっては、通信モードにおいて、アクションセンサ6及び11を、四肢の一部又は全部に装着・把持することもできる。なお、プロセッサ13が提供するコンテンツは、上記したものに限定されないことは言うまでもない。
(4)上記では、カートリッジ3及び4のプロセッサ13は、テレビジョンモニタ5に表示する映像と関連して、リアルタイムで順次受信する加速度情報を処理した。ただし、プロセッサ13は、音声、コンピュータ又は所定の機構と関連して、リアルタイムで順次受信する加速度情報を処理することもできる。もちろん、加速度に限定されず、その他の物理量及びその演算結果であってもよい。
例えば、プロセッサ13が生成する音声(ユーザへの動きの指示)をテレビジョンモニタ5のスピーカから出力し、同時に、アクションセンサ6及び11からの加速度情報に基づき、その音声に従った動作をユーザ9が行ったか否かを判断し、テレビジョンモニタ5に判断結果を提示する。例えば、プロセッサ13は、アクションセンサ6及び11からの加速度情報に基づき、テレビジョンモニタ5のスピーカから出力する音声を制御することもできる。例えば、プロセッサ13は、アクションセンサ6及び11からの加速度情報に基づき、他のコンピュータを制御できる。例えば、プロセッサ13は、アクションセンサ6及び11からの加速度情報に基づき、ロボット等の機械や機器の動作といった所定の機構を制御できる。
(5)上記では、カートリッジ方式を採用したが、カートリッジ3及び4とアダプタ1とが一体として形成されてもよい。
(6)上記では、ユーザ9の運動形態を3種類に分類したが、分類数はこれに限定されず、2種類でもよいし、4種類以上でもよい。
(7)上記では、アクションセンサ6及び11は、活動量を算出しなかった。ただし、アクションセンサ6及び11は、活動量を算出して、LCD35に表示することもできる。なお、この場合、実施の形態3の自動記録モードでは、アクションセンサ6は二次加工を行うことになるが、上記のように一次加工までがより好ましいというだけで、二次以上の加工を禁止するものではない。同様に、手動記録モードでのn次の加工を禁止するものではない。
(8)実施の形態3では、アクションセンサ6は、通信モード、自動記録モード及び手動記録モードを備えた。ただし、アクションセンサ6は、通信モード及び自動記録モードのみを有していてもよいし、通信モード及び手動記録モードのみを有していてもよい。
(9)実施の形態1のアクションセンサ11に、実施の形態3のアクションセンサ11と同じ機能(通信モード、自動記録モード、手動記録モード)を持たせることができる。
以上、本発明を実施例により詳細に説明したが、当業者にとっては、本発明が本願中に説明した実施例に限定されるものではないということは明らかである。本発明は、特許請求の範囲の記載により定まる本発明の趣旨及び範囲を逸脱することなく修正及び変更態様として実施することができる。