特許第5934296号(P5934296)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アップル インコーポレイテッドの特許一覧

<>
  • 特許5934296-モバイル機器でのセンサ測定値の較正 図000023
  • 特許5934296-モバイル機器でのセンサ測定値の較正 図000024
  • 特許5934296-モバイル機器でのセンサ測定値の較正 図000025
  • 特許5934296-モバイル機器でのセンサ測定値の較正 図000026
  • 特許5934296-モバイル機器でのセンサ測定値の較正 図000027
  • 特許5934296-モバイル機器でのセンサ測定値の較正 図000028
  • 特許5934296-モバイル機器でのセンサ測定値の較正 図000029
  • 特許5934296-モバイル機器でのセンサ測定値の較正 図000030
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5934296
(24)【登録日】2016年5月13日
(45)【発行日】2016年6月15日
(54)【発明の名称】モバイル機器でのセンサ測定値の較正
(51)【国際特許分類】
   G01C 17/38 20060101AFI20160602BHJP
   G01C 19/00 20130101ALI20160602BHJP
   G01C 19/5776 20120101ALI20160602BHJP
   G01C 21/26 20060101ALI20160602BHJP
【FI】
   G01C17/38 K
   G01C19/00 Z
   G01C19/56 276
   G01C21/26 P
【請求項の数】18
【外国語出願】
【全頁数】24
(21)【出願番号】特願2014-137985(P2014-137985)
(22)【出願日】2014年7月3日
(62)【分割の表示】特願2013-502555(P2013-502555)の分割
【原出願日】2010年9月24日
(65)【公開番号】特開2014-222238(P2014-222238A)
(43)【公開日】2014年11月27日
【審査請求日】2014年7月22日
(31)【優先権主張番号】61/356,550
(32)【優先日】2010年6月18日
(33)【優先権主張国】US
(31)【優先権主張番号】61/319,139
(32)【優先日】2010年3月30日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】503260918
【氏名又は名称】アップル インコーポレイテッド
(74)【代理人】
【識別番号】100076428
【弁理士】
【氏名又は名称】大塚 康徳
(74)【代理人】
【識別番号】100112508
【弁理士】
【氏名又は名称】高柳 司郎
(74)【代理人】
【識別番号】100115071
【弁理士】
【氏名又は名称】大塚 康弘
(74)【代理人】
【識別番号】100116894
【弁理士】
【氏名又は名称】木村 秀二
(74)【代理人】
【識別番号】100130409
【弁理士】
【氏名又は名称】下山 治
(74)【代理人】
【識別番号】100134175
【弁理士】
【氏名又は名称】永川 行光
(74)【代理人】
【識別番号】100134474
【弁理士】
【氏名又は名称】坂田 恭弘
(72)【発明者】
【氏名】ムーア, クリストファー
(72)【発明者】
【氏名】キング, ブライアン マイケル
(72)【発明者】
【氏名】ヴィエッタ, ウィリアム マシュー
(72)【発明者】
【氏名】ツ, シャオユアン
(72)【発明者】
【氏名】ピエモンテ, パトリック
【審査官】 東 勝之
(56)【参考文献】
【文献】 米国特許出願公開第2006/0195254(US,A1)
【文献】 米国特許出願公開第2009/0326851(US,A1)
【文献】 特開2005−134343(JP,A)
【文献】 特開平08−114454(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G01C 17/38
G01C 19/00
G01C 19/5776
G01C 21/00 − 21/36
(57)【特許請求の範囲】
【請求項1】
モバイル機器によって実行される方法であって、
前記モバイル機器の判定手段が、前記モバイル機器の向きを、磁力計データを用いて判定するステップと、
前記モバイル機器の受信手段が、前記磁力計データが不正確かも知れないとの表示を受信するステップと、
前記モバイル機器の前記判定手段が、前記受信した表示に応答して、前記モバイル機器の前記向きを角速度データを用いて判定するステップであって、前記モバイル機器の前記向きを合成磁力計データを用いて判定することを含み、前記合成磁力計データは前記モバイル機器の姿勢および推定磁場ベクトルから導出される、ステップと、
前記モバイル機器の前記判定手段が、前記磁力計データが精度範囲内で正確であると判定するステップと、
前記磁力計データが精度範囲内で正確であると判定されると、前記モバイル機器の前記判定手段が、前記磁力計データを用いた前記モバイル機器の前記向きの判定を再開するステップと、
を有することを特徴とする方法。
【請求項2】
前記モバイル機器の保存手段が、基準グローバル座標系における前記推定磁場ベクトルを保存するステップをさらに有し、
前記基準グローバル座標系における推定磁場ベクトルが、正確であると判定された過去の磁力計データおよび前記正確な過去の磁力計データと時間的に対応する過去の角速度データを用いて生成されることを特徴とする請求項1記載の方法。
【請求項3】
前記モバイル機器の生成手段が、前記基準グローバル座標系における前記推定磁場ベクトルおよび現在の角速度データを用いて前記合成磁力計データを生成するステップをさらに有することを特徴とする請求項2記載の方法。
【請求項4】
前記磁力計データが前記精度範囲内で正確であると判定するステップが、
前記合成磁力計データのベクトルと、前記磁力計データのベクトルとの間の角度の相違が閾値を満たすことを判定するステップを有することを特徴とする請求項3記載の方法。
【請求項5】
前記磁力計データが不正確かも知れないとの前記表示を受信するステップが、
磁気干渉が発生するであろうとの通知を受信するステップを含むことを特徴とする請求項1記載の方法。
【請求項6】
前記磁気干渉が、少なくとも閾値量の電流を流す、前記モバイル機器の部品から生成されることを特徴とする請求項記載の方法。
【請求項7】
前記磁気干渉が、スピーカー、カメラ、およびバイブレータの少なくとも1つを含む、前記モバイル機器の部品から生成されることを特徴とする請求項記載の方法。
【請求項8】
前記磁力計データが不正確かも知れないとの表示を受信するステップが、
前記磁力計データのサンプルにおける複数の磁気ベクトルの大きさを判定するステップと、
前記複数の大きさの変化が閾値を満たすことを判定するステップと、
を含むことを特徴とする請求項1記載の方法。
【請求項9】
前記磁力計データが不正確かも知れないとの表示を受信するステップが、
前記磁力計データのサンプルにおける複数の磁気ベクトルの傾きを判定するステップと、
前記複数の傾きの変化が閾値を満たすことを判定するステップと、
を含むことを特徴とする請求項1記載の方法。
【請求項10】
前記複数の傾きの各々が、磁気ベクトルと重力加速度ベクトルとの間の角度に基づいて判定されることを特徴とする請求項記載の方法。
【請求項11】
バイル機器に、
前記モバイル機器の向きを、磁力計データを用いて判定するステップと、
前記磁力計データが不正確かも知れないとの表示を受信するステップと、
前記受信した表示に応答して、前記モバイル機器の前記向きを角速度データを用いて判定するステップであって、前記モバイル機器の前記向きを合成磁力計データを用いて判定することを含み、前記合成磁力計データは前記モバイル機器の姿勢および推定磁場ベクトルから導出される、ステップと、
前記磁力計データが精度範囲内で正確であると判定するステップと、
前記磁力計データが精度範囲内で正確であると判定されると、前記磁力計データを用いた前記モバイル機器の前記向きの判定を再開するステップと、
を有する動作を実行させることを特徴とするコンピュータプログラム。
【請求項12】
前記動作がさらに、
基準グローバル座標系における前記推定磁場ベクトルを保存するステップを有し、
前記基準グローバル座標系における推定磁場ベクトルが、正確であると判定された過去の磁力計データおよび前記正確な過去の磁力計データと時間的に対応する過去の角速度データを用いて生成されることを特徴とする請求項11記載のコンピュータプログラム。
【請求項13】
前記動作がさらに、前記基準グローバル座標系における前記推定磁場ベクトルおよび現在の角速度データを用いて前記合成磁力計データを生成するステップを有することを特徴とする請求項12記載のコンピュータプログラム
【請求項14】
前記磁力計データが前記精度範囲内で正確であると判定するステップが、
前記合成磁力計データのベクトルと、前記磁力計データのベクトルとの間の角度の相違が閾値を満たすことを判定するステップを有することを特徴とする請求項13記載のコンピュータプログラム。
【請求項15】
前記磁力計データが不正確かも知れないとの前記表示を受信するステップが、
磁気干渉が発生するであろうとの通知を受信するステップを含むことを特徴とする請求項11記載のコンピュータプログラム。
【請求項16】
モバイル機器を有するシステムであって、
前記モバイル機器が、
前記モバイル機器の向きを、磁力計データを用いて判定するステップと、
前記磁力計データが不正確かも知れないとの表示を受信するステップと、
前記受信した表示に応答して、前記モバイル機器の前記向きを角速度データを用いて判定するステップであって、前記モバイル機器の前記向きを合成磁力計データを用いて判定することを含み、前記合成磁力計データは前記モバイル機器の姿勢および推定磁場ベクトルから導出される、ステップと、
前記磁力計データが精度範囲内で正確であると判定するステップと、
前記磁力計データが精度範囲内で正確であると判定されると、前記磁力計データを用いた前記モバイル機器の前記向きの判定を再開するステップと、
を有する動作を実行するように構成されることを特徴とするシステム。
【請求項17】
前記動作がさらに、
基準グローバル座標系における前記推定磁場ベクトルを保存するステップを有し、
前記基準グローバル座標系における推定磁場ベクトルが、正確であると判定された過去の磁力計データおよび前記正確な過去の磁力計データと時間的に対応する過去の角速度データを用いて生成されることを特徴とする請求項16記載のシステム。
【請求項18】
前記動作がさらに、前記基準グローバル座標系における前記推定磁場ベクトルおよび現在の角速度データを用いて前記合成磁力計データを生成するステップを有することを特徴とする請求項17記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は概して、モバイル機器でのセンサ測定値の較正に関する。
【背景技術】
【0002】
角速度センサは、参照用の固定点(pix point)を持たない物体の回転速度を測定するために用いられている。微小電気機械システム(MEMS)角速度センサ(またはMEMSジャイロ)は、小型、軽量かつ低コストであるため、モバイル機器に組み込むことができる。動作原理はコリオリの効果に基づいている。MEMS共振器は、所定周波数(例えば約10kHz)で駆動される。角速度に起因して、コリオリの力が、最初の振動と直交する2番目の振動を励起する。この振動は角速度に比例し、容量法(capacitive method)を用いて測定することができる。非限定的な応用例は以下のものを含む。(例えばカメラや携帯電話での)画像ブレ補正、仮想現実アプリケーション用の入力機器、プラットフォーム安定化、ゲーム機用のセンサ、およびナビゲーションシステム用のセンサ。
【0003】
MEMSジャイロは、高周波ノイズのみならず、バイアス、スケールファクタ誤差、および軸交差感度の影響を受けやすい。交差軸感度は、取り付け歪みに強く影響を受け、バイアス及びスケールファクタ誤差は外部温度に関連する。例えば、ジャイロバイアスの変化は外部温度の変化におおよそ線形である。ジャイロバイアスの影響を軽減するため、既知の数式によりジャイロバイアスを推定し、rawジャイロデータから差し引くことができる。交差軸感度を求めるために、既知の角速度での測定結果を用いる較正を用いることができる。不都合なことに、限られたリソースを有するモバイル機器で動作するアプリケーションについては、処理速度、電力およびメモリの制約によりこれら数学的手法は実行不可能となり得る。
【発明の概要】
【0004】
センサ測定値は、センサを組み込んだ機器が静止しているときを検出するために用いられる。機器が静止している間、その時点での機器温度でのセンサ測定値はモデルパラメータの推定に用いられる。モデルパラメータは、推定姿勢(attitude)を提供するために状態推定器で用いることができ、この推定姿勢は他のアプリケーションに提供されてもよい。一部の実施態様において、推定姿勢は他のセンサ測定値における干渉を軽減するために用いることができる。
【0005】
磁力計及び角速度センサに接続された機器は、磁力計データを用いて機器の向き(heading)を判定することができる。磁力計データが不正確かもしれないとの通知を受けた場合、機器は角速度データを用いて機器の向きを判定することができる。磁力計データが不正確であると機器が判定した場合、機器は磁力計データを用いて機器の向きの判定をやり直すことができる。
【0006】
以下、モバイル機器でのセンサ測定値の較正の1つ以上の実施態様の詳細は、添付図面と以下の記述ににおいて説明される。モバイル機器でのセンサ測定値の較正にかかる他の特徴、見地、及び利点は、詳細な説明、図面および特許請求の範囲から明らかになるであろう。複数の図面で用いられる同様の参照シンボルは、同様の構成要素を示す。
【図面の簡単な説明】
【0007】
図1】例示的なセンサ測定値較正システムのブロック図である。
図2図1の状態推定器によって実行される様々な例示的な処理を説明するフローチャートである。
図3】モデルパラメータの推定およびモデルパラメータに基づく推定姿勢の判定のための例示的な処理のフローチャートである。
図4A】いくつかの実施態様に従って、地球磁場を説明する例示的なカーテシアン座標系を示す図である。
図4B】いくつかの実施態様にかかる、例示的な2軸磁力計を示す図である。
図4C】磁力計データ及び角速度データを用いて向きを判定するための例示的なシステムのブロック図である。
図4D】磁力計データ及び角速度データを用いて向きを判定するための例示的な処理のフローチャートである。
図5図1図4で言及したシステムおよび方法を実施するための例示的なハードウェアアーキテクチャのブロック図である。
【発明を実施するための形態】
【0008】
例示的なセンサ測定値較正システム
図1は例示的なセンサ測定値較正システム100のブロック図である。ある実施態様において、システム100は角速度センサ102(例えばMEMSジャイロ)、動き検出器104、モデルパラメータ推定器106、状態推定器108、較正データベース110、加速度センサ112および、必要に応じて設けられる干渉軽減モジュール114を含むことができる。システム100は、少なくとも以下に示すものを含む、様々なモバイル機器に組み込むことができる。ハンドヘルドコンピュータ、携帯情報端末(PDA)、携帯電話機、電子タブレット、ネットワーク家電、デジタルカメラ、ビデオカメラ、スマートフォン、EGPRS(enhanced general packet radio service)対応携帯電話機、メディアプレーヤ、ナビゲーション機器、電子メール機器、ゲーム機、またはこれらの2つ以上の組み合わせ。ある実施態様では、システム100の一部又は全部の構成要素が1つ以上の集積回路(IC)チップに含められてもよい。
【0009】
ある実施態様では、機器の姿勢(attidude)は本体の角速度を用いて更新されてもよい。本体角速度は角速度ベクトルω→によって表すことができる。角速度ベクトルω→の成分は、機器の局所座標系(local coordinate frame)のx,yおよびz軸のそれぞれにおける角速度を表す。ある実施態様では、角速度ベクトルω→は、局所座標系のx,yおよびz軸のそれぞれに1つの、計3つのMEMSジャイロを用いて測定することができる。
【0010】
一般に、機器の姿勢は以下の基準四元数(reference quaternion)qref→を用いて表すことができる。
【数1】
ここで
J→=回転軸方向の単位ベクトル
f=総回転角である。
【0011】
微小角近似に基づく基準四元数の変化率式(change rate formulation)は以下のように与えられる。
【数2】
【0012】
式(2)は、基準四元数qref→によって表される機器の最終的な姿勢を得るために、離散的な時間、積分することができる。
【0013】
角速度ベクトルω→は角度センサ102から出力され、動き検出器104に入力される。さらに、機器の現在温度Tが動き検出器104に入力される。現在温度Tは角度センサ102内の、あるいは機器内のどこかに配置された温度センサによって提供されてよい。ある実施態様では、角速度ベクトルω→は動き検出器104に入力される前にスケール補正されてよい。
【0014】
ある実施態様では、動き検出器104は機器が静止している時を特定する。3軸角度センサ102からの角速度(度/秒)の直近nサンプルを、ω1→,...,ωn→とする。角速度ω1→,...,ωn→に対応する、直近の角速度センサ温度サンプルをT1,...,Tnとする。
【0015】
新たな較正時刻tごとに、以下の量が軸ごとに更新される。
【数3】
【0016】
そして、式(3)および(4)から、軸ごとの変化が以下のように与えられる。
【数4】
【0017】
機器が静止していれば角速度は理論上ゼロとなるべきであるから、σ2が閾値ω ̄未満であれば、現在温度T ̄での角速度バイアスの推定値として使用できる。ω ̄,T ̄(まとめて”較正点”と呼ぶ)および較正時刻tは、較正データベース110に保存することができる。較正データベース110に保存された、T ̄に近い温度を有するω ̄,T ̄の古い値は削除してもよい。較正データベース110は、機器のエージングに伴って更新することができる。例えば、スケジュールに従って、あるいはトリガイベントに応答して、最古の較正点を較正データベース110から削除するというエージングアルゴリズムを適用することができる。例えば、較正データベース110は、1℃温度ビンのそれぞれで、直近のNの較正点以外を削除してもよい。さらに、ω→ ̄を現在の角度センサバイアスの測定値として状態推定器108に入力してもよい。
【0018】
ある実施態様では、モデルパラメータ推定器106は較正データベース110に保存された複数の較正点の線形近似を追跡(track)してもよい。例えば、較正点が較正データベース110に追加されると、モデルパラメータ推定器106は以下の量を軸ごとに追跡することができる。
【数5】
【0019】
角速度バイアス−温度勾配mは、軸ごとに式(7)〜(10)から以下のように計算することができる。
【数6】
【0020】
角速度バイアス−温度オフセットbは、軸ごとに式(7)〜(10)から以下のように計算することができる。
【数7】
【0021】
3軸センサについて、温度勾配ベクトルm→および温度バイアスオフセットベクトルb→=[bxyz]は状態推定器108に入力され、図2に関して説明するように、姿勢推定フィルタを用いた機器の推定姿勢の算出にこれらベクトル量が用いられる。
【0022】
図2は、図1の状態推定器108によって実施される様々な例示的な処理を示すフローチャートである。ある実施態様において、状態推定器108は状態変数を更新するために更新パス200〜204を実施することができる。本例において、角速度センサ102は3軸MEMSジャイロであってよい。
【0023】
最初のパス200は、温度推定フィルタ、現在温度Tおよび、モデルパラメータ推定器106から受信する推定温度勾配ベクトルm→を用いる温度推定更新を実行することができる。勾配ベクトルm→および温度バイアスオフセットベクトルb→は、以下に与えられる、任意の温度Tについてのベースバイアスベクトルbbase→を記述する線型モデルを定義する。
【数8】
【0024】
以下のように、ある時刻での真のバイアスbtrue→とベースバイアスベクトルbbase→との差によってバイアスデルタベクトルβ→を定義することができる。
【数9】
ここで、ベースバイアスベクトルbbase→は、長時間にわたるバイアスを示し、バイアスデルタベクトルβ→は(時間的な)局所変化についてのバイアスを示す。
【0025】
2番目の更新パス201は、加速度センサ112から受信する加速度ベクトルa→を用いた加速度更新を実行することができる。加速度ベクトルa→は状態推定器108に入力される前にスケール補正されてよい。加速度ベクトルが過剰な動的加速度(dynamic acceleration)を有する場合、状態推定器108が何も行わずに更新を完了してもよい。加速度ベクトルが過剰な動的加速度を有さない場合、時間更新(time update)が実施可能であり、重力ベクトルg→を機器の局所座標系で算出することができる。重力ベクトルおよび他の量は、以下に説明するように姿勢推定フィルタで用いることができる。
【0026】
3番目の更新パス202は、まずベースバイアスベクトルbbias→を角速度ベクトルω→から減じて温度補償済み角速度ベクトルωc→=(ω ̄−m*T−b)=[ωcx ωcy ωcz]を生成し、その後バイアスデルタベクトルβ→を補償済み角速度ベクトルωc→から減じて推定角速度ベクトルω→^=(ωc→−β)=[ω^x ω^y ω^z]を生成して、推定角速度ベクトルをバッファに保存することにより、ジャイロ更新を実施することができる。基準四元数qref→は、以下の式(15)を用いて伝播(propagate)されてよい。
【数10】
ここで、○×は、四元数の乗算である。
【0027】
四元数を更新するための他の近似または手法、あるいは方向余弦行列手法を用いることができる。推定角速度ベクトルω→^が実際の角速度ベクトルω→からずれていれば、時間更新を実行可能である。温度補償済み角速度ωc→がある所定の閾値未満であれば、ローパスフィルタ(LPF)を以下のように更新することができる。
【0028】
4番目の更新パス203は、推定角速度ベクトルω→^を算出し、姿勢推定フィルタを用いてバイアスデルタベクトルβ→を更新することによりジャイロバイアス更新を実行可能である。
【0029】
5番目の更新パス204は、姿勢推定フィルタ内の温度バイアスモデルを、提供される新たなモデルに置換し、バイアスデルタベクトルβ→およびLPFを適切に更新することにより、ジャイロバイアス線形回帰更新(linear fit update)を実施することができる。
【0030】
例示的なカルマンフィルタ手法
上述した温度推定フィルタおよび姿勢推定フィルタは、精度を向上するためにカルマンフィルタ手法を用いて実施することができる。ある実施態様では、2つの独立したカルマンフィルタを用いることができる。1つは温度を推定するための、もう一つは姿勢を推定するためのものである。これらのカルマンフィルタは、論理的な観点のみならず計算効率の観点からも分離することができる。
【0031】
ある実施態様において、温度推定フィルタは、温度T及び温度レートT・を状態として用いるクラッシックカルマンフィルタであってよい。温度推定フィルタ状態および温度推定フィルタ遷移行列は、以下のように表すことができる。
【数11】
【0032】
姿勢推定フィルタは乗法拡張(multiplicative extended)されたカルマンフィルタ手法に基づくことができる。フィルタは補償済み角速度ベクトルωc→を有する基準四元数qref→を伝播することができる。姿勢推定フィルタ状態は、基準四元数qref→およびバイアスデルタベクトルβ→から得られる局所姿勢誤差ベクトルθ→を含むことができる。加速度計に関する姿勢推定フィルタ状態X、遷移行列Φ、姿勢処理ノイズ行列Qおよび測定値行列Hは、連続時間形式で以下のように表すことができる。
【数12】
ここで、λはガウスマルコフ時定数、Onxmはn×mのゼロ行列、Inxmはn×mの恒等行列、|ω→|x、|g→^|xは左外積行列である。
【0033】
実際には、姿勢推定フィルタおよび温度推定フィルタについて、二次離散近似を用いることができる。上述の手法では、対角行列要素NθおよびNβによって特定できるように、姿勢誤差とバイアスとに関する処理ノイズ行列Qが別個であると仮定されている。測定行列は加速度計測定行列であってよく、基準四元数qref→から生成されるフィルタの現在の重力推定値g→^に関して定義することができる。温度推定フィルタおよび姿勢推定フィルタについての測定ノイズ行列Rは対角であると仮定され、シミュレーションまたは他の既知の統計的方法を用いて実験的に求めることのできる値を有する。誤差共分散行列Pの初期値もまた、シミュレーションまたは他の既知の統計的方法を用いて実験的に選択することができる。
【0034】
上述の行列は、以下のような時間更新フェーズおよび測定値更新フェーズを含む拡張カルマンフィルタ手法に用いることができる。
A.時間更新
1.状態の伝播
【数13】
2.誤差共分散の伝播
【数14】

B.測定値(観測)更新
1.カルマンゲインの算出
【数15】
2.測定値およびカルマンゲインを用いて推定値を更新
【数16】
3.カルマンゲインを用いて誤差共分散を更新
【数17】
【0035】
ローパスバイアス推定
最終的にジャイロバイアス推定に寄与する多くの成分が存在しうる。一般に、これら成分は2つのカテゴリに分けることができる。バイアス/温度モデルおよび、温度モデルからのバイアスデルタである。
【0036】
通常、所与の温度に対する時間平均バイアス値を定義する温度/バイアス関係はシステム100で維持されている。これは長期的な関係である。所与の温度における平均バイアスからの短期変動−バイアスデルタベクトル(β→)−は、ガウスマルコフノイズモデルに従うものと仮定することができる。
【0037】
バイアスデルタベクトルは、カルマンフィルタ手法を通じて更新することができる。これらの更新は、加速度計測定値更新、動き検出器104による直接測定値更新、またはLPFによる直接測定値更新の3つの方法の1つで実行することができる。
【0038】
ある実施態様において、温度補償済み角速度ベクトルωc→の長期移動平均を、バイアスデルタベクトルβ→の初期段階推定値としてもよい。LPFは、動的更新レートを有する1次自己回帰フィルタLPFn=αn・LPFn-1+(1−αn)・ωnとして実装されてもよい。補償済み角速度ベクトルωc→の値は、補償済み角速度ベクトルの大きさの所定閾値未満であれば、LPFに供給される。更新レートαnはωc→の大きさが大きいほど大きく、ωc→の大きさが小さいほど小さく選択することができる。
【0039】
この推定は、直接測定と同様、姿勢推定フィルタに対して周期的に(例えば5Hz)適用することができる。測定ノイズは、LPFがどれだけの時間稼動し続けているかに大まかに依存して修正することができる。LPFの目的は、姿勢推定フィルタの共分散行列を通じて規定されるような、大きな不確定要素が存在する領域におけるβ→の更新を可能とするためである。これらの更新は機器がゆっくり動いている場合にも実行することができる。
【0040】
例示的な干渉軽減モジュール
必要に応じて設けられる干渉軽減モジュール114は、外部磁場ベクトルにおける変化を検出するために、状態推定器108から出力される基準四元数を用いることができる。モジュールは時刻kにおける直近の既知の磁力計測定ベクトルmk→および時刻kにおける機器の推定された姿勢Akを記録し、状態推定器108に(例えばqref→によって)供給することができる。モジュール114は磁力計測定ベクトルmk→を、Akの逆数を用いて、基準グローバル座標系内の推定磁場ベクトルに変形する。
【数18】
【0041】
基準グローバル座標系は、機器の推定姿勢Akの基準フレームと同じ基準フレームを含んでもよい。時刻kで変形された推定磁場ベクトルは、それ以降の磁力計測定ベクトルが干渉を受けているかどうかを判定するための基準として保存することができる。時間iにおけるオフセット補正された磁力計測定ベクトルmi→の各々に対してモジュール114は時間iにおける現在の推定姿勢Aiを読み出し、時間iにおける合成磁力計測定ベクトルmsi→を構築する。
【数19】
【0042】
RatationMatrixで表される姿勢(例えばAi)およびMagneticGlobalFrameで表される推定磁場ベクトル(例えばmwi→)を用いる、合成磁力計測定ベクトルを算出するための例示的な擬似コードgyroCompassMagnetic(例えばmsi→)は、以下の通りである。
gyroCompassMagnetic = (RotationMatrix.mult(MagneticGlobalFrame))
【0043】
基準グローバル座標系で表される磁力計測定ベクトルmwi→が実質的に一定なら、ベクトルmsi→とmi→のなす角度
【数20】
はゼロとなる。規定されたウィンドウ内でのθiの変化が閾値未満であり、他の既知の磁力計干渉源(例えば震動源)が存在しない場合、オフセット補正された磁力計測定ベクトルmi→はコンパス方位(heading)の算出に用いることができる。そうでなければ、合成磁力計測定ベクトルmsi→をコンパス方位の算出に用いることができる。ウィンドウは1つ以上の磁力計測定結果を包含する期間を含むことができる。θiの変化を算出するための例示的な擬似コードを以下に示す。
//daltaAngleは、magnetic(例えばmi→)と
//gyroCompassMagnetic(例えばmsi→)との内角である。
float deltaAngle = (magnetic.interiorAngle(gyroCompassMagnetic));
//AngleVarianceはデータを合計するランニングバッファである。
AngleVariance.addSample(deltaAngle*deltaAngle);
// varAngleは変化の自乗である。
float varAngle = (AngleVariance.getSum()/AngleVariance.getCurrentSize());
【0044】
ある実施態様において、磁力計測定ベクトルの大きさの変化は、θiの角度変化に加えて、あるいはその代わりに用いることができる。大きさの変化が閾値を満足する場合、オフセット補正された磁力計測定ベクトルmi→をコンパス方位の算出に用いることができる。そうでなければ、合成磁力計測定ベクトルmsi→をコンパス方位の算出に用いることができる。ベクトルの大きさ算出するための例示的な擬似コードを以下に示す。
// x,y,zの3成分を有するベクトルの大きさを算出する
mag() const {
return sqrt( x*x + y*y + z*z);
}
【0045】
ある実施態様において、磁力計測定ベクトルの傾きの変化は、θiの変化および/または大きさの変化に加えて、あるいはその代わりに用いることができる。傾きの変化が閾値を満足する場合、オフセット補正された磁力計測定ベクトルmi→をコンパス方位の算出に用いることができる。そうでなければ、合成磁力計測定ベクトルmsi→をコンパス方位の算出に用いることができる。磁力計測定ベクトルmagneticの傾きを算出するための擬似コードを以下に示す。
// 磁気ベクトルmagnetic(例えばmi→)と
//重力ベクトルgravity(例えばg→)との間の傾き
inclination = 90.0f - (magnetic.interiorAngle(gravity));
【0046】
θiの変化、大きさの変化、および傾きの変化は、個別に、あるいは組み合わせて、磁力計モードおよび慣性モード(coasting mode)の一方を選択するためのモードセレクタを制御するものとして用いることができる。磁力計モードでは、オフセット補正された磁力計測定ベクトルmi→をコンパス方位の算出に用いることができる。慣性モードでは、合成磁力計測定ベクトルmsi→をコンパス方位の算出に用いることができる。
【0047】
モードセレクタはデータの観測によってトリガすることができる。モードセレクタはθiの変化、大きさの変化、および傾きの変化に関する様々な閾値を用いるように構成することができる。第1の閾値群の1つ以上が満たされた場合、コンパス方位は合成磁力計測定ベクトルmsi→を用いて算出することができ、第2の閾値群の1つ以上が満たされた場合、コンパス方位はオフセット補正された磁力計測定ベクトルmi→を用いて算出することができる。磁力計モードから慣性モードへ切り替えるための例示的な擬似コードを以下に示す。
// varMagnitudeは大きさの変化を測定可能である。varInclinationは傾きの変化を測定可能である。
// MaxAngleVariance、MaxMagnitudeVariance、および
// MaxInclinationVarianceは個々の閾値である。
if (varAngle > MaxAngleVariance || varMagnitude > MaxMagnitudeVariance ||
varInclination > MaxInclinationVariance)) {
ActivateCoastingMode();
}
【0048】
基準グローバル座標系における推定磁場ベクトルは記憶装置に保存されているため、周期的に、あるいは要求に応じて更新することができる。ある実施態様において、基準グローバル座標系における推定磁場ベクトルは、コンパス較正が向上した際に、あるいはθiの変化、大きさの変化、および傾きの変化の少なくとも1つが閾値を下回った際に更新することができる。基準グローバル座標系における推定磁場ベクトルを保存するための擬似コードを以下に示す。
if (NOT coasting && compass calibrated) {
if (compass calibration improved ||
(magnetic.interiorAngle(gyroCompassMagnetic)<=
MaxAngleUpdateThreshold) &&
magnetic.mag() - gyroCompassMagnetic.mag() > Threshold ) {
MagneticGlobalFrame = TransposeRotationMatrix.mult(magnetic);
}
}
【0049】
例示的なセンサ較正処理フロー
図3は、モデルパラメータの推定およびモデルパラメータに基づく推定姿勢の判定のための例示的な処理300のフローチャートである。処理300は、センサ測定較正システム100のような、機器のセンサデータ較正システムによって実施することができる。
【0050】
ある実施態様において、処理300は、機器が静止しているかどうかの判定から開始されてよい(302)。例えば、動き検出器(例えば動き検出器104)は、機器が静止しているかどうか判定するために角速度センサ(例えばMEMSジャイロ)からの角速度を用いることができる。図1に関して説明したように、ある実施態様では、機器が静止しているかどうかを判定するために、ウィンドウ平均された角速度の変化を閾値と比較することができる。他の実施態様では、機器が静止しているときを検出するために、加速度計112からの加速度のような、他のセンサデータを用いることができる。
【0051】
機器が静止していると判定された場合(304)、較正の機会が存在し、現在の温度に関してウィンドウ平均されたバイアスベクトルを、角速度センサから出力される角速度データに基づいて算出することができる(306)。ウィンドウ平均されたバイアスベクトルおよび対応する温度は、較正データベースに保存することができる(308)。較正データベースに保存されたバイアスベクトルと温度の線形回帰(linear fit)から、モデルパラメータを算出することができる(310)。機器の推定姿勢はモデルパラメータを用いて判定することができる(312)。推定は、温度を推定するための1つと、姿勢を推定するための1つの、2つの独立した推定フィルタにおいて実施することができる。推定フィルタはカルマンフィルタ手法を用いて実現することができる。推定された姿勢は必要に応じて、磁力計測定値のような他のセンサ測定値における干渉を軽減するために用いることができる(314)。
【0052】
地球の磁界−概要
図4Aは、ある実施態様にかかる、地球磁場を説明する例示的なカーテシアン座標系を示す図である。地球磁場ベクトルF→は、直交成分X(北向き強度)、Y(東向き強度)およびZ(鉛直下向き強度、下向きに正)と、全強度F、水平強度H、伏角(または傾斜)I、および偏角(または磁気偏角)Dによって記述可能である。偏角、伏角および全強度は、以下の式を用い、直交成分から算出することができる。
【数21】
【0053】
角度Φは、地球磁場ベクトルF→と、地球の重力加速度ベクトルg→(地球磁場ベクトルのZ成分と一直線上にある)との間の角度として定義できる。角度Φは伏角I、またはΦ=90°−Iから求めることができる。磁力計の向きとは無関係に、地球上の任意の位置において全強度Fは一定である。さらに、地磁気計の向きとは無関係に、地球上の任意の位置において角度Φは一定である。磁界強度の国際単位系(SI)単位として最も一般的に用いられるのはテスラである。
【0054】
図4Bはある実施態様にかかる、例示的な2軸磁力計を示している。磁力計は2軸または3軸であってよく、ここで説明する処理はどちらのタイプのセンサにも当てはまる。簡略にするため、2軸磁力計のみ説明する。
【0055】
ある実施態様において、モバイル機器で稼動するアプリケーションを含む様々なアプリケーションのために向きを算出するために、2軸磁力計センサ構成400を用いることができる。センサ構成400は、ボード、基板、または他の実装面上に直交するように取り付けられる2つの磁界センサ402,404を含むことができる。磁気センサ402,404は加速度計およびジャイロのような他のセンサとともに、あるいは単独で、集積回路(IC)パッケージに封入されてもよい。
【0056】
センサ構成400は、干渉磁界を含むホストシステム環境に配置されうる。地球の磁場は弱い場(〜0.5ガウス)であるため、近くの(モバイル機器と同じ位置にある)磁石様物体(magnetic object)は、センサ402,404の正確な測定に干渉しうる。局所磁気干渉を隔離および除去するために較正手順を用いることができる。1つの方法は、地球磁場を正確に測定するためにセンサ測定値から減じることのできるオフセットまたはオフセットベクトルを求めることである。3軸センサについては、第3成分であるZも、同様にオフセットによって調整することができる。
【0057】
2軸磁力計のための1つの例示的な較正手順において、各方位(heading)算出は、各測定値間の遅延が最小で取得可能な、複数の有効なXおよびYセンサ測定値を用いて行われるものと仮定することができる。このセンサ構成に関し、センサ402、404は互いに直角をなし、地表と同じ高さにある。慣例により、X軸の正方向の終端は北向きであり、Y軸の正方向の終端は東向きである。本例に関し、較正の間に、180度離れた2つの連続したセンサ測定値を取得する。これらの測定値は(X1, Y1)および(X2, Y2)と表すことができる。干渉場なしに測定された任意の方向の地球磁場は、オフセットペア(XE, YE)で表すことができる。磁気干渉は(Xoffset, Yoffset)で表すことができる。これらの数学的表現を用いて、2つのセンサ測定値は以下のように表現できる。
X1 = XE + Xoffset (28)
Y1 = YE + Yoffset
X2 = -XE +Xoffset
Y2 = -YE+ Yoffset
【0058】
磁力計がホストシステムに対して固定されている(例えば磁力計が携帯電話に取り付けられている)ものとすると、較正中に取得された測定値(X1, Y1)および(X2, Y2)はいずれも同じ干渉値(Xoffset, Yoffset)を含むであろう。較正中に取得された磁力計の測定値は180度離れているため、測定値は符号が異なる同じ値である。上述の式をXoffsetおよびYoffsetについて解くと、以下が得られる。
offset=(X1+X2)/2 (29)
offset=(Y1+Y2)/2
【0059】
センサ測定値の測定結果は、(XE, YE)によって表すことができる。ある実施態様において、方位の基本計算はXE、YEおよび以下の式を用いて実行することができる。
heading=arctan (YE, XE) (30)
ここで、得られる方位Aheadingは、信号XEおよびYEの符号に基づいて正しい四元数にマッピングすることができる。磁力計によって提供された測定結果から算出されたAheadingは、真北に対する方位を特定するため、方位Aheadingと偏角とを組み合わせることによって補正することのできる磁気方位である。
【0060】
他の方法で実施することもできる。例えば、方位は、加速度計から得られる機器の向き、伏角、GPS、および他のタイプの補正または較正方法に基づいてさらに構成されてもよい。
【0061】
オフセットが求まると、オフセットをセンサ測定値(X3, Y3)から差し引くことができる。
XE = X3 - Xoffset (31)
YE = Y3 - Yoffset
【0062】
磁力計が携帯電話機のようなモバイル機器に含まれる場合、局所磁気干渉は変化しうる。例えば、ユーザが自分の(磁力計を内蔵している)モバイル機器を車に取り付けた場合、車内の磁石様物体が局所干渉を変化させうる。そのため、較正オフセットが無効となり得る。オフセットが無効の場合、磁力計は新たなオフセットを生成するために再構成手順を実行することができる。この再較正手順は、頻繁に行うとユーザにとってつまらない処理となりうるほか、ユーザはモバイル機器を複数の角度で操作しなければならないだろう。
【0063】
図4Cは、磁力計データおよび角速度データを用いて方位を求めるための例示的なシステム410のブロック図である。システム410はモバイル機器のサブシステムであってよい。システム410はモードセレクタを有することができる。モードセレクタ412は、磁力計モードと慣性モードとを切り替えるように構成することができる。切り替えは、モードセレクタ412に供給される磁力計測定結果の品質もしくは1以上の磁気干渉の通知に基づくことができる。
【0064】
モードセレクタ412に供給される入力の第1セットには、図1に関して説明した、オフセット補正済みの磁力計測定結果が含まれてよい。
【0065】
モードセレクタ412に供給される入力の第2セットには、合成器414で生成された合成磁力計測定結果が含まれてよい。合成器414は、基準グローバル座標系における推定磁場ベクトルとモバイル機器の姿勢とを用いて合成磁力計測定結果を生成することができる。
【0066】
モードセレクタ412はオフセット補正済みの磁力計測定結果の品質に基づいて、磁力計モードと慣性モードとの切り替えを実施することができる。例えば、オフセット補正済みの磁力計測定結果と合成磁力計測定結果との差(内角によって測定される)を測定することができる。この差の変化が算出される。変化が閾値以上になると、モードセレクタ412は慣性モードに切り替えることができる。変化が閾値未満であれば、モードセレクタ412は磁力計モードに切り替えることができる。
【0067】
ある実施態様では、モードセレクタ412は磁力計測定結果に基づいて切り替えることができる。磁力計測定結果が閾値以上の大きさおよび/または傾きの変化を有する場合、モードセレクタ412は慣性モードに切り替えることができる。さもなければ、モードセレクタ412は磁力計モードに切り替えることができる。
【0068】
ある実施態様において、モードセレクタ412は磁力計モードと慣性モードとを、通知に基づいて切り替えることができる。通知には、磁気干渉が発生したこと、または発生しそうなことの兆候が含まれてよい。通知に応答して、モードセレクタ412は磁力計モードから慣性モードへ切り替えることができる。例えば、モバイル機器のスピーカーが駆動されそうになると、通知がモードセレクタ412に送られてもよい。この通知を受けると、モードセレクタ412はスピーカーからの磁気干渉を避けるため、慣性モードに入ることができる。
【0069】
オフセット補正済みの磁力計測定結果と合成磁力計測定結果のうち、モードセレクタ412に選択された一方が、方位算出器416に供給されてよい。方位算出器416はモバイル機器の向きを算出することができ、向きをアプリケーションプログラム(例えばコンパスプログラムや地図プログラム)に提供することができる。向きは音声または映像出力機器に出力されてもよい。
【0070】
図4Dは、磁力計データおよび角速度データを用いて方位を求めるための例示的な処理430のフローチャートである。便宜上、処理430を、処理430を実施するシステム(例えばシステム410)に関して説明する。
【0071】
システムはモバイル機器の向きを、磁力計データを用いて求めることができる(432)。磁力計データを用いて向きを求める方法には、図1に関して上述したような、オフセット補正済みの磁力計測定結果を用いて向きを求めることが含まれてもよい。
【0072】
システムは、磁力計データが不正確かも知れないという表示を受信することができる(434)。表示は、通知または、磁力計データの品質の判定を含んでよい。
【0073】
磁力計データの品質を判定するため、システムは基準グローバル座標系における推定磁場ベクトルを記憶装置に保存することができる。システムは、正確であると判定されている過去の(historical)磁力計データ(例えば、時刻kにおける磁力計測定ベクトルmk→)および、この正確な過去の磁力計データに時間的に対応する過去の角速度データ(例えば、時刻kにおけるモバイル機器の推定された姿勢Akの逆数)とを用いて、基準グローバル座標系における推定磁場ベクトルを生成することができる。
【0074】
現在の角速度データ(現在時刻iにおける、モバイル機器の現在推定姿勢Ai)および基準グローバル座標系における推定磁場ベクトルを用いて、モバイル機器は合成磁力計データを生成することができる。合成磁力計データは、時刻iにおける合成磁力計測定ベクトルmsi→を含んでよい。この合成磁力計データを用いて、システムはモバイル機器の向きを判定することができる。
【0075】
ある実施態様において、磁力計データが不正確かもしれないとの表示を受信する手順は、磁力計データのサンプル内の複数の磁気ベクトルの大きさを判定する手順と、これら複数の大きさの変化が閾値を満たすことを判定する手順を含むことができる。磁気ベクトルはサンプルウィンドウ内で測定された磁気ベクトル(例えば直近に測定されたn個の磁気ベクトル)を含むことができる。
【0076】
ある実施態様において、磁力計データが不正確かもしれないとの表示を受信する手順は、磁力計データのサンプル内の複数の磁気ベクトルの傾きを判定する手順と、これら複数の傾きの変化が閾値を満たすことを判定する手順を含むことができる。個々の傾きは、磁気ベクトルおよび局所重力加速度ベクトルとの間の角度に基づいて求めることができる。
【0077】
磁力計データが不正確かもしれないという表示を受信する手順(434)は、磁気干渉が発生したか発生するであろうことの表示を受信する手順を含むことができる。磁気干渉は、モバイル機器の、少なくともある閾値量の電流が流れる構成部品によって生成されうる。ある実施態様において、磁気干渉は、モバイル機器のスピーカー、カメラ、またはバイブレーターによって生成されうる。
【0078】
磁力計データが不正確かもしれないとの表示の受信に応答して、システムはモバイル機器の向きを角速度データを用いて判定する(436)ことができる。角速度データを用いてモバイル機器の向きを判定する手順は、合成磁力計データを用いてモバイル機器の向きを判定する手順を含むことができる。
【0079】
システムは、ある精度範囲内で磁力計データが正確であると判定することができる(438)。磁力計データがある精度範囲内で正確であると判定する手順は、合成磁力計データ(例えば、合成磁力計測定ベクトルmsi→)のベクトルと、磁力計データ(例えば、磁力計測定ベクトルmi→)のベクトルとの間の角度が、閾値を満たすかどうかを判定する手順を含むことができる。磁力計データが精度範囲内で正確であると判定されると、システムは磁力計データを用いたモバイル機器の向きを判定する(432)ように復帰することができる。磁力計データが精度範囲内で正確でないと判定される場合、システムは角速度を用いた向きの判定(436)を継続することができる。
【0080】
例示的な機器アーキテクチャ
図5は、図1〜3に示したセンサ較正システム100および方法を実施するための例示的な機器ハードウェアアーキテクチャのブロック図である。機器はメモリインタフェース502、1つ以上のデータプロセッサ、画像プロセッサおよび/またはプロセッサ504と、周辺インタフェース506とを含むことができる。メモリインタフェース502、1つ以上のプロセッサ504、および/または周辺インタフェース506は、個別部品であってもよいし、1つ以上の集積回路に統合されてもよい。機器の様々な構成要素は、例えば、1つ以上の通信バスまたは信号線によって接続されてよい。
【0081】
センサ、機器、サブシステムが、多数の機能を容易にするため、周辺インタフェース506に接続されてよい。例えば、角速度センサ510(例えばMEMSジャイロ)、磁力計センサ512である。地理的位置を提供するために、位置プロセッサ514(例えばGPS受信機)を周辺インタフェース506に接続することができる。モバイル機器の速度変化や移動方向の変化を判定するために使用可能なデータを提供するため、加速度計516もまた周辺インタフェース506に接続することができる。
【0082】
カメラシステム520および光学センサ522、例えば電荷結合素子(CCD)または相補型金属酸化物半導体(CMOS)光学センサを、写真やビデオクリップの記録のようなカメラ機能を補助するために用いてもよい。
【0083】
無線周波数受信機および送信機および/または光学(例えば赤外線)受信機および送信機を含むことができる1つ以上の無線通信サブシステム524を通じて、通信機能が補助されてもよい。通信サブシステム524の具体的な設計および実装は、モバイル機器が動作しようとする通信ネットワークに依存するものであってよい。例えば、モバイル機器はGSM(登録商標)ネットワーク、GPRSネットワーク、EDGEネットワーク、Wi-Fiネットワーク、およびブルートゥース(登録商標)ネットワークを通じて動作するように設計された通信サブシステム524を含むことができる。特に、無線通信サブシステム524は、モバイル機器が他の無線機器に対する基地局として構成されることを可能にするようなホスティングプロトコルを含むことができる。
【0084】
オーディオサブシステム526は、音声認識、音声反復、デジタルレコーディング、および電話通信機能のような音声を利用可能な機能を補助するために、スピーカー528およびマイク530に接続されてよい。
【0085】
I/Oサブシステム540は、タッチスクリーンコントローラ542および/または他の1以上の入力コントローラ544を含むことができる。タッチスクリーンコントローラ542はタッチスクリーン546やパッドに接続されてよい。タッチスクリーン546およびタッチスクリーンコントローラ542は、タッチスクリーン546と接触した1以上の点を判別するための、例えば、容量式、抵抗式、赤外線式、および表面弾性波技術といった複数の接触感知技術や、他の近接センサアレイまたは他の素子を用いて、接触および移動または損傷を検出することができる。
【0086】
他の1以上の入力コントローラ544が、ボタン、ロッカースイッチ、サムホイール、赤外線ポート、USBポート、および/またはスタイラスのようなポインティングデバイスの1つ以上のような他の入力/コントロール機器548に接続されてよい。1以上のボタン(不図示)は、スピーカー528および/またはマイク530のボリュームコントロールのためのアップ/ダウンボタンを含むことができる。
【0087】
ある実施態様において、あるボタンの第1の期間の押下が、タッチスクリーンまたはパッド546のロックを解除し、第1の期間よりも長い第2の期間の押下が、機器の電源をオンまたはオフしてもよい。ユーザが1以上のボタンの機能をカスタマイズすることができてもよい。タッチスクリーン546はまた、例えば、仮想またはソフトボタンおよび/またはキーボードを実現するために用いられてもよい。
【0088】
ある実施態様において、機器は、MP3、AAC、およびMPEGファイルのような記録された音声および/または映像ファイルを提示してもよい。ある実施態様において、機器はMP3プレーヤの機能を含んでもよい。
【0089】
メモリインタフェース502はメモリ550に接続されてよい。メモリ550は高速ランダムアクセスメモリおよび/または、1以上の磁気ディスク記憶装置、1以上の光学記憶装置、および/またはフラッシュメモリ(例えばNAND、NOR)のような不揮発性メモリを含んでよい。メモリ550は、ダーウィン、RTXC、LINUX(登録商標)、UNIX(登録商標)、OSX、WINDOWS(登録商標)、またはVxWorks(登録商標)のような組み込み型OSのようなオペレーティングシステム552を格納することができる。オペレーティングシステム552は、基本システムサービスを処理するための命令およびハードウェアに依存する処理を実行するための命令を含んでよい。ある実施態様において、オペレーティングシステム552はカーネル(例えばUNIXカーネル)を含んでもよい。
【0090】
メモリ550は、1以上の他の機器、1以上のコンピュータおよび/または1以上のサーバとの通信を補助するための通信命令554もまた格納してよい。メモリ550は、グラフィカルユーザインタフェース処理を補助するためのグラフィカルユーザインタフェース命令556、センサ関連の処理および機能を補助するためのセンサ処理命令558、電話関連の処理および機能を補助するための電話命令560、電子メッセージに関する処理および機能を補助するための電子メッセージ処理命令562、ウェブブラウズに関する処理および機能を補助するためのウェブブラウズ命令564、メディア処理関連処理および機能を補助するためのメディア処理命令566、GPSおよびナビゲーション関連処理および機能を補助するためのGPS/ナビゲーション命令568、カメラ関係の処理および機能を補助するためのカメラ命令570を含んでよい。メモリ550はまた、セキュリティ命令、ウェブビデオに関する処理および機能を補助するためのウェブビデオ命令、および/またはウェブショッピング関連処理および機能を補助するためのウェブショッピング命令のような、他のソフトウェア命令(図示せず)を格納してもよい。ある実施態様において、メディア処理命令566は、音声処理関連処理および機能と、映像処理関連処理および機能をそれぞれ補助するための音声処理命令と映像処理命令に分けられる。アクティベーションレコードおよび国際移動体装置識別子(IMEI)または同様のハードウェア識別子もまた、メモリ550に格納されてよい。メモリ550は磁力計データ572および1以上の推定磁場ベクトル574を含むことができる。
【0091】
上述の特定された命令および用途の各々は、上述した1以上の機能を実行するための一式の命令に対応してもよい。これらの命令は、個別のソフトウェアプログラム、手順、またはモジュールとして実装されなくてもよい。メモリ550はこれ以外の命令を含んでもよいし、より少ない命令を含んでもよい。さらに、モバイル機器の様々な機能は、1以上の信号処理および/または特定用途向け集積回路を含む、ハードウェアおよび/またはソフトウェアによって実施されてよい。
【0092】
説明した機能はデジタル電子回路で、コンピュータハードウェア、ファームウエア、ソフトウェアで、またはそれらの組み合わせで実施可能である。機能は、プログラム可能なプロセッサによって実行するために、情報キャリア、例えば装置が読み取り可能な記憶装置に有形物として実現されるコンピュータプログラム製品、および入力データを操作して出力を生成することによって上述の実施態様を実行するために命令のプログアムを実行するプログラム可能なプロセッサによって実行可能な方法のステップにおいて実施可能である。あるいは/さらに、プログラム命令は、例えば装置が生成する電気的、光学的、あるいは電磁的な信号のような人工的に生成される信号である伝播信号であって、プログラム可能なプロセッサによって実行するために適切な受信機装置に送信するために情報を符号化するために生成される信号に符号化されてよい。
【0093】
上述した機能は、データおよび命令を、データ記憶システム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスとの間で送受信する1つ以上のプログラム可能なプロセッサを含んだ、プログラム可能なシステムで実行可能な1つ以上のコンピュータプログラムに好適に実施可能である。コンピュータプログラムは、直接的または間接的にコンピュータで所定の動作を実行したり所定の結果を得るために用いることのできる一式の命令である。コンピュータプログラムは、コンパイル言語やインタプリタ言語を含むプログラミング言語(例えばオブジェクティブC、Java(登録商標))の任意の形態で記述することができ、スタンドアロンなプログラムや、モジュール、部品、サブルーチン、またはコンピュータ環境で用いるのに好適な他の単位を含む、任意の形態で配置されてよい。
【0094】
命令のプログラムの実行に好適なプロセッサは、一例として、任意の種類のコンピュータの、汎用および特定用途向けマイクロプロセッサの両方、および1つのプロセッサや複数のプロセッサまたはコアを含む。一般に、プロセッサは命令およびデータを読み出し専用メモリおよびランダムアクセスメモリの少なくとも一方から命令およびデータを受信するであろう。コンピュータの基本要素は、命令を実行するためのプロセッサと、命令およびデータを保存するための1つ以上のメモリである。一般に、コンピュータはさらに、内蔵ハードディスクおよびリムーバブルディスクのような磁気ディスク、光磁気ディスク、光ディスクなどを含む、1つ以上の大容量記憶装置を、含んだり、動作可能に接続してもよい。コンピュータプログラム命令およびデータを有形的に実現するための好適な記憶装置は、例えばEPROM、EEPROMおよびフラッシュメモリデバイスのような半導体メモリデバイス、内蔵ハードディスクやリムーバブルディスクのような磁気ディスク、光磁気ディスク、およびCD−ROMおよびDVD−ROMディスクを例とする、不揮発性メモリの任意の形態を含む。プロセッサおよびメモリは、複数のASIC(特定用途向け集積回路)を補助的に用いたり、ASICに組み込まれたりしてもよい。
【0095】
ユーザとのインタラクションを提供するため、情報をユーザに表示するための、CRT(陰極管)やLCD(液晶ディスプレイ)モニタのような表示デバイスおよび、ユーザがコンピュータに入力することを可能にする、キーボードおよび、マウスまたはトラックボールのようなポインティングデバイスを有するコンピュータ上で実施されてよい。
【0096】
機能はデータサーバのようなバックエンド要素を含むコンピュータシステム、アプリケーションサーバやインターネットサーバのようなミドルウェア要素を含むコンピュータシステム、またはグラフィカルユーザインタフェース、インターネットブラウザまたはその組み合わせを有するクライアントコンピュータのようなフロントエンド要素を含むコンピュータシステムで実施することができる。システムの構成要素は、通信ネットワークのような、デジタルデータ通信の任意の形態または媒体によって接続されてよい。通信ネットワークの例には、LAN、WAN、およびインターネットを形成するコンピュータおよびネットワークが含まれる。
【0097】
コンピュータシステムはクライアントおよびサーバを含むことができる。クライアントおよびサーバは通常、互いに離れており、典型的にはネットワークを通じてやりとりする。クライアントとサーバの関係は、それぞれのコンピュータで稼働するコンピュータプログラムによって発現し、クライアント−サーバ関係を互いに有する。
【0098】
上述した実施態様の1以上の機能およびステップはAPIを用いて実施されてもよい。APIは、サービスを提供し、データを提供し、あるいは動作および計算を実行する呼び出しアプリケーションと他のソフトウェアコード(例えばオペレーティングシステム、ライブラリルーチン、関数)との間でやりとりされる1以上のパラメータを定義することができる。
【0099】
APIは、API仕様ドキュメントに定義された呼び出し手法に基づくパラメータリストまたは他の構造を通じて1以上のパラメータを送信または受信するプログラムコード内の1つ以上のコールとして実施されてよい。パラメータは定数、鍵、データ構造、オブジェクト、オブジェクトクラス、変数、データタイプ、ポインタ、行列、リスト、または他のコールであってよい。APIコールおよびパラメータは任意のプログラミング言語で実施されてよい。プログラム言語は、APIをサポートする関数にアクセスするためにプログラマが用いるであろう、ボキャブラリおよび呼び出し手法を定義することができる。
【0100】
ある実施態様において、APIコールはアプリケーションに、アプリケーションを実行している機器の能力(入力能力、出力能力、処理能力、電力能力、通信能力など)をレポートすることができる。
【0101】
複数の実施態様について説明してきた。しかし、様々な変更を行いうることを理解すべきである。例えば、他の実施態様を形成するために、1以上の実施態様が組み合わせられても、削除されても、変更されても、補充されてもよい。さらに別の例として、図に示した論理フローは、所望の結果を得るために、図示したとおりの特定の順序や、シーケンシャルな順序で実行されなくてもよい。加えて、記載した手順について、他のステップが提供されてもよいし、ステップが削除されてもよく、記載したシステムについて、他の構成要素を追加したり、構成要素を除去してもよい。従って、他の実施形態もまた以下の請求項の範囲に含まれる。
図1
図2
図3
図4A
図4B
図4C
図4D
図5