(57)【特許請求の範囲】
【請求項１】
磁気センサを備える携帯機器であって、
前記磁気センサとは独立に当該携帯機器の姿勢を検出する姿勢検出センサと、
前記姿勢検出センサにより前記携帯機器が互いに所定角度以上異なる向きを向いていると判定される複数のタイミングを、サンプリングデータの取得タイミングとして決定するタイミング決定手段と、
前記決定される複数のタイミングのそれぞれにおいて、前記磁気センサの出力データをサンプリングデータとして取得するサンプリングデータ取得手段と、
前記取得した複数のサンプリングデータのそれぞれに対応する空間内の各点が表面上に位置するような球の中心点に対応する値を、前記磁気センサが地磁気を検出しない場合に出力すると推定される、複数の基準軸についてのオフセット値として算出するオフセット値算出手段と、
前記複数の基準軸についてのオフセット値を記憶する記憶部と、
を含み、
前記オフセット値算出手段は、前記複数の基準軸について、前記記憶部に記憶されている更新前のオフセット値と、前記取得した複数のサンプリングデータに基づいて新たに算出したオフセット値と、に基づいて、当該新たに算出したオフセット値が前記記憶部に記憶されている更新前のオフセット値と近ければ近いほど高いと判定される信頼度の指標値を算出し、
前記オフセット値算出手段は、算出される前記信頼度の指標値に応じた基準軸についての前記記憶部に記憶されている更新前のオフセット値を、当該信頼度の指標値を用いて前記新たに算出したオフセット値に対して重み付けを行うことで得られる値により更新する
ことを特徴とする携帯機器。
【請求項２】
磁気センサと、前記磁気センサとは独立に携帯機器の姿勢を検出する姿勢検出センサと、を備える携帯機器のための磁気センサのキャリブレーション方法であって、
前記携帯機器のタイミング決定手段が、前記姿勢検出センサにより前記携帯機器が互いに所定角度以上異なる向きを向いていると判定される複数のタイミングを、サンプリングデータの取得タイミングとして決定するタイミング決定ステップと、
前記携帯機器のサンプリングデータ取得手段が、前記決定される複数のタイミングのそれぞれにおいて、前記磁気センサの出力データをサンプリングデータとして取得するサンプリングデータ取得ステップと、
前記携帯機器のオフセット値算出手段が、前記取得した複数のサンプリングデータのそれぞれに対応する空間内の各点が表面上に位置するような球の中心点に対応する値を、前記磁気センサが地磁気を検出しない場合に出力すると推定される、複数の基準軸についてのオフセット値として算出し、記憶部に記憶させるオフセット値算出ステップと、
を含み、
前記オフセット値算出ステップでは、前記複数の基準軸について、前記記憶部に記憶されている更新前のオフセット値と、前記取得した複数のサンプリングデータに基づいて新たに算出したオフセット値と、に基づいて、当該新たに算出したオフセット値が前記記憶部に記憶されている更新前のオフセット値と近ければ近いほど高いと判定される信頼度の指標値を算出し、
前記オフセット値算出ステップでは、算出される前記信頼度の指標値に応じた基準軸についての前記記憶部に記憶されている更新前のオフセット値を、当該信頼度の指標値を用いて前記新たに算出したオフセット値に対して重み付けを行うことで得られる値により更新する
ことを特徴とする磁気センサのキャリブレーション方法。
【請求項３】
磁気センサと、前記磁気センサとは独立に携帯機器の姿勢を検出する姿勢検出センサと、を備える携帯機器のための磁気センサのキャリブレーションプログラムであって、
前記姿勢検出センサにより前記携帯機器が互いに所定角度以上異なる向きを向いていると判定される複数のタイミングを、サンプリングデータの取得タイミングとして決定するタイミング決定手段、
前記決定される複数のタイミングのそれぞれにおいて、前記磁気センサの出力データをサンプリングデータとして取得するサンプリングデータ取得手段、及び、
前記取得した複数のサンプリングデータのそれぞれに対応する空間内の各点が表面上に位置するような球の中心点に対応する値を、前記磁気センサが地磁気を検出しない場合に出力すると推定される、複数の基準軸についてのオフセット値として算出し、記憶部に記憶させるオフセット値算出手段、
としてコンピュータを機能させ、
前記オフセット値算出手段は、前記複数の基準軸について、前記記憶部に記憶されている更新前のオフセット値と、前記取得した複数のサンプリングデータに基づいて新たに算出したオフセット値と、に基づいて、当該新たに算出したオフセット値が前記記憶部に記憶されている更新前のオフセット値と近ければ近いほど高いと判定される信頼度の指標値を算出し、
前記オフセット値算出手段は、算出される前記信頼度の指標値に応じた基準軸についての前記記憶部に記憶されている更新前のオフセット値を、当該信頼度の指標値を用いて前記新たに算出したオフセット値に対して重み付けを行うことで得られる値により更新する
ことを特徴とするプログラム。
【請求項４】
請求項３に記載のプログラムを記憶した、コンピュータ読み取り可能な情報記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内蔵する磁気センサのキャリブレーションを行う携帯機器、磁気センサのキャリブレーション方法、磁気センサのキャリブレーションのためのプログラム、及び当該プログラムを格納する情報記憶媒体に関する。
【背景技術】
【０００２】
携帯機器の向き（方位）を検出するために、磁気センサが用いられる。磁気センサが検出する地磁気の向きによって、当該磁気センサを内蔵する携帯機器の向きを特定することができる。磁気センサは、１以上の基準軸を持ち、各基準軸の方向に沿った磁気の大きさを示す出力値を出力する。磁気センサの出力値は、オフセット値（地磁気が存在しない場合の出力値）と地磁気の大きさに応じた値の合計値になるが、このオフセット値は周囲の磁場の影響により変化する。そのため、磁気センサの出力データを用いて地磁気の向きを特定するためには、オフセット値を精度よく見積もる必要がある。そこで、このオフセット値を見積もるキャリブレーション処理が実行される。具体的に、携帯機器は、例えばユーザに携帯機器を回転させる動作を行うよう促し、その間の磁気センサの出力データを取得する。このような動作が行われることにより、磁気センサの基準軸が地磁気と一致する場合の出力、及び地磁気と逆向きになる場合の出力の双方が得られることになる。そこで、このような動作の実行中に得られた磁気センサの出力値の最大値と最小値の平均値を採るなどの方法で、オフセット値を算出することができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−３５１８１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述したようなキャリブレーション処理を実行するためには、ユーザに意図的に特殊な動作を行わせる必要がある。また、このような動作を行わせることなく、単に磁気センサの出力を一定数サンプリングして得られるサンプリングデータを用いてキャリブレーションを行おうとすると、十分な精度でオフセット値を算出できないおそれがある。なぜなら、キャリブレーションを行うためには、携帯機器の姿勢が比較的大きく変化する前と後のそれぞれにおけるサンプリングデータが必要となるが、ユーザに特殊な動作を行わせない限り、このような姿勢の変化が携帯機器に生じることを保証できないからである。
【０００５】
本発明は上記実情を考慮してなされたものであって、その目的の一つは、キャリブレーションのための特定の動作をユーザに意図的に行わせることなく、磁気センサのオフセット値を精度よく算出することのできる携帯機器、磁気センサのキャリブレーション方法、そのためのプログラム、及び当該プログラムを格納する情報記憶媒体を提供することにある。
【課題を解決するための手段】
【０００６】
本発明に係る携帯機器は、磁気センサを備える携帯機器であって、前記磁気センサとは独立に当該携帯機器の姿勢を検出する姿勢検出センサと、前記姿勢検出センサにより当該携帯機器が互いに異なる向きを向いていると判定される複数の状態のそれぞれにおいて、前記磁気センサの出力データをサンプリングデータとして取得するサンプリングデータ取得手段と、前記取得した複数のサンプリングデータに基づいて、前記磁気センサが地磁気を検出しない場合に出力すると推定されるオフセット値を算出するオフセット値算出手段と、を含むことを特徴とする。
【０００７】
前記携帯機器において、前記サンプリングデータ取得手段は、前記姿勢検出センサにより前記携帯機器が互いに所定角度以上異なる向きを向いていると判定される複数の状態のそれぞれにおいて、前記サンプリングデータを取得することとしてもよい。
【０００８】
前記携帯機器は、前記オフセット値を記憶する記憶部をさらに備え、前記オフセット値算出手段は、前記複数のサンプリングデータに基づいて新たに算出したオフセット値について、その信頼度を評価し、当該信頼度の評価に応じて前記算出したオフセット値を補正して得られる値により、前記記憶部に記憶されるオフセット値を更新することとしてもよい。
【０００９】
さらに、前記オフセット値算出手段は、前記記憶部にこれまで記憶されていたオフセット値と、前記新たに算出したオフセット値と、に基づいて、当該新たに算出したオフセット値の信頼度を評価することとしてもよい。
【００１０】
また、本発明に係る磁気センサのキャリブレーション方法は、磁気センサと、前記磁気センサとは独立に当該携帯機器の姿勢を検出する姿勢検出センサと、を備える携帯機器のための磁気センサのキャリブレーション方法であって、前記姿勢検出センサにより当該携帯機器が互いに異なる向きを向いていると判定される複数の状態のそれぞれにおいて、前記磁気センサの出力データをサンプリングデータとして取得するステップと、前記取得した複数のサンプリングデータに基づいて、前記磁気センサが地磁気を検出しない場合に出力すると推定されるオフセット値を算出するステップと、を含むことを特徴とする。
【００１１】
また、本発明に係るプログラムは、磁気センサと、前記磁気センサとは独立に当該携帯機器の姿勢を検出する姿勢検出センサと、を備える携帯機器のための磁気センサのキャリブレーションプログラムであって、前記姿勢検出センサにより当該携帯機器が互いに異なる向きを向いていると判定される複数の状態のそれぞれにおいて、前記磁気センサの出力データをサンプリングデータとして取得するサンプリングデータ取得手段、及び、前記取得した複数のサンプリングデータに基づいて、前記磁気センサが地磁気を検出しない場合に出力すると推定されるオフセット値を算出するオフセット値算出手段、としてコンピュータを機能させるためのプログラムである。このプログラムは、コンピュータ読み取り可能な情報記憶媒体に記憶されてよい。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施の形態に係る携帯機器の外観を示す斜視図である。
【図２】本実施形態に係る携帯機器の内部構成を示すブロック図である。
【図３】磁気センサの出力値空間を示す図である。
【図４】本実施形態に係る携帯機器の機能を示す機能ブロック図である。
【図５】本実施形態に係る携帯機器が実行するオフセット値更新処理の一例を示すフロー図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態について、図面に基づき詳細に説明する。
【００１４】
図１は、本発明の実施形態に係る携帯機器１の外観を示す斜視図である。携帯機器１は、携帯型ゲーム機や携帯電話、スマートフォンなどの可搬型のデバイスであって、同図に示すように、磁気センサ２、及びジャイロスコープ３を内蔵している。
【００１５】
磁気センサ２は、磁気の向き及び大きさを検出するためのセンサである。本実施形態では、磁気センサ２は、携帯機器１に設定された互いに直交する３個の基準軸のそれぞれに沿った方向の磁気の大きさを検出する３軸のセンサであるものとする。具体的に、磁気センサ２は、その３個の基準軸すなわちＸ軸、Ｙ軸、及びＺ軸が、それぞれ携帯機器１の左右方向、上下方向、及び奥行き方向と一致するように、携帯機器１内に配置される。磁気センサ２は、これら３個の基準軸それぞれに沿った方向の磁気の大きさを示す３個の出力値（ｘＭ，ｙＭ，ｚＭ）からなる出力データを出力する。携帯機器１は、磁気センサ２の出力データを用いて地磁気の向きを特定することができる。
【００１６】
ジャイロスコープ３は、所定の基準軸を回転中心とした回転の角速度を検出するセンサである。本実施形態では、ジャイロスコープ３は、磁気センサ２と同様に３個の基準軸のそれぞれを回転中心とした回転の角速度を検出する３軸のセンサであるものとする。さらに、ジャイロスコープ３は、その３個の基準軸が磁気センサ２の３個の基準軸と一致するように、携帯機器１内に配置される。ジャイロスコープ３の出力を積分することによって、携帯機器１は、自身が回転した際の回転角の情報を取得することができる。この情報は、携帯機器１の向き（姿勢）の変化量を示している。
【００１７】
図２は、携帯機器１の内部構成を示す構成ブロック図である。同図に示すように、携帯機器１は、制御部１１と、記憶部１２と、出力部１３と、を含んで構成される。
【００１８】
制御部１１は、ＣＰＵ等を含んで構成され、記憶部１２に格納されているプログラムに従って各種の情報処理を実行する。本実施形態では、制御部１１は、磁気センサ２及びジャイロスコープ３の出力データを読み取って、そのデータに基づいて磁気センサ２のキャリブレーション処理を実行する。キャリブレーション処理の結果得られる磁気センサ２のオフセット値は、記憶部１２に記憶され、磁気センサ２の出力データの補正に用いられる。
【００１９】
記憶部１２は、ＲＡＭやＲＯＭ等のメモリ素子を含んで構成され、制御部１１が実行するプログラム、及び各種のデータを記憶する。また、記憶部１２は制御部１１のワークメモリとしても機能する。
【００２０】
出力部１３は、例えば液晶ディスプレイなどの画像表示デバイスやスピーカ等であって、制御部１１が実行する処理の結果を出力する。
【００２１】
次に、本実施形態における磁気センサ２のキャリブレーション処理の概要について、説明する。磁気センサ２の各基準軸の出力値は、通常、オフセット値に対して地磁気によって生じる磁場の大きさを加算した値となる。オフセット値は、地磁気の影響がない場合に磁気センサ２が出力する値である。例えば、いずれかの基準軸が地磁気の向きと直交するような向きに携帯機器１が配置された場合、当該基準軸方向の地磁気の大きさは０になるので、磁気センサ２の当該基準軸の出力値はオフセット値に一致することになる。なお、以下ではＸ軸、Ｙ軸、及びＺ軸のオフセット値を、それぞれｘ０、ｙ０、及びｚ０と表記する。これらのオフセット値は、携帯機器１の周辺の磁場や温度などの、磁気センサ２の動作環境に応じて変動する。そこで本実施形態に係る携帯機器１は、定期的に現在のオフセット値を推定し、推定されたオフセット値を記憶部１２に記憶する処理を行う。このような処理を、以下では磁気センサ２のキャリブレーション処理という。携帯機器１は、磁気センサ２の各基準軸の出力値から記憶部１２に記憶されたオフセット値を減じることによって、地磁気によって生じる磁場の大きさを示す値を取得する。これにより、携帯機器１は自分自身に対する地磁気の向きを特定することができる。
【００２２】
ここで、オフセット値の推定は、以下のようにして行う。携帯機器１は、自身が互いに異なる向きを向いた複数の状態のそれぞれにおいて、磁気センサ２の出力データをサンプリングデータＤとして取得する。このサンプリングデータＤは、Ｘ軸、Ｙ軸、及びＺ軸のそれぞれについての磁気センサ２の出力値から構成される。ここで、磁気センサ２の各基準軸の出力値（ｘＭ，ｙＭ，ｚＭ）を座標軸として持つ仮想的な３次元空間を考える。以下では、この仮想的な３次元空間を磁気センサ２の出力値空間という。３個の出力値からなる１つのサンプリングデータＤは、この出力値空間内の一点に対応する。また、各基準軸のオフセット値の組（ｘ０，ｙ０，ｚ０）からなるオフセットデータも、出力値空間内の一点に対応する。以下では、オフセットデータに対応する出力値空間内の点を基準点Ｏという。さらに、あるサンプリングデータＤが得られた時点における地磁気の向き及び大きさを示すベクトルを地磁気ベクトルＶとすると、磁気センサ２の出力値空間において当該サンプリングデータＤに対応する点は、基準点Ｏを始点とした場合の地磁気ベクトルＶの終点に一致するはずである。つまり、地磁気ベクトルＶの各基準軸成分をｘＶ、ｙＶ、ｚＶとすると、以下の関係式が成り立つ。
ｘＶ＝ｘＭ−ｘ０
ｙＶ＝ｙＭ−ｙ０
ｚＶ＝ｚＭ−ｚ０
そのため、基準点Ｏの位置、及び地磁気ベクトルＶの大きさに変化がなければ、携帯機器１の向きを変化させて取得した複数のサンプリングデータＤは、いずれも出力値空間内において基準点Ｏを中心として半径が地磁気ベクトルＶの大きさに等しい球の表面に存在すると考えられる。
【００２３】
そこで携帯機器１は、複数のサンプリングデータＤを取得し、これらのサンプリングデータＤに対応する出力値空間内の各点が表面上に位置するような球の中心点を算出する。この中心点が、基準点Ｏの位置であると推定される。すなわち、携帯機器１は、複数のサンプリングデータＤを取得し、これらのサンプリングデータＤに対応する点のいずれからも等距離にあるような出力値空間内の点の位置座標を算出することによって、オフセット値を推定する。このようなオフセット値の推定を行うためには、球面を一意に決定するために最低でも同一平面内にない４個のサンプリングデータＤが必要となる。なお、サンプリングデータＤの数が増えれば増えるほど、精度よくオフセット値を推定できる。図３は、出力値空間の様子を示す図であって、サンプリングデータＤ１〜Ｄ４のそれぞれに対応する点が、オフセットデータに対応する基準点Ｏを中心とした球面上に位置する様子を示している。
【００２４】
ここで、オフセット値の推定に用いる複数のサンプリングデータＤは、できる限り携帯機器１が互いに離れた向きを向いた状態で取得されることが望ましい。比較的近い向きにある状態で取得されたサンプリングデータＤだけでは、精度よく球面の近似を行うことができないからである。そこで本実施形態に係る携帯機器１は、磁気センサ２とは独立に携帯機器１の姿勢を検出するセンサとして、ジャイロスコープ３を用いて、磁気センサ２のキャリブレーションに用いるサンプリングデータＤの取得タイミングを決定する。具体的に、携帯機器１は、定期的にジャイロスコープ３の出力データを取得し、その出力結果によって、携帯機器１の姿勢が前回サンプリングデータＤを取得した時から大きく変化したと判定されるタイミングで、磁気センサ２の出力データを新たなサンプリングデータＤとして取得する。こうすれば、使用者が意図的に携帯機器１の姿勢を変化させずとも、使用者による使用中に自然に携帯機器１の向きが変化したタイミングで、携帯機器１はキャリブレーション用のサンプリングデータＤを取得することができる。
【００２５】
以下、本実施形態において携帯機器１が実現する機能について、説明する。携帯機器１は、図４に示すように、機能的に、サンプリングデータ取得部２１と、オフセット値算出部２２と、地磁気方向特定部２３と、アプリケーション実行部２４と、を含んで構成される。これらの機能は、制御部１１が記憶部１２に格納されているプログラムを実行することにより、実現される。
【００２６】
サンプリングデータ取得部２１は、磁気センサ２のキャリブレーションのためのサンプリングデータＤを４個以上取得する。特に本実施形態では、サンプリングデータ取得部２１は、定期的にジャイロスコープ３の検出結果を取得し、取得したジャイロスコープ３の検出結果を用いてサンプリングデータＤの取得タイミングを決定する。例えばサンプリングデータ取得部２１は、ジャイロスコープ３の検出結果を用いて、前回サンプリングデータＤを取得した時点から携帯機器１の向きが所定角度以上変化したか否かを判定する。そして、所定角度以上携帯機器１が回転したと判定した時点における磁気センサ２の出力データを、新たなサンプリングデータＤとして取得する。このような処理を繰り返すことによって、サンプリングデータ取得部２１は、４個以上のサンプリングデータＤを取得する。
【００２７】
オフセット値算出部２２は、サンプリングデータ取得部２１が取得した４個以上のサンプリングデータＤを用いて、各基準軸のオフセット値（ｘ０，ｙ０，ｚ０）を算出し、記憶部１２に格納する。具体的に、オフセット値算出部２２は、複数のサンプリングデータＤのそれぞれに対応する出力値空間内の点を通る球の中心点の座標値を、オフセット値として算出する。なお、既に記憶部１２に前回算出したオフセット値が記憶されている場合、オフセット値算出部２２は、記憶されている値を新たに算出したオフセット値で更新する。
【００２８】
ここで、４個のサンプリングデータＤ１〜Ｄ４を用いてオフセット値を算出する計算式の具体例について、説明する。サンプリングデータＤｉ（ｉ＝１，２，３，４）の各基準軸成分を（ｘｉ，ｙｉ，ｚｉ）と表記すると、これら４個のサンプリングデータＤ１〜Ｄ４に対応する点を通る球の方程式は、下記の行列式で表される。
【数１】
0005927776.tif 000002
この行列式を展開すると、以下に示す球の方程式（１）が得られる。
【数２】
0005927776.tif 000003
なお、この方程式（１）におけるＭ１１、Ｍ１２、Ｍ１３、Ｍ１４、及びＭ１５は、それぞれ以下の行列式により定義される値であって、いずれもサンプリングデータＤ１〜Ｄ４の座標値を用いて算出される。
【数３】
0005927776.tif 000004
【数４】
0005927776.tif 000005
【数５】
0005927776.tif 000006
【数６】
0005927776.tif 000007
【数７】
0005927776.tif 000008
【００２９】
方程式（１）は、以下のように変形できる。
【数８】
0005927776.tif 000009
この式から分かるように、球の中心の位置座標に対応するオフセット値（ｘ０，ｙ０，ｚ０）は、以下のように算出される。
【数９】
0005927776.tif 000010
なお、地磁気の大きさに相当する球の半径は、
【数１０】
0005927776.tif 000011
となる。
【００３０】
地磁気方向特定部２３は、磁気センサ２の出力結果と、オフセット値算出部２２が記憶部１２に格納したオフセットデータとを用いて、携帯機器１に対する地磁気の向きを特定し、特定された向きの情報を出力する。
【００３１】
アプリケーション実行部２４は、記憶部１２に格納されたアプリケーションプログラムを実行する。本実施形態では、アプリケーション実行部２４は、地磁気方向特定部２３が出力する地磁気の向きを利用した処理を実行し、その結果を出力部１３に出力するものとする。例えばアプリケーション実行部２４は、地図を表示するアプリケーションプログラムを実行し、かつ、地磁気の向きの変化に応じて表示する地図の向きを変化させる。
【００３２】
以下、携帯機器１が実行するオフセット値更新処理の具体例について、図５のフロー図を用いて説明する。なお、以下に説明する処理手順は一例であって、携帯機器１はこれとは異なる手順でオフセット値の更新を行ってもよい。
【００３３】
この処理においては、携帯機器１は、４個のサンプリングデータＤ１〜Ｄ４を取得し、これらのサンプリングデータＤ１〜Ｄ４を用いてオフセット値を算出する。以下では、サンプリングデータＤ１〜Ｄ４のそれぞれが取得された時点における携帯機器１の向きを示すベクトルを、方向ベクトルｑ１〜ｑ４とする。また、携帯機器１は、現在の携帯機器１の向きを示す方向ベクトルｑｃを記憶部１２に記憶するものとする。これらの方向ベクトルは、基準時点における携帯機器１の向きを基準とした相対的な携帯機器１の向きを示しており、当該基準時点から開始して、ジャイロスコープ３の検出結果（すなわち、単位時間あたりにおける携帯機器１の各基準軸回りの回転角度）を累積していくことで算出できる。なお、これらの方向ベクトルは、３次元空間内における１つの方向を指し示す３次元ベクトルであるものとする。
【００３４】
まずサンプリングデータ取得部２１は、現在のジャイロスコープ３の検出結果を取得し、取得したジャイロスコープ３の検出結果に基づいて、現在の携帯機器１の方向ベクトルｑｃを更新する（Ｓ１）。具体的に、サンプリングデータ取得部２１は、ジャイロスコープ３の検出結果が示す回転角の情報を用いて、記憶部１２に記憶されている方向ベクトルｑｃが示す向きを変化させることによって、方向ベクトルｑｃの情報を更新する。
【００３５】
次にサンプリングデータ取得部２１は、既に取得済みのサンプリングデータＤがあるか否か判定する（Ｓ２）。そして、取得済みのサンプリングデータＤがある場合には、Ｓ１で更新された方向ベクトルｑｃと、これまでサンプリングデータＤが取得された際の方向ベクトルｑｉ（ｉ＝１，２，３）とのなす角θｉを算出する（Ｓ３）。具体的に、例えば３個のサンプリングデータＤ１〜Ｄ３が既に取得済みの場合、方向ベクトルｑｃと方向ベクトルｑ１とのなす角θ１、方向ベクトルｑｃと方向ベクトルｑ２とのなす角θ２、及び方向ベクトルｑｃと方向ベクトルｑ３とのなす角θ３をそれぞれ算出する。なお、方向ベクトルｑｃと方向ベクトルｑｉとのなす角θｉは、両者のベクトルの内積を算出することにより計算できる。すなわち、θｉは、下記の計算式により算出される。
【数１１】
0005927776.tif 000012
【００３６】
続いてサンプリングデータ取得部２１は、Ｓ３で算出された角度θｉが、所定の閾値θｔｈ以上か否かを判定する（Ｓ４）。なお、既に２以上のサンプリングデータＤを取得しており、Ｓ３で複数の角度θｉが算出されている場合、サンプリングデータ取得部２１は、その全てが閾値θｔｈ以上かを判定する。例えば３個のサンプリングデータＤが取得済みの場合、Ｓ３で算出された角度θ１〜θ３の全てについて、閾値θｔｈ以上か否かを判定する。判定の結果、角度θ１〜θ３の全てが閾値θｔｈ以上であれば、現在の携帯機器１の向きは、過去にサンプリングデータＤが取得された際の向きのどれとも角度θｔｈ以上異なっていることになる。Ｓ４で１つでも閾値θｔｈ未満の角度θｉがあると判定された場合、サンプリングデータ取得部２１は、その時点の磁気センサ２の出力データをサンプリングデータＤとして使用しないと判定する。
【００３７】
Ｓ４において全ての角度θｉが閾値θｔｈを超えると判定された場合、サンプリングデータ取得部２１は、これまでに３個のサンプリングデータＤ１〜Ｄ３が取得済みか否かを判定する（Ｓ５）。そして、３個のサンプリングデータＤ１〜Ｄ３が既に取得されている場合、サンプリングデータ取得部２１は、現在の磁気センサ２の出力データを新たなサンプリングデータＤ４として使用できるか否か判定する（Ｓ６）。具体的に、サンプリングデータ取得部２１は、現在の磁気センサ２の出力データと既に取得済みの３個のサンプリングデータＤ１〜Ｄ３とが出力値空間内で同一平面上に位置する場合には、当該出力データをサンプリングデータＤ４として使用できないと判定する。それ以外の場合には、現在の磁気センサ２の出力データを新たなサンプリングデータＤ４として取得する（Ｓ７）。そして、オフセット値算出部２２が、これまでに取得された４個のサンプリングデータＤ１〜Ｄ４を用いて新たなオフセット値を算出し、記憶部１２に記憶されているオフセット値を新たに算出された値により更新する（Ｓ８）。
【００３８】
Ｓ２で取得済みのサンプリングデータＤがまだないと判定された場合、及びＳ５で取得済みのサンプリングデータＤが３個未満であると判定された場合には、サンプリングデータ取得部２１は、無条件で現在の磁気センサ２の出力データを新たなサンプリングデータＤｉとして取得する（Ｓ９）。なお、サンプリングデータ取得部２１は、新たなサンプリングデータＤｉを取得する際には、その時点における携帯機器１の方向ベクトルｑｃを当該サンプリングデータＤに対応する方向ベクトルｑｉとして記憶部１２に記憶する。
【００３９】
Ｓ４又はＳ６で現在の磁気センサ２の出力データをサンプリングデータＤとして使用できないと判定した場合、及びＳ８又はＳ９の処理が完了した場合のいずれの場合にも、サンプリングデータ取得部２１は、所定時間が経過するのを待って（Ｓ１０）、Ｓ１に戻って新たなサンプリングデータＤの取得を試みる。
【００４０】
なお、以上説明した処理の例では、Ｓ８でオフセット値の更新が行われた際には、サンプリングデータ取得部２１は、オフセット値の更新に使用した４個のサンプリングデータＤのうち、最も過去に取得されたサンプリングデータＤ１を削除し、残る３個のサンプリングデータＤ２〜Ｄ４を新たなサンプリングデータＤ１〜Ｄ３として、さらに次のサンプリングデータＤ４の取得を試みるものとする。このような処理を繰り返すことで、携帯機器１は、常に最新のサンプリングデータＤを用いてオフセット値を更新し続けることができる。
【００４１】
サンプリングデータ取得部２１は、新たに取得した磁気センサ２の出力データが、出力値空間において既に取得済みのサンプリングデータＤのいずれかに対して所定距離以下の位置にある場合、この出力データをサンプリングデータＤとして採用しないこととしてもよい。出力値空間内において複数のサンプリングデータＤの間の距離が所定値以下になるほど近い場合、精度よくオフセット値の算出ができないおそれがあるからである。
【００４２】
さらに、オフセット値算出部２２は、以上説明したような処理によってサンプリングデータに基づいて新たに算出したオフセット値（以下、算出オフセット値という）について、その信頼度を示す指標値を算出してもよい。算出オフセット値の信頼度とは、算出オフセット値が、真のオフセット値（すなわち、地磁気が存在しない場合の実際の磁気センサ２の出力値）にどれだけ近いかを示す指標である。例えば、算出オフセット値がそれまで使用されていたオフセット値と大きく異なる場合、このオフセット値は誤差を含むサンプリングデータＤを用いて算出されたおそれがある。そこでオフセット値算出部２２は、算出オフセット値がそれまで使用されていたオフセット値と近ければ近いほど、算出オフセット値の信頼度が高いと判定する。
【００４３】
また、オフセット値算出部２２は、算出オフセット値を用いて地磁気方向特定部２３が特定する地磁気の向きの変化と、ジャイロスコープ３の検出結果から特定される携帯機器１の向きの変化とを比較することによって、算出オフセット値の信頼度を評価してもよい。通常、地磁気方向特定部２３が特定する地磁気の向きの変化と、ジャイロスコープ３が検出する携帯機器１の向きの変化とは、一致するはずである。そのため、算出オフセット値を用いて特定された地磁気の向きが、ジャイロスコープ３が検出する携帯機器１の向きの変化から予測される向きと乖離した場合には、算出オフセット値の見積が正しくないおそれがあるので、算出オフセット値の信頼度が低いと推定する。
【００４４】
オフセット値算出部２２は、このようにして推定された信頼度の指標値を用いて、算出オフセット値に対して重み付けを行って、地磁気方向特定部２３が実際に地磁気の向きの特定に使用するオフセット値（更新後オフセット値）を決定してもよい。具体的に、算出オフセット値の信頼度が低い場合には、これまで記憶部１２に記憶されていたオフセット値（更新前オフセット値）を大きく変化させずに、出力値空間内において更新前オフセット値からわずかに算出オフセット値に近づいた位置に対応する値を、更新後オフセット値とする。逆に算出オフセット値の信頼度が高ければ、更新前オフセット値より算出オフセット値に近い値を更新後オフセット値とする。これにより、算出オフセット値の信頼度に応じて、実際の地磁気の向きの特定に利用するオフセット値を更新することができる。
【００４５】
以上の説明においては、３個の基準軸についての３個のオフセット値を常に一度に更新することとしたが、サンプリングデータ取得部２１がサンプリングデータＤを取得した際の携帯機器１の向きによっては、オフセット値算出部２２は、特定の基準軸についてのオフセット値は更新しないこととしてもよい。具体的に、ある１つの基準軸（注目軸）を回転中心とした回転は検知されているが、他の２軸を回転中心とした回転は検知されていない場合、当該注目軸の向きは変化していないことになる。このような場合には、注目軸のオフセット値に関する情報は得られていないので、注目軸のオフセット値を更新せずに、他の２軸のオフセット値だけを算出オフセット値を用いて更新する。具体例として、オフセット値算出部２２は、オフセット値算出に用いる複数のサンプリングデータＤを取得する間に各基準軸がどの程度回転したかを示す回転量の情報を算出する。この回転量の情報は、各基準軸の回転に関するジャイロスコープ３の出力を積算することで算出できる。例えばＸ軸についてのジャイロスコープ３の出力は、Ｘ軸回りの回転角、すなわちＸ軸に直交するＹ軸及びＺ軸それぞれの回転量を示しており、Ｙ軸についてのジャイロスコープ３の出力は、Ｙ軸回りの回転角、すなわちＹ軸に直交するＸ軸及びＺ軸それぞれの回転量を示している。このことから、Ｚ軸の回転量は、Ｘ軸及びＹ軸についてのジャイロスコープ３の出力を用いて算出することができる。そして、このようにして得られた回転量が所定値に満たない基準軸については、その向きがほとんど変化していないと考えられるので、当該基準軸のオフセット値を更新の対象から除外する。
【００４６】
また、オフセット値算出部２２は、各基準軸の回転量に関する情報を、前述した信頼度の推定に用いてもよい。具体的に、オフセット値算出部２２は、サンプリングデータＤの取得が行われている間の回転量が小さい基準軸については、当該サンプリングデータＤを用いて算出されたオフセット値の信頼度を低く評価し、逆に回転量が大きい基準軸については、オフセット値の信頼度を高く評価する。例えばＺ軸の回転量が小さい場合、磁気センサ２のＺ軸出力値はあまり変化していないため、Ｚ軸のオフセット値ｚｏの信頼度は比較的低いと考えられる。この場合、前述したような信頼度の情報を用いた重み付けを基準軸ごとに行うこととすれば、Ｚ軸のオフセット値ｚｏについては、更新前の値から大きく変化させないようにすることができる。
【００４７】
また、オフセット値算出部２２は、ジャイロスコープ３の検出結果を用いて、磁気センサ２のオフセット値だけでなく磁気センサ２の検出感度を算出してもよい。具体的に、ある１つの基準軸を注目基準軸として、この注目軸が地磁気の向きと一致する向きから地磁気と反対の向きまで１８０度以上回転したと判定された場合、その間の磁気センサ２の出力値は最大値と最小値の双方を含むことになる。この最大値と最小値を使用して、オフセット値算出部２２は、当該注目軸についての現在の検出感度に関するパラメタの値を算出し、記憶部１２に記憶されているパラメタを新たに算出した値に更新する。こうすれば、オフセット値算出部２２は、ジャイロスコープ３の検出結果により確実に携帯機器１の向きが１８０度以上変化したと判断される場合に、その間の磁気センサ２の出力を用いて検出感度に関するパラメタを更新することができる。
【００４８】
また、地磁気方向特定部２３は、ジャイロスコープ３の検出結果を用いて、特定された地磁気の向きの信頼度を評価してもよい。前述したように、通常、地磁気の向きの変化とジャイロスコープ３が検出する携帯機器１の向きの変化は対応するはずである。オフセット値の更新が行われていない状況で磁気センサ２の出力が変化したにも関わらず、ジャイロスコープ３の出力に対応する変化が見られない場合、このような磁気センサ２の出力の変化は、携帯機器１の向きが変化したことによる地磁気の向きの変化によって生じたものではなく、携帯機器１周囲の磁場環境の変化によって生じたものと推定される。このような場合、地磁気方向特定部２３は、現在の磁気センサ２の出力値に基づいて特定された地磁気の向きの情報について、その信頼度が低いことを示す指標値を併せて出力する。逆に地磁気の向きの変化と対応するジャイロスコープ３の検出結果が得られているときは、地磁気の向きを特定する際に、その地磁気の向きの情報の信頼度が高いことを示す指標値を出力する。アプリケーション実行部２４は、この信頼度の情報を参照して、自身が実行する処理において、地磁気方向特定部２３が特定する地磁気の向きの情報をどの程度考慮するかを決定する。例えばアプリケーション実行部２４は、地磁気方向特定部２３が特定する地磁気の向きの信頼度が低いと判断されているときには、この地磁気の向きの情報を無視することとしてもよい。
【００４９】
以上説明した本発明の実施形態に係る携帯機器１によれば、ジャイロスコープ３の検出結果を用いて磁気センサ２のキャリブレーションに使用するサンプリングデータＤの取得タイミングを決定するので、磁気センサ２の出力データのみに基づいてキャリブレーションを行う場合と比較して、精度のよいキャリブレーションを行うことのできるサンプリングデータＤを得ることができる。特に携帯機器１の周囲の磁場に変動が生じる場合、磁気センサ２の出力データだけを用いてキャリブレーションを行う方法では、このような磁場の変動を携帯機器１の姿勢変化に伴う地磁気の変動と誤認して、誤ったキャリブレーションを行うおそれがある。本実施形態では、磁気センサ２とは独立に携帯機器１の姿勢変化を検出するジャイロスコープ３の検出結果を利用するので、確実に携帯機器１の姿勢変化が生じた場合に新たなサンプリングデータＤを取得することができる。
【００５０】
なお、本発明の実施の形態は以上説明したものに限られない。例えば、以上の説明においてはジャイロスコープ３の検出結果を用いてサンプリングデータＤの取得タイミングを決定することとしたが、これに限らず、本発明の実施の形態に係る携帯機器は、当該携帯機器の姿勢を検出する他の種類のセンサを用いてサンプリングデータＤの取得タイミングを決定してもよい。具体例として、本発明の実施の形態に係る携帯機器は、重力加速度の向きの変化を検出する加速度センサの検出結果を利用してサンプリングデータＤの取得タイミングを決定してもよい。
【符号の説明】
【００５１】
１  携帯機器、２  磁気センサ、３  ジャイロスコープ、１１  制御部、１２  記憶部、１３  出力部、２１  サンプリングデータ取得部、２２  オフセット値算出部、２３  地磁気方向特定部、２４  アプリケーション実行部。
【図１】
0005927776.tif 000013
【図２】
0005927776.tif 000014
【図３】
0005927776.tif 000015
【図４】
0005927776.tif 000016
【図５】
0005927776.tif 000017