(57)【特許請求の範囲】
【請求項１】
装置本体と、
加速度を検出する加速度検出部と、
角速度を検出する角速度検出部と、
当該装置本体を装着した身体部位が動作する際の運動が開始された始点から前記運動が終了された終点までの運動期間を確定し、確定された前記運動期間内の前記加速度及び前記角速度に基づき、前記運動期間内の運動軌跡を算出する第１の演算処理と、前記始点から、前記角速度に基づき推定された終点までの運動期間を確定し、確定された前記運動期間内の前記加速度及び前記角速度に基づき、前記運動軌跡を算出する第２の演算処理と、前記始点から前記加速度及び前記角速度に基づき前記運動軌跡を算出する第３の演算処理とを記憶した記憶部と、
前記運動期間内の前記始点からの運動時間が第１の経過時間を超えたか否かを判定する第１判定部と、
前記運動時間が前記第１の経過時間よりも長い第２の経過時間以上であるか否かを判定する第２判定部と、
前記運動時間が前記第１の経過時間を超えていないと判定されると、前記第１の演算処理を選択すると共に、前記運動時間が前記第１の経過時間を超え、かつ、前記第２の経過時間以上でないと判定されると、前記第２の演算処理を選択すると共に、前記運動時間が前記第２の経過時間以上であると判定されると、前記第３の演算処理を選択する選択部と、
前記選択部によって選択された前記演算処理に基づき、前記運動軌跡を算出する制御部と
を有することを特徴とする情報処理装置。
【請求項２】
前記始点及び前記終点が同一であるか否かを判定する第３判定部を更に有し、
前記選択部は、
前記運動時間が前記第１の経過時間を超えていないと判定され、かつ、前記始点及び前記終点が同一であると判定されると、前記第１の演算処理を選択すると共に、前記運動時間が前記第１の経過時間を超えていないと判定され、かつ、前記始点及び前記終点が同一でないと判定されると、前記第２の演算処理を選択する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記選択部は、
指定された期間内の運動期間毎に演算処理を仮選択し、仮選択された演算処理の内、前記運動時間が最長の運動期間に仮選択された演算処理を、当該指定された期間内の全運動期間の演算処理として選択することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記第１判定部及び前記第２判定部の代わりに、
前記運動時間が第３の経過時間未満であるか否かを判定する第４判定部と、
前記運動時間が前記第３の経過時間と、前記第３の経過時間よりも長い第４の経過時間との間の第１の中間時間帯内であるか否かを判定する第５判定部と、
前記運動時間が前記第４の経過時間と、前記第４の経過時間よりも長い第５の経過時間との間の第２の中間時間帯内であるか否かを判定する第６判定部と、
前記運動時間が前記第５の経過時間と、前記第５の経過時間よりも長い第６の経過時間との間の第３の中間時間帯内であるか否かを判定する第７判定部と
を有し、
前記選択部は、
前記運動時間が前記第３の経過時間未満と判定されると、前記第１の演算処理を選択すると共に、
前記運動時間が前記第１の中間時間帯内と判定されると、前記第１の中間時間帯の始点から前記運動時間までの時間の当該中間時間帯に対する割合と前記運動時間から前記第１の中間時間帯の終点までの時間の当該中間時間帯に対する割合との比率に基づき前記第１の演算処理及び前記第２の演算処理を選択すると共に、
前記運動時間が前記第２の中間時間帯内と判定されると、前記第２の演算処理を選択すると共に、
前記運動時間が前記第３の中間時間帯内と判定されると、前記第３の中間時間帯の始点から前記運動時間までの時間の当該中間時間帯に対する割合と前記運動時間から前記第３の中間時間帯の終点までの時間の当該中間時間帯に対する割合との比率に基づき前記第２の演算処理及び前記第３の演算処理を選択すると共に、
前記経過時間が前記第６の経過時間以上と判定されると、前記第３の演算処理を選択する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項５】
加速度を検出する加速度検出部と、角速度を検出する角速度検出部と、プロセッサとを有する情報処理装置の情報処理プログラムであって、
当該情報処理装置を装着した身体部位が動作する際の運動が開始された始点から前記運動が終了された終点までの運動期間を確定し、前記運動期間内の前記始点からの運動時間が第１の経過時間を超えていないと判定されると、確定された前記運動期間内の前記加速度及び前記角速度に基づき、前記運動期間内の運動軌跡を算出する第１の演算処理を選択すると共に、前記運動時間が前記第１の経過時間を超え、かつ、前記第１の経過時間よりも長い第２の経過時間以上でないと判定されると、前記始点から、前記角速度に基づき推定された終点までの運動期間を確定し、確定された前記運動期間内の前記加速度及び前記角速度に基づき、前記運動軌跡を算出する第２の演算処理を選択すると共に、前記運動時間が前記第２の経過時間以上であると判定されると、前記始点から前記加速度及び前記角速度に基づき前記運動軌跡を算出する第３の演算処理を選択し、
選択された演算処理に基づき、前記運動軌跡を算出する
各処理を前記プロセッサに実行させることを特徴とする情報処理プログラム。
【請求項６】
加速度を検出する加速度検出部と、角速度を検出する角速度検出部とを有する情報処理装置の情報処理方法であって、
前記情報処理装置が、
当該情報処理装置を装着した身体部位が動作する際の運動が開始された始点から前記運動が終了された終点までの運動期間を確定し、前記運動期間内の前記始点からの運動時間が第１の経過時間を超えていないと判定されると、確定された前記運動期間内の前記加速度及び前記角速度に基づき、前記運動期間内の運動軌跡を算出する第１の演算処理を選択すると共に、前記運動時間が前記第１の経過時間を超え、かつ、前記第１の経過時間よりも長い第２の経過時間以上でないと判定されると、前記始点から、前記角速度に基づき推定された終点までの運動期間を確定し、確定された前記運動期間内の前記加速度及び前記角速度に基づき、前記運動軌跡を算出する第２の演算処理を選択すると共に、前記運動時間が前記第２の経過時間以上であると判定されると、前記始点から前記加速度及び前記角速度に基づき前記運動軌跡を算出する第３の演算処理を選択し、
選択された演算処理に基づき、前記運動軌跡を算出する
各処理を実行することを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理プログラム及び情報処理方法に関する。
【背景技術】
【０００２】
近年の健康ブームの中、身体の健康度合を測定する測定装置が普及されつつある。例えば、測定装置の一つとして、側屈運動やひねり運動での身体の左右のズレや、最終位置に到達するまでの身体の運動軌跡の歪み等を測定するものがある。この測定装置は、身体上の任意の点が移動した軌跡を運動軌跡として演算するものである。
【０００３】
また、測定装置を携帯電話機等の携帯端末に組み込む場合、携帯端末に内蔵されている、例えば、角速度計及び加速度計等の慣性センサを使用して測定装置としての測定機能を実現するものである。慣性センサを用いて運動軌跡を演算する場合、角速度の１回分の積分と、加速度の２回分の積分とで運動軌跡を演算できる。
【０００４】
しかしながら、携帯電話機等の民生品では、部品コスト、部品サイズや消費電力量等を考慮すると、高精度の慣性センサを使用するのは困難である。しかも、ドリフト及びオフセットを抑制するためのアイドリング期間を設けることも困難である。従って、軌跡演算の測定機能を携帯電話機に組み込む場合には、様々な技法が考えられる。
【０００５】
そこで、軌跡演算を実現する技法の一例として射的法がある。射的法は、軌跡の始点及び終点が同じ往復運動の軌跡演算に適している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−６５６４０号公報
【特許文献２】国際公開第２００３／０９０９８１号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、健康度合を測定する測定機能を使用する利用者は、老若男女、様々であり、その運動速度にも個人差があるため、その運動に要する時間も異なる。従って、運動速度が遅くなると、運動に要する時間も長くなるため、その分、軌跡演算に使用する積分時間も長くなる。その結果、射的法では、積分時間が長くなると累積誤差も大きくなるため、正しい演算結果が得られない。
【０００８】
例えば、慣性センサを使用して軌跡演算を実行する際、加速度及び角速度等のアナログ情報をデジタル情報に変換する必要があるが、デジタルで扱える最小単位以下の加速度及び角速度が取りこぼされてしまう。取りこぼされた加速度及び角速度等が積分値（軌跡）に及ぼす影響は積分時間が長くなる程、その累積誤差が大きくなる。図１２は、加速度の積分時間に応じて累計誤差が生じる関係の一例を示す説明図である。例えば、角速度センサの分解能をＲｒｅｚ（ｒａｄ／ｓ）とした場合、時間Ｔ（ｓ）経過後、ＲｒｅｚＴ（ｒａｄ）が計測不能となる。また、図１２に示すように、加速度センサの分解能をＡｒｅｚ（ｍ／ｓ２）とした場合、時間Ｔ（ｓ）経過後、ＡｒｅｚＴ２／２（ｍ）が計測不能となる。
【０００９】
例えば、民生品の携帯電話機に使用される加速度センサとして１０ビットで±４Ｇを計測するタイプがある。この加速度センサの分解能はＡｒｅｚ＝（２×４×９．８）／１０２４＝０．０７６６（ｍ／ｓ２）である。すなわち、例えば、３秒で約３４ｃｍ、５秒で約９５ｃｍ、１０秒で約３．８ｍの距離が計測不能なことを意味する。尚、射的法で補正できる時間は、発明者の経験則から考えると、求められる精度の約１０倍の距離の時間が必要となる。すなわち、精度１ｃｍの軌跡を得ようとする場合には、その１０倍の１０ｃｍの距離Ｌを必要とし、この距離Ｌで得られる時間は√（２Ｌ／Ａｒｅｚ）の１．６秒程度である。従って、１．６秒を超える運動時間を射的法に採用した場合、射的法で得られた軌跡は実際の軌跡と一致しない不自然な軌跡となる。
【００１０】
つまり、民生品の慣性センサを備えた携帯電話機等の情報処理装置では、利用者の運動時間が異なるため、正確な運動軌跡が得られないのが実情である。
【００１１】
一つの側面では、利用者の運動時間に応じて正確な運動軌跡が得られる情報処理装置、情報処理プログラム及び情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
開示の態様は、装置本体と、加速度を検出する加速度検出部と、角速度を検出する角速度検出部と、記憶部とを有する。記憶部には、当該装置本体を装着した身体部位が動作する際の運動が開始された始点から前記運動が終了された終点までの運動期間を確定し、確定された前記運動期間内の前記加速度及び前記角速度に基づき、前記運動期間内の運動軌跡を算出する第１の演算処理が記憶してある。更に、記憶部には、前記始点から、前記角速度に基づき推定された終点までの運動期間を確定し、確定された前記運動期間内の前記加速度及び前記角速度に基づき、前記運動軌跡を算出する第２の演算処理が記憶してある。更に、記憶部には、前記始点から前記加速度及び前記角速度に基づき前記運動軌跡を算出する第３の演算処理が記憶してある。更に、開示の態様は、前記運動期間内の前記始点からの運動時間が第１の経過時間を超えたか否かを判定する第１判定部と、前記運動時間が前記第１の経過時間よりも長い第２の経過時間以上であるか否かを判定する第２判定部とを有する。更に、開示の態様は、前記運動時間が前記第１の経過時間を超えていないと判定されると、前記第１の演算処理を選択する選択部を有する。更に、選択部は、前記運動時間が前記第１の時間を超え、かつ、前記第２の経過時間以上でないと判定されると、前記第２の演算処理を選択すると共に、前記運動時間が前記第２の経過時間以上と判定されると、前記第３の演算処理を選択する。更に、開示の態様は、前記選択部によって選択された前記演算処理に基づき、前記運動軌跡を算出する制御部を有する。
【発明の効果】
【００１３】
開示の態様では、利用者の運動時間に応じて正確な運動軌跡が得られる。
【図面の簡単な説明】
【００１４】
【図１】図１は、実施例１の情報処理装置の一例を示すブロック図である。
【図２Ａ】図２Ａは、情報処理装置を装着した人体のリンクモデルの一例を示す説明図である。
【図２Ｂ】図２Ｂは、情報処理装置を装着した人体のリンクモデルの一例を示す説明図である。
【図２Ｃ】図２Ｃは、情報処理装置を装着した人体のリンクモデルの一例を示す説明図である。
【図２Ｄ】図２Ｄは、情報処理装置を装着した人体のリンクモデルの一例を示す説明図である。
【図２Ｅ】図２Ｅは、情報処理装置を装着した人体のリンクモデルの一例を示す説明図である。
【図３】図３は、角速度の二乗和と時間との関係に基づき運動区間を特定する際の一例を示す説明図である。
【図４】図４は、情報処理装置の位置座標の一例を示す説明図である。
【図５】図５は、第１の演算処理及び第２の演算処理に関わるＭＣＵの処理動作の一例を示すフローチャートである。
【図６】図６は、第３の演算処理に関わる演算処理部の動作の一例を示す説明図である。
【図７】図７は、最適演算処理に関わるＭＣＵの処理動作の一例を示すフローチャートである。
【図８】図８は、実施例２の最適演算処理に関わるＭＣＵの処理動作の一例を示すフローチャートである。
【図９】図９は、実施例３の情報処理装置の一例を示すブロック図である。
【図１０】図１０は、実施例３の最適演算処理に関わるＭＣＵの処理動作の一例を示すフローチャートである。
【図１１】図１１は、演算処理の一例を示すフローチャートである。
【図１２】図１２は、加速度の積分時間に応じて累計誤差が生じる関係の一例を示す説明図である。
【発明を実施するための形態】
【００１５】
以下、図面に基づいて、本願の開示する情報処理装置、情報処理プログラム及び情報処理方法の実施例を詳細に説明する。尚、本実施例により、開示技術が限定されるものではない。また、以下に示す各実施例は、矛盾を起こさない範囲で適宜組み合わせても良い。
【実施例１】
【００１６】
図１は、実施例１の情報処理装置の一例を示すブロック図である。図１に示す情報処理装置１は、例えば、慣性センサを内蔵した携帯電話機等の携帯端末である。情報処理装置１は、通信部１１と、加速度センサ１２と、角速度センサ１３と、操作部１４と、表示部１５と、ワークメモリ１６と、プログラム領域１７と、メモリストレージ１８と、ＭＣＵ（Micro  Controller  Unit）１９とを有する。
【００１７】
通信部１１は、例えば、無線通信を司るインタフェースである。加速度センサ１２は、例えば、ｘ軸、ｙ軸及びｚ軸の３軸の加速度Ｓを検出するセンサ等の加速度検出部である。角速度センサ１３は、例えば、３軸の角速度Ｇを検出するセンサ等の角速度検出部である。操作部１４は、コマンド等の各種情報を入力する。表示部１５は、各種情報を表示出力する。ワークメモリ１６は、演算に使用するメモリ領域である。プログラム領域１７は、各種プログラムが格納された記憶部である。メモリストレージ１８は、例えば、一定期間のセンサ情報等の各種情報を記憶する領域である。ＭＣＵ１９は、情報処理装置１全体を制御するプロセッサである。
【００１８】
図２Ａ〜Ｅは、情報処理装置１を装着した人体のリンクモデルの一例を示す説明図である。例えば、前屈運動、側屈運動やひねり運動等の運動軌跡を演算する場合、利用者の正面胸部に情報処理装置１を装着する。図２Ａに示すように、原点を人体の背骨１０１の腰関節１０２付近とし、ｘ軸を人体の左手方向、ｙ軸を人体の頭頂方向、ｚ軸を人体の前方方向に設定する。
【００１９】
図２Ｂの前屈運動は、ｘ軸回りの回転φｘが主たる動きである。尚、ｘ軸回りの回転φｘは、人体の前方向への傾き度合を示す。図２Ｃの側屈運動は、ｚ軸回りの回転φｚが主な動きである。ｚ軸回りの回転φｚは、人体の直立した姿勢から真横に人体を倒す度合を示す。人体が左右対称の場合、ｚ軸回りの回転角の正の方向（人体を直立させたときの回転角を０とした場合、回転角が正の値となる方向）と負の方向（回転角が負の値となる方向）との最大値が略一致する。図２Ｄのひねり運動は、ｙ軸回りの回転φｙが主な動きである。尚、ｙ軸回りの回転φｙは、人体のひねり度合を示す。
【００２０】
この際、情報処理装置１の位置と背骨１０１の位置との間の距離をｄ１、腰関節１０２の位置と背骨１０１の位置との間の距離をｈ１とした場合、正面胸部に設置された情報処理装置１の初期位置は（０、ｈ１、ｄ１）Ｔである。尚、情報処理装置１の位置は、情報処理装置１の任意の点の位置である。
【００２１】
また、図２Ｅに示す足踏み運動の軌跡を演算する場合、利用者の腰関節１０２付近に情報処理装置１を装着する。この際、情報処理装置１の位置と腰関節１０２の位置との間の距離をｄ２、腰関節１０２と繋がる背骨１０１の位置と、足首の関節１０３と繋がる脚骨１０４の位置との間の距離をｈ２とした場合、腰関節１０２付近に装着された情報処理装置１の初期位置は（０、ｈ２、−ｄ２）Ｔである。
【００２２】
また、ＭＣＵ１９は、角速度センサ１３で検出された角速度Ｇの二乗和ｐに基づき運動区間Ｔｐを算出する。図３は、角速度の二乗和と時間との関係に基づき運動区間を特定する際の一例を示す説明図である。ＭＣＵ１９は、角速度Ｇの二乗和ｐが所定閾値αを超えた時刻を運動区間の開始時刻（始点）Ｔ０とする。また、ＭＣＵ１９は、角速度Ｇの二乗和ｐが所定閾値α以下のまま、所定時間Ｔ１を経過した場合、所定閾値α以下になった時点を運動区間の終了時刻（終点）Ｔｎとする。その結果、ＭＣＵ１９は、始点Ｔ０及び終点Ｔｎで運動区間Ｔｐを特定する。
【００２３】
図４は、情報処理装置１の位置座標の一例を示す説明図である。加速度センサ１２で検出される加速度Ｓｉは、（ａｘ，ａｙ，ａｚ）で表現する。角速度センサ１３で検出される角速度Ｇｉは、（ｇｘ、ｇｙ、ｇｚ）で表現する。
【００２４】
また、プログラム領域１７に格納される演算処理には、後述する、第１の演算処理と、第２の演算処理と、第３の演算処理とがある。第１の演算処理は、運動区間を確定し、確定された運動区間内の加速度Ｓ及び角速度Ｇに基づき、往復運動（始点＝終点）の運動区間内の運動軌跡を算出する往復運動に適した第１の射的法の演算処理である。第２の演算処理は、始点から角速度Ｇに基づき推定された終点までの運動区間を確定し、確定された運動区間内の加速度Ｓ及び角速度Ｇに基づき、片道運動（始点≠終点）の運動区間内の運動軌跡を算出する片道運動に適した第２の射的法の演算処理である。第３の演算処理は、始点から加速度Ｓ及び角速度Ｇに基づき運動軌跡を算出するフィードバック積分の演算処理である。
【００２５】
また、図１に示すＭＣＵ１９は、第１判定部２１と、第２判定部２２と、第３判定部２３と、選択部２４と、制御部２５とを有する。ＭＣＵ１９は、加速度センサ１２及び角速度センサ１３の検出結果に基づき運動区間Ｔｐを算出する。
【００２６】
第１判定部２１は、運動区間Ｔｐ内の始点から運動時間が第１の経過時間Ｔｘ１を超えたか否かを判定する。尚、第１の経過時間Ｔｘ１は、例えば、１．５秒である。第２判定部２２は、運動時間が第２の経過時間Ｔｘ２を超えたか否かを判定する。尚、第２の経過時間Ｔｘ２は、例えば、５秒である。第３判定部２３は、運動区間Ｔｐの始点及び終点が同一、すなわち始点の重力加速度ベクトルＧｒ１及び終点の重力加速度ベクトルＧｒ２が同一の往復運動であるか否かを判定する。
【００２７】
選択部２４は、運動時間が第１の経過時間Ｔｘ１を超えてない場合、かつ、運動区間Ｔｐの始点及び終点が同一の往復運動の場合、第１の演算処理を選択する。選択部２４は、運動時間が第１の経過時間Ｔｘ１を超え、かつ、運動時間が第２の経過時間Ｔｘ２を超えてない場合、第２の演算処理を選択する。更に、選択部２４は、運動時間が第１の経過時間Ｔｘ１を超えず、かつ、往復運動でない場合には、第２の演算処理を選択する。また、選択部２４は、運動時間が第２の経過時間Ｔｘ２を超えた場合、第３の演算処理を選択する。
【００２８】
制御部２５は、選択部２４によって選択された演算処理に基づき、運動区間内の運動軌跡を算出する。
【００２９】
次に情報処理装置１の動作について説明する。軌跡演算は、微小時間Ｔ毎に取得された角速度Ｇ及び加速度ＳをＴ毎の姿勢Ｒ及び位置Ｐに変換する演算である。Ｔ毎に更新される時刻Ｔは、０、Ｔ、２Ｔ、３Ｔ…と離散的な値である。添え字ｉを用いて、時刻ｉ・Ｔの角速度をＧｉ＝（ｇｘ，ｇｙ，ｇｚ）Ｔ、加速度をＳｉ＝（ａｘ，ａｙ，ａｚ）Ｔ、情報処理装置１の姿勢をＲｉ、情報処理装置１の位置をＰｉ＝（ｘ，ｙ，ｚ）Ｔと表現する。尚、姿勢Ｒｉは、ピッチ、ロール及びヨーと呼ばれる三つの角度で表現し、計算の便宜上、ローカル座標をグローバル座標に変換して３×３の回転行列と考える。また、グローバル座標は、情報処理装置１を装着した人の空間の絶対座標であるのに対し、ローカル座標は、情報処理装置１自体に固定された座標である。
【００３０】
図５は、第１の演算処理及び第２の演算処理に関わるＭＣＵ１９の処理動作の一例を示すフローチャートである。尚、運動区間をｉ＝０，１，２，３…ｎで表現し、始点をｉ＝０、終点をｉ＝ｎとした場合、始点の姿勢をＲ０＝Ｉ、終点の姿勢をＲｎ＝ＲＮ、始点の速度をＶ０＝０、終点の速度をＶｎ＝ＶＮ、始点の位置をＰ０＝０、終点の位置をＰｎ＝ＰＮとする。第１の演算処理で使用する第１の射的法は、終点の姿勢ＲＮ、速度ＶＮ及び位置ＰＮが、始点の姿勢Ｒ０、速度Ｖ０及び位置Ｐ０と等しく、姿勢Ｒ０及びＲＮがＩ、速度Ｖ０及びＶＮが０、位置Ｐ０及びＰＮが０である往復運動を対象とする。これに対して、第２の演算処理で使用する第２の射的法は、片道運動を対象とし、運動区間の終点の姿勢Ｒｎ、速度Ｖｎ及び位置Ｐｎを角速度Ｇｎに基づき推定する。
【００３１】
図５においてＭＣＵ１９の制御部２５は、加速度センサ１２の検出結果である加速度Ｓ＝（ａｘ，ａｙ，ａｚ）Ｔの時系列データ及び角速度センサ１３の検出結果である角速度Ｇ＝（ｇｘ，ｇｙ，ｇｚ）Ｔの時系列データを収集する（ステップＳ１１）。
【００３２】
制御部２５は、収集された加速度Ｓ及び角速度Ｇの時系列データから運動区間に対応した加速度Ｓ0〜Ｓn及び角速度Ｇ0〜Ｇnを抽出する（ステップＳ１２）。そして、制御部２５は、運動区間に基づき、終点の姿勢ＲＮ、速度ＶＮ及び位置ＰＮを決定する（ステップＳ１３）。尚、往復運動の場合、始点及び終点が同一値であるため、終点の姿勢ＲＮはＩ、終点の速度ＶＮは０、終点の位置ＰＮは０である。これに対して、片道運動の場合、始点及び終点が同一値でないため、終点の姿勢ＲＮ、速度ＶＮ及び位置ＰＮが角速度Ｇnに基づき推定する。
【００３３】
制御部２５は、始点の姿勢Ｒ０をＩ、始点の速度Ｖ０を０、始点の位置Ｐ０を０に決定する（ステップＳ１４）。制御部２５は、オフセット量ｏ＝０に設定し（ステップＳ１５）、ループカウンタの値ｉ＝１に設定する（ステップＳ１６）。制御部２５は、ＲＳ＝Ｒi-1・(Ｇi−ｏ）に基づき絶対座標の回転速度ＲＳを算出する（ステップＳ１７）。
【００３４】
制御部２５は、ｄＲ＝Ｒi-1×ＲＳで微分値を算出する（ステップＳ１８）。尚、Ｒi-1は、（ωｘT,ωｙT，ωｚT）とした場合、ωは１×３行列であるため、例えば、ｄＲ＝（（ωｘ×ＲＳ）T,（ωｙ×ＲＳ）T，（ωｚ×ＲＳ）T）となる。そして、制御部２５は、微分値ｄＲを時間について積分し、Ｒi＝Ｒi-1＋∫ｄＲｄｔに基づき姿勢Ｒiを算出する（ステップＳ１９）。
【００３５】
制御部２５は、ループカウンタの値ｉを＋１インクリメントし（ステップＳ２０）、ループカウンタの値ｉがｎを超えたか否かを判定する（ステップＳ２１）。尚、ステップＳ１６〜ステップＳ２０までの処理は、姿勢Ｒｉを積分する処理である。
【００３６】
制御部２５は、値ｉがｎを超えていない場合（ステップＳ２１否定）、回転速度ＲＳを算出すべく、ステップＳ１７に移行する。また、制御部２５は、値ｉがｎを超えた場合（ステップＳ２１肯定）、１回目であるか否かを判定する（ステップＳ２２）。
【００３７】
制御部２５は、１回目の場合（ステップＳ２２肯定）、ＲＲ＝ＲＮ-1×Ｒnに基づき、積分値と理想値との誤差ＲＲを算出する（ステップＳ２３）。尚、ＲＮ-1とＲnとの積ＲＲは、理想的には単位行列になる。しかし、実際には、センサのドリフト等でＲＲは単位行列にはならず、積分値の誤差、つまり、重力の変化から得られた運動前後の姿勢の変化とセンサを積分して得られた姿勢の変化との間にズレが生じる。従って、射的法では、ＲＲが単位行列となる角速度センサ１３のオフセット値ｏを求める。つまり、誤差ＲＲは、姿勢のズレを示し、姿勢変化ＲＲから回転ベクトル（回転軸）Ｑと、その変化量である回転量θとを算出する際、回転量θが発生しないようにオフセット値ｏを求める。
【００３８】
制御部２５は、誤差ＲＲに基づき、ＲＲの回転ベクトルＱ及び回転量θを算出する（ステップＳ２４）。尚、誤差ＲＲは、回転行列のため３×３行列である。その要素を回転行列の第１段目の横行列をｒ１１、ｒ１２及びｒ１３、第２段目の横行列をｒ２１、ｒ２２及びｒ２３、第３段目の横行列をｒ３１、ｒ３２及びｒ３３とした場合、回転ベクトルは、Ｑ＝（ｒ２３−ｒ３２、ｒ３１−ｒ１３、ｒ１２−ｒ２１）Ｔとなる。更に、その回転量は、θ＝cos-1(（ｒ１１＋ｒ２２＋ｒ３３−１）／２)となる。
【００３９】
制御部２５は、ｏ＝θ／Ｑｄｔに基づき、姿勢Ｒのオフセット量ｏを算出し(ステップＳ２５)、算出されたオフセット量ｏをＲＳ＝Ｒi-1・(Ｇi−ｏ)に代入して回転速度ＲＳを算出すべく、ステップＳ１６を経てステップＳ１７に移行する。その結果、ループカウンタの値ｉがｎを超えた２回目以降は、オフセット量ｏの代入に応じて誤差ＲＲの回転量θが０となるため、誤差ＲＲが単位行列となる。
【００４０】
制御部２５は、１回目でない場合（ステップＳ２２否定）、すなわち２回目以降は誤差ＲＲが単位行列のため、オフセット量ｏ＝０に設定し（ステップＳ２６）、ループカウンタの値ｉ＝１に設定する（ステップＳ２７）。尚、制御部２５は、説明の便宜上、１回目の処理で姿勢ＲＲのオフセット量ｏが「０」にみなせるものとした。しかしながら、ステップＳ２５のθ／Ｑｄｔに「１」よりも小さい正の数をかけ、オフセット量ｏが「０」とみなされるまで、ステップＳ１６〜ステップＳ２５の処理動作を繰り返す方法もあり得る。制御部２５は、Ａi＝Ｒi×Ｓi−ｏに基づき絶対座標上の加速度Ａiを算出する（ステップＳ２８）。
【００４１】
制御部２５は、加速度Ａiを時間で積分して、Ｖi＝Ｖi-1＋∫Ａｉｄｔに基づき、絶対座標上の速度Ｖiを算出する（ステップＳ２９）。制御部２５は、ループカウンタの値ｉを＋１インクリメントし（ステップＳ３０）、値ｉがｎを超えたか否かを判定する（ステップＳ３１）。制御部２５は、値ｉがｎを超えなかった場合（ステップＳ３１否定）、値ｉの加速度Ａｉを算出すべく、ステップＳ２８に移行する。制御部２５は、値ｉがｎを超えた場合（ステップＳ３１肯定）、１回目であるか否かを判定する（ステップＳ３２）。
【００４２】
制御部２５は、１回目の場合（ステップＳ３２肯定）、ｏ＝（Ｖn−ＶＮ）／ｄｔに基づき、速度Ｖのオフセット量ｏを算出し（ステップＳ３３）、値ｉ＝１に設定すべく、ステップＳ２７に移行する。
【００４３】
また、制御部２５は、１回目でない場合（ステップＳ３２否定）、すなわち２回目以降はオフセット量ｏ＝０に設定し（ステップＳ３４）、値ｉ＝１に設定する（ステップＳ３５）。尚、制御部２５は、説明の便宜上、１回目の演算処理で速度Ｖiのオフセット量ｏが０になるものとする。
【００４４】
制御部２５は、Ｖ＝Ｖi−ｏに基づき速度Ｖを算出する（ステップＳ３６）。制御部２５は、速度Ｖを時間で積分し、Ｐi＝Ｐi-1＋∫Ｖｄｔに基づき、絶対座標上の位置Ｐiを算出する（ステップＳ３７）。制御部２５は、ループカウンタの値ｉを＋１インクリメントし（ステップＳ３８）、値ｉがｎを超えたか否かを判定する（ステップＳ３９）。制御部２５は、値ｉがｎを超えなかった場合（ステップＳ３９否定）、速度Ｖを算出すべく、ステップＳ３６に移行する。制御部２５は、値ｉがｎを超えた場合（ステップＳ３９肯定）、１回目であるか否かを判定する（ステップＳ４０）。
【００４５】
制御部２５は、１回目の場合（ステップＳ４０肯定）、ｏ＝(Ｐn−ＰＮ)／ｄｔに基づき、位置Ｐのオフセット量ｏを算出し（ステップＳ４１Ａ）、ループカウンタの値ｉ＝１に設定すべく、ステップＳ３５に移行する。制御部２５は、１回目でない場合（ステップＳ４０否定）、すなわち２回目以降は、図５に示す処理動作を終了する。尚、制御部２５は、説明の便宜上、１回目の演算処理で位置Ｐiのオフセット量ｏが０になるものとする。
【００４６】
第１の演算処理では、運動区間内の始点及び終点が同一と捉え、加速度Ｓ及び角速度Ｇに基づき姿勢Ｒを算出し、算出された姿勢Ｒに基づき速度Ｖを算出し、算出された速度Ｖに基づき位置Ｐを算出する。その結果、往復運動の姿勢Ｒ及び位置Ｐに基づき運動区間内の運動軌跡を算出できる。
【００４７】
第２の演算処理では、運動区間内の終点を角速度Ｇｎで推定し、加速度Ｓ及び角速度Ｇに基づき姿勢Ｒを算出し、算出された姿勢Ｒに基づき速度Ｖを算出し、算出された速度Ｖに基づき位置Ｐを算出する。その結果、片道運動の姿勢Ｒ及び位置Ｐに基づき運動区間内の運動軌跡を算出できる。尚、第２の演算処理では、運動区間の往路及び復路を区分して片道分の射的法を適用するため、積分しなければならない時間が往復の半分で済み、正しい演算結果が得られる。
【００４８】
また、制御部２５は、第３の演算処理を実行する演算処理部２５Ａを有する。図６は、第３の演算処理に関わる演算処理部２５Ａの動作の一例を示す説明図である。図６に示す演算処理部２５ＡのＬＰＦ（Low  Pass  Filter）３１は、加速度センサ１２で検出された加速度Ｓ＝（ａｘ，ａｙ，ａｚ）Ｔにフィルタ処理を施して重力加速度ベクトルＳｇを算出する。
【００４９】
演算処理部２５Ａの第１の回転行列変換部３２は、重力加速度ベクトルＳｇを、ローカル座標から重力方向をｙ軸とする絶対座標系に変換して回転行列Ｒｇを求める。更に、逆行列変換部３３は、回転行列Ｒｇを逆行列（転置行列）ＲｇＴに変換する。尚、重力方向の二次元座標からＲｇＴという三次元情報に変換するには情報を一次元に落とす必要がある。今回、運動の軌跡を求める場合、ｙ軸回りで回転しないものとする。
【００５０】
更に、演算処理部２５Ａの姿勢メモリ３４は、回転行列Ｒｉ（ｉ＝０〜ｎ）の時系列データを格納する。演算処理部２５Ａの第１の演算部３５は、逆行列変換部３３の逆行列ＲｇＴと、姿勢メモリ３４内の回転行列Ｒとの積で、誤差ＲＲを算出する。ベクトル演算部３５Ａは、誤差ＲＲから回転軸の回転ベクトルＱ及び、その変化量である回転量θを算出する。
【００５１】
演算処理部２５Ａの第１ゲイン部３６は、回転ベクトルＱ及び回転量θの積に定数Ｋｒをゲイン調整することでオフセット量ＫｒＱθを算出する。また、演算処理部２５Ａの第２の演算部３７は、姿勢メモリ３４内の回転行列Ｒｉ及び、角速度センサ１３の検出結果である角速度Ｇｉに基づき回転速度ＲＳを算出する。更に、演算処理部２５Ａの第３の演算部３８は、回転速度ＲＳからオフセット量ＫｒＱθを減算し、減算結果の回転速度ＲＳを外積演算部３９に入力する。外積演算部３９は、回転速度ＲＳと前回の姿勢（回転行列）Ｒi-1とでベクトルの微分値ｄＲを得る。
【００５２】
演算処理部２５Ａの姿勢積分部４０は、ベクトルの微分値ｄＲの積分値∫ｄＲｄｔを算出する。更に、演算処理部２５Ａの第４の演算部４１は、前回の姿勢（回転行列）Ｒi-1と積分値∫ｄＲｄｔとを加算して姿勢Ｒiを算出し、算出した姿勢Ｒiを姿勢メモリ３４に更新する。
【００５３】
第５の演算部４２Ａ及び第６の演算部４２Ｂは、運動の回転中心から見た情報処理装置１の位置Ｘ＝（ｘ，ｙ，ｚ）Ｔと、姿勢メモリ３４からの姿勢ＲＸとに基づきＸｘ＝ＲＸ−Ｘの演算で、運動開始時点を原点とした場合のリンクモデルの移動量Ｘｘを求める。尚、情報処理装置１の位置Ｘはメモリ４２Ｃに格納されているものとする。演算処理部２５Ａの第７の演算部４３は、移動量Ｘｘと現在位置メモリ４４の現在位置Ｐとに基づき、Ｐｘ＝Ｐ−Ｘｘで位置Ｐの誤差Ｐｘを算出する。演算処理部２５Ａの第８の演算部４５は、Ｚにｄｔ（ＲＴＰｘ）を加算することでＺを更新する。
【００５４】
演算処理部２５Ａの第２ゲイン部４６は、Ｚに対して定数Ｋｉを積分ゲインしてＫｉ・Ｚを得る。演算処理部２５Ａの第９の演算部４７は、Ｓ−Ｋｉ・Ｚを算出する。演算処理部２５Ａの第１０の演算部４８は、姿勢メモリ３４からの回転行列Ｒと、第９の演算部４７からＳ−Ｋｉ・Ｚとに基づき、Ｒ（Ｓ−Ｋｉ・Ｚ）を算出する。
【００５５】
演算処理部２５Ａの第３ゲイン部４９は、第７の演算部４３からの誤差Ｐｘに定数Ｋｐを比例ゲインとしてＰｘ・Ｋｐを算出する。演算処理部２５Ａの第１１の演算部５０は、第３ゲイン部４９からのＰｘ・Ｋｐと、第１０の演算部４８からのＳ−Ｋｉ・Ｚとに基づき、Ｒ（Ｓ−Ｋｉ・Ｚ）−Ｋｐ・Ｐｘを算出する。更に、演算処理部２５Ａの第４ゲイン部５１は、現在速度メモリ５２で得た速度Ｖに対して定数Ｋｄを微分ゲインしてＫｄ・Ｖを算出する。更に、演算処理部２５Ａの第１２の演算部５３は、Ｒ（Ｓ−Ｋｉ・Ｚ）−Ｋｐ・Ｐｘ−Ｋｄ・Ｖに基づき、加速度Ａを算出する。尚、Ｋｉは積分ゲインの定数，Ｋｄは微分ゲインの定数，Ｋｐは比例ゲインの定数である。Ｒ・Ｓは、例えば、ＨＰＦ（High  Pass  Filter）で重力加速度成分を除去しても良い。
【００５６】
演算処理部２５Ａの第１３の演算部５４は、速度Ｖ及び加速度Ａの積分値∫ＡｄｔのＶi＝Ｖ＋∫Ａｄｔに基づき、現在の速度Ｖiを算出し、算出された現在の速度Ｖiを現在速度メモリ５２に格納する。演算処理部２５Ａの第１４の演算部５５は、現在位置Ｐ及び速度Ｖの積分値∫ＶｄｔのＰi＝Ｐ＋∫Ｖｄｔに基づき、現在の位置Ｐiを算出し、算出された現在のＰiを現在位置メモリ４４に格納する。
【００５７】
第３の演算処理では、第２の演算処理に比較して長時間の運動軌跡に対応し、現在姿勢Ｒi及び現在位置Ｐiに基づき運動軌跡を演算できる。また、第３の演算処理では、微分ゲインＫｄを設けることで比例ゲインＫｐが大きくできるため、その分、収束を速めることができる。また、第３の演算処理では、積分ゲインＫｉを設けることで、重力の影響や加速度センサ１２の零点ドリフトを抑制できる。
【００５８】
図７は、最適演算処理に関わるＭＣＵ１９の処理動作の一例を示すフローチャートである。図７に示す最適演算処理は、運動区間の時間及び条件に応じて第１の演算処理、第２の演算処理又は第３の演算処理を実行する処理である。尚、演算精度は、第１の演算処理が一番高く、第２の演算処理が二番目に高く、第３の演算処理が三番目に高い。また、第１の演算処理は、例えば、Ｔｐ＜１．５秒の運動区間に適し、第２の演算処理は、例えば、１．５秒≦Ｔｐ＜５秒の運動区間に適し、第３の演算処理は、例えば、５秒≦Ｔｐの運動区間に適している。
【００５９】
ＭＣＵ１９は、加速度センサ１２の検出結果である加速度Ｓにローパスフィルタ処理を施すことで、重力加速度ベクトルＧｒ１を算出すると共に、角速度センサ１３の検出結果である角速度Ｇの二乗和ｐを算出する（ステップＳ４１）。
【００６０】
ＭＣＵ１９は、二乗和ｐが所定閾値αを超えた（ｐ＞α）か否かを判定する（ステップＳ４２）。ＭＣＵ１９は、二乗和ｐが所定閾値αを超えた場合（ステップＳ４２肯定）、運動時間の現在時刻を運動区間の開始時刻とする（ステップＳ４３）。
【００６１】
ＭＣＵ１９は、サンプリング時間をｔ＝０に設定し（ステップＳ４４）、加速度Ｓ及び角速度Ｇを抽出し（ステップＳ４５Ａ）、角速度Ｇの二乗和ｐを算出する（ステップＳ４５）。ＭＣＵ１９は、角速度Ｇの二乗和ｐが所定閾値αを超えたか否かを判定する（ステップＳ４６）。ＭＣＵ１９は、二乗和ｐが所定閾値αを超えた場合（ステップＳ４６肯定）、サンプリング時間をｔ＝０に設定すべく、ステップＳ４４に移行する。
【００６２】
また、ＭＣＵ１９は、二乗和ｐが所定閾値αを超えていない場合（ステップＳ４６否定）、サンプリング時間ｔ＝０であるか否かを判定する（ステップＳ４７）。ＭＣＵ１９は、サンプリング時間ｔ＝０の場合（ステップＳ４７肯定）、現在時刻を運動区間の終了時刻とする（ステップＳ４８）。
【００６３】
ＭＣＵ１９は、終了時刻の重力加速度ベクトルＧｒ２を算出し（ステップＳ４９）、終了時刻からのサンプリング時間ｔの計時動作を開始し（ステップＳ５０）、サンプリング時間ｔが所定時間Ｔ１以上であるか否かを判定する（ステップＳ５１）。
【００６４】
ＭＣＵ１９は、サンプリング時間ｔが所定時間Ｔ１以上でない場合（ステップＳ５１否定）、現時点の加速度Ｓ及び角速度Ｇを抽出すべく、ステップＳ４５Ａに移行する。また、ＭＣＵ１９は、サンプリング時間ｔが所定時間Ｔ１以上の場合（ステップＳ５１肯定）、終了時刻Ｔｓ−開始時刻Ｔｅに基づき運動区間Ｔｐを算出する（ステップＳ５２）。
【００６５】
ＭＣＵ１９の第１判定部２１は、運動区間Ｔｐが第１の経過時間Ｔｘ１、例えば、１．５秒を超えた（Ｔｐ＞１．５秒）か否かを判定する（ステップＳ５３）。第１判定部２１は、運動区間Ｔｐが１．５秒を超えていない場合（ステップＳ５３否定）、重力加速度ベクトルＧｒ１と重力加速度ベクトルＧｒ２とがほぼ同一であるか否かを判定する（ステップＳ５４）。
【００６６】
ＭＣＵ１９の制御部２５は、重力加速度ベクトルＧｒ１と重力加速度ベクトルＧｒ２とがほぼ同一の場合（ステップＳ５４肯定）、往復運動のため、第１の演算処理を選択して実行し（ステップＳ５５）、図７に示す処理動作を終了する。
【００６７】
また、ＭＣＵ１９の第２判定部２２は、運動区間Ｔｐが１．５秒を超えた場合（ステップＳ５３肯定）、又は、重力加速度ベクトルＧｒ１と重力加速度ベクトルＧｒ２とが同一でない場合（ステップＳ５４否定）、運動区間Ｔｐが第２の経過時間Ｔｘ２、例えば、５秒以上（Ｔｐ≧５秒）か否かを判定する（ステップＳ５６）。
【００６８】
制御部２５は、運動区間Ｔｐが５秒以上でない場合（ステップＳ５６否定）、第２の演算処理を選択して実行し（ステップＳ５７）、図７に示す処理動作を終了する。
【００６９】
また、制御部２５は、運動区間Ｔｐが５秒以上の場合（ステップＳ５６肯定）、第３の演算処理を選択して実行し（ステップＳ５８）、図７に示す処理動作を終了する。
【００７０】
運動区間が１．５秒を超えず、かつ、運動区間内の始点の重力加速度ベクトルＧｒ１及び終点の重力加速度ベクトルＧｒ２が同一の場合、往復運動に適した第１の演算処理を実行する。また、運動区間が５秒を超えず、かつ、運動区間内の始点の重力加速度ベクトルＧｒ１及び終点の重力加速度ベクトルＧｒ２が異なる場合、片道運動に適した第２の演算処理を実行する。また、運動区間が５秒以上の場合、第３の演算処理を実行する。
【００７１】
実施例１では、運動区間Ｔｐが１．５秒を超えず、かつ、運動区間内の始点及び終点が同一の往復運動の場合、第１の演算処理を実行する。その結果、情報処理装置１では、例えば、１．５秒未満の往復運動の運動軌跡を高精度に演算できる。
【００７２】
また、実施例１では、運動区間Ｔｐが１．５秒を超えず、かつ、運動区間の始点及び終点が異なる片道運動の場合、又は、運動区間Ｔｐが５秒以上でない場合、第２の演算処理を実行する。その結果、情報処理装置１では、例えば、１．５秒≦Ｔｐ＜５秒の運動軌跡を高精度に演算できる。
【００７３】
また、実施例１では、運動区間Ｔｐが５秒以上の場合、第３の演算処理を実行する。その結果、情報処理装置１では、例えば、５秒以上の長時間の運動軌跡を演算できる。
【００７４】
実施例１では、運動区間の時間及び条件に応じて最適な演算処理を選択して実行する。その結果、利用者の時間及び条件に応じた正確な運動軌跡が得られる。
【００７５】
尚、上記実施例１では、第１の演算処理〜第３の演算処理を区別する閾値として、例えば、１．５秒及び５秒を設定したが、これら数値に限定されるものではなく、適宜変更可能である。
【００７６】
また、側屈運動やひねり運動等の運動では、右方向の片道運動及び左方向の片道運動が連続し、右方向の片道運動が１．４９秒、左方向の片道運動が１．５秒の場合がある。この場合、ＭＣＵ１９は、右方向の片道運動で第１の演算処理を選択し、左方向の片道運動で第２の演算処理を選択する。従って、０．０１秒の差しかないにもかかわらず、右方向の片道運動及び左方向の片道運動で異なる演算処理を使用することになる。
【実施例２】
【００７７】
しかしながら、連続した右方向及び左方向の片道運動で演算処理が異なると、演算処理毎に精度が異なるため、連続する運動では、同一精度の演算処理を使用することが望ましい。そこで、このような実施の形態につき、実施例２として以下に説明する。尚、図１に示す情報処理装置１と同一の構成には同一符号を付すことで、その重複する構成及び動作の説明については省略する。
【００７８】
選択部２４は、指定された期間内の運動区間毎に演算処理を仮選択し、仮選択された演算処理の内、最長の運動区間に仮選択された演算処理を、当該指定された期間内の全運動区間の演算処理として選択する。尚、期間とは、例えば、運動開始から運動終了までの期間に相当する。また、仮選択される演算処理は、第１の演算処理と、第２の演算処理と、第３の演算処理とがある。前述した通り、第１の演算処理は、Ｔｐ＜１．５秒の往復運動の軌跡演算に適し、第２の演算処理は、例えば、１．５秒≦Ｔｐ＜５秒の運動の軌跡演算に適し、第３の演算処理は、５秒≦Ｔｐの運動の軌跡演算に適している。
【００７９】
次に、実施例２の情報処理装置１の動作について説明する。図８は、実施例２の最適演算処理に関わるＭＣＵ１９の処理動作の一例を示すフローチャートである。
【００８０】
図８においてＭＣＵ１９は、運動区間の値ｉ＝０に設定し（ステップＳ６１）、加速度センサ１２の検出結果である加速度Ｓ及び角速度センサ１３の検出結果である角速度Ｇの時系列データから運動区間Ｔｐを抽出する（ステップＳ６２）。
【００８１】
ＭＣＵ１９は、運動区間Ｔｐが抽出されると、運動区間Ｔｐ内の加速度Ｓ及び角速度Ｇの時系列データＤｉをワークメモリ１６に格納する（ステップＳ６３）。更に、ＭＣＵ１９の選択部２４は、運動区間Ｔｐに適用する演算処理を決定した場合、即適用するのではなく、運動区間Ｔｐに適用する演算処理を仮選択する（ステップＳ６４）。尚、選択部２４は、例えば、運動区間Ｔｐが第１の演算処理に仮選択された場合、当該運動区間Ｔｐの値ｉに対応付けて識別値「０」を設定する。また、ＭＣＵ１９は、第２の演算処理に仮選択された場合、当該運動区間Ｔｐの値ｉに対応付けて識別値「１」を設定する。更に、ＭＣＵ１９は、第３の演算処理に仮選択された場合、当該運動区間Ｔｐの値ｉに対応付けて識別値「２」を設定する。尚、識別値「０」→「１」→「２」の順序で高くなる。
【００８２】
ＭＣＵ１９は、運動区間Ｔｐに対応した演算処理を仮選択した後、運動区間Ｔｐの値ｉを＋１インクリメントし（ステップＳ６５）、運動が終了したか否かを判定する（ステップＳ６６）。尚、例えば、所定回数の運動実行、所定時間の経過、角速度Ｇの二乗和ｐの閾値αの一定時間Ｔ１以上の超過や停止ボタンの押下で運動終了と判定するものとする。
【００８３】
ＭＣＵ１９は、運動が終了しなかった場合（ステップＳ６６否定）、運動区間Ｔｐを抽出すべく、ステップＳ６２に移行する。また、ＭＣＵ１９は、運動が終了した場合（ステップＳ６６肯定）、ｎ＝０に設定し（ステップＳ６７）、識別値ａ＝０に設定する（ステップＳ６８）。
【００８４】
ＭＣＵ１９は、運動区間の識別値Ａｎ＞ａであるか否かを判定する（ステップＳ６９）。ＭＣＵ１９は、Ａｎ＞ａの場合（ステップＳ６９肯定）、ａ＝Ａｎに設定し（ステップＳ７０）、次の運動区間を選択すべく、ｎを＋１インクリメントする（ステップＳ７１）。
【００８５】
ＭＣＵ１９は、ｎ＝ｉであるか否かを判定する（ステップＳ７２）。ＭＣＵ１９は、ｎ＝ｉである場合（ステップＳ７２肯定）、全ての運動区間の比較が完了したと判断し、仮選択された演算処理の内、最大の識別値に対応した演算処理を選択し（ステップＳ７３）、図８に示す処理動作を終了する。尚、ＭＣＵ１９は、例えば、運動区間［０］〜運動区間［ｎ］の内、仮選択された演算処理の識別値が「０」、「１」及び「２」の場合、最大の識別値「２」の演算処理である第３の演算処理で全運動区間［０］〜［ｎ］の運動軌跡を演算する。
【００８６】
また、ＭＣＵ１９は、例えば、運動区間［０］〜運動区間［ｎ］の内、仮選択された演算処理の識別値が「０」及び「１」の場合、最大の識別値「１」の演算処理である第２の演算処理で全運動区間の運動軌跡を演算する。また、ＭＣＵ１９は、仮選択された演算処理の識別値が「１」及び「２」の場合、最大の識別値「２」の演算処理である第３の演算処理で全運動区間の運動軌跡を演算する。
【００８７】
実施例２では、指定された運動内の運動区間毎に演算処理を仮選択し、全ての運動が完了した時点で仮選択された演算処理の内、識別値が最大の演算処理を運動全体の演算処理として選択し、選択された演算処理に基づき運動全体の運動軌跡を演算する。その結果、連続する運動区間毎に異なる演算処理を実行するような事態を回避して、同一の演算処理で連続する運動軌跡を演算できる。
【００８８】
また、前述した上記実施例１では、例えば、運動区間Ｔｐが１．５秒を超えず、かつ、始点及び終点が同一の場合、第１の演算処理を実行すると共に、運動区間Ｔｐが１．５秒以上、かつ、５秒未満の場合、第２の演算処理を実行する。しかしながら、例えば、運動区間Ｔｐが１．４９秒の場合には第１の演算処理を実行するが、運動区間Ｔｐが１．５秒の場合には第２の演算処理を実行するため、僅か０．０１秒の差で選択する演算処理が異なる。
【実施例３】
【００８９】
そこで、このような事態に対処した実施の形態につき、実施例３として以下に説明する。図９は、実施例３の情報処理装置１Ａの一例を示すブロック図である。尚、図１に示す情報処理装置１と同一の構成には同一符号を付すことで、その重複する構成及び動作の説明については省略する。図９に示す情報処理装置１ＡのＭＣＵ１９は、第４判定部２６と、第５判定部２７と、第６判定部２８と、第７判定部２９とを有する。
【００９０】
第４判定部２６は、運動区間Ｔｐが第３の経過時間Ｔｘ３、例えば１．３秒未満、Ｔｐ＜１．３秒か否かを判定する。第５判定部２７は、運動区間Ｔｐが第３の経過時間Ｔｘ３と第４の経過時間Ｔｘ４、例えば、１．７秒との間の第１の中間時間帯、例えば、１．３秒≦Ｔｐ＜１．７秒であるか否かを判定する。
【００９１】
第６判定部２８は、運動区間Ｔｐが第４の経過時間Ｔｘ４と、第４の経過時間Ｔｘ４を超えた第５の経過時間Ｔｘ5、例えば、４．８秒との間の第２の中間時間帯、例えば、１．７秒≦Ｔｐ＜４．８秒であるか否かを判定する。第７判定部２９は、運動区間Ｔｐが第５の経過時間Ｔｘ5と、第５の経過時間Ｔｘ5を超えた第６の経過時間Ｔｘ6、例えば、５．２秒との間の第３の中間時間帯、例えば、４．８秒≦Ｔｐ＜５．２秒であるか否かを判定する。
【００９２】
選択部２４は、運動区間Ｔｐ内の始点及び終点が同一、かつ、運動区間ＴｐがＴｐ＜１．３秒の場合、第１の演算処理を選択する。選択部２４は、運動区間Ｔｐ内の始点及び終点が同一、かつ、運動区間Ｔｐが１．３秒≦Ｔｐ＜１．７秒の場合、第１の演算処理及び第２の演算処理を混合した演算処理を選択する。尚、選択部２４は、１．３秒≦Ｔｐ＜１．７秒の場合、第１の中間時間帯の全時間に対する１．３秒からＴｐまでの時間の比率で第１の演算処理を使用する。更に、選択部２４は、第１の中間時間帯の全時間に対するＴｐから１．７秒直前までの時間との比率に応じて第２の演算処理を使用する。つまり、第１の演算処理及び第２の演算処理を混合使用する。
【００９３】
選択部２４は、運動区間Ｔｐが１．７秒≦Ｔｐ＜４．８秒の第２の中間時間帯の場合、第２の演算処理を使用する。また、選択部２４は、運動区間Ｔｐが４．８秒≦Ｔｐ＜５．２秒の第３の中間時間帯の場合、第２の演算処理及び第３の演算処理を混合した演算処理を使用する。尚、選択部２４は、運動区間Ｔｐが４．８秒≦Ｔｐ＜５．２秒の場合、第３の中間時間帯の全時間に対する４．８秒からＴｐまでの時間の比率に応じて第２の演算処理を使用する。更に、選択部２４は、第３の中間時間帯の全時間に対するＴｐから５．２秒直前までの時間との比率に応じて第３の演算処理を使用する。これら第２の演算処理の使用割合と第３の演算処理の使用割合との使用比率で第２の演算処理及び第３の演算処理を混合使用する。
【００９４】
選択部２４は、運動区間Ｔｐが第６の経過時間、例えば、５．２秒以上、すなわちＴｐ≧５．２秒の場合、第３の演算処理を使用する。
【００９５】
次に実施例３の情報処理装置１Ａの動作について説明する。図１０は、実施例３の最適演算処理に関わるＭＣＵ１９の処理動作の一例を示すフローチャートである。図１０においてＭＣＵ１９は、運動区間Ｔｐ内の加速度Ｓi(Ｓ０〜Ｓｎ)及び角速度Ｇi（Ｇ０〜Ｇｎ）の時系列データを保存し、運動区間Ｔｐの始点及び終点の重力加速度ベクトルＧｒ１，Ｇｒ２を保存する（ステップＳ８１）。
【００９６】
ＭＣＵ１９は、第１の演算処理を適用して姿勢の回転行列の時系列情報Ｒａｉを生成する（ステップＳ８２）。ＭＣＵ１９は、第２の演算処理を適用して姿勢の回転行列の時系列情報Ｒｂｉを生成する（ステップＳ８３）。ＭＣＵ１９は、第３の演算処理を適用して姿勢の回転行列の時系列情報Ｒｃｉを生成する（ステップＳ８４）。
【００９７】
ＭＣＵ１９は、始点の重力加速度ベクトルＧｒ１と終点の重力加速度ベクトルＧｒ２とがほぼ同一であるか否かを判定する（ステップＳ８５）。ＭＣＵ１９は、Ｇｒ１≒Ｇｒ２の場合（ステップＳ８５肯定）、運動区間がＴｐ＜１．３秒であるか否かを判定する（ステップＳ８６）。
【００９８】
ＭＣＵ１９は、Ｔｐ＜１．３秒の場合（ステップＳ８６肯定）、第１の演算処理を使用して姿勢ＲiはＲi＝Ｒaiとする（ステップＳ８７）。ＭＣＵ１９は、姿勢Ｒi及び加速度Ｓiに基づき速度Ｖi及び位置Ｐiを演算する演算処理を実行し（ステップＳ８８）、図１０に示す処理動作を終了する。尚、ステップＳ８８の演算処理は、ステップＳ８７で第１の演算処理を使用した場合、第１の演算処理を使用して速度Ｖi及び位置Ｐiを算出する。
【００９９】
ＭＣＵ１９は、Ｔｐ＜１．３秒でない場合（ステップＳ８６否定）、運動区間Ｔｐが第１の中間時間帯内、例えば、１．３秒≦Ｔｐ＜１．７秒であるか否かを判定する（ステップＳ８９）。
【０１００】
ＭＣＵ１９は、１．３秒≦Ｔｐ＜１．７秒の場合（ステップＳ８９肯定）、姿勢Ｒｉを第１の演算処理及び第２の演算処理を混合使用したＲi＝（（１．７−Ｔｐ）Ｒai＋（Ｔｐ−１．３）Ｒbi）／０．４を算出する（ステップＳ９０）。そして、ＭＣＵ１９は、ステップＳ９０で算出した姿勢Ｒi及び加速度Ｓiに基づき速度Ｖi及び位置Ｐiを演算する演算処理を実行すべく、ステップＳ８８に移行する。尚、ステップＳ８８の演算処理は、ステップＳ９０で第１の演算処理及び第２の演算処理を混合使用した場合、ステップＳ９０と同一の使用比率で第１の演算処理及び第２の演算処理を混合使用して速度Ｖi及び位置Ｐiを算出する。
【０１０１】
ＭＣＵ１９は、１．３秒≦Ｔｐ＜１．７秒でない場合（ステップＳ８９否定）、運動区間Ｔｐが第２の中間時間帯内、例えば、１．７秒≦Ｔｐ＜４．８秒であるか否かを判定する（ステップＳ９１）。ＭＣＵ１９は、１．７秒≦Ｔｐ＜４．８秒の場合（ステップＳ９１肯定）、第２の演算処理を使用して姿勢ＲiはＲi＝Ｒbiとし（ステップＳ９２）、ステップＳ８８に移行する。尚、ステップＳ８８の演算処理は、ステップＳ９２で第２の演算処理を使用した場合、第２の演算処理を使用して速度Ｖi及び位置Ｐiを算出する。ＭＣＵ１９は、１．７秒≦Ｔｐ＜４．８秒でない場合（ステップＳ９１否定）、運動区間Ｔｐが第３の中間時間帯内、例えば、４．８秒≦Ｔｐ＜５．２秒であるか否かを判定する（ステップＳ９３）。
【０１０２】
ＭＣＵ１９は、４．８秒≦Ｔｐ＜５．２秒の場合（ステップＳ９３肯定）、姿勢Ｒｉを第２の演算処理及び第３の演算処理を混合使用したＲi＝（（５．２−Ｔｐ）Ｒbi＋（Ｔｐ−４．８）Ｒci）／０．４を算出する（ステップＳ９４）。そして、ＭＣＵ１９は、ステップＳ９４で算出した姿勢Ｒi及び加速度Ｓiに基づき速度Ｖi及び位置Ｐiを演算する演算処理を実行すべく、ステップＳ８８に移行する。尚、ステップＳ８８の演算処理は、ステップＳ９４で第２の演算処理及び第３の演算処理を混合使用した場合、ステップＳ９４と同一の使用比率で第２の演算処理及び第３の演算処理を混合使用して速度Ｖi及び位置Ｐiを算出する。
【０１０３】
ＭＣＵ１９は、４．８秒≦Ｔｐ＜５．２秒でない場合（ステップＳ９３否定）、運動区間Ｔｐが５．２秒以上と判断し、第３の演算処理を使用して姿勢ＲiはＲi＝Ｒciとし（ステップＳ９５）、ステップＳ８８に移行する。尚、ステップＳ８８の演算処理は、ステップＳ９５で第３の演算処理を使用した場合、第３の演算処理を使用して速度Ｖi及び位置Ｐiを算出する。
【０１０４】
尚、ステップＳ９０及びステップＳ９４の処理では、模式的な考えで演算方法を表現したが、回転行列の場合、図１１に示す処理動作で演算することになる。図１１は、演算処理の一例を示すフローチャートである。尚、図１１の処理は、第１の演算処理及び第２の演算処理を混合使用した場合の回転行列に対する分配の一例である。
【０１０５】
図１１においてＭＣＵ１９は、２列の回転行列の積で誤差ＲＲを算出する（ステップＳ１０１）。すなわち、ＭＣＵ１９は、例えば、回転行列Ｒaの逆行列Ｒa-1と、回転行列Ｒbとの積で、回転行列Ｒaを回転行列Ｒbに変換する誤差ＲＲを算出する。ＭＣＵ１９は、算出された誤差ＲＲから回転軸の回転ベクトルＱ及び、その変化量である回転量θを算出する（ステップＳ１０２）。つまり、回転軸の回転ベクトルＱは、回転量θ回転した場合、回転行列Ｒaは回転行列Ｒbとなる。従って、回転量θが「０」の場合、回転行列Ｒaは回転行列Ｒａのままである。
【０１０６】
ここで、ＭＣＵ１９は、０≦ｋ＜１のｋを用いてφ＝ｋθを算出する（ステップＳ１０３）。そして、ＭＣＵ１９は、回転ベクトルＱを回転軸としてφ回転させた場合の回転行列ＱＸを算出する（ステップＳ１０４）。尚、回転行列ＱＸは、３×３行列である。その要素として回転行列の第１段目の横列は、ｑｘ２（１−ｃｐ）＋ｃｐ，ｑｘｑｙ（１−ｃｐ）−ｑｚｓｐ，ｑｚｑｘ（１−ｃｐ）＋ｑｙｓｐである。第２段目の横列は、ｑｘｑｙ（１−ｃｐ）＋ｑｚｓｐ，ｑｙ２（１−ｃｐ）＋ｃｐ，ｑｙｑｚ（１−ｃｐ）−ｑｘｓｐである。第３段目の横列は、ｑｚｑｘ（１−ｃｐ）−ｑｙｓｐ，ｑｙｑｚ（１−ｃｐ）＋ｑｘｓｐ，ｑｚ２（１−ｃｐ）＋ｃｐである。尚、回転ベクトルＱ＝（ｑｘ，ｑｙ，ｑｚ）Ｔ、ｓｐ=ｓｉｎφ及びｃｐ＝ｃｏｓφである。
【０１０７】
そして、ＭＣＵ１９は、算出された回転行列ＱＸと回転行列Ｒaとの積で回転行列の姿勢Ｒiを算出し（ステップＳ１０５）、図１１に示す処理動作を終了する。その結果、第１の演算処理及び第２の演算処理を混合使用して姿勢Ｒiを算出できる。
【０１０８】
尚、図１１の例では、第１の演算処理及び第２の演算処理を混合使用する場合について説明したが、第２の演算処理及び第３の演算処理を混合使用する場合にも適用可能である。
【０１０９】
実施例３では、運動区間Ｔｐが第１の中間時間帯内の場合、第１の中間時間帯内のＴｐの比率に応じて第１の演算処理及び第２の演算処理を混合使用し、運動区間Ｔｐの姿勢、速度及び位置を算出し、算出された姿勢及び位置に基づき運動軌跡を算出する。その結果、第１の中間時間帯の運動区間を反映した演算処理を提供できる。
【０１１０】
実施例３では、運動区間Ｔｐが第３の中間時間帯内の場合、第３の中間時間帯内のＴｐの比率に応じて第２の演算処理及び第３の演算処理を混合使用し、運動区間Ｔｐの姿勢、速度及び位置を算出し、算出された姿勢及び位置に基づき運動軌跡を算出する。その結果、第３の中間時間帯の運動区間を反映した演算処理を提供できる。
【０１１１】
尚、例えば、第３の経過時間を１．３秒、第４の経過時間を１．７秒、第５の経過時間を４．８秒、第６の経過時間を５．２秒とした。更に、例えば、第１の中間時間帯を１．３秒≦Ｔｐ＜１．７秒、第２の中間時間帯を１．７秒≦Ｔｐ＜４．８秒、第３の中間時間帯を４．８秒≦Ｔｐ＜５．２秒としたが、これら数値に限定されるものではない。
【０１１２】
また、上記実施例３では、姿勢を演算する際、演算処理の使用比率を算出し、この使用比率を速度及び位置を演算する際にも使用したが、速度及び位置毎に使用比率を順次算出して割当てるようにしても良い。
【０１１３】
また、上記実施例３の図１０の処理では、例えば、ステップＳ８７の第１の演算処理に移行する場合でも、ステップＳ８３及びステップＳ８４の処理を実行した。しかしながら、ステップＳ８７の第１の演算処理を実行する場合、ステップＳ８３及びステップＳ８４の処理を実行しないようにしても良い。また、ステップＳ９２の第２の演算処理に移行する場合、ステップＳ８２及びステップＳ８４の処理を実行しないようにしても良い。また、ステップＳ９５の第３の演算処理を実行する場合、ステップＳ８２及びステップＳ８３の処理を実行しないようにしても良い。
【０１１４】
また、上記実施例では、ＭＣＵ１９内に第３の演算処理を実行する演算処理部２５Ａを内蔵するようにしたが、第３の演算処理を実行する演算処理部を別個に設けるようにしても良い。また、演算処理部２５Ａをハードウェア構成で説明したが、処理プログラムとしてＭＣＵ１９で実行させるようにしても良い。
【０１１５】
また、上記実施例では、加速度センサ１２及び角速度センサ１３を内蔵した携帯電話機等の情報処理装置を例示して説明したが、タブレット端末等の携帯端末に適用しても良い。
【０１１６】
また、図示した各部の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
【０１１７】
更に、各装置で行われる各種処理機能は、ＭＣＵ１９（又はＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）等のマイクロ・コンピュータ）上で、その全部又は任意の一部を実行するようにしても良い。また、各種処理機能は、ＭＣＵ（又はＣＰＵやＭＰＵ等のマイクロ・コンピュータ）で解析実行するプログラム上、又はワイヤードロジックによるハードウェア上で、その全部又は任意の一部を実行するようにしても良いことは言うまでもない。
【符号の説明】
【０１１８】
１  情報処理装置
１Ａ  情報処理装置
１２  加速度センサ
１３  角速度センサ
１７  プログラム領域
１９  ＭＣＵ
２１  第１判定部
２２  第２判定部
２３  第３判定部
２４  選択部
２５  制御部
２６  第４判定部
２７  第５判定部
２８  第６判定部
２９  第７判定部
【図１】
0006035749.tif 000002
【図２Ａ】
0006035749.tif 000003
【図２Ｂ】
0006035749.tif 000004
【図２Ｃ】
0006035749.tif 000005
【図２Ｄ】
0006035749.tif 000006
【図２Ｅ】
0006035749.tif 000007
【図３】
0006035749.tif 000008
【図４】
0006035749.tif 000009
【図５】
0006035749.tif 000010
【図６】
0006035749.tif 000011
【図７】
0006035749.tif 000012
【図８】
0006035749.tif 000013
【図９】
0006035749.tif 000014
【図１０】
0006035749.tif 000015
【図１１】
0006035749.tif 000016
【図１２】
0006035749.tif 000017