(57)【要約】      （修正有）【課題】磁力計および角速度センサに接続された機器において、磁力計データを用いて機器の向きを判定することができる方法を提供する。【解決手段】磁力計データが不正確かもしれないとの通知を受信すると４３８、機器は角速度データを用いて機器の向きを判定４３６することができる。磁力計データが正確であると機器が判定した場合、機器は磁力計データを用いた機器の向きの判定に復帰する。【選択図】図４Ｄ
2014222238.tif 000002
【特許請求の範囲】
【請求項１】
モバイル機器の１以上のプロセッサによって実行される、コンピュータによって実施される方法であって、
センサ測定値を前記モバイル機器に搭載されたセンサから受信するステップと、
前記センサ測定値に基づいて前記機器が静止しているか判定するステップと、
前記機器が静止していれば、前記センサ測定値から、現在の温度についての１つ以上のモデルパラメータを算出するステップと、
前記１以上のモデルパラメータを用いて前記機器の姿勢を推定するステップと、を有し、
前記推定するステップが、温度と測定バイアスとを別個に推定するステップを有することを特徴とする方法。
【請求項２】
前記推定された姿勢を用いて、他のセンサ測定値における干渉を軽減するステップをさらに有することを特徴とする請求項１記載の方法。
【請求項３】
前記センサ測定値が角速度であり、前記モデルパラメータが測定バイアスおよび温度勾配を含むことを特徴とする請求項１記載の方法。
【請求項４】
前記機器が静止しているかどうかを判定するステップが、
ウィンドウ平均されたセンサ測定値から変化を算出するステップと、
前記変化が閾値を超えたかどうかを判定するステップと、
を有することを特徴とする請求項１記載の方法。
【請求項５】
前記１つ以上のモデルパラメータを算出するステップが、
較正点および温度勾配との線形回帰を算出するステップ、
を有することを特徴とする請求項１記載の方法。
【請求項６】
前記姿勢を推定するステップが、
温度および温度レートを含むフィルタ状態を有する第１の予測フィルタを用いて温度を推定するステップと、
局所姿勢誤差および測定バイアスを含むフィルタ状態を有する第２の予測フィルタを用いて前記機器の姿勢を推定するステップと、
を有することを特徴とする請求項１記載の方法。
【請求項７】
前記第１および第２の予測フィルタはカルマンフィルタに基づくものであることを特徴とする請求項６記載の方法。
【請求項８】
温度補償済み角速度の移動平均を、測定バイアスの推定値として維持するステップをさらに有することを特徴とする請求項１記載の方法。
【請求項９】
前記移動平均を維持するステップが、
前記角速度の大きさに基づいて選択される動的更新レートを有するローパスフィルタを用いて角速度をフィルタ処理するステップ、
を有することを特徴とする請求項８記載の方法。
【請求項１０】
モバイル機器の姿勢を推定するシステムであって、
前記モバイル機器に搭載されたセンサと、
前記センサに接続され、命令を実行するように構成されたプロセッサと、を有し、
前記命令が、前記プロセッサに
前記機器が静止しているかどうかをセンサ測定値に基づいて判定し、
前記機器が静止していれば、前記センサ測定値から、現在の温度についての１以上のモデルパラメータを算出し、
前記１以上のモデルパラメータを用いて前記機器の前記姿勢を推定させ、
前記推定においては、温度と測定バイアスとを別個に推定させることを特徴とするシステム。
【請求項１１】
前記プロセッサが、前記推定された姿勢を用いて、他のセンサ測定値における干渉を軽減するための命令を実行するように構成されることを特徴とする請求項１０記載のシステム。
【請求項１２】
前記センサ測定値が角速度であり、前記モデルパラメータが測定バイアスおよび温度勾配を含むことを特徴とする請求項１０記載のシステム。
【請求項１３】
前記プロセッサが、前記機器が静止しているかどうかを判定するステップが、
ウィンドウ平均されたセンサ測定値から変化を算出し、
前記変化が閾値を超えたかどうかを判定する、
ための命令を実行するように構成されることを特徴とする請求項１０記載のシステム。
【請求項１４】
前記プロセッサが、較正点および温度勾配との線形回帰を算出するための命令を実行するように構成されることを特徴とする請求項１０記載のシステム。
【請求項１５】
前記プロセッサが、
温度および温度レートを含むフィルタ状態を有する第１の予測フィルタを用いて温度を推定し、
局所姿勢誤差および測定バイアスを含むフィルタ状態を有する第２の予測フィルタを用いて前記機器の姿勢を推定する、
ための命令を実行するように構成されることを特徴とする請求項１０記載のシステム。
【請求項１６】
前記第１および第２の予測フィルタはカルマンフィルタに基づくものであることを特徴とする請求項１５記載のシステム。
【請求項１７】
前記プロセッサが、温度補償済み角速度の移動平均を、測定バイアスの推定値として維持するための命令を実行するように構成されることを特徴とする請求項１０記載のシステム。
【請求項１８】
前記プロセッサが、前記角速度の大きさに基づいて選択される動的更新レートを有するローパスフィルタを用いて角速度をフィルタ処理するための命令を実行するように構成されることを特徴とする請求項１７記載のシステム。
【請求項１９】
モバイル機器の１以上のプロセッサによって実行される、コンピュータによって実施される方法であって、
前記モバイル機器の向きを、磁力計データを用いて判定するステップと、
前記磁力計データが不正確かも知れないとの表示を受信するステップと、
前記受信した表示に応答して、前記モバイル機器の前記向きを角速度データを用いて判定するステップと、
前記磁力計データが精度範囲内で正確であると判定するステップと、
前記磁力計データが精度範囲内で正確であると判定されると、前記磁力計データを用いた前記モバイル機器の前記向きの判定を再開するステップと、
を有することを特徴とする方法。
【請求項２０】
基準グローバル座標系における推定磁場ベクトルを保存するステップをさらに有し、
前記基準グローバル座標系における推定磁場ベクトルが、正確であると判定された過去の磁力計データおよび前記正確な過去の磁力計データと時間的に対応する過去の角速度データを用いて生成されることを特徴とする請求項１９記載の方法。
【請求項２１】
前記基準グローバル座標系における前記推定磁場ベクトルおよび現在の角速度データを用いて合成磁力計データを生成するステップをさらに有することを特徴とする請求項２０記載の方法。
【請求項２２】
前記磁力計データが前記精度範囲内で正確であると判定するステップが、
前記合成磁力計データのベクトルと、前記磁力計データのベクトルとの間の相違が閾値を満たすことを判定するステップを有することを特徴とする請求項２１記載の方法。
【請求項２３】
前記角速度データを用いて前記モバイル機器の前記向きを判定するステップが、
前記合成磁力計データを用いて前記モバイル機器の前記向きを判定するステップを含むことを特徴とする請求項２１記載の方法。
【請求項２４】
前記磁力計データが不正確かも知れないとの前記表示を受信するステップが、
磁気干渉が発生するであろうとの通知を受信するステップを含むことを特徴とする請求項１９記載の方法。
【請求項２５】
前記磁気干渉が、少なくとも閾値量の電流を流す、前記モバイル機器の部品から生成されることを特徴とする請求項２４記載の方法。
【請求項２６】
前記磁気干渉が、スピーカー、カメラ、およびバイブレータの少なくとも１つを含む、前記モバイル機器の部品から生成されることを特徴とする請求項２４記載の方法。
【請求項２７】
前記磁力計データが不正確かも知れないとの表示を受信するステップが、
前記磁力計データのサンプルにおける複数の磁気ベクトルの大きさを判定するステップと、
前記複数の大きさの差異が閾値を満たすことを判定するステップと、
を含むことを特徴とする請求項１９記載の方法。
【請求項２８】
前記磁力計データが不正確かも知れないとの表示を受信するステップが、
前記磁力計データのサンプルにおける複数の磁気ベクトルの傾きを判定するステップと、
前記複数の傾きの差異が閾値を満たすことを判定するステップと、
を含むことを特徴とする請求項１９記載の方法。
【請求項２９】
前記複数の傾きの各々が、磁気ベクトルと重力加速度ベクトルとの間の角度に基づいて判定されることを特徴とする請求項２８記載の方法。
【請求項３０】
モバイル機器に有形物として格納されるコンピュータプログラムであって、前記コンピュータプログラムが前記モバイル機器に、
前記モバイル機器の向きを、磁力計データを用いて判定するステップと、
前記磁力計データが不正確かも知れないとの表示を受信するステップと、
前記受信した表示に応答して、前記モバイル機器の前記向きを角速度データを用いて判定するステップと、
前記磁力計データが精度範囲内で正確であると判定するステップと、
前記磁力計データが精度範囲内で正確であると判定されると、前記磁力計データを用いた前記モバイル機器の前記向きの判定を再開するステップと、
を有する動作を実行させることを特徴とするコンピュータプログラム。
【請求項３１】
前記動作がさらに、
基準グローバル座標系における推定磁場ベクトルを保存するステップをさらに有し、
前記基準グローバル座標系における推定磁場ベクトルが、正確であると判定された過去の磁力計データおよび前記正確な過去の磁力計データと時間的に対応する過去の角速度データを用いて生成されることを特徴とする請求項３０記載のコンピュータプログラム。
【請求項３２】
前記動作がさらに、前記基準グローバル座標系における前記推定磁場ベクトルおよび現在の角速度データを用いて合成磁力計データを生成するステップをさらに有することを特徴とする請求項３１記載の方法。
【請求項３３】
前記磁力計データが前記精度範囲内で正確であると判定するステップが、
前記合成磁力計データのベクトルと、前記磁力計データのベクトルとの間の相違が閾値を満たすことを判定するステップを有することを特徴とする請求項３２記載のコンピュータプログラム。
【請求項３４】
前記角速度データを用いて前記モバイル機器の前記向きを判定するステップが、
前記合成磁力計データを用いて前記モバイル機器の前記向きを判定するステップを含むことを特徴とする請求項３２記載のコンピュータプログラム。
【請求項３５】
前記磁力計データが不正確かも知れないとの前記表示を受信するステップが、
磁気干渉が発生するであろうとの通知を受信するステップを含むことを特徴とする請求項３０記載のコンピュータプログラム。
【請求項３６】
モバイル機器を有するシステムであって、
前記モバイル機器が、
前記モバイル機器の向きを、磁力計データを用いて判定するステップと、
前記磁力計データが不正確かも知れないとの表示を受信するステップと、
前記受信した表示に応答して、前記モバイル機器の前記向きを角速度データを用いて判定するステップと、
前記磁力計データが精度範囲内で正確であると判定するステップと、
前記磁力計データが精度範囲内で正確であると判定されると、前記磁力計データを用いた前記モバイル機器の前記向きの判定を再開するステップと、
を有する動作を実行するように構成されることを特徴とするシステム。
【請求項３７】
前記動作がさらに、
基準グローバル座標系における推定磁場ベクトルを保存するステップをさらに有し、
前記基準グローバル座標系における推定磁場ベクトルが、正確であると判定された過去の磁力計データおよび前記正確な過去の磁力計データと時間的に対応する過去の角速度データを用いて生成されることを特徴とする請求項３６記載のシステム。
【請求項３８】
前記動作がさらに、前記基準グローバル座標系における前記推定磁場ベクトルおよび現在の角速度データを用いて合成磁力計データを生成するステップをさらに有することを特徴とする請求項３７記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は概して、モバイル機器でのセンサ測定値の較正に関する。
【背景技術】
【０００２】
角速度センサは、参照用の固定点(pix point)を持たない物体の回転速度を測定するために用いられている。微小電気機械システム(MEMS)角速度センサ（またはMEMSジャイロ）は、小型、軽量かつ低コストであるため、モバイル機器に組み込むことができる。動作原理はコリオリの効果に基づいている。MEMS共振器は、所定周波数（例えば約１０ｋＨｚ）で駆動される。角速度に起因して、コリオリの力が、最初の振動と直交する２番目の振動を励起する。この振動は角速度に比例し、容量法(capacitive method)を用いて測定することができる。非限定的な応用例は以下のものを含む。（例えばカメラや携帯電話での）画像ブレ補正、仮想現実アプリケーション用の入力機器、プラットフォーム安定化、ゲーム機用のセンサ、およびナビゲーションシステム用のセンサ。
【０００３】
MEMSジャイロは、高周波ノイズのみならず、バイアス、スケールファクタ誤差、および軸交差感度の影響を受けやすい。交差軸感度は、取り付け歪みに強く影響を受け、バイアス及びスケールファクタ誤差は外部温度に関連する。例えば、ジャイロバイアスの変化は外部温度の変化におおよそ線形である。ジャイロバイアスの影響を軽減するため、既知の数式によりジャイロバイアスを推定し、rawジャイロデータから差し引くことができる。交差軸感度を求めるために、既知の角速度での測定結果を用いる較正を用いることができる。不都合なことに、限られたリソースを有するモバイル機器で動作するアプリケーションについては、処理速度、電力およびメモリの制約によりこれら数学的手法は実行不可能となり得る。
【発明の概要】
【０００４】
センサ測定値は、センサを組み込んだ機器が静止しているときを検出するために用いられる。機器が静止している間、その時点での機器温度でのセンサ測定値はモデルパラメータの推定に用いられる。モデルパラメータは、推定姿勢(attitude)を提供するために状態推定器で用いることができ、この推定姿勢は他のアプリケーションに提供されてもよい。一部の実施態様において、推定姿勢は他のセンサ測定値における干渉を軽減するために用いることができる。
【０００５】
磁力計及び角速度センサに接続された機器は、磁力計データを用いて機器の向き(heading)を判定することができる。磁力計データが不正確かもしれないとの通知を受けた場合、機器は角速度データを用いて機器の向きを判定することができる。磁力計データが不正確であると機器が判定した場合、機器は磁力計データを用いて機器の向きの判定をやり直すことができる。
【０００６】
以下、モバイル機器でのセンサ測定値の較正の１つ以上の実施態様の詳細は、添付図面と以下の記述ににおいて説明される。モバイル機器でのセンサ測定値の較正にかかる他の特徴、見地、及び利点は、詳細な説明、図面および特許請求の範囲から明らかになるであろう。複数の図面で用いられる同様の参照シンボルは、同様の構成要素を示す。
【図面の簡単な説明】
【０００７】
【図１】例示的なセンサ測定値較正システムのブロック図である。
【図２】図１の状態推定器によって実行される様々な例示的な処理を説明するフローチャートである。
【図３】モデルパラメータの推定およびモデルパラメータに基づく推定姿勢の判定のための例示的な処理のフローチャートである。
【図４Ａ】いくつかの実施態様に従って、地球磁場を説明する例示的なカーテシアン座標系を示す図である。
【図４Ｂ】いくつかの実施態様にかかる、例示的な２軸磁力計を示す図である。
【図４Ｃ】磁力計データ及び角速度データを用いて向きを判定するための例示的なシステムのブロック図である。
【図４Ｄ】磁力計データ及び角速度データを用いて向きを判定するための例示的な処理のフローチャートである。
【図５】図１〜図４で言及したシステムおよび方法を実施するための例示的なハードウェアアーキテクチャのブロック図である。
【発明を実施するための形態】
【０００８】
例示的なセンサ測定値較正システム
図１は例示的なセンサ測定値較正システム１００のブロック図である。ある実施態様において、システム１００は角速度センサ１０２（例えばMEMSジャイロ）、動き検出器１０４、モデルパラメータ推定器１０６、状態推定器１０８、較正データベース１１０、加速度センサ１１２および、必要に応じて設けられる干渉軽減モジュール１１４を含むことができる。システム１００は、少なくとも以下に示すものを含む、様々なモバイル機器に組み込むことができる。ハンドヘルドコンピュータ、携帯情報端末(PDA)、携帯電話機、電子タブレット、ネットワーク家電、デジタルカメラ、ビデオカメラ、スマートフォン、EGPRS(enhanced general packet radio service)対応携帯電話機、メディアプレーヤ、ナビゲーション機器、電子メール機器、ゲーム機、またはこれらの２つ以上の組み合わせ。ある実施態様では、システム１００の一部又は全部の構成要素が１つ以上の集積回路(IC)チップに含められてもよい。
【０００９】
ある実施態様では、機器の姿勢(attidude)は本体の角速度を用いて更新されてもよい。本体角速度は角速度ベクトルω→によって表すことができる。角速度ベクトルω→の成分は、機器の局所座標系(local coordinate frame)のｘ，ｙおよびｚ軸のそれぞれにおける角速度を表す。ある実施態様では、角速度ベクトルω→は、局所座標系のｘ，ｙおよびｚ軸のそれぞれに１つの、計３つのMEMSジャイロを用いて測定することができる。
【００１０】
一般に、機器の姿勢は以下の基準四元数(reference quaternion)ｑref→を用いて表すことができる。
【数１】
2014222238.tif 000003
ここで
Ｊ→＝回転軸方向の単位ベクトル
ｆ＝総回転角である。
【００１１】
微小角近似に基づく基準四元数の変化率式(change rate formulation)は以下のように与えられる。
【数２】
2014222238.tif 000004
【００１２】
式（２）は、基準四元数ｑref→によって表される機器の最終的な姿勢を得るために、離散的な時間、積分することができる。
【００１３】
角速度ベクトルω→は角度センサ１０２から出力され、動き検出器１０４に入力される。さらに、機器の現在温度Ｔが動き検出器１０４に入力される。現在温度Ｔは角度センサ１０２内の、あるいは機器内のどこかに配置された温度センサによって提供されてよい。ある実施態様では、角速度ベクトルω→は動き検出器１０４に入力される前にスケール補正されてよい。
【００１４】
ある実施態様では、動き検出器１０４は機器が静止している時を特定する。３軸角度センサ１０２からの角速度（度／秒）の直近ｎサンプルを、ω1→,...,ωn→とする。角速度ω1→,...,ωn→に対応する、直近の角速度センサ温度サンプルをＴ1,...,Ｔnとする。
【００１５】
新たな較正時刻ｔごとに、以下の量が軸ごとに更新される。
【数３】
2014222238.tif 000005
【００１６】
そして、式（３）および（４）から、軸ごとの変化が以下のように与えられる。
【数４】
2014222238.tif 000006
【００１７】
機器が静止していれば角速度は理論上ゼロとなるべきであるから、σ2が閾値ω￣未満であれば、現在温度Ｔ￣での角速度バイアスの推定値として使用できる。ω￣，Ｔ￣（まとめて”較正点”と呼ぶ）および較正時刻ｔは、較正データベース１１０に保存することができる。較正データベース１１０に保存された、Ｔ￣に近い温度を有するω￣，Ｔ￣の古い値は削除してもよい。較正データベース１１０は、機器のエージングに伴って更新することができる。例えば、スケジュールに従って、あるいはトリガイベントに応答して、最古の較正点を較正データベース１１０から削除するというエージングアルゴリズムを適用することができる。例えば、較正データベース１１０は、１℃温度ビンのそれぞれで、直近のＮの較正点以外を削除してもよい。さらに、ω→￣を現在の角度センサバイアスの測定値として状態推定器１０８に入力してもよい。
【００１８】
ある実施態様では、モデルパラメータ推定器１０６は較正データベース１１０に保存された複数の較正点の線形近似を追跡(track)してもよい。例えば、較正点が較正データベース１１０に追加されると、モデルパラメータ推定器１０６は以下の量を軸ごとに追跡することができる。
【数５】
2014222238.tif 000007
【００１９】
角速度バイアス−温度勾配ｍは、軸ごとに式（７）〜（１０）から以下のように計算することができる。
【数６】
2014222238.tif 000008
【００２０】
角速度バイアス−温度オフセットｂは、軸ごとに式（７）〜（１０）から以下のように計算することができる。
【数７】
2014222238.tif 000009
【００２１】
３軸センサについて、温度勾配ベクトルｍ→および温度バイアスオフセットベクトルｂ→＝［ｂx  ｂy  ｂz］は状態推定器１０８に入力され、図２に関して説明するように、姿勢推定フィルタを用いた機器の推定姿勢の算出にこれらベクトル量が用いられる。
【００２２】
図２は、図１の状態推定器１０８によって実施される様々な例示的な処理を示すフローチャートである。ある実施態様において、状態推定器１０８は状態変数を更新するために更新パス２００〜２０４を実施することができる。本例において、角速度センサ１０２は３軸MEMSジャイロであってよい。
【００２３】
最初のパス２００は、温度推定フィルタ、現在温度Ｔおよび、モデルパラメータ推定器１０６から受信する推定温度勾配ベクトルｍ→を用いる温度推定更新を実行することができる。勾配ベクトルｍ→および温度バイアスオフセットベクトルｂ→は、以下に与えられる、任意の温度Ｔについてのベースバイアスベクトルｂbase→を記述する線型モデルを定義する。
【数８】
2014222238.tif 000010
【００２４】
以下のように、ある時刻での真のバイアスｂtrue→とベースバイアスベクトルｂbase→との差によってバイアスデルタベクトルβ→を定義することができる。
【数９】
2014222238.tif 000011
ここで、ベースバイアスベクトルｂbase→は、長時間にわたるバイアスを示し、バイアスデルタベクトルβ→は（時間的な）局所変化についてのバイアスを示す。
【００２５】
２番目の更新パス２０１は、加速度センサ１１２から受信する加速度ベクトルａ→を用いた加速度更新を実行することができる。加速度ベクトルａ→は状態推定器１０８に入力される前にスケール補正されてよい。加速度ベクトルが過剰な動的加速度(dynamic acceleration)を有する場合、状態推定器１０８が何も行わずに更新を完了してもよい。加速度ベクトルが過剰な動的加速度を有さない場合、時間更新(time update)が実施可能であり、重力ベクトルｇ→を機器の局所座標系で算出することができる。重力ベクトルおよび他の量は、以下に説明するように姿勢推定フィルタで用いることができる。
【００２６】
３番目の更新パス２０２は、まずベースバイアスベクトルｂbias→を角速度ベクトルω→から減じて温度補償済み角速度ベクトルωc→＝（ω￣−ｍ＊Ｔ−ｂ）＝［ωcx  ωcy  ωcz］を生成し、その後バイアスデルタベクトルβ→を補償済み角速度ベクトルωc→から減じて推定角速度ベクトルω→＾＝（ωc→−β）＝［ω＾x  ω＾y  ω＾z］を生成して、推定角速度ベクトルをバッファに保存することにより、ジャイロ更新を実施することができる。基準四元数ｑref→は、以下の式（１５）を用いて伝播(propagate)されてよい。
【数１０】
2014222238.tif 000012
ここで、○×は、四元数の乗算である。
【００２７】
四元数を更新するための他の近似または手法、あるいは方向余弦行列手法を用いることができる。推定角速度ベクトルω→＾が実際の角速度ベクトルω→からずれていれば、時間更新を実行可能である。温度補償済み角速度ωc→がある所定の閾値未満であれば、ローパスフィルタ(LPF)を以下のように更新することができる。
【００２８】
４番目の更新パス２０３は、推定角速度ベクトルω→＾を算出し、姿勢推定フィルタを用いてバイアスデルタベクトルβ→を更新することによりジャイロバイアス更新を実行可能である。
【００２９】
５番目の更新パス２０４は、姿勢推定フィルタ内の温度バイアスモデルを、提供される新たなモデルに置換し、バイアスデルタベクトルβ→およびＬＰＦを適切に更新することにより、ジャイロバイアス線形回帰更新(linear fit update)を実施することができる。
【００３０】
例示的なカルマンフィルタ手法
上述した温度推定フィルタおよび姿勢推定フィルタは、精度を向上するためにカルマンフィルタ手法を用いて実施することができる。ある実施態様では、２つの独立したカルマンフィルタを用いることができる。１つは温度を推定するための、もう一つは姿勢を推定するためのものである。これらのカルマンフィルタは、論理的な観点のみならず計算効率の観点からも分離することができる。
【００３１】
ある実施態様において、温度推定フィルタは、温度Ｔ及び温度レートＴ・を状態として用いるクラッシックカルマンフィルタであってよい。温度推定フィルタ状態および温度推定フィルタ遷移行列は、以下のように表すことができる。
【数１１】
2014222238.tif 000013
【００３２】
姿勢推定フィルタは乗法拡張(multiplicative extended)されたカルマンフィルタ手法に基づくことができる。フィルタは補償済み角速度ベクトルωc→を有する基準四元数ｑref→を伝播することができる。姿勢推定フィルタ状態は、基準四元数ｑref→およびバイアスデルタベクトルβ→から得られる局所姿勢誤差ベクトルθ→を含むことができる。加速度計に関する姿勢推定フィルタ状態Ｘ、遷移行列Φ、姿勢処理ノイズ行列Ｑおよび測定値行列Ｈは、連続時間形式で以下のように表すことができる。
【数１２】
2014222238.tif 000014
ここで、λはガウスマルコフ時定数、Ｏnxmはｎ×ｍのゼロ行列、Ｉnxmはｎ×ｍの恒等行列、｜ω→｜x、｜ｇ→＾｜xは左外積行列である。
【００３３】
実際には、姿勢推定フィルタおよび温度推定フィルタについて、二次離散近似を用いることができる。上述の手法では、対角行列要素ＮθおよびＮβによって特定できるように、姿勢誤差とバイアスとに関する処理ノイズ行列Ｑが別個であると仮定されている。測定行列は加速度計測定行列であってよく、基準四元数ｑref→から生成されるフィルタの現在の重力推定値ｇ→＾に関して定義することができる。温度推定フィルタおよび姿勢推定フィルタについての測定ノイズ行列Ｒは対角であると仮定され、シミュレーションまたは他の既知の統計的方法を用いて実験的に求めることのできる値を有する。誤差共分散行列Ｐの初期値もまた、シミュレーションまたは他の既知の統計的方法を用いて実験的に選択することができる。
【００３４】
上述の行列は、以下のような時間更新フェーズおよび測定値更新フェーズを含む拡張カルマンフィルタ手法に用いることができる。
Ａ．時間更新
１．状態の伝播
【数１３】
2014222238.tif 000015
２．誤差共分散の伝播
【数１４】
2014222238.tif 000016
Ｂ．測定値（観測）更新
１．カルマンゲインの算出
【数１５】
2014222238.tif 000017
２．測定値およびカルマンゲインを用いて推定値を更新
【数１６】
2014222238.tif 000018
３．カルマンゲインを用いて誤差共分散を更新
【数１７】
2014222238.tif 000019
【００３５】
ローパスバイアス推定
最終的にジャイロバイアス推定に寄与する多くの成分が存在しうる。一般に、これら成分は２つのカテゴリに分けることができる。バイアス／温度モデルおよび、温度モデルからのバイアスデルタである。
【００３６】
通常、所与の温度に対する時間平均バイアス値を定義する温度／バイアス関係はシステム１００で維持されている。これは長期的な関係である。所与の温度における平均バイアスからの短期変動−バイアスデルタベクトル（β→）−は、ガウスマルコフノイズモデルに従うものと仮定することができる。
【００３７】
バイアスデルタベクトルは、カルマンフィルタ手法を通じて更新することができる。これらの更新は、加速度計測定値更新、動き検出器１０４による直接測定値更新、またはＬＰＦによる直接測定値更新の３つの方法の１つで実行することができる。
【００３８】
ある実施態様において、温度補償済み角速度ベクトルωc→の長期移動平均を、バイアスデルタベクトルβ→の初期段階推定値としてもよい。ＬＰＦは、動的更新レートを有する１次自己回帰フィルタＬＰＦn＝αn・ＬＰＦn-1＋（１−αn）・ωnとして実装されてもよい。補償済み角速度ベクトルωc→の値は、補償済み角速度ベクトルの大きさの所定閾値未満であれば、ＬＰＦに供給される。更新レートαnはωc→の大きさが大きいほど大きく、ωc→の大きさが小さいほど小さく選択することができる。
【００３９】
この推定は、直接測定と同様、姿勢推定フィルタに対して周期的に（例えば５Ｈｚ）適用することができる。測定ノイズは、ＬＰＦがどれだけの時間稼動し続けているかに大まかに依存して修正することができる。ＬＰＦの目的は、姿勢推定フィルタの共分散行列を通じて規定されるような、大きな不確定要素が存在する領域におけるβ→の更新を可能とするためである。これらの更新は機器がゆっくり動いている場合にも実行することができる。
【００４０】
例示的な干渉軽減モジュール
必要に応じて設けられる干渉軽減モジュール１１４は、外部磁場ベクトルにおける変化を検出するために、状態推定器１０８から出力される基準四元数を用いることができる。モジュールは時刻ｋにおける直近の既知の磁力計測定ベクトルｍk→および時刻ｋにおける機器の推定された姿勢Ａkを記録し、状態推定器１０８に（例えばｑref→によって）供給することができる。モジュール１１４は磁力計測定ベクトルｍk→を、Ａkの逆数を用いて、基準グローバル座標系内の推定磁場ベクトルに変形する。
【数１８】
2014222238.tif 000020
【００４１】
基準グローバル座標系は、機器の推定姿勢Ａkの基準フレームと同じ基準フレームを含んでもよい。時刻ｋで変形された推定磁場ベクトルは、それ以降の磁力計測定ベクトルが干渉を受けているかどうかを判定するための基準として保存することができる。時間ｉにおけるオフセット補正された磁力計測定ベクトルｍi→の各々に対してモジュール１１４は時間ｉにおける現在の推定姿勢Ａiを読み出し、時間ｉにおける合成磁力計測定ベクトルｍsi→を構築する。
【数１９】
2014222238.tif 000021
【００４２】
RatationMatrixで表される姿勢（例えばAi）およびMagneticGlobalFrameで表される推定磁場ベクトル（例えばｍwi→）を用いる、合成磁力計測定ベクトルを算出するための例示的な擬似コードgyroCompassMagnetic（例えばｍsi→）は、以下の通りである。
gyroCompassMagnetic = (RotationMatrix.mult(MagneticGlobalFrame))
【００４３】
基準グローバル座標系で表される磁力計測定ベクトルｍwi→が実質的に一定なら、ベクトルｍsi→とｍi→のなす角度
【数２０】
2014222238.tif 000022
はゼロとなる。規定されたウィンドウ内でのθiの変化が閾値未満であり、他の既知の磁力計干渉源（例えば震動源）が存在しない場合、オフセット補正された磁力計測定ベクトルｍi→はコンパス方位(heading)の算出に用いることができる。そうでなければ、合成磁力計測定ベクトルｍsi→をコンパス方位の算出に用いることができる。ウィンドウは１つ以上の磁力計測定結果を包含する期間を含むことができる。θiの変化を算出するための例示的な擬似コードを以下に示す。
//daltaAngleは、magnetic（例えばｍi→）と
//gyroCompassMagnetic（例えばｍsi→）との内角である。
float deltaAngle = (magnetic.interiorAngle(gyroCompassMagnetic));
//AngleVarianceはデータを合計するランニングバッファである。
AngleVariance.addSample(deltaAngle*deltaAngle);
// varAngleは変化の自乗である。
float varAngle = (AngleVariance.getSum()/AngleVariance.getCurrentSize());
【００４４】
ある実施態様において、磁力計測定ベクトルの大きさの変化は、θiの角度変化に加えて、あるいはその代わりに用いることができる。大きさの変化が閾値を満足する場合、オフセット補正された磁力計測定ベクトルｍi→をコンパス方位の算出に用いることができる。そうでなければ、合成磁力計測定ベクトルｍsi→をコンパス方位の算出に用いることができる。ベクトルの大きさ算出するための例示的な擬似コードを以下に示す。
// ｘ，ｙ，ｚの３成分を有するベクトルの大きさを算出する
mag() const {
return sqrt( x*x + y*y + z*z);
}
【００４５】
ある実施態様において、磁力計測定ベクトルの傾きの変化は、θiの変化および／または大きさの変化に加えて、あるいはその代わりに用いることができる。傾きの変化が閾値を満足する場合、オフセット補正された磁力計測定ベクトルｍi→をコンパス方位の算出に用いることができる。そうでなければ、合成磁力計測定ベクトルｍsi→をコンパス方位の算出に用いることができる。磁力計測定ベクトルmagneticの傾きを算出するための擬似コードを以下に示す。
// 磁気ベクトルmagnetic（例えばｍi→）と
//重力ベクトルgravity（例えばｇ→）との間の傾き
inclination = 90.0f - (magnetic.interiorAngle(gravity));
【００４６】
θiの変化、大きさの変化、および傾きの変化は、個別に、あるいは組み合わせて、磁力計モードおよび慣性モード(coasting mode)の一方を選択するためのモードセレクタを制御するものとして用いることができる。磁力計モードでは、オフセット補正された磁力計測定ベクトルｍi→をコンパス方位の算出に用いることができる。慣性モードでは、合成磁力計測定ベクトルｍsi→をコンパス方位の算出に用いることができる。
【００４７】
モードセレクタはデータの観測によってトリガすることができる。モードセレクタはθiの変化、大きさの変化、および傾きの変化に関する様々な閾値を用いるように構成することができる。第１の閾値群の１つ以上が満たされた場合、コンパス方位は合成磁力計測定ベクトルｍsi→を用いて算出することができ、第２の閾値群の１つ以上が満たされた場合、コンパス方位はオフセット補正された磁力計測定ベクトルｍi→を用いて算出することができる。磁力計モードから慣性モードへ切り替えるための例示的な擬似コードを以下に示す。
// varMagnitudeは大きさの変化を測定可能である。varInclinationは傾きの変化を測定可能である。
//  MaxAngleVariance、MaxMagnitudeVariance、および
// MaxInclinationVarianceは個々の閾値である。
if (varAngle ＞ MaxAngleVariance || varMagnitude ＞ MaxMagnitudeVariance ||
varInclination ＞ MaxInclinationVariance)) {
ActivateCoastingMode();
}
【００４８】
基準グローバル座標系における推定磁場ベクトルは記憶装置に保存されているため、周期的に、あるいは要求に応じて更新することができる。ある実施態様において、基準グローバル座標系における推定磁場ベクトルは、コンパス較正が向上した際に、あるいはθiの変化、大きさの変化、および傾きの変化の少なくとも１つが閾値を下回った際に更新することができる。基準グローバル座標系における推定磁場ベクトルを保存するための擬似コードを以下に示す。
if (NOT coasting && compass calibrated) {
if (compass calibration improved ||
(magnetic.interiorAngle(gyroCompassMagnetic)＜=
MaxAngleUpdateThreshold) &&
magnetic.mag() - gyroCompassMagnetic.mag() ＞ Threshold ) {
MagneticGlobalFrame = TransposeRotationMatrix.mult(magnetic);
}
}
【００４９】
例示的なセンサ較正処理フロー
図３は、モデルパラメータの推定およびモデルパラメータに基づく推定姿勢の判定のための例示的な処理３００のフローチャートである。処理３００は、センサ測定較正システム１００のような、機器のセンサデータ較正システムによって実施することができる。
【００５０】
ある実施態様において、処理３００は、機器が静止しているかどうかの判定から開始されてよい（３０２）。例えば、動き検出器（例えば動き検出器１０４）は、機器が静止しているかどうか判定するために角速度センサ（例えばMEMSジャイロ）からの角速度を用いることができる。図１に関して説明したように、ある実施態様では、機器が静止しているかどうかを判定するために、ウィンドウ平均された角速度の変化を閾値と比較することができる。他の実施態様では、機器が静止しているときを検出するために、加速度計１１２からの加速度のような、他のセンサデータを用いることができる。
【００５１】
機器が静止していると判定された場合（３０４）、較正の機会が存在し、現在の温度に関してウィンドウ平均されたバイアスベクトルを、角速度センサから出力される角速度データに基づいて算出することができる（３０６）。ウィンドウ平均されたバイアスベクトルおよび対応する温度は、較正データベースに保存することができる（３０８）。較正データベースに保存されたバイアスベクトルと温度の線形回帰(linear fit)から、モデルパラメータを算出することができる（３１０）。機器の推定姿勢はモデルパラメータを用いて判定することができる（３１２）。推定は、温度を推定するための１つと、姿勢を推定するための１つの、２つの独立した推定フィルタにおいて実施することができる。推定フィルタはカルマンフィルタ手法を用いて実現することができる。推定された姿勢は必要に応じて、磁力計測定値のような他のセンサ測定値における干渉を軽減するために用いることができる（３１４）。
【００５２】
地球の磁界−概要
図４Ａは、ある実施態様にかかる、地球磁場を説明する例示的なカーテシアン座標系を示す図である。地球磁場ベクトルＦ→は、直交成分Ｘ（北向き強度）、Ｙ（東向き強度）およびＺ（鉛直下向き強度、下向きに正）と、全強度Ｆ、水平強度Ｈ、伏角（または傾斜）Ｉ、および偏角（または磁気偏角）Ｄによって記述可能である。偏角、伏角および全強度は、以下の式を用い、直交成分から算出することができる。
【数２１】
2014222238.tif 000023
【００５３】
角度Φは、地球磁場ベクトルＦ→と、地球の重力加速度ベクトルｇ→（地球磁場ベクトルのＺ成分と一直線上にある）との間の角度として定義できる。角度Φは伏角Ｉ、またはΦ＝９０°−Ｉから求めることができる。磁力計の向きとは無関係に、地球上の任意の位置において全強度Ｆは一定である。さらに、地磁気計の向きとは無関係に、地球上の任意の位置において角度Φは一定である。磁界強度の国際単位系(SI)単位として最も一般的に用いられるのはテスラである。
【００５４】
図４Ｂはある実施態様にかかる、例示的な２軸磁力計を示している。磁力計は２軸または３軸であってよく、ここで説明する処理はどちらのタイプのセンサにも当てはまる。簡略にするため、２軸磁力計のみ説明する。
【００５５】
ある実施態様において、モバイル機器で稼動するアプリケーションを含む様々なアプリケーションのために向きを算出するために、２軸磁力計センサ構成４００を用いることができる。センサ構成４００は、ボード、基板、または他の実装面上に直交するように取り付けられる２つの磁界センサ４０２，４０４を含むことができる。磁気センサ４０２，４０４は加速度計およびジャイロのような他のセンサとともに、あるいは単独で、集積回路(IC)パッケージに封入されてもよい。
【００５６】
センサ構成４００は、干渉磁界を含むホストシステム環境に配置されうる。地球の磁場は弱い場（〜０．５ガウス）であるため、近くの（モバイル機器と同じ位置にある）磁石様物体(magnetic object)は、センサ４０２，４０４の正確な測定に干渉しうる。局所磁気干渉を隔離および除去するために較正手順を用いることができる。１つの方法は、地球磁場を正確に測定するためにセンサ測定値から減じることのできるオフセットまたはオフセットベクトルを求めることである。３軸センサについては、第３成分であるＺも、同様にオフセットによって調整することができる。
【００５７】
２軸磁力計のための１つの例示的な較正手順において、各方位(heading)算出は、各測定値間の遅延が最小で取得可能な、複数の有効なＸおよびＹセンサ測定値を用いて行われるものと仮定することができる。このセンサ構成に関し、センサ４０２、４０４は互いに直角をなし、地表と同じ高さにある。慣例により、Ｘ軸の正方向の終端は北向きであり、Ｙ軸の正方向の終端は東向きである。本例に関し、較正の間に、１８０度離れた２つの連続したセンサ測定値を取得する。これらの測定値は(X1, Y1)および(X2, Y2)と表すことができる。干渉場なしに測定された任意の方向の地球磁場は、オフセットペア(XE, YE)で表すことができる。磁気干渉は(Xoffset, Yoffset)で表すことができる。これらの数学的表現を用いて、２つのセンサ測定値は以下のように表現できる。
X1 = XE + Xoffset                                             (28)
Y1 = YE + Yoffset
X2 = -XE +Xoffset
Y2 = -YE+ Yoffset
【００５８】
磁力計がホストシステムに対して固定されている（例えば磁力計が携帯電話に取り付けられている）ものとすると、較正中に取得された測定値(X1, Y1)および(X2, Y2)はいずれも同じ干渉値（Ｘoffset, Ｙoffset)を含むであろう。較正中に取得された磁力計の測定値は１８０度離れているため、測定値は符号が異なる同じ値である。上述の式をＸoffsetおよびＹoffsetについて解くと、以下が得られる。
Ｘoffset＝(X1+X2)/2                                                             (29)
Ｙoffset=(Y1+Y2)/2
【００５９】
センサ測定値の測定結果は、（ＸE, ＹE）によって表すことができる。ある実施態様において、方位の基本計算はＸE、ＹEおよび以下の式を用いて実行することができる。
Ａheading=arctan (ＹE, ＸE）                                              (30)
ここで、得られる方位Ａheadingは、信号ＸEおよびＹEの符号に基づいて正しい四元数にマッピングすることができる。磁力計によって提供された測定結果から算出されたＡheadingは、真北に対する方位を特定するため、方位Ａheadingと偏角とを組み合わせることによって補正することのできる磁気方位である。
【００６０】
他の方法で実施することもできる。例えば、方位は、加速度計から得られる機器の向き、伏角、ＧＰＳ、および他のタイプの補正または較正方法に基づいてさらに構成されてもよい。
【００６１】
オフセットが求まると、オフセットをセンサ測定値(X3, Y3)から差し引くことができる。
XE = X3 - Xoffset                                                (31)
YE = Y3 - Yoffset
【００６２】
磁力計が携帯電話機のようなモバイル機器に含まれる場合、局所磁気干渉は変化しうる。例えば、ユーザが自分の（磁力計を内蔵している）モバイル機器を車に取り付けた場合、車内の磁石様物体が局所干渉を変化させうる。そのため、較正オフセットが無効となり得る。オフセットが無効の場合、磁力計は新たなオフセットを生成するために再構成手順を実行することができる。この再較正手順は、頻繁に行うとユーザにとってつまらない処理となりうるほか、ユーザはモバイル機器を複数の角度で操作しなければならないだろう。
【００６３】
図４Ｃは、磁力計データおよび角速度データを用いて方位を求めるための例示的なシステム４１０のブロック図である。システム４１０はモバイル機器のサブシステムであってよい。システム４１０はモードセレクタを有することができる。モードセレクタ４１２は、磁力計モードと慣性モードとを切り替えるように構成することができる。切り替えは、モードセレクタ４１２に供給される磁力計測定結果の品質もしくは１以上の磁気干渉の通知に基づくことができる。
【００６４】
モードセレクタ４１２に供給される入力の第１セットには、図１に関して説明した、オフセット補正済みの磁力計測定結果が含まれてよい。
【００６５】
モードセレクタ４１２に供給される入力の第２セットには、合成器４１４で生成された合成磁力計測定結果が含まれてよい。合成器４１４は、基準グローバル座標系における推定磁場ベクトルとモバイル機器の姿勢とを用いて合成磁力計測定結果を生成することができる。
【００６６】
モードセレクタ４１２はオフセット補正済みの磁力計測定結果の品質に基づいて、磁力計モードと慣性モードとの切り替えを実施することができる。例えば、オフセット補正済みの磁力計測定結果と合成磁力計測定結果との差（内角によって測定される）を測定することができる。この差の変化が算出される。変化が閾値以上になると、モードセレクタ４１２は慣性モードに切り替えることができる。変化が閾値未満であれば、モードセレクタ４１２は磁力計モードに切り替えることができる。
【００６７】
ある実施態様では、モードセレクタ４１２は磁力計測定結果に基づいて切り替えることができる。磁力計測定結果が閾値以上の大きさおよび／または傾きの変化を有する場合、モードセレクタ４１２は慣性モードに切り替えることができる。さもなければ、モードセレクタ４１２は磁力計モードに切り替えることができる。
【００６８】
ある実施態様において、モードセレクタ４１２は磁力計モードと慣性モードとを、通知に基づいて切り替えることができる。通知には、磁気干渉が発生したこと、または発生しそうなことの兆候が含まれてよい。通知に応答して、モードセレクタ４１２は磁力計モードから慣性モードへ切り替えることができる。例えば、モバイル機器のスピーカーが駆動されそうになると、通知がモードセレクタ４１２に送られてもよい。この通知を受けると、モードセレクタ４１２はスピーカーからの磁気干渉を避けるため、慣性モードに入ることができる。
【００６９】
オフセット補正済みの磁力計測定結果と合成磁力計測定結果のうち、モードセレクタ４１２に選択された一方が、方位算出器４１６に供給されてよい。方位算出器４１６はモバイル機器の向きを算出することができ、向きをアプリケーションプログラム（例えばコンパスプログラムや地図プログラム）に提供することができる。向きは音声または映像出力機器に出力されてもよい。
【００７０】
図４Ｄは、磁力計データおよび角速度データを用いて方位を求めるための例示的な処理４３０のフローチャートである。便宜上、処理４３０を、処理４３０を実施するシステム（例えばシステム４１０）に関して説明する。
【００７１】
システムはモバイル機器の向きを、磁力計データを用いて求めることができる（４３２）。磁力計データを用いて向きを求める方法には、図１に関して上述したような、オフセット補正済みの磁力計測定結果を用いて向きを求めることが含まれてもよい。
【００７２】
システムは、磁力計データが不正確かも知れないという表示を受信することができる（４３４）。表示は、通知または、磁力計データの品質の判定を含んでよい。
【００７３】
磁力計データの品質を判定するため、システムは基準グローバル座標系における推定磁場ベクトルを記憶装置に保存することができる。システムは、正確であると判定されている過去の(historical)磁力計データ（例えば、時刻ｋにおける磁力計測定ベクトルｍk→）および、この正確な過去の磁力計データに時間的に対応する過去の角速度データ（例えば、時刻ｋにおけるモバイル機器の推定された姿勢Ａkの逆数）とを用いて、基準グローバル座標系における推定磁場ベクトルを生成することができる。
【００７４】
現在の角速度データ（現在時刻ｉにおける、モバイル機器の現在推定姿勢Ａi）および基準グローバル座標系における推定磁場ベクトルを用いて、モバイル機器は合成磁力計データを生成することができる。合成磁力計データは、時刻ｉにおける合成磁力計測定ベクトルｍsi→を含んでよい。この合成磁力計データを用いて、システムはモバイル機器の向きを判定することができる。
【００７５】
ある実施態様において、磁力計データが不正確かもしれないとの表示を受信する手順は、磁力計データのサンプル内の複数の磁気ベクトルの大きさを判定する手順と、これら複数の大きさの変化が閾値を満たすことを判定する手順を含むことができる。磁気ベクトルはサンプルウィンドウ内で測定された磁気ベクトル（例えば直近に測定されたｎ個の磁気ベクトル）を含むことができる。
【００７６】
ある実施態様において、磁力計データが不正確かもしれないとの表示を受信する手順は、磁力計データのサンプル内の複数の磁気ベクトルの傾きを判定する手順と、これら複数の傾きの変化が閾値を満たすことを判定する手順を含むことができる。個々の傾きは、磁気ベクトルおよび局所重力加速度ベクトルとの間の角度に基づいて求めることができる。
【００７７】
磁力計データが不正確かもしれないという表示を受信する手順（４３４）は、磁気干渉が発生したか発生するであろうことの表示を受信する手順を含むことができる。磁気干渉は、モバイル機器の、少なくともある閾値量の電流が流れる構成部品によって生成されうる。ある実施態様において、磁気干渉は、モバイル機器のスピーカー、カメラ、またはバイブレーターによって生成されうる。
【００７８】
磁力計データが不正確かもしれないとの表示の受信に応答して、システムはモバイル機器の向きを角速度データを用いて判定する（４３６）ことができる。角速度データを用いてモバイル機器の向きを判定する手順は、合成磁力計データを用いてモバイル機器の向きを判定する手順を含むことができる。
【００７９】
システムは、ある精度範囲内で磁力計データが正確であると判定することができる（４３８）。磁力計データがある精度範囲内で正確であると判定する手順は、合成磁力計データ（例えば、合成磁力計測定ベクトルｍsi→）のベクトルと、磁力計データ（例えば、磁力計測定ベクトルｍi→）のベクトルとの間の角度が、閾値を満たすかどうかを判定する手順を含むことができる。磁力計データが精度範囲内で正確であると判定されると、システムは磁力計データを用いたモバイル機器の向きを判定する（４３２）ように復帰することができる。磁力計データが精度範囲内で正確でないと判定される場合、システムは角速度を用いた向きの判定（４３６）を継続することができる。
【００８０】
例示的な機器アーキテクチャ
図５は、図１〜３に示したセンサ較正システム１００および方法を実施するための例示的な機器ハードウェアアーキテクチャのブロック図である。機器はメモリインタフェース５０２、１つ以上のデータプロセッサ、画像プロセッサおよび／またはプロセッサ５０４と、周辺インタフェース５０６とを含むことができる。メモリインタフェース５０２、１つ以上のプロセッサ５０４、および／または周辺インタフェース５０６は、個別部品であってもよいし、１つ以上の集積回路に統合されてもよい。機器の様々な構成要素は、例えば、１つ以上の通信バスまたは信号線によって接続されてよい。
【００８１】
センサ、機器、サブシステムが、多数の機能を容易にするため、周辺インタフェース５０６に接続されてよい。例えば、角速度センサ５１０（例えばMEMSジャイロ）、磁力計センサ５１２である。地理的位置を提供するために、位置プロセッサ５１４（例えばGPS受信機）を周辺インタフェース５０６に接続することができる。モバイル機器の速度変化や移動方向の変化を判定するために使用可能なデータを提供するため、加速度計５１６もまた周辺インタフェース５０６に接続することができる。
【００８２】
カメラシステム５２０および光学センサ５２２、例えば電荷結合素子（CCD）または相補型金属酸化物半導体（CMOS）光学センサを、写真やビデオクリップの記録のようなカメラ機能を補助するために用いてもよい。
【００８３】
無線周波数受信機および送信機および／または光学（例えば赤外線）受信機および送信機を含むことができる１つ以上の無線通信サブシステム５２４を通じて、通信機能が補助されてもよい。通信サブシステム５２４の具体的な設計および実装は、モバイル機器が動作しようとする通信ネットワークに依存するものであってよい。例えば、モバイル機器はＧＳＭ（登録商標）ネットワーク、ＧＰＲＳネットワーク、ＥＤＧＥネットワーク、Wi-Fiネットワーク、およびブルートゥース（登録商標）ネットワークを通じて動作するように設計された通信サブシステム５２４を含むことができる。特に、無線通信サブシステム５２４は、モバイル機器が他の無線機器に対する基地局として構成されることを可能にするようなホスティングプロトコルを含むことができる。
【００８４】
オーディオサブシステム５２６は、音声認識、音声反復、デジタルレコーディング、および電話通信機能のような音声を利用可能な機能を補助するために、スピーカー５２８およびマイク５３０に接続されてよい。
【００８５】
Ｉ／Ｏサブシステム５４０は、タッチスクリーンコントローラ５４２および／または他の１以上の入力コントローラ５４４を含むことができる。タッチスクリーンコントローラ５４２はタッチスクリーン５４６やパッドに接続されてよい。タッチスクリーン５４６およびタッチスクリーンコントローラ５４２は、タッチスクリーン５４６と接触した１以上の点を判別するための、例えば、容量式、抵抗式、赤外線式、および表面弾性波技術といった複数の接触感知技術や、他の近接センサアレイまたは他の素子を用いて、接触および移動または損傷を検出することができる。
【００８６】
他の１以上の入力コントローラ５４４が、ボタン、ロッカースイッチ、サムホイール、赤外線ポート、ＵＳＢポート、および／またはスタイラスのようなポインティングデバイスの１つ以上のような他の入力／コントロール機器５４８に接続されてよい。１以上のボタン（不図示）は、スピーカー５２８および／またはマイク５３０のボリュームコントロールのためのアップ／ダウンボタンを含むことができる。
【００８７】
ある実施態様において、あるボタンの第１の期間の押下が、タッチスクリーンまたはパッド５４６のロックを解除し、第１の期間よりも長い第２の期間の押下が、機器の電源をオンまたはオフしてもよい。ユーザが１以上のボタンの機能をカスタマイズすることができてもよい。タッチスクリーン５４６はまた、例えば、仮想またはソフトボタンおよび／またはキーボードを実現するために用いられてもよい。
【００８８】
ある実施態様において、機器は、ＭＰ３、ＡＡＣ、およびＭＰＥＧファイルのような記録された音声および／または映像ファイルを提示してもよい。ある実施態様において、機器はＭＰ３プレーヤの機能を含んでもよい。
【００８９】
メモリインタフェース５０２はメモリ５５０に接続されてよい。メモリ５５０は高速ランダムアクセスメモリおよび／または、１以上の磁気ディスク記憶装置、１以上の光学記憶装置、および／またはフラッシュメモリ（例えばＮＡＮＤ、ＮＯＲ）のような不揮発性メモリを含んでよい。メモリ５５０は、ダーウィン、ＲＴＸＣ、ＬＩＮＵＸ（登録商標）、ＵＮＩＸ（登録商標）、ＯＳＸ、ＷＩＮＤＯＷＳ（登録商標）、またはＶｘＷｏｒｋｓ（登録商標）のような組み込み型ＯＳのようなオペレーティングシステム５５２を格納することができる。オペレーティングシステム５５２は、基本システムサービスを処理するための命令およびハードウェアに依存する処理を実行するための命令を含んでよい。ある実施態様において、オペレーティングシステム５５２はカーネル（例えばＵＮＩＸカーネル）を含んでもよい。
【００９０】
メモリ５５０は、１以上の他の機器、１以上のコンピュータおよび／または１以上のサーバとの通信を補助するための通信命令５５４もまた格納してよい。メモリ５５０は、グラフィカルユーザインタフェース処理を補助するためのグラフィカルユーザインタフェース命令５５６、センサ関連の処理および機能を補助するためのセンサ処理命令５５８、電話関連の処理および機能を補助するための電話命令５６０、電子メッセージに関する処理および機能を補助するための電子メッセージ処理命令５６２、ウェブブラウズに関する処理および機能を補助するためのウェブブラウズ命令５６４、メディア処理関連処理および機能を補助するためのメディア処理命令５６６、ＧＰＳおよびナビゲーション関連処理および機能を補助するためのＧＰＳ／ナビゲーション命令５６８、カメラ関係の処理および機能を補助するためのカメラ命令５７０を含んでよい。メモリ５５０はまた、セキュリティ命令、ウェブビデオに関する処理および機能を補助するためのウェブビデオ命令、および／またはウェブショッピング関連処理および機能を補助するためのウェブショッピング命令のような、他のソフトウェア命令（図示せず）を格納してもよい。ある実施態様において、メディア処理命令５６６は、音声処理関連処理および機能と、映像処理関連処理および機能をそれぞれ補助するための音声処理命令と映像処理命令に分けられる。アクティベーションレコードおよび国際移動体装置識別子(IMEI)または同様のハードウェア識別子もまた、メモリ５５０に格納されてよい。メモリ５５０は磁力計データ５７２および１以上の推定磁場ベクトル５７４を含むことができる。
【００９１】
上述の特定された命令および用途の各々は、上述した１以上の機能を実行するための一式の命令に対応してもよい。これらの命令は、個別のソフトウェアプログラム、手順、またはモジュールとして実装されなくてもよい。メモリ５５０はこれ以外の命令を含んでもよいし、より少ない命令を含んでもよい。さらに、モバイル機器の様々な機能は、１以上の信号処理および／または特定用途向け集積回路を含む、ハードウェアおよび／またはソフトウェアによって実施されてよい。
【００９２】
説明した機能はデジタル電子回路で、コンピュータハードウェア、ファームウエア、ソフトウェアで、またはそれらの組み合わせで実施可能である。機能は、プログラム可能なプロセッサによって実行するために、情報キャリア、例えば装置が読み取り可能な記憶装置に有形物として実現されるコンピュータプログラム製品、および入力データを操作して出力を生成することによって上述の実施態様を実行するために命令のプログアムを実行するプログラム可能なプロセッサによって実行可能な方法のステップにおいて実施可能である。あるいは／さらに、プログラム命令は、例えば装置が生成する電気的、光学的、あるいは電磁的な信号のような人工的に生成される信号である伝播信号であって、プログラム可能なプロセッサによって実行するために適切な受信機装置に送信するために情報を符号化するために生成される信号に符号化されてよい。
【００９３】
上述した機能は、データおよび命令を、データ記憶システム、少なくとも１つの入力デバイス、および少なくとも１つの出力デバイスとの間で送受信する１つ以上のプログラム可能なプロセッサを含んだ、プログラム可能なシステムで実行可能な１つ以上のコンピュータプログラムに好適に実施可能である。コンピュータプログラムは、直接的または間接的にコンピュータで所定の動作を実行したり所定の結果を得るために用いることのできる一式の命令である。コンピュータプログラムは、コンパイル言語やインタプリタ言語を含むプログラミング言語（例えばオブジェクティブＣ、Ｊａｖａ（登録商標））の任意の形態で記述することができ、スタンドアロンなプログラムや、モジュール、部品、サブルーチン、またはコンピュータ環境で用いるのに好適な他の単位を含む、任意の形態で配置されてよい。
【００９４】
命令のプログラムの実行に好適なプロセッサは、一例として、任意の種類のコンピュータの、汎用および特定用途向けマイクロプロセッサの両方、および１つのプロセッサや複数のプロセッサまたはコアを含む。一般に、プロセッサは命令およびデータを読み出し専用メモリおよびランダムアクセスメモリの少なくとも一方から命令およびデータを受信するであろう。コンピュータの基本要素は、命令を実行するためのプロセッサと、命令およびデータを保存するための１つ以上のメモリである。一般に、コンピュータはさらに、内蔵ハードディスクおよびリムーバブルディスクのような磁気ディスク、光磁気ディスク、光ディスクなどを含む、１つ以上の大容量記憶装置を、含んだり、動作可能に接続してもよい。コンピュータプログラム命令およびデータを有形的に実現するための好適な記憶装置は、例えばＥＰＲＯＭ、ＥＥＰＲＯＭおよびフラッシュメモリデバイスのような半導体メモリデバイス、内蔵ハードディスクやリムーバブルディスクのような磁気ディスク、光磁気ディスク、およびＣＤ−ＲＯＭおよびＤＶＤ−ＲＯＭディスクを例とする、不揮発性メモリの任意の形態を含む。プロセッサおよびメモリは、複数のＡＳＩＣ（特定用途向け集積回路）を補助的に用いたり、ＡＳＩＣに組み込まれたりしてもよい。
【００９５】
ユーザとのインタラクションを提供するため、情報をユーザに表示するための、ＣＲＴ（陰極管）やＬＣＤ（液晶ディスプレイ）モニタのような表示デバイスおよび、ユーザがコンピュータに入力することを可能にする、キーボードおよび、マウスまたはトラックボールのようなポインティングデバイスを有するコンピュータ上で実施されてよい。
【００９６】
機能はデータサーバのようなバックエンド要素を含むコンピュータシステム、アプリケーションサーバやインターネットサーバのようなミドルウェア要素を含むコンピュータシステム、またはグラフィカルユーザインタフェース、インターネットブラウザまたはその組み合わせを有するクライアントコンピュータのようなフロントエンド要素を含むコンピュータシステムで実施することができる。システムの構成要素は、通信ネットワークのような、デジタルデータ通信の任意の形態または媒体によって接続されてよい。通信ネットワークの例には、ＬＡＮ、ＷＡＮ、およびインターネットを形成するコンピュータおよびネットワークが含まれる。
【００９７】
コンピュータシステムはクライアントおよびサーバを含むことができる。クライアントおよびサーバは通常、互いに離れており、典型的にはネットワークを通じてやりとりする。クライアントとサーバの関係は、それぞれのコンピュータで稼働するコンピュータプログラムによって発現し、クライアント−サーバ関係を互いに有する。
【００９８】
上述した実施態様の１以上の機能およびステップはＡＰＩを用いて実施されてもよい。ＡＰＩは、サービスを提供し、データを提供し、あるいは動作および計算を実行する呼び出しアプリケーションと他のソフトウェアコード（例えばオペレーティングシステム、ライブラリルーチン、関数）との間でやりとりされる１以上のパラメータを定義することができる。
【００９９】
ＡＰＩは、ＡＰＩ仕様ドキュメントに定義された呼び出し手法に基づくパラメータリストまたは他の構造を通じて１以上のパラメータを送信または受信するプログラムコード内の１つ以上のコールとして実施されてよい。パラメータは定数、鍵、データ構造、オブジェクト、オブジェクトクラス、変数、データタイプ、ポインタ、行列、リスト、または他のコールであってよい。ＡＰＩコールおよびパラメータは任意のプログラミング言語で実施されてよい。プログラム言語は、ＡＰＩをサポートする関数にアクセスするためにプログラマが用いるであろう、ボキャブラリおよび呼び出し手法を定義することができる。
【０１００】
ある実施態様において、ＡＰＩコールはアプリケーションに、アプリケーションを実行している機器の能力（入力能力、出力能力、処理能力、電力能力、通信能力など）をレポートすることができる。
【０１０１】
複数の実施態様について説明してきた。しかし、様々な変更を行いうることを理解すべきである。例えば、他の実施態様を形成するために、１以上の実施態様が組み合わせられても、削除されても、変更されても、補充されてもよい。さらに別の例として、図に示した論理フローは、所望の結果を得るために、図示したとおりの特定の順序や、シーケンシャルな順序で実行されなくてもよい。加えて、記載した手順について、他のステップが提供されてもよいし、ステップが削除されてもよく、記載したシステムについて、他の構成要素を追加したり、構成要素を除去してもよい。従って、他の実施形態もまた以下の請求項の範囲に含まれる。
【図１】
2014222238.tif 000024
【図２】
2014222238.tif 000025
【図３】
2014222238.tif 000026
【図４Ａ】
2014222238.tif 000027
【図４Ｂ】
2014222238.tif 000028
【図４Ｃ】
2014222238.tif 000029
【図４Ｄ】
2014222238.tif 000030
【図５】
2014222238.tif 000031
【手続補正書】
【提出日】平成26年7月22日(2014.7.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
モバイル機器の１以上のプロセッサによって実行される、コンピュータによって実施される方法であって、
前記モバイル機器の向きを、磁力計データを用いて判定するステップと、
前記磁力計データが不正確かも知れないとの表示を受信するステップと、
前記受信した表示に応答して、前記モバイル機器の前記向きを角速度データを用いて判定するステップと、
前記磁力計データが精度範囲内で正確であると判定するステップと、
前記磁力計データが精度範囲内で正確であると判定されると、前記磁力計データを用いた前記モバイル機器の前記向きの判定を再開するステップと、
を有することを特徴とする方法。
【請求項２】
基準グローバル座標系における推定磁場ベクトルを保存するステップをさらに有し、
前記基準グローバル座標系における推定磁場ベクトルが、正確であると判定された過去の磁力計データおよび前記正確な過去の磁力計データと時間的に対応する過去の角速度データを用いて生成されることを特徴とする請求項１記載の方法。
【請求項３】
前記基準グローバル座標系における前記推定磁場ベクトルおよび現在の角速度データを用いて合成磁力計データを生成するステップをさらに有することを特徴とする請求項２記載の方法。
【請求項４】
前記磁力計データが前記精度範囲内で正確であると判定するステップが、
前記合成磁力計データのベクトルと、前記磁力計データのベクトルとの間の相違が閾値を満たすことを判定するステップを有することを特徴とする請求項３記載の方法。
【請求項５】
前記角速度データを用いて前記モバイル機器の前記向きを判定するステップが、
前記合成磁力計データを用いて前記モバイル機器の前記向きを判定するステップを含むことを特徴とする請求項３記載の方法。
【請求項６】
前記磁力計データが不正確かも知れないとの前記表示を受信するステップが、
磁気干渉が発生するであろうとの通知を受信するステップを含むことを特徴とする請求項１記載の方法。
【請求項７】
前記磁気干渉が、少なくとも閾値量の電流を流す、前記モバイル機器の部品から生成されることを特徴とする請求項６記載の方法。
【請求項８】
前記磁気干渉が、スピーカー、カメラ、およびバイブレータの少なくとも１つを含む、前記モバイル機器の部品から生成されることを特徴とする請求項６記載の方法。
【請求項９】
前記磁力計データが不正確かも知れないとの表示を受信するステップが、
前記磁力計データのサンプルにおける複数の磁気ベクトルの大きさを判定するステップと、
前記複数の大きさの差異が閾値を満たすことを判定するステップと、
を含むことを特徴とする請求項１記載の方法。
【請求項１０】
前記磁力計データが不正確かも知れないとの表示を受信するステップが、
前記磁力計データのサンプルにおける複数の磁気ベクトルの傾きを判定するステップと、
前記複数の傾きの差異が閾値を満たすことを判定するステップと、
を含むことを特徴とする請求項１記載の方法。
【請求項１１】
前記複数の傾きの各々が、磁気ベクトルと重力加速度ベクトルとの間の角度に基づいて判定されることを特徴とする請求項１０記載の方法。
【請求項１２】
モバイル機器に有形物として格納されるコンピュータプログラムであって、前記コンピュータプログラムが前記モバイル機器に、
前記モバイル機器の向きを、磁力計データを用いて判定するステップと、
前記磁力計データが不正確かも知れないとの表示を受信するステップと、
前記受信した表示に応答して、前記モバイル機器の前記向きを角速度データを用いて判定するステップと、
前記磁力計データが精度範囲内で正確であると判定するステップと、
前記磁力計データが精度範囲内で正確であると判定されると、前記磁力計データを用いた前記モバイル機器の前記向きの判定を再開するステップと、
を有する動作を実行させることを特徴とするコンピュータプログラム。
【請求項１３】
前記動作がさらに、
基準グローバル座標系における推定磁場ベクトルを保存するステップをさらに有し、
前記基準グローバル座標系における推定磁場ベクトルが、正確であると判定された過去の磁力計データおよび前記正確な過去の磁力計データと時間的に対応する過去の角速度データを用いて生成されることを特徴とする請求項１２記載のコンピュータプログラム。
【請求項１４】
前記動作がさらに、前記基準グローバル座標系における前記推定磁場ベクトルおよび現在の角速度データを用いて合成磁力計データを生成するステップをさらに有することを特徴とする請求項１３記載の方法。
【請求項１５】
前記磁力計データが前記精度範囲内で正確であると判定するステップが、
前記合成磁力計データのベクトルと、前記磁力計データのベクトルとの間の相違が閾値を満たすことを判定するステップを有することを特徴とする請求項１４記載のコンピュータプログラム。
【請求項１６】
前記角速度データを用いて前記モバイル機器の前記向きを判定するステップが、
前記合成磁力計データを用いて前記モバイル機器の前記向きを判定するステップを含むことを特徴とする請求項１４記載のコンピュータプログラム。
【請求項１７】
前記磁力計データが不正確かも知れないとの前記表示を受信するステップが、
磁気干渉が発生するであろうとの通知を受信するステップを含むことを特徴とする請求項１２記載のコンピュータプログラム。
【請求項１８】
モバイル機器を有するシステムであって、
前記モバイル機器が、
前記モバイル機器の向きを、磁力計データを用いて判定するステップと、
前記磁力計データが不正確かも知れないとの表示を受信するステップと、
前記受信した表示に応答して、前記モバイル機器の前記向きを角速度データを用いて判定するステップと、
前記磁力計データが精度範囲内で正確であると判定するステップと、
前記磁力計データが精度範囲内で正確であると判定されると、前記磁力計データを用いた前記モバイル機器の前記向きの判定を再開するステップと、
を有する動作を実行するように構成されることを特徴とするシステム。
【請求項１９】
前記動作がさらに、
基準グローバル座標系における推定磁場ベクトルを保存するステップをさらに有し、
前記基準グローバル座標系における推定磁場ベクトルが、正確であると判定された過去の磁力計データおよび前記正確な過去の磁力計データと時間的に対応する過去の角速度データを用いて生成されることを特徴とする請求項１８記載のシステム。
【請求項２０】
前記動作がさらに、前記基準グローバル座標系における前記推定磁場ベクトルおよび現在の角速度データを用いて合成磁力計データを生成するステップをさらに有することを特徴とする請求項１９記載のシステム。
【外国語明細書】
2014222238000001.pdf