(57)【要約】  磁気センサを動的に校正する計算デバイス、システム、装置、及び少なくとも１つの機械読み取り可能媒体をここで説明する。計算デバイスはセンサハブと、そのセンサハブに通信可能に結合した磁気センサとを含む。磁気センサは計算デバイスに対応するセンサデータを収集するように構成されている。また計算デバイスは、記憶された命令を実行するように構成されたプロセッサと、命令を記憶するストレージデバイスとを含む。ストレージデバイスは、プロセッサにより実行された時、計算デバイスのシステム状態を決定し、計算デバイスの決定されたシステム状態をセンサハブに送るように構成されたプロセッサ実行可能コードを含む。センサハブは、磁気センサを介して収集されたセンサデータと、計算デバイスの決定されたシステム状態とに基づき、磁気センサを動的に校正するように構成されている。
2016514272.tif 000002
【特許請求の範囲】
【請求項１】
計算デバイスであって、
センサハブと、
前記センサハブに通信可能に結合した磁気センサであって、前記磁気センサは前記計算デバイスに対応するセンサデータを収集するように構成されている、磁気センサと、
プロセッサと、
プロセッサ実行可能コードを含むストレージデバイスであって、前記プロセッサ実行可能コードは、前記プロセッサにより実行されたとき、前記計算デバイスのシステム状態を決定し、前記計算デバイスの決定されたシステム状態を前記センサハブに送るように構成された、ストレージデバイスとを有し、
前記センサハブは、前記磁気センサを介して収集されたセンサデータと、前記計算デバイスの決定されたシステム状態とに基づき、前記磁気センサを動的に校正するように構成されている、計算デバイス。
【請求項２】
前記センサハブは、前記計算デバイスの決定されたシステム状態に対応するシステム状態変化イベントに対する校正オフセット値を決定し、前記校正オフセット値を用いて、前記センサデータを含む前記磁気センサの出力を補正することにより、前記磁気センサを動的に校正するように構成される、請求項１に記載の計算デバイス。
【請求項３】
前記センサハブは、前記磁気センサの出力の値から前記校正オフセット値を減算することにより、前記磁気センサの出力を補正するように構成されている、
請求項２に記載の計算デバイス。
【請求項４】
前記磁気センサの補正出力は、前記計算デバイスに対応する周囲磁場を含み、前記センサハブは、前記周囲磁場を前記計算デバイスにおいて実行されているアプリケーションに提供するように構成されている、請求項２に記載の計算デバイス。
【請求項５】
前記センサハブは、前記計算デバイスの決定されたシステム状態に対応する複数のシステム状態変化イベントの各々に対する校正オフセット値を決定し、前記校正オフセット値を用いて、前記センサデータを含む前記磁気センサの出力を補正することにより、前記磁気センサを動的に校正するように構成される、請求項１に記載の計算デバイス。
【請求項６】
前記センサハブは、
前記複数のシステム状態変化イベントの校正オフセット値を合計することにより、前記計算デバイスの決定されたシステム状態に対応する結合校正オフセット値を決定し、前記磁気センサの出力の値から前記結合校正オフセット値を減算することにより、前記磁気センサの出力を補正するように構成されている、請求項５に記載の計算デバイス。
【請求項７】
前記磁気センサの補正出力は、前記計算デバイスに対応する周囲磁場を含み、前記センサハブは、前記周囲磁場を前記計算デバイスにおいて実行されているアプリケーションに提供するように構成されている、請求項５に記載の計算デバイス。
【請求項８】
前記センサハブは前記計算デバイスのオペレーティングシステムを介して実装される、
請求項１に記載の計算デバイス。
【請求項９】
前記センサハブは前記計算デバイスのプロセッサを介して実装される、
請求項１に記載の計算デバイス。
【請求項１０】
前記センサハブは前記計算デバイスのオペレーティングシステムと前記計算デバイスのプロセッサとの両方を介して実装される、請求項１に記載の計算デバイス。
【請求項１１】
前記磁気センサは、センサインタフェースを介して前記センサハブ及び前記プロセッサに通信可能に結合している、請求項１に記載の計算デバイス。
【請求項１２】
計算デバイスの磁気センサを動的に校正する方法であって、
磁気センサを介して計算デバイスのセンサデータを収集するステップと、
前記計算デバイスのシステム状態を決定するステップと、
前記計算デバイスの磁気センサを、前記センサデータと前記計算デバイスのシステム状態とに基づいて動的に校正するステップとを有する、方法。
【請求項１３】
前記磁気センサを動的に校正するステップは、前記計算デバイスの決定されたシステム状態に対応するシステム状態変化イベントの校正オフセット値を決定するステップを有する、請求項１２に記載の方法。
【請求項１４】
前記校正オフセット値を用いて前記センサデータを含む前記磁気センサの出力を補正するステップを有する、請求項１３に記載の方法。
【請求項１５】
前記磁気センサの補正された出力を前記計算デバイスにおいて実行されているアプリケーションに提供するステップを有する、請求項１４に記載の方法。
【請求項１６】
前記磁気センサを動的に校正するステップは、
前記計算デバイスの決定されたシステム状態に対応する複数のシステム状態変化イベントの各々の校正オフセット値を決定するステップと、
前記複数のシステム状態変化イベントの校正オフセット値を合計することにより結合校正オフセット値を決定するステップと、
前記磁気センサの出力の値から前記結合校正オフセット値を減算することにより、前記磁気センサの出力を補正するステップとを有する、
請求項１２に記載の方法。
【請求項１７】
前記磁気センサの補正された出力を前記計算デバイスにおいて実行されているアプリケーションに提供するステップを有する、請求項１６に記載の方法。
【請求項１８】
命令が記憶された少なくとも１つの機械読み取り可能媒体であって、前記命令は、プロセッサで実行されるのに応じて、前記プロセッサに、
計算デバイスにある磁気センサの出力を決定させ、前記出力はセンサデータを含み、
前記計算デバイスのシステム状態を決定させ、
決定されたシステム状態に対応する各システム状態変化イベントの校正オフセット値を決定させ、
前記システム状態変化イベントの校正オフセット値を合計することにより結合校正オフセット値を計算させ、
前記磁気センサの出力の値から前記結合校正オフセット値を減算することにより、前記磁気センサの補正出力を計算させ、
前記結合校正オフセット値と前記磁気センサの補正出力とに基づいて、前記システム状態変化イベントのどれかの校正オフセット値を更新することにより前記磁気センサを動的に校正させる、
少なくとも１つの機械読み取り可能媒体。
【請求項１９】
前記命令は、前記プロセッサに、前記磁気センサの補正出力を前記計算デバイスにおいて実行されている一以上のアプリケーションに提供させる、
請求項１８に記載の少なくとも１つの機械読み取り可能媒体。
【請求項２０】
前記磁気センサの補正出力は前記計算デバイスに対応する周囲磁場を含む、
請求項１８に記載の少なくとも１つの機械読み取り可能媒体。
【請求項２１】
磁気センサを動的に校正する装置であって、
磁気センサと、
プロセッサと、
プロセッサ実行可能コードを含むストレージデバイスであって、前記プロセッサ実行可能コードは、前記プロセッサにより実行されたとき、前記磁気センサを介して前記装置のセンサデータを収集し、前記装置のシステム状態を決定するように構成されたストレージデバイスと、
前記センサデータと前記装置のシステム状態とに基づいて、前記磁気センサを動的に校正するように校正されたコントローラとを有する、装置。
【請求項２２】
前記コントローラはセンサハブを有する、請求項２１に記載の装置。
【請求項２３】
前記コントローラは、前記装置の決定されたシステム状態に対応するシステム状態変化イベントに対する校正オフセット値を決定し、前記校正オフセット値を用いて、前記センサデータを含む前記磁気センサの出力を補正することにより、前記磁気センサを動的に校正するように構成される、
請求項２１に記載の装置。
【請求項２４】
プロセッサ実行可能コードは、前記磁気センサの補正出力を前記装置において実行されているアプリケーションに提供するように構成されている、請求項２３に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は概して磁気センサの動的校正に関する。より具体的には、本発明は、磁気センサが存在する計算デバイスのシステム状態に基づいて磁気センサを動的に校正する計算デバイス、方法、装置、及び少なくとも１つの機械読み取り可能媒体に関する。
【背景技術】
【０００２】
磁気センサは、計算デバイスのプラットフォーム中に集積され、ヘディング情報、例えば計算デバイスが向いている方向に関する情報を測定又は検出するコンパスとして用いられることが多い。かかるヘディング情報はナビゲーションアプリケーション、知覚計算（ｐｅｒｃｅｐｔｕａｌ  ｃｏｍｐｕｔｉｎｇ）アプリケーション、ゲームアプリケーションなどに用いることができる。しかし、計算デバイスのプラットフォームにより生じる干渉は、磁気センサの正しい動作を妨げ、ヘディング測定値（ｈｅａｄｉｎｇ  ｍｅａｓｕｒｅｍｅｎｔｓ）が不正確になる。具体的に、磁気センサの入力における計算デバイスのプラットフォームにより生じる磁場は、計算デバイスのさまざまなコンポーネントのシステム状態と、そのコンポーネントの磁気センサに対する近さとに基づき、シフトする。
【０００３】
現在の手法によれば、磁場におけるかかるプラットフォームに起因するシフトは、回転面内での磁気センサの重心を計算、モニタ、及びトラッキングすることにより対応される。しかし、かかる手法は、計算デバイスのコンポーネントのシステム状態における変化により生じる磁場のシフトを適切に対応できない。例えば、かかる手法は、計算デバイスのバッテリーが充電されているとき、又は計算デバイスの全体的なパワー消費が変化したときに生じる、計算デバイスのパワー状態の変化により生じる、センサにおいて見られる磁場のシフトに対応（ａｃｃｏｕｎｔ  ｆｏｒ）できない。
【０００４】
現在、コンポーネントのシステム状態における変化に起因する磁場のシフトは、外部干渉の変化に起因する磁場のシフトと同様に処理されている。かかる手法によると、複数のセンサ測定値を用いて外部環境の変化を検出し、次いで、外部環境の変化により生じた磁場のシフトを計算するアルゴリズムを用いる。結果として、磁気センサを読む計算デバイスの方位出力は、磁場の物理的シフトの発生と、磁場のシフトの検出及び計算との間の時間には正しくない。
【図面の簡単な説明】
【０００５】
【図１】一定磁場におけるすべての磁気センサ方位にわたる磁気センサの出力を示す図である。
【図２】磁気センサの出力のシフトを示すグラフである。
【図３】ここに説明する磁気センサを動的に校正する手法を実装できる計算デバイスを示すブロック図である。
【図４】図３の計算デバイスのセンサハブを示すブロック図である。
【図５】計算デバイスの磁気センサを動的に校正する方法を示すプロセスフロー図である。
【図６】計算デバイスの磁気センサを動的に校正するコードを記憶した有体かつ非一時的機械読み取り可能媒体を示すブロック図である。  本開示と図面を通して同じ数字を用いて同じコンポーネントとフィーチャを参照する。１００番台の数字は最初に図１に現れるフィーチャを指し、２００番台の数字は最初に図２に現れるフィーチャを指し、以下同様である。
【発明を実施するための形態】
【０００６】
上記の通り、計算デバイスのプラットフォームにより生じる干渉は、計算デバイス中の磁気センサの適切な機能を妨げ、これは磁気センサの入力においてプラットフォームにより生じる磁場をシフトすることによる。さらに、現在の手法は、計算デバイスのコンポーネントのシステム状態における変化により生じる磁場のシフトに自動的に対応（ａｃｃｏｕｎｔ  ｆｏｒ）できない。
【０００７】
計算デバイスのプラットフォームの磁気センサにより測定された磁場、例えばＢｓｅｎｓｏｒは、回転による歪みが無視できるので、３つの磁場のベクトル和とそれらの各座標系として、式（１）に示すように表せる。３つの磁場は、プラットフォームにより生じる磁場、例えばＢｐｌａｔｆｏｒｍ、地球の磁場、例えばＢｅａｒｔｈ、及びプラットフォーム外部の磁場源からの貢献、例えばＢａｍｂｉｅｎｔを含む。
【０００８】
【数１】
2016514272.tif 000003
式（１）において、
［外１］
2016514272.tif 000004
はプラットフォーム／センサ座標に等しく、
［外２］
2016514272.tif 000005
は世界座標に等しい。また、
［外３］
2016514272.tif 000006
はプラットフォーム／センサ座標と世界座標の回転変換行列である。各ベクトルの絶対値は、磁力の強さと、世界座標系及びプラットフォーム／センサ座標系における境界への近さとの両方の関数である。
【０００９】
プラットフォームの真のヘディングは式（２）により決定できる。
【００１０】
【数２】
2016514272.tif 000007
ヘディング情報を決定する現在の実装は、式（２）に示したａｒｃｔａｎ関数から角度を正しく計算するため、磁気センサにおけるプラットフォーム誘導磁場により磁気センサ出力を調整する。しかし、この値は、計算デバイスのコンポーネントのシステム状態の変化により誘導された磁場によりシフトされる。
【００１１】
図１は、一定磁場におけるすべての磁気センサ方位にわたる磁気センサの出力１０２を示すグラフ１００である。図１に示したように、磁気センサは、一定磁場中で磁気センサのｚ軸の周りに回転したとき、重心１０４は原点すなわちｘ−ｙ座標（０，０）になる。グラフ１００のｘ軸１０６は、ｘ方向のカウント数を表し、グラフ１００のｙ軸１０８はｙ方向のカウント数を表す。
【００１２】
図２は、磁気センサの出力のシフトを示すグラフ２００である。グラフ２００のｘ軸２０２は、ｘ方向のカウント数を表し、グラフ２００のｙ軸２０４はｙ方向のカウント数を表す。グラフ２００は理想的な場合の磁気センサの出力２０６を示す。グラフ２００も磁気センサの出力２０８を示すが、計算デバイスが磁気センサと同じ基準フレーム内に固定され、すべての方位にわたり一定のシフトを生じる磁場源を含む場合のものである。センサ出力は、計算デバイスが一以上のコンポーネントのシステム状態の変化を経験した時にシフトし得る。
【００１３】
現在の手法によれば、計算デバイスは、プラットフォーム誘導磁場によるシフトを推定する複雑なトラッキングアルゴリズムに依存するか、又は工場校正時に決定された静的オフセットに依存する。しかし、計算デバイスの一以上のコンポーネントのシステム状態の変化は、十分近ければ、磁気センサにより検出可能な一以上の新しい局所的な磁場を誘導し得る。かかる磁場により生じる磁気センサの出力における瞬間的なシフトは、現在の手法では自動的に対応できない（ａｃｃｏｕｎｔ  ｆｏｒ）。
【００１４】
それゆえ、ここに説明する実施形態は磁気センサの状態駆動校正（ｓｔａｔｅ  ｄｒｉｖｅｎ  ｃａｌｉｂｒａｔｉｏｎ）を提供する。具体的に、ここに説明する実施形態は、計算デバイスのシステム状態から得られる校正オフセット値に基づき、計算デバイスの磁気センサの出力を動的に補正する計算デバイス、方法、及び少なくとも１つの機械読み取り可能媒体を提供する。
【００１５】
ここに説明する実施形態は、センサ応答のシフトを直接追跡する間違った方向ヘディング計算の源を無くし、磁気センサ応答のシフトを検出するのにかかる時間を短縮し得る。さらに、ここに説明する実施形態は、計算デバイスのシステム状態によるセンサシフトの計算及びトラッキングに関連する計算負荷を低減し得る。結果として、磁気センサは、磁場のプラットフォーム誘導シフトに関わらず、真のヘディングをトラッキングし得る。
【００１６】
また、以下の説明及び請求項において、「ｃｏｕｐｌｅｄ」と「ｃｏｎｎｅｃｔｅｄ」との用語及びその変化形を用いることがある。言うまでもなく、これらの用語は互いに同意語として使用したものではない。例えば、一部の実施形態では、「接続された」という用語を用いて、２以上の要素が互いに物理的または電気的に直接的に接触していることを示している。「結合された」という用語は、２つ以上の要素が物理的または電気的に直接的に接触していることを示している。しかし、「結合された」という用語は、複数の要素が互いに直接的には接触してないが、互いに協働または相互作用することを示している。
【００１７】
ある実施形態は、ハードウェア、ファームウェア、及びソフトウェアの１つまたはその組合せで実施することができる。ある実施形態は、機械読み取り可能媒体に格納された命令として実施することもできる。コンピューティングプラットフォームがこの命令を読み出し、実行して、ここに説明した動作を実行する。機械読み取り可能媒体には、機械、例えばコンピュータによる読み取りが可能な形式で情報を格納または伝送する任意のメカニズムが含まれる。例えば、機械読み取り可能媒体には、読出専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）；磁気ディスク記憶媒体；光記憶媒体；フラッシュメモリデバイス；電子的、光学的、音響的その他の形式の伝送信号、例えば搬送波、赤外線信号、デジタル信号、信号を送受信するインタフェース等、などが含まれる。
【００１８】
実施形態は実装又は実施例である。本明細書において「一実施形態」、「ある実施形態」、「さまざまな実施形態」、「他の実施形態」とは、その実施形態に関して説明する機能、構造、特徴がここに説明した少なくともある実施形態に含まれるが、必ずしもすべての実施形態には含まれないことを意味している。「一実施形態」や「ある実施形態」と言っても、必ずしも同じ実施形態を指しているとは限らない。
【００１９】
ここに説明し図示したコンポーネント、フィーチャ、構造、又は特徴のすべてが、すべての場合にある具体的な実施形態に含まれる必要はない。例えば、明細書において、コンポーネント、フィーチャ、構造又は特徴が、含まれ「得る」、含まれることが「できる」と言った場合、その具体的なコンポーネント、フィーチャ、構造又は特徴がすべての場合に含まれなくてもよい。明細書又は特許請求の範囲で「一」要素と言う場合、これはその要素が１つだけあることを意味するのではない。明細書又は特許請求の範囲で「一追加」要素と言う場合、これはその追加要素が１つより多くあることを排除するものではない。
【００２０】
留意点として、具体的なインプリメンテーションを参照して実施形態を説明したが、ある実施形態では他のインプリメンテーションが可能である。また、図面に示し及び／又はここに説明した、回路要素の構成及び／又は順序、又はその他の特徴は、図示して説明した具体的な方法で構成されなくてもよい。ある実施形態では、他の多くの構成が可能である。
【００２１】
図に示した各システムでは、ある場合の要素は、それぞれ同じ参照番号又は異なる参照番号を有し、表示された要素が異なる及び／又は同じことを示唆している。しかし、要素は、フレキシブルであり、異なるインプリメンテーションを有し、ここに示し説明したシステムの一部又は全部と機能する。図面に示した様々な要素は同じもの又は違うものである。どれを第１の要素と呼び、どれを第２の要素と呼ぶかは任意的である。
【００２２】
図３は、ここに説明する磁気センサを動的に校正する手法を実装できる計算デバイス３００を示すブロック図である。計算デバイス３００は、例えば、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、モバイルデバイス、サーバ、又はセルラ電話などであってもよい。計算デバイス３００は、記憶された命令を実行するように構成されたプロセッサ３０２と、そのプロセッサ３０２により実行可能な命令を記憶するメモリデバイス３０４とを含み得る。プロセッサ３０２は、シングルコアプロセッサ、マルチコアプロセッサ、計算クラスタ、又はその他の構成であり得る。プロセッサ３０２は、複数命令セットコンピュータ（ＣＩＳＣ）プロセッサ、縮小命令セットコンピュータ（ＲＩＳＣ）プロセッサ、ｘ８６命令セット互換プロセッサ、マルチコア、またはその他の任意のマイクロプロセッサまたは中央処理装置（ＣＰＵ）として実装できる。幾つかの実施形態では、プロセッサ３０２は、デュアルコアプロセッサ、デュアルコアモバイルプロセッサなどを含む。
【００２３】
メモリデバイス３０４は、ランダムアクセスメモリ（例えば、ＳＲＡＭ，ＤＲＡＭ，ゼロキャパシタＲＡＭ，ＳＯＮＯＳ，ｅＤＲＡＭ，ＥＤＯＲＡＭ，ＤＤＲＲＡＭ，ＲＲＡＭ，ＰＲＡＭなど）、リードオンリーメモリ（例えば、ＭａｓｋＲＯＭ，ＰＲＯＭ，ＥＰＲＯＭ，ＥＥＰＲＯＭなど）、フラッシュメモリ、又はその他の好適なメモリシステムを含み得る。メモリデバイス３０４は、プロセッサ３０２により実行可能であり、計算デバイス３００のシステム状態に基づきシステムデバイス３００内に実装された磁気センサ３０６を動的に校正するサポートを提供するために用いられる命令を記憶する。
【００２４】
プロセッサ３０２は、システムバス３０８（例えば、ＰＣＩ，ＩＳＡ，ＰＣＩ−Ｅｘｐｒｅｓｓ，ＨｙｐｅｒＴｒａｎｓｐｏｒｔ（登録商標），ＮｕＢｕｓなど）を通して、計算デバイス３００を一以上のＩ／Ｏデバイス３１２に入出力（Ｉ／Ｏ）デバイスインタフェース３１０に接続され得る。Ｉ／Ｏデバイス３１２は、例えば、キーボード、ポインティングデバイスなどを含み得る。ポインティングデバイスは、タッチパッドやタッチスクリーンなどを含み得る。Ｉ／Ｏデバイス３１２は、計算デバイス３００の組み込みコンポーネントであってもよく、又は計算デバイス３００に外部接続されたデバイスであってもよい。
【００２５】
プロセッサ３０２は、システムバス３０８を通して、計算デバイス３００をディスプレイデバイス３１６に接続するように構成されたディスプレイデバイスインタフェース３１４にリンクされてもよい。ディスプレイデバイス３１６は、計算デバイス３００の組み込みコンポーネントであるディスプレイスクリーンを含み得る。ディスプレイデバイス３１６は、コンピュータモニタ、テレビジョン、又はプロジェクタなども含み得る。これらは計算デバイス３００に外部接続される。
【００２６】
プロセッサ３０２は、バス３０８を通してネットワークインタフェースコントローラ（ＮＩＣ）３１８にもリンクされ得る。ＮＩＣ３０８は、プロセッサ３０２を、バス３０８を通してネットワーク３２０に接続するように構成され得る。ネットワーク３２０はワイドエリアネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、又はインターネットなどであり得る。
【００２７】
計算デバイス３００はストレージデバイス３２２を含んでいてもよい。ストレージデバイス３２２は、ハードドライブ、光ドライブ、フラッシュドライブ、ドライブアレイなどの物理的メモリを含み得る。ストレージデバイス３２２は、リモートストレージドライブも含み得る。ストレージデバイス３２２は、計算デバイス３００のシステム状態に基づき磁気センサ３０６を動的に校正するサポートを提供する命令を記憶し得る。さまざまな実施形態では、計算デバイス３００のシステム状態は計算デバイス３００のさまざまな個々のコンポーネントのシステム状態の和を含む。
【００２８】
ストレージデバイス３２２はオペレーティングシステム３２４を含み得る。オペレーティングシステム３２４は一以上のドライバをインストールしている。ドライバにより、ハードウェア又はオペレーティングシステム３２４上にインストールされストレージデバイス３２２内にある一以上のアプリケーション３２６は、計算デバイス３００のオペレーティングシステム３２４又は（磁気センサ３０６を含む）その他のハードウェアと通信できる。ドライバを用いて、センサハブ（又はコントローラ）３２８はセンサデータを、磁気センサ３０６から、オペレーティングシステム３２４にインストールされている一以上のアプリケーション３２６のどれかに通信できる。
【００２９】
さまざまな実施形態では、磁気センサ３０６はプロセッサ３０２にバス３０８を介して接続される。磁気センサ３０６は、プライベートバス又はセンサインタフェース（図示せず）を介してプロセッサ３０２に直接接続してもよい。さらに、さまざまな実施形態では、磁気センサ３０６はセンサインタフェースを介してセンサハブ３２８に通信可能に結合している。センサハブ３２８は、磁気センサ３０６からセンサデータを収集するように構成されてもよい。幾つかの実施形態では、計算デバイス３００内の一以上のマイクロコントローラは、磁気センサ３０６を介して収集されたセンサデータをセンサハブ３２８に提供してもよい。センサデータは、磁気ヘディング、磁北、グローバルポジション、標高、他の計算デバイスへの近さなどに関するデータを含み得る。
【００３０】
センサハブ３２８は、磁気センサ３０６を介して収集されたセンサデータと、計算デバイス３００の現在のシステム状態とに基づき、磁気センサ３０６を動的に校正するように構成されてもよい。さまざまな実施形態では、センサハブ３２８は、さらに図４を参照して説明するように、記憶されたバイアスバッファ３３０内に記憶された校正オフセット値を用いて、かかる動的校正手順を行う。また、センサハブ３２８は、図４を参照してさらに説明するように、磁気センサやシステム状態バッファ３３２に基づき、記憶されたバイアスバッファ３３０内の校正オフセット値を継続的に又は定期的に更新してもよい。
【００３１】
幾つかの実施形態では、センサハブ３２８はカーネルレベルで動作し、計算デバイス３００のオペレーティングシステム３２４を介して実装される。他の実施形態では、センサハブ３２８は、プロセッサレベルで動作し、プロセッサ３０２や計算デバイス３００内にある任意数のその他のハードウェアを介して実装される。さらに、さまざまな実施形態では、センサハブ３２８は、オペレーティングシステム３２４とプロセッサ３０２との両方を介して同時に実装される。これは望ましいが、その理由は、幾つかの場合には、プロセッサ３０２が、オペレーティングシステム３２４にエクスポーズ（ｅｘｐｏｓｅｄ）されないシステム状態変化に関するデータを知っていることである。また、幾つかの場合には、オペレーティングシステム３２４は、プロセッサ３０２にエクスポーズされていない、例えばウェブカムやラジオなどの新しくインストールされたハードウェアのシステム状態変化イベントに関するデータを知っているかも知れない。
【００３２】
また、幾つかの実施形態では、センサハブ３２８はファームウェアを含む。例えば、センサハブ３２８は、レジスタ・トランジスタロジック（ＲＴＬ）又はカーネルレベル及び／又はプロセッサレベルにあるその他の任意の好適なタイプのロジックを含んでもよい。
【００３３】
言うまでもなく、図３のブロック図は、計算デバイス３００が図３に示したすべてのコンポーネントを含むことを示すことを意図したものではない。さらに、計算デバイス３００は、具体的な実装の詳細に応じて、図３に示していない別のコンポーネントをいくつ含んでいてもよい。
【００３４】
図４は、図３の計算デバイス３００のセンサハブ３２８を示すブロック図である。同じ数字を付したアイテムは図３を参照して説明した通りである。図３に示したように、センサハブ３２８は、センサデータを磁気センサから磁気センサ出力４００の形式で受け取ることができる。センサハブ３２８は、次いで、検出された複数のシステム状態変化イベントに基づき計算デバイスのシステム状態４０２を決定できる。かかるシステム状態変化イベントは、例えば、計算デバイス３００のラジオのスイッチを入れること、計算デバイス３００のバッテリーの充電、又は計算デバイス３００のプロセッサ３０２をターボモードに入れることを含み得る。さまざまな実施形態では、システム状態変化イベントは、プロセッサ３０２、一以上のマイクロコントローラ、又は計算デバイス３００内にあるその他のハードウェアを介して検出され、検出されたシステム状態変化イベントは次いでセンサハブ３２８に送られる。
【００３５】
さまざまな実施形態では、センサハブ３２８は、記憶されたバイアスバッファ３３０内にある校正オフセットテーブル４０６から検出された各システム状態変化イベントの校正オフセット値４０４を決定できる。校正オフセットテーブル４０６は、計算デバイス３００のさまざまなシステム状態に基づき生成され得る。校正オフセットテーブル４０６は、磁気センサ３０６の性能を維持するためリアルタイムで使える。具体的に、校正オフセットテーブル４０６は、以下に表１に示すように、さまざまなシステム状態変化イベントに関する校正オフセット値を含んでいてもよい。幾つかの実施形態では、校正オフセット値は、計算デバイス３００のブートアップシーケンスの間に、測定され、記憶されたバイアスバッファ３３０の校正オフセットテーブル４０６に記憶されてもよい。
【００３６】
表１：校正オフセットテーブルの例
【００３７】
【表１】
2016514272.tif 000008
センサハブ３２８中のシステム状態決定モジュール４０８は、次いで、計算デバイス３００の決定されたシステム状態４０２に対応する、結合された校正オフセット値４１０を決定でき、これはシステム状態変化イベントの校正オフセット値４０４を合計することにより行う。結合された校正オフセット値４１０は、図４に示したように、補正磁気センサ出力決定モジュール４１２に送信され得る。補正磁気センサ出力決定モジュール４１２は、磁気センサを介して収集された磁気センサ出力４００から、結合された校正オフセット値４１０を減算して、補正磁気センサ出力４１４を取得できる。より具体的に、補正磁気センサ出力決定モジュール４１２は、式（３）に示すように、磁気センサ３０６により測定された磁場ＢＭｅａｓｕｒｅｄと、計算デバイス３００のシステム状態の変化により誘導された磁場ＢＳｙｓｔｅｍＳａｔｅのシフトに対応（ａｃｃｏｕｎｔ  ｆｏｒ）する結合された校正オフセット値とに基づき、磁気センサの補正磁場ＢＣｏｒｒｅｃｔｅｄを決定し得る。
【００３８】
【数３】
2016514272.tif 000009
さまざまな実施形態では、補正磁気センサ出力４１４は、計算デバイス３００に実行されるいくつのアプリケーションにでも、計算デバイス３００の周囲磁場４１６として提供できる。また、さまざまな実施形態では、補正磁気センサ出力４１４及び結合された校正オフセット値４１０は、磁気センサ・システム状態バッファ３３２に提供され得る。磁気センサ・システム状態バッファ３３２は、記憶されたバイアスバッファ３３０の校正オフセットテーブル４０６内の校正オフセット値を更新するために用い得る。具体的に、磁気センサ・システム状態バッファ３３２は、過去の補正磁気センサ出力と、対応する結合された校正オフセット値とをリストするテーブル４１８を含んでいてもよい。さまざまな実施形態では、テーブル４１８は、現在の補正磁気センサ出力４１４と現在の結合された校正オフセット値４１０で継続的に更新され得る。
【００３９】
さまざまな実施形態では、現在の補正磁気センサ出力４１４と現在の結合校正オフセット値４１０は、及び更新されたテーブル４１８に関する情報は、動的磁気センサ校正モジュール４２０に送られ得る。動的磁気センサ校正モジュール４２０は、次いで、記憶されたバイアスバッファ３３０の校正オフセットテーブル４０６内の校正オフセット値のリアルタイム更新を介して、計算デバイス３００の磁気センサ３０６を動的に校正できる。具体的に、現在の補正磁気センサ出力４１４と現在の結合校正オフセット値４１０とは既存の校正オフセット値と比較され、対応するシステム状態変化イベントのいずれかの銃剣が変化したことをデータが示す場合、既存の校正オフセット値は記憶されたバイアスバッファ３３０の校正オフセットテーブル４０６において変更又は置換され得る。
【００４０】
言うまでもなく、図４のブロック図は、センサハブ３２８が図４に示したすべてのコンポーネントを含むことを示すことを意図したものではない。さらに、センサハブ３２８は、具体的な実装の詳細に応じて、図４に示していない別のコンポーネントをいくつ含んでいてもよい。
【００４１】
図５は、計算デバイスの磁気センサを動的に校正する方法を示すプロセスフロー図である。方法５００は、磁気センサがある計算デバイスにより実施され得る。計算デバイスは、図３と図４を参照して説明した計算デバイス３００であってもよいし、ここに説明する手法により動的に校正される磁気センサを含む任意の好適な計算デバイスであってもよい。
【００４２】
方法５００は、ブロック５０２で始まり、計算デバイスのセンサデータが磁気センサを介して収集される。センサデータは磁気センサの出力であってもよい。センサデータは、磁気ヘディング、磁北、グローバルポジション、標高、他の計算デバイスへの近さなどに関するデータを含み得る。
【００４３】
ブロック５０４において、計算デバイスのシステム状態が決定される。計算デバイスのシステム状態は、計算デバイスのさまざまな個別コンポーネントのシステム状態に基づいて決定され得る。さらに、計算デバイスのシステム状態は、例えば、計算デバイスのラジオのスイッチを入れること、又は計算デバイスのバッテリーを充電することなどのシステム状態変化イベントに基づき決定され得る。
【００４４】
ブロック５０６において、計算デバイスの磁気センサは、センサデータと計算デバイスのシステム状態とに基づいて動的に校正される。さまざまな実施形態では、磁気センサを動的に校正するステップは、計算デバイスの決定されたシステム状態に対応するシステム状態変化イベントに対する校正オフセット値を決定するステップと、校正オフセット値を用いて磁気センサ出力を補正するステップとを含む。具体的に、磁気センサ出力は、計算デバイスのさまざまなコンポーネントのシステム状態の変化により生じる磁場のシフトを説明するように補正してもよい。磁気センサの補正出力は、次いで、計算デバイス上で実行されているアプリケーションに提供されてもよい。
【００４５】
さらに、幾つかの実施形態では、磁気センサを動的に校正するステップは、計算デバイスの決定されたシステム状態に対応するシステム状態変化イベントの各々の校正オフセット値を決定するステップを含む。結合校正オフセット値は、システム状態変化イベントの校正オフセット値の和を取ることにより決定してもよく、磁気センサ出力は、磁気センサ出力値から結合校正オフセット値を減算することにより補正され得る。補正磁気センサ出力は、次いで、計算デバイス上で実行されているアプリケーションに提供されてもよい。
【００４６】
さまざまな実施形態では、システム状態変化イベントの校正オフセット値は、計算デバイスのブートアップシーケンスの間に決定され得る。さらに、校正オフセット値は、リアルタイムで校正され、これは現在の補正磁気センサ出力と現在の結合校正オフセット値とを既存の校正オフセット値と比較して、対応するシステム状態変化イベントの状態が変化したことをデータが示す場合、既存の校正オフセット値を変更又は置換することにより行うことができる。
【００４７】
言うまでもなく、図５に示したプロセスフロー図は、方法５００のブロックがある特定の順序で実行されなければならないことや、方法５００のすべてのブロックがすべての場合に含まれなければならないことを示すことを意図していない。さらに、具体的な実装の詳細に応じて、別のブロックをいくつでも方法５００に含めてもよい。
【００４８】
方法５００はさまざまなアプリケーションに用いることもできる。例えば、さまざまな実施形態では、方法５００による計算デバイスの磁気センサの校正により、計算デバイス上で実行されたロケーションアプリケーション（すなわち任意のタイプのロケーション情報を利用するアプリケーション）が正しく機能できる。
【００４９】
図６は、計算デバイスの磁気センサを動的に校正するコードを記憶した有体かつ非一時的機械読み取り可能媒体６００を示すブロック図である。有体かつ非一時的機械読み取り可能媒体６００は、コンピュータバス６０４によりプロセッサ６０２によりアクセスされ得る。さらに、有体かつ非一時的機械読み取り可能媒体６００は、プロセッサ６０２にここに説明した方法を実行するように命令するように構成されたコードを含んでいてもよい。
【００５０】
ここに説明したさまざまなソフトウェアコンポーネントは、図６に示すように、有体かつ非一時的機械読み取り可能媒体６００に記憶されてもよい。例えば、システム状態決定モジュール６０６は、計算デバイスのシステム状態を決定するように構成されてもよい。また、補正磁気センサ出力決定モジュール６０８は、計算デバイスのシステム状態に基づき磁気センサの出力を補正するように構成され得る。さらに、動的磁気センサ校正モジュール６１０は、計算デバイスのシステム状態及び補正磁気センサ出力に基づいて、計算デバイスの磁気センサを動的に校正するように構成されてもよい。
【００５１】
言うまでもなく、図６のブロック図は、有体かつ非一時的機械読み取り可能媒体６００が図６に示したすべてのコンポーネントを含むことを示すことを意図したものではない。さらに、具体的な実装の詳細に応じて、図６に示していない別のコンポーネントをいくつでも、有体かつ非一時的機械読み取り可能媒体６００に含むこともできる。
【００５２】
実施例１
ここに計算デバイスを提供する。計算デバイスはセンサハブと、そのセンサハブに通信可能に結合した磁気センサとを含む。磁気センサは計算デバイスに対応するセンサデータを収集するように構成されている。計算デバイスはプロセッサとストレージデバイスも含む。ストレージデバイスは、プロセッサにより実行された時、計算デバイスのシステム状態を決定し、計算デバイスの決定されたシステム状態をセンサハブに送るように構成されたプロセッサ実行可能コードを含む。センサハブは、磁気センサを介して収集されたセンサデータと、計算デバイスの決定されたシステム状態とに基づき、磁気センサを動的に校正するように構成されている。
【００５３】
センサハブは、計算デバイスの決定されたシステム状態に対応するシステム状態変化イベントに対する校正オフセット値を決定し、その校正オフセット値を用いてセンサデータを含む磁気センサの出力を補正することにより、磁気センサを動的に校正するように構成されてもよい。具体的に、センサハブは、磁気センサの出力の値から校正オフセット値を減算することにより、磁気センサの出力を校正するように構成されてもよい。磁気センサの補正出力は、計算デバイスに対応する周囲磁場を含んでいてもよく、センサハブは、周囲磁場を計算デバイス上で実行されているアプリケーションに提供するように構成されていてもよい。
【００５４】
さらに、センサハブは、計算デバイスの決定されたシステム状態に対応する各システム状態変化イベントに対する校正オフセット値を決定し、その校正オフセット値を用いてセンサデータを含む磁気センサの出力を補正することにより、磁気センサを動的に校正するように構成されてもよい。具体的に、センサハブは、システム状態変化イベントの校正オフセット値を加算することにより、計算デバイスの決定されたシステム状態に対応する結合校正オフセット値を決定し、磁気センサの出力の値から結合校正オフセット値を減算することにより、磁気センサの出力を補正するように構成されてもよい。磁気センサの補正出力は、計算デバイスに対応する周囲磁場を含んでいてもよく、センサハブは、周囲磁場を計算デバイス上で実行されているアプリケーションに提供するように構成されていてもよい。
【００５５】
センサハブは計算デバイスのオペレーティングシステムを介して実行されてもよいし、計算デバイスのプロセッサを介して実装されてもよい。また、センサハブは、オペレーティングシステム及び計算デバイスのプロセッサの両方を介して実装されてもよい。さらに、磁気センサは、センサインタフェースを介してセンサハブとプロセッサに通信可能に結合していてもよい。
【００５６】
実施例２
計算デバイスの磁気センサを動的に校正する方法をここに提供する。該方法は、磁気センサを介して計算デバイスのセンサデータを収集するステップと、前記計算デバイスのシステム状態を決定するステップと、前記計算デバイスの磁気センサを、前記センサデータと前記計算デバイスのシステム状態とに基づいて動的に校正するステップとを有する。
【００５７】
前記磁気センサを動的に校正するステップは、前記計算デバイスの決定されたシステム状態に対応するシステム状態変化イベントの校正オフセット値を決定するステップを含んでいても良い。校正オフセット値を用いてセンサデータを含む磁気センサの出力を補正してもよい。磁気センサの補正出力は、計算デバイス上で実行されているアプリケーションに提供されてもよい。
【００５８】
さらに、磁気センサを動的に校正するステップは、前記計算デバイスの決定されたシステム状態に対応する複数のシステム状態変化イベントの各々の校正オフセット値を決定するステップと、前記システム状態変化イベントの校正オフセット値を合計することにより結合校正オフセット値を決定するステップとを含んでもよい。前記磁気センサの出力は、次いで、前記磁気センサの出力の値から前記結合校正オフセット値を減算することにより、補正されてもよい。磁気センサの補正出力は、計算デバイス上で実行されているアプリケーションに提供されてもよい。
【００５９】
実施例３
少なくとも１つの機械読み取り可能媒体をここで提供する。機械読み取り可能媒体は、記憶された命令を含み、該命令は、プロセッサで実行されるのに応じて、そのプロセッサに、計算デバイス内にある磁気センサの出力を決定させる。出力はセンサデータを含む。該命令は、プロセッサに、前記計算デバイスのシステム状態を決定し、前記計算デバイスの決定されたシステム状態に対応する複数のシステム状態変化イベントの各々の校正オフセット値を決定させる。また、該命令は、プロセッサに、前記システム状態変化イベントの校正オフセット値を合計することにより結合校正オフセット値を計算し、前記磁気センサの出力の値から前記結合校正オフセット値を減算することにより、前記磁気センサの補正出力を計算させる。さらに、該命令は、プロセッサに、前記結合校正オフセット値と前記磁気センサの補正出力とに基づいて、前記システム状態変化イベントのどれかの校正オフセット値を更新することにより前記磁気センサを動的に校正させる。
【００６０】
また、前記命令は、前記プロセッサに、前記磁気センサの補正出力を前記計算デバイス上で実行されている一以上のアプリケーションに提供させてもよい。前記磁気センサの補正出力は前記計算デバイスに対応する周囲磁場を含んでもよい。
【００６１】
実施例４
磁気センサを動的に校正する装置をここに提供する。前記装置は、磁気センサと、
プロセッサと、プロセッサ実行可能コードを含むストレージデバイスであって、該コードは、プロセッサにより実行されると、磁気センサを介して装置のセンサデータを収集し、装置のシステム状態を決定するように校正されている。また、前記装置は、前記センサデータと前記装置のシステム状態とに基づいて、前記磁気センサを動的に校正するように校正されたコントローラとを含む。
【００６２】
コントローラはセンサハブを含み得る。コントローラは、前記装置の決定されたシステム状態に対応するシステム状態変化イベントに対する校正オフセット値を決定し、校正オフセット値を用いてセンサデータを含む磁気センサの出力を補正することにより、前記磁気センサを動的に校正するように校正されてもよい。プロセッサ実行可能コードは、前記磁気センサの補正出力を前記装置上で実行されているアプリケーションに提供するように構成されていてもよい。
【００６３】
言うまでもなく、上記実施例の細目は一以上の実施形態のどこで用いても良い。例えば、上記の計算デバイスのすべての任意的フィーチャは、ここに説明した方法や機械読み取り可能媒体に対して実装されてもよい。さらに、ここで実施形態を説明するためにフロー図及び／又は状態図を使ったが、本発明はこれらの図や対応するここでの説明に限定されない。例えば、フローは、例示された各ボックスや状態を通って、図示し説明したのと同じ順序で動く必要はない。
【００６４】
本発明は、ここに列記した具体的な詳細事項に限定されない。実際、本開示の利益を享受する当業者には、上記の説明と図面から、本発明の範囲内で、多数の変形を行うことができるだろう。したがって、本発明の範囲を画定するのは、補正も含めた以下の請求項である。
【図１】
2016514272.tif 000010
【図２】
2016514272.tif 000011
【図３】
2016514272.tif 000012
【図４】
2016514272.tif 000013
【図５】
2016514272.tif 000014
【図６】
2016514272.tif 000015
【国際調査報告】
2016514272.tif 000016
2016514272.tif 000017