"磁界を発生させる部品を備えた機器に組み込まれ、互いに直交する3方向の磁気成分をそれぞれ検出する3次元磁気センサと、前記機器の姿勢を変化させた場合に前記3次元磁気センサから順次出力される磁気データを蓄積する蓄積手段と、前記蓄積手段に蓄積された前記複数の磁気データで示される座標が、前記部品の発生する磁界の成分を示す座標を中心点とする球面近傍に確率的に分布すると仮定して、前記複数の磁気データで示される3軸の座標と前記球面との誤差を最小化するように、前記球面の中心点を算出する中心点算出手段と、前記複数の磁気データで示される座標が、前記球面と曲面とを重ね合わせることで得られる前記球面以外の立体の表面近傍に確率的に分布すると仮定して、前記複数の磁気データで示される座標と前記立体の表面との誤差を表す目的関数を用いて、前記目的関数の表す誤差の値を最小化するときの、前記目的関数における前記曲面を表す成分に基づく第1評価値を算出し、前記第1評価値が所定の大きさ以下の場合に、前記中心点を、前記3次元磁気センサのオフセットとして採用する、歪判定手段とを備える地磁気測定装置。前記第1評価値が前記所定の大きさよりも大きな値となる場合に、利用者に前記機器の位置を変化させずに前記機器の姿勢を変化させるように促す手段を備えることを特徴とする請求項1に記載の地磁気測定装置。前記目的関数における前記曲面を表す成分は、前記複数の磁気データの各々に対応する各要素からなるベクトルであり、前記各要素は、第1評価行列を係数行列とする3変数の二次形式により表現される関数に対して、前記中心点を原点とする座標系において前記磁気データを表す3軸の値を代入することで得られる値であり、前記第1評価値は、前記第1評価行列のノルムであることを特徴とする請求項1または2に記載の地磁気測定装置。前記中心点算出手段は、前記複数の磁気データで示される座標が、3次元的な広がりを持って分布していることを評価する第2評価値を算出し、前記第2評価値が所定の大きさ以上の場合に、前記中心点を算出することを特徴とする請求項1乃至3のうちいずれか1項に記載の地磁気測定装置。前記中心点算出手段は、下記の第2目的関数f1xの値を最小にするxを、前記中心点として算出することを特徴とする請求項1乃至4のうちいずれか1項に記載の地磁気測定装置。前記目的関数は、前記第1評価行列をEとし、前記中心点をx0としたとき、Eを変数とするf2E、xで表され、前記第1評価値は、f2E、xを最小化するEのノルムであることを特徴とする請求項5に記載の地磁気測定装置。前記第2評価値は、下記の行列Aの最小固有値であることを特徴とする請求項5または6に記載の地磁気測定装置。磁界を発生させる部品を備えた機器に組み込まれ、互いに直交する2方向の磁気成分をそれぞれ検出する2次元磁気センサと、前記機器の姿勢を変化させた場合に前記2次元磁気センサから順次出力される磁気データを蓄積する蓄積手段と、前記蓄積手段に蓄積された前記複数の磁気データで示される座標が、前記部品の発生する磁界の成分を示す座標を中心点とする円周近傍に確率的に分布すると仮定して、前記複数の磁気データで示される2軸の座標と前記円周との誤差を最小化するように、前記円周の中心点を算出する中心点算出手段と、前記複数の磁気データで示される座標が、前記円周と第1曲線とを重ね合わせることで得られる前記円周以外の第2曲線の近傍に確率的に分布すると仮定して、前記複数の磁気データで示される座標と前記第2曲線との誤差を表す第3目的関数を用いて、前記第3目的関数の表す誤差の値を最小化するときの、前記第3目的関数における前記第1曲線を表す成分に基づく第3評価値を算出し、前記第3評価値が所定の大きさ以下の場合に、前記中心点を、前記2次元磁気センサのオフセットとして採用する、歪判定手段とを備える地磁気測定装置。磁界を発生させる部品を備えた機器に組み込まれ、互いに直交する3方向の磁気成分をそれぞれ検出する3次元磁気センサと、前記機器の姿勢を変化させた場合に前記3次元磁気センサから順次出力される磁気データを蓄積する蓄積手段と、を備える地磁気測定装置に用いられるオフセット決定方法であって、前記蓄積手段に蓄積された前記複数の磁気データで示される座標が、前記部品の発生する磁界の成分を示す座標を中心点とする球面近傍に確率的に分布すると仮定して、前記複数の磁気データで示される3軸の座標と前記球面との誤差を最小化するように、前記球面の中心点を算出し、前記複数の磁気データで示される座標が、前記球面と曲面とを重ね合わせることで得られる前記球面以外の立体の表面近傍に確率的に分布すると仮定して、前記複数の磁気データで示される座標と前記立体の表面との誤差を表す目的関数を用いて、前記目的関数の表す誤差の値を最小化するときの、前記目的関数における前記曲面を表す成分に基づく第1評価値を算出し、前記第1評価値が所定の大きさ以下の場合に、前記中心点を、前記3次元磁気センサのオフセットとして採用する、ことを特徴とする、オフセット決定方法。磁界を発生させる部品を備えた機器に組み込まれ、互いに直交する3方向の磁気成分をそれぞれ検出する3次元磁気センサと、前記機器の姿勢を変化させた場合に前記3次元磁気センサから順次出力される磁気データを蓄積する蓄積手段と、を備える地磁気測定装置に用いられるオフセット決定プログラムであって、前記蓄積手段に蓄積された前記複数の磁気データで示される座標が、前記部品の発生する磁界の成分を示す座標を中心点とする球面近傍に確率的に分布すると仮定して、前記複数の磁気データで示される3軸の座標と前記球面との誤差を最小化するように、前記球面の中心点を算出する処理と、前記複数の磁気データで示される座標が、前記球面と曲面とを重ね合わせることで得られる前記球面以外の立体の表面近傍に確率的に分布すると仮定して、前記複数の磁気データで示される座標と前記立体の表面との誤差を表す目的関数を用いて、前記目的関数の表す誤差の値を最小化するときの、前記目的関数における前記曲面を表す成分に基づく第1評価値を算出し、前記第1評価値が所定の大きさ以下の場合に、前記中心点を、前記3次元磁気センサのオフセットとして採用する処理とを、コンピュータに実行させるオフセット決定プログラム。ところで、3次元磁気センサが搭載される携帯電話等の機器の近くに、スピーカやパソコン等の磁界を発生させる物体が存在する場合、3次元磁気センサは、前述した地磁気及び内部磁界の他に、機器の外部の物体が発する外部磁界も検出する。一般的に、外部磁界は、外部磁界を発生させる物体と3次元磁気センサとの相対的位置関係等によって、向き及び大きさが変化する不均一な磁界である。従来の方法では、このような不均一な外部磁界の存在の有無や、不均一な外部磁界による影響の大きさを知ることは出来なかった。従って、従来の方法では、不均一な外部磁界が存在する環境下で算出された内部磁界のベクトルが大きな誤差を持つ場合であっても、外部磁界が存在しない環境下で計算された正しい値であると判断し、これをオフセットとして採用してしまうため、オフセットに大きな誤差を含むことがあるという問題が存在した。同様に、磁界のベクトルを互いに直交する2方向の成分に分解してスカラー量を検知するための2つの磁気センサモジュールを備え、2つの磁気センサモジュールが各々出力するスカラー量を2つの成分とする2次元のベクトルデータを出力する2次元磁気センサにおいても、オフセットに大きな誤差を含む場合があるという問題が存在した。そこで、本発明は上述した事情を鑑み、外部磁界の影響の程度を評価することより、オフセット値の採用の可否を決定することを解決課題とする。上述した課題を解決するため、本発明に係る地磁気測定装置は、磁界を発生させる部品を備えた機器に組み込まれ、互いに直交する3方向の磁気成分をそれぞれ検出する3次元磁気センサと、前記機器の姿勢を変化させた場合に前記3次元磁気センサから順次出力される磁気データを蓄積する蓄積手段と、前記蓄積手段に蓄積された前記複数の磁気データで示される座標が、前記部品の発生する磁界の成分を示す座標を中心点とする球面近傍に確率的に分布すると仮定して、前記複数の磁気データで示される3軸の座標と前記球面との誤差を最小化するように、前記球面の中心点を算出する中心点算出手段と、前記複数の磁気データで示される座標が、前記球面と曲面とを重ね合わせることで得られる前記球面以外の立体の表面近傍に確率的に分布すると仮定して、前記複数の磁気データで示される座標と前記立体の表面との誤差を表す目的関数を用いて、前記目的関数の表す誤差の値を最小化するときの、前記目的関数における前記曲面を表す成分に基づく第1評価値を算出し、前記第1評価値が所定の大きさ以下の場合に、前記中心点を、前記3次元磁気センサのオフセットとして採用する、歪判定手段とを備えることを特徴とする。この発明によれば、歪判定手段において、複数の磁気データで示される座標が、球面と曲面とを重ね合わせて得られる球面以外の歪んだ形状を有する立体の表面近傍に確率的に分布すると仮定して、複数の磁気データで示される座標と立体の表面との誤差を表す目的関数を導入する。この目的関数は、球面を表す成分と、曲面を表す成分とから形成される。そして、目的関数のうち曲面を表す成分による影響を評価する第1評価値によって、複数の磁気データで示される座標が、目的関数のうち球面を表す成分で表される球面の表面からどの程度離れているかを評価することができる。すなわち、第1評価値により、立体の形状が、球面の形状からどの程度の差異を有するものであるかつまり、どの程度の歪を有するかについての評価することができる。このような、歪判定手段を備えることにより、複数の磁気データが立体の表面近傍に分布するときに、立体が球面と実質的に同一の形状を有するほど近似している場合には、複数の磁気データで示される座標が球面近傍にも分布すると看做すことができるため、球面の中心点をオフセットとして採用する。一方、立体が球面とは大きく異なる歪んだ形状を有する場合には、複数の磁気データで示される座標が球面近傍に分布するとは看做せないため、球面の中心点をオフセットとして採用することを防止することが可能になる。すなわち、上述した地磁気測定装置は、中心点算出手段によって算出された中心点のうち、適切な値のみをオフセットとして採用することが可能であるという利点を有する。この結果、算出された球面の中心点の値に大きな誤差が含まれる場合には、オフセットとして採用しないので、誤った地磁気を検出することを防止できる。また、上述した地磁気測定装置において、前記第1評価値が前記所定の大きさよりも大きな値となる場合に、利用者に前記機器の位置を変化させずに前記機器の姿勢を変化させるように促す手段を備えることが好ましい。この発明によれば、上述した地磁気測定装置は、歪判定手段において第1評価値が所定の大きさよりも大きいと判定される場合、すなわち、3次元磁気センサから出力される複数の磁気データの示す座標が立体の表面近傍に分布するときに立体の形状が球面から大きな歪を有する場合、利用者に対して機器の位置を変化させずに機器の姿勢を変化させるように促す手段を備える。3次元磁気センサは、測定対象である地磁気の他に、機器に備えられた部品の発する内部磁界と、外部の物体の発する外部磁界とを検出する。外部磁界は、外部の物体と3次元磁気センサとの相互位置関係に依存して、方向及び大きさを変化させる不均一な磁界である。そして、この不均一な外部磁界の影響が大きい場合には、複数の磁気データは、球面とは大きく異なる歪んだ形状を有する立体の表面近傍に分布することになり、中心点算出手段により算出された中心点をオフセットとして採用することができなくなる。しかし、このような不均一な外部磁界も、外部磁界を発生させる外部の物体との相互位置関係が変化しない場合には、一定の方向を向いた一定の大きさの磁界にすぎない。つまり、3次元磁気センサの位置を変化させずに姿勢を変化させる場合、外部磁界は、3次元磁気センサによって、一定の大きさを有し方向のみを変化させる磁界として検出される。この場合、3次元磁気センサから出力される複数の磁気データで示される座標は、ある球面近傍に分布することになる。そして、この球面の中心点は、機器に備えられた部品の発する磁界内部磁界の成分を示す座標とほぼ同一の座標となるため、中心点算出手段によって算出された中心点をオフセットとして採用することが可能となる。従って、上述した地磁気測定装置は、利用者に機器の位置を変化させずに機器の姿勢を変化させるように促す手段を備えることにより、不均一な外部磁界が存在する場所でも、適切なオフセットを算出することができるような動作を利用者に促すことが可能となる。また、上述した地磁気測定装置において、前記目的関数における前記曲面を表す成分は、前記複数の磁気データの各々に対応する各要素からなるベクトルであり、前記各要素は、第1評価行列を係数行列とする3変数の二次形式により表現される関数に対して、前記中心点を原点とする座標系において前記磁気データ表した3軸の値を代入することで得られる値であり、前記第1評価値は、前記第1評価行列のノルムであることが好ましい。この発明によれば、歪判定手段で用いる目的関数における曲面を表す成分は、二次形式で表される関数に対して複数の磁気データで示される座標の各々に対応する値を代入して得た値を要素とするベクトルにより表現される。すなわち、曲面を表す成分は、複数の磁気データで示される座標の各々と球面との誤差の各々が、二次形式で表される同一の関数が示す曲面上に存在するという制約の下、誤差を表現するベクトルである。この曲面を表す成分によって、複数の磁気データで示される座標と、球面との誤差を、二次形式で表される関数が示す曲面によって吸収することができる。仮に、複数の磁気データで示される座標と球面との誤差を、何ら制約の無い変数を要素とするベクトルで表す場合、ベクトルの各要素、すなわち、複数の磁気データに対応する誤差の各々は、互いに独立なものとして表現される。そして、複数の磁気データで示される座標と球面との誤差を最小化した場合、このベクトルにより表される複数の誤差は、全体として対称性を有し、方向依存性の無い、ホワイトノイズとなる。これに対して、歪判定手段で用いる目的関数は、曲面を表す成分を導入することで、このようなホワイトノイズとは別に、曲面を表す成分に起因する誤差を表現することが可能となり、これまで一律にホワイトノイズとみなしていた誤差から、ホワイトノイズではない曲面を表す成分に起因する誤差を分離することが可能となった。従って、上述した地磁気測定装置は、複数の磁気データで示される座標と球面との誤差のうち、曲面を表す成分に起因する誤差を分離することにより、曲面を表す成分による影響を評価することが可能となり、地磁気測定装置が検出する磁気データに含まれる誤差が単なるホワイトノイズであるのか、それとも、ホワイトノイズ以外の何らかの外乱成分を含むのかを判断することができるのと同時に、そのホワイトノイズ以外の外乱成分の影響の大きさを評価することができるという利点を有する。また、上述した地磁気測定装置において、前記中心点算出手段は、前記複数の磁気データで示される座標が、3次元的な広がりを持って分布していることを評価する第2評価値を算出し、前記第2評価値が所定の大きさ以上の場合に、前記中心点を算出することが好ましい。この発明によれば、第2評価値により、複数の磁気データで示される座標の3次元的な広がりの大きさを評価することにより、正確な中心点を導出することができないような複数の磁気データに基づく中心点算出処理を行うことを防止することができる。これにより、不適切な中心点をオフセットとして採用することを避け、誤差の大きな地磁気の値を検出することを防止することができるという利点を有すると共に、不適切な磁気データに基づいた不適切な中心点を導出する中心点算出処理を行うことを未然に防止することで、正しいオフセットを採用するまでの時間を短縮することができるという利点を有する。また、上述した地磁気測定装置において、前記中心点算出手段は、下記の第2目的関数f1xの値を最小にするxを、前記中心点として算出することが好ましい。この発明によれば、簡単な計算によりオフセットの候補となる中心点を導出することができる。従って、上述した地磁気測定装置は、処理速度の向上という利点を有する。また、上述した地磁気測定装置において、前記目的関数は、前記第1評価行列をEとし、前記中心点をx0としたとき、Eを変数とするf2E、xで表され、前記第1評価値は、f2E、xを最小化するEのノルムであることが好ましい。この発明によれば、目的関数及び第1評価値を、簡単な計算によって求めることが可能である。従って、上述した地磁気測定装置は、短時間で適切なオフセットを採用することが可能であり、正確な地磁気の値を、地磁気測定装置の組み込まれた機器のCPUに過大な負荷を与えることなく、常時正確な地磁気を測定することができるという利点を有する。また、上述した地磁気測定装置において、前記第2評価値は、下記の行列Aの最小固有値であることが好ましい。この発明によれば、上述した地磁気測定装置は、簡単な計算により複数の磁気データで示される座標の3次元的な広がりの大きさを評価する第2評価値を算出することが可能である。従って、上述した地磁気測定装置は、処理速度の向上という利点を有する。次に、本発明に係る地磁気測定装置は、磁界を発生させる部品を備えた機器に組み込まれ、互いに直交する2方向の磁気成分をそれぞれ検出する2次元磁気センサと、前記機器の姿勢を変化させた場合に前記2次元磁気センサから順次出力される磁気データを蓄積する蓄積手段と、前記蓄積手段に蓄積された前記複数の磁気データで示される座標が、前記部品の発生する磁界の成分を示す座標を中心点とする円周近傍に確率的に分布すると仮定して、前記複数の磁気データで示される2軸の座標と前記円周との誤差を最小化するように、前記円周の中心点を算出する中心点算出手段と、前記複数の磁気データで示される座標が、前記円周と第1曲線とを重ね合わせることで得られる前記円周以外の第2曲線の近傍に確率的に分布すると仮定して、前記複数の磁気データで示される座標と前記第2曲線との誤差を表す第3目的関数を用いて、前記第3目的関数の表す誤差の値を最小化するときの、前記第3目的関数における前記第1曲線を表す成分に基づく第3評価値を算出し、前記第3評価値が所定の大きさ以下の場合に、前記中心点を、前記2次元磁気センサのオフセットとして採用する、歪判定手段とを備えることを特徴とする。この発明によれば、2次元磁気センサから出力される複数の磁気データが円周とは異なる第2曲線の近傍に分布するとき、この第2曲線の形状がどの程度、円周に近いかによって、円周の中心点をオフセットとして採用するか否を判定するので、算出された円周の中心点の値に大きな誤差が含まれる場合に、これをオフセットとして採用することを防止し、誤った地磁気を検出することを防止できる。次に、本発明に係る地磁気測定装置に用いられるオフセット決定方法は、磁界を発生させる部品を備えた機器に組み込まれ、互いに直交する3方向の磁気成分をそれぞれ検出する3次元磁気センサと、前記機器の姿勢を変化させた場合に前記3次元磁気センサから順次出力される磁気データを蓄積する蓄積手段と、を備える地磁気測定装置に用いられるオフセット決定方法であって、前記蓄積手段に蓄積された前記複数の磁気データで示される座標が、前記部品の発生する磁界の成分を示す座標を中心点とする球面近傍に確率的に分布すると仮定して、前記複数の磁気データで示される3軸の座標と前記球面との誤差を最小化するように、前記球面の中心点を算出し、前記複数の磁気データで示される座標が、前記球面と曲面とを重ね合わせることで得られる前記球面以外の立体の表面近傍に確率的に分布すると仮定して、前記複数の磁気データで示される座標と前記立体の表面との誤差を表す目的関数を用いて、前記目的関数の表す誤差の値を最小化するときの、前記目的関数における前記曲面を表す成分に基づく第1評価値を算出し、前記第1評価値が所定の大きさ以下の場合に、前記中心点を、前記3次元磁気センサのオフセットとして採用する、ことを特徴とする。この発明によれば、複数の磁気データが立体の表面近傍に分布するとき、この立体の形状がどの程度、球面に近いかによって、球面の中心点をオフセットとして採用するか否を判定するので、算出された球面の中心点の値に大きな誤差が含まれる場合にこれをオフセットとして採用することを防止し、誤った地磁気を検出することを防止できる。次に、本発明に係る地磁気測定装置に用いられるオフセット決定プログラムは、磁界を発生させる部品を備えた機器に組み込まれ、互いに直交する3方向の磁気成分をそれぞれ検出する3次元磁気センサと、前記機器の姿勢を変化させた場合に前記3次元磁気センサから順次出力される磁気データを蓄積する蓄積手段と、を備える地磁気測定装置に用いられるオフセット決定プログラムであって、前記蓄積手段に蓄積された前記複数の磁気データで示される座標が、前記部品の発生する磁界の成分を示す座標を中心点とする球面近傍に確率的に分布すると仮定して、前記複数の磁気データで示される3軸の座標と前記球面との誤差を最小化するように、前記球面の中心点を算出する処理と、前記複数の磁気データで示される座標が、前記球面と曲面とを重ね合わせることで得られる前記球面以外の立体の表面近傍に確率的に分布すると仮定して、前記複数の磁気データで示される座標と前記立体の表面との誤差を表す目的関数を用いて、前記目的関数の表す誤差の値を最小化するときの、前記目的関数における前記曲面を表す成分に基づく第1評価値を算出し、前記第1評価値が所定の大きさ以下の場合に、前記中心点を、前記3次元磁気センサのオフセットとして採用する処理とを、コンピュータに実行させることを特徴とする。この発明によれば、複数の磁気データが立体の表面近傍に分布するとき、この立体の形状がどの程度、球面に近いかによって、球面の中心点をオフセットとして採用するか否を判定するので、算出された球面の中心点の値に大きな誤差が含まれる場合にこれをオフセットとして採用することを防止し、誤った地磁気を検出することを防止できる。以下、本発明の実施の形態を説明する。[1.3次元磁気センサが検出する磁界の概要]本実施形態では、3次元磁気センサが検出する磁界として、検出対象である地磁気の他に、3次元磁気センサが搭載される機器の部品が発する磁界である内部磁界、及び機器の外部の物体が発する外部磁界の存在を想定している。これらの3種類の磁界は、磁界の向き、大きさ、及び均一性において、各々異なる性質を有するものである。つまり、これらの磁界を3次元磁気センサで検出する場合、3次元磁気センサの位置、姿勢が変化すると、3次元磁気センサから出力される磁界を示すベクトルデータの向き及び大きさも変化するが、この出力データの変化の仕方は、3種類の磁界の各々で差異を有する。以下、図1乃至図4を用いて、本実施形態において想定するこれら3種類の磁界の概要、及び、これらの磁界を3次元磁気センサが検出した場合に出力されるベクトルデータについて説明する。図1は、機器1に搭載された3次元磁気センサ60の周囲に存在する磁界の種類及び性質について説明する図である。3次元磁気センサ60の周囲に存在する磁界には、計測対象である地磁気Bgの他に、3次元磁気センサ60の搭載された機器1の部品が発する内部磁界Bi、及び機器1の周囲に存在する物体2が発する外部磁界Bxが存在する。地磁気Bgは、磁極北に向かう方向を持つベクトルであり、一様な向き及び大きさを有する磁界である。厳密には、地磁気Bgの向き及び大きさは、地域によって異なるが、例えば、異なる都市に移動する等の大きな移動をしない場合には、一様な向き及び大きさを有する。内部磁界Biは、機器1の部品が発する磁界であり、内部磁界Biの向きは、機器1から見て一定の方向を有する。すなわち、機器1上に搭載された3次元磁気センサ60から見た場合、機器1の姿勢を変化させても、内部磁界Biは、一定の方向及び大きさを有する磁界として検知される。例えば、利用者が機器1を手で持って手首を回すと、機器1の姿勢が変化する。このとき、地磁気Bgは磁極北を向いているので、3次元磁気センサ60で検出される地磁気Bgの3軸各々の成分は変化する。一方、3次元磁気センサ60において3次元磁気センサ60と内部磁界を発生する部品との相対的な位置関係は固定であるから、機器1の姿勢を変化させても、内部磁界Biの3軸各々の成分は一定である。外部磁界Bxは、外部の物体2の発する磁界であり、物体2からの距離及び方向によって、磁界の向き及び大きさが変化する不均一な磁界である。すなわち、機器1上に搭載された3次元磁気センサ60から見た場合、外部磁界Bxは、物体2と3次元磁気センサ60との相互位置関係に依存して、方向及び大きさを変化させる磁界として検知される。説明の便宜上、図1に示すような地上座標系ΣG及びセンサ座標系ΣSを導入する。図1に記載された各ベクトルの左上に付された添字Gは、当該ベクトルが地上座標系ΣGにおいて表現されたベクトルであることを意味する。地上座標系ΣGは、地上に固定された座標系であり、地上の任意の一点を原点とし、互いに直交する3つの方向、例えば、東、北、及び鉛直上向きを、それぞれx軸、y軸、及びz軸とする座標系である。ここで、地上座標系ΣGから見たときの3次元磁気センサ60の位置及び姿勢を、それぞれ、位置Ps、及び姿勢θsと表現することにする。センサ座標系ΣSは3次元磁気センサ60に固定された座標系であり、3次元磁気センサ60の有する3つの各々のセンサモジュールの出力する値を、それぞれ、x軸、y軸、z軸上にプロットするように設けられた座標系である。すなわち、3次元磁気センサ60が出力する磁気データは、センサ座標系ΣSのベクトルデータとして表現される。なお、地上座標系ΣGから見た場合、センサ座標系ΣSの原点は位置Psであり、姿勢は姿勢θsである。図2は、地磁気Bg及び内部磁界Biが、3次元磁気センサ60によってどのような値として検知されるかについて示す図である。すなわち、図2は、3次元磁気センサ60の地上座標系ΣGから見た姿勢θsをθ1~θNと変化させつつ磁界を測定した場合に、3次元磁気センサ60が出力するN個の磁気データq1~qNを、センサ座標系ΣSにおいてプロットした図であるNは5以上の自然数。なお、図2では、地磁気Bg及び内部磁界Biのみが存在し、外部磁界Bxは存在しない場合を想定している。また、図2に記載された各ベクトルの左上に付された添字Sは、当該ベクトルがセンサ座標系ΣSにおいて表されたベクトルであることを意味する。内部磁界Biは、センサ座標系ΣSにおいて、3次元磁気センサ60の位置Ps及び姿勢θsに依存しない、一定の方向及び大きさを持つベクトルSBiセンサ座標系ΣSの原点から中心点x0Gへと向かうベクトルとして表現される。一方、地磁気Bgは、センサ座標系ΣSにおいて、大きさは一定であるが、向きは3次元磁気センサ60の姿勢θsに伴い変化する。つまり、地磁気Bgは、センサ座標系ΣSにおいて、3次元磁気センサ60の姿勢θsに依存した向きを有する、一定の大きさのベクトルSBgθsとして表現され、θsを変化させた場合には、中心点x0Gを中心とする球面上に位置することになる。従って、3次元磁気センサ60が出力する磁気データq1~qNは、センサ座標系ΣSにおいて、中心点x0Gを中心点とし、地磁気Bgの大きさを半径とする、球面SG上に分布することになる。仮に、内部磁界Biの大きさが0の場合には、中心点x0Gと、センサ座標系ΣSの原点とは一致することになる。なお、3次元磁気センサ60は、測定誤差を有するため、磁気データq1~qNは、厳密には、球面SGの近傍に確率的に分布する。このような磁気データq1~qNから、球面SGの中心点x0Gの座標を計算することで、内部磁界を表すベクトルSBiを求めることができ、3次元磁気センサ60の出力値である磁気データq1~qNから内部磁界SBiを引き算することにより、地磁気SBgを計算することが可能となる。すなわち、3次元磁気センサ60で検出される磁気が地磁気Bg及び内部磁界Biである場合、球面SGの中心点x0Gは、3次元磁気センサ60のオフセットcに対応する。図3は、外部磁界Bxが存在する場合に、3次元磁気センサ60の位置PsをP1~PNと変化させると共に、姿勢θsをθ1~θNと変化させて磁界を測定したときの、3次元磁気センサ60が出力する磁気データq1~qNを、センサ座標系ΣSにおいてプロットした図である。外部磁界Bxは不均一な磁界であり、地上座標系ΣGにおける位置に応じて、向き及び大きさが変化する。従って、3次元磁気センサ60の位置Psを変化させた場合には、3次元磁気センサ60が検知する外部磁界Bxの向き及び大きさも変化する。このような外部磁界Bxは、センサ座標系ΣSにおいて、3次元磁気センサ60の姿勢θs及び位置Psに依存して方向及び大きさの両方を変化させるベクトルSBxθs、Psとして表現される。そして、3次元磁気センサ60の姿勢θs及び位置Psを変化させつつ測定した磁気データq1~qNは、内部磁界SBi、地磁気SBgθs、及び外部磁界SBxθs、Psのそれぞれのベクトルの和として出力される。従って、磁気データq1~qNは、センサ座標系ΣSにおいて、中心点x0Gを中心とする球面SGと、球面とは異なる歪んだ形状を有する曲面SXとを重ね合わせた立体SDの表面近傍に分布することになる。ここで、曲面SXは、センサ空間ΣSにおいて外部磁界SBxθs、Psを表す曲面であり、3次元磁気センサ60が出力する磁気データq1~qNのうち、内部磁界SBiと、外部磁界SBxθs、Psとの和を表す。立体SDは、球面とは異なる形状を有するため、このような立体SDの表面近傍に分布する磁気データq1~qNから、内部磁界SBiの値を示す中心点x0Gのベクトルを求めることは困難である。但し、外部磁界Bxが微弱である場合には、立体SDは球面に近い形状となる。図4Aは、外部磁界Bxが微弱である場合に、3次元磁気センサ60が出力する磁気データq1~qNを、センサ座標系ΣSにおいてプロットした図である。外部磁界Bxが微弱である場合、3次元磁気センサ60が出力する磁気データq1~qNは、地磁気を表すベクトルSBgθsの描く中心点x0Gを中心とする球面SGと、外部磁界を表すベクトルSBxθs、Psの描く曲面SXとの重ね合わせである、球面に近い形状の立体SDの表面近傍に分布することになる。この場合、磁気データq1~qNから、中心点x0Gとほぼ一致するベクトルを求めることが可能である。なお、不均一な外部磁界Bxは、3次元磁気センサ60によって、均一な磁界として検出される場合がある。例えば、不均一な外部磁界Bxが存在する場合であっても、N個の磁気データq1~qNを取得する際に、利用者が機器1を手で握って回転させるのではなく、機器1の位置厳密には、3次元磁気センサ60の位置を固定したままその姿勢のみを変化させる場合には、外部磁界Bxは、センサ空間ΣSにおいて、3次元磁気センサ60の姿勢θsに基づいて、その方向のみを変化させる一定の大きさのベクトルSBxθsとして表現される。この場合、3次元磁気センサ60から出力されるN個の磁気データq1~qNは、図4Bに示すように、センサ空間ΣSにおいて、ほぼ球面の形状を有する立体SDの表面近傍に分布する。そして、立体SDの形状がほぼ球面となる場合、その中心点は、球面SGの中心点x0Gすなわち、内部磁界SBiを表す座標とほぼ等しくなる。この場合、磁気データq1~qNから、中心点x0Gとほぼ一致するベクトルを求めることが可能である。そこで、本実施形態では、磁気データq1~qNに基づいて、外部磁界Bxの及ぼす影響の大きさ、すなわち、立体SDがどの程度球面に近い形状を有するものであるかについて評価し、評価結果に基づいて、当該球面の中心点をオフセットcとして採用するか否かを判定する。以下、具体的な方法について説明する。[2.機器構成及びソフトウェア構成]図5は、本発明の実施形態に係る機器1の構成を示すブロック図である。機器1は、各種の構成要素とバスを介して接続され装置全体を制御するCPU10、CPU10の作業領域として機能するRAM20、各種のプログラムやデータを記憶したROM30、通信を実行する通信部40、画像を表示する表示部50、地磁気を検出して地磁気データを出力する3次元磁気センサ60、を備える。3次元磁気センサ60は、X軸地磁気センサ61、Y軸地磁気センサ62、及びZ軸地磁気センサ63を備える。各センサは、MI素子磁気インピーダンス素子、MR素子磁気抵抗効果素子などを用いて構成することができる。地磁気センサI/F64は、各センサから出力信号をAD変換して磁気データを出力する。この磁気データは、X軸地磁気センサ61、Y軸地磁気センサ62、及びZ軸地磁気センサ63からの出力を、センサ座標系ΣSにおけるベクトルデータとして、センサ座標系ΣSの、x軸、y軸およびz軸の3成分によって示される。CPU10は、ROM30に格納されている磁気データ処理プログラム70を実行することによって、3次元磁気センサ60の出力からオフセットを導出するとともに、正確な地磁気の向き及び大きさの出力を行う。表示部50は、磁気データ処理プログラム70により出力された地磁気の向きを示す方位情報を、矢印等によって表示する。なお、磁気データ処理プログラム70は、地図アプリケーション等との連携を想定し、地磁気の向きを示す方位情報である矢印等を地図上に表示しても良い。CPU10、RAM20、3次元磁気センサ60、及び磁気データ処理プログラム70は、3次元磁気センサ60が検出する磁気データに基づき、正確な地磁気の向き及び大きさを示す地磁気データを算出する、地磁気測定装置として機能する。この地磁気データは、地上座標系ΣGにおいて磁極北に向かう方向を持つベクトルを、センサ座標系ΣSから見たベクトルデータとして、x軸、y軸およびz軸の3成分によって示される。磁気データ処理プログラム70は、バッファ管理モジュール71、オフセット導出モジュール72、及び方位導出モジュール73等のモジュール群で構成される。バッファ管理モジュール71は、3次元磁気センサ60から順次出力される磁気データをバッファに蓄積する。これら複数の磁気データの蓄積手段としては、RAM20を用いる。オフセット導出モジュール72は、バッファ管理モジュール71に蓄積されている複数の磁気データを用いて、オフセットを導出し、導出したオフセットを保持する。オフセットの保持手段としては、RAM20を用いる。方位導出モジュール73は、3次元磁気センサから順次出力される磁気データを、オフセット導出モジュール72によって保持されるオフセットにより補正して、正確な方位情報を生成する。なお、方位導出モジュール73は、適当な周期でバッファ管理モジュール71及びオフセット導出モジュール72を呼び出し、オフセット更新の指示を与える。[3.処理の流れ]図6は、オフセット導出処理の流れを示すフローチャートである。このフローチャートは、方位導出モジュール73が、バッファ管理モジュール71及びオフセット導出モジュール72を呼び出しオフセット更新の指示を与えた場合に実行される。方位導出モジュール73は、周期的にオフセット更新を指示する。これは、外部磁界や内部磁界が変化する場合があるからである。内部磁界は、機器1の内部状態が変化した場合、例えば、機器1に搭載された部品を流れる電流の大きさが変化した場合や、機器1に搭載された部品の着磁状況等の変化に伴い変化する。外部磁界は、不均一な磁界であるから、機器1が移動すれば、変化する。従って、オフセット更新を周期的に実行することによって、正確な地磁気を測定することが可能となる。ステップS100では、初期化処理及び磁気データ取得処理を行う。初期化処理では、バッファ管理モジュール71が呼び出され、RAM20に記憶した磁気データが廃棄される。なお、本実施形態では、磁気データの全部を廃棄するが、RAM20に蓄積されたデータのうち古い方から一定割合のデータのみを廃棄しても良い。そして、磁気データ取得処理において、3次元磁気センサ60から出力されるN個の磁気データq1~qNを、RAM20に格納するNは精度よくオフセットを導出するために必要な磁気データの規定測定回数を表す5以上の自然数。ステップS101では、磁気データ分布判定処理を行う。磁気データ分布判定処理は、ステップS100でRAM20等に蓄積されたN個の磁気データq1~qNが、後続するステップS102で実施される中心点算出処理において使用するデータとして適切なものであるか、すなわち、中心点算出のために適切な分布を有するものであるかを判定する。そして、判定結果が適切である場合にはステップS102に進み、適切でない場合には終了する。ステップS102では、中心点算出処理を行う。中心点算出処理は、N個の磁気データq1~qNがある球面Sの近傍に確率的に分布すると仮定して、当該球面Sの中心点x0をオフセットの候補として算出する。ステップS103では、歪判定処理を行う。歪判定処理は、N個の磁気データq1~qNに基づいて、N個のデータの分布の形状が、前述した図2及び図4のような、ある点を中心とする球面の近傍に分布するものであるかについて判定する。具体的には、歪判定処理は、N個の磁気データq1~qNが、中心点算出処理において算出した中心点x0を中心とする球面Sの近傍に分布するものであるかについて判定する。そして、磁気データq1~qNが中心点x0を中心とする球面Sの近傍に分布するものであると判断した場合、すなわち、磁気データq1~qNが図2及び図4に示すような球面に近い形状の立体の表面近傍に分布すると判断した場合には、中心点x0をオフセットcとして採用する。一方、磁気データq1~qNが図3に示すような球面以外の歪のある形状の立体の表面近傍に分布すると判断した場合には、中心点x0をオフセットcとして採用せず、終了する。なお、本実施形態では、ステップS101またはS103において、適切でないと判断された場合、処理を終了するが、本発明はこれに限定されるものではない。例えば、ステップS101またはS103において、適切でないと判定された場合、処理をステップS100に戻しても良いし、何らかのメッセージを表示部50に出力した上で処理を一旦停止させ、ユーザからの指示を待ってステップS100から処理を再開させても良い。N個の磁気データq1~qNを取得する際に、利用者が機器1を手で握って回転させるのではなく、機器1の位置を固定したままその姿勢のみを変化させるようにすると、外部磁界Bxの影響を低く抑えることができる図4B参照。そのため、ステップS103において適切でないと判定された場合には、機器1の位置を固定したまま回転させることを、利用者に対して指示しても良い。利用者に対する指示は、機器1の表示部50に画像や動画等を表示したり、音声等を用いたりすることで、行っても良い。以下において、これら、ステップS101~S103において行う、磁気データ分布判定処理、中心点算出処理、及び歪判定処理の詳細について説明する。なお、説明の便宜上、まずステップS102の中心点算出処理について説明し、次に、ステップS101の磁気データ分布判定処理について説明する。[3.1.中心点算出処理]図7を参照しながら、ステップS102の中心点算出処理について説明する。中心点算出処理では、3次元磁気センサ60が出力する磁気データq1~qNが、地磁気Bg及び内部磁界Biのみを検知し、不均一な外部磁界Bxの影響は受けないか、極めて小さいと仮定して処理を行う。具体的には、中心点算出処理は、センサ座標系ΣSにおいて、複数の磁気データq1~qNが、半径rの球面Sの近傍に確率的に分布すると仮定して、球面Sの中心点x0を算出する処理である。なお、不均一な外部磁界Bxの影響を受けていない場合、または外部磁界Bxの影響が小さい場合には、半径rは地磁気Bgの大きさを表し、球面S及びその中心点x0は、地磁気Bgを表す球面SG及びその中心点x0Gと等しくなる。また、不均一な外部磁界Bxが存在する場合であっても、機器1の位置厳密には、3次元磁気センサ60の位置を固定して姿勢のみを変化させつつ複数の磁気データq1~qNを測定した場合には、半径rは地磁気Bgを表すベクトルと外部磁界Bxを表すベクトルとを足し算したベクトルの大きさを表し、球面Sの中心点x0は、地磁気Bgを表す球面SGの中心点x0Gとほぼ等しくなる。以下では、特に断りの無い限り、ベクトルや座標等は、センサ空間ΣSにおいて表現されたものであるとする。複数の磁気データq1~qNが、半径rの球面S上に存在すると仮定する場合、各磁気データqiと、球面Sの中心点x0との距離はrであるため、以下の式1~3が成立する。ここで、複数の磁気データq1~qNの重心をqcとする。重心qcは、式4で表される。また、重心qcを原点とする重心座標系ΣCを導入する。この場合、センサ座標系ΣSにおいて表現された磁気データqi及び中心点x0と、重心座標系ΣCにおいて表現された磁気データCqi及び中心点Cx0との間に、以下の式6及び式7の関係が成立する。センサ座標系ΣSにおける球面Sの方程式1は、重心座標系ΣCにおいて式8として表現される。そして、式8に対して、式6及び7を代入することで、式9が得られる。式9のqiに対して、磁気データq1~qNの各々を代入した結果を、磁気データの個数Nで割り算することにより、以下の式10を得ることができる。そして、式10と、式9を展開した式11との差分を取ることで、変数qiに依存しない項を消去し、式12を得ることができる。このように、磁気データである変数qiが、球面S上に存在することを示す球面の公式である式1は、磁気データqi、重心qc、及び中心点x0から構成される式12に変形された。この式12の変数qiに対して、N個の磁気データq1~qNをそれぞれ代入することで得られるN個の方程式は、行列Xを用いて式13として表現される。式13は、全ての磁気データq1~qNの座標が、中心点x0を中心とする球面S上に完全に一致する場合には解を有する。しかし、3次元磁気センサ60の測定誤差等を考慮すると、全ての磁気データq1~qNの座標が、球面Sと完全に一致する位置に存在することは無いため、式13は解を持たない。そこで、統計的な手法により尤もらしい解を得るために、式17で表される誤差を吸収するベクトルδ1を導入する。このようなベクトルδ1のノルムを最小にするベクトルx、換言すれば、Tを最小化するようなベクトルxが、球面Sの中心点x0として尤もらしいものであるといえる。ここで、以下の式19で示される目的関数f1xを定義すると、目的関数f1xを最小化するxが、球面Sの中心点x0として尤もらしい値となる。中心点x0は、式21において示される行列Aが正則である場合には、式20により求めることができる。このように、球面近傍に磁気データq1~qNが確率的に分布すると仮定して、複数の磁気データq1~qNで示される3軸の座標と球面との誤差を最小化することで算出された球面Sの中心点x0が、オフセットcの候補となる。[3.2.磁気データ分布判定処理]次に、ステップS101における、磁気データ分布判定処理について説明する。前述した、中心点算出処理において中心点x0を求める方法は、磁気データq1~qNがセンサ座標系ΣSにおいて十分に3次元的な広がりを有することを前提とする。しかし、3次元磁気センサ60の姿勢θsは、ユーザが手で機器1を動かすことにより変化するものであるため、機器1の動かし方が不適切な場合には、磁気データq1~qNがセンサ座標系ΣSにおいて3次元的な広がりを有さない場合がある。例えば、図8に示すように、磁気データq1~qNがセンサ座標系ΣSの平面π上に2次元的に分布する場合には、中心点x0を算出することはできない。平面π上の円πCの近傍に磁気データq1~qNが存在する場合、球面Sの中心点x0は球面Sπ1の中心点x01であるかもしれないし、球面Sπ2の中心点x02であるかもしれず、中心点x0が直線πL上のどの位置であるか特定することが出来ないからである。従って、中心点x0を算出するためには、図9に示すように、磁気データq1~qNがセンサ座標系ΣSにおいて、3次元的に広がりを持って分布していることが必要となる。磁気データq1~qNがどの程度3次元的に分布しているかについての判定は、式21に示される行列Aを用いて行うことができる。行列Aは、磁気データq1~qNの分散共分散行列のN倍に相当する行列である。行列Aの固有値を大きい順番にλ1、λ2、λ3とし、それぞれの固有値に対応する大きさ1の固有ベクトルをu1、u2、u3とする。また、磁気データqiを、前述した重心qCを原点とする重心座標系ΣCにおいて表したベクトルをCqiと表す。このとき、固有値λjj=1、2、3は、固有ベクトルuj方向の分散σ2jに等しい。図9に示すように、各固有ベクトルu1~u3を重心座標系ΣCの原点qCを起点となるように配置する。このとき、例えばj=1の場合について考える。固有値λ1は、ベクトルCqiを、固有ベクトルu1へ射影した長さLi1の二乗Li12を、N個の磁気データCqii=1、2、...Nについて平均した値に等しくなる。つまり、磁気データq1~qNが、重心qCを原点とした場合に、固有ベクトルujの方向に対してどの程度の広がり有するかについては、対応する固有値λjの大きさにより判断できる。最小の固有値λ3に対応する固有ベクトルu3の方向が、最も広がりが小さい方向であるため、磁気データq1~qNが3次元的に分布しているといえるためには、最小固有値λ3の値が、一定の閾値λ0以上であればよい。磁気データ分布判定処理では、式21に示される行列Aの最小固有値λ3を磁気データの分布を評価する評価値とし、その値が閾値λ0以上であれば、磁気データq1~qNの分布が十分に3次元的であると判断し、ステップS102へと進み、前述した中心点算出処理を行う。一方、最小固有値λ3が、閾値λ0未満である場合には、磁気データq1~qNの分布は3次元的な広がりを有さない2次元的な分布であると判断する。この場合は、処理を終了する。[3.3.歪判定処理]次に、ステップS103の歪判定処理について説明する。図3に示したように、外部磁界Bxが一様ではなく、かつ、外部磁界Bxの影響が大きい場合には、3次元磁気センサ60の出力する磁気データq1~qNは、ステップS102で算出された中心点x0を中心とする球面Sの近傍には分布せず、球面とは異なる歪んだ形状の立体SDの表面近傍に分布することになる。この場合、ステップS102の中心点算出処理で算出された球面Sの中心点x0は、地磁気Bgを表す球面SGの中心点x0Gとは異なる座標となるため、オフセットとしての意味を有さず、球面Sの中心点x0をオフセットcとして採用することを避ける必要がある図10参照。但し、立体SDの形状が、球面Sの形状に十分に近い場合には、球面Sの中心点x0をオフセットcとして採用することができる。例えば、図4Aに示すように、外部磁界Bxの影響が小さい場合には、センサ座標系ΣSにおいて、3次元磁気センサ60の出力する磁気データq1~qNが、ステップS102で算出された中心点x0を中心とする球面Sの近傍に分布することになり、且つ、当該球面S及びその中心点x0は、地磁気Bgを表す球面SG及びその中心点x0Gとほぼ等しくなる図11C参照。また、図4Bに示すように、機器1の位置厳密には、3次元磁気センサ60を固定したままその姿勢のみを変化させて磁気データq1~qNを取得する等、外部磁界Bxが3次元磁気センサ60によってほぼ一様な磁界として検出される場合には、磁気データq1~qNが、ステップS102で算出された中心点x0を中心とする球面Sの近傍に分布することになる。そして、この場合、球面Sは地磁気Bgを表す球面SGとは異なるが、球面Sの中心点x0は、球面SGの中心点x0Gとほぼ等しくなる図11B参照。歪判定処理は、磁気データq1~qNが立体SDの表面近傍に分布すると仮定した場合に、立体SDの形状が球面Sの形状とどの程度近いものであるかを評価し、立体SDの形状が球面Sの形状に十分に近いと評価された場合に、球面Sの中心点x0をオフセットcとして採用する処理である。上述した中心点算出処理では、磁気データq1~qNが球面Sの近傍に分布するとした場合の磁気データq1~qNの座標と球面Sとの誤差を目的関数f1を用いて評価した。これに対して歪判定処理では、まず、磁気データq1~qNが、球面Sとは異なる歪んだ形状の立体SDの表面近傍に分布すると仮定し、式22に示す、磁気データq1~qNと立体SDとの誤差を表す目的関数f2E、xを導入する。この、目的関数f2E、xは、球面Sを表す成分Xx-qc-jの他に、式23に示す曲面を表す成分kEを有する。つまり、立体SDは、球面Sと、曲面を表す成分kEとの重ね合わせであり、曲面を表す成分kEの影響を評価することにより、立体SDの形状が球面Sの形状とどの程度近いものであるかを評価することができる。なお、曲面を表す成分kEによる影響の大きさすなわち、立体SDの形状が球面Sの形状とどの程度近いものであるかについては、後述する式28及び29で示される評価値f3Eに基づいて評価することができる。そして、評価値f3Eが閾値以下であれば、立体SDの形状は球面Sと看做せる範囲内であり、中心点算出処理で算出した中心点x0をオフセットcとして採用する。一方、評価値f3Eが閾値を上回る場合には、中心点x0をオフセットcとして採用しない。式23に示した通り、曲面を表す成分kEはn次元のベクトルである。曲面を表す成分kEの第i行目の要素keは、以下の式25で表される関数kepに対して、中心点x0を原点とする座標系から見た磁気データqiを表すベクトルqi-x0を代入することにより与えられる値である。関数kepは、式24に示す評価行列Eを係数行列とし、式26に示される3変数p=px、py、pzの二次形式で表される関数である。なお、評価行列Eは、式24に示したように、対称行列である。前述した式17乃至式19では、磁気データq1~qNの座標と、球面Sとの誤差を、ベクトルδ1によって吸収しようとした。ベクトルδ1を構成する1行目~N行目の各要素は、それぞれ独立した変数である。従って、ベクトルδ1によって誤差を吸収する場合には、各磁気データq1~qNと、球面Sとの誤差の各々は、互いに制約の無い独立した値となる。つまり、ベクトルδ1によって表されるN個の誤差は、それぞれが独立に確率的に定められるものであることを前提として表現されたものであり、N個の誤差は全体として、対称性を有し、かつ方向依存性の無いホワイトノイズであった。従って、式17及び式19においては、磁気データq1~qNの座標と、球面Sとの誤差を、対称性を持ち方向依存性の無いホワイトノイズとみなし、そのホワイトノイズである誤差を最小化するような解を求めるものであった。一方、式22が示す目的関数f2E、xは、磁気データq1~qNの座標と、球面Sとの誤差を、式25で示した二次形式で表される関数kepを各成分とするベクトルである曲面を表す成分kEによって吸収しようとするものである。3変数の二次形式は、変数が2次の項から構成される関数であり、このような関数により、3次元空間上の様々な曲面、例えば、直線、平面、柱面、球面、楕円面、錐面、1葉双曲面、2葉双曲面、及び各種放物面等を描くことができる。すなわち、式22は、磁気データq1~qNの座標と、球面Sとの誤差を、二次形式によって表される3次元空間上の曲面により吸収するものである。従って、各磁気データq1~qNと、球面Sとの誤差の各々は、互いに独立したものではなく、各磁気データq1~qNに対応するN個の誤差の全てが同一の関数kepにより表される曲面上に存在するという制約を持った値として表現される。目的関数f2E、xにより、各磁気データq1~qNに対応するN個の誤差が、それぞれ独立に確率的に定められるホワイトノイズの場合とは別に、滑らかな曲面を表す成分kEによる球面Sからの歪という性質を有する誤差についても表現することが可能となった。すなわち、目的関数f2E、xを導入することで、各磁気データq1~qNと球面Sとの誤差を、ホワイトノイズに起因する誤差と、曲面を表す成分kEによる歪に起因する誤差とに分離することが可能となった。なお、式19が示す目的関数f1x及び、式22が示す目的関数f2E、xは、純粋にセンサ座標系ΣSにおける幾何的な形状を表す方程式ではない。式19は、純粋に幾何的な意味を持つ球面の方程式である式1に対して、複数の磁気データq1~qNの値を代入して得た平均値である式10等により操作された結果として得られた式であり、幾何的な意味と共に、統計的な意味も有した式である。従って、式22についても、幾何的な意味と共に、統計的な意味も有する式であり、式22において現れる曲面を表す成分kEの要素である関数kepは、センサ座標系ΣSにおける曲面をそのまま表現するものではない。しかし、式19及び式22は、球面の方程式に基づいた演算により導出されたものに過ぎないため、これらの式から純粋に幾何的な形状を表す方程式を再現することが可能である。すなわち、関数kepは、センサ座標系ΣSにおける曲面を表すものと看做すことができる。目的関数f2E、xの値が0となる場合、すなわち、下記の式27が成立する場合、磁気データq1~qNは、立体SDの表面と完全に一致するように分布する。ここで、図10及び図11を参照しながら、磁気データq1~qNが立体SDの表面と完全に一致することを示す式27が成立する場合と、磁気データq1~qNが球面Sと完全に一致することを示す式13が成立する場合とについて検討する。式27が成立する場合、磁気データq1~qNは、図10に示すように、立体SDの表面に完全に一致するように分布する。そして、外部磁界Bxが不均一で且つその影響が大きい場合には、地磁気Bgを表す球面SGと外部磁界Bxを表す曲面SXとの重ね合わせである立体SDは、球面とは大きく異なる形状を有することになるため、立体SDの形状と球面Sの形状とは大きく異なり、式27のうち曲面を表す成分kEの影響が大きくなる。このような場合には、立体SD上に分布する磁気データq1~qNが球面S上に分布していると看做すことはできず、球面Sの中心点x0の値は、意味の無い値となる。さらに、このような場合には、球面Sと球面SGとは異なるものである可能性が高ため、球面Sの中心点x0と球面SGの中心点x0Gとが一致しない可能性が高い。このように、式27が成立し、且つ、曲面を表す成分kEの影響が大きい場合には、球面Sの中心点x0と球面SGの中心点x0Gとが一致しない可能性が高く、球面Sの中心点x0をオフセットcとして採用することを避ける必要がある。一方、式27が成立する場合であっても、式13も同時に成立する場合、すなわち、式27のうち曲面を表す成分kEが0となる場合には、球面Sの中心点x0をオフセットcとして採用することができる。例えば、図11Aに示すような、外部磁界Bxが存在しない場合を検討する。この例では、外部磁界Bxを表す曲面SXが存在しないため、地磁気Bgを表す球面SGと外部磁界Bxを表す曲面SXとの重ね合わせである立体SDは、球面SGと等しくなり、その形状は球面となる。従って、式27のうち曲面を表す成分kEが0となり、式13と式27とが等しくなる。つまり、球面S及び立体SDは、地磁気Bgを表す球面SGと等しくなる。このような場合、球面Sの中心点x0と球面SGの中心点x0Gとが一致するため、球面Sの中心点x0をオフセットcとして採用することができる。また、式27が成立する場合であっても、式13も同時に成立すると看做すことができる場合、すなわち、曲面を表す成分kEが小さい場合曲面を表す成分kE≒0となる場合には、球面Sの中心点x0をオフセットcと看做して採用することができる。例えば、図11Bに示すように、外部磁界Bxが3次元磁気センサ60によってほぼ一様な磁界として検出される場合を検討する。この例では、外部磁界Bxを表す曲面SXの形状を、中心点x0Gを中心とする球面と看做すことができるため、球面SGと曲面SXとの重ね合わせである立体SDの形状もほぼ球面となる。そのため、立体SDを表す式27のうち曲面を表す成分kEによる影響は小さくなる。つまり、式27と同時に式13も同時に成立すると看做すことができ、立体SDと球面Sとがほぼ等しいものとなる。よって、立体SD上に分布する磁気データq1~qNは、球面S上にも分布していると看做せるため、球面Sの中心点x0の値は意味を持つ値となる。また、球面Sと中心点x0Gを中心とする球面に近い形状の立体SDとは、ほぼ等しいものとなるため、球面Sの中心点x0と、球面SGの中心点x0Gとは、ほぼ同一の座標になる。従って、図11Bに示すような場合にも、球面Sの中心点x0をオフセットcとして採用することができる。また、式27が成立する場合であっても、式13も同時に成立すると看做すことができる場合として、図11Cに示すような、3次元磁気センサ60によって検出される不均一な外部磁界Bxの大きさが十分に小さい場合について検討する。この例では、外部磁界Bxを表す曲面SXの影響を無視することができる。つまり、地磁気Bgを表す球面SGと外部磁界Bxを表す曲面SXとの重ね合わせである立体SDは、地磁気Bgを表す球面SGとほぼ等しいと看做すことができるため、立体SDの形状は球面に近くなる。そのため、立体SDを表す式27のうち曲面を表す成分kEによる影響は小さくなる。つまり、式27と同時に式13も同時に成立すると看做すことができ、立体SDと球面Sとがほぼ等しいものとなる。よって、立体SD上に分布する磁気データq1~qNは、球面S上にも分布していると看做せるため、球面Sの中心点x0の値は意味を持つ値となる。また、球面Sと中心点x0Gを中心とする球面SGとは、ほぼ等しいものとなるため、球面Sの中心点x0と、球面SGの中心点x0Gとは、ほぼ同一の座標になる。従って、図11Cに示すような場合にも、球面Sの中心点x0をオフセットcとして採用することができる。このように、曲面を表す成分kEによる影響が小さい場合、立体SD上に分布する磁気データq1~qNは、球面S上にも分布すると看做すことができ、球面Sの中心点x0をオフセットcとして採用することができる。以下では、曲面を表す成分kEの影響の大きさを評価する方法について述べる。ここで、以下の式28及び29に示す評価値f3Eを、曲面を表す成分kEによる影響の大きさを評価する評価値として定義する。評価値f3Eの値が0となる場合には、式27は式13と一致し、立体SDが球面Sと等しくなる。また、評価値f3Eの値が0とならない場合であっても、一定の閾値δe以下であれば、立体SDが球面Sに近い形状を有するものであると判断できる。これらの場合には、磁気データq1~qNが球面Sの近傍に分布するため、前述した中心点算出処理により求められた球面Sの中心点x0をオフセットcとして採用することができる。なお、評価値f3Eの値が、閾値δe以下である場合、目的関数f2E、xを最小化する解x=x02は、球面Sの中心点x0とほぼ同一の値となるため、中心点x0をオフセットcとして採用する代わりに、目的関数f2E、xを最小化する解x=x02をオフセットcとして採用しても良い。以下に、評価値f3Eを求める方法について説明する。まず、式25に示した関数kepは、二次形式で表される関数であるため、以下の式30のように、ベクトルの内積として表現できる。また、n次元のベクトルである曲面を表す成分kEの第i行目の要素keは、式30の変数pに対して、ベクトルを代入した値であるため、式32によって示されるベクトルke2i、及び、式33によって表される評価行列Eの各成分を並べたベクトルeを用いて、式31のように表せる。ここで、式34で示す行列X2を導入する。行列X2は、第i行目に、式32によって示されるベクトルke2iを転置したものと、ベクトルを転置したものを並べた行列である。式34で表される行列X2を用いることで、式22に示される目的関数f2E、xを、式35で表される目的関数f4eに変形することができる。なお、式35におけるベクトルeは、式33に示したベクトルe2と、式37に示したベクトルe3とを並べたベクトルである。また、式37のベクトルe3は、式18に示す変数xから、式4に示した重心qcを引いたものである。式35で表される目的関数f4eを最小化する解e0は、以下の式38式で表現される連立方程式に対して、ガウス消去法や、コレスキー分解法などを適用することで、によって求められる。このようにして得た解e0に基づき、式24により評価行列Eを復元する。そして、式28に示した評価値f3Eの値、即ち、評価行列Eのノルムを求める。評価行列Eのノルムは、評価行列Eの固有値の絶対値の最大値に等しいため、ヤコビ法や、冪乗法により求めることができる。前述の通り、評価値f3Eの値が閾値δe以下である場合には、中心点算出処理により求められた球面Sの中心点x0、または、目的関数f2E、xを最小化する解x=x02のいずれも、オフセットcとして採用することができる。解x02は、解e0のうち、式36のe3に相当する部分を、式37に代入することにより求められる。[4.シミュレーション]中心点算出処理、及び歪判定処理の有効性を検証するために、シミュレーションを実施した。以下に、シミュレーションの前提条件及びその結果について述べる。なお、シミュレーションは、前述した3次元磁気センサ60の代わりに、2次元磁気センサを用いて行う。2次元磁気センサは、前述した地磁気Bg、外部磁界Bx、及び内部磁界Biの磁界のベクトルを、互いに直交する2方向の成分に分解してスカラー量を検知するための2つの磁気センサモジュールを備え、2つの磁気センサモジュールが各々出力するスカラー量を2つの成分とする2次元のベクトルデータを出力するものであり、Z軸センサ63を備えない点を除いて、3次元磁気センサ60と同様に構成される。[4.1.2次元での中心点算出処理及び歪判定処理]2次元磁気センサを用いる場合のオフセット導出処理初期化処理、磁気データ取得処理、磁気データ分布判定処理、中心点算出処理、及び歪判定処理は、3次元のベクトルデータの代わりに2次元のベクトルデータを用いる点を除いて、前述したオフセット導出処理と同様である。すなわち、2次元磁気センサを用いる場合のオフセット導出処理は、前述の式1~式38において、z軸成分を除外した2次元のセンサ座標系ΣS2における演算処理となる。この場合、中心点算出処理は、2次元のベクトルデータである磁気データq1~qNが、2次元平面内の円周Sの近傍に分布すると仮定して、円周Sの中心点x0を算出する処理である。また、歪判定処理は、2次元のベクトルデータである磁気データq1~qNが、2次元平面内の曲線SDの近傍に分布すると仮定した場合、曲線SDの形状が円周Sの形状からどの程度相違するかを判定する処理である。さらに、磁気データ分布判定処理は、磁気データq1~qNの分散を表す行列Aが2行2列の行列となるため、行列Aが有する2つの固有値のうち、小さい方の固有値が閾値未満である場合には、磁気データq1~qNの分布が2次元的な広がりを有さない1次元的な分布であると判断する処理である。以下では、前述の式1~式38を、2次元に適用するために必要な式の変形について述べる。まず、中心点算出処理において、目的関数f1xを表した式19、及び円周Sの中心点x0を求める式20において使用される、磁気データqi、磁気データの重心qc、及び中心点x0は、2次元空間においては、以下の式40乃至42となる。なお、ここで変数xは、x=x、yTで表される2次元のベクトルである。また、歪判定処理において、目的関数f2E,xを表した式22において使用される評価行列Eは、2次元空間においては、以下の式43となる。そして、式28の評価値f3E、及び式35の目的関数f4eを導出する過程で使用する、関数kep、ベクトルke2i、行列X2、及びベクトルeは、2次元空間においては、以下の式44~式49となる。[4.2.シミュレーションデータ]図12を参照しつつ、シミュレーションで使用する磁気データq1~qNの生成方法、及びその前提条件について説明する。まず、ケースAとして、図121に示すように、観測誤差が存在せず、外部磁界Bxによる磁界の不均一性も存在しない場合を想定した、磁気データq1A~qNAを準備した。具体的には、中心点をcsim=0,0Tとする半径rsimの円周Ssim上に、x軸からの角度φが1度刻みとなるように、磁気データq1A~qNAが観測された場合を想定した。なお、データ数Nは、N=181すなわち、角度φは、0≦φ≦180とし、磁気データq1A~qNAが円周Ssim上の上半分に均等に分布することとした。中心点csimは、真のオフセット、つまり、センサの測定誤差が存在せず、外部磁界Bxが一切存在しないか完全に一様であるという、シミュレーション上の前提条件として与えられた値である。このような中心点csimは、実際の観測によって得られる磁気データから算出することは不可能であるが、シミュレーションにおける前提条件として設定している。なお、中心点csimは、内部磁界Biを表すベクトルの座標値を意味するものであるが、シミュレーションでは便宜上、中心点csimの座標を0,0Tとしている。次に、ケースBとして、図122に示すように、ケースAで準備された磁気データq1A~qNAの各々の座標に対して、x軸方向及びy軸方向にそれぞれ正規乱数値を重畳させた磁気データq1B~qNBを準備した。この磁気データq1B~qNBは、磁気データq1A~qNAに対して観測誤差であるホワイトノイズが加えられた場合を想定している。また、ケースCとして、図123に示すように、ケースAで準備された磁気データq1A~qNAの各々の座標を半径方向に適当にずらすことにより、円周Ssim上とは異なる滑らかに歪んだ曲線SDを描くような磁気データq1C~qNCを準備した。[4.3.指標の算出]ケースA乃至Cにおいて設定した複数の磁気データに対して、前述した中心点算出処理及び歪判定処理を行った。具体的には、ケースA乃至Cの各々に対して、まず、複数の磁気データが、ある円周S上に存在すると仮定し、式20を用いて円周Sの中心点x0を算出し、次に、式28で与えられる評価値f3Eの値を算出した。また、比較のために、本出願人が特開2007-107921号公報で開示している式51に表される評価値f5の値を算出した。評価値f5は、磁気データq1~qNが、中心点をx0とする半径rの円周または球面からどの程度の誤差を有するかについて、判定するものである。なお、この評価値f5において使用される半径rは、前述した中心点x0と、各磁気データq1~qNとの距離に基づいて、式52により算出する。更に、中心点算出手段により算出された中心点x0と、シミュレーションの前提条件として与えられた真のオフセットを表す中心点csim=0,0Tとの距離を表す、誤差δxを、式53に基づいて算出した。なお、この誤差δxは、真のオフセットである中心点csimが既知であるシミュレーションにおいてのみ算出可能な値である。誤差δxにより、本実施形態における評価値f3E及び公知の評価値f5のそれぞれが示す評価値の妥当性について、判断する。[4.4.シミュレーション結果]図13のシミュレーション結果表を参照しつつ、シミュレーション結果について以下に述べる。まず、シミュレーション結果表の第1列に記載した、ケースA乃至Cにおける誤差δxについて説明する。誤差δxは、ケースAでは0.00となり、ケースBでは2.79となるのに対して、ケースCでは7.78という、ケースBと比較して大きな値となった。これは、ケースCにおいて、中心点算出処理により算出した中心点x0が、真のオフセットである中心点csimから大きな誤差を有するものであることを意味している一方、ケースBでは、中心点x0と真のオフセットである中心点csimとの誤差が、ケースCに比べて小さいことを意味している。すなわち、ケースCの場合、中心点x0は誤差が大きく、オフセットとして採用することを避ける必要があるのに対して、ケースBの場合は、中心点x0の誤差は小さく、オフセットとして採用しても構わないことを意味している。次に、シミュレーション結果表の第2列に記載された、ケースA乃至Cにおける評価値f3Eの値について説明する。評価値f3Eの値は、ケースAでは4.36×10-14となり、ケースBでは6.07×10-2となるのに対して、ケースCでは2.42×10-1というケースBと比較して大きな値となった。つまり、誤差δxが大きいケースCでは、評価値f3Eも大きな値を示し、誤差δxが小さいケースBでは、評価値f3Eの値も小さい値を示すこととなった。すなわち、評価値f3Eに基づいて、中心点x0と、真のオフセットである中心点csimとの誤差δxを評価することができた。シミュレーション結果表の第3列に記載された、ケースA乃至Cにおける公知の評価値f5の値について説明する。評価値f5の値は、ケースAでは7.25×10-14となり、ケースBでは3.14×10-3となるのに対して、ケースCでは3.01×10-3となった。誤差δxが大きな値を示すケースCよりも、誤差δxが小さな値を示すケースBの方が、評価値f5の値は大きい値を示した。すなわち、評価値f5によっては、中心点x0と真のオフセットである中心点csimとの誤差δxを評価することは不可能である。このように、誤差δxが大きな値を示すケースCでは、評価値f3E及び評価値f5の双方が大きな値を示したのに対して、誤差δxが小さな値を示すケースBでは、評価値f3Eは小さな値を示したのに対して、評価値f5の値は大きな値を示した。このことから、評価値f3Eが、中心点x0と真のオフセットである中心点csimとの誤差δxを評価し得る関数であることが分かった。換言すれば、評価値f3Eは、磁気データq1~qNが、円周からノイズを有して分布する場合と、円周とは異なる歪んだ形状を有する曲線上に分布するものである場合とを、判断することができる関数であることが分かった。[5.結論]以上に示したように、本実施形態では、オフセット導出処理として、複数の磁気データq1~qNが適切な分布を有するかを判定する磁気データ分布判定処理、複数の磁気データq1~qNからオフセットの候補である中心点x0を算出する中心点算出処理、及び、複数の磁気データq1~qNから算出された中心点x0をオフセットとして採用することが妥当であるかを判断する歪判定処理、の3つの処理を設けることにより、不適切なオフセットを採用することを防止して、内部磁界Biに近い値を示す適切な中心点x0のみをオフセットとして採用することを可能とした。すなわち、本実施形態のオフセット導出処理は、正確なオフセットによる、正確な地磁気の値の算出が可能になるという利点を有する。また、中心点算出処理では、複数の磁気データq1~qNが、中心点x0を中心とした球面Sの近傍に分布すると仮定することで、複数の磁気データq1~qNより中心点x0を算出し、これをオフセットの候補とした。このような中心点算出処理は、オフセットの候補を簡単な演算により算出できるという利点を有し、処理速度の向上という利点を有するものである。また、中心点算出処理では、中心点x0の算出にあたり、複数の磁気データq1~qNの重心qcを原点とする重心座標系ΣCにおいて、複数の磁気データq1~qNの値を表現することで計算を行った。これにより、3次元磁気センサ60の出力値である、センサ座標系ΣSにおける磁気データq1~qNの値をそのまま用いて計算する場合に比べて、データのサイズを小さくすることができ、処理に必要なメモリのサイズの節約をすると共に、処理速度を向上させるという利点を有する。また、磁気データ分布判定処理において、行列Aの最小固有値λ3を求め、その値が閾値λ0以上であることを判定することにより、磁気データq1~qNがセンサ座標系ΣSにおいて十分に3次元的な広がりを有することを判断することで、正確な中心点x0を導出することができないような磁気データq1~qNに基づく中心点算出処理を行うことを防止することを可能とした。これにより、不適切な中心点x0をオフセットとして採用することを避けることで、誤差の大きな地磁気の値を検出することを防止することができるという利点を有すると共に、不適切な磁気データq1~qNに基づいた不適切な中心点x0を導出する中心点算出処理を行うことを未然に防止することで、正しいオフセットを採用するまでの時間を短縮することができるという利点を有する。また、歪判定処理では、評価値f3Eを導入することで、磁気データq1~qNを表面近傍に有する立体SDの形状が、球面Sの形状にどの程度近いものであるかについて評価することができた。これにより、中心点算出処理において、磁気データq1~qNが球面Sの近傍に分布すると仮定して導出された中心点x0を、オフセットとして採用することの妥当性を評価することが可能となり、不適切なオフセットが採用されることを有効に防止することが可能となった。なお、評価値f3Eは、磁気データq1~qNが、ある球面Sから、単にホワイトノイズに相当する誤差を有して分布する場合と、球面Sとは異なる歪んだ形状の立体SDの表面近傍に分布する場合とを、区別することが可能としたという意義も有する。例えば、従来の評価値f5では、磁気データq1~qNが球面Sから誤差を有して分布する場合に、その誤差が、ホワイトノイズによるものであるのか、それとも、不均一な外部磁界Bxによるものであるのかを判断できなかった。つまり、磁気データq1~qNが球面Sから大きく歪んだ形状を有する立体SDの表面近傍に分布している場合であっても、単純に球面からのホワイトノイズとしての誤差として評価するにとどまっていた。これに対して、本実施形態の評価値f3Eは、ホワイトノイズによる誤差と、不均一な外部磁界Bxの影響による誤差とを区別することが可能である。従って、誤差が単なるホワイトノイズである場合に算出された中心点x0は、内部磁界Biを表すベクトルとの誤差が小さいためオフセットとして採用される。一方、不均一な外部磁界Bxによる誤差が存在する場合に算出された中心点x0は、内部磁界Biを表すベクトルSBiとの誤差が大きいためオフセットとしての採用を防止することができる。これにより、本実施形態のオフセット導出処理は、正しいオフセット算出までの測定回数の低減化を可能とすると共に、不正確な値をオフセットとして採用することを未然に防止することが可能になるという利点を有する。また、歪判定処理では、目的関数f2E、xにn次元のベクトルである曲面を表す成分kEを導入した。曲面を表す成分kEの第i行目の要素は、二次形式である関数kepに対して、磁気データqiから中心点x0を引き算したベクトルqi-x0を代入することにより与えられる値である。従来は、磁気データq1~qNの座標と、球面Sとの誤差を、式17に示すようなベクトルδ1によって吸収していた。ベクトルδ1を構成する1行目~N行目の各要素は、それぞれ独立した変数であるため、ベクトルδ1によって表現されるN個の誤差の各々は、互いに制約の無い独立した値となる。つまり、ベクトルδ1によっては表されるN個の誤差は、それぞれが独立に確率的に定められるものであり、N個の誤差は全体として、対称性を有し、かつ方向依存性の無いホワイトノイズであった。これに対して、本実施形態では、二次形式である関数kepを要素とするn次元のベクトルである曲面を表す成分kEにより、各磁気データq1~qNと、球面Sとの誤差の各々を表現することにより、各磁気データq1~qNに対応するN個の誤差の各々が、関数kepにより表される曲面上に存在するという制約を持った値として表現される。つまり、各磁気データq1~qNに対応するN個の誤差が、それぞれが独立に確率的に定められるホワイトノイズの場合とは別に、滑らかな曲面による球面Sからの歪という性質を有する誤差である場合についても表現することが可能となった。これにより、球面Sからの誤差から、ホワイトノイズに起因する部分と、曲面による歪に起因する部分とを分離することが可能となった。従って、本実施形態のオフセット導出処理は、磁気データq1~qNと球面Sとの誤差のうち、外部磁界Bxによる歪による影響の大きさを判断することができ、中心点算出処理において算出された中心点x0をオフセットとして採用することができない外部磁界Bxによる歪が存在する場合を、的確に判断することが可能になった。"