(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【0011】
図1は、本発明の実施形態に係る携帯機器200の概要を示す図である。携帯機器200は、携帯電話、タブレット型端末、携帯型パソコン、カメラ、腕時計、ヘッドマウントディスプレイ、ゲーム機等のように、携帯可能な機器を指す。携帯機器200は、姿勢算出装置100を備える。姿勢算出装置100は、直交軸X、Y、Zを有する基準座標系における携帯機器200の姿勢を検出する。機器の姿勢は、オイラー角または四元数等を用いて定義することができる。
【0012】
姿勢算出装置100は、過去から現時点までの携帯機器200の回転を累積した第1の姿勢と、現時点における携帯機器200に関する情報に基づく第2の姿勢とを算出する。
【0013】
図2は、姿勢算出装置100の構成例を示す図である。本例の姿勢算出装置100は、地磁気検出部10、加速度検出部12、角速度検出部14、オフセット除去部16、静止判定部18および姿勢算出部20を備える。
【0014】
角速度検出部14は、携帯機器200の角速度を検出する。角速度検出部14は、直交する3軸(ロール、ピッチ、ヨー)のそれぞれに対して設けられ、携帯機器200の回転を、各軸を中心とする回転成分に分離して検出する。
【0015】
静止判定部18は、携帯機器200が静止状態か否かを判定する。静止判定部18は、各検出部が検出したデータに基づいて静止状態を判定する。例えば静止判定部18は、角速度検出部14が検出する角速度が、所定の閾値以下の場合に静止状態と判定する。
【0016】
オフセット除去部16は、角速度検出部14の出力におけるオフセット成分を検出する。オフセット成分とは、例えば携帯機器200が実際には静止しているにも関わらず、角速度検出部14の出力に現れる角速度成分を指す。オフセット除去部16は、静止判定部18が静止状態と判定している間の、角速度検出部14の出力を平均してオフセット成分を検出してよい。オフセット除去部16は、角速度検出部14が出力する角速度データから、当該オフセット成分を除去する。オフセット除去部16は、定期的にオフセット成分を検出することが好ましい。
【0017】
姿勢算出部20は、オフセット成分が除去された角速度データに基づいて、携帯機器200の第1の姿勢を算出する。姿勢算出部20は、順次検出される角速度データに応じた姿勢の変化を累積することで、携帯機器200の第1の姿勢を算出する。また、姿勢算出部20は、オフセット成分が除去された角速度データに基づいて、携帯機器200の回転情報を算出する。回転情報としては、携帯機器200の回転状態を示す情報であれば特に限定は無く、例えば、単位時間当たりの携帯機器200の回転量や所定時刻における携帯機器200の角速度などが挙げられる。
【0018】
地磁気検出部10は、直交する3軸(ロール、ピッチ、ヨー)のそれぞれに対して設けられ、各軸に平行な磁気成分を検出する。これにより、携帯機器200に対する地磁気の方向を検出する。加速度検出部12は、直交する3軸(ロール、ピッチ、ヨー)のそれぞれに対して設けられ、各軸に平行な加速度成分を検出する。これにより、携帯機器200に対する重力加速度の方向を検出する。
【0019】
姿勢算出部20は、地磁気検出部10および加速度検出部12が出力する磁気データおよび加速度データに基づいて、携帯機器200の第2の姿勢を検出する。第1の姿勢が、過去から現時点までのデータの累積で算出されるので誤差が蓄積されるのに対して、第2の姿勢は、過去のデータを用いずに現時点におけるデータから検出されるので誤差が蓄積されない。
【0020】
なお、磁気データおよび加速度データには、地磁気および重力加速度の他の要因による磁気および加速度の成分が含まれてしまう。このため、姿勢算出部20は、所定の条件を満たしたときだけ、磁気データおよび加速度データから第2の姿勢を算出する。一般に、姿勢算出部20が第2の姿勢を算出できる頻度は、第1の姿勢を算出する頻度より少ない。ところで、角速度検出部14は温度等の影響により一般にオフセットにドリフトが生じる。その為、角速度データを長時間累積すると誤差が蓄積されてしまい、第1の姿勢が正しい姿勢ではなくなってしまう。
【0021】
姿勢算出部20は、第2の姿勢を算出した場合に、第1の姿勢と第2の姿勢と角速度検出部の出力から得られる機器の回転情報とに基づいて新たな第3の姿勢を算出する。姿勢算出部20は、第3の姿勢を現時点における第1の姿勢として用い、以降の携帯機器200の回転を累積してよい。定期的に第3の姿勢を算出して機器の姿勢として出力することで、第1の姿勢において誤差が蓄積されることを防ぐことができる。
【0022】
図3は、本発明の実施形態に係る姿勢算出部20の構成例を示す図である。本例の姿勢算出部20は、第2の姿勢算出部22、第1の姿勢算出部24、差分算出部26、係数算出部28、第3の姿勢算出部30および決定部32を有する。
【0023】
第2の姿勢算出部22は、地磁気検出部10および加速度検出部12が検出した磁気データおよび加速度データに基づいて、携帯機器200の第2の姿勢を算出する。なお、第2の姿勢を算出するのに用いるパラメータは、地磁気の方向および重力方向に限定されない。第2の姿勢算出部22は、方向が既知の多様なパラメータ(例えば、太陽の方向、外部の既知のマーカーの方向、GPS、ネットワーク測位)に基づいて、第2の姿勢を算出することができる。
【0024】
例えば第2の姿勢算出部22は、加速度データに基づいて、重力方向に対して携帯機器200がどれだけ傾いているかを算出する。そして、当該傾きと、地磁気データとに基づいて、水平面において携帯機器200が向いている方位を算出する。これにより、携帯機器200の第2の姿勢を算出することができる。本例では、現時点の時刻tにおける携帯機器200の第2の姿勢を、時刻tにおける加速度データおよび磁気データにより算出されるロール角R(t)、ピッチ角P(t)、ヨー角Y(t)で表す。
【0025】
なお、携帯機器200に運動加速度が生じている場合、加速度データからは重力方向を精度よく算出することができない。このため、第2の姿勢算出部22は、加速度検出部12が検出する3軸方向の加速度を合成したベクトルの大きさと、重力加速度である1Gに相当する大きさとを比較して、差分が所定の閾値以下である場合に第2の姿勢を算出する。
【0026】
第1の姿勢算出部24は、角速度検出部14が検出した角速度データに基づいて、携帯機器200の第1の姿勢を算出する。本例の第1の姿勢算出部24は、オフセット除去部16によりオフセット成分が除去された角速度データに基づいて、第1の姿勢を算出する。本例では、時刻tにおける携帯機器200の第1の姿勢を、時刻tにおけるロール角r(t)、ピッチ角p(t)、ヨー角y(t)で表す。ロール角r(t)、ピッチ角p(t)、ヨー角y(t)は、下式で与えられる。
r(t)=r(t−1)+Δr(t)
p(t)=p(t−1)+Δp(t)
y(t)=y(t−1)+Δy(t)
ここで、t−1は、時刻tから1単位時間前の時刻を指す。また、Δr(t)、Δp(t)、Δy(t)は、時刻t−1から時刻tまでの期間における携帯機器200の回転量を示す。本明細書において、当該回転量を、現時点の回転量と称する場合がある。当該回転量は、例えば時刻tにおける角速度に1単位時間を乗じて算出される。1単位時間は、角速度検出部14における角速度の検出間隔と同一であってよい。
【0027】
差分算出部26は、第1の姿勢および第2の姿勢の差分を算出する。本例の差分算出部26は、ロール角、ピッチ角、ヨー角のそれぞれの差分r(t)−R(t)、p(t)−P(t)、y(t)−Y(t)を算出する。
【0028】
決定部32は、携帯機器200の回転情報に基づいて、第1の姿勢と第2の姿勢とを組み合わせる割合を動的に決定する。割合を動的に決定するとは、割合を常に一定にするのではなく、割合を状況に応じて変化させるという意味で、例えば、第2の姿勢算出部22が第2の姿勢を算出する毎に、当該時点での携帯機器200の回転情報に基づいて当該割合を決定する動作を指す。本例の決定部32は、携帯機器200の時刻tの角速度に基づいて、上述した差分に乗ずるべき比例定数を動的に算出する。決定部32は、角速度が大きいほど大きく、角速度が小さいほど小さい比例定数kを生成する。決定部32は、ロール角、ピッチ角、ヨー角の角速度の二乗和等に基づいて、ロール角、ピッチ角、ヨー角に対して共通の比例定数kを生成してよい。また、決定部32は、ロール角、ピッチ角、ヨー角の角速度のそれぞれの絶対値に基づいて、ロール角、ピッチ角、ヨー角のそれぞれに対する比例定数kr、kp、kyを生成してもよい。当該比例定数は、0より大きく、1未満とする。
【0029】
係数算出部28は、差分算出部26が算出した差分に、決定部32が算出した比例定数を乗じた差分係数を算出する。本例の係数算出部28は、以下の差分係数を算出する。
ロール角:kr(r(t)−R(t))
ピッチ角:kp(p(t)−P(t))
ヨー角:ky(y(t)−Y(t))
【0030】
第3の姿勢算出部30は、第1の姿勢と、第2の姿勢と、携帯機器200の回転情報とに基づき、新たな第3の姿勢を算出する。つまり、第3の姿勢算出部30は、第1の姿勢および第2の姿勢を算出するのに用いた回転情報に加えて、携帯機器200の回転情報を更に用いる。更に用いる回転情報は、第1の姿勢または第2の姿勢を算出するのに用いた回転情報と一部または全部が重複する内容であってもよい。
【0031】
本例の第3の姿勢算出部30は、第1の姿勢および第2の姿勢の少なくとも一方と、第1の姿勢および第2の姿勢の差分と、決定部32が決定した割合とに基づいて、第3の姿勢を算出する。より具体的な例では、第3の姿勢算出部30は、第1の姿勢算出部24が算出した第1の姿勢(r(t)、p(t)、y(t))と、係数算出部28が算出した差分係数とを用いて新たな第3の姿勢を算出する。上述したように、差分係数には、少なくとも第2の姿勢の情報と、携帯機器200の回転情報に応じた比例定数とが含まれる。本例の第3の姿勢算出部30は、下式のように、第3の姿勢を算出する。
ロール角:r(t)−kr(r(t)−R(t))
ピッチ角:p(t)−kp(p(t)−P(t))
ヨー角:y(t)−ky(y(t)−Y(t))
【0032】
なお、係数算出部28は、差分係数の大きさが、携帯機器200の現時点の回転量の大きさ以下となるように、差分係数を定めてよい。例えば係数算出部28は、算出した差分係数が、回転量より大きくなる範囲においては、差分係数の大きさを、回転量の大きさに一致させる。
【0033】
比例定数kが1より小さい場合、一度の算出処理では第2の姿勢と第1の姿勢との差分がゼロにはならない。このため姿勢算出部20は、時刻tにおいて検出された差分を、時刻t、t+1、・・・のように複数のタイミングに分割して、各タイミングにおける第3の姿勢の算出に用いてもよい。決定部32は、各タイミングにおける携帯機器200の角速度に応じて、各タイミングにおける比例定数を算出する。姿勢算出部20は、例えば時刻t+1における第3の姿勢を、時刻tにおける差分を用いて以下のように算出してよい。
ロール角:r(t+1)−kr(t+1)・(r(t)−R(t))
ピッチ角:p(t+1)−kp(t+1)・(p(t)−P(t))
ヨー角:y(t+1)−ky(t+1)・(y(t)−Y(t))
【0034】
姿勢算出部20は、各タイミングにおける軸毎の比例定数の和(例えば、kr(t)+kr(t+1)+・・・)が1とほぼ等しくなるまで、時刻tにおいて検出した差分を用いて新たな第3の姿勢を算出してよい。これにより、検出した差分がほぼ無くなるように、第3の姿勢を算出することができる。ただし、時刻tにおいて検出した差分を複数のタイミングに分けて、各タイミングにおける第3の姿勢を算出している間に、新たに第2の姿勢が算出されたときは、姿勢算出部20は、新たな第2の姿勢と第1の姿勢との差分を用いて、第3の姿勢を算出することが好ましい。これにより、第2の姿勢を算出する間隔が長い場合であっても、第2の姿勢と第1の姿勢との差分が無くなるように、第3の姿勢を算出することができる。なお、本発明に用いることのできる第3の姿勢の算出方法は、上述したオイラー角の差分を用いる方法のほか、クォータニオンを用いた線形球面補間、線形補間等の手法も用いることができる。
【0035】
本例の姿勢算出部20によれば、第1の姿勢と第2の姿勢と携帯機器200の回転情報に基づいて第3の姿勢を算出しているので利用者に与える違和感を低減することができる。例えば、携帯機器200が静止状態に近い場合には第1の姿勢に近い姿勢情報を算出することで姿勢変化時の違和感を低減して、携帯機器200が大きく動いている場合には第2の姿勢に近い姿勢情報を算出することで、姿勢追従を効率よく行うことができる。つまり、姿勢算出部20は、単位時間当たりの携帯機器200の回転量が小さいほど、第1の姿勢に対する差分が小さくなるような第3の姿勢を算出する。また、単位時間当たりの携帯機器の回転量が大きいほど、第2の姿勢に対する差分が小さくなるような第3の姿勢を算出する。姿勢の差分とは、ロール角における差分の絶対値、ピッチ角における差分の絶対値、および、ヨー角における差分の絶対値の和であってよい。
【0036】
図4は、姿勢算出部20の動作の概要を説明する図である。
図4では、時刻tにおける第1の姿勢および第2の姿勢の例を示す。上述したように、第1の姿勢には誤差が蓄積されるので、第1の姿勢および第2の姿勢は必ずしも一致しない。姿勢算出部20は、第1の姿勢および第2の姿勢の差分に対して、時刻tにおける角速度に応じた比例定数を乗じた差分係数を算出する。
【0037】
図5は、姿勢算出装置100の動作例を示すフローチャートを示す。姿勢算出装置100は、角速度検出部14により、所定の周期で、携帯機器200の角速度を検出する(S300)。第1の姿勢算出部24は、順次検出される角速度データに応じた姿勢の変化を累積して、携帯機器200の第1の姿勢を算出する(S302)。姿勢算出装置100は、S300およびS302の処理を繰り返すことで、所定の周期で第1の姿勢を算出する。
【0038】
第2の姿勢算出部22は、第1の姿勢算出部24と平行して、携帯機器200の第2の姿勢を算出する(S304)。第2の姿勢算出部22は、地磁気検出部10および加速度検出部12の検出結果が所定の条件を満たす場合に、第2の姿勢を算出する。例えば第2の姿勢算出部22は、加速度検出部12が検出する3軸方向の加速度を合成したベクトルの大きさと、重力加速度である1Gに相当する大きさとを比較して、差分が所定の閾値以下である場合に第2の姿勢を算出する。
【0039】
また、第1の姿勢を算出する場合、その算出周期が短いほど、携帯機器200の姿勢の連続的な滑らかな動作を再現する精度が向上する等の利点もある。本例では、第1の姿勢算出部24が第1の姿勢を算出する周期は、第2の姿勢算出部22が第2の姿勢を算出する周期よりも短い。姿勢算出部20は、第2の姿勢算出部22が第2の姿勢を算出した場合に、第3の姿勢を算出する。
【0040】
第2の姿勢算出部22が第2の姿勢を算出した場合、差分算出部26が、現時点における第1の姿勢と第2の姿勢との差分を算出する(S306)。次に、決定部32および係数算出部28は、現時点における角速度に応じた差分係数を算出する(S308)。そして、第3の姿勢算出部30は、当該差分係数に基づいて、現時点における第3の姿勢を算出する(S310)。このような処理により、異なる方法で算出した姿勢を出力する時の違和感を低減し、且つ、効率よく姿勢を算出することができる。
【0041】
第1の姿勢算出部24は、第3の姿勢算出部30が算出した第3の姿勢を用いて、以降の第1の姿勢を算出する。本例では、第1の姿勢算出部24は、第3の姿勢算出部30が算出した時刻tの第3の姿勢に、次の時刻t+1における回転量Δr(t+1)、Δp(t+1)、Δy(t+1)を加算して、時刻t+1における第1の姿勢を算出する。
【0042】
図6は、本発明の実施形態に係る姿勢算出部20の構成例を示す図である。本例の姿勢算出部20は、第2の姿勢算出部22、回転軸算出部34、回転量算出部36、第1の姿勢算出部38、および、第3の姿勢算出部40を有する。第2の姿勢算出部22は、
図3から
図5に関連して説明した第2の姿勢算出部22と同様の機能を有する。第1の姿勢算出部38は、
図1から
図5に関連して説明した第1の姿勢を算出する。第3の姿勢算出部40は、
図1から
図5に関連して説明した第3の姿勢を算出する。第1の姿勢算出部38は、第1の姿勢算出部24と同一の機能を有してよい。回転量算出部36は、角速度データに基づいて、携帯機器200の現時点の回転量を算出する。現時点の回転量は、現時点の角速度に、1単位時間を乗じて算出してよい。本例の回転量算出部36は、軸毎の回転量を算出する。
【0043】
回転軸算出部34は、現時点に対して1単位時間前の第1の姿勢から、現時点における第2の姿勢への回転軸を算出する。回転軸算出部34は、直交軸X、Y、Zの原点を通り、且つ、1単位時間前の第1の姿勢を当該回転軸回りで回転させたときに、現時点における第2の姿勢に変換できる回転軸を算出する。
【0044】
一般に、2つの姿勢間の回転は、四元数(クォータニオン)、回転行列またはオイラー角を用いて表すことができる。本実施形態においては、一例として四元数を用いた場合の2つの姿勢間の回転について述べるが、本発明における2つの姿勢間の回転は、上述したように回転行列、オイラー角等を用いた方法も用いることができる。本例の回転軸算出部34は、1単位時間前の第1の姿勢と、現時点における第2の姿勢とに基づいて、当該回転を示す四元数を算出する。
【0045】
ここで四元数は、q=w+xi+yj+zkの形式で表現される。また、i、j、kは、以下の関係を満たす基底ベクトルである。
i・i=j・j=k・k=−1
i・j=k、j・k=i、k・i=j
j・i=−k、k・j=−i、i・k=−j
【0046】
現時点における第2の姿勢と、1単位時間前の第1の姿勢との関係は、回転を示す四元数qを用いて表現される。
P
R(t)=qP
r(t−1)q
−1
ただし、P
R(t)は現時点の第2の姿勢を示すベクトル、P
r(t−1)は、1単位時間前の第1の姿勢を示すベクトル、qは回転を示す四元数である。P
R(t)、P
r(t−1)は、
図3から
図5に関連して説明したオイラー角による姿勢角の表現を、四元数の表現に変換したものであってよい。また、P
R(t)は、第2の姿勢において、携帯機器200のある点Aの位置を示す位置ベクトルであってもよい。また、P
r(t−1)は、第1の姿勢において、携帯機器200における同一の点Aの位置を示す位置ベクトルであってもよい。特定の一点について第2の姿勢および第1の姿勢の間の回転を算出すれば、姿勢全体の回転を特定することができる。
【0047】
ベクトル(α、β、γ)を回転軸とするθの回転を示す四元数qは、以下のように表現される。
q=cos(θ/2)+αsin(θ/2)・i+βsin(θ/2)・j+γsin(θ/2)・k
そして、1単位時間前の第1の姿勢から第2の姿勢への回転軸は、ベクトルの外積P
R×P
rから下式のように算出できる。
(α、β、γ)=(P
R×P
r)/(|P
R×P
r|)
なお、1単位時間前の第1の姿勢から第2の姿勢への回転量は、ベクトルの内積P
R・P
rから下式のように算出できる。
cosθ=(P
R・P
r)/(|P
R|・|P
r|)
【0048】
第3の姿勢算出部40は、第1の姿勢算出部38が算出した1単位時間前の第1の姿勢に対して、回転軸算出部34が算出した回転軸(α、β、γ)に、回転量算出部36が検出した現時点の回転量θ'を適用する。なお、回転量θ'は、回転の大きさを示しており、回転軸の情報を有さない。つまり、1単位時間前の第1の姿勢を、当該回転軸回りに、当該回転量θ'で回転させる。これにより、第3の姿勢算出部40は、現時点の第3の姿勢を算出する。具体的には、下式に基づいて現時点の第1の姿勢P
r(t)を算出する。
P
r(t)=q'P
r(t−1)q'
−1
q'=cos(θ'/2)+αsin(θ'/2)・i+βsin(θ'/2)・j+γsin(θ'/2)・k
第1の姿勢算出部38は、第3の姿勢算出部40が算出した第3の姿勢を現時点における第1の姿勢として用い、以降の携帯機器200の回転を累積してよい。
【0049】
これにより、携帯機器200の回転量に応じて適切な姿勢を算出することができる。このため、利用者に違和感を与えずに、第1の姿勢に蓄積された誤差を補正することができる。詳細には、第1の姿勢における誤差の蓄積を防ぐことができるので、例えば、携帯機器200が実際には静止しているにも関わらず、算出する姿勢が徐々に変化してしまうことを、利用者に違和感を与えずに防止することができる。また、第1の姿勢から第2の姿勢への回転軸を算出し、第1の姿勢に対して、算出した回転軸に携帯機器200の回転量を適用して第3の姿勢を算出するので、第3の姿勢が第1の姿勢のドリフトにつられてドリフトしてしまうことを防ぐことができる。この効果は静止時に顕著である。
【0050】
携帯機器200がゆっくり回転している場合でも、回転に追従した第1の姿勢を瞬時に算出することができる。本発明における回転量としては、例えば角速度、加速度、地磁気、画像データ、またはこれらの組み合わせにより得られる回転に関する物理量を用いることができる。ここで、加速度を用いた場合は単位時間当たりのピッチ角、ロール角の回転量より各軸に対する回転量を得ることができる。同様に、地磁気を用いた場合は単位時間当たりのヨー角の回転量より、各軸に対する回転量を得ることができる。また、画像データを用いた場合は単位時間当たりの変化量より各軸に対する回転量を得ることができる。
【0051】
なお、姿勢算出部20は、角速度検出部14が検出する現時点の角速度が、予め定められた閾値以下の場合に、
図6に関連して説明したように、回転軸を用いて第3の姿勢を算出してよい。例えば姿勢算出部20は、静止判定部18において携帯機器200が静止していると判断される程度に角速度が小さい場合に、回転軸を用いて第3の姿勢を算出する。また、姿勢算出部20は、現時点の角速度が上述した閾値より大きい場合には、
図3から
図5に関連して説明したように第3の姿勢を算出してよい。
【0052】
図7は、
図6に示した姿勢算出部20の動作の概要を説明する図である。
図7では、1単位時間前の第1の姿勢および現時点の第2の姿勢の例を示す。第1の姿勢には誤差が累積されるので、例えば携帯機器200が長時間静止状態であったとしても、1単位時間前の第1の姿勢と、現時点の第2の姿勢との間に差が生じる場合がある。
【0053】
回転軸算出部34は、1単位時間前の第1の姿勢を所定の回転軸回りで回転させたときに、現時点の第2の姿勢に変化する回転軸を算出する。つまり、当該回転軸回りで第1の姿勢を回転させたときに得られるいずれかの姿勢が、第2の姿勢と一致するような回転軸を算出する。なお、回転軸算出部34は、現時点の第1の姿勢から、現時点の第2の姿勢への回転軸を算出してもよい。
【0054】
第3の姿勢算出部40は、回転軸算出部34が算出した回転軸を用いて、携帯機器200の現時点における回転量で、1単位時間前の第1の姿勢を回転させて、第3の姿勢を算出する。これにより、第1の姿勢に蓄積された誤差を、携帯機器200の回転量に応じて補正することができる。
【0055】
図8は、
図6の姿勢算出部20を用いた姿勢算出装置100の動作例を示すフローチャートを示す。S300からS304までの処理は、
図5に示したフローチャートと同一である。
【0056】
第2の姿勢算出部22が第2の姿勢を算出した場合、回転軸算出部34が、一単位時間前の第1の姿勢から、現時点の第2の姿勢への回転軸を算出する(S312)。また、回転量算出部36は、現時点の角速度データから、現時点の携帯機器200の回転量を算出する(S314)。S312およびS314の処理は並行してよい。
【0057】
そして、第3の姿勢算出部40は、S312において算出した回転軸に、S314において算出した回転量を適用して、現時点の第3の姿勢を算出する(S316)。第1の姿勢算出部38は、S316において第3の姿勢算出部40が算出した第3の姿勢を用いて、以降の第1の姿勢を算出する。このような処理により、誤差補正時の違和感を低減することができる。また、端末が長時間静止しても、誤差の蓄積による姿勢の変化を防ぐことができる。
【0058】
図9は、本実施形態に係るコンピュータ1900のハードウェア構成の一例を示す。本実施形態に係るコンピュータ1900は、ホスト・コントローラ2082により相互に接続されるCPU2000、RAM2020、グラフィック・コントローラ2075、及び表示装置2080を有するCPU周辺部と、入出力コントローラ2084によりホスト・コントローラ2082に接続される通信インターフェイス2030、ハードディスクドライブ2040、及びCD−ROMドライブ2060を有する入出力部と、入出力コントローラ2084に接続されるROM2010、フレキシブルディスク・ドライブ2050、及び入出力チップ2070を有するレガシー入出力部とを備える。
【0059】
ホスト・コントローラ2082は、RAM2020と、高い転送レートでRAM2020をアクセスするCPU2000及びグラフィック・コントローラ2075とを接続する。CPU2000は、ROM2010及びRAM2020に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィック・コントローラ2075は、CPU2000等がRAM2020内に設けたフレーム・バッファ上に生成する画像データを取得し、表示装置2080上に表示させる。これに代えて、グラフィック・コントローラ2075は、CPU2000等が生成する画像データを格納するフレーム・バッファを、内部に含んでもよい。
【0060】
入出力コントローラ2084は、ホスト・コントローラ2082と、比較的高速な入出力装置である通信インターフェイス2030、ハードディスクドライブ2040、CD−ROMドライブ2060を接続する。通信インターフェイス2030は、ネットワークを介して他の装置と通信する。ハードディスクドライブ2040は、コンピュータ1900内のCPU2000が使用するプログラム及びデータを格納する。CD−ROMドライブ2060は、CD−ROM2095からプログラム又はデータを読み取り、RAM2020を介してハードディスクドライブ2040に提供する。
【0061】
また、入出力コントローラ2084には、ROM2010と、フレキシブルディスク・ドライブ2050、及び入出力チップ2070の比較的低速な入出力装置とが接続される。ROM2010は、コンピュータ1900が起動時に実行するブート・プログラム、及び/又は、コンピュータ1900のハードウェアに依存するプログラム等を格納する。フレキシブルディスク・ドライブ2050は、フレキシブルディスク2090からプログラム又はデータを読み取り、RAM2020を介してハードディスクドライブ2040に提供する。入出力チップ2070は、フレキシブルディスク・ドライブ2050を入出力コントローラ2084へと接続すると共に、例えばパラレル・ポート、シリアル・ポート、キーボード・ポート、マウス・ポート等を介して各種の入出力装置を入出力コントローラ2084へと接続する。
【0062】
RAM2020を介してハードディスクドライブ2040に提供されるプログラムは、フレキシブルディスク2090、CD−ROM2095、又はICカード等の記録媒体に格納されて利用者によって提供される。プログラムは、記録媒体から読み出され、RAM2020を介してコンピュータ1900内のハードディスクドライブ2040にインストールされ、CPU2000において実行される。
【0063】
コンピュータ1900にインストールされ、コンピュータ1900を姿勢算出装置として機能させるプログラムは、第1の姿勢算出モジュール、第2の姿勢算出モジュール、第3の姿勢算出モジュール、決定モジュール、差分算出モジュール、回転軸算出モジュールおよび回転量算出モジュールを備える。これらのプログラム又はモジュールは、CPU2000等に働きかけて、コンピュータ1900を、姿勢算出装置としてそれぞれ機能させる。
【0064】
これらのプログラムに記述された情報処理は、コンピュータ1900に読込まれることにより、ソフトウェアと上述した各種のハードウェア資源とが協働した具体的手段である第1の姿勢算出部24、第2の姿勢算出部22、第3の姿勢算出部30、第1の姿勢算出部38、第3の姿勢算出部40、決定部32、差分算出部26、回転軸算出部34および回転量算出部36として機能する。そして、これらの具体的手段によって、本実施形態におけるコンピュータ1900の使用目的に応じた情報の演算又は加工を実現することにより、使用目的に応じた特有の静止判定装置が構築される。
【0065】
一例として、コンピュータ1900と外部の装置等との間で通信を行う場合には、CPU2000は、RAM2020上にロードされた通信プログラムを実行し、通信プログラムに記述された処理内容に基づいて、通信インターフェイス2030に対して通信処理を指示する。通信インターフェイス2030は、CPU2000の制御を受けて、RAM2020、ハードディスクドライブ2040、フレキシブルディスク2090、又はCD−ROM2095等の記憶装置上に設けた送信バッファ領域等に記憶された送信データを読み出してネットワークへと送信し、もしくは、ネットワークから受信した受信データを記憶装置上に設けた受信バッファ領域等へと書き込む。このように、通信インターフェイス2030は、DMA(ダイレクト・メモリ・アクセス)方式により記憶装置との間で送受信データを転送してもよく、これに代えて、CPU2000が転送元の記憶装置又は通信インターフェイス2030からデータを読み出し、転送先の通信インターフェイス2030又は記憶装置へとデータを書き込むことにより送受信データを転送してもよい。
【0066】
また、CPU2000は、ハードディスクドライブ2040、CD−ROMドライブ2060(CD−ROM2095)、フレキシブルディスク・ドライブ2050(フレキシブルディスク2090)等の外部記憶装置に格納されたファイルまたはデータベース等の中から、全部または必要な部分をDMA転送等によりRAM2020へと読み込ませ、RAM2020上のデータに対して各種の処理を行う。そして、CPU2000は、処理を終えたデータを、DMA転送等により外部記憶装置へと書き戻す。このような処理において、RAM2020は、外部記憶装置の内容を一時的に保持するものとみなせるから、本実施形態においてはRAM2020および外部記憶装置等をメモリ、記憶部、または記憶装置等と総称する。本実施形態における各種のプログラム、データ、テーブル、データベース等の各種の情報は、このような記憶装置上に格納されて、情報処理の対象となる。なお、CPU2000は、RAM2020の一部をキャッシュメモリに保持し、キャッシュメモリ上で読み書きを行うこともできる。このような形態においても、キャッシュメモリはRAM2020の機能の一部を担うから、本実施形態においては、区別して示す場合を除き、キャッシュメモリもRAM2020、メモリ、及び/又は記憶装置に含まれるものとする。
【0067】
また、CPU2000は、RAM2020から読み出したデータに対して、プログラムの命令列により指定された、本実施形態中に記載した各種の演算、情報の加工、条件判断、情報の検索・置換等を含む各種の処理を行い、RAM2020へと書き戻す。例えば、CPU2000は、条件判断を行う場合においては、本実施形態において示した各種の変数が、他の変数または定数と比較して、大きい、小さい、以上、以下、等しい等の条件を満たすかどうかを判断し、条件が成立した場合(又は不成立であった場合)に、異なる命令列へと分岐し、またはサブルーチンを呼び出す。
【0068】
また、CPU2000は、記憶装置内のファイルまたはデータベース等に格納された情報を検索することができる。例えば、第1属性の属性値に対し第2属性の属性値がそれぞれ対応付けられた複数のエントリが記憶装置に格納されている場合において、CPU2000は、記憶装置に格納されている複数のエントリの中から第1属性の属性値が指定された条件と一致するエントリを検索し、そのエントリに格納されている第2属性の属性値を読み出すことにより、所定の条件を満たす第1属性に対応付けられた第2属性の属性値を得ることができる。
【0069】
以上に示したプログラム又はモジュールは、外部の記録媒体に格納されてもよい。記録媒体としては、フレキシブルディスク2090、CD−ROM2095の他に、DVD又はCD等の光学記録媒体、MO等の光磁気記録媒体、テープ媒体、ICカード等の半導体メモリ等を用いることができる。また、専用通信ネットワーク又はインターネットに接続されたサーバシステムに設けたハードディスク又はRAM等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムをコンピュータ1900に提供してもよい。
【0070】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、請求の範囲の記載から明らかである。
【0071】
請求の範囲、明細書、および図面中において示した装置、システム、プログラム、および方法における動作、手順、ステップ、および段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現しうることに留意すべきである。請求の範囲、明細書、および図面中の動作フローに関して、便宜上「まず、」、「次に、」等を用いて説明したとしても、この順で実施することが必須であることを意味するものではない。