(57)【要約】【課題】磁気データ測定装置のオフセットを更新する。【解決手段】機器１は、内部磁界を発生させる部品と３次元磁気センサ６０とＣＰＵ１０とを備える。ＣＰＵ１０は、３次元磁気センサ６０から順次出力される複数の磁気データに基づいて、部品の発生する磁界の成分を表す３軸の座標であるオフセットを、旧オフセットから新オフセットに更新する。新オフセットは、複数の磁気データで示される座標を表面近傍に有する球面と磁気データで示される座標との誤差を第１誤差、複数の磁気データの分散を表す共分散行列の最小固有値に対応する正規化された固有ベクトルと旧オフセットから見た球面の中心の座標を示す更新ベクトルとの内積に第１係数を乗じた第２誤差、及び共分散行列の中間固有値に対応する正規化された固有ベクトルと更新ベクトルとの内積に第２係数を乗じた第３誤差を要素とする誤差ベクトルの大きさを最小化する球面の中心の座標として算出される。【選択図】図６
2012189323.tif 000002
【特許請求の範囲】
【請求項１】
磁界を発生させる部品を備えた機器に組み込まれ、互いに直交する３方向の磁気成分をそれぞれ検出する３次元磁気センサと、
前記３次元磁気センサから、３軸の座標系において表現される３次元のベクトルデータとして順次出力される磁気データを蓄積する蓄積手段と、
前記蓄積手段に蓄積された前記複数の磁気データに基づいて、前記磁気データのうち前記部品の発生する磁界の成分を表す３軸の座標であるオフセットを、旧オフセットから新オフセットに更新するオフセット更新手段と、
を備え、
前記オフセット更新手段は、
前記複数の磁気データの各々で示される３軸の座標として特定されるそれぞれの位置が、球面近傍に確率的に分布すると仮定した場合の、前記複数の磁気データで示される３軸の座標により特定されるそれぞれの位置と前記球面との誤差を第１誤差とし、
前記複数の磁気データの分散を表す共分散行列の最小固有値に対応する正規化された固有ベクトルと前記旧オフセットから見た前記球面の中心の座標を示す更新ベクトルとの内積に第１係数を乗じた値を第２誤差とし、
前記共分散行列の中間固有値に対応する正規化された固有ベクトルと前記更新ベクトルとの内積に対して第２係数を乗じた値を第３誤差とし、
前記第１誤差、前記第２誤差、及び前記第３誤差を要素とするベクトルを誤差ベクトルとしたときに、
前記誤差ベクトルの大きさを最小化する前記球面の中心の座標を新オフセットとして採用する、
ことを特徴とする磁気データ測定装置。
【請求項２】
前記磁気データで示される３軸の座標は、前記複数の磁気データで示される座標の平均値を表す座標を原点とする座標系において表される、
ことを特徴とする、請求項１に記載の磁気データ測定装置。
【請求項３】
前記中間固有値に対応する正規化された固有ベクトルを３次元のベクトルｕ２で表し、
前記最小固有値に対応する正規化された固有ベクトルを３次元のベクトルｕ３で表し、
Ｎを３以上の自然数として、前記複数の磁気データで示される座標を３次元のベクトルｑｉ（ｉ＝１、２、…、Ｎ）で表し、
前記旧オフセットを３次元のベクトルｃ０で表し、
前記複数の磁気データで示される座標の平均値を表す座標を３次元のベクトルｑｃで表し、
前記第１係数をβとし、前記第２係数をαとしたとき、
前記誤差ベクトルは、以下のδで表され、
前記新オフセットは、３次元のベクトルである変数ｘにより表される以下の目的関数ｆ２（ｘ）を最小化する前記変数ｘであり、３元１次連立方程式Ａ２（ｘ−ｑｃ）＝Ｘ２Ｔｊ２の解であることを特徴とする請求項２に記載の磁気データ測定装置。
【数１】
2012189323.tif 000019
【請求項４】
前記第１係数は、前記最小固有値の関数である、
ことを特徴とする、請求項１乃至３のうちいずれかの１項に記載の磁気データ測定装置。
【請求項５】
前記中間固有値をλ２とし、前記最小固有値をλ３とし、
ｋα及びｋβを正の定数としたとき、
前記第１係数は以下のβで表され、前記第２係数は以下のαで表される、
ことを特徴とする、請求項１乃至４のうちいずれかの１項に記載の磁気データ測定装置。
【数２】
2012189323.tif 000020
【請求項６】
磁界を発生させる部品を備えた機器に組み込まれ、互いに直交する３方向の磁気成分をそれぞれ検出する３次元磁気センサと、
前記３次元磁気センサから、３軸の座標系において表現される３次元のベクトルデータとして順次出力される磁気データを蓄積する蓄積手段と、
を備える磁気データ測定装置に用いられ、
前記蓄積手段に蓄積された前記複数の磁気データに基づいて、前記磁気データのうち前記部品の発生する磁界の成分を表す３軸の座標であるオフセットを、旧オフセットから新オフセットに更新するオフセット更新方法であって、
前記複数の磁気データの各々で示される３軸の座標として特定されるそれぞれの位置が、球面近傍に確率的に分布すると仮定した場合の、前記複数の磁気データで示される３軸の座標により特定されるそれぞれの位置と前記球面との誤差を第１誤差とし、
前記複数の磁気データの分散を表す共分散行列の最小固有値に対応する正規化された固有ベクトルと前記旧オフセットから見た前記球面の中心の座標を示す更新ベクトルとの内積に第１係数を乗じた値を第２誤差とし、
前記共分散行列の中間固有値に対応する正規化された固有ベクトルと前記更新ベクトルとの内積に対して第２係数を乗じた値を第３誤差とし、
前記第１誤差、前記第２誤差、及び前記第３誤差を要素とするベクトルを誤差ベクトルとしたときに、
前記誤差ベクトルの大きさを最小化する前記球面の中心の座標を新オフセットとして採用する、
ことを特徴とするオフセット更新方法。
【請求項７】
磁界を発生させる部品を備えた機器に組み込まれ、互いに直交する３方向の磁気成分をそれぞれ検出する３次元磁気センサと、
前記３次元磁気センサから、３軸の座標系において表現される３次元のベクトルデータとして順次出力される磁気データを蓄積する蓄積手段と、
を備える磁気データ測定装置に用いられ、
前記蓄積手段に蓄積された前記複数の磁気データに基づいて、前記磁気データのうち前記部品の発生する磁界の成分を表す３軸の座標であるオフセットを、旧オフセットから新オフセットに更新するオフセット更新プログラムであって、
前記複数の磁気データの各々で示される３軸の座標として特定されるそれぞれの位置が、球面近傍に確率的に分布すると仮定した場合の、前記複数の磁気データで示される３軸の座標により特定されるそれぞれの位置と前記球面との誤差を第１誤差とし、
前記複数の磁気データの分散を表す共分散行列の最小固有値に対応する正規化された固有ベクトルと前記旧オフセットから見た前記球面の中心の座標を示す更新ベクトルとの内積に第１係数を乗じた値を第２誤差とし、
前記共分散行列の中間固有値に対応する正規化された固有ベクトルと前記更新ベクトルとの内積に対して第２係数を乗じた値を第３誤差とし、
前記第１誤差、前記第２誤差、及び前記第３誤差を要素とするベクトルを誤差ベクトルとしたときに、
前記誤差ベクトルの大きさを最小化する前記球面の中心の座標を新オフセットとして採用する処理を、
コンピュータに実行させるオフセット更新プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、磁気データ処理装置、磁気データ処理方法及び磁気データ処理プログラムに関する。
【背景技術】
【０００２】
近年、携帯電話等の携帯機器や、自動車等の移動体に搭載され、地磁気を検出する３次元磁気センサが開発されている。一般に、３次元磁気センサは、磁界のベクトルを互いに直交する３方向の成分に分解してスカラー量を検知するための３つの磁気センサモジュールを備え、３つの磁気センサモジュールが各々出力するスカラー量を３つの成分とする３次元のベクトルデータを出力する。
【０００３】
３次元磁気センサが搭載される携帯電話等の機器は、着磁性を有する各種金属や、電気回路等、磁界を発生させる部品が備えられることが多い。この場合、３次元磁気センサが出力するベクトルデータは、地磁気を表すベクトルの他に、機器に搭載された部品が発する磁界等を表すベクトルも含む値となる。従って、地磁気の値を正確に知るためには、３次元磁気センサが出力するベクトルデータから、機器の部品が発する内部磁界等の外乱成分を表すベクトルを取り除く補正処理が必要となる。
このように、検出対象である地磁気の正確な値を得るために、補正処理において、３次元磁気センサから出力されるデータから取り除かれる外乱成分の値をオフセットと呼ぶ。
【０００４】
内部磁界は、機器の部品が発する磁界である。すなわち、内部磁界は、機器に対して一定の方向を向き、一定の大きさを有する磁界である。このような内部磁界は、機器に搭載された３次元磁気センサから見た場合には、機器をどのような姿勢に変化させた場合であっても、一定の方向と一定の大きさを有するベクトルとして表される。
一方、地磁気は、磁極北に向かう水平成分と伏角方向の鉛直成分とを有する磁界であり、地面に対して一定の方向と一定の大きさとを有する一様な磁界である。従って、地面に対して機器の姿勢を変化させる場合には、機器から見た地磁気の方向も変化することになる。すなわち、機器に搭載された３次元磁気センサから見た場合、地磁気は、機器の姿勢の変化に伴い向きが変化する一定の大きさを持ったベクトルとして表される。
このような地磁気及び内部磁界の性質を利用すれば、３次元磁気センサを上下左右方向に回転させて３次元的に大きく姿勢変化させつつ複数の磁気データを取得した場合、３次元磁気センサからの出力データを、磁気センサから見て一定の方向及び大きさを有する内部磁界を表す成分と、一定の大きさを有するが３次元磁気センサの姿勢変化に伴って方向が変化する地磁気を表す成分とに分離することができる。そして、この内部磁界を表す成分であるベクトルをオフセットとして出力データから取り除く補正処理を行うことで、正確な地磁気の値を得ることができる。
【０００５】
ところで、３次元磁気センサが、自動車等のように左右方向のみに姿勢を変化させ、上下方向の姿勢変化が小さい機器に搭載されている場合には、十分な３次元的な姿勢変化が生じないため、３次元磁気センサからの出力データのうち、内部磁界と地磁気とを正確に分離することができず、正確なオフセットを算出できない。また、３次元磁気センサが携帯電話等の機器に搭載される場合、ユーザによる機器の動かし方が不適切で、機器が３次元的な姿勢変化をしなければ、正確なオフセットを算出できない。
特許文献１には、このような機器の姿勢変化が不十分な場合に、３次元磁気センサを姿勢変化させつつ取得した複数の磁気データの他に、過去に算出したオフセットを用いることにより、正確なオフセットを算出する方法が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−２４０２７０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、特許文献１に開示されたオフセット算出方法は、計算量が多いため、オフセット算出の高速化が困難であり、また、オフセット算出に多くのメモリを使用するという課題が存在した。
そこで、本発明は上述した事情を鑑み、３次元磁気センサが搭載された機器の姿勢変化が不十分な場合にも、簡易な計算で高速に正確なオフセットを算出することを解決課題とする。
【課題を解決するための手段】
【０００８】
以下、本発明について説明する。なお、本発明の理解を容易にするために本実施形態及び添付図面の参照符号を括弧書きにて付記するが、それにより本発明が本実施形態に限定されるものではない。
上述した課題を解決するため、本発明に係る磁気データ測定装置は、磁界を発生させる部品を備えた機器（１）に組み込まれ、互いに直交する３方向の磁気成分をそれぞれ検出する３次元磁気センサ（６０）と、前記３次元磁気センサ（６０）から、３軸の座標系において表現される３次元のベクトルデータとして順次出力される磁気データ（ｑ１〜ｑＮ）を蓄積する蓄積手段（２０）と、前記蓄積手段（２０）に蓄積された前記複数の磁気データ（ｑ１〜ｑＮ）に基づいて、前記磁気データ（ｑ１〜ｑＮ）のうち前記部品の発生する磁界の成分（Ｂｉ）を表す３軸の座標であるオフセット（ｃ）を、旧オフセット（ｃ０）から新オフセット（ｃ１）に更新するオフセット更新手段と、を備え、前記オフセット更新手段は、前記複数の磁気データ（ｑ１〜ｑＮ）の各々で示される３軸の座標として特定されるそれぞれの位置が、球面近傍に確率的に分布すると仮定した場合の、前記複数の磁気データ（ｑ１〜ｑＮ）で示される３軸の座標により特定されるそれぞれの位置と前記球面との誤差を第１誤差（δ１）とし、前記複数の磁気データ（ｑ１〜ｑＮ）の分散を表す共分散行列（Ａ）の最小固有値（λ３）に対応する正規化された固有ベクトル（ｕ３）と前記旧オフセット（ｃ０）から見た前記球面の中心の座標を示す更新ベクトル（ｋ）との内積に第１係数（β）を乗じた値を第２誤差（δ３）とし、前記共分散行列（Ａ）の中間固有値（λ２）に対応する正規化された固有ベクトル（ｕ２）と前記更新ベクトルとの内積に対して第２係数（α）を乗じた値を第３誤差（δ２）とし、前記第１誤差（δ１）、前記第２誤差（δ３）、及び前記第３誤差（δ２）を要素とするベクトルを誤差ベクトル（δ）としたときに、前記誤差ベクトル（δ）の大きさを最小化する前記球面の中心の座標を新オフセット（ｃ１）として採用する、ことを特徴とする。
【０００９】
磁界を発生させる部品を備えた機器に組み込まれる３次元磁気センサは、部品からの内部磁界の影響を受ける。正確な地磁気を検出するためには、内部磁界をキャンセルするために３次元磁気センサから出力される磁気データにオフセットを用いた補正を施す。オフセットを算出するためには、複数の磁気データが３次元的に球面近傍に分布するように機器を動かすことが望ましい。しかしながら、機器の動かし方によっては、複数の磁気データが２次元的に分布したり、１次元的に分布することもあり得る。
この発明によれば、第１誤差を含む誤差ベクトルの大きさを最小化するため、新オフセットは、複数の磁気データで示される座標を表面近傍に有する球面の中心の座標としての意味を有する。しかし、複数の磁気データが理想的に２次元的に分布する場合、第１誤差のみを考慮して（第２誤差及び第３誤差を無視して）、誤差ベクトルの大きさを最小化しても、誤差ベクトルを最小化する点として与えられる球面の中心の座標（つまり、新オフセット）は、磁気データが分布する２次元平面に直交するある直線上の任意の点となり、１点に特定することができない。
磁気データは３軸の座標を示すので、複数の磁気データの分散を表す共分散行列は、３行３列の行列となる。この共分散行列から３つの固有ベクトルと３つの固有値が得られる。３つの固有ベクトルの一つは、複数の磁気データが最も大きく分布する方向を表している。この固有ベクトルに対応する固有値は最大固有値となり、逆に、複数の磁気データが最も小さく分布する方向の固有ベクトルに対応する固有値が最小固有値となる。複数の磁気データが理想的に２次元的に分布する場合、最小固有値の値は０に限りなく近い値を有し、最小固有値に対応する固有ベクトルと、複数の磁気データが分布する２次元平面に直交する直線とは、平行になる。この場合、第１誤差のみを考慮して誤差ベクトルの大きさを最小化する点は、最小固有値に対応する固有ベクトルと平行なある直線上の任意の点となるため、当該点が示す座標は、最小固有値に対応する固有ベクトル方向についての情報を有さない（または不正確な情報しか有さない）。
第２誤差は、最小固有値に対応する固有ベクトルと、旧オフセットから見た新オフセットの座標を示す更新ベクトルとの内積に第１係数を乗じた値である。この第２誤差を０に限りなく近づける場合（かつ、第１係数が一定の大きさを有する場合）、最小固有値に対応する固有ベクトルと更新ベクトルとは直交し、更新ベクトルは、最小固有値に対応する固有ベクトル方向の成分を含まないことになる。そして、複数の磁気データが理想的に２次元的に分布する場合、第１誤差の他に第２誤差も考慮して誤差ベクトルの大きさを最小化する点を新オフセットとすることで、旧オフセットを新オフセットに更新する更新ベクトルは、不正確な情報（最小固有値に対応する固有ベクトル方向の成分）を含まない、正確な情報のみに基づいて生成されたベクトルとなる。従って、複数の磁気データの分布がある方向につぶれて２次元的に分布する場合には、第１誤差及び第２誤差を考慮した誤差ベクトルを最小化する点を新オフセットとすることで、正確な情報に基づいたオフセット更新が可能となる。
さらに、複数の磁気データの分布がさらにつぶれて１次元的に分布する場合は、中間固有値について最小固有値と同様に扱えばよい。第３誤差は、中間固有値に対応する固有ベクトルと更新ベクトルとの内積に対して第２係数を乗じた値であるから、第３誤差が０に限りなく近い値となるように新オフセットを定めたとすれば、中間固有値に対応する固有ベクトルの成分は更新ベクトルに反映されない。これにより、更新ベクトルの精度を向上させることができる。
このように、本発明は、第１誤差、第２誤差、及び第３誤差を要素とする誤差ベクトルの大きさを最小化するように新オフセットを算出するから、複数の磁気データが２次元的あるいは１次元的に分布する場合に、信頼性の低い方向については、更新ベクトルの成分を小さくし、新オフセットに反映させる度合いを調整する。つまり、信頼性の低い方向については、旧オフセットを利用する。これによって、新オフセットの精度を大幅に向上させることができる。
【００１０】
また、上述した磁気データ測定装置において、前記磁気データで示される３軸の座標は、前記複数の磁気データで示される座標の平均値を表す座標を原点とする座標系において表される、ことが望ましい。
【００１１】
この発明によれば、複数の磁気データで示される座標を、複数の磁気データで示される座標の平均値を表す座標（以下、「重心」と呼ぶ）を原点とする重心座標系から見たベクトルとして表現したうえで新オフセットの算出を行った。
複数の磁気データで示される座標は、重心を中心に広がりを有して分布している。従って、複数の磁気データで示される座標を重心座標系の原点から表したベクトルの大きさは、センサ座標系の原点から表したベクトルの大きさに比べて小さくなる傾向がある。これにより、複数の磁気データで示される座標を表すデータの値を小さくすることが可能でありメモリサイズの小さい変数型で表現することが可能である。
このように、本発明の磁気データ測定装置は、新オフセットの算出に要するメモリ使用量の低減化が可能であるという利点を有する。
【００１２】
また、上述した磁気データ測定装置において、前記中間固有値に対応する正規化された固有ベクトルを３次元のベクトルｕ２で表し、前記最小固有値に対応する正規化された固有ベクトルを３次元のベクトルｕ３で表し、Ｎを３以上の自然数として、前記複数の磁気データで示される座標を３次元のベクトルｑｉ（ｉ＝１、２、…、Ｎ）で表し、前記旧オフセットを３次元のベクトルｃ０で表し、前記複数の磁気データで示される座標の平均値を表す座標を３次元のベクトルｑｃで表し、前記第１係数をβとし、前記第２係数をαとしたとき、前記誤差ベクトルは、以下のδで表され、前記新オフセットは、３次元のベクトルである変数ｘにより表される以下の目的関数ｆ２（ｘ）を最小化する前記変数ｘであり、３元１次連立方程式Ａ２（ｘ−ｑｃ）＝Ｘ２Ｔｊ２の解であることが望ましい。
【数１】
2012189323.tif 000003
【００１３】
この発明によれば、新オフセットを、３元１次連立方程式Ａ２（ｘ−ｑｃ）＝Ｘ２Ｔｊ２の解として算出することできる。５元１次連立方程式を解くことでオフセットを算出していた特許文献１に開示されたオフセット算出方法に比べて、本発明における新オフセット算出方法は、演算回数を約２２％に抑えることが可能となった。これにより、新オフセット算出の更なる高速化が可能となるとともに、新オフセット算出に必要なメモリ使用量の低減化が可能となった。
すなわち、本発明の磁気データ測定装置は、メモリサイズの小さな簡易な機器に対しても実装が可能であるという利点を有すると共に、オフセット算出の高速化が可能であるという利点を有する。
【００１４】
また、上述した磁気データ測定装置において、前記第１係数は、前記最小固有値の関数であることが望ましい。
【００１５】
この発明によれば、第１係数を最小固有値の関数とするので、最小固有値に応じて第１係数を定めることができる。最小固有値は、複数の磁気データの３次元的な分布の程度の指標と考えることができるので、３次元的な分布の程度に応じて、最小固有値に対応する固有ベクトル方向の成分を更新ベクトルへ反映させる程度を調整することができる。
例えば、最小固有値の関数は、最小固有値が大きな値になるにつれ、第１係数が０に漸近するものであってもよい。あるいは、第１係数は２値で与えられ、最小固有値が閾値以上の場合に第１値となり、最小固有値が閾値未満の場合に第２値としてもよい。ここで、第１値は第２値よりも小さく０に近い値とすればよい。
これらの場合、最小固有値が大きな値のときには、第１係数が０に近い値となる。第２誤差を最小化して新オフセットを算出するときに、更新ベクトルと最小固有値に対応する固有ベクトルとの内積が０ではない大きな値を有していたとしても、第１係数が０に近い値であれば、第２誤差を最小化することができる。すなわち、最小固有値が大きな値を有し、最小固有値に対応する固有ベクトル方向の情報の正確性が高い場合には、当該方向の成分を、更新ベクトルに反映させることができる。
一方、最小固有値が小さな値の場合、第１係数は大きな値となる。この場合、更新ベクトルと最小固有値に対応する固有ベクトルとが直交し、それらの内積が０に近い小さな値をとならい限りは、第２誤差を最小化することは出来ない。
このように、第２誤差により表現される、固有ベクトルと更新ベクトルとが直交するという制約条件は、最小固有値の大きさに基づいて緩和される。従って、新オフセットは、３次元磁気センサから出力される複数の磁気データにより算出される球面の中心点の座標の有する情報のうち、最小固有値に対応する固有ベクトル方向の情報が正確である場合にはこれを利用し、不正確である場合にはこれを利用しないことが可能となる。
同様に、中間固有値に対応する固有ベクトル方向の情報についても、その情報の正確さに応じた利用をすることを可能となる。
このように、本発明の磁気データ測定装置は、３次元磁気センサから出力される複数の磁気データにより算出される球面の中心点の座標の有する情報のうち、正確な情報に基づいて新オフセットを算出することが可能となり、正確なオフセットによる正確な地磁気の算出を可能にするという利点を有する。
【００１６】
また、上述した磁気データ測定装置において、前記中間固有値をλ２とし、前記最小固有値をλ３とし、ｋα及びｋβを正の定数としたとき、前記第１係数は以下のβで表され、前記第２係数は以下のαで表される、ことが好ましい。
【数２】
2012189323.tif 000004
【００１７】
この発明によれば、最小固有値λ３及び中間固有値λ２の大きさに応じて、第１係数β及び第２係数αの値が決定されるため、複数の磁気データにより算出される球面の中心点の座標の有する情報を、固有ベクトル方向の情報の正確さに応じて利用をすることを可能とする。
このように、本発明の磁気データ測定装置は、３次元磁気センサから出力される複数の磁気データにより算出される球面の中心点の座標の有する情報のうち、正確な情報に基づいて新オフセットを算出することが可能となり、正確なオフセットによる正確な地磁気の算出を可能にするという利点を有する。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施形態に係る３次元磁気センサが検出する磁界の概要を説明する概念図である。
【図２】本発明の実施形態に係る３次元磁気センサが検出する地磁気と内部磁界とについて説明する概念図である。
【図３】本発明の実施形態に係る３次元磁気センサが検出する地磁気と内部磁界とに基づいて内部磁界の値を算出する方法について説明する概念図である。
【図４】本発明の実施形態に係る３次元磁気センサが検出する磁気データの分布が不十分な場合について説明する概念図である。
【図５】本発明の実施形態に係る磁気データ分布指標算出処理について説明する概念図である。
【図６】本発明の実施形態に係る３次元磁気センサが搭載される機器の構成を示すブロック図である。
【図７】本発明の実施形態に係る処理の流れを示したフローチャートである。
【図８】本発明の実施形態に係る３次元磁気センサが検出する磁気データの分布が不十分な場合のオフセット更新処理について説明する概念図である。
【図９】本発明の実施形態に係る３次元磁気センサが検出する磁気データの分布が不十分な場合のオフセット更新処理の更新ベクトルの性質について説明する概念図である。
【発明を実施するための形態】
【００１９】
以下、本発明の実施の形態を説明する。
【００２０】
［１．  ３次元磁気センサが検出する磁界の概要］
図１に示すように、本実施形態では、３次元磁気センサ６０が検出する磁界として、検出対象である地磁気Ｂｇの他に、３次元磁気センサが搭載される機器の部品が発する磁界である内部磁界Ｂｉが存在する場合を想定する。
【００２１】
地磁気Ｂｇは、磁極北に向かう水平成分と伏角方向の鉛直成分とを有するベクトルであり、一様な向き及び大きさを有する磁界である。厳密には、地磁気Ｂｇの向き及び大きさは地域によって異なるが、例えば異なる都市に移動する等の大きな移動をしない場合には一様な向き及び大きさを有する。
内部磁界Ｂｉは、機器１の部品が発する磁界であり、内部磁界Ｂｉの向きは、機器１から見て一定の方向を有する。すなわち、機器１上に搭載された３次元磁気センサ６０から見た場合、機器１の姿勢をどのように変化させても、内部磁界Ｂｉは、一定の方向及び大きさを有する磁界として検知される。例えば、利用者が機器１を手で持って手首を回すと、機器１の姿勢が変化する。このとき、地磁気Ｂｇは機器１の姿勢に関わらず常に磁極北を向いているので、３次元磁気センサ６０で検出される地磁気Ｂｇの３軸各々の成分は変化する。一方、３次元磁気センサ６０において３次元磁気センサ６０と内部磁界を発生する部品との相対的な位置関係は固定であるから、機器１の姿勢を変化させても、内部磁界Ｂｉの３軸各々の成分は一定である。
【００２２】
説明の便宜上、図１に示すような地上座標系ΣＧ及びセンサ座標系ΣＳを導入する。
地上座標系ΣＧは、地上に固定された座標系であり、互いに直交する３つの方向、例えば、東、北、及び鉛直上向きを、それぞれｘ軸、ｙ軸、及びｚ軸とする座標系である。ここで、地上座標系ΣＧから見たときの３次元磁気センサ６０の姿勢を姿勢θｓと表現する。
センサ座標系ΣＳは３次元磁気センサ６０に固定され、３次元磁気センサ６０の位置に原点を有し、３次元磁気センサ６０の各々のセンサモジュールが検出する方向をそれぞれｘ軸、ｙ軸、ｚ軸とする座標系である。つまり、地上座標系ΣＧから見た場合、センサ座標系ΣＳの姿勢は姿勢θｓとなる。このように、センサ座標系ΣＳは、３次元磁気センサ６０の有する３つのセンサモジュールが出力する値を、それぞれ、ｘ軸、ｙ軸、ｚ軸上にプロットするように設けられた座標系であり、３次元磁気センサ６０が出力する磁気データは、センサ座標系ΣＳのベクトルデータとして表現される。
【００２３】
地磁気Ｂｇ及び内部磁界Ｂｉが、３次元磁気センサ６０によってどのような値として検知されるかについて、図２を用いて説明する。図２は、３次元磁気センサ６０の姿勢θｓをθ１〜θＮと変化させつつ磁界をＮ回測定した場合に、３次元磁気センサ６０が出力するＮ個の磁気データｑ１〜ｑＮを、センサ座標系ΣＳにおいてプロットした図である。ここで、Ｎは精度よくオフセットを導出するために必要な磁気データの規定測定回数を表す３以上の自然数である。
内部磁界Ｂｉは、一定の方向及び大きさを持つベクトルＳＢｉとして表現される。ここで、センサ座標系ΣＳにおけるベクトルＳＢｉが示す座標を中心点ｘ０とする。
一方、地磁気Ｂｇは、センサ座標系ΣＳにおいて、大きさは一定であるが、向きは３次元磁気センサ６０の姿勢θｓに伴い変化する。つまり、地磁気Ｂｇは、センサ座標系ΣＳにおいて、３次元磁気センサ６０の姿勢θｓに連動して向きを変化させる一定の大きさのベクトルＳＢｇ（θｓ）として表現され、θｓを変化させた場合には、ある点を中心とする球面上に位置することになる。
３次元磁気センサ６０が出力する磁気データｑ１〜ｑＮは、内部磁界Ｂｉと地磁気Ｂｇとの和として出力される。従って、磁気データｑ１〜ｑＮによって示される座標は、センサ座標系ΣＳにおいて、ｘ０を中心点とし、地磁気Ｂｇの大きさを半径とする、球面ＳＢＧ上に分布することになる。なお、３次元磁気センサ６０は、測定誤差を有するため、磁気データｑ１〜ｑＮで示される座標は、厳密には、球面Ｓ上には存在せず、球面Ｓの近傍に確率的に分布することになる。
【００２４】
このような磁気データｑ１〜ｑＮから、球面Ｓの中心点ｘ０の座標を計算することで、内部磁界を表すベクトルＳＢｉを求めることができ、３次元磁気センサ６０の出力値である磁気データｑ１〜ｑＮから内部磁界ＳＢｉを引き算することにより、地磁気ＳＢｇの正確な値を計算することが可能となる。このように、球面Ｓの中心点ｘ０は、３次元磁気センサ６０のオフセットとしての意味を有する。
なお、本実施形態における、オフセット算出方法は、球面Ｓの中心点ｘ０をそのままオフセットとして採用するものではないが、球面Ｓの中心点ｘ０で示される座標の有する情報を利用してオフセットを算出するものである。そこで、本実施形態におけるオフセット算出の前提となる球面Ｓの中心点ｘ０の算出方法について、以下に説明する。
【００２５】
［２．  球面の中心点の算出］
図３を参照しながら、３次元磁気センサ６０が出力するＮ個の磁気データｑ１〜ｑＮに基づいて、球面Ｓの中心点ｘ０を算出する方法について説明する。ここでは、前述の通り、磁気データｑ１〜ｑＮは、内部磁界Ｂｉの他には、地磁気Ｂｇ等の均一な磁界のみを検知している場合を想定する。
【００２６】
地磁気Ｂｇの大きさをｒと仮定したとき、複数の磁気データｑ１〜ｑＮで示される座標は、センサ座標系ΣＳにおいて、中心点ｘ０を中心とする半径ｒの球面Ｓの表面近傍に確率的に分布する。つまり、各磁気データｑｉ（ｉ＝１、２、…Ｎ）と、球面Ｓの中心点ｘ０との距離はｒであるため、以下の式（１）〜（３）が成立する。
【数３】
2012189323.tif 000005
【００２７】
ここで、複数の磁気データｑ１〜ｑＮの重心をｑｃとし、重心ｑｃを原点とする重心座標系ΣＣを導入する。なお、重心ｑｃは、式（４）及び（５）で表される。
この場合、センサ座標系ΣＳにおいて表現された磁気データｑｉ及び中心点ｘ０と、重心座標系ΣＣにおいて表現された磁気データＣｑｉ及び中心点Ｃｘ０との間に、以下の式（６）及び式（７）の関係が成立する。
【数４】
2012189323.tif 000006
【００２８】
センサ座標系ΣＳにおける球面の方程式（１）は、重心座標系ΣＣにおいて式（８）として表現される。そして、式（８）に対して、式（６）及び（７）を代入することで、式（９）が得られる。
【数５】
2012189323.tif 000007
【００２９】
式（９）のｑｉに対して、磁気データｑ１〜ｑＮの各々を代入した結果を、磁気データの個数Ｎで割り算することにより、以下の式（１０）を得ることができる。そして、式（１０）と、式（９）を展開した式（１１）との差分を取ることで、変数ｑｉに依存しない項を消去し、式（１２）を得ることができる。式（１２）は、磁気データが示す座標ｑｉが中心点をｘ０とする球面Ｓ上に位置することを表す。
【数６】
2012189323.tif 000008
【００３０】
このとき、式（１２）の変数ｑｉに対して、Ｎ個の磁気データｑ１〜ｑＮをそれぞれ代入することで得られるＮ個の方程式は、式（１３）として表現される。なお、行列Ｘは式（１４）に示されるＮ行３列の行列であり、ベクトルｊは式（１５）に示されるＮ次元ベクトルであり、変数Ｒは式（１６）に示される値である。
【数７】
2012189323.tif 000009
【００３１】
式（１３）は、磁気データｑ１〜ｑＮで示される座標の全てが、中心点ｘ０を中心とする球面Ｓ上に完全に一致する場合に解を有する。しかし、３次元磁気センサ６０の測定誤差等を考慮すると、全ての磁気データｑ１〜ｑＮの座標が、球面Ｓと完全に一致する位置に存在することは無いため、式（１３）は解を持たない。
そこで、統計的な手法により尤もらしい解を得るために、式（１７）で表される誤差を吸収するＮ次元ベクトルである誤差δ１を導入する。なお、式（１８）に示されるｘは３次元のベクトルにより表される変数である。
【数８】
2012189323.tif 000010
【００３２】
誤差δ１のノルムを最小にするベクトルｘ、換言すれば、(δ１)Ｔ(δ１)を最小化するようなベクトルｘが、球面Ｓの中心点ｘ０として尤もらしいものであるいえる。
ここで、以下の式（１９）で示される目的関数ｆ１（ｘ）を定義すると、目的関数ｆ１（ｘ）を最小化するｘが、球面の中心点ｘ０として尤もらしい値となる。中心点ｘ０は、式（２１）において示される３行３列の共分散行列Ａが正則である場合には、式（２０）により求めることができる。
【数９】
2012189323.tif 000011
【００３３】
以上に示した方法により求められた中心点ｘ０は、センサ座標系ΣＳにおいて内部磁界Ｂｉを表したベクトルデータである。従って、このような中心点ｘ０を求めることができれば、この中心点ｘ０をオフセットｃとして採用することができる。
【００３４】
［３．  磁気データ分布判定処理］  
球面Ｓの中心点ｘ０を算出するためには、磁気データｑ１〜ｑＮがセンサ座標系ΣＳにおいて３次元的な広がりを有して分布していることが必要である。
例えば図４に示すように、磁気データｑ１〜ｑＮにより示される座標がセンサ座標系ΣＳの平面π上に２次元的に分布する場合には、中心点ｘ０を算出することはできない。平面π上の円πＣの近傍に磁気データｑ１〜ｑＮが存在する場合、中心点ｘ０は球面Ｓπ１の中心点ｘ０１であるかもしれないし、球面Ｓπ２の中心点ｘ０２であるかもしれない。つまり、中心点ｘ０が、円πＣの中心点を通り平面πに直交する直線πＬ上に存在することまでは特定可能であっても、直線πＬ上のどの位置に存在するかについて、具体的に特定することが出来ない。
機器１が自動車等のように左右方向に姿勢変化する場合や、機器１が携帯電話等のようにユーザの手によって動かされるがその動かし方が不十分な場合には、機器１の姿勢変化は３次元的とはならず、２次元的または１次元的なものとなる。この場合、センサ座標系ΣＳにおいて磁気データｑ１〜ｑＮで示される座標は、２次元的または１次元的に広がるため、中心点ｘ０を算出することは出来ない。
【００３５】
３次元磁気センサ６０の測定誤差等の影響により、磁気データｑ１〜ｑＮがわずかに３次元的な広がりを有する場合には、中心点ｘ０を算出することは可能である。しかし、このような中心点ｘ０は、磁気データｑ１〜ｑＮに含まれる測定誤差の影響によって確率的に決定された座標に過ぎず、不正確なものとなる。
例えば、図４の例では、磁気データｑ１〜ｑＮが、平面πに垂直方向の誤差を有して分布する場合、磁気データｑ１〜ｑＮより球面Ｓπ１の中心点ｘ０１が算出されたとしても、実際には、球面Ｓπ２の中心点ｘ０２が内部磁界Ｂｉを表す座標であるかもしれない。このような不正確な座標である中心点ｘ０をオフセットｃとして採用することは出来ない。
【００３６】
磁気データｑ１〜ｑＮから正確な中心点ｘ０を算出するためには、図５に示すように、センサ座標系ΣＳにおいて磁気データｑ１〜ｑＮが３次元的に十分な広がりを持って分布していることが必要となる。磁気データｑ１〜ｑＮがどの程度３次元的に分布しているかについての判定は、式（２１）に示される３行３列の共分散行列Ａを用いて行うことができる。以下に共分散行列Ａの性質を説明する。
共分散行列Ａの固有値を大きい順番に最大固有値λ１、中間固有値λ２、最小固有値λ３とし、それぞれの固有値に対応する大きさ１に正規化された固有ベクトルをｕ１、ｕ２、ｕ３とする。また、磁気データｑｉを、前述した重心ｑＣを原点とする重心座標系ΣＣにおいて表したベクトルをＣｑｉと表す。このとき、固有値λｊ（ｊ＝１、２、３）は、固有ベクトルｕｊ方向の分散σ２ｊに等しい。
例えばｊ＝１について考える。図５に示すように、固有ベクトルｕ１、ｕ２、ｕ３を、重心座標系ΣＣの原点ｑＣを起点となるように配置した場合、固有値λ１は、ベクトルＣｑｉを、固有ベクトルｕ１へ射影した長さＬｉ１の二乗（Ｌｉ１）２を、Ｎ個の磁気データＣｑｉ（ｉ＝１、２、…Ｎ）について平均した値に等しくなる。つまり、固有値λ１は、Ｎ個の磁気データＣｑｉが、重心ｑＣから固有ベクトルｕ１方向にどの程度離れているかを表す指標であり、磁気データｑ１〜ｑＮの分布が固有ベクトルｕｊの方向に対してどの程度の広がり有するかについて、対応する固有値λｊの大きさに基づいて判断することができる。
【００３７】
最小固有値λ３が小さな値の場合、固有ベクトルｕ３の方向には磁気データｑ１〜ｑＮは広がりを有さず、磁気データｑ１〜ｑＮから中心点ｘ０の位置を算出したとしても固有ベクトルｕ３方向の情報は不正確なものとなる。これは、例えば図４において、直線πＬの方向が、固有ベクトルｕ３の方向に相当し、中心点ｘ０が直線πＬ上のどの位置に存在するかについて特定できないことを意味する。同様に、最小固有値λ３及び中間固有値λ２が共に小さな値となる場合は、中心点ｘ０が示す座標のうち固有ベクトルｕ２及びｕ３方向の情報は不正確なものとなる。
【００３８】
但し、磁気データｑ１〜ｑＮが２次元的に分布している場合、つまり最小固有値λ３が小さな値の場合であっても、中心点ｘ０が示す座標のうち固有ベクトルｕ１及びｕ２の方向の情報は正確である。例えば、図４の場合において、中心点ｘ０が直線πＬ上に存在することについては特定可能である。
そこで、本実施形態では、磁気データｑ１〜ｑＮが十分に３次元的な広がりを有さずに分布する場合であっても、中心点ｘ０が示す座標のうち、正確な情報を有する方向（つまり、大きな値を有する固有値に対応する固有ベクトル方向）の情報を、その正確性の程度（固有値の大きさ）に応じて利用することにより、オフセットｃを算出する。
以下、本実施形態におけるオフセットｃの算出方法について述べる。
【００３９】
［４．  機器構成及びソフトウェア構成］  
図６は、本発明の第１実施形態に係る機器１の構成を示すブロック図である。
機器１は、各種の構成要素とバスを介して接続され装置全体を制御するＣＰＵ１０、ＣＰＵ１０の作業領域として機能するＲＡＭ２０、各種のプログラムやデータを記憶したＲＯＭ３０、通信を実行する通信部４０、画像を表示する表示部５０、地磁気を検出して地磁気データを出力する３次元磁気センサ６０、を備える。
３次元磁気センサ６０は、Ｘ軸磁気センサ６１、Ｙ軸磁気センサ６２、及びＺ軸磁気センサ６３を備える。各センサは、ＭＩ素子（磁気インピーダンス素子）、ＭＲ素子（磁気抵抗効果素子）などを用いて構成することができる。磁気センサＩ／Ｆ６４は、各センサから出力信号をＡＤ変換して磁気データを出力する。この磁気データは、Ｘ軸磁気センサ６１、Ｙ軸磁気センサ６２、及びＺ軸磁気センサ６３からの出力を、センサ座標系ΣＳにおけるベクトルデータとして、センサ座標系ΣＳの、ｘ軸、ｙ軸およびｚ軸の３成分によって示される。
【００４０】
ＣＰＵ１０は、ＲＯＭ３０に格納されている磁気データ処理プログラム７０を実行することによって、３次元磁気センサ６０の出力からオフセットを導出するとともに、正確な地磁気の向き及び大きさの出力を行う。
表示部５０は、磁気データ処理プログラム７０により出力された地磁気の向きを示す方位情報を、矢印等によって表示する。なお、磁気データ処理プログラム７０は、地図アプリケーション等との連携を想定し、磁気の向きを示す方位情報である矢印等を地図上に表示しても良い。
ＣＰＵ１０、ＲＡＭ２０、３次元磁気センサ６０、及び磁気データ処理プログラム７０は、３次元磁気センサ６０が検出する磁気データに基づき、正確な地磁気の向き及び大きさを示す地磁気データを算出する地磁気測定装置として機能する。この地磁気データは、地上座標系ΣＧにおいて磁極北に向かう水平成分と伏角方向の鉛直成分とを有するベクトルを、センサ座標系ΣＳのｘ軸、ｙ軸およびｚ軸の３成分で示すベクトルデータとして出力される。
【００４１】
磁気データ処理プログラム７０は、バッファ管理モジュール７１、オフセット導出モジュール７２、及び方位導出モジュール７３等のモジュール群で構成される。
磁気データ処理プログラム７０は、オフセットｃを算出し、このオフセットｃ及び３次元磁気センサ６０が検出する磁気データに基づいて、正確な地磁気データを算出する。
なお、オフセットｃは周期的に更新される。これは、機器１の内部状態が変化した場合、例えば、機器１に搭載された部品を流れる電流の大きさが変化した場合や、機器１に搭載された部品の着磁状況等の変化に伴い、内部磁界が変化するからである。このような内部磁界の変化を想定し、内部磁界を表すベクトルであるオフセットｃを定期的に更新することによって、正確な地磁気を測定することが可能となる。
以下、説明の便宜上、オフセットｃの更新にあたり、更新前のオフセットｃを旧オフセットｃ０と呼び、更新後のオフセットｃを新オフセットｃ１と呼ぶ。
【００４２】
バッファ管理モジュール７１は、３次元磁気センサ６０から順次出力される磁気データをバッファに蓄積する。これら複数の磁気データの蓄積手段としては、ＲＡＭ２０を用いる。
オフセット導出モジュール７２は、バッファ管理モジュール７１に蓄積されている複数の磁気データに基づいて、新オフセットｃ１を算出し、オフセットｃを、旧オフセットｃ０から新オフセットｃ１へと更新する。オフセットｃの保持手段としては、ＲＡＭ２０を用いる。
方位導出モジュール７３は、３次元磁気センサから順次出力される磁気データを、オフセット導出モジュール７２が保持するオフセットｃにより補正して、正確な地磁気データを算出し、方位情報を生成する。なお、方位導出モジュール７３は、適当な周期でバッファ管理モジュール７１及びオフセット導出モジュール７２を呼び出し、オフセット更新の指示を与える。
【００４３】
［５．  処理の流れ］  
図７は、オフセット算出処理の流れを示すフローチャートである。このフローチャートは、方位導出モジュール７３が、バッファ管理モジュール７１及びオフセット導出モジュール７２を呼び出しオフセット更新の指示を与えた場合に実行される。方位導出モジュール７３は、周期的にオフセット更新を指示する。
【００４４】
ステップＳ１００において、ＣＰＵ１０は初期化処理及び磁気データ取得処理を行う。初期化処理では、バッファ管理モジュール７１が呼び出され、ＲＡＭ２０に記憶した磁気データが廃棄される。なお、本実施形態では、磁気データの全部を廃棄するが、ＲＡＭ２０に蓄積されたデータのうち古い方から一定割合のデータのみを廃棄しても良い。そして、磁気データ取得処理において、３次元磁気センサ６０から出力されるＮ個の磁気データｑ１〜ｑＮを、ＲＡＭ２０に格納する（Ｎは精度よくオフセットを導出するために必要な磁気データの規定測定回数を表す３以上の自然数）。
ステップＳ１０１において、ＣＰＵ１０は磁気データ分布指標標算出処理を行う。磁気データ分布指標算出処理は、Ｎ個の磁気データｑ１〜ｑＮに基づいて、分布指標、つまり、前述した式（２１）に示された共分散行列Ａの固有値λ１〜λ３及び固有ベクトルｕ１〜ｕ３を算出する処理である。このような分布指標を算出することにより、ステップＳ１００でＲＡＭ２０等に蓄積されたＮ個の磁気データｑ１〜ｑＮの分布、つまり、センサ座標系ΣＳにおいて、磁気データｑ１〜ｑＮで示される座標が、３つの固有ベクトルｕ１〜ｕ３方向にどの程度の広がりを有するかについて知ることができる。
ステップＳ１０２において、ＣＰＵ１０はオフセット更新処理を行う。オフセット更新処理は、ステップＳ１００で得た磁気データｑ１〜ｑＮ及びステップＳ１０１で得た分布指標に基づいて、オフセットｃを、旧オフセットｃ０から新オフセットｃ１へと更新する処理である。
以下において、ステップＳ１０２において行われるオフセット更新処理について説明する。
【００４５】
［６．  オフセット更新処理］  
前述の通り、内部磁界Ｂｉは機器１の内部状態が変化した場合に変化するものであるため、内部磁界Ｂｉを表すオフセットｃは周期的に更新されることが必要である。
磁気データｑ１〜ｑＮに基づいて算出される中心点ｘ０は、磁気データｑ１〜ｑＮで示される座標が３次元的な広がりを有さない場合には不正確な情報となるため、これをオフセットｃとしてそのまま採用することは出来ない。しかし、前述の通り、磁気データｑ１〜ｑＮで示される座標が３次元的な広がりを有さない場合であっても、中心点ｘ０で示される座標のうち正確性の高い方向の情報については、オフセットｃの決定に利用することは可能である。
【００４６】
例えば、図８に示すような、図４と同様に磁気データｑ１〜ｑＮが平面π上の円πＣの近傍に位置する場合を検討する。
磁気データｑ１〜ｑＮにより示される座標は、磁気データｑ１〜ｑＮに含まれる測定誤差の影響により、円πＣに完全には一致しない。この場合、磁気データｑ１〜ｑＮに基づいて球面Ｓの中心点ｘ０が算出される。中心点ｘ０は、前述の通り、磁気データｑ１〜ｑＮの有する測定誤差の影響により偶然に算出された値に過ぎず、直線πＬ上のどの位置に存在するかを特定することはできない。しかし、一方で、中心点ｘ０が直線πＬ上に位置することは特定することができる。
つまり、磁気データｑ１〜ｑＮの分散を表す共分散行列Ａの固有値λ１及びλ２が十分に大きく、固有値λ３が非常に小さい場合に、磁気データｑ１〜ｑＮに基づいて算出された中心点ｘ０を示す座標の情報のうち、固有ベクトルｕ１及びｕ２方向の情報については正確（つまり、直線πＬ上に位置することは特定可能）であるが、固有ベクトルｕ３方向の情報については不正確（つまり、直線πＬ上のどの位置に存在するかは特定困難）である。
【００４７】
そこで、本実施形態では、新オフセットｃ１の算出にあたり、中心点ｘ０で示される座標のうち正確性の高い方向の情報については中心点ｘ０の情報を利用し、中心点ｘ０で示される座標のうち正確性の低い方向については旧オフセットｃ０の情報を利用する。これにより、新オフセットｃ１を、中心点ｘ０で示される座標のうち不正確な情報を用いずに算出することが可能になる。そして、このような旧オフセットｃ０を新オフセットｃ１に更新するベクトルｃ１−ｃ０を、更新ベクトルｋと呼ぶ。
【００４８】
図８に示すように、磁気データｑ１〜ｑＮで示される座標の分布が２次元的である場合（つまり固有値λ３が小さな値の場合）、更新ベクトルｋは、固有ベクトルｕ１及びｕ２の線形結合として表現され、固有ベクトルｕ３と直交する。従って、更新ベクトルｋと固有ベクトルｕ３との間には以下の式（２３）が成立する。
また、磁気データｑ１〜ｑＮで示される座標の分布が１次元的である場合（つまり固有値λ２及びλ３が小さい値の場合）、更新ベクトルｋは、固有ベクトルｕ１と平行となる。従って、更新ベクトルｋと固有ベクトルｕ２及びｕ３とは直交するため以下の式（２２）及び（２３）の双方が成立する。
【数１０】
2012189323.tif 000012
【００４９】
式（２２）、（２３）で示される制約条件は、磁気データｑ１〜ｑＮで示される座標の分布が、３次元的な広がりを有さずに完全に押しつぶされた形状となる場合、つまり、固有ベクトルｕ２及びｕ３方向に広がりを有さず、完全に２次元空間内での分布または完全に１次元空間内での分布の場合を表す制約条件である。
一方、磁気データｑ１〜ｑＮで示される座標の分布が、完全に押しつぶされること無く、固有ベクトルｕ２及びｕ３方向に広がりを有する場合、中心点ｘ０の有する情報は、固有ベクトルｕ２及びｕ３方向について完全に欠落している訳ではない。このような場合は、更新ベクトルｋと固有ベクトルｕ２及びｕ３とが常に直交する必要は無く、式（２２）または（２３）で示される制約条件は完全に満たされる必要はない。つまり、式（２２）または（２３）で示される制約条件は、磁気データｑ１〜ｑＮで示される座標の分布の広がりの小ささ、つまり固有値λ２またはλ３の小ささに応じて働かせればよい。
【００５０】
そこで、式（２２）または（２３）で示した制約条件を緩和するために、式（２４）で示す誤差δ２（第３誤差）及び（２５）で示す誤差δ３（第２誤差）を導入する。
誤差δ２は、式（２６）で示す更新ベクトルｋと固有ベクトルｕ２との内積ε２に対し、係数α（第２係数）を掛け算した値である。誤差δ３は、（２７）で示す更新ベクトルｋと固有ベクトルｕ３との内積ε３に対し、係数β（第１係数）を掛け算した値である。以下で、これらの式（２４）〜（２８）の詳細を説明する。
【数１１】
2012189323.tif 000013
【００５１】
式（２６）に示す内積ε２は、更新ベクトルｋと固有ベクトルｕ２との内積を示す値であり、更新ベクトルｋが固有ベクトルｕ２と直交する場合には０となるが、直交しない場合には０以外の値となる。式（２７）に示す内積ε３についても同様に、更新ベクトルｋと固有ベクトルｕ３との内積を示す。
なお、更新ベクトルｋ＝ｃ１−ｃ０は、式（２８）に示す通り、新オフセットｃ１の位置を求めるための変数であるベクトルｘの示す位置を、旧オフセットｃ０から表した位置ベクトルであるが、計算の便宜上、式（１３）との整合を図り、ベクトルｘ及び旧オフセットｃ０を重心ｑｃから見た位置ベクトルとして表現している。
【００５２】
式（２４）及び（２５）に現れる係数α及びβは、式（２２）または（２３）で示した制約条件を緩和するための係数である。
例えば、誤差δ２が十分小さな値になるように、更新ベクトルｋを定める場合を考える。
このとき、更新ベクトルｋと固有ベクトルｕ２とが直交しない場合には内積ε２は大きな値を有することになるが、係数αを十分に小さな値（例えば、０に限りなく近い値）に設定することで、誤差δ２を十分小さな値にすることができる。一方、係数αが大きな値に設定されている場合には、更新ベクトルｋと固有ベクトルｕ２とが互いに直交し内積ε２が０に近い小さな値にならない限り、誤差δ２も０に近い小さな値にはならない。
すなわち、式（２４）において係数αが十分に小さな値に設定される場合、更新ベクトルｋと固有ベクトルｕ２とが直交するという式（２２）に示した制約条件は緩和される。一方、式（２４）において係数αを大きな値に設定する場合、式（２４）は式（２２）と同様の制約条件を与える式になる。
同様に、式（２５）において係数βが十分に小さな値に設定される場合、式（２３）に示した更新ベクトルｋと固有ベクトルｕ３とが直交するという制約条件は緩和され、係数βが大きな値に設定される場合、式（２５）は式（２３）と同様の制約条件を与える式になる。
なお、図８に示されるように、磁気データｑ１〜ｑＮが２次元空間内で広く分布する場合は、係数βを十分に大きな値に設定して、式（２３）に示した固有ベクトルｕ３方向の制約条件を十分に機能させる一方、係数αを０に近い値に設定して、式（２２）に示した固有ベクトルｕ２方向の制約条件を機能させないようにすればよい。
【００５３】
このような係数α及びβは、例えば、定数ｋα及びｋβをｋα＞０、ｋβ＞０を満たす実数として、以下の式（２９）及び（３０）に示すような、固有値λ２及びλ３の関数として定めることができる。この場合、例えば固有値λ２が大きな値の場合には、αは０に近い小さな値となり、固有値λ２が小さな値の場合には、αは１に近い大きな値となる。
【数１２】
2012189323.tif 000014
【００５４】
なお、本発明は係数α及びβは、式（２９）及び（３０）に示す固有値λ２及びλ３の関数に限定するものではない。例えば、係数αを固有値λ１及び固有値λ２の大きさの比率を変数とする関数とし、係数βを固有値λ１及び固有値λ３の大きさの比率を変数とする関数としても良い。この場合は、固有値λ２及びλ３が固有値λ１に比べて小さくなるに従って、係数α及びβの値を大きくするような関数であることが好ましい。
また、係数α及びβは定数にしても良い。
【００５５】
さらに、係数βは２値で与えられ、固有値λ３が閾値λ０以上となる場合には係数βは０に限りなく近い値となり、固有値λ３が閾値λ０未満となる場合には係数βは固有値λ３に比べて非常に大きな値となるように設定しても構わない。この場合、固有値λ３が閾値λ０未満の値となり、中心点ｘ０の情報が固有ベクトルｕ３方向に正確性を有さないと判断される場合に、更新ベクトルｋを、中心点ｘ０の有する情報のうち正確性の高い固有ベクトルｕ１及びｕ２方向の情報のみを利用して生成することが可能となる。
係数αについても係数βと同様に、固有値λ２と閾値λ０との大小比較の結果により値を定めても良い。なお、通常、磁気データｑ１〜ｑＮが２次元的に分布することは頻繁に起こりうるが、１次元的に分布することは極めて稀である。従って、係数αを常に０に限りなく近い値に固定しても良い。
【００５６】
式（１７）、（２４）、及び（２５）で示した誤差δ１〜δ３を最小化するような新オフセットｃ１を算出するため、以下の式（３１）に示す目的関数ｆ２（ｘ）を導入する。
目的関数ｆ２（ｘ）は、誤差ベクトルδの大きさを表す関数である。誤差ベクトルδは、式（３２）に示すように、誤差δ１〜δ３を要素とするＮ＋２次元のベクトルである。
前述の通り、誤差δ１のみを最小化する場合、磁気データｑ１〜ｑＮを近傍に有する球面Ｓの中心点ｘ０として尤もらしい座標を算出することができるが、これに加えて、誤差δ２及び誤差δ３を最小化する場合、中心点ｘ０が示す座標のうち正確性の高い方向についてオフセットｃ０を更新して得られる新オフセットｃ１として尤もらしい座標を算出することができる。
すなわち、目的関数ｆ２（ｘ）を最小化するようなベクトルｘは、新オフセットｃ１として尤もらしい値となる。
【数１３】
2012189323.tif 000015
【００５７】
以下で、目的関数ｆ２（ｘ）を最小化する解ｘ＝ｃ１を算出する方法について述べる。
誤差ベクトルδは、式（３２）に対して、式（１７）、及び式（２４）〜（２８）を代入することで、式（３３）のように変形される。ここで、行列Ｘ２は式（３４）に示すような、Ｎ＋２行３列の行列であり、ベクトルｊ２は式（３５）に示すＮ＋２次元のベクトルである。
そして、目的関数ｆ２（ｘ）を最小化するような解ｘとして求められる新オフセットｃ１は、式（３３）に示す誤差ベクトルδの大きさを最小化するものである。従って、新オフセットｃ１は、δＴδを最小化するものとして式（３６）に示す３元１次連立方程式の解として求められ、式（３９）で示す３次元のベクトルとして表される。ここで、行列Ａ２は式（３７）に示す３行３列の行列であり、ベクトルＸ２Ｔｊ２は式（３８）に示す３次元のベクトルである。
【数１４】
2012189323.tif 000016
【００５８】
図９を参照しつつ、式（３９）に示された新オフセットｃ１の有する幾何学的な性質について説明する。なお、図９では、固有値λ１〜λ３が、λ１＞λ２＞λ３＞０を満たし、磁気データｑ１〜ｑＮに基づいて算出された中心点ｘ０の座標は、固有ベクトルｕ１方向には正確であるが、固有ベクトルｕ２方向は不正確であり、固有ベクトルｕ３方向は固有ベクトルｕ２方向に比べてさらに不正確な場合を想定する。
【００５９】
更新ベクトルｋは、式（４３）に示すように、ｋ１〜ｋ３を係数とする固有ベクトルｕ１〜ｕ３の線形結合として表現される。また、旧オフセットｃ０から中心点ｘ０に向かうベクトルをｇとすると、ベクトルｇは、式（４４）に示すように、ｇ１〜ｇ３を係数とする固有ベクトルｕ１〜ｕ３の線形結合として表現される。
このとき、更新ベクトルｋの大きさを表す係数ｋ１〜ｋ３と、ベクトルｇの大きさを表す係数ｇ１〜ｇ３との間の比率ｗ１〜ｗ３は、それぞれ式（４０）〜（４２）に示す値となる。
【数１５】
2012189323.tif 000017
【００６０】
式（４０）に示すように、比率ｗ１は１となる。また、式（４１）に示すように、比率ｗ２は０＜ｗ２≦１を満たす固有値λ２及び係数αの関数となり、固有値λ２が大きな値になるに従って比率ｗ２は１に近づく。同様に、式（４２）に示すように、比率ｗ３は０＜ｗ３≦１を満たす固有値λ３及び係数βの関数となり、固有値λ３が大きな値になるに従って比率ｗ３は１に近づく。このような、比率ｗ１〜ｗ３は、新オフセットｃ１が、中心点ｘ０及び旧オフセットｃ０のどちらに強く依存するかについての比率を示す値である。
更新ベクトルｋは、ベクトルｇの固有ベクトルｕ１〜ｕ３方向の各成分に対して、各方向の情報の正確性を表す比率ｗ１〜ｗ３を掛け算して算出されるベクトルである。このような更新ベクトルｋは、中心点ｘ０の有する情報のうち正確性の高い情報に基づいて、旧オフセットｃ０を新オフセットｃ１に更新する。
【００６１】
なお、旧オフセットｃ０の情報を利用しない場合には、係数α及びβを０に限りなく近い値の定数として設定すればよい。この場合、比率ｗ１〜ｗ３はいずれも１に限りなく近い値となり、新オフセットｃ１は、磁気データｑ１〜ｑＮのみに基づいて算出した中心点ｘ０となる。
【００６２】
［７．  従来の方法との比較］
以上で述べた本実施形態の新オフセットｃ１算出方法の有効性を示すために、以下では、特許文献１において開示されたオフセット算出方法（以下、「従来の方法」と称する。）について説明し、本実施形態における方法と比較する。
【００６３】
従来の方法では、式（４５）に示す５元１次連立方程式の解として、オフセットを算出していた。式（４５）に示す方程式は、式（２２）及び（２３）で示された制約条件を緩和しつつ、式（１９）で示された目的関数ｆ１（ｘ）を最小化する解ｘを求める緩和問題である。
ここで、行列Ｘ５は、式（４６）に示す５行５列の行列であり、ベクトルｘ５は、式（４７）に示す５次元のベクトルであり、ベクトルｂ５は、式（４８）に示す５次元のベクトルである。また、式（４７）の変数ρ１及びρ２は、計算過程においてのみ必要となる変数であり、式（４６）及び（４８）の変数ｍ１及びｍ２は、式（４９）及び（５０）に示すような共分散行列Ａの固有値λ１〜λ３及び正の定数Ｓ２、Ｓ３により算出される値である。
【数１６】
2012189323.tif 000018
【００６４】
ｎ元１次連立方程式を解くための演算回数は、ガウス消去法では約（２／３）ｎ３回である。また、連立方程式の係数行列が正定値である場合には、コレスキー分解法や修正コレスキー分解法を用いることができ、演算回数は約（１／３）ｎ３回となる。
従来の方法でオフセットを算出する場合、行列Ｘ５を係数行列とする５元１次連立方程式を解くため、ガウス消去法での演算回数は５３＝１２５の２／３倍となる。一方、本発明の方法で新オフセットｃ１を算出する場合、式（３６）に示す３元１次連立方程式を解けば良く、ガウス消去法での演算回数は３３＝２７の２／３倍となる。すなわち、本発明の方法によれば、従来の方法に比べて、２７／１２５＝約２２％の計算量でオフセットを算出することができる。
【００６５】
［８．  結論］  
以上に示したように、本実施形態では、磁気データ分布指標算出処理において、磁気データｑ１〜ｑＮの分散を示す共分散行列Ａの固有値及び固有ベクトルを算出することで、磁気データｑ１〜ｑＮに基づいて算出される中心点ｘ０の有する情報のうち、共分散行列Ａの各固有ベクトル方向の情報の正確性を求めること可能となった。そして、オフセット更新処理において、磁気データｑ１〜ｑＮより算出される中心点ｘ０の有する情報のうち正確性の高い方向の情報を利用する一方で、中心点ｘ０の有する情報のうち正確性の低い方向については旧オフセットｃ０の情報も利用することにより、新オフセットｃ１を算出した。
すなわち、本実施形態の磁気データ処理プログラム７０は、オフセットｃを正確な情報のみに基づいて更新することが可能であり、このようなオフセットｃによって地磁気を正確に測定することが可能になるという利点を有する。
【００６６】
また、本実施形態における磁気データ分布指標算出処理及びオフセット更新処理は、新オフセットｃ１を簡単な計算によって求めることが可能である。
すなわち、本実施形態の磁気データ処理プログラム７０は、高速なオフセットｃの更新が可能であり、常に正確な地磁気の測定が可能になるという利点を有する。
【００６７】
さらに、本実施形態では、オフセット更新処理において、新オフセットｃ１を、３元１次連立方程式を解くことにより算出した。
従来の方法では、オフセットの算出のために５元１次連立方程式を解くことが必要であった。これに対して本実施形態における新オフセットｃ１の算出は、３元１次連立方程式を解くことで算出する処理であり、従来の方法に比べて約２２％の演算回数に抑えることが可能となった。これにより、新オフセットｃ１算出の更なる高速化が可能となるとともに、新オフセットｃ１の算出に必要なメモリ使用量の低減化が可能となった。
すなわち、本実施形態の磁気データ処理プログラム７０は、高速なオフセットｃの更新が可能であるという利点を有するとともに、簡易な機器に対しても実装が可能であるという利点を有する。
【００６８】
また、本実施形態では、オフセット更新処理において、複数の磁気データｑ１〜ｑＮの重心ｑｃを原点とする重心座標系ΣＣにおいて、複数の磁気データｑ１〜ｑＮの値及び新オフセットｃ１の値を表現することで、新オフセットｃ１の算出を行った。これにより、磁気データｑ１〜ｑＮ等の値を、センサ座標系ΣＳで示される座標をそのまま用いて新オフセットｃ１の算出を行う場合に比べて、データの値を小さくすることが可能となり、メモリサイズの小さい変数型で表現することが可能となった。
すなわち、本実施形態の磁気データ処理プログラム７０は、メモリ使用量の低減化を可能とするという利点を有する。
【符号の説明】
【００６９】
１…機器、４０…通信部、５０…表示部、６０…３次元磁気センサ、７０…磁気データ処理プログラム、ΣＧ…地上座標系、ΣＳ…センサ座標系、λｊ…固有値、ｕｊ…固有ベクトル、Ｂｇ…地磁気、Ｂｉ…内部磁界、ｘ０…中心点、Ｓ…球面、ｃ…オフセット、ｃ０…旧オフセット、ｃ１…新オフセット、ｇ…ベクトル、ｋ…更新ベクトル、ｑｉ…磁気データ、ｑＣ…重心、ｗｊ…比率。
【図１】
2012189323.tif 000021
【図２】
2012189323.tif 000022
【図３】
2012189323.tif 000023
【図４】
2012189323.tif 000024
【図５】
2012189323.tif 000025
【図６】
2012189323.tif 000026
【図７】
2012189323.tif 000027
【図８】
2012189323.tif 000028
【図９】
2012189323.tif 000029