<<第1実施形態>>
以下、本発明の第1実施形態の例を、図面を参照して具体的に説明する。参照される各図において、同一の部分には同一の符号を付し、同一の部分に関する重複する説明を原則として省略する。尚、本明細書では、記述の簡略化上、情報、信号、物理量又は部材等を参照する記号又は符号を記すことによって、該記号又は符号に対応する情報、信号、物理量又は部材等の名称を省略又は略記することがある。また、後述の任意のフローチャートにおいて、任意の複数のステップにおける複数の処理は、処理内容に矛盾が生じない範囲で、任意に実行順序を変更できる又は並列に実行できる。
<全体構成>
図1は、本発明の第1実施形態に係る方位角センサ1の全体構成を示すブロック図である。方位角センサ1は、磁気検出部10と、オフセット補正部20と、オフセット導出部30と、方位角演算部40と、を有する。
磁気検出部10は、方位角センサ1が存在する場所における磁気を検出する。検出対象としての磁気は、地磁気を含み、地磁気そのものであると考えても良い。磁気検出部10は、検出対象の磁気をX軸、Y軸、及びZ軸の夫々において検出する3軸磁気検出部である。即ち、磁気検出部10は、検出対象の磁気のX軸成分、Y軸成分及びZ軸成分を検出する磁気センサ10X、10Y及び10Zを含み、3軸の磁気検出データ(Hx,Hy,Hz)を生成及び出力する。磁気検出部10から出力されるHx、Hy、Hzは、夫々、磁気検出部10にて検出された磁気のX軸成分、Y軸成分、Z軸成分を表す。X軸、Y軸及びZ軸は互いに直交する。尚、磁気センサ10X、10Y、10Zそれぞれの磁気検出素子としては、例えば、ホール素子を利用してもよいし、MR(magnetoresistance)素子を利用しても良い。
オフセット補正部20は、オフセット導出部30から供給されるオフセット値を用いて磁気検出部10から出力された磁気検出データ(Hx,Hy,Hz)を補正して補正後の磁気検出データ(Hx,Hy,Hz)を出力する。この補正をオフセット補正と称する。オフセット値は、磁気検出部10から出力された磁気検出データ(Hx,Hy,Hz)に含まれるオフセット成分(HxOFF,HyOFF,HzOFF)である。つまり、HxOFF、HyOFF、HzOFFは、夫々、磁気検出部10から出力されるHx、Hy、Hzのオフセット成分である。故に、オフセット補正前の磁気検出データのX軸成分、Y軸成分、Z軸成分を夫々Hx、Hy、Hzで表すと共に、オフセット補正後の磁気検出データのX軸成分、Y軸成分、Z軸成分を夫々Hxc、Hyc、Hzcで表したならば、“Hxc=Hx−HxOFF”、“Hyc=Hy−HyOFF”、“Hzc=Hz−HzOFF”、となる。以下では、説明の明確化上、オフセット補正前の磁気検出データ(Hx,Hy,Hz)を特に原磁気検出データと称することがあり、オフセット補正後の磁気検出データ(Hx,Hy,Hz)を特に補正磁気検出データと称することがある。
オフセット導出部30は、原磁気検出データ又は補正磁気検出データに基づきオフセット値(HxOFF,HyOFF,HzOFF)を導出及び設定し、また必要に応じてオフセット値(HxOFF,HyOFF,HzOFF)を更新する。
方位角演算部40は、補正磁気検出データ(Hx,Hy,Hz)に基づき方位角データSoを生成及び出力する。方位角データSoは、X軸、Y軸及びZ軸から成る3軸座標系(換言すれば3軸の座標空間)において、検出対象の磁気(地磁気)がどの向きを向いているのかを表す。より具体的には例えば、方位角データSoは、X軸の向きと地磁気の向きとの関係を表して良い。
磁気検出部10は、磁気の検出を周期的に行って、次々と最新の原磁気検出データ(Hx,Hy,Hz)を生成及び出力する。これに伴い、オフセット補正部20も周期的に最新の補正磁気検出データ(Hx,Hy,Hz)を生成及び出力し、方位角演算部40も周期的に最新の方位角データSoを生成及び出力する。
尚、図1では、オフセット補正部20、オフセット導出部30及び方位角演算部40を各々独立した処理ブロックとして描写したが、これらの処理ブロックは、CPU(central processing unit)やDSP(digital signal processor)などを用いて一元的に実現されうる。
<オフセット導出処理>
図2を参照し、オフセット導出部30にて実行可能なオフセット導出処理を説明する。図2は、当該オフセット導出処理に係る3軸の座標空間図(XYZ座標空間図)である。1つの磁気検出データ(Hx,Hy,Hz)は、3軸座標系(即ちX軸、Y軸及びZ軸を座標軸とするXYZ座標系)上の1つのデータ点として取り扱われる。オフセット導出処理では、3軸座標系上のデータ点として順次取得される3軸の磁気検出データ(Hx,Hy,Hz)におけるN個のデータ点がN個の評価データ点として参照される。Nは2以上の任意の整数であり、図2の例では“N=7”とされている。つまり、互いに異なる7つのデータ点P1〜P7が第1〜第7の評価データ点として参照される。尚、磁気検出部10の精度が高ければ、参照される評価データ点の個数が少なくてもオフセット導出に関し十分な精度が得られる。
各評価データ点は、補正磁気検出データのデータ点であって良い。この場合、第iの評価データ点であるデータ点Piの座標値は、補正磁気検出データを構成する1つのデータ点の座標値(Hxi,Hyi,Hzi)にて表される(iは整数)。即ち、データ点PiのX軸、Y軸、Z軸の座標値は、補正磁気検出データを構成する1つのデータ点のX軸の座標値Hxi、Y軸の座標値Hyi、Z軸の座標値Hziにて表される(iは整数)。
或いは、各評価データ点は、原磁気検出データのデータ点であって良い。この場合、第iの評価データ点であるデータ点Piの座標値は、原磁気検出データを構成する1つのデータ点の座標値(Hxi,Hyi,Hzi)にて表される(iは整数)。即ち、データ点PiのX軸、Y軸、Z軸の座標値は、原磁気検出データを構成する1つのデータ点のX軸の座標値Hxi、Y軸の座標値Hyi、Z軸の座標値Hziにて表される(iは整数)。
データ点P1〜P7の設定後、データ点P1〜P7から任意に択一された基準データ点を3軸座標系上の原点O(0,0,0)と一致させるようにデータ点P1〜P7が一様に平行移動される。ここでは、データ点P7が基準データ点として択一されるものとする。そうすると、当該平行移動により、基準データ点P7を除いた6個の仮想データ点P1’〜P6’が導出及び設定される。仮想データ点P1’〜P6’は、夫々、平行移動後のデータ点P1〜P6を表す。
次に、3軸座標系において、原点Oを通る曲面H1と仮想データ点P1’〜P6’との距離の総和(計6つの距離の総和)を最小化させる仮想オフセット点C’が求められる。つまり、下記式(1)で表される曲面H1の関数FH1の値を最小化させる仮想オフセット点C’の座標値が算出される。ここで、Hxi’,Hyi’,Hzi’は、夫々、仮想データ点Pi’のX軸、Y軸、Z軸の座標値を表し(iは任意の整数であって、ここでは1以上且つ(N−1)以下の整数)、Hx0’,Hy0’,Hz0’は、夫々、仮想オフセット点C’の X軸、Y軸、Z軸の座標値を表す。尚、ここでは、曲面H1が、仮想オフセット点C’を中心とし且つ原点Oを通る球面であると仮定している(故に、当該球面の半径は、原点Oと仮想オフセット点C’との距離に等しい)。
最後に、先の平行移動分を元に戻すように仮想オフセット点C’を平行移動することにより本来のオフセット点Cが算出される。つまり、データ点P7を原点Oへ移動させる平行移動と、同じ移動量であるが逆の向きに仮想オフセット点C’を平行移動させて得られる点がオフセット点Cである。Hx0、Hy0、Hz0は、夫々オフセット点CのX軸、Y軸、Z軸の座標値を表す。この方法によって導出された(Hx0,Hy0,Hz0)をオフセット値(HxOFF,HyOFF,HzOFF)に代入して(即ち、オフセット値を更新して)オフセット補正部20に供給することが可能である。但し、詳細は後述するが、導出された(Hx0,Hy0,Hz0)の有効性がオフセット導出部30で評価され、無効と判断されると、(Hx0,Hy0,Hz0)が破棄されてオフセット値(HxOFF,HyOFF,HzOFF)の更新は非実行とされる。以下では、オフセット値(HxOFF,HyOFF,HzOFF)との混同を避けるため、オフセット導出処理にて導出された(Hx0,Hy0,Hz0)をオフセット仮決定値と称することがある。
このように、オフセット導出処理では、参照されるN個のデータ点のうち、任意の1点を必ず通る曲面H1を仮定し、曲面H1についての関数値を最小化させるためのパラメータを残りの(N−1)個のデータ点から推定する。従って、球面に関する方程式を直接的に用いてオフセット値を算出するような方法(例えば特許第4391416号公報に記載の方法)と異なり、複雑な演算(平均値演算など)を必要としないので、オフセット値導出に要する演算量が低減され、高速且つ継続的にオフセットをキャンセルすることが可能となる。
尚、3軸の磁気検出データ(Hx,Hy,Hz)をオフセット補正対象とした場合のオフセット導出処理方法を説明したが、当該方法は、2軸の磁気検出データ(Hx,Hy)をオフセット補正対象とした場合にも適用可能である。2軸の磁気検出データ(Hx,Hy)をオフセット補正対象とする場合には、データ点P1〜P7、仮想データ点P1’〜 P6’、仮想オフセット点C’及びオフセット点CにおけるZ軸の座標値を全てゼロとみなし、X軸及びY軸に平行な二次元平面座標系において当該方法を適用すれば良い。
つまり、以下のようにすれば良い。1つの磁気検出データ(Hx,Hy)は、2軸座標系(即ちX軸及びY軸を座標軸とするXY座標系)上の1つのデータ点として取り扱われる。2軸座標系上のデータ点として順次取得される2軸の磁気検出データ(Hx,Hy)について、N個のデータ点がN個の評価データ点として参照される。各評価データ点は、補正磁気検出データのデータ点であって良い。この場合、第iの評価データ点であるデータ点Piの座標値は、補正磁気検出データを構成する1つのデータ点の座標値(Hxi,Hyi)にて表される(iは整数)。即ち、データ点PiのX軸、Y軸の座標値は、補正磁気検出データを構成する1つのデータ点のX軸の座標値Hxi、Y軸の座標値Hyiにて表される(iは整数)。或いは、各評価データ点は、原磁気検出データのデータ点であって良い。この場合、第iの評価データ点であるデータ点Piの座標値は、原磁気検出データを構成する1つのデータ点の座標値(Hxi,Hyi)にて表される(iは整数)。即ち、データ点PiのX軸、Y軸の座標値は、原磁気検出データを構成する1つのデータ点のX軸の座標値Hxi、Y軸の座標値Hyiにて表される(iは整数)。
データ点P1〜P7の設定後、データ点P1〜P7から任意に択一された基準データ点を2軸座標系上の原点O(0,0)と一致させるように、データ点P1〜P7が一様に平行移動される。評価データ点P7が基準データ点として択一されたことを想定する。すると、当該平行移動により、2軸座標系上において、基準データ点P7を除いた6個の仮想データ点P1’〜P6’が導出及び設定される。
次に、2軸座標系において、原点Oを通る曲線H2と仮想データ点P1’〜P6’との距離の総和(計6つの距離の総和)を最小化させる仮想オフセット点C’が求められる。つまり、下記式(2)で表される曲線H2の関数FH2の値を最小化させる仮想オフセット点C’の座標値が算出される。ここで、Hxi’,Hyi’は、夫々、仮想データ点Pi’のX軸、Y軸の座標値を表し(iは任意の整数であって、ここでは1以上且つ(N−1)以下の整数)、Hx0’,Hy0’は、夫々、仮想オフセット点C’の X軸、Y軸の座標値を表す。尚、ここでは、曲線H2が、仮想オフセット点C’を中心とし、且つ、原点Oを通る円であると仮定している(故に、当該円の半径は、原点Oと仮想オフセット点C’との距離に等しい)。
最後に、先の平行移動分を元に戻すように仮想オフセット点C’を平行移動することにより、本来のオフセット点Cが算出される。つまり、データ点P7を原点Oへ移動させる平行移動と、同じ移動量であるが逆の向きに仮想オフセット点C’を平行移動させて得られる点がオフセット点Cである。Hx0、Hy0は、夫々、オフセット点CのX軸、Y軸の座標値を表す。この方法によって導出された(Hx0,Hy0)をオフセット値(HxOFF,HyOFF)に代入して(即ち、オフセット値を更新して)オフセット補正部20に供給することが可能である。但し、3軸で考えた場合と同様、導出された(Hx0,Hy0)の有効性がオフセット導出部30で評価され、無効と判断されると、(Hx0,Hy0)が破棄されてオフセット値(HxOFF,HyOFF)の更新は非実行とされる。以下では、オフセット値(HxOFF,HyOFF)との混同を避けるため、オフセット導出処理にて導出された(Hx0,Hy0)をオフセット仮決定値と称することがある。
<オフセット値更新に関わる動作フロー>
図3を参照し、方位角センサ1におけるオフセット値の更新に関わる動作の流れを説明する。図3は、当該動作の流れを示すフローチャートである。尚、以下では、特に記述無き限り、方位角センサ1では3軸座標系上の磁気検出データが取り扱われるものとする。方位角センサ1にて2軸座標系上の磁気検出データを取り扱う場合には、磁気検出データ及びオフセット値に関するZ軸成分が常にゼロであると考えれば良い。
図3の動作では、まずステップS11において初期値決定処理が実行され、初期値決定処理により、その場の磁気の大きさ|M|が導出される。その場の磁気の大きさは、方位角センサ1の存在位置における磁気の大きさを表し、方位角センサ1の存在位置における地磁気の大きさであると推定される。初期値決定処理では、地磁気の大きさの推定初期値が求められることになる。
図4は、初期値決定処理のフローチャートである。初期値決定処理は、ステップS31〜S34の処理から成る。方位角センサ1又は方位角センサ1を備えた任意の機器(後述の電子機器を含む)には、方位角センサ1または当該機器のユーザから所定操作の入力を受ける操作部(ボタンスイッチ、タッチパネルなど;不図示)が設けられている。ステップS31では、ユーザから所定の開始操作が当該操作部に入力される。この入力後、ユーザは、ステップS32において方位角センサ1をスイング運動させ、その後のステップS33において所定の終了操作を操作部に入力する。終了操作の入力を受けると、ステップS34において、オフセット導出部30により、その場の磁気の大きさ|M|が導出される。方位角センサ1のスイング運動は、方位角センサ1を備えた任意の機器のスイング運動とも読み替えられる。
方位角センサ1のスイング運動とは、実空間上に固定された1つの軸(例えば地磁気の向きに平行な軸)と、方位角センサ1にて定義されたX軸、Y軸及びZ軸の夫々との関係が様々に変化するよう、所謂例えば8の字動作の如く、方位角センサ1を自由にスイングさせる所定の運動を指す。1つの典型例としては、方位角センサ1又は方位角センサ1を備えた任意の機器を水平方向に伸ばしたユーザの腕に固定した状態で、ユーザの重心周りに当該腕を水平面に沿って一周させる運動(図5A参照)と、方位角センサ1又は方位角センサ1を備えた任意の機器をユーザの腕に固定した状態で、ユーザの肩を通り且つ水平方向に平行な軸を回転軸として当該腕を鉛直面に沿って一周させる運動(図5B参照)との組み合わせで、スイング運動が形成されても良い。例えば、図6A及び図6Bに示す如く、スイング運動の中で、地磁気のベクトルがX軸及びY軸に平行な平面内でZ軸周りに1周したならば、その1周の過程において、Hx及びHyの夫々は、正弦波状に変化して極大値と極小値をとる。
オフセット導出部30は、開始操作の入力時点から終了操作の入力時点までの区間を、初期値決定用データ区間として設定する。或いは、開始操作の入力時点から所定時間(例えば10秒)が経過した時点までの区間が初期値決定用データ区間として設定されても良い。この場合、ステップS33における終了操作の入力は不要である。オフセット導出部30は、初期値決定用データ区間において周期的に取得された原磁気検出データ(Hx,Hy,Hz)の集まりを初期値決定用データ群として参照して、初期値決定用データ群に含まれる全てのX軸データHxの内の最大値Hxmax及び最小値Hxminを特定し、且つ、初期値決定用データ群に含まれる全てのY軸データHyの内の最大値Hymax及び最小値Hyminを特定し、且つ、初期値決定用データ群に含まれる全てのZ軸データHzの内の最大値Hzmax及び最小値Hzminを特定した後、下記式(3)に従い、磁気の大きさ|M|を算出する。ここで、max{ }は、{ }内に示された複数の引数(変数)の中の最大値を返す演算子を表す。従って(Hxmax−Hxmin)と(Hymax−Hymin)と(Hzmax−Hzmin)の内の最大値の1/2が|M|として算出される。
尚、Hx、Hy及びHzの夫々は、正と負の値をとる一次元量である。地磁気のベクトルのX軸成分が3軸座標系の原点からX軸の正の向き、負の向きに伸びているとき、検出されたHxは、夫々、正の値、負の値を持つ。Hy及びHzについても同様である。スイング運動が適切に行われたのであれば、多くの場合、Hxmax、Hymax及びHzmaxの夫々は正の値を持つと共にHxmin、Hymin及びHzminの夫々は負の値を持ち、理想的には、(Hxmax−Hxmin)と(Hymax−Hymin)と(Hzmax−Hzmin)は全てその場の地磁気の大きさと一致する。尚、オフセットの大きさによっては、HxmaxとHxminが同符号の値を持つこともある(Hymax及びHyminについても同様であり、Hzmax及びHzminについても同様)。
図3の説明に戻る。ステップS11において、その場の磁気の大きさ|M|が導出されるとステップS12に進む。尚、GPS(global positioning system)を利用するなどして、その場の磁気の大きさが規定値として方位角センサ1に与えられている場合には、その規定値を|M|として取り扱ってステップS12以降の処理を行うようにしても良い(この場合、ステップS11の処理は不要となる)。ステップS12において、オフセット導出部30は、導出された磁気の大きさ|M|に基づき、オフセット導出処理が良好に実施されたかを判定するための校正成功範囲を設定する。校正成功範囲は後に更新されることになるが、ステップS12では初期の校正成功範囲が設定される。例えば、(|M|−Δ)を下限とし且つ(|M|+Δ)を上限とする範囲が初期の校正成功範囲として設定される。或いは例えば、(|M|−k|M|)を下限とし且つ(|M|+k|M|)を上限とする範囲が初期の校正成功範囲として設定される。ここで、Δは正の所定値を持ち、kは1未満の正の所定値(例えば0.1)を持つ。検出対象となる地磁気の大きさ(一般には20〜80μT、日本の屋外では40〜50μT)に応じてΔの値を適切に設定しておくと良い。
ステップS12の後、ステップS13に進む。ステップS13において、オフセット導出部30は、所定のオフセット校正条件が充足しているか否かを判定する。
図7は、オフセット校正条件が充足しているか否かを判定するために、オフセット導出部30によって実行されるオフセット校正条件判定処理のフローチャートである。オフセット校正条件判定処理は、ステップS51〜S57から成り、まずステップS51において、最大値探索データHxA、HyA、HzA及び最小値探索データHxB、HyB、HzBに、全てゼロを代入する。続くステップS52において、オフセット導出部30は最新の磁気検出データ(Hx,Hy,Hz)を取得する。ステップS52において取得される磁気検出データ(Hx,Hy,Hz)は、補正磁気検出データであるが、原磁気検出データであっても良い。なお、図3のステップS17の処理が一度も行われていない状況においては、オフセット値(HxOFF,HyOFF,HzOFF)は(0,0,0)であり、故に、補正磁気検出データと原磁気検出データは互いに等しくなる。
その後、ステップS53〜S55において、オフセット導出部30は、ステップS52で取得した磁気検出データ(Hx,Hy,Hz)を参照して、
“Hx>HxA”ならHxをHxAに代入する一方で “Hx<HxB”ならHxをHxBに代入し、且つ、
“Hy>HyA”ならHyをHyAに代入する一方で “Hy<HyB”ならHyをHyBに代入し、且つ、
“Hz>HzA”ならHzをHzAに代入する一方で “Hz<HzB”ならHzをHzBに代入する。
そしてステップS56において、オフセット導出部30は、第1不等式“(HxA−HxB)≧THx、第2不等式“(HyA−HyB)≧THy”及び第3不等式“(HzA−HzB)≧THz”の成否を判定し、第1〜第3不等式が全て成立する場合に限ってオフセット校正条件が充足したと判定して(ステップS57)オフセット校正条件判定処理を終え、そうでない場合にはステップS52に戻る。THx、THy及びTHzは所定の正の閾値である。即ち、ステップS52〜S56の繰り返しの中で、オフセット校正条件判定処理を開始してからの、磁気検出データ(Hx,Hy,Hz)のX軸成分の最大値HxA及び最小値HxB、Y軸成分の最大値HyA及び最小値HyB並びにZ軸成分の最大値HzA及び最小値HzBが探索及び更新され、X軸、Y軸及びZ軸の夫々について、最大値及び最小値間の差分値が所定の閾値以上となったときにオフセット校正条件が充足したと判定される。
閾値THx、THy及びTHzは、検出対象となる地磁気の大きさ(一般には20〜80μT、日本では40〜50μT)を考慮して、例えば30μT程度に設定することが望ましい。また、閾値THx、THy及びTHzは、互いに同じ値を有していても良いし、互いに異なる値を有していても良い。
図3を再度参照し、オフセット校正条件が充足するまでステップS13の判定が繰り返され(ステップS13のN)、オフセット校正条件が充足すると(ステップS13のY)ステップS14に進み、上述のオフセット導出処理が実行される。つまり、X軸、Y軸及びZ軸の夫々について最大値及び最小値間の差分値が所定の閾値(THx、THy、THz)以上となったときに、オフセット導出処理での使用に適した評価データ点群(3軸の座標空間内において、オフセット点Cを中心に比較的均等に分散したデータ点群)が集まったという判断の下、オフセット導出処理が実行される。このようなアルゴリズムを採用することにより、局所的に偏在しているデータ点群から不適切なオフセット導出結果が得られるといった事態の発生を抑制することができるので、オフセット導出処理の信頼性を高めることが可能となる。
なお、オフセット校正条件が充足されたときにおいて、各軸の最大値HxA、HyA、HzAを与えるデータ点(HxA、Hy,Hz)、(Hx、HyA,Hz)、(Hx、Hy,HzA)を最大データ点と称し、各軸の最小値HxB、HyB、HzBを与えるデータ点(HxB、Hy,Hz)、(Hx、HyB,Hz)、(Hx、Hy,HzB)を最小データ点と称する。図8に、例として、X軸についての最大データ点PxAと最小データ点PxBを示す。
ステップS14でのオフセット導出処理において、7つの評価データ点の内の6つは、HxA、HyA、HzA、HxB、HyB、HzBを与える6つのデータ点である。すなわち、上記第1〜第3不等式が全て成立したときにおける、HxA、HxBをX軸成分として持つ磁気検出データ(HxA,Hy,Hz)、(HxB,Hy,Hz)を第1、第2の評価データ点とし、HyA、HyBをY軸成分として持つ磁気検出データ(Hx,HyA,Hz)、(Hx,HyB,Hz)を第3、第4の評価データ点とし、HzA、HzBをZ軸成分として持つ磁気検出データ(Hx,Hy,HzA)、(Hx,Hy,HzB)を第5、第6の評価データ点とする。第1、第3、第5の評価データ点は、夫々、X軸、Y軸、Z軸についての最大データ点であり、第2、第4、第6の評価データ点は、夫々、X軸、Y軸、Z軸についての最小データ点である。つまり、ステップS14のオフセット導出処理で実際の演算に供されるデータ点は、3軸の最大データ点及び最小データ点から成る第1〜第6の評価データ点と、それらと異なる任意の1点(先述の基準データ点に相当)のみである。従って、オフセット導出部30には、合計7点分のレジスタを用意しておけば足りるので、回路規模又はソフトウェアコードサイズは小さくて済む。
ステップS14でのオフセット導出処理にて参照される第1〜第6の評価データ点としての磁気検出データは、図7のステップS52にて取得されたものであるので、補正磁気検出データ又は原磁気検出データである。第1〜第6の評価データ点が補正磁気検出データにおけるデータ点である場合には、第7の評価データ点も補正磁気検出データにおけるデータ点とされ、第1〜第6の評価データ点が原磁気検出データにおけるデータ点である場合には、第7の評価データ点も原磁気検出データにおけるデータ点とされる。
図9は、原点O(0,0,0)に平行移動される基準データ点の一選択例を示すタイムチャートである。図9において、黒丸印は、3軸の最大値又は最小値に対応する最大データ点又は最小データ点(合計6点)を示しており、白丸印は、それら以外のデータ点を示している。例えば、図9で示したように、データ点P1からデータ点Pmまで3軸の最大値及び最小値を探索し続けた結果(mは整数)、データ点Pmを取得した時点で上記第1〜第3不等式が成立して3軸の最大データ点と最小データ点が全て確定した場合、基準データ点の選択アルゴリズムを最も容易とする観点から言えば、データ点Pmの直後に取得されるデータ点Pm+1を基準データ点(即ち第7の評価データ点)として選択することが望ましい。但し、データ点P1〜Pm−1の何れか1点(最大データ点と最小データ点を除く)を基準データ点として選択することも可能である。
図3の説明に戻り、ステップS14のオフセット導出処理では、第1〜第7の評価データ点に基づきオフセット仮決定値(Hx0,Hy0,Hz0)が導出される。第1〜第7の評価データ点は、図2においてはデータ点P1〜P7に相当するものである。オフセット仮決定値の意義及び導出方法は既に述べた通りである。
ステップS14に続くステップS15において、オフセット導出部30は、最新の原磁気検出データ(Hx,Hy,Hz)とオフセット仮決定値(Hx0,Hy0,Hz0)に基づき、下記式(4)に従って、その場の磁気の大きさ|M’|を求める。第1〜第7評価データ点が原磁気検出データのデータ点である場合には、第1〜第7評価データ点の何れかのデータ(Hx,Hy,Hz)とオフセット仮決定値(Hx0,Hy0,Hz0)に基づき、|M’|を求めても良い。第1〜第7評価データ点が補正磁気検出データのデータ点である場合には、第1〜第7評価データ点の何れかに対応する原磁気検出データ(Hx,Hy,Hz)とオフセット仮決定値(Hx0,Hy0,Hz0)に基づき、|M’|を求めても良い。|M’|は、オフセット仮決定値が真のオフセット値であるとみなしたときの、その場の磁気の大きさを表している。オフセット仮決定値を真のオフセット値とみなしたとき、オフセット補正後の磁気検出データは、(Hx−Hx0,Hy−Hy0,Hz−Hz0)となるので、磁気の大きさ|M’|は下記式(4)により表されることになる。
上述のオフセット校正条件判定処理を経て設定された評価データ点群は、オフセット導出処理での使用に適した評価データ点群(3軸の座標空間内において、オフセット点Cを中心に比較的均等に分散したデータ点群)であることが期待される。しかしながら、設定された評価データ点群に不適当なデータ点(例えば、電気的なノイズや外来磁場の影響を瞬間的に強く受けたデータ点)が混入することもあり、そのような場合には、オフセット仮決定値と真のオフセット値との誤差が大きくなる。オフセット仮決定値と真のオフセット値との誤差が大きくなると、|M’|が異常に大きくなったり異常に小さくなったりする。一方、検出対象の地磁気の大きさは、比較的短い時間内ではあまり変化しないと考えられ、当該大きさが変化するとしても当該大きさは連続的に且つ徐々に変化すると考えられる。よって、前回導出された磁気の大きさから見て今回導出された磁気の大きさが大きく変動している場合においては、オフセット仮決定値と真のオフセット値との誤差が許容範囲を超えて大きいと判断することができる。
当該誤差が許容範囲内にあるか否かを判断するべく、ステップS15に続くステップS16において、オフセット導出部30は、|M’|が校正成功範囲内に収まっているか否かを判断する。後述のステップS17の更新処理が1度も行われていない状況下においては、ステップS12に設定された校正成功範囲がステップS16にて用いられる。ステップS15で求めた|M’|が校正成功範囲内にある場合には(ステップS16のY)ステップS17に進み、ステップS15で求めた|M’|が校正成功範囲を逸脱する場合には(ステップS16のN)ステップS18に進む。例えば、校正成功範囲の下限及び上限が夫々“|M|−Δ”及び“|M|+Δ”であるならば、不等式“|M|−Δ≦|M’|≦|M|+Δ”の成立時にステップS17に進み、該不等式の不成立時にステップS18に進むことになる。
ステップS17において、オフセット導出部30は、オフセット導出処理で求めたオフセット仮決定値(Hx0,Hy0,Hz0)の精度が良好であると判断して(当該オフセット仮決定値が有効であると判断して)、オフセット補正部20に供給するオフセット値(HxOFF,HyOFF,HzOFF)をオフセット仮決定値(Hx0,Hy0,Hz0)にて更新するとともに、ステップS15で求めた磁気の大きさ|M’|に基づいて、校正成功範囲も更新する。具体的には、例えば、校正成功範囲の下限及び上限が夫々(|M’|−Δ)及び(|M’|+Δ)に更新される、或いは、校正成功範囲の下限及び上限が夫々(|M’|−k|M’|)及び(|M’|+k|M’|)に更新される。ステップS17によるオフセット値及び校正成功範囲の更新後、ステップS13に戻る。
ステップS18において、オフセット導出部30は、オフセット導出処理で求めたオフセット仮決定値(Hx0,Hy0,Hz0)の精度が良好でないと判断して(当該オフセット仮決定値が無効であると判断して)、オフセット補正部20に供給するオフセット値(HxOFF,HyOFF,HzOFF)を更新することなく、導出したオフセット仮決定値(Hx0,Hy0,Hz0)を破棄し、また校正成功範囲の更新も行わない。ステップS18によるオフセット仮決定値の破棄の後、ステップS13に戻る。
ステップS17又はS18を経てステップS13に戻った際、オフセット校正条件の充足/不充足の判定が再び行われるが、当該判定を行うためのオフセット校正条件判定処理(図7参照)は、ステップS51から開始される(すなわち、HxA等がゼロにリセットされる)。
ステップS13〜S17の繰り返しによって、オフセット値(HxOFF,HyOFF,HzOFF)及び校正成功範囲は次々と更新されてゆく。図10に示す如く、第j回目の更新より校正成功範囲は第jの校正成功範囲から第(j+1)の校正成功範囲へと更新されることになる(jは自然数)。或る特定のタイミングで求めた|M’|が校正成功範囲内に収まることによって第j回目の更新が行われたとするならば、特定のタイミングで求めた|M’|(即ち、第j回目の更新の際に求めた|M’|)に基づき第(j+1)の校正成功範囲が設定されることになる。具体的には、第(j+1)の校正成功範囲は、特定のタイミングで求めた|M’|を内包する範囲とされる。上記方法では、第(j+1)の校正成功範囲の中心が特定のタイミングで求めた|M’|となるが、第(j+1)の校正成功範囲の中心が特定のタイミングで求めた|M’|から若干ずれることが有り得ても良い。
本実施形態に係る方法によれば、時間的にも空間的にも絶えず変化する方位角センサ1のオフセットが高速且つ継続的にキャンセルし続けられるので、方位角を精度良く検出することが可能となる。この際、オフセット導出処理の導出結果の精度がノイズ(電気的なノイズ、外来磁場による磁気的なノイズ)等の影響によって一時的に良好でなくなった場合には、オフセット導出処理の導出結果(即ちオフセット仮決定値)が破棄されて実際のオフセット補正に利用されないので、一時的であってもオフセット値の精度(ひいては方位角の精度)が劣化することが回避される。
尚、上記のステップS14では、3軸の最大データ点及び最小データ点の何れでもない任意の1点を基準データ点として選択しているが、基準データ点は、3軸の最大データ点及び最小データ点の内の何れか1点であっても構わない。このような構成であれば、オフセット導出処理で実際の演算に供されるデータ点を一つ減らすことができるので、回路規模又はソフトウェアコードサイズを更に縮小することが可能となる。但し、本構成を採用した場合、3軸の最大データ点及び最小データ点の分布状態によっては、オフセット算出精度の低下を招くおそれがある。
図11は、3軸の最大データ点及び最小データ点の何れかを基準データ点として選択する場合の留意点について説明するための3軸の座標空間図である。外来磁場などの影響により、3軸の最大データ点及び最小データ点のうち、何れか一つ(図11では、X軸成分の最大値HxA)が他から大きく乖離する場合がある。他から大きく乖離した最大データ点又は最小データ点が基準データ点として選択されると、基準データ点を原点Oと一致させるための平行移動量が本来の値から大きく乖離してしまう。その結果、オフセット導出処理により正しいオフセット点Cを得ることが難しくなり得る。このような不具合を回避するためには、例えば、3軸の最大データ点及び最小データ点を規定する最大値HxA、HyA及びHzA並びに最小値HxB、HyB及びHzBの絶対値の内、最も大きい絶対値に対応するデータ点及び最も小さい絶対値に対応するデータ点については、基準データ点の選択候補から除外するなどの対策を講じることが望ましい。
図12に、オフセット導出部30の内部ブロック図を示す。オフセット導出部30は、ステップS11及びS12の各処理を実行する初期設定部31と、ステップS13の処理(従って図7のオフセット校正条件判定処理)を実行するオフセット校正条件判定部32と、ステップS14の処理を実行する仮決定値導出部33と、ステップS15〜S18の処理を実行する更新部34と、を備えていると考えることができる。
尚、上述のオフセット導出処理は、原磁気検出データ又は補正磁気検出データにおける複数のデータ点を用いてオフセット仮決定値を導出する一方法に過ぎない。原磁気検出データ又は補正磁気検出データにおける複数のデータ点を用いて原磁気検出データに対するオフセット値を導出する他の任意の方法(例えば特許第4391416号公報に記載の方法)を用いて、本実施形態におけるオフセット仮決定値を導出するようにしても良い。
<電子機器への適用>
方位角センサ1を、電子機器などの任意の機器に搭載することができる。方位角センサ1を備える電子機器は、例えば、携帯電話機(所謂スマートフォンに分類される携帯電話機を含む)、携帯情報端末(所謂タブレット端末に分類される携帯情報端末を含む)、時計(所謂スマートウォッチに分類される時計を含む)、デジタルカメラ、又は、歩数計である。図29、図30及び図31に、各々に方位角センサ1を備えたスマートフォン100、タブレット端末200及びスマートウォッチ300の外観図を示す。電子機器の電子コンパスとして、方位角センサ1を搭載することにより、電子機器及びユーザの向いている向き(より具体的には例えばX軸の向きと地磁気の向きとの関係)を正確に検出することができる。特に、GPS(global positioning system)と電子コンパスを併用すれば、地図アプリケーションソフトウェアやナビゲーションアプリケーションソフトウェアでの位置検出精度を高めることが可能となる。
<本発明の考察>
上述の第1実施形態にて具体化された本発明について考察する。
本発明の一側面に係るオフセット導出装置W1は、3軸又は2軸での磁気の検出により3軸座標系又は2軸座標系上のデータ点として順次取得される原磁気検出データを補正して補正磁気検出データを生成するためのオフセット値を導出するオフセット導出装置(30)であって、前記原磁気検出データ又は前記補正磁気検出データにおける複数のデータ点(第1〜第Nの評価データ点:例えばP1〜P7)を用いて前記オフセット値の仮決定値(オフセット仮決定値)を導出する仮決定値導出部(33)と、前記原磁気検出データ及び前記仮決定値に基づき前記磁気の大きさ(|M’|)を導出し、導出した前記磁気の大きさが所定の基準範囲(校正成功範囲)内にある場合には前記仮決定値にて前記オフセット値を更新する一方(ステップS17)、そうでない場合には前記オフセット値の更新を非実行とする(ステップS18)更新部(34)と、を備えたことを特徴とする。
磁気検出結果にはオフセットが含まれていることが多く、オフセットは時間的にも空間的にも絶えず変化する。時間的にも空間的にも絶えず変化するオフセットをキャンセルし続けるためには、補正磁気検出データを生成するためのオフセット値を次々と更新してゆく必要がある。しかしながら、オフセット値を導出する際、導出結果の精度がノイズ等の影響によって一時的に良好でなくなることがあり、このような場合にもオフセット値の更新を行ったならば、オフセット値による補正を経た補正磁気検出データの誤差(真値との誤差)が大きくなる。
オフセット導出装置W1によれば、複数のデータ点を用いてオフセット値の仮決定値を導出した後、原磁気検出データ及び仮決定値に基づき磁気の大きさの導出を介して仮決定値の妥当性を判断することができ、仮決定値が妥当である場合(即ち導出した磁気の大きさが所定の基準範囲内にある場合)にはオフセット値を更新し、妥当でない場合にはオフセット値の更新を非実行とすることができる。このため、一時的であってもオフセット値の精度が劣化することが抑制される。
<変形等>
本発明の実施形態は、特許請求の範囲に示された技術的思想の範囲内において、適宜、種々の変更が可能である。以上の実施形態は、あくまでも、本発明の実施形態の例であって、本発明ないし各構成要件の用語の意義は、以上の実施形態に記載されたものに制限されるものではない。上述の説明文中に示した具体的な数値は、単なる例示であって、当然の如く、それらを様々な数値に変更することができる。
本発明に係るオフセット導出装置としての又は電子機器としての対象装置を、ソフトウェア、集積回路等のハードウェア、或いは、ハードウェアとソフトウェアの組み合わせによって構成することができる。対象装置にて実現される機能の全部又は一部である任意の特定の機能をプログラムとして記述して、該プログラムを対象装置に搭載可能なフラッシュメモリ等に保存しておいても良い。そして、該プログラムをプログラム実行装置(例えば、対象装置に搭載可能なマイクロコンピュータ)上で実行することによって、その特定の機能を実現するようにしてもよい。上記プログラムは任意の記録媒体に記憶及び固定されうる。上記プログラムを記憶及び固定する記録媒体は対象装置と異なる機器(サーバ機器等)に搭載又は接続されても良い。
<<第2実施形態>>
次に、本発明の第2実施形態について詳細に説明する。
<全体構成>
図13は、本発明の第2実施形態に係る方位角センサ1001の全体構成を示すブロック図である。本構成例の方位角センサ1001は、磁気検出部1010と、オフセット補正部1020と、オフセット算出部1030と、方位角演算部1040と、を有する。
磁気検出部1010は、X軸方向の磁気を検出する磁気センサ1010Xと、Y軸方向の磁気を検出する磁気センサ1010Yと、Z軸方向の磁気を検出する磁気センサ1010Zを含み、3軸の磁気検出データ(Hx,Hy,Hz)を生成する。なお、磁気センサ1010X、1010Y、1010Zそれぞれの磁気検出素子としては、例えば、ホール素子を利用してもよいし、MR[magnetoresistance]素子を利用してもよい。また、X軸、Y軸、Z軸は、互いに直交するように設計すればよい。
オフセット補正部1020は、オフセット算出部1030で算出したオフセット値(=3軸の磁気検出データ(Hx,Hy,Hz)に各々含まれるオフセット成分(Hx0,Hy0,Hz0))を用いて磁気検出データ(Hx,Hy,Hz)を補正する。オフセット補正処理によりHx←Hx−Hx0、Hy←Hy−Hy0、Hy←Hz−Hz0となる。
オフセット算出部1030は、オフセット補正済である磁気検出データ(Hx,Hy,Hz)を常時監視し、磁気検出部1010のオフセット値(Hx0,Hy0,Hz0)を逐次更新する。オフセット算出処理(オフセット更新処理)については後ほど詳述する。
方位角演算部1040は、オフセット補正済みの磁気検出データ(Hx,Hy,Hz)から方位角データSoを生成する。
なお、本図では、オフセット補正部1020、オフセット算出部1030、及び、方位角演算部1040をそれぞれ独立した処理ブロックとして描写したが、これらの処理ブロックは、CPU[central processing unit]やDSP[digital signal processor]などを用いて一元的に実装することができる。
<オフセット算出処理(第1例)>
図14は、オフセット算出部1030におけるオフセット算出処理の第1例を示すXYZ座標空間図である。第1例のオフセット算出処理では、3軸座標空間のデータ点として順次取得される3軸の磁気検出データ(Hx,Hy,Hz)について、N個のデータ点(ただしN≧2であり、本図の例ではデータ点P1〜P7の合計7点(N=7))が参照される。なお、磁気検出部1010の精度が高ければ、データ点数を不要に増やさなくても十分なオフセット算出精度が得られる。
次に、データ点P1〜P7から任意に択一された基準データ点を原点O(0,0,0)と一致させるように、各々のデータ点P1〜P7が一様に平行移動される。本図の例ではデータ点P7が基準データ点として択一されている。このような平行移動により、基準データ点P7を除いた6個(=N−1個)の仮想データ点P1’〜P6’が導出される。
次に、原点Oを通る曲面H1と各々の仮想データ点P1’〜P6’との距離の総和が最小となる仮想オフセット点C’が算出される。具体的に述べると、仮想データ点Pi’を(Hxi’,Hyi’,Hzi’)(本図の例ではi=1〜6)とし、仮想オフセット点C’を(Hx0’,Hy0’,Hz0’)としたときに、次の(5)式で表される曲面H1の関数を最小化するような仮想オフセット点C’が算出される。
なお、上記(5)式で表される曲面H1の関数は、仮想オフセット点C’を中心とする半径rの球面が原点Oを通る(r=|OC’|)と仮定して導出されたものである。
最後に、先の平行移動分を元に戻すように仮想オフセット点C’を平行移動することにより、本来のオフセット点C(Hx0,Hy0,Hz0)(磁気検出部1010のオフセット値に相当)が算出される。
このように、本例のオフセット算出処理では、参照されるN個のデータ点のうち、任意の1点を必ず通る曲面H1の関数を仮定した上で、その値を最小化するためのパラメータを残り(N−1)個のデータ点から推定する演算手法が採用されている。
従って、球面の方程式を直接的に適用してオフセット値を算出する従来技術と異なり、複雑な演算(平均値演算など)を必要としないので、オフセット補正処理に要する演算量を低減し、高速かつ継続的にオフセットをキャンセルすることが可能となる。
なお、ここでは、3軸の磁気検出データ(Hx,Hy,Hz)をオフセット補正対象とした例を挙げて詳細な説明を行ったが、上記のオフセット算出手法は、2軸の磁気検出データ(Hx,Hy)をオフセット補正対象とした場合にも適用することが可能である。
その場合、原点O(0,0)を通る曲線H2と各々の仮想データ点Pi’との距離の総和が最小となる仮想オフセット点C’を算出すればよい。より具体的に述べると、仮想データ点Pi’を(Hxi’,Hyi’)とし、仮想オフセット点C’を(Hx0’,Hy0’)としたとき、次の(6)式で表される曲線H2の関数を最小化するような仮想オフセット点C’を算出すればよい。
<オフセット算出処理(第2例)>
図15は、オフセット算出部1030におけるオフセット算出処理の第2例を示すフローチャートである。第2例のオフセット算出処理では、第1例のオフセット算出処理(本図ではステップS1005〜S1007に相当)を実行するに先立ち、参照対象として妥当なデータ点群を決定するための前処理(本図ではステップS1001〜S1004に相当)が導入されている。以下、順を追って詳細に説明する。なお、特に言及しない限り、各ステップの実行主体は、オフセット算出部1030であるものとする。
まず、ステップS1001では、オフセット値(Hx0,Hy0,Hz0)の設定ないし更新が行われる。なお、初期値は(0,0,0)である。
次に、ステップS1002では、3軸の磁気検出データ(Hx,Hy,Hz)が常時取得されて、そのオフセット補正が行われる(Hx←Hx−Hx0,Hy←Hy−Hy0,Hz←Hz−Hz0)。なお、本ステップS1002の実行主体は、オフセット補正部1020である。
次に、ステップS1003では、オフセット補正済みの磁気検出データ(Hx,Hy,Hz)を参照して、3軸の最大値・最小値6点が常時探索される。
図16は、3軸の最大値・最小値を示すXYZ座標空間図である。本図の例において、X軸成分の最大値はHx(max)であり、これに対応するX軸最大データ点はPa(Hx(max),*,*)である。一方、X軸成分の最小値はHx(min)であり、これに対応するX軸最小データ点はPb(Hx(min),*,*)である。
なお、本図では明示されていないが、Y軸成分の最大値Hy(max)及び最小値Hy(min)、並びに、Z軸成分の最大値Hz(max)及び最小値Hz(min)についても、上記と同様、各軸毎の最大データ点及び最小データ点が存在する。
図15に戻り、フローの説明を続ける。ステップS1004では、各軸毎に最大値と最小値との差分値ΔHx、ΔHy、ΔHzが閾値以上であるか否かの判定が行われる。例えば、ΔHx≧THx、かつ、ΔHy≧THy、かつ、ΔHz≧THzであればイエス判定となり、上記不等式のいずれか一つでも不満足であればノー判定となる。ステップS1004において、イエス判定が下された場合にはフローがステップS1005に進められ、ノー判定が下された場合にはフローがステップS1003に戻される。
なお、各軸の閾値THx〜THzは、測定対象となる地磁気の大きさ(一般には20〜80μT、日本では40〜50μT)を鑑み、例えば、30μT程度に設定することが望ましい。また、各軸の閾値THx、THy、THzは、互いに同一の値であっても構わないし、各々異なる値であっても構わない。
ステップS1004でノー判定が下された場合には、フローがステップS1003とステップS1004をループすることになる。すなわち、各軸毎の差分値ΔHx、ΔHy、ΔHzが閾値以上となるまで、3軸の最大値と最小値が探索し続けられる。
図17は、X軸における差分値ΔHxの変遷挙動を示すタイムチャートである。符号Pa0〜Pa3ないしは符号Pb0〜Pb4が付されたデータ点を参照することにより、X軸最大データ点PaないしはX軸最小データ点Pbが時間の経過とともに順次更新されていく様子が見て取れる。また、X軸における差分値ΔHxは、当然のことながら、X軸成分の最大値Hx(max)と最小値Hx(min)のうち、少なくとも一方が更新される毎に大きくなっていく。
図15に戻り、フローの説明を続ける。ステップS1004でイエス判定が下された場合には、先に説明した第1例のオフセット算出処理(本図のステップS1005〜S1007に相当)が実行される。すなわち、オフセット算出部1030では、各軸毎の最大値と最小値との差が全ての軸について閾値以上となったときに、オフセット算出時の参照対象として妥当なデータ点群(オフセット点Cを中心とするXYZ座標空間内で比較的均等に分散していると考えられるデータ点群)が集まったという判断の下、先述のオフセット算出処理が実行される。
このようなアルゴリズムを採用することにより、局所的に偏在しているデータ点群から不適切なオフセット算出結果が得られる危険性を未然に低減することができるので、オフセット算出処理の信頼性を高めることが可能となる。
ステップS1005では、先に説明したオフセット算出処理の1ステップとして、各軸の最大データ点及び最小データ点のいずれでもない任意の1点を原点O(0,0,0)へ平行移動するように、各軸の最大データ点及び最小データ点がそれぞれ平行移動される。
すなわち、第2例のオフセット算出処理で実際の演算に供されるデータ点は、各軸の最大データ点及び最小データ点が6点と、これらと異なる任意の1点(先述の基準データ点に相当)のみである。従って、オフセット算出部1030には、合計7点分のレジスタを用意しておけば足りるので、10点以上のデータ点が必要となる従来構成と比べて、回路規模またはソフトウェアコードサイズを大幅に縮小することが可能となる。
図18は、原点O(0,0,0)に平行移動される基準データ点の一選択例を示すタイムチャートである。図中の黒丸印は、3軸の最大値・最小値に対応する最大データ点及び最小データ点(合計6点)を示している。一方、図中の白丸印は、上記6点以外のデータ点を示している。
例えば、本図で示したように、データ点P1からデータ点Pkまで3軸の最大値・最小値を探索し続けた結果、各軸の最大データ点と最小データ点が全て確定した場合、基準データ点の選択アルゴリズムを最も容易とする観点から言えば、データ点Pkの直後に取得されるデータ点Pk+1を基準データ点として選択することが望ましい。ただし、データ点P1〜Pk−1のいずれか1点(最大データ点と最小データ点を除く)を基準データ点として選択することについても、何ら忌避されるものではない。
図15に戻り、フローの説明を続ける。ステップS1006では、ステップS1005で平行移動済みの6点から、先出の(5)式で表される曲面H1の関数を最小化するような仮想オフセット点C’(Hx0’,Hy0’,Hz0’)が算出される。この点については、先に詳述した通りであるので、重複した説明は割愛する。
次に、ステップS1007では、3軸の最大値・最小値6点がクリアされて、先の平行移動分を元に戻したオフセット点C(Hx0,Hy0,Hz0)が磁気検出部1010のオフセット値として算出される。
その後、フローはステップS1001に戻されて上記一連の処理が繰り返される。その結果、時間的にも空間的にも絶えず変化する方位角センサ1001のオフセットが高速かつ継続的にキャンセルし続けられるので、方位角を精度良く検出することが可能となる。
なお、上記のステップS1005では、原点O(0,0,0)へ平行移動される基準データ点として、各軸の最大データ点及び最小データ点のいずれでもない任意の1点を選択する例を挙げて説明を行ったが、基準データ点は、各軸の最大データ点及び最小データ点のうちのいずれか1点であっても構わない。このような構成であれば、オフセット算出処理で実際の演算に供されるデータ点を一つ減らすことができるので、回路規模またはソフトウェアコードサイズをさらに縮小することが可能となる。ただし、本構成を採用した場合、各軸の最大データ点及び最小データ点の分布状態によっては、オフセット算出精度の低下を招くおそれがある。
図19は、3軸の最大値・最小値に対応するデータ点を基準データ点として選択する場合の留意点について説明するためのXYZ座標空間図である。外来磁場等の影響により、各軸の最大値及び最小値のうち、いずれか一つ(本図の例ではX軸成分の最大値Hx(max))が他から大きく乖離している場合がある。
他から大きく乖離した最大データ点または最小データ点が基準データ点として選択されると、基準データ点を原点Oと一致させるための平行移動量が本来の値から大きく乖離してしまう。その結果、先述のオフセット算出処理により正しいオフセット点C(Hx0,Hy0,Hz0)を得ることが出来なくなる。
このような不具合を回避するためには、例えば、3軸の最大値・最小値に対応する6つのデータ点のうち、各軸成分の絶対値が最も大きいデータ点と最も小さいデータ点については、基準データ点としての選択候補から除外するなどの対策を講じることが望ましい。
<オフセット算出処理(第3例)>
これまでに説明してきた第1例及び第2例のオフセット算出処理において、正しいオフセット点C(Hx0,Hy0,Hz0)を得るためには、3次元のXYZ座標空間において、方位角センサ1001(延いては3軸の磁気センサ1010X〜1010Z)を各軸方向に大きく動かす必要がある。
ただし、例えば、地表面上を走行する車両の電子コンパスとして方位角センサ1001を搭載する場合、地表面に対する鉛直軸方向(=車両の上下方向)の動きは、地表面に対する水平軸方向(=車両の前後左右方向)の動きほど大きくならないことが想定される。そのため、鉛直軸(例えばZ軸)の磁気検出データについては、その最大値と最小値との間にそれほど大きな差が付かなくなるので、これまでに説明してきたアルゴリズムでは、オフセット点C(Hx0,Hy0,Hz0)を精度良く算出することが難しくなる。
そこで、以下では、3軸の磁気センサ1010X〜1010Zのうち、いずれかの磁気検出データの変動幅が小さい場合であってもオフセット点C(Hx0,Hy0,Hz0)を精度良く算出することのできる新規アルゴリズムについて提案する。
図20は、オフセット算出処理の第3例を示すフローチャートである。第3例のオフセット算出処理では、第2例のオフセット算出処理(図15)をベースとしつつ、X軸及びY軸(例えば地表面に対する水平軸)のオフセット計算と、Z軸(例えば地表面に対する鉛直軸)のオフセット計算とを別々に実施する点に特徴を有している。以下、順を追って詳細に説明する。なお、特に言及しない限り、各ステップの実行主体は、オフセット算出部1030であるものとする。
まず、ステップS1011では、オフセット値(Hx0,Hy0,Hz0)の設定ないし更新が行われる。なお、初期値は(0,0,0)である。
次に、ステップS1012では、3軸の磁気検出データ(Hx,Hy,Hz)が常時取得されてそのオフセット補正が行われる(Hx←Hx−Hx0,Hy←Hy−Hy0,Hz←Hz−Hz0)。なお、本ステップS1012の実行主体は、オフセット補正部20である。
次に、ステップS1013では、オフセット補正済みである磁気検出データ(Hx,Hy,Hz)を参照して、各軸の最大値及び最小値にそれぞれ対応する6点のデータ点Pi(Hxi,Hyi,Hzi)(ただしi=1〜6)が常時探索される(先出の図14及び図16を適宜参照)。
次に、ステップS1014では、各軸毎に最大値と最小値との差分値ΔHx、ΔHy、ΔHzが閾値以上であるか否かの判定が行われる。例えば、ΔHx≧THx、かつ、ΔHy≧THy、かつ、ΔHz≧THzであればイエス判定となり、上記不等式のいずれか一つでも不満足であればノー判定となる。ステップS1014において、イエス判定が下された場合にはフローがステップS1015に進められ、ノー判定が下された場合にはフローがステップS1013に戻される。
なお、閾値THx〜THzは、例えば、その場における地磁気の大きさ|H|(延いてはその場における空間磁場の大きさ)、または、これを分解したXY平面成分|HXY|とZ軸成分|HZ|に応じて、各軸毎にそれぞれ設定するとよい。この点については、後ほど詳細に説明する。
ステップS1014でノー判定が下された場合には、フローがステップS1013とステップS1014をループすることになる。すなわち、各軸毎の差分値ΔHx、ΔHy、ΔHzが閾値以上となるまで、3軸の最大値と最小値が探索し続けられる。
一方、ステップS1014でイエス判定が下された場合、ステップS1015では、データ点P1〜P6のいずれとも異なる7点目の基準データ点P7(Hx7,Hy7,Hz7)が選択される。
次に、ステップS1016では、基準データ点P7が適正であるか否かの判定が行われる。より具体的に述べると、本ステップでは、基準データ点P7として、データ点P1〜P6のうち、少なくともX軸とY軸の最大値及び最小値にそれぞれ対応する4点からそれぞれ所定値以上の距離を隔てたデータ点が選択されているか否かの判定が行われる。ここで、イエス判定が下された場合にはフローがステップS1017に進められる。一方、ノー判定が下された場合にはフローがステップS1015に戻されて、上記の条件を満たすまで基準データ点P7の再選択が繰り返される。
ステップS1016でイエス判定が下された場合、ステップS1017では、基準データ点P7を原点O(0,0,0)と一致させるように、データ点P1〜P6のうち、X軸とY軸の最大値及び最小値にそれぞれ対応する4点を一様に平行移動した上で、Z軸の座標値を無視することにより、XY座標面上の仮想データ点Pi’(Hxi’,Hyi’)(ただしi=1〜4)が算出される。
なお、上記の例では、データ点P1〜P6のうち、Z軸の最大値及び最小値にそれぞれ対応する2点が平行移動対象から除外されている。ただし、Z軸の差分値ΔHzが所定値よりも小さい場合、上記2点のX軸成分及びY軸成分が各軸の最大値及び最小値から極端に乖離している可能性は低いと考えられる。従って、そのような場合には、上記6点全てを平行移動対象としてもよい。また、差分値ΔHzが切替閾値よりも大きいときには平行移動対象を4点とし、差分値ΔHzが切替閾値よりも小さいときには平行移動対象を6点とするように、平行移動対象の切替制御を行っても構わない。
次に、ステップS1018では、上記した4点(若しくは6点)の仮想データ点Pi’(Hxi’,Hyi’)を用いて、次の(7)式で表される関数F1を最小化するXY座標面上の仮想オフセット点C’(Hx0’,Hy0’)が算出される。
次に、ステップS1019では、基準データ点P7の平行移動分を元に戻すように、XY座標面上の仮想オフセット点C’(Hx0’,Hy0’)を平行移動することにより、X軸及びY軸のオフセット値Hx0及びHy0がそれぞれ算出される。
なお、(7)式で表される関数F1は、(6)式で表される曲線H2の関数と等価である。すなわち、ステップS1018及びS1019では、XY座標面上に描かれる地磁気円のオフセット推定処理により、X軸及びY軸のオフセット値Hx0及びHy0がそれぞれ算出される。
このように、X軸及びY軸それぞれのオフセット計算(ステップS1017〜S1019)では、Z軸の磁気検出データHzが一切用いられていない。従って、Z軸方向の動きがX軸方向及びY軸方向の動きほど大きくなくても、X軸及びY軸のオフセット計算精度に悪影響を及ぼすことはない。
次に、ステップS1020では、基準データ点P7を原点O(0,0,0)と一致させるように、6点のデータ点P1〜P6全てを一様に平行移動することにより、XYZ座標空間において、6点の仮想データ点Pi’(Hxi’,Hyi’,Hzi’)(ただし、i=1〜6)が算出される。なお、先のステップS1017において、6点全てを平行移動対象とする場合には、その結果をレジスタ等に格納しておくことにより、ステップS1020での平行移動処理を割愛することもできる。
次に、ステップS1021では、先のステップS1018で求められた仮想オフセット点(Hx0’,Hy0’)と、上記6点の仮想データ点Pi’(Hxi’,Hyi’,Hzi’)を用いて、次の(8)式で表される関数F2を最小化する仮想オフセット値Hz0’が算出される。
なお、仮想オフセット値Hz0’の算出式については、次の(9)式で表すことができる。本算出式で用いられる仮想オフセット点(Hx0’,Hy0’)は、その算出過程にZ軸の磁気検出データHzを含まないので、磁気検出データHzのデータ変動が小さくても信頼性の高いものとなる。従って、これを用いて仮想オフセット値Hz0’を算出することにより、仮想オフセット値Hz0’についても信頼性を高めることが可能となる。
次に、ステップS1022では、データ点P1〜P6と基準データ点P7をクリアし、基準データ点P7の平行移動分を元に戻すように仮想オフセット値Hz0’を平行移動することにより、Z軸のオフセット値Hz0が算出される。
なお、(8)式で表される関数F2は、(5)式で表される曲面H1の関数と等価である。すなわち、ステップS1020〜S1022では、XY座標空間に描かれる地磁気球のオフセット推定処理により、Z軸のオフセット値Hz0が算出される。
最後に、ステップS1023では、新オフセット値(Hx0,Hy0,Hz0)が出力される。その後、フローはステップS1011に戻されて、上記一連の処理が繰り返される。その結果、時間的にも空間的にも絶えず変化する方位角センサ1001のオフセットが高速かつ継続的にキャンセルし続けられるので、方位角を精度良く検出することが可能となる。
上記したように、第3例のオフセット算出処理では、まず、比較的大きいデータ変動を生じることが見込まれるX軸及びY軸のオフセット値Hx0及びHy0が算出された後、その算出結果を利用して、比較的小さいデータ変動しか生じないと想定されるZ軸のオフセット値Hz0が別個独立に算出される。
このようなオフセット算出処理によれば、X軸及びY軸のデータ変動と比べてZ軸のデータ変動が小さい場合でも、各軸のオフセット値を正しく算出することが可能となる。
<オフセット算出処理(第4例)>
図21は、オフセット算出処理の第4例を示すフローチャートである。第4例のオフセット算出処理では、第3例のオフセット算出処理(図20)をベースとしつつ、X軸及びY軸のオフセット計算を簡略化した点に特徴を有している。そこで、第3例と同様のステップについては、図20と同一の符号を付すことで重複した説明を割愛し、以下では、第4例の特徴部分について重点的な説明を行う。
本図中の太枠で示したように、第4例のオフセット算出処理では、図20のステップS1017〜S1020がステップS1024及びS1025に置き換えられている。
先述のステップS1011〜S1015を経て、ステップS1016でイエス判定が下された場合、ステップS1024では、先出の(7)式を用いず、次の(10a)式及び(10b)式を用いてオフセット値Hx0及びHy0が算出される。
すなわち、ステップS1024では、X軸の最大値Hx(max)と最小値Hx(min)の平均値がX軸のオフセット値Hx0として算出され、Y軸の最大値Hy(max)と最小値Hy(min)の平均値がY軸のオフセット値Hy0として算出される。
次に、ステップS1025では、基準データ点P7を原点O(0,0,0)と一致させるように、X軸とY軸のオフセット値Hx0及びHy0を平行移動することにより、仮想オフセット値Hx0’及びHy0’が算出される。また、6点のデータ点P1〜P6についても上記と同様の平行移動を行うことにより、6点の仮想データ点Pi’(Hxi’,Hyi’,Hzi’)(ただしi=1〜6)が算出される。
その後は、フローが先述のステップS1021に進められて、先と同様の処理により、Z軸のオフセット値Hz0が算出される。
このように、第4例のオフセット算出処理であれば、第3例(図20)と比べて、X軸及びY軸のオフセット計算を簡略化することが可能となる。なお、地磁気円のオフセット推定処理を省略してもオフセット値Hx0及びHy0の算出精度を落とさないためには、方位角センサ1001が水平面上で大きく1周するような動作ないし移動が必要となる。
また、先出の図17で示したように、各軸の差分値ΔHx、ΔHy、ΔHzが大きくなる度に各軸の最大データ点及び最小データ点を更新していく場合、周辺環境における地磁気の大きさが増大していく状況であれば、オフセット算出処理を支障なく継続することができるが、地磁気の大きさが減少していく状況では、X軸とY軸の最大値及び最小値がそれぞれ固定されてしまうので、正しいオフセット算出を行うことができなくなる。
そこで、地磁気の大きさが減少していく状況であっても、正しいオフセット算出を行うためには、例えば、X軸とY軸の最大値及び最小値を定期的にクリアしてステップS1024のオフセット算出処理を続けてもよいし、或いは、図20のフローを定期的に実施しておくことにより、地磁気の大きさが著しく小さい場合には、ステップS1017〜S1019で予め算出しておいたオフセット値を採用することも考えられる。
<閾値設定>
次に、図20と図21のステップS1014において、各軸の差分値ΔHx、ΔHy、ΔHzとそれぞれ比較される閾値THx、THy、THzの設定手法について述べる。
先に説明したように、第3例及び第4例のオフセット算出処理であれば、Z軸の磁気検出データの変動幅が小さい場合であっても、オフセット点C(Hx0,Hy0,Hz0)を精度良く算出することが可能である。ただし、よりその正確さを追及するためには、各軸の最大データ点と最小データ点として、適度に離れた2点を採用することが望ましい。
図22及び図23は、それぞれ、磁場のXZ平面図(若しくはYZ平面図)である。図22は、Z軸の磁場変動が比較的大きい場合(例えば、腕時計に方位角センサ1001が搭載されている場合)を示しており、図23は、Z軸の磁場変動が比較的小さい場合(例えば、車両に方位角センサ1001が搭載されている場合)を示している。
なお、各図中のバツ印は、各軸の最大データ点及び最小データ点を示している。また、各図中の破線は、各軸の最大データ点及び最小データ点から推定しようとする地磁気球を示している。なお、両図では、いずれも、X軸(若しくはY軸)の最大データ点と最小データ点が適度に離れているものとする。
両図の対比から、Z軸の磁場変動が大きい場合(図22)と比べて、Z軸の磁場変動が小さい場合(図23)には、地磁気球を正しく推定することが困難であることが分かる。
また、各軸毎の最大データ点と最小データ点との差分値ΔHx、ΔHy、ΔHzについては、それぞれの取り得る値に差がある。例えば、X軸方向を車両の前後方向とし、Y軸方向を車両の左右方向とし、Z軸方向を車両の上下方向とした場合を考える。この場合、磁気検出データHx及びHyは、車両の通常走行(右左折や方向転換など)により大きく変動するので、差分値ΔHx及びΔHyが大きくなりやすい。一方、磁気検出データHzは、たとえ車両が急勾配の坂道を走行してもそれほど大きく変動しないので、差分値ΔHzが大きくなりにくい。
そのため、Z軸の閾値THzは、X軸及びY軸それぞれの閾値THx及びTHyよりも小さい値に設定しておくことが望ましい。なぜなら、閾値THzを閾値THx及びTHyと同値(若しくは同程度の値)に設定すると、先出のステップS1014(図20及び図21を参照)において、ΔHz≧THzが満たされなくなり、いつまで経ってもオフセット値の算出が開始されない状況に陥ってしまうからである。
ところで、各軸の最大データ点及び最小データ点から推定しようとする地磁気球の半径は、これを描く地磁気の大きさ|H|に等しい。これを鑑みると、閾値THx、THy、THzは、それぞれ、地磁気の大きさ|H|(延いては、方位角センサ1001が存在する場における空間磁場の大きさ)に応じて、各軸毎に設定することが望ましいと言える。
なお、地磁気の大きさ|H|は、各軸の磁気検出データ(Hx,Hy,Hz)とそれぞれのオフセット値(Hoffx,Hoffy,Hoffz)を用いて、次の(11)式から算出することができる。上記のオフセット値(Hoffx,Hoffy,Hoffz)としては、初回のオフセット計算時に求められたオフセット値を用いてもよいし、若しくは、過去に計算した信頼できるオフセット値を用いてもよい。
また、地磁気の大きさ|H|は、第3例(図20)または第4例(図21)のオフセット算出処理中に導き出される仮想オフセット点C’(Hx0’、Hy0’,Hz0’)を用いて、次の(12)式から算出することもできる。
また、方位角センサ1001が地表面に対して水平に固定されている場合には、図24で示すように、地磁気の大きさ|H|をXY平面成分|HXY|(=地表面に対して水平な方向の地磁気成分)と、Z軸成分|HZ|(地表面に対して垂直な方向の地磁気成分)に分解することも可能である。
なお、地磁気のXY平面成分|HXY|とZ軸成分|HZ|は、各軸の磁気検出データ(Hx,Hy,Hz)と、それぞれのオフセット値(Hoffx,Hoffy,Hoffz)を用いて、次の(13a)式及び(13b)式から算出することができる。
また、地磁気のXY平面成分|HXY|とZ軸成分|HZ|は、先出の仮想オフセット点C’(Hx0’、Hy0’,Hz0’)を用いて、次の(14a)式及び(14b)式から算出することもできる。
上記で求められた地磁気の大きさ|H|、または、そのXY平面成分|HXY|とZ軸成分|HZ|から、各軸の閾値THx、THy、THzを算出するための手法としては、例えば、XY平面成分|HXY|に係数GXYを乗じて閾値THx及びTHyを算出し、Z軸成分|HZ|に係数GZを乗じて閾値THzを算出することが考えられる。
なお、図20のステップS1018において、XY座標平面上の仮想オフセット点C’(Hx0’,Hy0’)を求める場合、地磁気円の全周のうち1/4程度の円弧を描くことのできる磁場変動(方位角センサ1の移動)があれば、正しいオフセット計算が可能となる。従って、X軸方向及びY軸方向については、上記の磁場変動があれば、ΔHx≧THxかつΔHy≧THyが満たされるように、係数GXY(例えば1.0程度)を適宜設定しておけばよい。
一方、Z軸方向については、磁気検出データHzが変動しにくいことに鑑み、ある程度の頻度でΔHz≧Thzが満たされるように、係数GZ(例えば0.1程度)を適宜設定しておく必要がある。なお、係数GZを大きく設定すれば、オフセット計算が実行されにくくなり、逆に、係数GZを小さく設定すれば、オフセット計算が実行されやすくなる。
また、上記では、地磁気の大きさ|H|ではなく、そのXY平面成分|HXY|とZ軸成分|HZ|に応じて、各軸の閾値THx、THy、THzを算出する手法を例に挙げたが、より単純に、地磁気の大きさ|H|そのものに各軸毎の係数GX、GY、GZをそれぞれ乗じて、閾値THx、THy、THzを算出することも可能である。
また、地磁気の大きさ|H|は、必ずしも、先出の(11)式または(12)式から算出する必要はなく、例えば、GPS[global positioning system]によって得られた位置情報を基に、所定の近似計算式から算出してもよいし、或いは、国土地理院等の磁場マップ情報ライブラリから導き出してもよい。
図25は、地磁気の大きさ|H|の環境依存例を示す模式図である。本図で示したように、同一の地点であっても、方位角センサ1001が車外にあるのか車内にあるのかに応じて、地磁気の大きさ|H|が理想値から乖離する場合がある(|H|≠|H’|)。また、その他の遮蔽物(建物やトンネル等)の内外でも、上記と同様の現象が起こり得る。
従って、方位角センサ1001が遮蔽物の内部に設けられる可能性がある場合には、同一の地点において、遮蔽物の外部で得られる磁気検出データと、遮蔽物の内部で得られる磁気検出データとの差分を事前に調べておき、その差分を考慮した上で、閾値THx、THy、THzを適宜設定することが望ましいと言える。
<伏角の利用>
上記の閾値設定手法では、地磁気の大きさ|H|のみに注目していたが、ここでは、地磁気の伏角α(=地磁気が地表面に突入する角度、または、地磁気が地表面から放出される角度)にも焦点を当てる。地磁気は、地球の南極付近から北極付近に降り注いでおり、地磁気の伏角αは、測定地点の緯度と経度により異なる値となることが知られている。ただし、局所的に見ると、地磁気の伏角αは、ほぼ一定値であると考えても差し支えない。例えば、東京における伏角αは、約49度である。
この伏角αを用いることにより、その場における地磁気の大きさ|H|をXY平面成分|HXY|とZ軸成分|HZ|に分解することが可能である。
図26は、地磁気の伏角αを示す模式図である。本図から分かるように、地磁気のXY平面成分|HXY|とZ軸成分|HZ|は、地磁気の大きさ|H|と伏角αを用いて、次の(15a)式及び(15b)式から算出することができる。
このようにして算出された地磁気のXY平面成分|HXY|及びZ軸成分|HZ|は、先と同様、係数GXY及びGZをそれぞれ乗ずることにより、閾値THx、THy、THzの設定処理に供することが可能である。
図27は、磁気検出データHと加速度データAとの相関図である。本図から分かるように、先の演算で用いられる伏角αは、オフセット補正済みの磁気検出データH(Hx,Hy,Hz)と、加速度データA(Ax,Ay,Az)との内積計算により、次の(16)式により算出することができる。
なお、上記の磁気検出データH(Hx,Hy,Hz)のオフセット補正では、初回のオフセット計算時に求められたオフセット値を用いてもよいし、若しくは、過去に計算した信頼できるオフセット値を用いてもよい。
また、上記の加速度データA(Ax,Ay,Az)は、方位角センサ1001とは別に設けられた加速度センサの出力を用いてもよいし、方位角センサ1001に加速度検出機能を内蔵してもよい。いずれにせよ、伏角αを正しく算出するためには、上記の加速度データAとして、重力加速度のみをセンシングする必要がある。従って、伏角αの演算時には、静止状態、等速運動状態、若しくは、低加速度運動状態(=移動に伴う加速度が所定の閾値よりも小さく、センシング対象が重力加速度のみであると看做すことのできる運動状態)を維持する必要がある点に留意すべきである。
また、伏角αは、必ずしも先出の(16)式から算出する必要はなく、例えば、GPSによって得られた位置情報を基に、所定の近似計算式から算出してもよいし、或いは、国土地理院等の伏角情報ライブラリから導き出してもよい。
<オフセット更新処理>
図28は、オフセット更新処理の一例を示すフローチャートである。本フローは、これまでに説明してきたオフセット算出処理(図15、図20、219)の後処理に相当し、新たに算出された新オフセット値の精度(信頼性)を判定するものである。
本フローがスタートすると、まず、ステップS1031において、伏角αの初期値α[0]が仮決定された後、続くステップS1032において、オフセット更新回数iの初期設定(i=1)が行われる。
なお、上記の初期値α0は、初回のオフセット計算時に求められたオフセット値を用いて算出してもよいし、過去に計算した信頼できるオフセット値を用いて算出してもよい。若しくは、GPSによって得られた位置情報を基に、所定の近似計算式から算出してもよいし、或いは、伏角情報ライブラリから導出してもよい。さらには、GPSを用いずとも伏角情報を国別に用意しておくことにより、初期値α0を設定することも考えられる。
次に、ステップS1033では、オフセット較正条件が充足されているか否かの判定が行われる。この判定処理は、先のステップS1003〜S1004(図15)、または、ステップS1013〜S1014(図20及び図21)に相当する。なお、ステップS1033において、イエス判定が下された場合には、フローがステップS1034に進められ、ノー判定が下された場合には、ステップS1033での判定処理が繰り返される。
ステップS1033でイエス判定が下された場合、まずステップS1034において、新オフセット値(Hx0,Hy0,Hz0)が新たに算出された後、続くステップS1035では、新オフセット値を用いて地磁気の大きさ|H|と伏角α[i]が算出される。
続いて、ステップS1036では、新オフセット値を用いて算出された地磁気の大きさ|H|について、Hmin≦|H|≦Hmaxという関係が満たされているか否かの判定が行われる。ここでイエス判定が下された場合には、フローがステップS1037に進められ、ノー判定が下された場合には、フローがステップS1041に進められる。
なお、上記の最小値Hmin及び最大値Hmaxは、それぞれ、地球上における一般的な地磁気の大きさを考慮して設定すればよく、例えば、Hmin=10μT(=100mG)、Hmax=70μT(=700mG)に設定すればよい。もちろん、方位角センサ1001が存在する場の地磁気について、大凡の大きさが予め分かっている場合には、最小値Hmin及び最大値Hmaxをより適切に設定しても構わない。
ステップS1036でイエス判定が下された場合、ステップS1037では、新オフセット値を用いて算出された伏角α[i]について、α[i−1]−Δ≦α[i]≦α[i−1]+Δが満たされているか否かの判定が行われる。すなわち、ステップS1037では、新オフセット値を用いて算出された伏角α[i]が、一つ前のオフセット値を用いて算出された伏角α[i−1]から著しく乖離しているか否かの判定が行われる。ここでイエス判定が下された場合には、フローがステップS1038に進められ、ノー判定が下された場合には、フローがステップS1041に進められる。
ステップS1037でイエス判定が下された場合、ステップS1038では、先の(13b)式または(14b)式を用いて算出されるZ軸成分|HZ1|と、先の(15b)式を用いて算出されるZ軸成分|HZ2|について、|HZ1−HZ2|<Δが満たされているか否かの判定が行われる。すなわち、ステップS1038では、伏角α[i]を用いずに算出されたZ軸成分|HZ1|と、伏角α[i]を用いて算出されたZ軸成分|HZ2|の双方を同一値と看做すことができるか否かの判定が行われる。ここでイエス判定が下された場合には、フローがステップS1039に進められ、ノー判定が下された場合には、フローがステップS1041に進められる。
ステップS1038でイエス判定が下された場合、ステップS1039では、新オフセット値を用いて算出された地磁気の大きさ|H|及び伏角α[i]がいずれも正常範囲内であり、新オフセット値は信頼するに足りるという判断の下、正式に旧オフセット値から新オフセット値への更新が行われる。そして、ステップS1040において、オフセット更新回数iが一つインクリメント(i←i+1)されてから、フローがステップS1033に戻される。
一方、ステップS1036〜S1038のいずれかでノー判定下された場合、ステップS1041では、新オフセット値を用いて算出された地磁気の大きさ|H|並びに伏角α[i]のうち、少なくとも一方が正常範囲を外れており、新オフセット値は信頼することができないという判断の下、新オフセット値が破棄された上で、フローがステップS1033に戻される。
なお、上記フローにおいて、ステップS1037では、オフセット更新回数iと共に伏角αの正常範囲も逐次更新されていくが、伏角αの正常範囲を基本的に固定とし、伏角αが大きく変動するほどの長距離移動を行った場合にのみ、その正常範囲を切り替えるようにしてもよい。
また、上記フローにおいて、ステップS1036では、地磁気の大きさ|H|の正常範囲が固定されているが、ステップS1037と同じく、オフセット更新回数iと共に地磁気の大きさ|H|の正常範囲を逐次更新していくようにしてもよい。
また、ステップS1036〜S1038の判定処理については、必ずしも3ステップ全てを実施する必要はなく、いずれか1ステップ若しくは2ステップを実施してもよい。また、各ステップの実施順序も任意である。
なお、上記した種々の条件(ステップS1036〜S1038)をパスする新オフセット値が得られた場合であっても、新オフセット値と1つ前の旧オフセット値との間には、少なからず乖離を生じている場合がある。
そのため、オフセット更新時におけるオフセット値の不連続な変化を防ぐために、例えば、次の(17)式で表されるローパスフィルタ処理を施すことが望ましい。
なお、上式において、H0[t]は時刻tにおけるオフセット値を示しており、H0’[t]は時刻tにおけるフィルタ処理後のオフセット値を示している。上式中の係数cが小さいほどオフセット値の追従性が高くなり、逆に、係数cが大きいほどオフセット値の変化が滑らかになる。
以上で説明したように、オフセット算出処理に際して、X軸及びY軸(例えば地表面に対する水平軸)のオフセット計算と、Z軸(例えば地表面に対する鉛直軸)のオフセット計算とを分離すると共に、その前処理(適切な閾値設定)と後処理(新オフセット値の精度判定)を追加することにより、オフセット算出処理の信頼性を高めることができる。
<方位角センサの適用例>
図29〜図32は、それぞれ、方位角センサ1001を備える電子機器(スマートフォン100、タブレット端末200、スマートウォッチ300)、及び、車両400を示す外観図である。それぞれの電子コンパスとして、先に説明した方位角センサ1001を搭載することにより、各機器を携帯するユーザが向いている方向、ないしは、車両400の進行方向を正確に検出することができる。特に、GPS[global positioning system]と電子コンパスを併用すれば、地図アプリやナビゲーションアプリでの位置検出精度を高めることが可能となる。なお、車両400に電子コンパスを搭載して絶対方位を検出することは、先進の自動運転技術をサポートする上で、非常に重要であると言える。
<その他の変形例>
なお、本明細書中に開示されている種々の技術的特徴は、上記実施形態のほか、その技術的創作の主旨を逸脱しない範囲で種々の変更を加えることが可能である。すなわち、上記実施形態は、全ての点で例示であって制限的なものではないと考えられるべきであり、本発明の技術的範囲は、上記実施形態の説明ではなく、特許請求の範囲によって示されるものであり、特許請求の範囲と均等の意味及び範囲内に属する全ての変更が含まれると理解されるべきである。