説明

携帯機器

【課題】磁気センサのオフセット値を精度よく算出することのできる携帯機器を提供する。
【解決手段】磁気センサと、当該磁気センサとは独立に当該携帯機器の姿勢を検出する姿勢検出センサとを備え、姿勢検出センサにより当該携帯機器が互いに異なる向きを向いていると判定される複数の状態のそれぞれにおいて、磁気センサの出力データをサンプリングデータとして取得し、取得した複数のサンプリングデータに基づいて、磁気センサが地磁気を検出しない場合に出力すると推定されるオフセット値を算出する携帯機器である。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、内蔵する磁気センサのキャリブレーションを行う携帯機器、磁気センサのキャリブレーション方法、磁気センサのキャリブレーションのためのプログラム、及び当該プログラムを格納する情報記憶媒体に関する。
【背景技術】
【0002】
携帯機器の向き(方位)を検出するために、磁気センサが用いられる。磁気センサが検出する地磁気の向きによって、当該磁気センサを内蔵する携帯機器の向きを特定することができる。磁気センサは、1以上の基準軸を持ち、各基準軸の方向に沿った磁気の大きさを示す出力値を出力する。磁気センサの出力値は、オフセット値(地磁気が存在しない場合の出力値)と地磁気の大きさに応じた値の合計値になるが、このオフセット値は周囲の磁場の影響により変化する。そのため、磁気センサの出力データを用いて地磁気の向きを特定するためには、オフセット値を精度よく見積もる必要がある。そこで、このオフセット値を見積もるキャリブレーション処理が実行される。具体的に、携帯機器は、例えばユーザに携帯機器を回転させる動作を行うよう促し、その間の磁気センサの出力データを取得する。このような動作が行われることにより、磁気センサの基準軸が地磁気と一致する場合の出力、及び地磁気と逆向きになる場合の出力の双方が得られることになる。そこで、このような動作の実行中に得られた磁気センサの出力値の最大値と最小値の平均値を採るなどの方法で、オフセット値を算出することができる。
【発明の概要】
【発明が解決しようとする課題】
【0003】
上述したようなキャリブレーション処理を実行するためには、ユーザに意図的に特殊な動作を行わせる必要がある。また、このような動作を行わせることなく、単に磁気センサの出力を一定数サンプリングして得られるサンプリングデータを用いてキャリブレーションを行おうとすると、十分な精度でオフセット値を算出できないおそれがある。なぜなら、キャリブレーションを行うためには、携帯機器の姿勢が比較的大きく変化する前と後のそれぞれにおけるサンプリングデータが必要となるが、ユーザに特殊な動作を行わせない限り、このような姿勢の変化が携帯機器に生じることを保証できないからである。
【0004】
本発明は上記実情を考慮してなされたものであって、その目的の一つは、キャリブレーションのための特定の動作をユーザに意図的に行わせることなく、磁気センサのオフセット値を精度よく算出することのできる携帯機器、磁気センサのキャリブレーション方法、そのためのプログラム、及び当該プログラムを格納する情報記憶媒体を提供することにある。
【課題を解決するための手段】
【0005】
本発明に係る携帯機器は、磁気センサを備える携帯機器であって、前記磁気センサとは独立に当該携帯機器の姿勢を検出する姿勢検出センサと、前記姿勢検出センサにより当該携帯機器が互いに異なる向きを向いていると判定される複数の状態のそれぞれにおいて、前記磁気センサの出力データをサンプリングデータとして取得するサンプリングデータ取得手段と、前記取得した複数のサンプリングデータに基づいて、前記磁気センサが地磁気を検出しない場合に出力すると推定されるオフセット値を算出するオフセット値算出手段と、を含むことを特徴とする。
【0006】
前記携帯機器において、前記サンプリングデータ取得手段は、前記姿勢検出センサにより前記携帯機器が互いに所定角度以上異なる向きを向いていると判定される複数の状態のそれぞれにおいて、前記サンプリングデータを取得することとしてもよい。
【0007】
前記携帯機器は、前記オフセット値を記憶する記憶部をさらに備え、前記オフセット値算出手段は、前記複数のサンプリングデータに基づいて新たに算出したオフセット値について、その信頼度を評価し、当該信頼度の評価に応じて前記算出したオフセット値を補正して得られる値により、前記記憶部に記憶されるオフセット値を更新することとしてもよい。
【0008】
さらに、前記オフセット値算出手段は、前記記憶部にこれまで記憶されていたオフセット値と、前記新たに算出したオフセット値と、に基づいて、当該新たに算出したオフセット値の信頼度を評価することとしてもよい。
【0009】
また、本発明に係る磁気センサのキャリブレーション方法は、磁気センサと、前記磁気センサとは独立に当該携帯機器の姿勢を検出する姿勢検出センサと、を備える携帯機器のための磁気センサのキャリブレーション方法であって、前記姿勢検出センサにより当該携帯機器が互いに異なる向きを向いていると判定される複数の状態のそれぞれにおいて、前記磁気センサの出力データをサンプリングデータとして取得するステップと、前記取得した複数のサンプリングデータに基づいて、前記磁気センサが地磁気を検出しない場合に出力すると推定されるオフセット値を算出するステップと、を含むことを特徴とする。
【0010】
また、本発明に係るプログラムは、磁気センサと、前記磁気センサとは独立に当該携帯機器の姿勢を検出する姿勢検出センサと、を備える携帯機器のための磁気センサのキャリブレーションプログラムであって、前記姿勢検出センサにより当該携帯機器が互いに異なる向きを向いていると判定される複数の状態のそれぞれにおいて、前記磁気センサの出力データをサンプリングデータとして取得するサンプリングデータ取得手段、及び、前記取得した複数のサンプリングデータに基づいて、前記磁気センサが地磁気を検出しない場合に出力すると推定されるオフセット値を算出するオフセット値算出手段、としてコンピュータを機能させるためのプログラムである。このプログラムは、コンピュータ読み取り可能な情報記憶媒体に記憶されてよい。
【図面の簡単な説明】
【0011】
【図1】本発明の実施の形態に係る携帯機器の外観を示す斜視図である。
【図2】本実施形態に係る携帯機器の内部構成を示すブロック図である。
【図3】磁気センサの出力値空間を示す図である。
【図4】本実施形態に係る携帯機器の機能を示す機能ブロック図である。
【図5】本実施形態に係る携帯機器が実行するオフセット値更新処理の一例を示すフロー図である。
【発明を実施するための形態】
【0012】
以下、本発明の実施の形態について、図面に基づき詳細に説明する。
【0013】
図1は、本発明の実施形態に係る携帯機器1の外観を示す斜視図である。携帯機器1は、携帯型ゲーム機や携帯電話、スマートフォンなどの可搬型のデバイスであって、同図に示すように、磁気センサ2、及びジャイロスコープ3を内蔵している。
【0014】
磁気センサ2は、磁気の向き及び大きさを検出するためのセンサである。本実施形態では、磁気センサ2は、携帯機器1に設定された互いに直交する3個の基準軸のそれぞれに沿った方向の磁気の大きさを検出する3軸のセンサであるものとする。具体的に、磁気センサ2は、その3個の基準軸すなわちX軸、Y軸、及びZ軸が、それぞれ携帯機器1の左右方向、上下方向、及び奥行き方向と一致するように、携帯機器1内に配置される。磁気センサ2は、これら3個の基準軸それぞれに沿った方向の磁気の大きさを示す3個の出力値(x,y,z)からなる出力データを出力する。携帯機器1は、磁気センサ2の出力データを用いて地磁気の向きを特定することができる。
【0015】
ジャイロスコープ3は、所定の基準軸を回転中心とした回転の角速度を検出するセンサである。本実施形態では、ジャイロスコープ3は、磁気センサ2と同様に3個の基準軸のそれぞれを回転中心とした回転の角速度を検出する3軸のセンサであるものとする。さらに、ジャイロスコープ3は、その3個の基準軸が磁気センサ2の3個の基準軸と一致するように、携帯機器1内に配置される。ジャイロスコープ3の出力を積分することによって、携帯機器1は、自身が回転した際の回転角の情報を取得することができる。この情報は、携帯機器1の向き(姿勢)の変化量を示している。
【0016】
図2は、携帯機器1の内部構成を示す構成ブロック図である。同図に示すように、携帯機器1は、制御部11と、記憶部12と、出力部13と、を含んで構成される。
【0017】
制御部11は、CPU等を含んで構成され、記憶部12に格納されているプログラムに従って各種の情報処理を実行する。本実施形態では、制御部11は、磁気センサ2及びジャイロスコープ3の出力データを読み取って、そのデータに基づいて磁気センサ2のキャリブレーション処理を実行する。キャリブレーション処理の結果得られる磁気センサ2のオフセット値は、記憶部12に記憶され、磁気センサ2の出力データの補正に用いられる。
【0018】
記憶部12は、RAMやROM等のメモリ素子を含んで構成され、制御部11が実行するプログラム、及び各種のデータを記憶する。また、記憶部12は制御部11のワークメモリとしても機能する。
【0019】
出力部13は、例えば液晶ディスプレイなどの画像表示デバイスやスピーカ等であって、制御部11が実行する処理の結果を出力する。
【0020】
次に、本実施形態における磁気センサ2のキャリブレーション処理の概要について、説明する。磁気センサ2の各基準軸の出力値は、通常、オフセット値に対して地磁気によって生じる磁場の大きさを加算した値となる。オフセット値は、地磁気の影響がない場合に磁気センサ2が出力する値である。例えば、いずれかの基準軸が地磁気の向きと直交するような向きに携帯機器1が配置された場合、当該基準軸方向の地磁気の大きさは0になるので、磁気センサ2の当該基準軸の出力値はオフセット値に一致することになる。なお、以下ではX軸、Y軸、及びZ軸のオフセット値を、それぞれx、y、及びzと表記する。これらのオフセット値は、携帯機器1の周辺の磁場や温度などの、磁気センサ2の動作環境に応じて変動する。そこで本実施形態に係る携帯機器1は、定期的に現在のオフセット値を推定し、推定されたオフセット値を記憶部12に記憶する処理を行う。このような処理を、以下では磁気センサ2のキャリブレーション処理という。携帯機器1は、磁気センサ2の各基準軸の出力値から記憶部12に記憶されたオフセット値を減じることによって、地磁気によって生じる磁場の大きさを示す値を取得する。これにより、携帯機器1は自分自身に対する地磁気の向きを特定することができる。
【0021】
ここで、オフセット値の推定は、以下のようにして行う。携帯機器1は、自身が互いに異なる向きを向いた複数の状態のそれぞれにおいて、磁気センサ2の出力データをサンプリングデータDとして取得する。このサンプリングデータDは、X軸、Y軸、及びZ軸のそれぞれについての磁気センサ2の出力値から構成される。ここで、磁気センサ2の各基準軸の出力値(x,y,z)を座標軸として持つ仮想的な3次元空間を考える。以下では、この仮想的な3次元空間を磁気センサ2の出力値空間という。3個の出力値からなる1つのサンプリングデータDは、この出力値空間内の一点に対応する。また、各基準軸のオフセット値の組(x,y,z)からなるオフセットデータも、出力値空間内の一点に対応する。以下では、オフセットデータに対応する出力値空間内の点を基準点Oという。さらに、あるサンプリングデータDが得られた時点における地磁気の向き及び大きさを示すベクトルを地磁気ベクトルVとすると、磁気センサ2の出力値空間において当該サンプリングデータDに対応する点は、基準点Oを始点とした場合の地磁気ベクトルVの終点に一致するはずである。つまり、地磁気ベクトルVの各基準軸成分をx、y、zとすると、以下の関係式が成り立つ。
=x−x
=y−y
=z−z
そのため、基準点Oの位置、及び地磁気ベクトルVの大きさに変化がなければ、携帯機器1の向きを変化させて取得した複数のサンプリングデータDは、いずれも出力値空間内において基準点Oを中心として半径が地磁気ベクトルVの大きさに等しい球の表面に存在すると考えられる。
【0022】
そこで携帯機器1は、複数のサンプリングデータDを取得し、これらのサンプリングデータDに対応する出力値空間内の各点が表面上に位置するような球の中心点を算出する。この中心点が、基準点Oの位置であると推定される。すなわち、携帯機器1は、複数のサンプリングデータDを取得し、これらのサンプリングデータDに対応する点のいずれからも等距離にあるような出力値空間内の点の位置座標を算出することによって、オフセット値を推定する。このようなオフセット値の推定を行うためには、球面を一意に決定するために最低でも同一平面内にない4個のサンプリングデータDが必要となる。なお、サンプリングデータDの数が増えれば増えるほど、精度よくオフセット値を推定できる。図3は、出力値空間の様子を示す図であって、サンプリングデータD1〜D4のそれぞれに対応する点が、オフセットデータに対応する基準点Oを中心とした球面上に位置する様子を示している。
【0023】
ここで、オフセット値の推定に用いる複数のサンプリングデータDは、できる限り携帯機器1が互いに離れた向きを向いた状態で取得されることが望ましい。比較的近い向きにある状態で取得されたサンプリングデータDだけでは、精度よく球面の近似を行うことができないからである。そこで本実施形態に係る携帯機器1は、磁気センサ2とは独立に携帯機器1の姿勢を検出するセンサとして、ジャイロスコープ3を用いて、磁気センサ2のキャリブレーションに用いるサンプリングデータDの取得タイミングを決定する。具体的に、携帯機器1は、定期的にジャイロスコープ3の出力データを取得し、その出力結果によって、携帯機器1の姿勢が前回サンプリングデータDを取得した時から大きく変化したと判定されるタイミングで、磁気センサ2の出力データを新たなサンプリングデータDとして取得する。こうすれば、使用者が意図的に携帯機器1の姿勢を変化させずとも、使用者による使用中に自然に携帯機器1の向きが変化したタイミングで、携帯機器1はキャリブレーション用のサンプリングデータDを取得することができる。
【0024】
以下、本実施形態において携帯機器1が実現する機能について、説明する。携帯機器1は、図4に示すように、機能的に、サンプリングデータ取得部21と、オフセット値算出部22と、地磁気方向特定部23と、アプリケーション実行部24と、を含んで構成される。これらの機能は、制御部11が記憶部12に格納されているプログラムを実行することにより、実現される。
【0025】
サンプリングデータ取得部21は、磁気センサ2のキャリブレーションのためのサンプリングデータDを4個以上取得する。特に本実施形態では、サンプリングデータ取得部21は、定期的にジャイロスコープ3の検出結果を取得し、取得したジャイロスコープ3の検出結果を用いてサンプリングデータDの取得タイミングを決定する。例えばサンプリングデータ取得部21は、ジャイロスコープ3の検出結果を用いて、前回サンプリングデータDを取得した時点から携帯機器1の向きが所定角度以上変化したか否かを判定する。そして、所定角度以上携帯機器1が回転したと判定した時点における磁気センサ2の出力データを、新たなサンプリングデータDとして取得する。このような処理を繰り返すことによって、サンプリングデータ取得部21は、4個以上のサンプリングデータDを取得する。
【0026】
オフセット値算出部22は、サンプリングデータ取得部21が取得した4個以上のサンプリングデータDを用いて、各基準軸のオフセット値(x,y,z)を算出し、記憶部12に格納する。具体的に、オフセット値算出部22は、複数のサンプリングデータDのそれぞれに対応する出力値空間内の点を通る球の中心点の座標値を、オフセット値として算出する。なお、既に記憶部12に前回算出したオフセット値が記憶されている場合、オフセット値算出部22は、記憶されている値を新たに算出したオフセット値で更新する。
【0027】
ここで、4個のサンプリングデータD1〜D4を用いてオフセット値を算出する計算式の具体例について、説明する。サンプリングデータDi(i=1,2,3,4)の各基準軸成分を(x,y,z)と表記すると、これら4個のサンプリングデータD1〜D4に対応する点を通る球の方程式は、下記の行列式で表される。
【数1】

この行列式を展開すると、以下に示す球の方程式(1)が得られる。
【数2】

なお、この方程式(1)におけるM11、M12、M13、M14、及びM15は、それぞれ以下の行列式により定義される値であって、いずれもサンプリングデータD1〜D4の座標値を用いて算出される。
【数3】

【数4】

【数5】

【数6】

【数7】

【0028】
方程式(1)は、以下のように変形できる。
【数8】

この式から分かるように、球の中心の位置座標に対応するオフセット値(x,y,z)は、以下のように算出される。
【数9】

なお、地磁気の大きさに相当する球の半径は、
【数10】

となる。
【0029】
地磁気方向特定部23は、磁気センサ2の出力結果と、オフセット値算出部22が記憶部12に格納したオフセットデータとを用いて、携帯機器1に対する地磁気の向きを特定し、特定された向きの情報を出力する。
【0030】
アプリケーション実行部24は、記憶部12に格納されたアプリケーションプログラムを実行する。本実施形態では、アプリケーション実行部24は、地磁気方向特定部23が出力する地磁気の向きを利用した処理を実行し、その結果を出力部13に出力するものとする。例えばアプリケーション実行部24は、地図を表示するアプリケーションプログラムを実行し、かつ、地磁気の向きの変化に応じて表示する地図の向きを変化させる。
【0031】
以下、携帯機器1が実行するオフセット値更新処理の具体例について、図5のフロー図を用いて説明する。なお、以下に説明する処理手順は一例であって、携帯機器1はこれとは異なる手順でオフセット値の更新を行ってもよい。
【0032】
この処理においては、携帯機器1は、4個のサンプリングデータD1〜D4を取得し、これらのサンプリングデータD1〜D4を用いてオフセット値を算出する。以下では、サンプリングデータD1〜D4のそれぞれが取得された時点における携帯機器1の向きを示すベクトルを、方向ベクトルq1〜q4とする。また、携帯機器1は、現在の携帯機器1の向きを示す方向ベクトルqcを記憶部12に記憶するものとする。これらの方向ベクトルは、基準時点における携帯機器1の向きを基準とした相対的な携帯機器1の向きを示しており、当該基準時点から開始して、ジャイロスコープ3の検出結果(すなわち、単位時間あたりにおける携帯機器1の各基準軸回りの回転角度)を累積していくことで算出できる。なお、これらの方向ベクトルは、3次元空間内における1つの方向を指し示す3次元ベクトルであるものとする。
【0033】
まずサンプリングデータ取得部21は、現在のジャイロスコープ3の検出結果を取得し、取得したジャイロスコープ3の検出結果に基づいて、現在の携帯機器1の方向ベクトルqcを更新する(S1)。具体的に、サンプリングデータ取得部21は、ジャイロスコープ3の検出結果が示す回転角の情報を用いて、記憶部12に記憶されている方向ベクトルqcが示す向きを変化させることによって、方向ベクトルqcの情報を更新する。
【0034】
次にサンプリングデータ取得部21は、既に取得済みのサンプリングデータDがあるか否か判定する(S2)。そして、取得済みのサンプリングデータDがある場合には、S1で更新された方向ベクトルqcと、これまでサンプリングデータDが取得された際の方向ベクトルqi(i=1,2,3)とのなす角θiを算出する(S3)。具体的に、例えば3個のサンプリングデータD1〜D3が既に取得済みの場合、方向ベクトルqcと方向ベクトルq1とのなす角θ1、方向ベクトルqcと方向ベクトルq2とのなす角θ2、及び方向ベクトルqcと方向ベクトルq3とのなす角θ3をそれぞれ算出する。なお、方向ベクトルqcと方向ベクトルqiとのなす角θiは、両者のベクトルの内積を算出することにより計算できる。すなわち、θiは、下記の計算式により算出される。
【数11】

【0035】
続いてサンプリングデータ取得部21は、S3で算出された角度θiが、所定の閾値θth以上か否かを判定する(S4)。なお、既に2以上のサンプリングデータDを取得しており、S3で複数の角度θiが算出されている場合、サンプリングデータ取得部21は、その全てが閾値θth以上かを判定する。例えば3個のサンプリングデータDが取得済みの場合、S3で算出された角度θ1〜θ3の全てについて、閾値θth以上か否かを判定する。判定の結果、角度θ1〜θ3の全てが閾値θth以上であれば、現在の携帯機器1の向きは、過去にサンプリングデータDが取得された際の向きのどれとも角度θth以上異なっていることになる。S4で1つでも閾値θth未満の角度θiがあると判定された場合、サンプリングデータ取得部21は、その時点の磁気センサ2の出力データをサンプリングデータDとして使用しないと判定する。
【0036】
S4において全ての角度θiが閾値θthを超えると判定された場合、サンプリングデータ取得部21は、これまでに3個のサンプリングデータD1〜D3が取得済みか否かを判定する(S5)。そして、3個のサンプリングデータD1〜D3が既に取得されている場合、サンプリングデータ取得部21は、現在の磁気センサ2の出力データを新たなサンプリングデータD4として使用できるか否か判定する(S6)。具体的に、サンプリングデータ取得部21は、現在の磁気センサ2の出力データと既に取得済みの3個のサンプリングデータD1〜D3とが出力値空間内で同一平面上に位置する場合には、当該出力データをサンプリングデータD4として使用できないと判定する。それ以外の場合には、現在の磁気センサ2の出力データを新たなサンプリングデータD4として取得する(S7)。そして、オフセット値算出部22が、これまでに取得された4個のサンプリングデータD1〜D4を用いて新たなオフセット値を算出し、記憶部12に記憶されているオフセット値を新たに算出された値により更新する(S8)。
【0037】
S2で取得済みのサンプリングデータDがまだないと判定された場合、及びS5で取得済みのサンプリングデータDが3個未満であると判定された場合には、サンプリングデータ取得部21は、無条件で現在の磁気センサ2の出力データを新たなサンプリングデータDiとして取得する(S9)。なお、サンプリングデータ取得部21は、新たなサンプリングデータDiを取得する際には、その時点における携帯機器1の方向ベクトルqcを当該サンプリングデータDに対応する方向ベクトルqiとして記憶部12に記憶する。
【0038】
S4又はS6で現在の磁気センサ2の出力データをサンプリングデータDとして使用できないと判定した場合、及びS8又はS9の処理が完了した場合のいずれの場合にも、サンプリングデータ取得部21は、所定時間が経過するのを待って(S10)、S1に戻って新たなサンプリングデータDの取得を試みる。
【0039】
なお、以上説明した処理の例では、S8でオフセット値の更新が行われた際には、サンプリングデータ取得部21は、オフセット値の更新に使用した4個のサンプリングデータDのうち、最も過去に取得されたサンプリングデータD1を削除し、残る3個のサンプリングデータD2〜D4を新たなサンプリングデータD1〜D3として、さらに次のサンプリングデータD4の取得を試みるものとする。このような処理を繰り返すことで、携帯機器1は、常に最新のサンプリングデータDを用いてオフセット値を更新し続けることができる。
【0040】
サンプリングデータ取得部21は、新たに取得した磁気センサ2の出力データが、出力値空間において既に取得済みのサンプリングデータDのいずれかに対して所定距離以下の位置にある場合、この出力データをサンプリングデータDとして採用しないこととしてもよい。出力値空間内において複数のサンプリングデータDの間の距離が所定値以下になるほど近い場合、精度よくオフセット値の算出ができないおそれがあるからである。
【0041】
さらに、オフセット値算出部22は、以上説明したような処理によってサンプリングデータに基づいて新たに算出したオフセット値(以下、算出オフセット値という)について、その信頼度を示す指標値を算出してもよい。算出オフセット値の信頼度とは、算出オフセット値が、真のオフセット値(すなわち、地磁気が存在しない場合の実際の磁気センサ2の出力値)にどれだけ近いかを示す指標である。例えば、算出オフセット値がそれまで使用されていたオフセット値と大きく異なる場合、このオフセット値は誤差を含むサンプリングデータDを用いて算出されたおそれがある。そこでオフセット値算出部22は、算出オフセット値がそれまで使用されていたオフセット値と近ければ近いほど、算出オフセット値の信頼度が高いと判定する。
【0042】
また、オフセット値算出部22は、算出オフセット値を用いて地磁気方向特定部23が特定する地磁気の向きの変化と、ジャイロスコープ3の検出結果から特定される携帯機器1の向きの変化とを比較することによって、算出オフセット値の信頼度を評価してもよい。通常、地磁気方向特定部23が特定する地磁気の向きの変化と、ジャイロスコープ3が検出する携帯機器1の向きの変化とは、一致するはずである。そのため、算出オフセット値を用いて特定された地磁気の向きが、ジャイロスコープ3が検出する携帯機器1の向きの変化から予測される向きと乖離した場合には、算出オフセット値の見積が正しくないおそれがあるので、算出オフセット値の信頼度が低いと推定する。
【0043】
オフセット値算出部22は、このようにして推定された信頼度の指標値を用いて、算出オフセット値に対して重み付けを行って、地磁気方向特定部23が実際に地磁気の向きの特定に使用するオフセット値(更新後オフセット値)を決定してもよい。具体的に、算出オフセット値の信頼度が低い場合には、これまで記憶部12に記憶されていたオフセット値(更新前オフセット値)を大きく変化させずに、出力値空間内において更新前オフセット値からわずかに算出オフセット値に近づいた位置に対応する値を、更新後オフセット値とする。逆に算出オフセット値の信頼度が高ければ、更新前オフセット値より算出オフセット値に近い値を更新後オフセット値とする。これにより、算出オフセット値の信頼度に応じて、実際の地磁気の向きの特定に利用するオフセット値を更新することができる。
【0044】
以上の説明においては、3個の基準軸についての3個のオフセット値を常に一度に更新することとしたが、サンプリングデータ取得部21がサンプリングデータDを取得した際の携帯機器1の向きによっては、オフセット値算出部22は、特定の基準軸についてのオフセット値は更新しないこととしてもよい。具体的に、ある1つの基準軸(注目軸)を回転中心とした回転は検知されているが、他の2軸を回転中心とした回転は検知されていない場合、当該注目軸の向きは変化していないことになる。このような場合には、注目軸のオフセット値に関する情報は得られていないので、注目軸のオフセット値を更新せずに、他の2軸のオフセット値だけを算出オフセット値を用いて更新する。具体例として、オフセット値算出部22は、オフセット値算出に用いる複数のサンプリングデータDを取得する間に各基準軸がどの程度回転したかを示す回転量の情報を算出する。この回転量の情報は、各基準軸の回転に関するジャイロスコープ3の出力を積算することで算出できる。例えばX軸についてのジャイロスコープ3の出力は、X軸回りの回転角、すなわちX軸に直交するY軸及びZ軸それぞれの回転量を示しており、Y軸についてのジャイロスコープ3の出力は、Y軸回りの回転角、すなわちY軸に直交するX軸及びZ軸それぞれの回転量を示している。このことから、Z軸の回転量は、X軸及びY軸についてのジャイロスコープ3の出力を用いて算出することができる。そして、このようにして得られた回転量が所定値に満たない基準軸については、その向きがほとんど変化していないと考えられるので、当該基準軸のオフセット値を更新の対象から除外する。
【0045】
また、オフセット値算出部22は、各基準軸の回転量に関する情報を、前述した信頼度の推定に用いてもよい。具体的に、オフセット値算出部22は、サンプリングデータDの取得が行われている間の回転量が小さい基準軸については、当該サンプリングデータDを用いて算出されたオフセット値の信頼度を低く評価し、逆に回転量が大きい基準軸については、オフセット値の信頼度を高く評価する。例えばZ軸の回転量が小さい場合、磁気センサ2のZ軸出力値はあまり変化していないため、Z軸のオフセット値zの信頼度は比較的低いと考えられる。この場合、前述したような信頼度の情報を用いた重み付けを基準軸ごとに行うこととすれば、Z軸のオフセット値zについては、更新前の値から大きく変化させないようにすることができる。
【0046】
また、オフセット値算出部22は、ジャイロスコープ3の検出結果を用いて、磁気センサ2のオフセット値だけでなく磁気センサ2の検出感度を算出してもよい。具体的に、ある1つの基準軸を注目基準軸として、この注目軸が地磁気の向きと一致する向きから地磁気と反対の向きまで180度以上回転したと判定された場合、その間の磁気センサ2の出力値は最大値と最小値の双方を含むことになる。この最大値と最小値を使用して、オフセット値算出部22は、当該注目軸についての現在の検出感度に関するパラメタの値を算出し、記憶部12に記憶されているパラメタを新たに算出した値に更新する。こうすれば、オフセット値算出部22は、ジャイロスコープ3の検出結果により確実に携帯機器1の向きが180度以上変化したと判断される場合に、その間の磁気センサ2の出力を用いて検出感度に関するパラメタを更新することができる。
【0047】
また、地磁気方向特定部23は、ジャイロスコープ3の検出結果を用いて、特定された地磁気の向きの信頼度を評価してもよい。前述したように、通常、地磁気の向きの変化とジャイロスコープ3が検出する携帯機器1の向きの変化は対応するはずである。オフセット値の更新が行われていない状況で磁気センサ2の出力が変化したにも関わらず、ジャイロスコープ3の出力に対応する変化が見られない場合、このような磁気センサ2の出力の変化は、携帯機器1の向きが変化したことによる地磁気の向きの変化によって生じたものではなく、携帯機器1周囲の磁場環境の変化によって生じたものと推定される。このような場合、地磁気方向特定部23は、現在の磁気センサ2の出力値に基づいて特定された地磁気の向きの情報について、その信頼度が低いことを示す指標値を併せて出力する。逆に地磁気の向きの変化と対応するジャイロスコープ3の検出結果が得られているときは、地磁気の向きを特定する際に、その地磁気の向きの情報の信頼度が高いことを示す指標値を出力する。アプリケーション実行部24は、この信頼度の情報を参照して、自身が実行する処理において、地磁気方向特定部23が特定する地磁気の向きの情報をどの程度考慮するかを決定する。例えばアプリケーション実行部24は、地磁気方向特定部23が特定する地磁気の向きの信頼度が低いと判断されているときには、この地磁気の向きの情報を無視することとしてもよい。
【0048】
以上説明した本発明の実施形態に係る携帯機器1によれば、ジャイロスコープ3の検出結果を用いて磁気センサ2のキャリブレーションに使用するサンプリングデータDの取得タイミングを決定するので、磁気センサ2の出力データのみに基づいてキャリブレーションを行う場合と比較して、精度のよいキャリブレーションを行うことのできるサンプリングデータDを得ることができる。特に携帯機器1の周囲の磁場に変動が生じる場合、磁気センサ2の出力データだけを用いてキャリブレーションを行う方法では、このような磁場の変動を携帯機器1の姿勢変化に伴う地磁気の変動と誤認して、誤ったキャリブレーションを行うおそれがある。本実施形態では、磁気センサ2とは独立に携帯機器1の姿勢変化を検出するジャイロスコープ3の検出結果を利用するので、確実に携帯機器1の姿勢変化が生じた場合に新たなサンプリングデータDを取得することができる。
【0049】
なお、本発明の実施の形態は以上説明したものに限られない。例えば、以上の説明においてはジャイロスコープ3の検出結果を用いてサンプリングデータDの取得タイミングを決定することとしたが、これに限らず、本発明の実施の形態に係る携帯機器は、当該携帯機器の姿勢を検出する他の種類のセンサを用いてサンプリングデータDの取得タイミングを決定してもよい。具体例として、本発明の実施の形態に係る携帯機器は、重力加速度の向きの変化を検出する加速度センサの検出結果を利用してサンプリングデータDの取得タイミングを決定してもよい。
【符号の説明】
【0050】
1 携帯機器、2 磁気センサ、3 ジャイロスコープ、11 制御部、12 記憶部、13 出力部、21 サンプリングデータ取得部、22 オフセット値算出部、23 地磁気方向特定部、24 アプリケーション実行部。

【特許請求の範囲】
【請求項1】
磁気センサを備える携帯機器であって、
前記磁気センサとは独立に当該携帯機器の姿勢を検出する姿勢検出センサと、
前記姿勢検出センサにより当該携帯機器が互いに異なる向きを向いていると判定される複数の状態のそれぞれにおいて、前記磁気センサの出力データをサンプリングデータとして取得するサンプリングデータ取得手段と、
前記取得した複数のサンプリングデータに基づいて、前記磁気センサが地磁気を検出しない場合に出力すると推定されるオフセット値を算出するオフセット値算出手段と、
を含むことを特徴とする携帯機器。
【請求項2】
請求項1に記載の携帯機器において、
前記サンプリングデータ取得手段は、前記姿勢検出センサにより前記携帯機器が互いに所定角度以上異なる向きを向いていると判定される複数の状態のそれぞれにおいて、前記サンプリングデータを取得する
ことを特徴とする携帯機器。
【請求項3】
請求項1又は2に記載の携帯機器において、
前記オフセット値を記憶する記憶部をさらに備え、
前記オフセット値算出手段は、前記複数のサンプリングデータに基づいて新たに算出したオフセット値について、その信頼度を評価し、当該信頼度の評価に応じて前記算出したオフセット値を補正して得られる値により、前記記憶部に記憶されるオフセット値を更新する
ことを特徴とする携帯機器。
【請求項4】
請求項3に記載の携帯機器において、
前記オフセット値算出手段は、前記記憶部にこれまで記憶されていたオフセット値と、前記新たに算出したオフセット値と、に基づいて、当該新たに算出したオフセット値の信頼度を評価する
ことを特徴とする携帯機器。
【請求項5】
磁気センサと、前記磁気センサとは独立に当該携帯機器の姿勢を検出する姿勢検出センサと、を備える携帯機器のための磁気センサのキャリブレーション方法であって、
前記姿勢検出センサにより当該携帯機器が互いに異なる向きを向いていると判定される複数の状態のそれぞれにおいて、前記磁気センサの出力データをサンプリングデータとして取得するステップと、
前記取得した複数のサンプリングデータに基づいて、前記磁気センサが地磁気を検出しない場合に出力すると推定されるオフセット値を算出するステップと、
を含むことを特徴とする磁気センサのキャリブレーション方法。
【請求項6】
磁気センサと、前記磁気センサとは独立に当該携帯機器の姿勢を検出する姿勢検出センサと、を備える携帯機器のための磁気センサのキャリブレーションプログラムであって、
前記姿勢検出センサにより当該携帯機器が互いに異なる向きを向いていると判定される複数の状態のそれぞれにおいて、前記磁気センサの出力データをサンプリングデータとして取得するサンプリングデータ取得手段、及び、
前記取得した複数のサンプリングデータに基づいて、前記磁気センサが地磁気を検出しない場合に出力すると推定されるオフセット値を算出するオフセット値算出手段、
としてコンピュータを機能させるためのプログラム。
【請求項7】
請求項6に記載のプログラムを記憶した、コンピュータ読み取り可能な情報記憶媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2012−242267(P2012−242267A)
【公開日】平成24年12月10日(2012.12.10)
【国際特許分類】
【出願番号】特願2011−113370(P2011−113370)
【出願日】平成23年5月20日(2011.5.20)
【出願人】(310021766)株式会社ソニー・コンピュータエンタテインメント (417)