(57)【要約】【課題】統計処理を用いることなく正確にオフセットを設定する。【解決手段】磁気センサから順次出力される、３成分又は２成分を有する複数の磁気データを順次入力する手段と、２つの前記磁気データに対応する２点の垂直二等分面又は垂直二等分線を、入力順に組み合わせられた２つ１組の前記磁気データ毎に算出する手段と、基点から前記垂直二等分面又は前記垂直二等分線に垂直に下ろす線分上の内分点に前記基点を更新する処理を、複数の前記垂直二等分面又は複数の前記垂直二等分線について繰り返し、更新された前記基点の成分に基づいて前記磁気データのオフセットを設定する手段と、を備える磁気センサ制御装置。【選択図】図１
2011095277.tif 000002
【特許請求の範囲】
【請求項１】
磁気センサから順次出力される、３成分又は２成分を有する複数の磁気データを順次入力する手段と、
２つの前記磁気データに対応する２点の垂直二等分面又は垂直二等分線を、入力順に組み合わせられた２つ１組の前記磁気データ毎に算出する手段と、
基点から前記垂直二等分面又は前記垂直二等分線に垂直に下ろす線分上の内分点に前記基点を更新する処理を、複数の前記垂直二等分面又は複数の前記垂直二等分線について繰り返し、更新された前記基点の成分に基づいて前記磁気データのオフセットを設定する手段と、
を備える磁気センサ制御装置。
【請求項２】
前記オフセットを設定する手段は、前記基点を更新する処理を複数の前記垂直二等分面又は前記垂直二等分線について前記垂直二等分面又は前記垂直二等分線の算出順に１回ずつ繰り返す、
請求項１に記載の磁気センサ制御装置。
【請求項３】
前記オフセットを設定する手段は、前記基点を更新する処理を各前記垂直二等分面又は各前記垂直二等分線について複数回ずつ繰り返す、
請求項１に記載の磁気センサ制御装置。
【請求項４】
予め決められた所定距離以上離れた２点に対応する２つ１組の前記磁気データを入力順に選抜する手段をさらに備え、
前記垂直二等分面又は前記垂直二等分線を算出する手段は、選抜された前記磁気データの組毎に前記垂直二等分面又は前記垂直二等分線を算出する、
請求項１〜３のいずれか一項に記載の磁気センサ制御装置。
【請求項５】
既に選抜された前記垂直二等分面又は前記垂直二等分線とのなす全ての角が予め決められた所定角度以上になる前記垂直二等分面又は前記垂直二等分線を選抜する手段をさらに備え、
前記オフセットを設定する手段は、選抜された前記垂直二等分面又は前記垂直二等分線について前記基点を更新する処理を繰り返す、請求項１〜４のいずれか一項に記載の磁気センサ制御装置。
【請求項６】
前記オフセットを設定する手段は、前記基点を更新する処理を、前記基点から前記垂直二等分面又は前記垂直二等分線に垂直に下ろす線分の長さが所定値以下になるまで繰り返し、最後の前記基点の成分に基づいて前記オフセットを設定する、請求項３に記載の磁気センサ制御装置。
【請求項７】
請求項１〜６のいずれか一項に記載の磁気センサ制御装置と、
前記磁気センサと、
を備える磁気測定装置。
【請求項８】
磁気センサから順次出力される、３成分又は２成分を有する複数の磁気データを順次入力し、
２つの前記磁気データに対応する２点の垂直二等分面又は垂直二等分線を、入力順に組み合わせられた２つ１組の前記磁気データ毎に算出し、
基点から前記垂直二等分面又は前記垂直二等分線に垂直に下ろす線分上の内分点に前記基点を更新する処理を、複数の前記垂直二等分面又は複数の前記垂直二等分線について繰り返し、
更新された前記基点の成分に基づいて前記磁気データのオフセットを設定する、
ことを含むオフセット設定方法。
【請求項９】
磁気センサから順次出力される、３成分又は２成分を有する複数の磁気データを順次入力する手段と、
２つの前記磁気データに対応する２点の垂直二等分面又は垂直二等分線を、入力順に組み合わせられた２つ１組の前記磁気データ毎に算出する手段と、
基点から前記垂直二等分面又は前記垂直二等分線に垂直に下ろす線分上の内分点に前記基点を更新する処理を、複数の前記垂直二等分面又は複数の前記垂直二等分線について繰り返し、更新された前記基点の成分に基づいて前記磁気データのオフセットを設定する手段と、
してコンピュータを機能させるオフセット設定プログラム。
【請求項１０】
請求項９に記載のオフセット設定プログラムが格納されたコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は磁気センサ制御装置、磁気測定装置、並びにオフセット設定方法及びプログラムに関し、特に地磁気センサのオフセット設定方法に関する。
【背景技術】
【０００２】
従来、移動体に搭載され、地磁気の方向を検出する３次元磁気センサ及び２次元磁気センサが知られている。一般に３次元磁気センサは、磁界のベクトルを互いに直交する３方向の成分に分解してスカラー量を検出するための３つの磁気センサモジュールを備えている。３次元磁気センサの出力である磁気データは、そのような３つの磁気センサモジュールのそれぞれの出力の組み合わせからなるため、３成分を有する。磁気データを成分とするベクトルの方向と大きさが、３次元磁気センサが検出している磁界の方向と大きさである。３次元磁気センサの出力に基づいて地磁気の方向又は大きさを特定するとき、その出力には移動体の着磁成分と磁気センサ自体の測定誤差が含まれている。従ってそれらを打ち消すために３次元磁気センサの出力を補正する処理が必要である。この補正処理の操作値はオフセットと呼ばれている。オフセットは３次元磁気センサが検出している移動体の着磁による磁界のベクトルと磁気センサの測定誤差のベクトルとの合成ベクトルを３次元座標空間で表しており、３次元磁気センサの出力である磁気データからオフセットが引き算されることによって移動体の着磁成分と磁気センサ自体の測定誤差が一括して打ち消される。３次元座標空間において、磁気データを成分とする点は所定の球面に沿ってプロットされる。その球面の中心を求めることによってオフセットを算出することができる。オフセットを求める処理はキャリブレーションと呼ばれている。
【０００３】
ところで、磁気データを成分とする点の集合は現実には完全な球面にならない。なぜならば、３次元磁気センサの出力自体がガウス分布に従う測定誤差を有しているし、現実には完全に一様な磁界は存在しないためオフセットを算出するために必要な磁気データが蓄積される期間中に３次元磁気センサが測定している磁界が変動するし、３次元磁気センサの出力をディジタル値で取り出すまでの計算誤差があるからである。
【０００４】
従来の磁気センサのオフセット算出方法は、多数の磁気データを蓄積し、それらの統計処理によって、最も確からしいオフセットを算出するものであった（例えば特許文献１参照）。しかし、多数の磁気データの統計処理をする場合には、母集団となる磁気データ群の分布が満遍なく広く、特異な磁気データが母集団から排除されていなければ精度のよいオフセットを算出することができない。ところが、統計処理によって算出されたオフセットの信頼性や磁気データの母集団要素としての適性を的確に判定することは困難である。また統計処理によって最も確からしい球面の中心を求める処理量は相当多く、時間と資源の消費が多い。
【０００５】
また、三次元磁気センサでは、平面上で移動体を意識的に回転させる操作をユーザに強いることなくキャリブレーションが可能であるため、キャリブレーション中に移動体をどのように動かすべきかという案内をユーザにする必要がない。したがって、キャリブレーション中に移動体が存在している磁界の強さが変動することは十分に予見される。ところが、特許文献１に記載されているように磁気データを成分とする点までの距離のばらつきが最小になる点の成分をオフセットとする場合、統計処理の母集団となる磁気データが蓄積される期間中に地磁気の強さが変動すると、正確なオフセットを求めることができなくなるという問題がある。例えば屋内から屋外に磁気センサが移動すると、磁気センサが検出する地磁気が強くなるため、特許文献１に記載されている方法でオフセットを求めるとその誤差が大きくなる。
【０００６】
【特許文献１】国際公開第２００４−００３４７６号パンフレット
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は上述の問題に鑑みて創作されたものであって、統計処理を用いることなく正確にオフセットを設定できる磁気センサ制御装置、オフセット設定方法及びプログラム、ならびに磁気測定装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
（１）上記目的を達成するための磁気センサ制御装置は、磁気センサから順次出力される、３成分又は２成分を有する複数の磁気データを順次入力する手段と、２つの前記磁気データに対応する２点の垂直二等分面又は垂直二等分線を、入力順に組み合わせられた２つ１組の前記磁気データ毎に算出する手段と、基点から前記垂直二等分面又は前記垂直二等分線に垂直に下ろす線分上の点に前記基点を更新する処理を、複数の前記垂直二等分面又は複数の前記垂直二等分線について繰り返し、更新された前記基点の成分に基づいて前記磁気データのオフセットを設定する手段と、を備える。
円周上の２点の垂直二等分線は円の中心を通る。２次元磁気センサから出力される磁気データを成分とする多数の点が特定の円周から近距離の範囲に分布している場合、それらの多数の点を２つ１組にすると、各組の垂直二等分線はその円周の中心近くを通る。ここで、円の中心近くの複数の点から放射状に伸びる多数の直線について考える。それらの直線と円の中心との距離が十分近ければ、ある点からそれらの直線に垂直に下ろす線分上の点を求め、求めたその点から別の直線に垂直に下ろす線分上の点を求め、新たに求めたその点から別の直線に垂直に下ろす線分上の点を求めるという処理を繰り返すことにより、求まる点は円の中心近くに収束する。同様に、球の中心近くの複数の点を通る互いに平行でない多数の平面について考えると、それらの平面と円の中心との距離が十分近ければ、ある点からそれらの平面に下ろす線分上の点を求め、求めたその点から別の平面に垂直に下ろす線分上の点を求め、新たに求めたその点から別の平面に垂直に下ろす線分上の点を求めるという処理を繰り返すことにより、求まる点は球の中心近くに収束する。本発明は、これらの現象を用いることにより統計処理を用いることなく磁気センサのオフセットを求めている。
また、磁気センサが検出している地磁気の強さのみが変化する前後では、磁気センサの真のオフセットに対応する点から磁気データを成分とする点までの距離は変化する。しかし、地磁気の強さが変化する前に磁気センサから出力される２つの磁気データを成分とする２点の垂直二等分面又は垂直二等分線と、地磁気の強さが変化した後に磁気センサから出力される２つの磁気データを成分とする２点の垂直二等分面又は垂直二等分線とは、変化前後の各２点に対応する地磁気の検出方向が一致している場合には、一致する。このことから、磁気データを成分とする２点の垂直二等分面又は垂直二等分線を用いてオフセットを求める場合には、求まるオフセットの精度は地磁気の強さの変化の影響を受けにくいということがいえる。本発明は、この現象を用いることによりオフセットを求める精度を上げている。
【０００９】
（２）上記目的を達成するための磁気センサ制御装置において、前記オフセットを設定する手段は、前記基点を更新する処理を複数の前記垂直二等分面又は前記垂直二等分線について前記垂直二等分面又は前記垂直二等分線の算出順に１回ずつ繰り返してもよい。
【００１０】
（３）上記目的を達成するための磁気センサ制御装置において、前記オフセットを設定する手段は、前記基点を更新する処理を各前記垂直二等分面又は各前記垂直二等分線について複数回ずつ繰り返してもよい。
基点を更新する処理を各前記垂直二等分面又は各前記垂直二等分線について複数回ずつ繰り返すことにより、オフセットを求めるために用いられる磁気データが少ない段階であっても、基点の更新処理によって基点を真のオフセットに対応する点の近くに収束させることができる。
【００１１】
（４）上記目的を達成するための磁気センサ制御装置において、予め決められた所定距離以上離れた２点に対応する２つ１組の前記磁気データを入力順に選抜する手段をさらに備えてもよい。前記垂直二等分面又は前記垂直二等分線を算出する手段は、選抜された前記磁気データの組毎に前記垂直二等分面又は前記垂直二等分線を算出してもよい。
磁気データ自体の誤差に着目すれば、オフセットに対応する基点を更新するために用いられる垂直二等分面又は垂直二等分線を規定する２点と真のオフセットに対応する点とを結ぶ２直線のなす角が小さいほど、それら２点の垂直二等分面又は垂直二等分線と真のオフセットに対応する点との距離が大きくなる傾向がある。したがって、ある程度離れた２点が１組となるように磁気データを選抜し、各組について垂直二等分面又は垂直二等分線を求めることにより、オフセットを求める精度を上げることができる。また地磁気の強さの変化に着目すれば、１組の要素となる２点に対応する磁気データが出力される時期のずれが小さいほど、それら２点の垂直二等分面又は垂直二等分線と真のオフセットに対応する点との距離が小さくなる。したがって、予め決められた所定距離以上離れた２点の成分になる２つ１組の磁気データを選抜し、選抜された磁気データの組毎に垂直二等分面又は垂直二等分線を算出することにより、オフセットを求める精度を上げることができる。
【００１２】
（５）上記目的を達成するための磁気センサ制御装置において、既に選抜された前記垂直二等分面又は前記垂直二等分線とのなす全ての角が予め決められた所定角度以上になる前記垂直二等分面又は前記垂直二等分線を選抜する手段をさらに備えてもよい。前記オフセットを設定する手段は、選抜された前記垂直二等分面又は前記垂直二等分線について前記基点を更新する処理を繰り返してもよい。
オフセットに対応する基点を更新するために連続して用いられる２つの垂直二等分面又は垂直二等分線が平行に近いほど、それらが交わる線又は点と真のオフセットに対応する点との距離は大きくなる。本発明では、基点を垂直二等分面又は垂直二等分線が交わる線又は点の近くに収束させるアルゴリズムを採用しているため、オフセットに対応する基点を更新するために連続して用いられる２つの垂直二等分面又は垂直二等分線のなす角はある程度大きいことが望ましい。したがって、既に選抜された垂直二等分面又は垂直二等分線とのなす全ての角が予め決められた所定角度以上になる垂直二等分面又は垂直二等分線を選抜し、選抜された垂直二等分面又は垂直二等分線について基点を更新する処理を繰り返すことが望ましい。
【００１３】
（６）上記目的を達成するための磁気センサ制御装置において、前記オフセットを設定する手段は、前記基点から前記垂直二等分面又は前記垂直二等分線に下ろす垂線の足に前記基点を更新してもよい。
基点から垂直二等分面又は垂直二等分線に下ろす垂線の足に基点を更新することにより、ある範囲に基点が収束するまでに基点を更新する回数を低減することができる。
【００１４】
（７）上記目的を達成するための磁気センサ制御装置において、前記オフセットを設定する手段は、基点から前記垂直二等分面又は前記垂直二等分線に垂直に下ろす線分上の内分点に前記基点を更新してもよい。
一時的な外乱によって真のオフセットに対応する点から遠い垂直二等分面又は垂直二等分線が求められた場合には、それらを用いて基点の更新処理が行われると、外乱によるオフセットの算出誤差が発生する。基点から垂直二等分面又は垂直二等分線に垂直に下ろす線分上の内分点に基点を更新することにより、そのような誤差を低減することができる。
【００１５】
（８）上記目的を達成するための磁気センサ制御装置において、前記オフセットを設定する手段は、前記基点を更新する処理を、前記基点から前記垂直二等分面又は前記垂直二等分線に垂直に下ろす線分の長さが所定値以下になるまで繰り返し、最後の前記基点の成分に基づいて前記オフセットを設定してもよい。
更新される基点の分布範囲の広さは更新処理を無限に繰り返しても０に収束することはない。したがって、地磁気が一定の状況では、基点の更新処理をある程度の回数繰り返すと、それ以上の更新処理は無駄になる。したがって、基点から垂直二等分面又は垂直二等分線に垂直に下ろす線分の長さが所定値以下になるまで繰り返し、最後の基点の成分を磁気データのオフセットとして設定することは合理的である。
【００１６】
尚、本発明に備わる複数の手段の各機能は、構成自体で機能が特定されるハードウェア資源、プログラムにより機能が特定されるハードウェア資源、又はそれらの組み合わせにより実現される。また、これら複数の手段の各機能は、各々が物理的に互いに独立したハードウェア資源で実現されるものに限定されない。また、本発明は装置の発明として特定できるだけでなく、プログラムの発明としても、そのプログラムを記録した記録媒体の発明としても、方法の発明としても特定することができる。尚、請求項に記載された方法の各動作の順序は、技術上の阻害要因がない限り、記載順に限定されるものではなく、どのような順番で実行されてもよく、また同時に実行されてもよい。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施形態に係るフローチャート。
【図２】本発明の実施形態に係る模式図。
【図３】本発明の実施形態に係るブロック図。
【図４】本発明の実施形態に係るブロック図。
【図５】本発明の実施形態に係る模式図。
【図６】本発明の実施形態に係る模式図。
【図７】本発明の実施形態に係るフローチャート。
【図８】本発明の実施形態に係るフローチャート。
【図９】本発明の実施形態に係る模式図。
【図１０】本発明の実施形態に係る模式図。
【図１１】本発明の実施形態に係る模式図。
【発明を実施するための形態】
【００１８】
以下、実施例に基づいて本発明の実施の形態を説明する。
本実施例では、３次元磁気センサの出力に含まれる、それが搭載されている移動体の着磁成分と磁気センサ自体の測定誤差を打ち消すためのオフセットを求める。オフセットを求めるためには、３次元磁気センサの出力である磁気データを成分とするベクトル空間内の無数の点の集合を球面として近似する。この球面を方位球の球面というものとする。また測定誤差のない理想的な３次元磁気センサの出力である磁気データを成分とするベクトル空間内の無数の点の集合を真の方位球の球面というものとする。本実施例では、方位球の中心点の成分がオフセットとして算出される。
【００１９】
１．ハードウェア構成
図２は本発明が適用される移動体の一例である携帯型電話機１の外観を示す模式図、図３は携帯型電話機１のブロック図である。携帯型電話機１には３次元磁気センサ４が搭載されている。３次元磁気センサは互いに直交するｘ、ｙ、ｚの３方向の磁界のベクトル成分を検出することによって磁界の方向および強さを検出する。ディスプレイ５には、文字や画像の各種情報が表示される。例えばディスプレイ５には、地図と方位を示す矢印や文字が表示される。
【００２０】
制御部４５は、ＣＰＵ４０とＲＯＭ４２とＲＡＭ４４とを備えている所謂コンピュータであって、磁気センサ制御装置を構成している。ＣＰＵ４０は、携帯型電話機１の全体制御を司るプロセッサである。ＲＯＭ４２は、ＣＰＵ４０によって実行される磁気センサ制御プログラムや、移動体の機能を実現するための種々のプログラム、例えばナビゲーションプログラムが格納されている、不揮発性の記憶媒体である。磁気センサ制御プログラムは、３次元磁気センサ４から出力される磁気データに基づいてナビゲーションプログラム等に方位データを提供するためのプログラムである。方位データは地磁気の方向を示す２次元ベクトルデータである。尚、方位データは３次元ベクトルデータとしてナビゲーションプログラムに提供されてもよい。磁気センサ制御プログラムのモジュール群にはオフセット設定プログラムが含まれている。オフセット設定プログラムは３次元磁気センサ４から出力される磁気データを補正するためのオフセットを設定するプログラムである。ＣＰＵ４０が磁気センサ制御プログラムを実行するとき、ＣＰＵ４０、ＲＡＭ４４及びＲＯＭ４２は磁気センサ制御装置として機能する。ナビゲーションプログラムは、現在地から目的地までの周辺地図を表示する周知のプログラムである。地図の認識のし易さから、地図は現実の方位に地図上の方位が一致するように画面表示される。したがって例えば、携帯型電話機１が回転すると、ディスプレイ５に表示される地図は地面に対して回転しないようにディスプレイ５に対して回転する。このような地図の表示処理に方位データが用いられる。もちろん、方位データは、単に方位を文字や矢印で表示するためにのみ用いられてもよい。ＲＡＭ４４はＣＰＵ４０の処理対象となるデータを一時的に保持する揮発性の記憶媒体である。種々のプログラムは、その一部又は全部をネットワークを介した通信によってＲＯＭ４２に格納されてもよい。尚、磁気センサ制御装置と３次元磁気センサ４とを１チップの磁気測定装置として構成することもできる。
【００２１】
アンテナ１３、ＲＦ部１０、変復調部１２及びＣＤＭＡ部１４は、基地局と携帯型電話機１とでＣＤＭＡ方式の通信を行うための回路である。
音声処理部１８は、マイクロホン１６から入力されるアナログ音声信号のＡＤ変換と、スピーカ５０にアナログ音声信号を出力するためのＤＡ変換を行う回路である。
ＧＰＳ受信部２０は、アンテナ２１で受信されたＧＰＳ衛星からのＧＰＳ電波を処理し、現在位置の緯度経度を出力する回路である。
キー入力部４８は、文字入力キーを兼ねたダイヤルキー、カーソルキー等を備える。
電子撮像部５２は、図示しない光学系、撮像素子、ＡＤ変換器等で構成されている。
表示部５４は、ＬＣＤ等のディスプレイ５、図示しない表示制御回路等で構成され、携帯型電話機１の動作モードに応じた各種画面をディスプレイ５に表示する。
報知部５８は、図示しない音源回路、着信音スピーカ、バイブレータ、ＬＥＤ等を備え、着信をユーザに報知する。
【００２２】
図４は、３次元磁気センサ４の概略内部構成図である。３次元磁気センサ４は、地磁気による磁界ベクトルのｘ方向成分、ｙ方向成分、ｚ方向成分をそれぞれ検出するためのｘ軸センサ３０とｙ軸センサ３２とｚ軸センサ３４とを備えている。ｘ軸センサ３０、ｙ軸センサ３２及びｚ軸センサ３４は、いずれも巨大磁気抵抗効果素子、ホール素子等で構成され、指向性のある１次元磁気センサであればどのようなものであってもよい。ｘ軸センサ３０、ｙ軸センサ３２およびｚ軸センサ３４は、それぞれの感度方向が互いに直交するように固定されている。ｘ軸センサ３０、ｙ軸センサ３２、ｚ軸センサ３４、温度センサ３６の出力は、切換部２４によって択一的に選択され増幅器２５で増幅された後にＡ／Ｄ変換器２６によってＡＤ変換される。ｘ軸センサ３０、ｙ軸センサ３２、ｚ軸センサ３４、温度センサ３６の出力に対応するｘ軸磁気データ、ｙ軸磁気データ、ｚ軸磁気データ、温度データは、磁気センサＩ／Ｆ２７によってバス１１に出力される。温度データはオフセットの設定に用いたり、ｘ軸磁気データ、ｙ軸磁気データ、ｚ軸磁気データのそれぞれの温度補正に用いることが可能である。ｘ軸磁気データ、ｙ軸磁気データ及びｚ軸磁気データの３成分で構成される３次元磁気センサ４の出力データを磁気データというものとする。
【００２３】
２．第一のオフセット設定方法
図１は、本発明を適用した第一のオフセット設定方法における処理の流れを示すフローチャートである。図１に示す処理は、ナビゲーションプログラムの起動時、着信時、一定時間毎等に起動されるオフセット設定プログラムが制御部４５によって実行されることによって進行する。
【００２４】
ステップＳ１００では最初の基点が設定される。基点はｘｙｚの３成分を有する座標としてデータ構造体に記憶され、ベクトル空間における特定の点の位置を示す。最初の基点は任意に設定しうるが、例えば、ナビゲーションプログラムの前回の終了時に設定されていたオフセットを基点として設定したり、工場出荷時に測定されたオフセットを最初の基点として設定しておくことができる。データ構造体や変数の値は、ＲＡＭ４４に記憶される。
【００２５】
ステップＳ１０２では、磁気データが制御部４５に入力され、入力された磁気データがｐ1に設定される。磁気データは、ｘｙｚの３成分を有する座標としてデータ構造体ｐ1に記憶され、ベクトル空間における特定の点の位置を示す。
ステップＳ１０４では、磁気データが制御部４５に入力され、入力された磁気データがｐ2に設定される。ｐ1に設定される磁気データが入力されてから、ｐ2に設定される磁気データが入力されるまでの時間間隔は任意に設定することができる。磁気データは、ｘｙｚの３成分を有する座標としてデータ構造体ｐ2に記憶され、ベクトル空間における特定の点の位置を示す。
【００２６】
ステップＳ１０６では、ｐ1とｐ2との距離が算出され、その距離が所定値より大きいかが判定される。算出された距離が所定値以下であればステップＳ１０４の処理によって再び磁気データが入力され、新たに入力された磁気データによってｐ2が更新される。
ｐ1とｐ2の距離が近すぎる場合、３次元磁気センサ４自体の測定誤差や３次元磁気センサ４の出力をディジタル値で取り出す際の計算誤差等の影響によって真の方位球の球面からｐ1とｐ2がわずかに離れるだけでｐ1とｐ2の垂直二等分面と真のオフセットに対応する点との距離が大きく離れるため（図５の一点鎖線参照）、その垂直二等分面を用いてオフセットを算出すると、算出されたオフセットと真のオフセットとの誤差が大きくなる。ステップＳ１０６の処理では、あまりに近い２点の垂直二等分面がオフセットの設定に用いられることがないように、入力された磁気データが選抜される。またステップＳ１０６の処理では、垂直二等分面を算出するための磁気データが入力順に組み合わせられるため、１つの垂直二等分面が求まる１組の磁気データに対応する磁界強度の差を低減することができる。したがって、そのようにして求めた垂直二等分面を用いてオフセットを算出することにより、測定中に地磁気の強さの変動の影響を受けにくくなるため、精度良くオフセットを設定することができる。これに対し、入力順があまりに遠い２点の垂直二等分面を算出する場合、測定期間中に２点に対応する各磁気データの地磁気の強さが異なる可能性があるので、算出される垂直二等分面と真のオフセットに対応する点との距離が大きくなる垂直二等分面が算出されるおそれがある。
【００２７】
ステップＳ１０８では、ｐ1とｐ2の垂直二等分面が算出される。ｐ1を（ｘ1，ｙ1，ｚ1）、ｐ2を（ｘ2，ｙ2，ｚ2）とすると、ｐ1ｐ2の垂直二等分面の式は以下の式（１）の通りである。
【数１】
2011095277.tif 000003
【００２８】
算出した垂直二等分面を後の計算で用いるためには、平面方程式ａｘ＋ｂｙ＋ｃｚ＋ｄ＝０の各定数として、以下の式（２）で表される変数ａ，ｂ，ｃ，ｄを算出し記憶すればよい。
【数２】
2011095277.tif 000004
【００２９】
尚、後続のステップＳ１１２では、ステップＳ１０８で連続して算出される２平面を用いて処理が行われるため、今回の平面方程式と前回の平面方程式を別々に記憶するための変数ａ1，ｂ1，ｃ1，ｄ1，ａ2，ｂ2，ｃ2，ｄ2を用意し、今回の平面方程式を記憶するための変数ａ1，ｂ1，ｃ1，ｄ1に格納されている前回算出された平面方程式の定数を、前回の平面方程式を記憶するための変数ａ2，ｂ2，ｃ2，ｄ2に格納し直す処理が必要になる。
【００３０】
ステップＳ１１０、１１２では、二回目以降に算出された垂直二等分面について、今回算出された垂直二等分面と前回算出された垂直二等分面のなす角θが所定値αより大きいかが判定される。２平面のなす角θが所定値α以下であれば、前回算出された垂直二等分面とのなす角θがαより大きくなる垂直二等分面が算出されるまで、新たな磁気データの入力と垂直二等分面の算出が繰り返される。
【００３１】
２平面のなす角を求めることは、それぞれの平面の法線ベクトルのなす角を求めることと等価である。したがって、今回算出された垂直二等分面ａ1ｘ＋ｂ1ｙ＋ｃ1ｚ＋ｄ1＝０と、前回算出された垂直二等分面ａ2ｘ＋ｂ2ｙ＋ｃ2ｚ＋ｄ2＝０と、それらのなす角θの関係は、以下の式（３）の通りである。
【数３】
2011095277.tif 000005
【００３２】
したがって、二平面のなす角θが所定値α（α＜π／２）より大きいかを判定するためには、以下の式（４）の関係が成立しているか否かを計算により判定すればよい。
【数４】
2011095277.tif 000006
【００３３】
連続して算出された垂直二等分面のなす角が図６に示すようにあまりに小さい場合、それら２平面の真のオフセットからの距離が近くても２平面は真のオフセットから遠い位置で交わる。本実施形態で採用されているアルゴリズムは、更新される基点の軌跡が平面の交わる直線に向かう性質を有するため、交わる直線が真のオフセットに対応する点から遠くなる可能性のある２平面を用いて基点の更新を行うことはオフセットの算出精度を落とす原因になる。また、ほぼ平行な２平面を用いて基点を更新しても、基点が真のオフセットに向かって動きにくいということもある。ステップＳ１１２では、このような問題を解決するために、算出された平面の選抜が行われている。
【００３４】
ステップＳ１１４では、基点から今回算出された垂直二等分面に下ろした垂線の足の座標が求められ、その足に基点が更新される。基点の座標を（ｘ0，ｙ0，ｚ0）とすると、その基点から今回算出された垂直二等分面ａ1ｘ＋ｂ1ｙ＋ｃ1ｚ＋ｄ1＝０に下ろした垂線の足の座標（ｘa，ｙa，ｚa）は以下の式（５）によって求まる。
【数５】
2011095277.tif 000007
【００３５】
ステップＳ１１４の処理が繰り返されると、順次更新される基点は図５に示す軌跡を辿って徐々に狭い範囲に収束する。図５では、ｆ1からｆ4は垂線が下ろされた垂直二等分面を示し、ｆの添え字は垂直二等分面の算出順を示している。また、破線は基点の更新軌跡を示している。なお、ｆ5以降の垂直二等分面は省略されている。本実施形態で採用されているアルゴリズムでは、オフセットを算出するための母集団要素数（磁気データの数）が少なくても、母集団要素数に応じた正確さでオフセットを算出できる。また、本実施形態で採用されているアルゴリズムでは、垂直二等分面を用いてオフセットが算出されるため、地磁気の強さの変化によってオフセットの算出精度が落ちにくい。例えば、地磁気の強さが変化して真の方位球の球面がＳ1からＳ2に変化したと仮定する。真の方位球の球面がＳ2であるときに入力される磁気データに対応するｐ1、ｐ2（図５で黒丸で示されている点）の垂直二等分面は、真の方位球の球面がＳ1であるときに同一の姿勢とタイミングで入力される磁気データに対応する点（図５で三角形で示されている点）の垂直二等分面に一致する。したがって、本実施形態では地磁気の強さが変化しても、オフセットの算出精度が落ちにくい。
【００３６】
ステップＳ１１６では、基点の更新回数が予め決められた所定回数に達しているかが判定される。
基点の更新回数がある程度多くなれば、基点は真のオフセットに対応する点に近い狭い範囲に収束していると考えられる。そこで、基点の更新回数が所定回数に達した場合には、基点の成分がオフセットとして設定される（ステップＳ１１８）。
【００３７】
オフセットが初めて設定された以後も上述の処理が繰り返され、都度オフセットが更新される。オフセットの更新は何度繰り返されてもよいし、所定回数で更新処理がうち切られてもよい。また、基点の更新回数に関わらずにオフセットが設定されてもよい。このようにして設定されるオフセットは、方位データを利用するプログラムが必要とするタイミングで利用される。尚、方位データを利用するプログラムの要求に応じて上述のようにして１度だけオフセットを設定してもよい。いずれにしても、本実施形態では、３次元磁気センサ４の出力に基づいてそのオフセットが設定されるため、キャリブレーション中に３次元磁気センサ４のｘｙ軸が水平面上を回転している必要はない。したがって、キャリブレーションのためにユーザに特定の操作を強いる必要はない。このことから、３次元磁気センサのキャリブレーションでは、キャリブレーションにどれだけ時間を掛けてもよいし、どのようなタイミングでキャリブレーションを実行してもよいことになる。キャリブレーションにおける操作方法やタイミングをユーザに案内しない場合、キャリブレーション中に磁界の強さが変動することが想定される。本実施形態では、垂直二等分面を用いてオフセットが算出されるため、仮にキャリブレーション中に磁界の強さが変動したとしても、上述したようにオフセットの算出精度が落ちにくい。
【００３８】
３．第二のオフセット設定方法
図７及び図８は、本発明を適用した第二のオフセット設定方法における処理の流れを示すフローチャートである。第二のオフセット設定方法が第一のオフセット設定方法と異なる主な点は、所定数（例えば５個）の垂直二等分面からなる１つの垂直二等分面群を繰り返し用いて基点を更新する点である。図７及び図８に示す処理は、オフセット設定プログラムが制御部４５によって実行されることによって進行する。
【００３９】
ステップＳ２００では、最初の基点が設定され、カウンタｉが１に設定される。カウンタｉは、基点更新に繰り返し用いられる垂直二等分面群を蓄積する第一のループ処理の繰り返し数である。
ステップＳ２０２からステップＳ２１２まで、第一のオフセット設定方法で説明されたステップＳ１０２からステップＳ１１２までの処理と同様の処理が実行される。
【００４０】
ステップＳ２１４では、今回算出された垂直二等分面がｆiとして記憶される。すなわち、今回算出された垂直二等分面が、基点更新に繰り返し用いられる垂直二等分面群の第ｉ番目の要素として記憶される。具体的には、今回算出された垂直二等分面の式の各定数がａi，ｂi，ｃi，ｄiの各変数に格納される。
ステップＳ２１８でｉがインクリメントされながら垂直二等分面の算出が繰り返され、ｎ番目の垂直二等分面ｆnが記憶されると（ステップＳ２１６で肯定判定される場合）、ｎ個の垂直二等分面について以下のように基点の更新処理が開始される。ｎは１つの垂直二等分面群の構成要素数を規定する定数である。
【００４１】
ステップＳ２２０ではカウンタｊが１に設定される。カウンタｊはｎ個の垂直二等分面のそれぞれを基点更新に繰り返し用いる回数を制限するためのカウンタである。ｎ個の垂直二等分面が十分近い範囲で交わっていない場合は、それらの垂直二等分面を何度繰り返し用いて基点更新したとしても、基点は真のオフセットに対応する点に近い狭い範囲に収束しない。したがって、このような場合にはオフセットを求めるために用いる垂直二等分面群を更新することが望ましい。カウンタｊを用いるのはこのような理由による。
【００４２】
ステップＳ２２２ではｇに現在の基点の座標が設定される。ｇは概念的には基点更新の終了判定がなされる時点で最後から２番目に算出された基点である。具体的にはｇは３成分を有する現在の基点の座標が格納されるデータ構造体である。
ステップＳ２２４では、変数ｌmaxが０に、カウンタｉが１に設定される。ｌmaxは基点更新の終了判定に用いる距離が格納される変数である。ｉは要素数がｎ個である１つの垂直二等分面群について１番目の垂直二等分面からｎ番目の垂直二等分面まで、順次垂線の足を求める対象となる垂直二等分面を特定するためのカウンタである。
【００４３】
ステップＳ２２６では、基点から垂直二等分面ｆiに下ろした垂線の足の座標が求められ、その足に基点が更新される。
ステップＳ２２８では、更新された基点と更新前の基点ｇとの距離ｌが算出され、距離ｌがｌmaxより大きいか否かが判定される。
今回算出された距離ｌがｌmaxより大きければ、ｌmaxはｌに更新される（ステップＳ３０）。
【００４４】
ステップＳ２３２では、ｎ個の垂直二等分面を用いて基点を更新する処理が一巡したかが判定される。具体的にはｉとｎの一致判定が行われる。
ステップＳ２３４でｉがインクリメントされながらｎ個の垂直二等分面からなる１つの垂直二等分面群を用いて基点を更新する処理が一巡すると、その垂直二等分面群を用いて基点を更新する処理の終了判定が次のように実行される。
【００４５】
ステップＳ２３６では、ｌmaxが予め決められた所定値以下（例えば２μＴ程度以下）であるかが判定される。ｌmaxには、ｎ個の垂直二等分面からなる１つの垂直二等分面群を用いて基点を更新する処理が一巡する過程で算出された２つの基点間距離の最大値が格納されている（図９参照）。１つの垂直二等分面群を用いて基点が更新される過程において１度の更新によって基点が移動する最大距離が小さければ、狭い範囲に基点が収束していると考えられる。したがって、ｌmaxがある程度小さくなったことをもって真のオフセットに対応する点に近い基点が求まっていると判定することができる。
【００４６】
ｌmaxが予め決められた所定値以下であれば、最後に求められた基点の成分がオフセットとして設定される（ステップＳ２４２）。
ｌmaxが予め決められた所定値以下でなければ、カウンタｊがインクリメントされながら（ステップＳ２４０）、ｎ個の垂直二等分面からなる１つの垂直二等分面群を用いて基点を更新する処理が繰り返される（図１０参照）。
【００４７】
１つの垂直二等分面群を用いて基点を更新する処理が予め決められた回数（例えば２０回）だけ巡回してもｌmaxが予め決められた所定値以下にならなければ（ステップＳ２３８で肯定判定される場合）、記憶されている１つの垂直二等分面群が破棄されてステップＳ２０２の処理に戻る。その後、上述したように磁気データの入力処理、ｎ個の垂直二等分面の蓄積処理が繰り返され、ｎ個の垂直二等分面が新たに蓄積されると、新たに蓄積された１つの垂直二等分面群について基点の更新処理が上述したように繰り返される。
【００４８】
３．第三のオフセット設定方法
図１１は本発明を適用した第三のオフセット設定方法を示す模式図である。第三のオフセット設定方法が第一のオフセット設定方法及び第二のオフセット設定方法と異なる点は、基点を垂直二等分面に下ろす垂線の足で更新するのではなく、基点から垂直二等分面に垂直に下ろす線分の内分点で基点を更新する点である。第三のオフセット設定方法は、第一のオフセット設定方法にも第二のオフセット設定方法にも適用可能である。
【００４９】
図１１では第二のオフセット設定方法において基点から垂直二等分面に垂直に下ろす線分の中点で基点が更新される場合に基点が辿る軌跡が破線で示されている。ただし内分点を１：２、２：１、１：３、３：１とどのように設定するかは設計事項である。図１１に示されるように、真のオフセットから遠い垂直二等分面ｆ4を用いて基点の更新処理が行われる場合、各垂直二等分面に下ろす足で基点が更新されると、真のオフセットに対応する点からやや遠い範囲にまで基点（軌跡の屈曲点に相当する）が分布する。これに対し、真のオフセットから遠い垂直二等分面ｆ4に垂直に下ろす線分の内分点で基点が更新される場合には、真のオフセットに対応する点からより近い範囲に基点が分布する。したがって、基点から垂直二等分面に垂直に下ろす線分の内分点で基点を更新することにより、真のオフセットに対応する点から遠い基点の成分でオフセットが設定されることを防止できる。
【００５０】
４．他の実施形態
以上、本発明を３次元磁気センサに適用した例について説明したが、本発明は２次元磁気センサに適用することもできる。また、オフセットの精度を上げるためには磁気データ及び垂直二等分面の選抜を行った方がよいが、必ずしもこれらの選抜を行わなくてもよいし、本実施形態で説明された例とは別の数学的処理によって選別することもできる。また、第二のオフセット設定方法においてキャリブレーションの終了判定を例示していたが、説明された終了判定は第一のオフセット設定方法にも適用できる。
【符号の説明】
【００５１】
１：携帯型電話機、４：３次元磁気センサ、２４：切換部、２５：増幅器、２６：Ａ／Ｄ変換器、２７：磁気センサＩ／Ｆ、３０：ｘ軸センサ、３２：ｙ軸センサ、３４：ｚ軸センサ、４０：ＣＰＵ、４２：ＲＯＭ、４４：ＲＡＭ、４５：制御部（磁気センサ制御装置）
【図１】
2011095277.tif 000008
【図２】
2011095277.tif 000009
【図３】
2011095277.tif 000010
【図４】
2011095277.tif 000011
【図５】
2011095277.tif 000012
【図６】
2011095277.tif 000013
【図７】
2011095277.tif 000014
【図８】
2011095277.tif 000015
【図９】
2011095277.tif 000016
【図１０】
2011095277.tif 000017
【図１１】
2011095277.tif 000018