(58)【調査した分野】(Int.Cl.,DB名)
移動している磁気センサより取得される複数の軸方向の複数の磁気データに基づいて、前記磁気データの前記複数の軸方向を座標軸とする3次元座標空間において、それぞれ、互いに異なる3個以上の第1の磁気データに対応する座標点が含まれる、互いに異なる複数の平面を抽出し、
前記複数の磁気データから、前記3次元座標空間において、前記第1の磁気データと異なる、前記複数の平面との距離が所定の閾値以下の座標点に対応する前記磁気データを第2の磁気データとして抽出し、
前記複数の平面の各々に対し、前記第1の磁気データと前記第2の磁気データとに対応する座標点に近接する複数の円周を推定し、前記複数の円周の各中心座標を算出し、
前記3次元座標空間において、前記複数の平面の各々に対し、前記各中心座標を通って前記複数の平面に直交する複数の垂直線をそれぞれ算出し、
前記複数の平面における前記複数の垂直線が交差する点の座標又は前記複数の平面における前記複数の垂直線に最も近接する点の座標を、前記磁気センサのオフセット値として算出すること、
を特徴とするセンサ較正方法。
【発明を実施するための形態】
【0015】
以下、本発明に係る電子機器及びセンサ較正方法、センサ較正プログラムについて、実施形態を示して詳しく説明する。
<電子機器>
図1は、本発明に係る電子機器の複数の適用例を示す概略構成図である。また、
図2は、本発明に係る電子機器の一実施形態を示す機能ブロック図である。
【0016】
本発明に係る電子機器は、例えば位置情報や地図情報を利用した種々のサービスを、ユーザに提供するための機能を備えた電子機器に適用される。具体的には、電子機器は、例えば
図1(a)に示すような腕時計型やリストバンド型の外観のスポーツウォッチ10や、
図1(b)に示すような登山等のアウトドア機器(例えばGPSロガーやナビゲーション端末)20、
図1(c)に示すようなスマートフォン30やタブレット端末等に適用される。以下、説明の都合上、これらの機器を「電子機器100」と総称する。
【0017】
本実施形態に係る電子機器100は、例えば
図2に示すように、磁気センサ110と、モーションセンサ120と、GPS受信回路130と、入出力インターフェース部(以下、「入出力I/F部」と記す)140と、入力操作部150と、出力部160と、演算回路部170と、メモリ部180と、電源供給部190と、を有している。ここで、演算回路部170は、本発明における平面抽出部、中心座標算出部、オフセット値算出部、オフセット値変化判定部、方位算出部の各構成に対応する。また、
図2においては、
図1に示した各電子機器に本発明を適用した場合に、磁気データ、又は、磁気データに基づいて算出される方位を利用した種々のサービスを、ユーザに提供する際に必要とされる構成も併せて示す。なお、後述するセンサ較正方法を実現するためには、
図2に示した構成のうち、少なくとも磁気センサ110が演算回路部170に接続された構成を有していればよく、モーションセンサ120やGPS受信回路130、入出力I/F部140、出力部160を有していなくてもよい。
【0018】
磁気センサ110は、電子機器100の周辺の磁場の大きさ及び方向を検知するセンサであって、当該磁場の互いに直交する3軸方向の大きさを検出して磁気データとして出力する。磁気センサ110が検知する磁場は、その場所の地磁気及び磁気センサ110の近傍に存在する磁石や磁性体等により生じる周辺磁場を含んでいる。この磁気データは、例えば、後述する演算回路部170において電子機器100を基準とする方位を算出する際に用いられる。磁気センサ110より取得される磁気データは、時間データに関連付けられて後述するメモリ部180の所定の記憶領域に保存される。
【0019】
モーションセンサ120は、加速度センサ122や角速度センサ(ジャイロセンサ)124等を含み、ユーザの身体の動きや運動状態、電子機器100に加わる特定方向の力等を検出する。加速度センサ122は、ユーザの身体の動きに応じて電子機器100に生じる移動速度の変化の割合(加速度)を計測する。加速度センサ122は、例えば3軸加速度センサを有し、互いに直交する3軸方向の各々に沿った加速度成分(加速度信号)を検出して、センサデータとして加速度データとして出力する。また、角速度センサ124は、ユーザの身体の動きに応じて電子機器100に生じる移動方向の変化(角速度)を計測する。角速度センサ124は、例えば3軸角速度センサを有し、上記加速度データを規定する、互いに直交する3軸について、各軸に沿った回転運動の回転方向に生じる角速度成分(角速度信号)を検出して、センサデータとして角速度データとして出力する。加速度センサ122及び角速度センサ124より取得されるセンサデータ(加速度データ、角速度データ)は、時間データに関連付けられてメモリ部180の所定の記憶領域に保存される。
【0020】
GPS受信回路130は、GPS(Global Positioning System;全地球測位システム)を構成する複数のGPS衛星からの電波を、GPSアンテナ(図示を省略)を介して受信することにより、緯度、経度情報に基づく地理的な位置情報を取得して、測位データとして出力する。ここで、電子機器100を任意の方向に向けているときや、電子機器100を装着又は携帯したユーザが移動しているときに、GPS受信回路130より取得される測位データは、演算回路部170において電子機器100が向いている方位や移動方向を算出する際に用いられる。GPS受信回路130より取得される測位データは、時間データに関連付けられてメモリ部180の所定の記憶領域に保存される。
【0021】
入出力I/F部140は、電子機器100の外部の周辺機器や情報機器、通信ネットワーク等(図示を省略)との間で、有線や無線を用いた所定の通信形式により各種のデータや信号を入出力又は送受信する。入出力I/F部140は、例えば、身体の他の部位に装着したセンサ機器との間で、心拍データ等の生体情報を送受信したり、パーソナルコンピュータ等の情報処理装置やネットワーク上のサーバとの間で、取得した磁気データやセンサデータ等を送受信したり、地図情報等を取得したりする。
【0022】
入力操作部150は、例えば
図1に示した電子機器100(スポーツウォッチ10やアウトドア機器20、スマートフォン30等)の筐体に設けられた操作スイッチ152やタッチパネル154等を有している。入力操作部150は、例えば、電子機器100の動作電源やGPS受信回路130における測位動作のオン、オフ操作、アプリケーションソフトウェアの操作、各構成における機能設定等の、各種の入力操作に用いられる。
【0023】
出力部160は、電子機器100の筐体に設けられた表示部162や音響部164、振動部(図示を省略)等を有している。出力部160は、少なくとも上述した磁気センサ110より取得される磁気データに基づく方位や、モーションセンサ120より取得されるセンサデータ、GPS受信回路130より取得される測位データに基づく位置情報や地図情報、アラーム等の、各種の情報を視覚や聴覚、触覚等を通してユーザに提供又は報知する。
【0024】
演算回路部170は、計時機能を備えたCPU(中央演算処理装置)やMPU(マイクロプロセッサ)等の演算処理装置であって、動作クロックに基づいて、所定の制御プログラムやアルゴリズムプログラムを実行する。これにより、演算回路部170は、磁気センサ110やモーションセンサ120におけるセンシング動作や、GPS受信回路130における測位動作、後述する磁気センサ110のキャリブレーション処理や方位算出処理、出力部160における情報提供動作等の、各種の動作を制御する。なお、磁気センサ110のキャリブレーション処理を含む電子機器100の制御方法については、詳しく後述する。
【0025】
メモリ部180は、上述した磁気センサ110より取得される磁気データや、モーションセンサ120より取得されるセンサデータ、GPS受信回路130より取得される測位データ等を、時間データに関連付けて所定の記憶領域に保存する。また、メモリ部180は、演算回路部170において実行される処理動作(センサ較正動作)により生成される各種データや、磁気センサ110のオフセット値を所定の記憶領域に保存する。また、メモリ部180は、磁気センサ110やモーションセンサ120、GPS受信回路130等の、各構成における動作を実行するための制御プログラムや、上記の磁気データに基づいて、磁気センサ110のキャリブレーション処理を実行するためのアルゴリズムプログラムを保存する。なお、これらのプログラムは、演算回路部170に予め組み込まれているものであってもよい。また、メモリ部180は、その一部又は全部が、例えばメモリカード等のリムーバブル記憶媒体としての形態を有し、電子機器100に対して着脱可能に構成されているものであってもよい。
【0026】
電源供給部190は、電子機器100内部の各構成に駆動用電力を供給する。電源供給部190は、電子機器100が携帯型の機器である場合には、例えば市販のボタン型電池等の一次電池や、リチウムイオン電池等の二次電池が適用される。また、電源供給部190は、上記の一次電池や二次電池のほか、振動や光、熱、電磁波等のエネルギーにより発電する環境発電(エナジーハーベスト)技術による電源等を、単独で、あるいは、併用して適用するものであってもよい。
【0027】
<電子機器の制御方法>
次に、本実施形態に係る電子機器における制御方法(センサ較正方法)について、図面を参照して説明する。ここで、以下のフローチャートに示す電子機器の制御方法は、上述した演算回路部170が所定の制御プログラム及びアルゴリズムプログラムに従って処理を実行することにより実現される。
【0028】
図3は、本実施形態に係る電子機器における制御方法の一例を示すフローチャートである。
図4は、磁気センサの出力分布例とオフセット補正との関係を示す概念図である。
図5は、本実施形態に係るキャリブレーション処理を説明するための概念図であり、
図6、
図7は、本実施形態に係るキャリブレーション処理の具体例を示す図である。
【0029】
本実施形態に係る電子機器100の制御方法においては、磁気センサ110及びモーションセンサ120、GPS受信回路130を備えた電子機器100において、例えば
図3のフローチャートに示すような一連の処理が実行される。まず、ユーザが入力操作部150を操作することにより、電源供給部190から電子機器100内部の各構成に駆動用電力が供給されて、電子機器100が起動する。これにより、演算回路部170は、磁気センサ110及びモーションセンサ120によるセンシング動作、GPS受信回路130による測位動作を含む通常処理を実行する(ステップS102)。
【0030】
この通常処理において、磁気センサ110を備えた電子機器100を一定の地磁気を有する第1環境の中で回転や移動させながら磁気センサ110より取得される複数の磁気データを、磁気センサ110の3軸を座標軸とする3次元座標空間上でプロットした場合、各磁気データに対応する座標点は、例えば
図4に示すように、概ね球面Sp上に分布する。この球面Spにより規定される球の中心点Paは、磁気センサ110より取得される磁気データ群の基準点を示し、球の半径rは、地磁気の大きさ(強さ)に対応する。また、この球の中心点Paは、磁気センサ110が電子機器100の周辺磁場の影響を受けて(着磁して)、3次元座標空間の基準点(原点)Pcに対してずれ(=オフセット)を生じる。この場合、球の中心点Paと基準点Pcとの差分に相当するオフセット値(図中、「オフセットベクトル」と表記)を算出して、磁気センサ110より取得される磁気データ群に対して、算出されたオフセット値を差し引くオフセット補正を行うことにより、磁気センサ110の周辺磁場の影響を除去して、電子機器100を基準とする正確な方位を算出することができる。
【0031】
ここで、電子機器100の周辺の環境が、例えば、周辺磁場が強まるあるいは磁場の方向が変わる第2環境に変化した場合、その周辺磁場の変化の影響を受けて磁気センサ110が検知する磁場も変化することになる。そのため、この第2環境で磁気センサ110より取得される磁気データ群(図中、「着磁後の磁気データ群」と表記)に対応する座標点の3次元座標空間での分布は、
図4に示すように、オフセット値が算出された当初の磁気データ群に対応する座標点の分布(球面Sp及びその球の中心点Pa)の3次元座標空間上の位置から変化(移動)することになる(図中、球面Sp′及びその球の中心点Pa′)。このため、この環境で取得された磁気データ群に対して、当初算出されたオフセット値を用いた補正を行うと、算出される方位が正確な方位とは異なってしまうことになる。この場合、オフセット値を算出し直す必要がある。
【0032】
そこで、演算回路部170は、オフセット値の変化を監視して、このオフセット値が変化したか否かを判定する処理を実行する(ステップS104)。具体的には、演算回路部170は、磁気センサ110により取得された磁気データ群に対して現在のオフセット値を用いた補正を行ったときに、その補正後の磁気データ群に対応する座標点が3次元座標空間の基準点(原点)Pcを中心にした球面上に分布しているか否かを判定する。そして、補正後の磁気データ群に対応する座標点がこの球面上に分布していない場合、すなわち、補正後の磁気データ群に対応する座標点が分布する球体の中心座標が3次元座標空間の基準点(原点)Pcの座標からずれている場合に、現在のオフセット値は適切でなく、オフセット値が現在のオフセット値から変化していると判定し(ステップS104、Yes)、キャリブレーション処理を起動する(ステップS106)。
【0033】
あるいは、演算回路部170は、一定期間取得した磁気データに対応する座標点と中心点Paとの距離(球の半径r、すなわち地磁気の大きさ)、又は、補正後の磁気データと基準点Pcとの距離にバラツキが生じている場合には、オフセット値が変化していると判定し、キャリブレーション処理を起動する。
【0034】
一方、現在のオフセット値を用いた補正後の磁気データ群に対応する座標点が3次元座標空間の基準点Pcを中心にした球面上に分布していて、当該磁気データと基準点Pcとの距離にバラツキが生じていない場合には、演算回路部170は、オフセット値は現在のオフセット値から変化していないと判定し(ステップS104、No)、ステップS102に戻って通常処理を継続する。
【0035】
なお、ステップS104におけるオフセット値の算出が必要か否かの判定処理は、ユーザに特に意識させることなくバックグラウンドで実行される。また、オフセット値の算出が必要か否かの判定処理は、上述した手法に限定されるものではない。例えば、GPS受信回路130により取得される測位データに基づいて導出される当該地点の地磁気の大きさ(強さ)と、磁気センサ110により取得される磁気データに基づいて算出される磁気センサ出力ベクトルの大きさとを比較して、その差が所定の閾値以上である場合にはオフセット値の算出が必要と判定するものであってもよい。
【0036】
本実施形態に適用されるキャリブレーション処理においては、概略、演算回路部170により次の一連の処理を実行することにより、磁気センサ110のオフセット値が算出される。すなわち、
図5に示すように、演算回路部170は、磁気センサ110より取得された磁気データに対応する座標点を3次元座標空間上にプロットした際に、球面Sp上に分布するデータ群から統計的手法を用いて、球面Spを複数(ここでは2つ)の平面により切断した場合の断面形状である各円周C
1、C
2を推定する。次いで、演算回路部170は、推定した円周C
1、C
2の中心を通り、上記の各平面に垂直な垂直線L1、L2を算出する。そして、演算回路部170は、垂直線L1とL2が互いに交差する点又は垂直線L1、L2に最も近接する点を推定して球の中心座標Pbとする。この球の中心座標Pbが磁気センサ110のオフセット値に対応する。
【0037】
以下、本実施形態に適用されるキャリブレーション処理について、具体的に説明する。
まず、演算回路部170は、所定のサンプリング周波数で、移動している電子機器100の磁気センサ110より、時間の経過とともに複数の磁気(磁気データ群)データを取得する(ステップS106)。取得した磁気データ群は、メモリ部180の所定の記憶領域に保存される。
【0038】
次いで、演算回路部170は、3次元座標空間における取得した磁気データ群に対応する座標点の分布に基づいて、3次元座標空間上の所定数N以上の互いに異なる平面F
Nについて、各平面F
N上に形成される円周C
Nの中心座標P
Nを取得しているか否かを判定する(ステップS110)。ここで、平面F
N上に形成される円周C
Nの中心座標P
Nとは、磁気センサ110より取得される磁気データ群が分布する球面を、特定の平面F
Nにより切断した場合の断面形状である円周の中心座標であって、後述するオフセット値算出処理に使用される重要なパラメータである。この円周C
Nの中心座標P
Nは、後述するステップS112〜S120の一連の処理により算出される。したがって、磁気センサ110により磁気データの測定を始めた直後や、十分な数の磁気データが収集されていない状態では、演算回路部170は、ステップS110において「No」と判定して、ステップS112〜S120の一連の処理を実行する。
【0039】
すなわち、ステップS110において、所定数N以上の円周C
Nの中心座標P
Nが取得されている場合には、演算回路部170は、後述するオフセット値算出処理を実行する(ステップS122)。
【0040】
一方、取得されている円周C
Nの中心座標P
Nの数が所定数Nに満たない場合には、演算回路部170は、3次元座標空間における特定の平面F
Nをすでに抽出しているか否かを判定する(ステップS112)。ステップS112において、特定の平面F
Nがすでに抽出されている場合(ステップS112、Yes)には、演算回路部170は、磁気データ群から当該平面F
N上に存在しているとみなせる磁気データを取得する(ステップS116)。一方、特定の平面F
Nが抽出されていない場合(ステップS112、No)には、演算回路部170は、当該平面F
Nを抽出した後(ステップS114)、磁気データ群から当該平面F
N上に存在しているとみなせる磁気データを取得する。
【0041】
具体的には、磁気データが3次元の方向データ(r,θ,φ)として取得されている場合、演算回路部170は、まず、それらの磁気データ群から、角度成分(θ,φ)が異なる少なくとも3個の磁気データ(第1の磁気データ)を選別又は抽出する。そして、演算回路部170は、
図6(a)に示すように、選別した3個の磁気データに対応する座標点をxyzの3次元座標空間にプロットしたとき、これらの3点(x
1,y
1,z
1)、(x
2,y
2,z
2)、(x
3,y
3,z
3)が含まれる平面F
Nを抽出する。そして、演算回路部170は、取得した磁気データ群から、上記の算出された平面F
N上に存在しているとみなせる磁気データ(第2の磁気データ)を取捨選択する。具体的には、演算回路部170は、
図6(b)に示すように、各磁気データについて平面F
Nへの垂線を引いて、平面F
Nまでの距離(垂線距離)が所定の閾値Hth以下であるか否かを判定する。演算回路部170は、垂線距離が閾値Hth以下である場合には、当該磁気データに対応する座標点は平面F
N上に存在しているとみなして、その磁気データを選択して取得する。一方、垂線距離が閾値Hthより大きい場合には当該磁気データに対応する座標点は平面F
N上には存在していないとみなす。ここで、垂線距離を判定する基準となる閾値Hthは、電子機器100が使用される環境(例えば日本国内)における、一般的な地磁気の強さである450ミリガウス(mG)程度に比較して、極めて微小な数値(例えば±1ミリガウス程度)に設定される。これにより、平面F
Nのごく近傍に位置する磁気データの座標点のみが平面F
N上に存在するものとみなされる。
【0042】
次いで、演算回路部170は、上記の平面F
N上に存在しているとみなして選択して取得した磁気データの数(取得数)が所定数以上か否かを判定する(ステップS118)。次いで、磁気データの取得数が所定数以上である場合には、演算回路部170は、当該平面F
N上に分布する磁気データを含んで形成される円周C
Nを推定し、その円周C
Nの中心座標P
Nを算出する(ステップS120)。一方、磁気データの取得数が所定数に満たない場合には、演算回路部170は、ステップS108に戻って、磁気センサ110により磁気データを取得する処理を継続する。ステップS118において、磁気データの取得数が所定数以上である場合には、演算回路部170は、以下の一連の処理を実行して、当該磁気データにより平面F
N上に形成される円周C
Nの中心座標P
Nを算出する。
【0043】
具体的には、円周C
Nの中心座標P
Nを(X
N,Y
N,Z
N)、当該円周C
Nの半径をR
Nとした場合、
図6(c)に示すような中心座標P
N及び半径R
Nからなる球は、次の(11)式で表される。
(x−X
N)
2+(y−Y
N)
2+(z−Z
N)
2=R
N2 ・・・(11)
また、上記のステップS114において抽出した平面F
Nは、次の(12)式の方程式で表される。ここで、a、b、c、dは係数である。
ax+by+cz+d=0 ・・・(12)
【0044】
(12)式において、中心座標P
N(X
N,Y
N,Z
N)は上記の平面F
N上であるので、次の(13)式が成り立つ。
aX
N+bY
N+cZ
N+d=0
Z
N=−(aX
N+bY
N+d)/c ・・・(13)
ここで、A=−a/c、B=−b/c、C=−d/cとおくと、(13)式は、次の(14)式で表される。
Z
N=AX
N+BY
N+C ・・・(14)
【0045】
以上から次の(15)式が成り立つ。
(x−X
N)
2+(y−Y
N)
2+{z−(AX
N+BY
N+C)}
2=R
N2・・・(15)
平面F
N上に分布する磁気データ(x
i,y
i,z
i)から円周C
Nの中心座標P
N(X
N,Y
N,Z
N)までの距離d
iは次の(16)式で表される。
【0047】
ここで、次の(17)式のように、距離d
iの二乗値と半径R
Nの二乗値との差を推定誤差ε
iと定義する。
ε
i=d
i2−R
N2 ・・・(17)
さらに、次の(18)式のように、推定誤差ε
iの二乗総和値Sを定義する。そして、この二乗総和値Sが最小となるような中心座標P
N(X
N,Y
N,Z
N)を算出する。
S=Σε
i2 ・・・(18)
二乗総和値Sを表す(18)式は、次の(19)式のように書き換えることができる。
【0049】
(19)式に上記の(14)式を代入することにより二乗総和値Sは次の(20)式で表される。ここで、(21)式のようにおくと、(20)式は、次の(22)式で表される。
【0051】
(22)式で表された二乗総和値Sを最小とする条件は、X
N,Y
N,D
Nを独立変数として、SをX
N,Y
N,D
Nで微分することにより次の(23)式で表される。
したがって、次の(24)式の連立方程式を解くことにより、独立変数であるX
N,Y
N,D
Nが算出される。ここで、(24)式においては、(25)式のように定義する。
【0053】
そして、ステップS120において、演算回路部170は、特定の平面F
N上に分布する磁気データにより形成される円周C
Nの中心座標P
N(X
N,Y
N,Z
N)を算出した後、ステップS110に戻って、所定数N以上の異なる円周C
Nの中心座標P
Nを取得したか否かを再度判定する。ステップS110において、所定数N以上の異なる円周C
Nの中心座標P
Nが取得されている場合には、演算回路部170は、以下の一連のオフセット値算出処理を実行する(ステップS122)。
【0054】
オフセット値算出処理においては、
図5に示したように、磁気データ群が分布する球面Spにより規定される球の中心座標Pbを算出することにより、磁気センサ110のオフセット値を算出する。すなわち、
図7(a)に示すように、異なる2つの平面F
N上の円周C
Nの中心座標P
Nを通る垂直線L
Nが互いに交差する場合、球の中心座標Pbは、上述した一連の処理により推定された円周C
Nの中心座標P
Nを通り、かつ、平面F
Nに垂直な垂直線L
N上に存在する。したがって、複数の異なる平面F
N上の円周C
Nの中心座標P
Nを通る各垂直線L
Nが互いに交差する点を算出することにより、球の中心座標Pbであるオフセット値を求める。
【0055】
具体的には、
図7(b)、(c)に示すように、まず、演算回路部170は、平面F
1上に分布する磁気データに基づいて推定された円周C
1の中心座標P
1を通り、かつ、平面F
1に直交する垂直線L
1を算出する。また、演算回路部170は、平面F
1とは異なる平面F
2上に分布する磁気データに基づいて推定された円周C
2の中心座標P
2を通り、かつ、平面F
2に直交する垂直線L
2を算出する。そして、演算回路部170は、算出された垂直線L
1と垂直線L
2との交点が存在する場合には、当該交点を球の中心座標Pb(Cx,Cy,Cz)と算出して、オフセット値を算出する。
【0056】
一方、演算回路部170は、算出された垂直線L
1と垂直線L
2との交点が存在しない場合には、垂直線L
1と垂直線L
2とに最も近接する点を球の中心座標Pbと算出する。すなわち、平面F
1に直交する上記垂直線L
1上の点をP
L1、平面F
2に直交する上記垂直線L
2上の点をP
L2とした場合、3次元座標の基準点Pcに対する各点P
L1、P
L2の位置は、次の(26)式で表される。
【0058】
そして、平面F
1に直交する垂直線L
1と、算出される球の中心座標Pb(Cx,Cy,Cz)との距離をK
1とし、平面F
2に直交する垂直線L
2と、算出される球の中心座標Pb(Cx,Cy,Cz)との距離をK
2とする。ここで、誤差関数Iとして、I=K
12+K
22を定義すると、次の(27)式で表される。
【0060】
次いで、この(27)式において、誤差関数Iが最小となる中心座標Pb(Cx,Cy,Cz)を求める。これにより求められる中心座標Pb(Cx,Cy,Cz)は、垂直線L
1と垂直線L
2とに最も近接する点であると推定される。ここで、誤差関数Iが最小となるときの、IのCx、Cy、Cz、p、qによる各導関数は、次の(28)式に示すように、いずれも零になるものとする。
【0062】
上記の(27)、(28)式を整理すると、次の(29)式が得られる。
【0064】
以上のように、オフセット値となる球の中心座標Pbを算出するために使用した円周C
1及び垂直線L
2の数をN(N≧2)として一般化すると、次の(30)式で表される。ここで、(30)式においてA
iは、(31)式のように定義する。
【0066】
したがって、次の(32)式に示す連立方程式を解くことにより、球の中心座標Pbを示すCx、Cy、Czが算出される。
【0068】
上述したように、オフセット値算出処理においては、所定数N以上の異なる平面F
Nについて、各平面F
N上に形成される円周C
Nの中心座標P
Nを通り、かつ、平面F
Nに直交する垂直線L
N相互が互いに交差する点を算出することにより、磁気データ群が分布する球面により規定される球の中心座標Pbが算出される。この中心座標Pbは、磁気センサ110の近傍に配置された電子部品等の着磁による影響を受けた磁気センサ110の新たなオフセット値(オフセットベクトル)である。このようにして算出されたオフセット値は、演算回路部170によりメモリ部180の所定の記憶領域に保存されて、オフセット値が更新される(ステップS124)。
【0069】
なお、上述したオフセット値算出処理においては、磁気センサ110より取得した任意の磁気データを含む、異なる2つの平面上の円周の中心座標を通る垂直線相互の交点を算出する場合について説明したが、本発明はこれに限定されるものではない。すなわち、本発明は、3つ以上の平面について同様の手法を用いて、磁気データ群が分布する球面により規定される球の中心座標を求めるものであってもよい。これによれば、球の中心座標であるオフセット値の算出精度を向上させることができる。
【0070】
次いで、演算回路部170は、磁気センサ110より取得された磁気データ(
図4に示した中心点Pa′の球面Sp′に分布するデータ群、又は、
図5に示した中心座標Pbの球面Spに分布するデータ群)に対して、メモリ部180に保存された、更新されたオフセット値を用いて補正を行うことにより、電子機器100を基準とする方位を算出する(ステップS126)。ここで、演算回路部170は、ステップS102の通常処理に戻って、通常処理として方位算出処理を実行するものであってもよい。
【0071】
なお、
図3に示したフローチャートにおいては図示を省略したが、演算回路部170は、上述した一連の処理動作の実行中、処理動作を中断又は終了させる入力操作や動作状態の変化を常時監視して、当該入力操作や状態変化を検出した場合には、処理動作を強制的に終了する。具体的には、演算回路部170は、ユーザによる動作電源の遮断操作や、電源供給部190における電池残量の低下、実行中の機能やアプリケーションの異常等を検出して、一連の処理動作を強制的に中断して終了する。
【0072】
また、上述した一連の処理動作においては、ステップS104においてオフセット値の算出が必要と判定された場合に、ステップS106以降のキャリブレーション処理を実行する制御方法を示したが、本発明はこれに限定されるものではない。例えば、モーションセンサ120が有する加速度センサ122や角速度センサ124から出力される加速度信号や角速度信号のセンサデータに基づいて電子機器を携帯したユーザが曲がり角などを曲がって移動方向が変化したことが検知された際に、上述したステップS106以降のキャリブレーション処理を自動的に実行して、取得した磁気データ群が分布する球面により規定される球の中心座標を算出することにより、磁気センサ110のオフセット値を算出するものであってもよい。
【0073】
このように、本実施形態においては、磁気センサ110より取得された磁気データに対応する座標点を3次元座標上にプロットした際に、任意の3点の磁気データに対応する座標点を含む所定数N以上の異なる平面F
Nの方程式を算出する。算出された各平面F
Nについて、近傍に存在するとみなせる磁気データの座標点のみを抽出する取捨選択を行う。抽出したデータ群に対応する座標点により各平面F
N上に形成される円周C
Nを推定して、円周C
Nの中心座標P
Nを通り、かつ、平面F
Nに垂直な垂直線L
Nを算出する。そして、各円周C
Nについて算出された垂直線L
Nが互いに交差する点を算出することにより、当該交点の座標を磁気センサのオフセット値として算出する。さらに、磁気センサより取得された磁気データに対して、算出されたオフセット値を用いて補正を行うことにより、電子機器を基準とする方位を算出する。
【0074】
すなわち、例えば、3軸の磁気センサを備えた電子機器をユーザが携帯又は装着した状態で、方位を計測する際に、磁気センサの向きが任意に変化せず、特定軸(例えば重力方向の座標軸)に対する姿勢を一定に保ったまま磁気センサの向きが変化した場合には、磁気センサより取得される磁気データが特定の平面内に集中して分布したり、球面の特定の領域に局所的に分布したりすることになる。このような場合、背景技術に示した特許文献1等に開示されているオフセット値の取得方法においては、統計的手法による解が計算不能になるか、計算誤差が非常に大きくなり、誤った解が計算されてしまい、オフセット値を正しく算出することができなくなる。
【0075】
これに対して、本実施形態においては、球面に分布する任意の3点の磁気データに基づいて、所定数N以上の異なる平面F
Nを算出し、各平面F
N上に形成される円周C
Nの中心座標P
Nを通り、かつ、各平面F
Nに直交する垂直線L
Nが互いに交差する点を算出することにより、磁気センサのオフセット値を精度良く算出することができる。したがって、本実施形態においては、電子機器の姿勢が変化して、磁気センサより取得される磁気データが球面に広く分布する場合に限らず、電子機器の姿勢に変化がなく、磁気データが特定の平面内に集中して分布したり、球面の特定の領域に局所的に分布したりした場合であっても、キャリブレーション処理を良好に実行することができる。
【0076】
また、本実施形態においては、オフセット値の変化を監視して、キャリブレーション処理を実行するか否かの判断処理や、取得した磁気データに基づくオフセット値算出処理等を含む一連の処理動作を、ユーザに特に意識させることなくバックグラウンドで実行する。したがって、本実施形態に係る電子機器によれば、ユーザが意識して特定の動作や操作を行わなくても、磁気センサのキャリブレーション処理(オフセット補正)を自動で実行して、正確な方位を算出することができる。
【0077】
以上、本発明のいくつかの実施形態について説明したが、本発明は、上述した実施形態に限定されるものではなく、特許請求の範囲に記載された発明とその均等の範囲を含むものである。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
【0078】
(付記)
[1]
電子機器において、
前記電子機器の周囲の磁場を検出して、複数の軸方向の磁気データとして出力する磁気センサと、
前記磁気センサの移動に応じて該磁気センサより取得される複数の前記磁気データに基づいて、前記磁気データの前記複数の軸方向を座標軸とする3次元座標空間において、それぞれ、互いに異なる3個以上の第1の磁気データに対応する座標点が含まれる、互いに異なる複数の平面を抽出する平面抽出部と、
前記複数の磁気データから、前記3次元座標空間において、前記第1の磁気データと異なる、前記平面との距離が所定の閾値以下の座標点に対応する前記磁気データを第2の磁気データとして抽出し、前記複数の平面の各々において、前記第1の磁気データと第2の磁気データとに対応する座標点に近接する円周を推定し、前記円周の中心座標を算出する中心座標算出部と、
前記3次元座標空間において、前記複数の平面の各々に対し、前記中心座標を通って前記平面に直交する垂直線をそれぞれ算出し、前記複数の平面における複数の前記垂直線に最も近接する点の座標を、前記磁気センサのオフセット値として算出するオフセット値算出部と、
を有することを特徴とする電子機器。
【0079】
[2]
前記オフセット値算出部は、
前記複数の垂直線が互いに交差する場合には、前記複数の垂直線の前記交差する点の座標を前記オフセット値として算出し、
前記複数の垂直線が互いに交差しない場合には、前記複数の垂直線の各々からの距離が最小となる点の座標を、前記オフセット値として算出することを特徴とする[1]に記載の電子機器。
【0080】
[3]
前記磁気センサの前記オフセット値が変化したか否かを判定するオフセット値変化判定部を、さらに備え、
前記オフセット値変化判定部において前記オフセット値が変化したと判定されたときに、前記平面抽出部における前記複数の平面の抽出と、前記中心座標算出部における前記円周の中心座標の算出と、前記オフセット値算出部における前記オフセット値の算出と、が実行されることを特徴とする[1]又は[2]に記載の電子機器。
【0081】
[4]
前記電子機器の移動動作を検知して、前記移動動作に基づく加速度データ及び角速度データを含むセンサデータを出力するモーションセンサを、さらに備え、
前記センサデータに基づいて前記電子機器の移動方向が変化したことが検知されたときに、前記平面抽出部における前記複数の平面の抽出と、前記中心座標算出部における前記円周の中心座標の算出と、前記オフセット値算出部における前記オフセット値の算出と、が実行されることを特徴とする[1]乃至[3]のいずれかに記載の電子機器。
【0082】
[5]
移動している磁気センサより取得される複数の軸方向の複数の磁気データに基づいて、前記磁気データの前記複数の軸方向を座標軸とする3次元座標空間において、それぞれ、互いに異なる3個以上の第1の磁気データに対応する座標点が含まれる、互いに異なる複数の平面を抽出し、
前記複数の磁気データから、前記3次元座標空間において、前記第1の磁気データと異なる、前記平面との距離が所定の閾値以下の座標点に対応する前記磁気データを第2の磁気データとして抽出し、
前記複数の平面の各々に対し、前記第1の磁気データと前記第2の磁気データとに対応する座標点に近接する円周を推定し、前記円周の中心座標を算出し、
前記3次元座標空間において、前記複数の平面の各々に対し、前記中心座標を通って前記平面に直交する垂直線をそれぞれ算出し、
前記複数の平面における複数の前記垂直線に最も近接する点の座標を、前記磁気センサのオフセット値として算出すること、
を特徴とするセンサ較正方法。
【0083】
[6]
コンピュータに、
移動している磁気センサより取得される複数の軸方向の複数の磁気データに基づいて、前記磁気データの前記複数の軸方向を座標軸とする3次元座標空間において、それぞれ、互いに異なる3個以上の第1の磁気データに対応する座標点が含まれる、互いに異なる複数の平面を抽出させ、
前記複数の磁気データから、前記3次元座標空間において、前記第1の磁気データと異なる、前記平面との距離が所定の閾値以下の座標点に対応する前記磁気データを第2の磁気データとして抽出させ、
前記複数の平面の各々において、前記第1の磁気データと前記第2の磁気データとに近接する円周を推定させて、前記円周の中心座標を算出させ、
前記3次元座標空間において、前記複数の平面の各々に対し、前記中心座標を通って前記平面に直交する垂直線をそれぞれ算出させ、
前記複数の平面における複数の前記垂直線に最も近接する点の座標を、前記磁気センサのオフセット値として算出させること、
を特徴とするセンサ較正プログラム。