(57)【特許請求の範囲】
【請求項１】
コンピューティングデバイスに対する方位情報を取得するための方法であって、
重力ベクトルフィルタで加速度計データを受信するステップであって、前記加速度計データは加速度計からのセンサ出力を含む、ステップと、
磁気ベクトルフィルタで磁力計データを受信するステップであって、前記磁力計データは磁力計からのセンサ出力を含む、ステップと、
前記磁気ベクトルフィルタおよび前記重力ベクトルフィルタでジャイロスコープデータを受信するステップであって、前記ジャイロスコープデータはジャイロスコープからのセンサ出力を含む、ステップと、
前記磁気ベクトルフィルタで前記磁力計データおよび前記ジャイロスコープデータを使用することによって磁気ベクトルを判定するステップと、
前記磁力計データおよび前記ジャイロスコープデータに基づき、前記磁気ベクトルフィルタにおける磁場の検出された変化が、磁気異常であるかどうかを判定するステップであって、前記検出された変化が磁気異常であるかどうかを前記判定するステップは、前記ジャイロスコープデータの変化に対応する許容可能な磁気の変化の閾値レベルと前記磁力計からの前記センサ出力から得た磁場の変化を表すデータとを比較するステップを含む、ステップと、
前記磁場の前記検出された変化が前記磁気異常であると判定したことに応答して、前記磁場の前記検出された変化に対応する前記磁力計から受信されたフィルタ入力を無視するか、または前記磁気ベクトルフィルタに関連付けられているウィンドウサイズを大きくするステップと、
前記重力ベクトルフィルタにおいて前記加速度計データおよび前記ジャイロスコープデータを使用することによって重力ベクトルを判定するステップとを含み、
前記磁気ベクトルと前記加速度計データ、または前記重力ベクトルと前記磁力計データが、前記コンピューティングデバイスの方位を判定するために使用され、
前記磁気ベクトルフィルタのフィルタパラメータおよび前記重力ベクトルフィルタのフィルタパラメータが、(1)前記磁力計データおよび前記ジャイロスコープデータと(2)前記加速度計データおよび前記ジャイロスコープデータとにそれぞれ基づいて、動的にかつ独立して調整される、方法。
【請求項２】
前記重力ベクトルフィルタおよび前記磁気ベクトルフィルタのうちの少なくとも一方は、適応フィルタを使用し、前記適応フィルタの少なくとも1つのフィルタパラメータは、動的に調整可能である請求項1に記載の方法。
【請求項３】
前記少なくとも1つのフィルタパラメータは、前記重力ベクトルフィルタに関連付けられ、前記少なくとも1つのフィルタパラメータは信号ノイズ、測定誤差、センサ較正誤差、または直線加速度のうちの1つまたは複数を含む請求項2に記載の方法。
【請求項４】
前記少なくとも1つのフィルタパラメータは、前記磁気ベクトルフィルタに関連付けられ、前記少なくとも1つのフィルタパラメータはセンサ較正誤差または過渡磁場のうちの1つまたは複数を含む請求項2に記載の方法。
【請求項５】
前記適応フィルタは、カルマンフィルタを含む請求項2に記載の方法。
【請求項６】
前記磁気ベクトルフィルタは、前記重力ベクトルフィルタから分離している請求項1に記載の方法。
【請求項７】
拡張適応フィルタをさらに含み、前記拡張適応フィルタは入力として前記ジャイロスコープデータおよび前記加速度計データとともに前記コンピューティングデバイスに対する前記重力ベクトルの計算された座標を受け取る請求項1に記載の方法。
【請求項８】
前記磁場の前記変化が検出された期間に前記ジャイロスコープが変化を測定しなかったと判定したことに応答して、前記磁場の前記検出された変化が前記磁気異常であると判定するステップをさらに含む請求項1に記載の方法。
【請求項９】
前記磁場の前記検出された変化は、前記ジャイロスコープからの前記受信されたセンサ出力が前記磁場の検出された変化に相関している場合に前記磁気異常でないと判定され、
前記磁場の前記検出された変化は、前記ジャイロスコープからの前記受信されたセンサ出力が前記磁場の前記検出された変化に相関していない場合に前記磁気異常であると判定される請求項1に記載の方法。
【請求項１０】
方位を判定するためのコンピューティングデバイスであって、
磁気ベクトルフィルタおよび重力ベクトルフィルタに結合され、
前記重力ベクトルフィルタで加速度計データを受信し、前記加速度計データは加速度計からのセンサ出力を含み、
前記磁気ベクトルフィルタで磁力計データを受信し、前記磁力計データは磁力計からのセンサ出力を含み、
前記磁気ベクトルフィルタおよび前記重力ベクトルフィルタでジャイロスコープデータを受信し、前記ジャイロスコープデータはジャイロスコープからのセンサ出力を含むように構成された受信機を備え、
前記磁気ベクトルフィルタは
前記磁気ベクトルフィルタで前記磁力計データおよび前記ジャイロスコープデータを使用することによって磁気ベクトルを判定し、
前記磁力計データおよび前記ジャイロスコープデータに基づき、前記磁気ベクトルフィルタにおける磁場の検出された変化が、磁気異常であるかどうかを判定し、前記検出された変化が磁気異常であるかどうかの前記判定は、前記ジャイロスコープデータの変化に対応する許容可能な磁気の変化の閾値レベルと前記磁力計からの前記センサ出力から得た磁場の変化を表すデータとを比較することを含み、
前記磁場の前記検出された変化が前記磁気異常であると判定したことに応答して、前記磁場の前記検出された変化に対応する前記磁力計から受信されたフィルタ入力を無視するか、または前記磁気ベクトルフィルタに関連付けられているウィンドウサイズを大きくすることができるように構成され、
前記重力ベクトルフィルタは
前記重力ベクトルフィルタで前記加速度計データおよび前記ジャイロスコープデータを使用することによって重力ベクトルを判定するように構成され、
前記磁気ベクトルと前記加速度計データ、または前記重力ベクトルと前記磁力計データが、前記コンピューティングデバイスの方位を判定するために使用され、
前記磁気ベクトルフィルタのフィルタパラメータおよび前記重力ベクトルフィルタのフィルタパラメータが、(1)前記磁力計データおよび前記ジャイロスコープデータと(2)前記加速度計データおよび前記ジャイロスコープデータとにそれぞれ基づいて、動的にかつ独立して調整されるコンピューティングデバイス。
【請求項１１】
前記重力ベクトルフィルタおよび前記磁気ベクトルフィルタのうちの少なくとも一方は、適応フィルタを使用し、前記適応フィルタの少なくとも1つのフィルタパラメータは、動的に調整可能である請求項10に記載のコンピューティングデバイス。
【請求項１２】
前記少なくとも1つのフィルタパラメータは、前記重力ベクトルフィルタに関連付けられ、前記少なくとも1つのフィルタパラメータは信号ノイズ、測定誤差、センサ較正誤差、または直線加速度のうちの1つまたは複数を含む請求項11に記載のコンピューティングデバイス。
【請求項１３】
前記少なくとも1つのフィルタパラメータは、前記磁気ベクトルフィルタに関連付けられ、前記少なくとも1つのフィルタパラメータはセンサ較正誤差または過渡磁場のうちの1つまたは複数を含む請求項11に記載のコンピューティングデバイス。
【請求項１４】
前記適応フィルタは、カルマンフィルタを含む請求項11に記載のコンピューティングデバイス。
【請求項１５】
前記磁気ベクトルフィルタは、前記重力ベクトルフィルタから分離している請求項10に記載のコンピューティングデバイス。
【請求項１６】
拡張適応フィルタをさらに備え、前記拡張適応フィルタは入力として前記ジャイロスコープデータおよび前記加速度計データとともに前記コンピューティングデバイスに対する前記重力ベクトルの計算された座標を受け取る請求項10に記載のコンピューティングデバイス。
【請求項１７】
前記磁気ベクトルフィルタは、前記磁場の前記変化が検出された期間に前記ジャイロスコープが変化を測定しなかったと判定したことに応答して、前記磁場の前記検出された変化が前記磁気異常であると判定するようにさらに構成されている請求項10に記載のコンピューティングデバイス。
【請求項１８】
前記磁場の前記検出された変化は、前記ジャイロスコープからの前記受信されたセンサ出力が前記磁場の検出された変化に相関している場合に前記磁気異常でないと前記磁気ベクトルフィルタによって判定され、
前記磁場の前記検出された変化は、前記ジャイロスコープからの前記受信されたセンサ出力が前記磁場の前記検出された変化に相関していない場合に前記磁気異常であると前記磁気ベクトルフィルタによって判定される請求項10に記載のコンピューティングデバイス。
【請求項１９】
非一時的なコンピュータ可読記憶媒体であって、前記非一時的なコンピュータ可読記憶媒体はプロセッサによって実行可能な命令を備え、前記命令は
重力ベクトルフィルタで加速度計データを受信する命令であって、前記加速度計データは加速度計からのセンサ出力を含む、命令と、
磁気ベクトルフィルタで磁力計データを受信する命令であって、前記磁力計データは磁力計からのセンサ出力を含む、命令と、
前記磁気ベクトルフィルタおよび前記重力ベクトルフィルタでジャイロスコープデータを受信する命令であって、前記ジャイロスコープデータはジャイロスコープからのセンサ出力を含む、命令と、
前記磁気ベクトルフィルタで前記磁力計データおよび前記ジャイロスコープデータを使用することによって磁気ベクトルを判定する命令と、
前記磁力計データおよび前記ジャイロスコープデータに基づき、前記磁気ベクトルフィルタにおける磁場の検出された変化が、磁気異常であるかどうかを判定する命令であって、前記検出された変化が磁気異常であるかどうかの前記判定は、前記ジャイロスコープデータの変化に対応する許容可能な磁気の変化の閾値レベルと前記磁力計からの前記センサ出力から得た磁場の変化を表すデータとを比較することを含む、命令と、
前記磁場の前記検出された変化が前記磁気異常であると判定したことに応答して、前記磁場の前記検出された変化に対応する前記磁力計から受信されたフィルタ入力を無視するか、または前記磁気ベクトルフィルタに関連付けられているウィンドウサイズを大きくする命令と、
前記重力ベクトルフィルタにおいて前記加速度計データおよび前記ジャイロスコープデータを使用することによって重力ベクトルを判定する命令と、
を含み、
前記磁気ベクトルと前記加速度計データ、または前記重力ベクトルと前記磁力計データが、コンピューティングデバイスの方位を判定するために使用され、
前記磁気ベクトルフィルタのフィルタパラメータおよび前記重力ベクトルフィルタのフィルタパラメータが、(1)前記磁力計データおよび前記ジャイロスコープデータと(2)前記加速度計データおよび前記ジャイロスコープデータとにそれぞれ基づいて、動的にかつ独立して調整される非一時的なコンピュータ可読記憶媒体。
【請求項２０】
装置であって、
重力ベクトルフィルタで加速度計データを受信するための手段であって、前記加速度計データは加速度計からのセンサ出力を含む、手段と、
磁気ベクトルフィルタで磁力計データを受信するための手段であって、前記磁力計データは磁力計からのセンサ出力を含む、手段と、
前記磁気ベクトルフィルタおよび前記重力ベクトルフィルタでジャイロスコープデータを受信するための手段であって、前記ジャイロスコープデータはジャイロスコープからのセンサ出力を含む、手段と、
前記磁気ベクトルフィルタで前記磁力計データおよび前記ジャイロスコープデータを使用することによって磁気ベクトルを判定するための手段と、
前記磁力計データおよび前記ジャイロスコープデータに基づき、前記磁気ベクトルフィルタにおける磁場の検出された変化が、磁気異常であるかどうかを判定する手段であって、前記検出された変化が磁気異常であるかどうかの前記判定は、前記ジャイロスコープデータの変化に対応する許容可能な磁気の変化の閾値レベルと前記磁力計からの前記センサ出力から得た磁場の変化を表すデータとを比較することを含む、手段と、
前記磁場の前記検出された変化が前記磁気異常であると判定したことに応答して、前記磁場の前記検出された変化に対応する前記磁力計から受信されたフィルタ入力を無視する手段、または前記磁気ベクトルフィルタに関連付けられているウィンドウサイズを大きくする手段と、
前記重力ベクトルフィルタにおいて前記加速度計データおよび前記ジャイロスコープデータを使用することによって重力ベクトルを判定するための手段とを備え、
前記磁気ベクトルと前記加速度計データ、または前記重力ベクトルと前記磁力計データが、前記装置の方位を判定するために使用され、
前記磁気ベクトルフィルタのフィルタパラメータおよび前記重力ベクトルフィルタのフィルタパラメータが、(1)前記磁力計データおよび前記ジャイロスコープデータと(2)前記加速度計データおよび前記ジャイロスコープデータとにそれぞれ基づいて、動的にかつ独立して調整される装置。
【請求項２１】
前記重力ベクトルフィルタおよび前記磁気ベクトルフィルタのうちの少なくとも一方は、適応フィルタを使用し、前記適応フィルタの少なくとも1つのフィルタパラメータは、動的に調整可能である請求項20に記載の装置。
【請求項２２】
前記磁場の前記検出された変化は、前記ジャイロスコープからの前記受信されたセンサ出力が前記磁場の検出された変化に相関している場合に前記磁気異常でないと判定され、
前記磁場の前記検出された変化は、前記ジャイロスコープからの前記受信されたセンサ出力が前記磁場の前記検出された変化に相関していない場合に前記磁気異常であると判定される請求項20に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本特許出願は、2011年11月1日に出願した米国仮特許出願第61/554,423号、名称「SYSTEM AND METHOD FOR DETERMINING GRAVITY, LINEAR ACCELERATION, AND ROTATION VECTOR FOR A MOBILE DEVICE」、2011年11月11日に出願した米国仮特許出願第61/558,994号、名称「GYROSCOPE-AIDED MAGNETIC ANOMALY MITIGATION」、および2011年11月11日に出願した米国仮特許出願第61/558,966号、名称「GRAVITY VECTOR BY FUSING ACCELEROMETER AND GYROSCOPE USING A KALMAN FILTER」、および2012年10月12日に出願した米国非仮特許出願第13/651,343号、名称「SYSTEM AND METHOD FOR IMPROVING ORIENTATION DATA」、および2012年10月12日に出願した米国非仮特許出願第13/651,350号、名称「SYSTEM AND METHOD FOR IMPROVING ORIENTATION DATA」、および2012年10月12日に出願した米国非仮特許出願第13/651,355号、名称「SYSTEM AND METHOD FOR IMPROVING ORIENTATION DATA」の利益を主張するものであり、これらはすべて参照により本明細書に組み込まれている。
【０００２】
本開示の態様は、コンピューティング技術に関係する。特に、本開示の態様は、方位データを改善するためのシステム、方法、装置、およびコンピュータ可読媒体などの、モバイルコンピューティングデバイス技術に関係する。
【背景技術】
【０００３】
スマートフォン、タブレットコンピュータ、携帯情報端末(PDA)、および他のデバイスなどの、コンピューティングデバイスが、タッチスクリーン、加速度計、磁力計、ジャイロスコープ、カメラ、近接センサ、マイクロフォン、気圧計、および/または運動と方位および/または他の感知される状態をユーザ入力の一形態としてこれらのデバイスがキャプチャすることを可能にし得る他のセンサを備えることが多くなってきている。デバイス用のアプリケーションの開発者およびユーザは、デバイスに関連付けられている運動およびデバイス方位を利用する新しい、新規性のある方法を探し求めている。ありとあらゆるセンサが、大半のデバイスに当たり前のものになっている。
【０００４】
加速度計、ジャイロスコープ、磁力計などのセンサは、デバイスの運動および方位の判定を補助する。加速度計は、重力を含む加速力を測定する。ジャイロスコープは、たとえば、角運動量保存の法則に基づきデバイスの相対的方位を測定する。磁力計は、磁場の方向と強さを測定するために使用される器具である。これらのセンサを融合することで、デバイスの運動および方位の滑らかで、正確な特徴付けを行うことができる。
【０００５】
デバイスにおいて、ハードウェア、ファームウェア、およびソフトウェアのレベルで、これらのセンサの結果を改善するために様々なセンサ融合技術が使用される。センサ融合は、センサデータまたは本質的に異なるソースからのセンサデータから導出されたデータを、結果として得られる方位情報がこれらのソースが個別に使用されたときに可能な場合と比べてある意味で正確であるか、完全であるか、または信頼性を有するように組み合わせることである。
【０００６】
センサ入力を融合することで、デバイスの運動および方位を判定するために精度を損なうことなくデバイスシステムの電力と時間の効率を高めるための固有の一組の機会が得られる。しかし、センサ入力を融合すると、システム統合に対する固有の一組の難題が生じ、いくつかの改善に制限ももたらされ得る。たとえば、センサは、他の要素またはシステムによって予想されるか、または利用されるものと異なるフォーマットで情報を提供し得る。たとえば、いくつかのオペレーティングシステム、アプリケーション、および/または他の形態のハードウェアでは、たとえば、標準化することを目的として、センサからの特定のフォーマットの測定を入力として利用することができる。したがって、センサデータまたは測定の速度および精度を高めることが有益であるだけでなく、そのようなデータまたは測定をデバイスの上位層によって消費可能な適切なフォーマットでそのようなデータまたは測定を生成することも有益である。
【０００７】
さらに、カメラなどの多くのデバイスは、カメラ画像における遠近法補正などのアプリケーションを使用できるようにするためにセンサからの素早い応答を予期している。そのようなアプリケーションは、高精度要求条件とともに厳しい遅延要件を有する。ノイズを除去するために使用される知られているフィルタは、性能が低く、センサの動作環境内の変化するノイズに素早く適応できない静的一次フィルタを備え得る。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本開示の態様は、方位データを導出するより使いやすく、効果的な方法を提供する。
【課題を解決するための手段】
【０００９】
センサに基づきデバイス内の重力ベクトル、磁気ベクトル、および/または回転ベクトルを使用してデバイスの方位を判定するための電力効率の良いシステムに関する技術が提供される。センサとして、限定はしないが、慣性センサおよびMEMSベースのセンサが挙げられる。本発明のいくつかの実施形態では、加速度計、磁力計、およびジャイロスコープなどの慣性センサが使用される。さらに、節電をし、精度を高め、広く使用されているオペレーティングシステムのフレームワーク(Google androidなど)の出力を再フォーマットしながら重力ベクトル、および磁気ベクトルの判定を高速化することに関する技術も提供される。
【００１０】
本発明の実施形態では、単一のフィルタの使用の代わりに、ジャイロスコープと加速度計(重力ベクトルフィルタ)および磁力計(磁気ベクトルフィルタ)の独立したフィルタとの併用について説明している。加速度計および磁力計からの入力を分離することによって、本発明の実施形態では、複数のフィルタのうちの1つまたは複数のフィルタの時定数、ゲイン、および/またはウィンドウの調整を可能にする動的フィルタまたは適応フィルタを使用することができ、これにより、慣性センサおよび他のタイプのセンサから結果をより高速に、また正確に得ることができる。それに加えて、デバイスが静止しているときに、ベクトル判定のためにセンサによって測定結果が取り込まれ、および/またはジャイロスコープが低電力状態に移行し得る。本発明の態様では、非正規化重力ベクトルを使用することによってデバイスの直線加速度を判定する精度を高め、アプリケーション層が四元数システム(quaternion system)の第4の成分を導出するためのメカニズムを実現し、センサ間のタイムスタンプを同期させるための技術についても取りあげる。
【００１１】
コンピューティングデバイスに対する方位判定とともに使用する情報を取得するための例示的な方法は、磁気ベクトルフィルタで磁力計データを受信するステップであって、磁力計データは磁力計からのセンサ出力を含むことができる、ステップと、磁気ベクトルフィルタでジャイロスコープデータを受信するステップであって、ジャイロスコープデータはジャイロスコープからのセンサ出力を含むことができる、ステップとを含むものとしてよい。さらに、この方法は、磁気ベクトルフィルタで磁力計データおよびジャイロスコープデータを使用することによって磁気ベクトルを判定するステップを含むことができる。磁気ベクトルフィルタは、方位判定とともに使用する加速度計データとは無関係に磁気ベクトルを判定することができるものとしてよい。
【００１２】
コンピューティングデバイスに対する方位判定とともに使用する情報を取得するための例示的な方法は、重力ベクトルフィルタで加速度計データを受信するステップであって、加速度計データは加速度計からのセンサ出力を含む、ステップと、重力ベクトルフィルタでジャイロスコープデータを受信するステップとをさらに含み得る。さらに、この方法は、重力ベクトルフィルタにおいて加速度計データおよびジャイロスコープデータを使用することによって重力ベクトルを判定するステップであって、重力ベクトルはコンピューティングデバイスの方位を判定するために使用される、ステップを含み得る。
【００１３】
一実施形態では、重力ベクトルフィルタと磁気ベクトルフィルタのうちの少なくとも1つは、適応フィルタを使用し、適応フィルタの少なくとも1つのフィルタパラメータは、動的に調整可能である。一実装において、適応フィルタは、カルマンフィルタとすることができる。一態様では、重力ベクトルフィルタに関連付けられている少なくとも1つのフィルタパラメータは、信号ノイズ、測定誤差、センサ較正誤差、または直線加速度のうちの1つまたは複数を含み得る。別の態様では、磁気ベクトルフィルタに関連付けられている少なくとも1つのフィルタパラメータは、センサ較正誤差または過渡磁場のうちの1つまたは複数を含み得る。磁気ベクトルフィルタは、重力ベクトルフィルタから分離しているものとしてよい。いくつかの実施形態では、拡張適応フィルタが実装され、拡張適応フィルタは入力としてジャイロスコープデータおよび加速度計データとともにコンピューティングデバイスに対する重力ベクトルの計算された座標を受け取る。
【００１４】
いくつかの実施形態では、デバイスのコンポーネントによって実行される方法は、磁力計データおよびジャイロスコープデータに基づき、磁気ベクトルフィルタにおける磁場の検出された変化が、磁気異常であるかどうかを判定する。一実装において、磁場の変化が検出された期間にジャイロスコープが変化を測定しなかったと判定したことに応答して、この方法は、磁場の検出された変化が磁気異常であると判定する。磁場の検出された変化は、ジャイロスコープから受信されたセンサ入力が磁場の検出された変化に相関している場合に磁気異常でないと判定され、磁場の検出された変化は、ジャイロスコープから受信されたセンサ入力が磁場の検出された変化に相関していない場合に磁気異常であると判定され得る。いくつかの実装では、磁場の検出された変化が磁気異常であると判定したことに応答して、この方法は、磁場の検出された変化に対応する磁力計から受信されたフィルタ入力を無視する。他の実装では、磁場の検出された変化が磁気異常であると判定したことに応答して、この方法は、磁気ベクトルフィルタに関連付けられているウィンドウサイズを大きくする。一実装において、検出された変化が磁気異常であると判定するステップは、磁力計データを閾値と比較するステップであって、閾値は、ジャイロスコープデータに少なくとも一部は基づき得る、ステップを含むことができる。
【００１５】
方位を判定するための例示的なコンピューティングデバイスは、磁気ベクトルフィルタに結合され、磁気ベクトルフィルタで磁力計データを受信するように構成された受信機を備えることができ、磁力計データは、磁力計、および磁気ベクトルフィルタでジャイロスコープデータを受信するように構成された同じまたは異なる受信機からのセンサ出力を含むことができ、ジャイロスコープデータはジャイロスコープからのセンサ出力を含むことができる。さらに、磁気ベクトルフィルタなどの例示的なコンピューティングデバイスのコンポーネントは、磁気ベクトルフィルタにおいて磁力計データおよびジャイロスコープデータを使用することによって磁気ベクトルを判定することができる。磁気ベクトルフィルタは、方位判定とともに使用する加速度計データとは無関係に磁気ベクトルを判定することができるものとしてよい。
【００１６】
方位を判定するための例示的なコンピューティングデバイスは、重力ベクトルフィルタで加速度データを受信するため重力ベクトルフィルタに結合されている受信機も備えることができ、加速度計データは、加速度計、および重力ベクトルフィルタでジャイロスコープデータを受信するための同じまたは異なる受信機からのセンサ出力を含む。さらに、重力ベクトルフィルタなどの例示的なコンピューティングデバイスのコンポーネントは、重力ベクトルフィルタにおいて加速度計データおよびジャイロスコープデータを使用することによって重力ベクトルを判定することができ、重力ベクトルはコンピューティングデバイスの方位を判定するために使用される。
【００１７】
コンピューティングデバイスの一実施形態において、重力ベクトルフィルタと磁気ベクトルフィルタのうちの少なくとも1つは、適応フィルタを使用し、適応フィルタの少なくとも1つのフィルタパラメータは、動的に調整可能である。一実装において、適応フィルタは、カルマンフィルタとすることができる。一態様では、重力ベクトルフィルタに関連付けられている少なくとも1つのフィルタパラメータは、信号ノイズ、測定誤差、センサ較正誤差、または直線加速度のうちの1つまたは複数を含み得る。別の態様では、磁気ベクトルフィルタに関連付けられている少なくとも1つのフィルタパラメータは、センサ較正誤差または過渡磁場のうちの1つまたは複数を含み得る。磁気ベクトルフィルタは、重力ベクトルフィルタから分離しているものとしてよい。いくつかの実施形態では、拡張適応フィルタが実装され、拡張適応フィルタは入力としてジャイロスコープデータおよび加速度計データとともにコンピューティングデバイスに対する重力ベクトルの計算された座標を受信する。
【００１８】
いくつかの実施形態では、デバイスのコンポーネントは、磁力計データおよびジャイロスコープデータに基づき、磁気ベクトルフィルタにおける磁場の検出された変化が、磁気異常であるかどうかを判定する。一実装において、磁場の変化が検出された期間にジャイロスコープが変化を測定しなかったと判定したことに応答して、コンピューティングデバイスは、磁場の検出された変化が磁気異常であると判定する。磁場の検出された変化は、ジャイロスコープから受信されたセンサ入力が磁場の検出された変化に相関している場合に磁気異常でないと判定され、磁場の検出された変化は、ジャイロスコープから受信されたセンサ入力が磁場の検出された変化に相関していない場合に磁気異常であると判定され得る。いくつかの実装では、磁場の検出された変化が磁気異常であると判定したことに応答して、コンピューティングデバイスのコンポーネントは、磁場の検出された変化に対応する磁力計から受信されたフィルタ入力を無視する。他の実装では、磁場の検出された変化が磁気異常であると判定したことに応答して、コンピューティングデバイスのコンポーネントは、磁気ベクトルフィルタに関連付けられているウィンドウサイズを大きくする。一実装において、検出された変化が磁気異常であると判定するステップは、磁力計データを閾値と比較するステップであって、閾値は、ジャイロスコープデータに少なくとも一部は基づき得る、ステップを含むことができる。
【００１９】
例示的な非一時的コンピュータ可読記憶媒体は、プロセッサによって実行可能な命令を含むことができ、これらの命令は磁気ベクトルフィルタで磁力計データを受信するための命令であって、磁力計データは磁力計からのセンサ出力を含む、命令と、磁気ベクトルフィルタでジャイロスコープデータを受信するための命令であって、ジャイロスコープデータはジャイロスコープからのセンサ出力を含む、命令と、磁気ベクトルフィルタで磁力計データおよびジャイロスコープデータを使用することによって磁気ベクトルを判定するための命令であって、磁気ベクトルフィルタは方位判定とともに使用する加速度計データとは無関係に磁気ベクトルを判定することができる、命令とを含む。
【００２０】
例示的な非一時的コンピュータ可読記憶媒体は、磁力計データおよびジャイロスコープデータに基づき、磁気ベクトルフィルタにおける磁場の検出された変化が、磁気異常であるかどうかを判定するためプロセッサによって実行可能な命令をさらに含むことができる。一実装において、磁場の検出された変化は、ジャイロスコープから受信されたセンサ入力が磁場の検出された変化に相関している場合に磁気異常でないと判定され、磁場の検出された変化は、ジャイロスコープから受信されたセンサ入力が磁場の検出された変化に相関していない場合に磁気異常であると判定され得る。例示的な非一時的コンピュータ可読記憶媒体は、磁場の検出された変化が磁気異常であると判定したことに応答して、磁場の検出された変化に対応する磁力計から受信されたフィルタ入力を無視し、および/または磁気ベクトルフィルタに関連付けられているウィンドウサイズを大きくするためプロセッサによって実行可能な命令をさらに含むことができる。
【００２１】
上で説明されている別の、または同じ例示的な非一時的コンピュータ可読記憶媒体は、プロセッサによって実行可能な命令を含むことができ、これらの命令は重力ベクトルフィルタで加速度計データを受信するための命令であって、加速度計データは加速度計からのセンサ出力を含む、命令と、重力ベクトルフィルタでジャイロスコープデータを受信するための命令と、重力ベクトルフィルタにおいて加速度計データおよびジャイロスコープデータを使用することによって重力ベクトルを判定するための命令であって、重力ベクトルはコンピューティングデバイスの方位を判定するために使用される、命令とを含む。
【００２２】
一実装において、重力ベクトルフィルタおよび磁気ベクトルフィルタは、適応フィルタを使用し、適応フィルタの少なくとも1つのフィルタパラメータは、動的に調整可能である。
【００２３】
例示的な装置は、磁気ベクトルフィルタで磁力計データを受信するための手段であって、磁力計データは磁力計からのセンサ出力を含む、手段と、磁気ベクトルフィルタでジャイロスコープデータを受信するための手段であって、ジャイロスコープデータはジャイロスコープからのセンサ出力を含む、手段と、磁気ベクトルフィルタで磁力計データおよびジャイロスコープデータを使用することによって磁気ベクトルを判定するための手段であって、磁気ベクトルフィルタは方位判定とともに使用する加速度計データとは無関係に磁気ベクトルを判定することができる、手段とを備えることができる。
【００２４】
例示的な装置は、磁力計データおよびジャイロスコープデータに基づき、磁気ベクトルフィルタにおける磁場の検出された変化が、磁気異常であるかどうかを判定するための手段をさらに備えることができる。一実装において、磁場の検出された変化は、ジャイロスコープから受信されたセンサ入力が磁場の検出された変化に相関している場合に磁気異常でないと判定され、磁場の検出された変化は、ジャイロスコープから受信されたセンサ入力が磁場の検出された変化に相関していない場合に磁気異常であると判定され得る。例示的な装置は、磁場の検出された変化に対応する磁力計から受信されたフィルタ入力を無視するための手段、および/または磁気ベクトルフィルタに関連付けられているウィンドウサイズを大きくするための手段とをさらに備えることができ、これらの手段は磁場の検出された変化が磁気異常であると判定したことに応答して動作する。
【００２５】
上で説明されている別のまたは同じ例示的な装置は、重力ベクトルフィルタで加速度計データを受信するための手段であって、加速度計データは加速度計からのセンサ出力を含む、手段と、重力ベクトルフィルタでジャイロスコープデータを受信するための手段と、重力ベクトルフィルタにおいて加速度計データおよびジャイロスコープデータを使用することによって重力ベクトルを判定するための手段であって、重力ベクトルはコンピューティングデバイスの方位を判定するために使用される、手段とを備えることができる。
【００２６】
一実装において、重力ベクトルフィルタおよび磁気ベクトルフィルタは、適応フィルタを使用し、適応フィルタの少なくとも1つのフィルタパラメータは、動的に調整可能である。
【００２７】
本明細書で説明されている一実施形態は、デバイスを含む。このデバイスは、加速度計およびジャイロスコープからの入力をフィルタリングするように構成された重力フィルタと、磁力計およびジャイロスコープからの入力をフィルタリングするように構成された磁気フィルタとを備える。いくつかの実施形態では、重力フィルタは、磁気フィルタから分離している。いくつかの実施形態では、重力フィルタと磁気フィルタのうちの少なくとも1つは、適応フィルタを使用し、適応フィルタの少なくとも1つのフィルタパラメータは、動的に調整可能である。いくつかの実施形態では、重力フィルタが受け取る入力の送り元であるジャイロスコープは、磁気フィルタが受け取る入力の送り元であるジャイロスコープである。上記の実施形態のうちのいくつかにおいて、重力フィルタは、重力ベクトルフィルタを含み、および/または磁気フィルタは、磁気ベクトルフィルタを含む。
【００２８】
本明細書で説明されている一実施形態は、磁気異常を判定するための方法を含む。この方法は、磁気ベクトルフィルタで磁力計データを受信するステップと、磁気ベクトルフィルタでジャイロスコープデータを受信するステップと、磁力計データおよびジャイロスコープデータに基づき、磁気ベクトルフィルタにおける磁場の検出された変化が、磁気異常を含むかどうかを判定するステップとを含む。いくつかの実施形態では、磁力計データは、磁力計からの測定結果または他の情報出力を含む。いくつかの実施形態では、ジャイロスコープデータは、ジャイロスコープからの測定結果または他の情報出力を含む。いくつかの実施形態では、この方法は、磁場の変化が検出された期間にジャイロスコープが変化を測定しなかったとときに検出された変化が磁気異常であると判定するステップを含む。いくつかの実施形態では、この方法は、検出された変化が磁気異常であると判定されたときに磁場の検出された変化に対応する磁力計から受信されたフィルタ入力を無視または軽減するステップを含む。いくつかの実施形態では、この方法は、検出された変化が磁気異常であると判定されたときに磁力計からの入力に関連付けられているウィンドウサイズを大きくするステップを含む。
【００２９】
コンピューティングデバイスに結合されている第1のセンサに関連付けられているデータをフィルタリングするための例示的な方法は、第1のセンサから信号を受信するステップと、信号からの複数の信号パラメータのうちの第1の信号パラメータの変動性の変化を検出するステップと、第1の信号パラメータの変動性における検出された変化に少なくとも一部は基づき、信号からの第2の信号パラメータをフィルタリングするために使用されるフィルタの少なくとも1つのフィルタパラメータを調整するステップとを含むことができる。このフィルタは、適応フィルタであってよく、適応フィルタの少なくとも1つのフィルタパラメータは、動的に調整可能であるものとしてよい。一実装において、適応フィルタは、カルマンフィルタである。一態様では、フィルタの少なくとも1つのフィルタパラメータは、フィルタに対するウィンドウサイズを含むものとしてよく、フィルタに対するウィンドウサイズは、第1の信号パラメータの変動性に正比例する。別の態様では、少なくとも1つのフィルタパラメータは、フィルタに対するゲインを含むものとしてよく、フィルタに対するゲインは、第1の信号パラメータの変動性に反比例する。
【００３０】
一実装において、第1のセンサは加速度計であり、第2の信号パラメータは重力ベクトルであり、第1の信号パラメータは重力ベクトル以外の信号パラメータとすることができる。第1の信号パラメータは、デバイスの信号ノイズ、測定誤差、センサ較正誤差、または直線加速度のうちの1つまたは複数であってよい。別の実装において、第1のセンサは磁力計であり、第2の信号パラメータは磁気ベクトルであり、第1の信号パラメータは磁気ベクトル以外の信号パラメータとすることができる。第1の信号パラメータは、信号ノイズ、センサ較正誤差、または過渡磁場のうちの1つまたは複数を含み得る。
【００３１】
一実施形態では、この方法による第1の信号パラメータの変動性の変化を検出するステップは、デバイスが実質的静止状態に遷移したと判定するステップを含む。別の実施形態では、この方法は、第2のセンサを使用して、デバイスが実質的静止状態に遷移したと判定したことに応答して、第1のセンサを低電力状態に遷移させるステップをさらに含む。一実施形態では、第1のセンサはジャイロスコープまたは/および磁力計であり、第2のセンサは加速度計であるものとしてよい。一実装において、低電力状態に遷移するステップは、第1のセンサのスイッチオフまたはデューティサイクリングを行うステップを含み得る。この方法は、第2のセンサを使用して、デバイスが実質的静止状態に遷移したと判定したことに応答して、フィルタを低電力状態に遷移させるステップをさらに含み得る。
【００３２】
第1のセンサに関連付けられているデータをフィルタリングするための例示的なコンピュータデバイスは、第1のセンサから信号を受信するように構成された受信機と、信号から第1の信号パラメータをフィルタリングするために使用される少なくとも1つのフィルタパラメータを有するフィルタとを備えることができ、この少なくとも1つのフィルタパラメータは、信号からの複数の信号パラメータのうちの第2の信号パラメータの変動性における検出された変化に少なくとも一部は基づき調整可能である。このフィルタは、適応フィルタであってよく、適応フィルタの少なくとも1つのフィルタパラメータは、動的に調整可能であるものとしてよい。一実装において、適応フィルタは、カルマンフィルタである。一態様では、フィルタの少なくとも1つのフィルタパラメータは、フィルタに対するウィンドウサイズを含むものとしてよく、フィルタに対するウィンドウサイズは、第1の信号パラメータの変動性に正比例する。別の態様では、少なくとも1つのフィルタパラメータは、フィルタに対するゲインを含むものとしてよく、フィルタに対するゲインは、第1の信号パラメータの変動性に反比例する。
【００３３】
一実装において、第1のセンサは加速度計であり、第2の信号パラメータは重力ベクトルであり、第1の信号パラメータは重力ベクトル以外の信号パラメータとすることができる。第1の信号パラメータは、デバイスの信号ノイズ、測定誤差、センサ較正誤差、または直線加速度のうちの1つまたは複数であってよい。別の実装において、第1のセンサは磁力計であり、第2の信号パラメータは磁気ベクトルであり、第1の信号パラメータは磁気ベクトル以外の信号パラメータとすることができる。第1の信号パラメータは、信号ノイズ、センサ較正誤差、または過渡磁場のうちの1つまたは複数を含み得る。
【００３４】
一実施形態では、コンピューティングデバイスによる第1の信号パラメータの変動性の変化を検出するステップは、デバイスが実質的静止状態に遷移したと判定するステップを含む。別の実施形態では、コンピューティングデバイスは、第2のセンサを使用して、デバイスが実質的静止状態に遷移したと判定したことに応答して、第1のセンサを低電力状態に遷移させるステップをさらに含むことができる。一実施形態では、第1のセンサはジャイロスコープまたは/および磁力計であり、第2のセンサは加速度計であるものとしてよい。一実装において、低電力状態に遷移するステップは、第1のセンサのスイッチオフまたはデューティサイクリングを行うステップを含み得る。コンピューティングデバイスは、第2のセンサを使用して、デバイスが実質的静止状態に遷移したと判定したことに応答して、フィルタを低電力状態に遷移させるステップをさらに含み得る。
【００３５】
例示的な非一時的なコンピュータ可読記憶媒体が提示され、例示的な非一時的コンピュータ可読記憶媒体は処理ロジックによって実行可能な命令を備え、これらの命令は第1のセンサから信号を受信するための命令と、信号からの複数の信号パラメータのうちの第1の信号パラメータの変動性の変化を検出するための命令と、第1の信号パラメータの変動性における検出された変化に少なくとも一部は基づき、信号からの第2の信号パラメータをフィルタリングするために使用されるフィルタの少なくとも1つのフィルタパラメータを調整するための命令とを含む。このフィルタは、適応フィルタであってよく、適応フィルタの少なくとも1つのフィルタパラメータは、動的に調整可能であるものとしてよい。一態様では、フィルタの少なくとも1つのフィルタパラメータは、フィルタに対するウィンドウサイズを含むものとしてよく、フィルタに対するウィンドウサイズは、第1の信号パラメータの変動性に正比例し得る。別の態様では、少なくとも1つのフィルタパラメータは、フィルタに対するゲインを含むものとしてよく、フィルタに対するゲインは、第1の信号パラメータの変動性に反比例する。例示的な非一時的コンピュータ可読記憶媒体は、第2のセンサを使用して、デバイスが実質的静止状態に遷移したと判定したことに応答して、フィルタを低電力状態に遷移させるための命令をさらに含み得る。
【００３６】
例示的な装置は、第1のセンサから信号を受信するための手段と、信号からの複数の信号パラメータのうちの第1の信号パラメータの変動性の変化を検出するための手段と、第1の信号パラメータの変動性における検出された変化に少なくとも一部は基づき、信号からの第2の信号パラメータをフィルタリングするために使用されるフィルタの少なくとも1つのフィルタパラメータを調整するための手段とを備えることができる。このフィルタは、適応フィルタであってよく、適応フィルタの少なくとも1つのフィルタパラメータは、動的に調整可能であるものとしてよい。一実施形態では、フィルタの少なくとも1つのフィルタパラメータは、フィルタに対するウィンドウサイズを含むものとしてよく、フィルタに対するウィンドウサイズは、第1の信号パラメータの変動性に正比例する。別の実施形態では、少なくとも1つのフィルタパラメータは、フィルタに対するゲインを含むものとしてよく、フィルタに対するゲインは、第1の信号パラメータの変動性に反比例する。例示的な装置は、第2のセンサを使用して、デバイスが実質的静止状態に遷移したと判定したことに応答して、フィルタを低電力状態に遷移させるための手段をさらに備えることができる。
【００３７】
本明細書で説明されている一実施形態は、デバイスを含む。このデバイスは、加速度計およびジャイロスコープからの入力をフィルタリングするように構成された重力フィルタと、磁力計およびジャイロスコープからの入力をフィルタリングするように構成された磁気フィルタとを備える。いくつかの実施形態では、重力フィルタと磁気フィルタのうちの少なくとも1つは、適応フィルタを使用し、適応フィルタの少なくとも1つのフィルタパラメータは、動的に調整可能である。いくつかの実施形態では、重力フィルタが受け取る入力の送り元であるジャイロスコープは、磁気フィルタが受け取る入力の送り元であるジャイロスコープである。上記の実施形態のうちのいくつかにおいて、重力フィルタは、重力ベクトルフィルタを含み、および/または磁気フィルタは、磁気ベクトルフィルタを含む。
【００３８】
本明細書で説明されている一実施形態は、磁気異常を判定するための方法を含む。この方法は、磁気ベクトルフィルタで磁力計データを受信するステップと、磁気ベクトルフィルタでジャイロスコープデータを受信するステップと、磁力計データおよびジャイロスコープデータに基づき、磁気ベクトルフィルタにおける磁場の検出された変化が、磁気異常を含むかどうかを判定するステップとを含む。いくつかの実施形態では、磁力計データは、磁力計からの測定結果または他の情報出力を含む。いくつかの実施形態では、ジャイロスコープデータは、ジャイロスコープからの測定結果または他の情報出力を含む。いくつかの実施形態では、この方法は、磁場の変化が検出された期間にジャイロスコープが変化を測定しなかったときに検出された変化が磁気異常であると判定するステップを含む。いくつかの実施形態では、この方法は、検出された変化が磁気異常であると判定されたときに磁場の検出された変化に対応する磁力計から受信されたフィルタ入力を無視または軽減するステップを含む。いくつかの実施形態では、検出された変化が磁気異常であると判定されたときに磁力計からの入力に関連付けられているウィンドウサイズを大きくするステップを含む。
【００３９】
コンピューティングデバイスにおいて情報を同期させるための例示的な方法は、複数のセンサ入力から共通のセンサ入力を決定するステップと、共通のセンサ入力と方位データを生成するための出力を同期させるステップであって、方位データは複数のセンサ入力を使用して生成される、ステップとを含み得る。一態様では、共通のセンサ入力と方位データを生成するための出力を同期させるステップは、1つまたは複数の残りのセンサ入力を共通センサ入力に対して、1つまたは複数の残りのセンサ入力を共通のセンサ入力が届くまで平均することによって同期させるステップであって、1つまたは複数の残りのセンサ入力は共通のセンサ入力以外の複数のセンサ入力からのセンサ入力である、ステップを含む。別の態様では、共通のセンサ入力と方位データを生成するための出力を同期させるステップは、複数のセンサ入力のうちの少なくとも1つのセンサ入力を共通のセンサ入力に伝搬させるステップを含み、この方法は、共通のセンサ入力および伝搬された1つまたは複数のセンサ入力に基づき複数のフィルタを使用して方位データを生成するステップをさらに含む。
【００４０】
例示的な一実装において、共通のセンサ入力は、ジャイロスコープからの入力を含み、共通のセンサ入力以外の複数のセンサ入力のうちの1つまたは複数の残りのセンサ入力は、加速度計および/または磁力計からの入力を含み得る。
【００４１】
例示的な方法は、複数のフィルタを使用して共通のセンサ入力および1つまたは複数の残りのセンサ入力をフィルタリングするステップも含むことができ、これら複数のフィルタは、加速度計およびジャイロスコープからのデータを使用してコンピューティングデバイスに関連付けられている重力ベクトルを判定するための重力ベクトルフィルタと、磁力計およびジャイロスコープからのデータを使用してコンピューティングデバイスに関連付けられている磁気ベクトルを判定するための磁気ベクトルフィルタとを含む。さらに、この方法は、方位データを統一された方位データ時点として受け付けるコンピューティングデバイス上のオペレーティングシステムフレームワークを検出することができ、同期は、オペレーティングシステムフレームワークの検出に応答して実行される。
【００４２】
一実施形態では、例示的な方法は、四元数システムで表される方位データの成分を判定するステップと、四元数システムで表される方位データの成分からの角度成分が負であると判定するステップと、角度成分が負であると判定したことに応答して、角度成分が正となるように四元数システムを使用して表される方位データの成分を調整するステップとをさらに含み得る。一実装において、この方法は、四元数システムの3つの成分のみをアプリケーション層に渡すコンピューティングデバイス上のオペレーティングシステムフレームワークを検出するステップをさらに含むことができ、成分を調整するステップは、オペレーティングシステムフレームワークの検出に応答して実行される。
【００４３】
さらに、例示的な方法は、方位データについて直線加速度を判定するステップをさらに含むことができ、直線加速度を判定するステップは、コンピューティングデバイスに関連付けられている測定された加速度を判定するステップと、コンピューティングデバイスに関連付けられている非正規化重力ベクトルを判定するステップと、コンピューティングデバイスの直線加速度を、コンピューティングデバイスの測定された加速度から重力ベクトルの非正規化重力成分を除去することによって判定するステップとをさらに含む。
【００４４】
情報を同期させるための例示的なコンピューティングデバイスは、複数のセンサ入力から共通のセンサ入力を判定し、共通のセンサ入力と方位データを生成するための出力を同期させるための処理ロジックであって、方位データは複数のセンサ入力を使用して生成される、処理ロジックを備えることができる。一態様では、共通のセンサ入力と方位データを生成するための出力を同期させるステップは、1つまたは複数の残りのセンサ入力を共通センサ入力に対して、1つまたは複数の残りのセンサ入力を共通のセンサ入力が届くまで平均することによって同期させるステップであって、1つまたは複数の残りのセンサ入力は共通のセンサ入力以外の複数のセンサ入力からのセンサ入力である、ステップを含む。別の態様では、共通のセンサ入力と方位データを生成するための出力を同期させるステップは、複数のセンサ入力のうちの少なくとも1つのセンサ入力を共通のセンサ入力に伝搬させるステップを含み、例示的なコンピューティングデバイスは、共通のセンサ入力および伝搬された1つまたは複数のセンサ入力に基づき複数のフィルタを使用して方位データを生成するステップをさらに含む。例示的な一実装において、共通のセンサ入力は、ジャイロスコープからの入力を含み、共通のセンサ入力以外の複数のセンサ入力のうちの1つまたは複数の残りのセンサ入力は、加速度計および/または磁力計からの入力を含み得る。
【００４５】
例示的なコンピューティングデバイスは、複数のフィルタを使用して共通のセンサ入力および1つまたは複数の残りのセンサ入力をフィルタリングするように構成された処理ロジックも備えることができ、これら複数のフィルタは、加速度計およびジャイロスコープからのデータを使用してコンピューティングデバイスに関連付けられている重力ベクトルを判定するための重力ベクトルフィルタと、磁力計およびジャイロスコープからのデータを使用してコンピューティングデバイスに関連付けられている磁気ベクトルを判定するための磁気ベクトルフィルタとを含む。さらに、処理ロジックは、方位データを統一された方位データ時点として受け付けるコンピューティングデバイス上のオペレーティングシステムフレームワークを検出するように構成することができ、同期は、オペレーティングシステムフレームワークの検出に応答して実行される。
【００４６】
一実施形態では、例示的なコンピューティングデバイスは、四元数システムで表される方位データの成分を判定し、四元数システムで表される方位データの成分からの角度成分が負であると判定し、角度成分が負であると判定したことに応答して、角度成分が正となるように四元数システムを使用して表される方位データの成分を調整するように構成された処理ロジックをさらに備えることができる。一実装において、コンピューティングデバイスは、四元数システムの3つの成分のみをアプリケーション層に渡すコンピューティングデバイス上のオペレーティングシステムフレームワークを検出するステップをさらに含むことができ、成分を調整するステップは、オペレーティングシステムフレームワークの検出に応答して実行される。
【００４７】
さらに、例示的なコンピューティングデバイスは、方位データについて直線加速度を判定するように構成された処理ロジックをさらに備えることができ、直線加速度を判定するステップは、コンピューティングデバイスに関連付けられている測定された加速度を判定するステップと、コンピューティングデバイスに関連付けられている非正規化重力ベクトルを判定するステップと、コンピューティングデバイスの直線加速度を、コンピューティングデバイスの測定された加速度から重力ベクトルの非正規化重力成分を除去することによって判定するステップとを含む。
【００４８】
例示的な非一時的なコンピュータ可読記憶媒体は、処理ロジックによって実行可能な命令を備えることができ、これらの命令は複数のセンサ入力から共通のセンサ入力を判定するための命令と、共通のセンサ入力と方位データを生成するための出力を同期させる命令であって、方位データは複数のセンサ入力を使用して生成される、命令とを含む。一態様では、共通のセンサ入力と方位データを生成するための出力を同期させるステップは、1つまたは複数の残りのセンサ入力を共通センサ入力に対して、1つまたは複数の残りのセンサ入力を共通のセンサ入力が届くまで平均することによって同期させるステップであって、1つまたは複数の残りのセンサ入力は共通のセンサ入力以外の複数のセンサ入力からのセンサ入力である、ステップを含む。別の態様では、共通のセンサ入力と方位データを生成するための出力を同期させるステップは、複数のセンサ入力のうちの少なくとも1つのセンサ入力を共通のセンサ入力に伝搬させるステップを含み、例示的な非一時的なコンピュータ可読記憶媒体は、共通のセンサ入力および伝搬された1つまたは複数のセンサ入力に基づき複数のフィルタを使用して方位データを生成するための命令も備えることができる。例示的な一実装において、共通のセンサ入力は、ジャイロスコープからの入力を含み、共通のセンサ入力以外の複数のセンサ入力のうちの1つまたは複数の残りのセンサ入力は、加速度計および/または磁力計からの入力を含み得る。
【００４９】
例示的な非一時的コンピュータ可読記憶媒体は、複数のフィルタを使用して共通のセンサ入力および1つまたは複数の残りのセンサ入力をフィルタリングするための命令も含むことができ、これら複数のフィルタは、加速度計およびジャイロスコープからのデータを使用してコンピューティングデバイスに関連付けられている重力ベクトルを判定するための重力ベクトルフィルタと、磁力計およびジャイロスコープからのデータを使用してコンピューティングデバイスに関連付けられている磁気ベクトルを判定するための磁気ベクトルフィルタとを含む。さらに、例示的な非一時的コンピュータ可読記憶媒体は、方位データを統一された方位データ時点として受け付けるコンピューティングデバイス上のオペレーティングシステムフレームワークを検出するための命令も含むことができ、同期は、オペレーティングシステムフレームワークの検出に応答して実行される。
【００５０】
一実施形態では、例示的な非一時的コンピュータ可読記憶媒体は、四元数システムで表される方位データの成分を判定するための命令と、四元数システムで表される方位データの成分からの角度成分が負であると判定するための命令と、角度成分が負であると判定したことに応答して、角度成分が正となるように四元数システムを使用して表される方位データの成分を調整するための命令とを備えることもできる。一実装において、例示的な非一時的コンピュータ可読記憶媒体は、四元数システムの3つの成分のみをアプリケーション層に渡すコンピューティングデバイス上のオペレーティングシステムフレームワークを検出するための命令を備えることもでき、成分を調整するステップは、オペレーティングシステムフレームワークの検出に応答して実行される。
【００５１】
さらに、例示的な非一時的コンピュータ可読記憶媒体は、方位データについて直線加速度を判定するための命令を備えることもでき、直線加速度を判定するステップは、コンピューティングデバイスに関連付けられている測定された加速度を判定するステップと、コンピューティングデバイスに関連付けられている非正規化重力ベクトルを判定するステップと、コンピューティングデバイスの直線加速度を、コンピューティングデバイスの測定された加速度から重力ベクトルの非正規化重力成分を除去することによって判定するステップとを含む。
【００５２】
例示的な装置は、複数のセンサ入力から共通のセンサ入力を決定するための手段と、共通のセンサ入力と方位データを生成するための出力を同期させるための手段であって、方位データは複数のセンサ入力を使用して生成される、手段とを備えることができる。一態様では、共通のセンサ入力と方位データを生成するための出力を同期させるステップは、1つまたは複数の残りのセンサ入力を共通センサ入力に対して、1つまたは複数の残りのセンサ入力を共通のセンサ入力が届くまで平均することによって同期させるための手段であって、1つまたは複数の残りのセンサ入力は共通のセンサ入力以外の複数のセンサ入力からのセンサ入力である、手段を含む。別の態様では、共通のセンサ入力と方位データを生成するための出力を同期させるステップは、複数のセンサ入力のうちの少なくとも1つのセンサ入力を共通のセンサ入力に伝搬させるための手段を含み、装置は、共通のセンサ入力および伝搬された1つまたは複数のセンサ入力に基づき複数のフィルタを使用して方位データを生成するための手段をさらに備える。
【００５３】
例示的な一実装において、共通のセンサ入力は、ジャイロスコープからの入力を含み、共通のセンサ入力以外の複数のセンサ入力のうちの1つまたは複数の残りのセンサ入力は、加速度計および/または磁力計からの入力を含み得る。
【００５４】
例示的な装置は、複数のフィルタを使用して共通のセンサ入力および1つまたは複数の残りのセンサ入力をフィルタリングするための手段を備えることもでき、これら複数のフィルタは、加速度計およびジャイロスコープからのデータを使用してコンピューティングデバイスに関連付けられている重力ベクトルを判定するための重力ベクトルフィルタと、磁力計およびジャイロスコープからのデータを使用してコンピューティングデバイスに関連付けられている磁気ベクトルを判定するための磁気ベクトルフィルタとを含む。さらに、装置は、方位データを統一された方位データ時点として受け付けるコンピューティングデバイス上のオペレーティングシステムフレームワークを検出するための手段を備えることができ、同期は、オペレーティングシステムフレームワークの検出に応答して実行される。
【００５５】
一実施形態では、例示的な装置は、四元数システムで表される方位データの成分を判定するための手段と、四元数システムで表される方位データの成分からの角度成分が負であると判定するための手段と、角度成分が負であると判定したことに応答して、角度成分が正となるように四元数システムを使用して表される方位データの成分を調整するための手段とをさらに備えることができる。一実装において、装置は、四元数システムの3つの成分のみをアプリケーション層に渡すコンピューティングデバイス上のオペレーティングシステムフレームワークを検出するための手段をさらに備えることができ、成分を調整するステップは、オペレーティングシステムフレームワークの検出に応答して実行される。
【００５６】
さらに、例示的な装置は、方位データについて直線加速度を判定するための手段をさらに備えることができ、直線加速度を判定するための手段は、コンピューティングデバイスに関連付けられている測定された加速度を判定するための手段と、コンピューティングデバイスに関連付けられている非正規化重力ベクトルを判定するための手段と、コンピューティングデバイスの直線加速度を、コンピューティングデバイスの測定された加速度から重力ベクトルの非正規化重力成分を除去することによって判定するための手段とを含む。
【００５７】
本明細書で説明されている一実施形態は、デバイスを含む。このデバイスは、加速度計およびジャイロスコープからの入力をフィルタリングするように構成された重力フィルタと、磁力計およびジャイロスコープからの入力をフィルタリングするように構成された磁気フィルタとを備える。いくつかの実施形態では、重力フィルタと磁気フィルタのうちの少なくとも1つは、適応フィルタを使用し、適応フィルタの少なくとも1つのフィルタパラメータは、動的に調整可能である。いくつかの実施形態では、重力フィルタが受け取る入力の送り元であるジャイロスコープは、磁気フィルタが受け取る入力の送り元であるジャイロスコープである。上記の実施形態のうちのいくつかにおいて、重力フィルタは、重力ベクトルフィルタを含み、および/または磁気フィルタは、磁気ベクトルフィルタを含む。
【００５８】
本明細書で説明されている一実施形態は、磁気異常を判定するための方法を含む。この方法は、磁気ベクトルフィルタで磁力計データを受信するステップと、磁気ベクトルフィルタでジャイロスコープデータを受信するステップと、磁力計データおよびジャイロスコープデータに基づき、磁気ベクトルフィルタにおける磁場の検出された変化が、磁気異常を含むかどうかを判定するステップとを含む。いくつかの実施形態では、磁力計データは、磁力計からの測定結果または他の情報出力を含む。いくつかの実施形態では、ジャイロスコープデータは、ジャイロスコープからの測定結果または他の情報出力を含む。いくつかの実施形態では、この方法は、磁場の変化が検出された期間にジャイロスコープが変化を測定しなかったとときに検出された変化が磁気異常であると判定するステップを含む。いくつかの実施形態では、この方法は、検出された変化が磁気異常であると判定されたときに磁場の検出された変化に対応する磁力計から受信されたフィルタ入力を無視または軽減するステップを含む。いくつかの実施形態では、検出された変化が磁気異常であると判定されたときに磁力計からの入力に関連付けられているウィンドウサイズを大きくするステップを含む。
【００５９】
前記の説明では、次の詳細な説明を理解しやすくするために例の特徴および技術的利点の概略をかなり広範にわたって述べている。追加の特徴および利点について以下で説明する。開示されている概念および特定の例は、本開示の同じ目的を実施するために他の構造物を修正または設計するための基盤として容易に利用され得る。このような同等の構造は、付属の請求項の精神および範囲から逸脱しない。本明細書で開示されている概念に特徴的であると考えられる特徴は、その編成および動作方法の両方に関して、関連する利点と併せて、付属の図面に関連して考察するときに次の説明を参照することで理解しやすくなる。これらの特徴のそれぞれは、例示および説明を目的として提示されており、請求項の制限の定義として提示されていない。
【００６０】
本開示の態様は、例を用いて図解されている。次の説明は、図面を参照して提示されているが、図面全体を通して、同様の符号は同様の要素を参照するために使用される。1つまたは複数の技術の様々な詳細が本明細書で説明されているが、他の技術も可能である。いくつかの場合において、様々な技術を説明しやすくするために、よく知られている構造およびデバイスがブロック図形式で示されている。
【００６１】
本開示によって提供される例の性質および利点は、本明細書の残りの部分および図面を参照することによってさらによく理解でき、類似の参照番号は複数の図面全体を通して類似のコンポーネントを指し示すために使用されている。いくつかの場合において、サブラベルは、複数の類似のコンポーネントのうちの1つを表すための参照番号と関連付けられている。既存のサブラベルを指定せずに参照番号への参照がなされている場合、参照番号はすべてのそのような複数の類似のコンポーネントを指す。
【図面の簡単な説明】
【００６２】
【図１】単一のフィルタを使用して加速度計、ジャイロスコープ、および磁力計の出力をフィルタリングするための非制限的な例示的システムを示す簡略化されたブロック図である。
【図２Ａ】複数のフィルタを使用して加速度計および磁力計の出力をフィルタリングするための非制限的な例示的システムを示す簡略化されたブロック図である。
【図２Ｂ】重力ベクトルを判定するための非制限的な例を示す簡略化された流れ図である。
【図２Ｃ】磁気ベクトルを判定するための非制限的な例を示す簡略化された流れ図である。
【図３】改善された方位データを取得するための非制限的な例を示す簡略化された流れ図である。
【図４】本開示の1つまたは複数の例示されている態様による少なくとも1つの磁力計から受信されたデータを少なくとも1つのジャイロスコープから受信されたデータと比較した例示的なグラフを示す図である。
【図５】本開示の1つまたは複数の例示されている態様による少なくとも1つの磁力計から受信されたデータを少なくとも1つのジャイロスコープから受信されたデータと比較した例示的なグラフを示す図である。
【図６】本開示の1つまたは複数の例示的な態様によるジャイロスコープ支援磁気異常除去機能を実行する非制限的な方法を示す簡略化された流れ図である。
【図７Ａ】センサ出力からフィルタリングされた傾斜を導出するためのシステムを例示する簡略化されたブロック図である。
【図７Ｂ】フィルタリングされた傾斜角および重力ベクトルのフィルタリングされた成分を計算するための拡張重力ベクトルフィルタの非制限的な例を示す簡略化されたブロック図である。
【図８Ａ】センサに関連付けられているフィルタを改善するための方法の非制限的な例を示す簡略化された流れ図である。
【図８Ｂ】センサに関連付けられているフィルタを改善するための方法の非制限的な例を示す簡略化された流れ図である。
【図９】フィルタシステムに関連付けられている節電のための非例示的なプロセスを示す簡略化された流れ図である。
【図１０】加速度計支援フィルタシステムの非制限的な例を示す簡略化されたブロック図である。
【図１１】本開示の1つまたは複数の例示的な態様によるカルマンフィルタの例示的な実装を示す図である。
【図１２Ａ】様々なセンサ入力を同期させるための本発明の非制限的な実施形態を示す簡略化された時系列流れ図である。
【図１２Ｂ】センサ入力の様々なソースを同期させるための本発明の非制限的な実施形態を示す簡略化された時系列流れ図である。
【図１３】方位データを提供するための本発明の非制限的な実施形態を示す簡略化された流れ図である。
【図１４Ａ】直線加速度を生成するための従来技術を例示する簡略化されたブロック図である。
【図１４Ｂ】本発明の実施形態による直線加速度を生成するための非制限的なシステムを例示する別の簡略化されたブロック図である。
【図１５】本発明の実施形態によるデバイスの直線加速度を判定するための方法の非制限的な例を示す別の簡略化された流れ図である。
【図１６】本発明の実施形態を実施する際に使用されるデバイスの部品を組み込んだ例示的なコンピューティングデバイスを示す図である。
【発明を実施するための形態】
【００６３】
いくつかの例示的な実施形態について、その一部をなす、添付図面に関して説明される。開示の1つまたは複数の態様を実装することができる、特定の実施形態が以下で説明されるが、他の実施形態も使用することができ、また様々な修正も、本開示の範囲または付属の請求項の精神から逸脱することなく加えることができる。
【００６４】
たとえば、センサ1650に基づきデバイス1600内の重力ベクトル、磁気ベクトル、直線加速度、および/または回転ベクトルを判定することによって、デバイス1600の運動および/または方位を判定するための電力効率の良いシステムに関する技術が提供される。本発明のいくつかの実施形態では、加速度計1655、磁力計1665、およびジャイロスコープ1660などのセンサが使用される。さらに、節電をし、精度を高め、重力ベクトル、直線加速度、および四元数(回転)ベクトルに対するプレゼンテーションフォーマットについて特定の要求条件を有するGoogle androidなどの広く使用されているオペレーティングシステムのフレームワークの出力を再フォーマットしながら重力ベクトル、回転ベクトル、および直線加速度の判定を潜在的に高速化することに関する技術も提供される。
【００６５】
重力ベクトルを使用する、四元数(回転)ベクトルなどの方位データの判定は、地球に相対的な方位に関わる。たとえば、重力ベクトルを使用して計算された角度は、水平面に相対的方位またはこの平面に対する伏角を記述することによって地球に相対的な方位を記述するために使用され得る。また、磁気ベクトルは、地球の磁場の水平成分、および局所的偏角を使用して方位データを導出するために使用され得る。
【００６６】
重力ベクトルなどの方位データの判定は、ピッチ角およびロール角を使用することで水平面に関する方位に関わる。重力ベクトル成分は、たとえば、加速度のジャイロ支援フィルタリングによって、ジャイロスコープ1660および加速度計1655の測定結果から決定され得る。地球の磁場の測定も利用可能であり、これにより、第3のオイラー角ヨー(Google(登録商標)Androidではアジマス角と称される)を決定することができる。ピッチ、ロール、およびヨーの代わりに、9要素回転行列または四元数もしくは回転ベクトル(RV)への4要素圧縮の形態で3D方位を表すこともできる。
【００６７】
方位を判定する一方法は、カルマンフィルタ方程式のジャイロスコープ1660、加速度計1655、および磁力計1665の出力を使用する方法であってよい。本発明の実施形態では、重力ベクトルおよび(ジャイロスコープ支援された)フィルタリングされた磁気ベクトルから回転ベクトルを決定するための代替的実装を使用することもできる。2つのベクトルの外積は、東を指す水平ベクトルを生成するものとしてよく、次いで、重力ベクトルとの外積は、北を指す水平ベクトルを生成するものとしてよい。垂直重力、水平東、および水平北の3つのベクトルの各々は、そのまま出力されるか、または回転ベクトルに圧縮されて出力され得る3×3回転行列の1つの列を構成することができる。
【００６８】
本発明の実施形態は、単一のフィルタを使用する代わりに、加速度計1655(重力ベクトルフィルタ)および磁力計1665(磁気ベクトルフィルタ)に対する独立したフィルタを備える。加速度計1655および磁力計1665から入力を分離することによって、本発明の実施形態は、センサからより正確な結果をより高速に得ることを可能にするゲインおよびウィンドウを調整する適応フィルタを使用することができる。それに加えて、デバイス1600が静止している場合、ジャイロスコープ1660、磁力1665、およびいくつかのフィルタは低電力状態に遷移し得る。本発明の態様は、非正規化重力ベクトルを使用することによって直線加速度を判定する精度を高め、アプリケーション層が四元数システムの第4の成分を導出するためのメカニズムを実現するための技術も含む。
【００６９】
独立した重力ベクトルフィルタおよび磁気ベクトルフィルタ
多くのセンサ融合システムは、誤差を除去するように組み合わされているすべてのセンサ入力を処理するために単一のフィルタを使用する。カルマンフィルタは、ノイズおよび他の不正確な要因を除去するために使用することができ、ある時間(時定数によって決定される)にわたって測定結果を観察することによって測定結果の真の値に近づく傾向のある値を生成することができる。図1は、単一のフィルタを使用して加速度計1655、ジャイロスコープ1660、および磁力計1665の出力をフィルタリングするためのシステムを示すブロック図である。しかし、これらのフィルタシステムは、異なるセンサをフィルタリングするために異なる較正パラメータを変化させると異なる影響が現れるので精度を保って較正することは困難な場合がある。たとえば、加速度計(重力ベクトルを見つけるため)および磁力計(磁気ベクトルを見つけるため)は、異なる環境要因をノイズとして関連付け得る。したがって、与えられた期間において、加速度計に対するノイズは、磁力計に対するノイズと異なることがある。そのようなシステムにおいて、加速度計と磁力計の両方の出力から誤差を適切に除去するためにフィルタに使用されるウィンドウに対する大きな静的な時定数が必要になることがある。
【００７０】
図2Aは、別々のフィルタを使用してジャイロスコープ1660とともに加速度計1655および磁力計1665の出力をフィルタリングするためのシステムを示すブロック図である。本発明の実施形態では、重力ベクトルを判定するために重力ベクトルフィルタ202において加速度計データおよびジャイロスコープデータを一緒に処理する。図16に例示されているプロセッサ1610などのプロセッサまたはコントローラまたは重力ベクトルフィルタ202のコンポーネントが、センサデータを処理する際に使用され得る。本発明の実施形態では、磁気ベクトルを判定するために磁気ベクトルフィルタ204において磁力計データおよびジャイロスコープデータを一緒に処理することもできる。図16に例示されているプロセッサ1610などのプロセッサまたはコントローラまたは磁気ベクトルフィルタ204のコンポーネントが、センサデータを処理する際に使用され得る。本発明のいくつかの実施形態では、適応フィルタが使用され、これにより、プロセッサ1610、コントローラ、またはフィルタのコンポーネントを使用して適応フィルタの1つまたは複数のパラメータを動的に調整することができる。一実施形態では、適応フィルタは、カルマンフィルタとすることができる。
【００７１】
重力ベクトルフィルタ
重力ベクトルフィルタ202について、センサ1650からのサンプルまたは出力データがそのフィルタの時定数によって示される期間にわたって累算され、重力ベクトルフィルタ202を通してフィルタリングされ、重力ベクトルを導出する。フィルタを通してデータをフィルタリングするステップは、プロセッサ1610、コントローラ、特定用途向け集積回路(ASIC)、またはデバイス1600上の他のデジタルもしくはアナログロジックでデータを処理することを含み得る。重力ベクトルフィルタ202は、プロセッサ1610上のハードウェアまたは実行するソフトウェアで実装され、および/または作業用メモリ1635内に一時的に格納され得る。時定数は、フィルタのウィンドウサイズとも称され、本明細書全体を通して入れ替えて使用され得る。加速度計1655および/またはジャイロスコープ1660からの1つまたは複数の信号パラメータは、ノイズとして働き、重力ベクトルを決定する際に有害な影響を及ぼし得る。これ以降、重力ベクトルフィルタ202に関連付けられているノイズは、重力ベクトルを判定する際に有害な場合がある重力ベクトルそれ自体のほかに信号パラメータを含むように広範に使用され得る。いくつかの場合において、これらの信号パラメータは、限定はしないが、実際の測定ノイズ、センサ較正誤差、および直線加速度の推定されるレベルを含み得る。ノイズには、センサの較正における誤差または環境内のノイズが関わり得る。直線加速度は、並進加速度とも称され、本明細書全体を通して入れ替えて使用され得る。
【００７２】
加速度計1655は、様々な方向で力を測定する原理に基づいて動作するものとしてよい。デバイス1600、したがって結合されている加速度計1655が運動しているときに、重力場からの力、および加速度は認識できず、加速度計1655は、一方を他方から区別することができない場合がある。重力ベクトルフィルタ202の目的は、たとえば、直線加速度とは反対の、重力ベクトルを求めることであってよく、したがって、直線加速度は、真の重力ベクトルを求めることを損なう可能性があるのでノイズである可能性がある。デバイス1600が運動しているときに、デバイス1600の加速度は、ノイズとして取り扱うことができる。
【００７３】
特に、デバイス1600が静止している場合、デバイス1600はノイズをあまり受けず、重力ベクトルフィルタ202のゲインを高くすることで、重力ベクトルフィルタ202に対する整定時間を短縮できる。デバイス1600が運動している場合、連続的なフィルタ誤差が大きく、重力ベクトルを導出するためにより長い期間にわたるサンプルが使用され得る。ノイズは、デバイス1600静止している場合に著しく減少し、より短い時定数を使用する重力ベクトルフィルタリングが可能である。図16で説明されているデバイス1600などのデバイスは、ユーザがデバイス1600をポケットに入れるか、またはデバイス1600を短い時間テーブルの上に置いて着座することにより短い時間の間静止している場合がある。
【００７４】
デバイス1600の静止位置は、加速度計1655、ジャイロスコープ1660、磁力計1665の出力から、または他のセンサ出力を使用して認識され得る。デバイス1600が、静止位置にあるときに、ノイズは少なく、より高いゲインのより短い期間にわたる(すなわち、より短い時定数の)サンプルが、重力ベクトルフィルタ202から重力ベクトルを導出するのに十分である。言い換えると、フィルタの出力は、誤差がより速く消されるのでかなり速く整定するということである。たとえば、デバイス1600が静止しているときに実行される重力ベクトルの計算は、長期間にわたって、および/またはデバイス1600が運動している間に、典型的に観察されるノイズまたはセンサ誤差とは対照的に、デバイス1600の相対的動力学に大きく帰因し得る。デバイス1600が、運動しているときには、誤差は実質的な大きさとなり、フィルタが出力を整定させるのにかなり長い時間を要する可能性がある。デバイス1600が静止しているときには、誤差はかなり小さく、フィルタの時定数を小さくしながらゲインを高くすることができる。時定数が減少すると、ジャイロスコープ1660からのセンサ誤差は低減されるか、または排除され得る。したがって、重力ベクトルは、デバイス1600が静止していることを検出し、フィルタに対する時定数およびゲインを調整することによって、より高速に、同じかそれ以上に良い精度で求めることができる。そのため、図16に例示されているプロセッサ1610などのプロセッサまたはコントローラまたは重力ベクトルフィルタ202のコンポーネントは、フィルタの動作パラメータ、たとえば、時定数および/またはフィルタのゲインを調整することができる。調整は、デバイス1600が静止していることを検出するステップ、ノイズの低減を検出するステップ、またはデバイス1600またはそのセンサ1650の信号のステータス、信号、または変動性の別の変化を検出するステップに応答して実行され得る。
【００７５】
重力ベクトルフィルタ202の動作パラメータの調整は、多くの方法により決定され得る。一実施形態では、調整は、デバイス1600の運動のレベルにほぼ比例する。そのため、時定数は、プロセッサ1610またはコントローラによって継続的に、または常時調整され得る。別の実施形態では、調整は、プロセッサ1610またはコントローラによる、テーブルにあるデバイス1600の運動状態を調べるステップ、および調べた状態に基づき対応する調整を決定するステップによって決定される。たとえば、第1の時定数は、デバイス1600が運動しているときに使用され、第2の時定数は、デバイス1600が実質的に静止しているときに使用され得る。たとえば、一態様では、デバイス1600が運動しているときの第1の時定数は、5秒であるものとし、デバイス1600が実質的に静止している位置にあるときの第2の時定数は、1.4秒であるものとしてよい。さらに、第3の時定数が、デバイス1600が絶対的に静止しているときに使用され得る。一態様では、第3の定数は、0.6秒であるものとしてよい。このような例示的なテーブルは、ストレージデバイス1625内に動的に、または静的に生成され、格納され、アクセスする場合には作業用メモリ1635に一時的にロードされ得る、
【００７６】
図2Bは、重力ベクトルを判定するための非制限的な例を示す簡略化された流れ図である。プロセス200は、ハードウェア(回路、専用ロジックなど)、ソフトウェア(汎用コンピューティングシステムまたは専用マシン上で実行されるようなもの)、ファームウェア(組み込みソフトウェア)、またはこれらの組み合わせを備えるプロセッサ1610または処理ロジックによって実行され得る。一実施形態では、プロセス200は、図16に示されているような1つまたは複数のコンピュータシステム1600によって実行される。一実施形態では、センサ1650は、フィルタリングによりさらなる処理および図16で説明されているデバイスのコンポーネントによる処理のためにセンサ入力を取得する。
【００７７】
ブロック206で、加速度計データが、重力ベクトルフィルタ202において受信されるものとしてよく、加速度計データは、加速度計1655からのセンサ出力を含む。いくつかの実施形態では、ブロック206は、センサデータを受信するために重力ベクトルフィルタ202に結合されている受信機または他のインターフェース(図示せず)などの、デバイス1600のコンポーネントによって実行され得る。ジャイロスコープにおいて、データが重力ベクトルフィルタ202で受信されるものとしてよく、ジャイロスコープデータはジャイロスコープ1660からのセンサ出力を含む。いくつかの実施形態では、ブロック208は、重力ベクトルフィルタ202に結合されている受信機または他のインターフェース(図示せず)などの、デバイス1600のコンポーネントによって実行され得る。ブロック210で、重力ベクトルフィルタ202などのデバイスのコンポーネントは、重力ベクトルフィルタにおいて加速度計データおよびジャイロスコープデータを使用することによって重力ベクトルを判定することができ、重力ベクトルはコンピューティングデバイスの方位を判定するために使用され得る。一実施形態では、重力ベクトルフィルタ202は、方位判定とともに使用する磁力計データとは無関係に重力ベクトルを判定することができるものとしてよい。
【００７８】
図2Bに例示されている特定のステップは、本発明の一実施形態による、動作モードを切り替える特定の方法を構成することは理解されるであろう。ステップの他のシーケンスも、代替的実施形態においてしかるべく実行され得る。たとえば、本発明の代替的実施形態は、上で概要を述べたステップを異なる順序で実行することができる。例示のため、ユーザは、第3の動作モードから第1の動作モードに、第4の動作モードから第2の動作モードに、またはこれらのモード間の組み合わせに変更することを選択することができる。さらに、図2Bに例示されている個別のステップは、個別のステップに適している通りに様々なシーケンスで実行され得る複数のサブステップを含み得る。さらに、特定の用途に応じて追加のステップを加えたり、取り除いたりできる。当業者であれば、プロセスの多くの変更形態、修正形態、および代替的形態を認識し、理解するであろう。
【００７９】
磁気ベクトルフィルタ
同様に、磁場の変化を検出し、および/または測定するため1つまたは複数の磁力計1665を使用するデバイスに関して(たとえば、ユーザ入力の一形態として)、1つまたは複数の磁力計1665から受信されたデータが信頼できないときがあり得る。これは、重力のずれがある場合、および/または干渉磁場が存在する場合を含み得る。たとえば、干渉磁場は、1つまたは複数の他の電気的コンポーネントおよび/または電子デバイスによって生成され得る。これらのような場合に、1つまたは複数の磁力計1665によって提供される磁気ベクトル情報は、このような干渉によって歪められ得る。
【００８０】
磁力計1665について、磁力計1655または/およびジャイロスコープ1660からの1つまたは複数の信号パラメータは、磁気ベクトルを判定する際にノイズとして働き得る。磁気ベクトルを決定する際に有害な信号パラメータは、重力ベクトルを決定する際に有害な信号パラメータと異なり得る。これ以降、磁気ベクトルフィルタ204に関連付けられているノイズは、磁気ベクトルを判定する際に有害な場合がある磁気ベクトルそれ自体のほかに信号パラメータを含むように広範に使用され得る。いくつかの場合において、これらの信号パラメータは、限定はしないが、センサ較正誤差および推定される過渡磁場(すなわち、磁場内の過度異常)を含み得る。磁気ベクトルフィルタ204は、これらの誤差および異常を除去することを試み、フィルタは、プロセッサ1610上のハードウェアまたは実行するソフトウェアで実装され、および/または作業用メモリ1635内に一時的に格納され得る。加速度計1655の場合、上で説明されているように、デバイス1600の運動はノイズに寄与し得る。しかし、磁力計1665は、運動による影響を受けない場合がある。その代わりに、磁力計1665の読み取り値は、磁気異常および過渡磁場の影響を受け得る。したがって、磁気異常が検出されない場合、ゲインを高くし、磁力計1665に対する時定数を下げることができる。ゲインが高く、ノイズが低ければ、結果として、デバイスの磁気環境内に累積する誤差がより高速に読み出される。たとえば、ノイズを磁場に関わらせる大きなトラックの通過がある場合、時定数は、トラックの通過の間の時間に動的に低減され得る。過渡磁場の存在は、水平からの大きさおよび伏角および時間が経ったときの安定性(分散)などの測定され、フィルタリングされた磁気ベクトルパラメータをチェックすることによって決定され得る。そのため、図16に例示されているプロセッサ1610などのプロセッサまたはコントローラまたは磁気ベクトルフィルタ204のコンポーネントは、フィルタの動作パラメータ、たとえば、時定数および/またはフィルタのゲインを調整することができる。それに加えて、上記のパラメータを現在のユーザの位置に対する標準的な地球磁場モデルパラメータと比較することができる。ユーザの位置は、10〜20マイルの精度で知られている必要があり、GNSS、セルI
D、または手動位置入力を使用して取得され得る。
【００８１】
ノイズが低い場合にフィルタに対してより高いゲインおよび短い時定数を有する利点としてほかに、ジャイロスコープ1660によって持ち込まれる誤差を低くすることができるという点が挙げられる。ジャイロスコープ1660は、融合センサ出力を平滑化し、正確にし得るが、ジャイロスコープ1660の較正に誤差がある場合、ジャイロスコープ1660からの方位誤差の寄与分は、ジャイロスコープ1660のオフセットに(時)定数を掛けることによって近似的に推定することが可能である。ジャイロスコープ1660を使用して測定される誤差は累算され、ジャイロスコープ1660は、より広い時間範囲にわたってフィルタを横向きに引くことができる。したがって、時定数が短いことで、ジャイロスコープ1660からの誤差寄与分が小さくなり得る。しかし、加速度計1655および/または磁力計1665の読み取り値に対して著しいノイズがある場合に、長い時定数が使用され得る。重力ベクトルフィルタ202は、加速度計1655およびジャイロスコープ1660からの読み取り値を使用することができるが、磁気ベクトルフィルタ204は、磁力計1665およびジャイロスコープ1660からの読み取り値を使用することができる。重力ベクトルフィルタ202および磁気ベクトルフィルタ204に対してより小さな時定数を使用することで、ジャイロスコープ1660によって持ち込まれる誤差を時定数分で割った値に低減することができる。
【００８２】
独立したフィルタを作成し、および/または実装するステップは、加速度計1655を使用して重力ベクトルを、磁力計1665を使用して磁気ベクトルを導出する際に有害であるこれらの様々な信号パラメータの環境または他のソースが異なり得るので特に有益であり得る。たとえば、重力ベクトルフィルタ202および磁気ベクトルフィルタ204は、センサを使用して環境から検出された有害な信号パラメータまたはノイズに応じてフィルタに関連付けられている異なる、より短い時定数を動的に使用することができる。たとえば、静止しているデバイス1600には、重力ベクトルを計算する上で関連するノイズまたは有害な信号パラメータはほんの少ししかなく、したがって、より小さい時定数が使用され得る。また、重力ベクトルフィルタ202に対するウィンドウサイズは、環境内の過渡磁場の量に無関係に調整され得る。同様に、ゲイン、または言い換えると、フィルタに通せる、またはフィルタの作用を受ける測定の頻度は、重力ベクトルフィルタ202および磁気ベクトルフィルタ204に対する低減損信号パラメータ(low detractive signal parameters)の時間において別々に増やせる。
【００８３】
いくつかの実施形態では、センサ1650からの加速度計1655および磁力計1665の出力が、それぞれ、重力ベクトルおよび磁気ベクトルを判定することを目的として分離されるとしても、加速度計1655は、それでも、磁気ベクトルフィルタ204への入力として使用され得る。たとえば、加速度計データは、節電を目的として、または磁気ベクトルをより効率的に計算するために、運動情報を磁気ベクトルフィルタ204に供給することによって磁気フィルタを補助することができる。加速度計1655からの加速度計データも、図9および図10でさらに説明されているように、ジャイロスコープ1660および磁力計1665の節電技術を補助することができる。
【００８４】
図2Cは、磁気ベクトルを判定するための非制限的な例を示す簡略化された流れ図である。プロセス201は、ハードウェア(回路、専用ロジックなど)、ソフトウェア(汎用コンピューティングシステムまたは専用マシン上で実行されるようなもの)、ファームウェア(組み込みソフトウェア)、またはこれらの組み合わせを備えるプロセッサ1610または処理ロジックによって実行され得る。一実施形態では、プロセス201は、図16に示されているような1つまたは複数のコンピュータシステム1600によって実行される。一実施形態では、センサ1650は、フィルタリングによりさらなる処理および図16で説明されているデバイスのコンポーネントによる処理のためにセンサ入力を取得する。
【００８５】
磁力計において、データが磁気ベクトルフィルタ204に受信されるものとしてよく、磁力計データは磁力計1665からのセンサ出力を含む。いくつかの実施形態では、ブロック212は、磁気ベクトルフィルタ204に結合され、センサデータを受信するように構成されている受信機または他のインターフェース(図示せず)などの、デバイス1600のコンポーネントによって実行され得る。ジャイロスコープにおいて、データが磁気ベクトルフィルタ204に受信されるものとしてよく、ジャイロスコープデータはジャイロスコープ1660からのセンサ出力を含む。いくつかの実施形態では、ブロック214は、磁気ベクトルフィルタ204に結合されている受信機または他のインターフェース(図示せず)などの、デバイス1600のコンポーネントによって実行され得る。ブロック216で、磁気ベクトルフィルタ204などのデバイスのコンポーネントは、磁気ベクトルフィルタにおいて磁気ベクトルデータおよびジャイロスコープデータを使用することによって磁気ベクトルを判定することができ、磁気ベクトルはコンピューティングデバイスの方位を判定するために使用され得る。一実施形態では、磁気ベクトルフィルタ204は方位判定とともに使用する加速度計データとは無関係に磁気ベクトルを判定することができるものとしてよい。
【００８６】
図2Cに例示されている特定のステップは、本発明の一実施形態による、動作モードを切り替える特定の方法を構成することは理解されるであろう。ステップの他のシーケンスも、代替的実施形態においてしかるべく実行され得る。たとえば、本発明の代替的実施形態は、上で概要を述べたステップを異なる順序で実行することができる。例示のため、ユーザは、第3の動作モードから第1の動作モードに、第4の動作モードから第2の動作モードに、またはこれらのモード間の組み合わせに変更することを選択することができる。さらに、図2Cに例示されている個別のステップは、個別のステップに適している通りに様々なシーケンスで実行され得る複数のサブステップを含み得る。さらに、特定の用途に応じて追加のステップを加えたり、取り除いたりできる。当業者であれば、プロセスの多くの変更形態、修正形態、および代替的形態を認識し、理解するであろう。
【００８７】
図3は、改善された方位データを取得するための非制限的な例を示す簡略化された流れ図である。プロセス300は、ハードウェア(回路、専用ロジックなど)、ソフトウェア(汎用コンピューティングシステムまたは専用マシン上で実行されるようなもの)、ファームウェア(組み込みソフトウェア)、またはこれらの組み合わせを備えるプロセッサ1610または処理ロジックによって実行され得る。一実施形態では、プロセス300は、図16に示されているような1つまたは複数のコンピュータシステム1600によって実行される。一実施形態では、センサ1650は、フィルタリングによりさらなる処理および図16で説明されているデバイスのコンポーネントによる処理のためにセンサ入力を取得する。
【００８８】
ブロック302で、加速度計1655およびコンピューティングデバイス1600に結合されている他のモジュールが加速度計データを取得する。ブロック304で、コンピューティングデバイス1600に結合されているジャイロスコープ1660がジャイロスコープデータを取得し、ブロック306で、磁力計1665が磁力計データを取得する。同様に、ブロック304で、ジャイロスコープ1660およびコンピューティングデバイス1600に結合されている他のモジュールがジャイロスコープデータを取得する。図示されていない他のセンサ1650も、デバイスの方位を判定する際に使用され得る。
【００８９】
ブロック308で、重力ベクトルフィルタ202は、少なくとも加速度計データおよびジャイロスコープデータを使用して重力ベクトルを判定し、重力ベクトルはデバイス1600の方位を判定するために使用される。重力ベクトルフィルタ202は、適応フィルタを使用することができ、図16で説明されている、デバイス1600のコンポーネントを使用して、ソフトウェア、ファームウェア、またはハードウェアで実装され得る。ブロック312で、適応フィルタの少なくとも1つのフィルタパラメータは、1つまたは複数のセンサからの信号パラメータを使用して、プロセッサ1610またはコントローラによって、動的に調整され得る。図3において、ブロック312で、例示することを目的として、加速度計データは、重力ベクトルフィルタ202に対する少なくとも1つのフィルタパラメータを判定する際に使用される。図3には示されていないが、いくつかの実施形態では、重力ベクトルフィルタ202に対するパラメータを調整する際に利用可能なジャイロスコープデータ、磁力計データ、および/または他のセンサデータを使用することもできる。重力ベクトルフィルタ202に対するフィルタパラメータは、重力ベクトルを判定する際に有害である、ノイズなどの重力ベクトル以外の信号パラメータの変化または変動性を検出したことに応答して調整され得る。
【００９０】
ブロック310で、磁気ベクトルフィルタ204は、少なくとも磁力計データおよびジャイロスコープデータを使用して、磁気ベクトルを判定するのを助け、磁気ベクトルはデバイス1600の方位を判定するために使用される。図4および図5さらに例示され、図6で説明されているように、ジャイロスコープ支援磁気ベクトルフィルタ204は、磁気異常除去を実行するための方法も提供し得る。磁気ベクトルフィルタ204は、適応フィルタを使用することができ、図16で説明されている、デバイス1600のコンポーネントを使用して、ソフトウェア、ファームウェア、またはハードウェアで実装され得る。ブロック314で、適応フィルタの少なくとも1つのフィルタパラメータは、1つまたは複数のセンサからの信号パラメータを使用して、プロセッサ1610またはコントローラによって、動的に調整され得る。図3において、ブロック312で、例示することを目的として、加速度計データは、重力ベクトルフィルタ202に対する少なくとも1つのフィルタパラメータを判定する際に使用される。図3には示されていないが、いくつかの実施形態では、磁気ベクトルフィルタ204に対するパラメータを調整する際に利用可能なジャイロスコープデータ、磁力計データ、および/または他のセンサデータを使用することもできる。磁気ベクトルフィルタ204に対するフィルタパラメータは、重力ベクトルを判定する際に有害である、ノイズなどの重力ベクトル以外の信号パラメータの変化または変動性を検出したことに応答して調整され得る。
【００９１】
本発明のいくつかの実施形態では、重力ベクトルフィルタ202または磁気ベクトルフィルタ204に関連付けられている適応フィルタは、カルマンフィルタを使用することで、パラメータの調整を行うことができる。適応フィルタの適応パラメータの例として、限定はしないが、適応フィルタの時定数およびゲインが挙げられる。
【００９２】
上で詳しく説明されているように、図2Aに関して、重力ベクトルおよび磁気ベクトルの判定を分離することは有利であるが、それは、重力ベクトルおよび磁気ベクトルに関連付けられている、ノイズなどのそれぞれのベクトルを判定する際に有害である信号パラメータが異なるからである。判定プロセスを分離することによって、重力ベクトルフィルタ202および磁気ベクトルフィルタ204に対するフィルタパラメータは、プロセッサ1610、またはデバイス1600に結合されているコントローラによって独立して制御され得る。フィルタパラメータを独立して調整することにより、フィルタパラメータの変化の段階をさらに細かくすることができる。たとえば、それぞれのフィルタに対する時定数は、信号パラメータの変化が重力ベクトルフィルタ202または磁気ベクトルフィルタ204に有害であったかどうかに特に基づき調整され得る。
【００９３】
図3に例示されている特定のステップは、本発明の一実施形態による、動作モードを切り替える特定の方法を構成することは理解されるであろう。ステップの他のシーケンスも、代替的実施形態においてしかるべく実行され得る。たとえば、本発明の代替的実施形態は、上で概要を述べたステップを異なる順序で実行することができる。例示のため、ユーザは、第3の動作モードから第1の動作モードに、第4の動作モードから第2の動作モードに、またはこれらのモード間の組み合わせに変更することを選択することができる。さらに、図3に例示されている個別のステップは、個別のステップに適している通りに様々なシーケンスで実行され得る複数のサブステップを含み得る。さらに、特定の用途に応じて追加のステップを加えたり、取り除いたりできる。当業者であれば、プロセスの多くの変更形態、修正形態、および代替的形態を認識し、理解するであろう。
【００９４】
磁気ベクトルフィルタ204は、磁力計データおよびジャイロスコープデータを受信して、磁気ベクトルを判定することができる。ジャイロスコープ1660からのデータは、図4および図5に例示されているように、また図6でさらに説明されているように、磁力計から受信されたデータにおける異常を判定し、除去する際に磁気ベクトルフィルタを補助し得る。
【００９５】
図4および図5は、本開示の1つまたは複数の例示されている態様による少なくとも1つの磁力計1665から受信されたデータを少なくとも1つの口ジャイロスコープ1660から受信されたデータと比較した例示的なグラフを示している。たとえば、図4は、例示的なグラフ400を示しており、直線405は、一定期間にわたる磁場の振幅の測定結果(たとえば、磁力計1665によってキャプチャされる)を表し、さらに、直線410は、これと同じ期間にわたるジャイロスコープの運動の振幅の測定結果(たとえば、ジャイロスコープ1660によってキャプチャされる)を表し得る。例示的なグラフ400において、磁場測定結果の変動(たとえば、直線405の変化で表されるような)は、一般的に、ジャイロスコープ運動測定結果(たとえば、直線410の変化で表されるような)の変動と相関する。磁場測定結果の変動は、ジャイロスコープ運動測定結果の変動と相関するので、たとえば、コンピューティングデバイス1600が運動の作用を受けるときに、デバイス1600に対するジャイロスコープ運動測定結果(たとえば、運動がデバイス1600の方位に変化を引き起こし得るので)とデバイス1600に対する磁場測定結果(たとえば、運動によりデバイス1600がたとえばデバイス1600の姿勢の変化に関連付けられ得るわずかに異なる重力を受け得るので)の両方に変化があるので、ジャイロスコープデータに基づき、磁場データは異常を含まないと判定され得る。一実施形態では、判定は、プロセッサ1610によって実行され、メモリ1635に格納され、メモリ1635から実行される命令に基づくものとしてよい。
【００９６】
図5の例示的なグラフ500において、直線505は、一定期間にわたる磁場の振幅の測定結果(たとえば、磁力計1665によってキャプチャされる)を表し、直線510は、これと同じ期間にわたるジャイロスコープの運動の振幅の測定結果(たとえば、ジャイロスコープ1660によってキャプチャされる)を表し得る。しかし、例示的なグラフ400に示されている状況とは対照的に、例示的なグラフ500では、磁場測定結果の変動(たとえば、直線505の変化で表されるような)は、ジャイロスコープ運動測定結果(たとえば、直線510の変化で表されるような)の変動と相関しない可能性もある。たとえば、磁力計1665によってキャプチャされた磁場測定結果の急な変化を表し得る、直線505上のスパイクは、ジャイロスコープ運動測定結果を表す、直線510における対応する変化と相関しない。したがって、磁場測定結果の急な変化は、たとえば、以下でさらに説明されているような方法および/または方法ステップのうちの1つまたは複数を使用して、異常と判定され得る。一実施形態では、判定は、プロセッサ1610によって実行され、メモリ1635に格納され、メモリ1635から実行される命令を使用して行われるものとしてよい。
【００９７】
図6は、本開示の1つまたは複数の例示的な態様によるジャイロスコープ支援磁気異常除去機能を実行する非制限的な方法を示す簡略化された流れ図である。1つまたは複数の態様によれば、本明細書で説明されている方法および/または方法ステップのどれか、および/またはすべては、たとえば、コンピューティングデバイス16600および/または以下でより詳しく説明されているデバイスなどの、コンピューティングデバイス1600によって、および/またはコンピューティングデバイス1600内に実装され得る。一実施形態では、図6に関して以下で説明されている方法ステップのうちの1つまたは複数は、プロセッサ1610または別のプロセッサなどのデバイス1600のプロセッサによって実装される。それに加えて、または代替的に、本明細書で説明されている方法および/またはステップのどれか、および/またはすべては、メモリ1635または以下でさらに詳しく説明されているような別のコンピュータ可読媒体などのコンピュータ可読媒体上に格納されているコンピュータ可読命令などのコンピュータ可読命令で実装され得る。
【００９８】
ステップ605において、ジャイロスコープデータが受信され得る。一実施形態では、ジャイロスコープデータは、デバイス1600に関連付けられている運動データを含み得る。たとえば、ステップ605において、コンピューティングデバイス1600は、コンピューティングデバイス1600に備えられている1つまたは複数のジャイロスコープ1660からジャイロスコープデータを受信することができる。少なくとも1つの配置構成において、ジャイロスコープデータは、実質的にリアルタイムで受信することができ、そのため、1つまたは複数のジャイロスコープ1660が移動(たとえば、コンピューティングデバイス1600の方位の変化)をキャプチャし、測定し、その移動に関する情報を出力するときに、コンピューティングデバイス1600および/またはコンピューティングデバイス1600に備えられているプロセッサ(たとえば、プロセッサ1610)は、そのようなジャイロスコープデータを受信し、解析し、および/または他の何らかの形で処理する。ジャイロスコープデータは、ジャイロスコープ1660によって認識され、測定され、および/または他の何らかの形で出力されるデータを包含する。ジャイロスコープデータは、コンピューティングデバイス1600が移動している間に取得されるデータに制限されない。たとえば、いくつかの実施形態では、ステップ605は、たとえば、ジャイロスコープの分散を使用して、いつコンピューティングデバイス1600が実質的に静止しているかを判定するステップを含む。いくつかの実施形態では、その代わりに、デバイスが静止していることは、ジャイロスコープ1660を使用することに加えて、またはジャイロスコープ1660を使用する代わりに、ジャイロスコープ1660以外の1つまたは複数のセンサ1650を使用して判定され得る。たとえば、いくつかの実施形態では、デバイス1600に関連付けられているカメラによってキャプチャされる一連の画像が解析され、これにより、デバイスが実質的に静止しているかどうかを判定することができる。他の実施形態では、超音波またはIR情報が使用され得る。
【００９９】
ステップ610において、磁場の変化が検出され得る。たとえば、ステップ610において、デバイス1600は、デバイス1600に備えられている1つまたは複数の磁力計1665から受信された磁場データに基づき磁場の変化を検出することができる。少なくとも1つの配置構成において、デバイス1600は、1つまたは複数の磁力計1665から受信されたデータが閾値量を超える磁場の変化がキャプチャされ、および/または測定されたことを示していない限り、磁場の変化を検出することはあり得ない。
【０１００】
その後、ステップ615において、プロセッサ1610またはデバイス1600に結合されているコントローラによって、磁場の検出された変化が磁気異常であるかどうかの判定がなされ得る。たとえば、ステップ615において、デバイス1600は、受信されたジャイロスコープデータに基づき磁場の検出された変化が磁気異常であるかどうかを判定することができる。
【０１０１】
一実施形態では、デバイス1600は、たとえば、1つまたは複数のジャイロスコープ1660から受信されたジャイロスコープデータが磁場の変化が検出された期間に移動を識別および/または測定しなかったと判定することによってデバイス1600が静止していると判定したことに応答して、および/または判定したときに、磁場の検出された変化が異常であると判定することができる(または判定するように構成され得る)。たとえば、この実施形態では、磁力計1665が磁場の変化を検出したが、ジャイロスコープ1660が位置または他の移動の変化を感知しなかった場合に、磁場の検出された変化が磁気異常であると判定され得る。その一方で、磁力計1665が磁場の変化を検出し、ジャイロスコープ1660が位置または他の移動の変化を感知した場合に、磁場の検出された変化が磁気異常でないと判定され得る。
【０１０２】
別の実施形態では、検出された磁場の変化の異なる量および/またはレベルは、ジャイロスコープ測定データの変化の特定の量および/またはレベルについて予期されたもの、および/または許容可能であると見なされ得る。したがって、方法600は、上で説明されているように、デバイス1600が静止しているときに使用されるだけでなく、デバイス1600が移動しているときも使用され得る。たとえば、磁力計1665によって検出される磁場のわずかな変化は、ジャイロスコープ1660が位置および/または方位のわずかな変化をそれと同時に検出した場合に磁気異常と見なされないこともあり得る。その一方で、磁力計1665によって検出される磁場の大きな変化は、ジャイロスコープ1660が位置および/または方位のわずかな変化をそれと同時に検出したときのみ磁気異常と見なされ得る。
【０１０３】
さらに、この実施形態では、異なるレベルの許容可能性が、磁場の検出された変化の特定の量およびジャイロスコープ測定データの変化の対応する量に対して定義され得る。このようにして、段階的に変わる関数が定義され、磁場の特定の検出された変化が磁気異常であるかどうかを判定する際に使用され得る。許容可能性のレベル、または他のそのような閾値は、たとえば、段階的に変わる関数を使用して計算されるか、またはルックアップテーブルを使用して決定され得る。ルックアップテーブルは、動的にプロセッサ1610によって生成されまたは/およびストレージデバイス1625内に格納され、一時的に作業用メモリ1635からアクセスされ得る。たとえば、ルックアップテーブルでは、複数のジャイロスコープ測定結果の各々について許容可能な磁気の変化の閾値レベルを定義することができる。
【０１０４】
ステップ615において、磁場の検出された変化は磁気異常であると判定された場合、ステップ620において、磁気異常が軽減され得る。たとえば、ステップ620において、デバイス1600は、磁気異常を軽減するため1つまたは複数の技術を実装および/または実行することができる。
【０１０５】
一実施形態では、デバイス1600は、磁気異常の軽減を、異常に対応する磁力計1665から受信された磁場データを無視することによって行うことができる。たとえば、デバイス1600が、特定の期間においてキャプチャされた磁場情報が磁気異常に対応すると判定した場合、デバイス1600は、通常使用される場合の1つまたは複数の目的に関して情報が使用されないようにすることによってそのような情報を無視することができる。これは、たとえば、磁場情報がユーザ入力として1つまたは複数のソフトウェアアプリケーションに供給されないようにするステップ、磁場情報がデバイス1600に備えられている1つまたは複数のセンサを較正する際に使用されないようにするステップ、および/または同様のステップを含み得る。いくつかの実施形態では、磁場情報は、そのまま、使用のため報告され、および/または掲示され得るが、低い信頼度値に関連付けられるか、または低い信頼度値で符号化され得る。この方法で、磁場情報を使用するアプリケーションは、磁場情報に依存するか、または利用するかどうか、およびその程度を判定することができる。
【０１０６】
別の実施形態では、デバイス1600(つまり、プロセッサ1610またはコントローラロジック)は、磁場情報を処理するために使用されるフィルタの時定数を大きくすることによって磁気異常を軽減することができる。これは、より長い期間にわたって磁場データの平均をとることによって磁場データの「スパイク」または他の異常変化を平滑化する実用的効果を有するものとしてよく、これにより、磁気異常をノイズで「かき消す」ことができる。少なくとも1つの配置構成において、フィルタは、カルマンフィルタとすることができる。1つまたは複数の配置構成において、この方法で(たとえば、磁気異常が検出されたときに)磁場データを平滑化して、不正な、および/または誤解を招く恐れのある磁場情報を他のソフトウェアアプリケーションに供給するのを回避することが望ましい場合がある。たとえば、誤解を招く恐れのある、および/または他の何らかの形で不正な磁場情報がユーザ入力として他のアプリケーションに供給された場合、そのような情報により、他のアプリケーションが予期せず実行したり、不具合を生じたり、フリーズしたり、および/または他の何らかの形でデバイス1600のユーザに不便を掛ける可能性がある。
【０１０７】
上で説明されているように、方法600に関して説明されている磁場情報の変動を軽減し、および/または平滑化する技術は、静止状態のシナリオに適用可能であるだけでなく、デバイス1600が回転している可能性のある状況にも適用可能である。一実施形態では、ジャイロスコープ測定データが、測定された回転を示している場合、回転情報(予測された磁場がどのようなものであろうかということであってもよい)を使用して磁気ベクトルが射影され得る。測定された磁場が射影された予測からかなりずれている場合、ステップ615で、測定が異常であると判定され得る。その後、フィルタの時定数が、ステップ620で高められ得る(または代替的に、データは、上で説明されているように除去され、および/または無視される可能性もある)。
【０１０８】
その一方で、ステップ615において、磁場の検出された変化が磁気異常でないと判定された場合、磁力計1665によって供給される磁場情報は、プロセッサ1610、コントローラ、または他のロジックによって通常どおり処理され得る。たとえば、ステップ625において、デバイス1600は、様々な異なる目的のうちの1つまたは複数のために磁場情報を使用することができる。デバイス1600は、たとえば、そのような磁場情報を、磁場情報がユーザ入力として取り扱われ得るソフトウェアアプリケーションに供給することができる。一例において、ソフトウェアアプリケーションは、ユーザがデバイス1600を傾け、および/または他の何らかの動かし方をしてビデオゲームに表示される乗物を運転し、操縦するレーシングゲームなどのビデオゲームであってよい。別の例では、ソフトウェアアプリケーションは、ユーザがデバイス1600を回し、および/または他の何らかの動かし方をしてマップの方位を変えることができるインタラクティブマップアプリケーションなどのナビゲーションアプリケーションであってよい。たとえば、インタラクティブマップアプリケーションは、コンパスをシミュレートし、磁場情報を使用してデバイス1600の姿勢を判定することができる。
【０１０９】
図6に例示されている特定のステップは、本発明の一実施形態による、動作モードを切り替える特定の方法を構成することは理解されるであろう。ステップの他のシーケンスも、代替的実施形態においてしかるべく実行され得る。たとえば、本発明の代替的実施形態は、上で概要を述べたステップを異なる順序で実行することができる。例示のため、ユーザは、第3の動作モードから第1の動作モードに、第4の動作モードから第2の動作モードに、またはこれらのモード間の組み合わせに変更することを選択することができる。さらに、図6に例示されている個別のステップは、個別のステップに適している通りに様々なシーケンスで実行され得る複数のサブステップを含み得る。さらに、特定の用途に応じて追加のステップを加えたり、取り除いたりできる。当業者であれば、プロセスの多くの変更形態、修正形態、および代替的形態を認識し、理解するであろう。
【０１１０】
拡張重力ベクトルフィルタ
重力ベクトルフィルタ202は、重力ベクトルを判定する。重力ベクトルが判定された後、重力ベクトルの成分が別のフィルタを通して処理される。さらに、重力ベクトルの他の関数は、重力ベクトルを使用して計算され得る。たとえば、傾斜角は、重力ベクトルの関数から導出され得る。傾斜角も、フィルタリングされる。別のフィルタに重力ベクトルの成分および関数を通すことで、アプリケーションで出力使用できるようになるまでにさらに時間がかかることがある。図7Aは、センサ出力からフィルタリングされた傾きを導出するためのシステムを例示する簡略化されたブロック図である。このシステムでは、ブロック705で、重力ベクトルフィルタ202が重力ベクトルの成分を導出する。ブロック710で、重力ベクトルを処理して傾斜を導出するが、それは傾斜が重力ベクトルの成分の関数だからである。ブロック715で、ブロック710において導出された傾斜は、さらに平滑化を必要としており、使用のためアプリケーションに転送される前にフィルタリングされる。
【０１１１】
本発明の一実施形態では、重力ベクトルを計算し、関数(傾斜角など)および重力ベクトル成分を同時に平滑化するために拡張重力ベクトルフィルタが使用される。同時処理で、時間を短縮し、アプリケーションに対してデータが利用可能になる前に計算された傾斜角を別のフィルタに通すステップをなくすことによって性能向上を図る。カルマンフィルタは、拡張重力ベクトルフィルタに使用されるものとしてよい。
【０１１２】
図7Bは、フィルタリングされた傾斜角および重力ベクトルのフィルタリングされた成分を計算するための拡張重力ベクトルフィルタ720の非制限的な実装を示す簡略化されたブロック図である。拡張重力ベクトルフィルタ720の一態様において、カルマンフィルタまたは他の任意の適応フィルタが使用され得る。拡張重力ベクトルフィルタ720は、入力として加速度計データおよびジャイロスコープデータとともに重力ベクトルフィルタ202の関数をとり、重力ベクトルのフィルタリングされた成分およびフィルタリングされた傾斜角を出力することができる。
【０１１３】
拡張重力ベクトルフィルタを使用すると、結果として、計算された角度の平滑化が改善され、遅延が小さくなり、および/または精度が向上するが、これはカメラの遠近法補償またはジッタ補正またはデバイス1600上でゲームをする場合などのアプリケーションに特に重要である。たとえば、ゲームをしている間に、傾斜を見つけて、その傾斜に反応することは、ゲームをするユーザエクスペリエンスに著しい違いをもたらすか、またはプレーヤーに、他のデバイス上でプレーしている他のプレーヤーとオンラインで競争しているときに競争上の優位性を与え得る。
【０１１４】
図8Aは、センサに関連付けられているフィルタを改善するための方法の非制限的な例を示す簡略化された流れ図である。プロセス800は、ハードウェア(回路、専用ロジックなど)、ソフトウェア(汎用コンピューティングシステムまたは専用マシン上で実行されるようなもの)、ファームウェア(組み込みソフトウェア)、またはこれらの組み合わせを備えるプロセッサ1610または他の処理ロジックによって実行され得る。一実施形態では、プロセス800は、図16に示されているような1つまたは複数のコンピュータデバイス1600によって実行される。一実施形態では、センサ1650は、図16で説明されているデバイスのフィルタリングおよび処理コンポーネントによるさらなる処理のためにセンサ入力を取得する。
【０１１５】
カルマンフィルタなどの適応フィルタは、重力ベクトルまたは磁気ベクトルなどの第1の信号パラメータ、および第1の信号パラメータを導出する際に有害であるノイズおよび誤差などの他の信号パラメータを含む複数の信号パラメータを取得する。いくつかの実施形態では、たとえば、図2に関して説明されているように、加速度計データおよびジャイロスコープデータは、重力ベクトルフィルタ202で一緒に処理され、磁力計データおよびジャイロスコープデータは、磁気ベクトルフィルタ204で一緒に処理される。
【０１１６】
ブロック802で、フィルタなどのデバイス1600のコンポーネントは、信号からの第1の信号パラメータのフィルタリングのために第1のセンサから信号を受信する。ブロック804で、フィルタなどのデバイス1600のコンポーネントが、信号からの複数の信号パラメータのうちの第2の信号パラメータの変動性の変化を検出する。一実施形態では、第1のセンサは加速度計1655であり、第1の信号パラメータは重力ベクトルであり、第2の信号パラメータは重力ベクトル以外の信号パラメータとすることができる。第2の信号パラメータは、デバイス1600の信号ノイズ、測定誤差、センサ較正誤差、または直線加速度のうちの1つまたは複数であってよい。別の実施形態では、第1のセンサは磁力計1665であり、第1の信号パラメータは磁気ベクトルであり、第2の信号パラメータは磁気ベクトル以外の信号パラメータとすることができる。第2の信号パラメータは、信号ノイズ、センサ較正誤差、または過渡磁場のうちの1つまたは複数であってよい。
【０１１７】
ブロック806で、プロセッサ1610またはデバイス1600に結合されているコントローラなどの、デバイス1600のコンポーネントによって実行される方法により、信号をフィルタリングするために使用される少なくとも1つのフィルタパラメータを調整する。一実施形態では、少なくとも1つのフィルタパラメータは、適応フィルタの時定数を含むことができ、フィルタに対する時定数は、フィルタの入力データに関連付けられている第2の信号パラメータの変動性に正比例する。加速度計1655および/または磁力計1665の読み取り値に持ち込まれたノイズが小さい場合に、時定数が動的に調整され得る。たとえば、この方法は、デバイスが実質的に静止していると検出したことに応答して、重力ベクトルフィルタ202に対する時定数を小さくすることができる。実質的に静止しているデバイスでは、図2Aで説明されているように、重力ベクトルを計算するために直線加速度によって持ち込まれたノイズのレベルは小さくなるものとしてよい。静止しているデバイス1600に関連付けられている加速度計データは、動いているデバイスに比べて正確であるとしてよいので、データサンプルが少なくても重力ベクトルを計算するのに十分である。したがって、重力ベクトルフィルタ202、および同様に、磁気ベクトルフィルタ204に対する時定数の動的調整により、結果として、潜在的に高速で正確な読み取りが行える。
【０１１８】
別の実施形態では、少なくとも1つのフィルタパラメータは、適応フィルタに対するゲインを含むものとしてよく、適応フィルタに対するゲインは、フィルタの入力データに関連付けられている第2の信号パラメータの変動性におおよそ反比例するものとしてよい。たとえば、デバイス1600が静止していると検出した後、デバイス1600のコンポーネントは、サンプリングされたデータのゲインまたは頻度を増大させることもできる。重力ベクトルを導出するためのデータサンプルは、デバイス1600が実質的に静止している間により高い信頼度で収集され得るので、重力ベクトルを計算する際に、より短い期間(すなわち、フィルタに対する短い時定数)により多くのサンプルがあれば十分であるものとしてよい。図16に例示されているプロセッサ1610などのプロセッサまたはコントローラまたはフィルタのコンポーネントは、フィルタの1つまたは複数の信号パラメータ、たとえば、時定数および/またはフィルタのゲインを調整することができる。いくつかの実施形態では、フィルタは、適応フィルタであり、適応フィルタの少なくとも1つのフィルタパラメータは、動的に調整可能である。いくつかの実装では、適応フィルタは、カルマンフィルタとすることができる。
【０１１９】
図8Aに例示されている特定のステップは、本発明の一実施形態による、動作モードを切り替える特定の方法を構成することは理解されるであろう。ステップの他のシーケンスも、代替的実施形態においてしかるべく実行され得る。たとえば、本発明の代替的実施形態は、上で概要を述べたステップを異なる順序で実行することができる。例示のため、ユーザは、第3の動作モードから第1の動作モードに、第4の動作モードから第2の動作モードに、またはこれらのモード間の組み合わせに変更することを選択することができる。さらに、図8Aに例示されている個別のステップは、個別のステップに適している通りに様々なシーケンスで実行され得る複数のサブステップを含み得る。さらに、特定の用途に応じて追加のステップを加えたり、取り除いたりできる。当業者であれば、プロセスの多くの変更形態、修正形態、および代替的形態を認識し、理解するであろう。
【０１２０】
図8Bは、センサに関連付けられているフィルタを改善するための方法の非制限的な例を示す別の簡略化された流れ図である。プロセス800は、ハードウェア(回路、専用ロジックなど)、ソフトウェア(汎用コンピューティングシステムまたは専用マシン上で実行されるようなもの)、ファームウェア(組み込みソフトウェア)、またはこれらの組み合わせを備えるプロセッサ1610または他の処理ロジックによって実行され得る。一実施形態では、プロセス801は、図16に示されているような1つまたは複数のコンピュータデバイス1600によって実行される。一実施形態では、センサ1650は、図16で説明されているデバイスのフィルタリングおよび処理コンポーネントによるさらなる処理のためにセンサ入力を取得する。したがって、センサ1650はどれも、以下で説明されている第1のセンサを含み得る。
【０１２１】
カルマンフィルタなどの適応フィルタは、重力ベクトルまたは磁気ベクトルなどの信号パラメータ(図8Bに示されている例では第2の信号パラメータと称されている)、および第2の信号パラメータを導出する際に有害であるノイズおよび誤差などの他の信号パラメータ(図8Bに示されている例では第1の信号パラメータと称されている)を含む複数の信号パラメータを取得することができる。いくつかの実施形態では、たとえば、図2に関して説明されているように、加速度計データおよびジャイロスコープデータは、重力ベクトルフィルタ202で一緒に処理され、磁力計データおよびジャイロスコープデータは、磁気ベクトルフィルタ204で一緒に処理される。
【０１２２】
ブロック808において、フィルタなどのデバイス1600のコンポーネントが、第1のセンサから信号を受信することができる。いくつかの実施形態では、信号は、フィルタに結合され、センサデータを受信するように構成されている受信機または他のインターフェース(図示せず)で受信され得る。ブロック810で、フィルタなどのデバイス1600のコンポーネントが、信号からの複数の信号パラメータのうちの第1の信号パラメータの変動性の変化を検出し得る。ブロック812で、信号からの第2の信号パラメータをフィルタリングするために使用されるフィルタの少なくとも1つのフィルタパラメータは、第1の信号パラメータの変動性における検出された変化に少なくとも一部は基づき調整され得る。図16に例示されているプロセッサ1610などのプロセッサまたはコントローラまたはフィルタのコンポーネントは、フィルタの1つまたは複数の信号パラメータ、たとえば、時定数および/またはフィルタのゲインを調整することができる。いくつかの実施形態では、このフィルタは、適応フィルタであってよく、適応フィルタの少なくとも1つのフィルタパラメータは、動的に調整可能である。いくつかの実装では、適応フィルタは、カルマンフィルタとすることができる。
【０１２３】
図8Bに例示されている特定のステップは、本発明の一実施形態による、動作モードを切り替える特定の方法を構成することは理解されるであろう。ステップの他のシーケンスも、代替的実施形態においてしかるべく実行され得る。たとえば、本発明の代替的実施形態は、上で概要を述べたステップを異なる順序で実行することができる。例示のため、ユーザは、第3の動作モードから第1の動作モードに、第4の動作モードから第2の動作モードに、またはこれらのモード間の組み合わせに変更することを選択することができる。さらに、図8Bに例示されている個別のステップは、個別のステップに適している通りに様々なシーケンスで実行され得る複数のサブステップを含み得る。さらに、特定の用途に応じて追加のステップを加えたり、取り除いたりできる。当業者であれば、プロセスの多くの変更形態、修正形態、および代替的形態を認識し、理解するであろう。
【０１２４】
ジャイロスコープをオフにすることによる節電
図9は、フィルタシステムに関連付けられている節電のための非例示的なプロセスを示す簡略化された流れ図である。プロセス900は、ハードウェア(回路、専用ロジックなど)、ソフトウェア(汎用コンピューティングシステムまたは専用マシン上で実行されるようなもの)、ファームウェア(組み込みソフトウェア)、またはこれらの組み合わせを備える処理ロジックによって実行され得る。一実施形態では、プロセス900は、図16に示されているような1つまたは複数のコンピュータデバイス1600によって実行される。一実施形態では、センサ1650は、図16で説明されているデバイスのフィルタリングおよび処理コンポーネントによるさらなる処理のためにセンサ入力を取得する。
【０１２５】
ブロック902で、デバイス1600のコンポーネントは、デバイス1600が静止状態に遷移したと判定し得る。いくつかの実装では、そのような判定は、加速度計1655からの加速度計データ、または他のセンサデータを使用して行える。
【０１２６】
ブロック904で、デバイスは実質的に静止しているので、方位データに変化はなく、方位データを収集するための1つまたは複数のセンサおよび/またはフィルタが低電力状態に遷移され得る。いくつかの実装では、1つまたは複数のセンサは、ジャイロスコープ1660および/または磁力計1665を備えることができる。いくつかの実装では、1つまたは複数のフィルタは、磁気ベクトルフィルタ204を含んでいてもよい。1つまたは複数のセンサおよび/またはフィルタを低電力状態に遷移させるステップは、センサまたはフィルタのスイッチオフまたはデューティサイクリングを行うステップを含み得る。
【０１２７】
ジャイロスコープ1660は、回転変化などの、方位データを判定するためにもっぱら使用され得る。いくつかの実装では、加速度計1655に関して、ジャイロスコープ1660は、デバイス1600からより多くの電力を引き出す。節電のため、本発明の態様では、デバイス1600が静止または実質的静止の位置にあるときに電力を食うジャイロスコープ1660をオフにすることができる。デバイス1600が静止または実質的に静止しているときに、補償する回転変化はなく、ジャイロスコープ1660は不要な場合がある。重力ベクトルフィルタ202は、加速度計1655のみのフィルタに切り替えることができる。それに加えて、すでに説明されているように、ジャイロスコープ1660はフィルタの誤差に寄与し得る。デバイス1600が静止しているときには、ジャイロスコープ1660をオフにして、フィルタの誤差を低減することができる。したがって、ジャイロスコープ1660をオフにすることで、節電および出力精度の向上を動的に行うことができる。
【０１２８】
図10に示されているように、加速度計1655からの加速度計データは、節電のためデバイス1600が移動しているか、または静止しているかどうかを判定することを目的としてジャイロスコープ1660、磁力計1665、または/および磁気フィルタを補助する際に使用され、方位データ(すなわち、重力ベクトルまたは磁気ベクトル)を判定するためには使用され得ない。一実施形態では、ジャイロスコープ1660を低電力状態に遷移させることに加えて、デバイス1600が静止していることを検出したことに応答して、磁力計1665および磁気ベクトルフィルタ204も、低電力デバイスへ遷移され得るが、それは、デバイス1600が静止しているときに、デバイス1600の方位は変化せず、磁力計1665および磁気ベクトルフィルタからの結果は必要ない場合があるからである。
【０１２９】
図9に例示されている特定のステップは、本発明の一実施形態による、動作モードを切り替える特定の方法を構成することは理解されるであろう。ステップの他のシーケンスも、代替的実施形態においてしかるべく実行され得る。たとえば、本発明の代替的実施形態は、上で概要を述べたステップを異なる順序で実行することができる。例示のため、ユーザは、第3の動作モードから第1の動作モードに、第4の動作モードから第2の動作モードに、またはこれらのモード間の組み合わせに変更することを選択することができる。さらに、図9に例示されている個別のステップは、個別のステップに適している通りに様々なシーケンスで実行され得る複数のサブステップを含み得る。さらに、特定の用途に応じて追加のステップを加えたり、取り除いたりできる。当業者であれば、プロセスの多くの変更形態、修正形態、および代替的形態を認識し、理解するであろう。
【０１３０】
適応フィルタとしてのカルマンフィルタの使用
重力ベクトルまたは磁気ベクトルを計算するためのほとんどの伝統的解法では、一次フィルタを時定数およびゲインなどの固定フィルタパラメータと一緒に利用する。重力ベクトルフィルタ202にカルマンフィルタなどの適応フィルタを使用するのは、カルマンフィルタでは上で説明されているように重力および磁気ベクトルを計算する際にパラメータの調節に対して柔軟に対応できるので有益である。カルマンフィルタは、ノイズなどの望ましくない信号パラメータ、および他の不正確な要因を除去するか、または補償するために使用することができ、ある時間(時定数によって決定される)にわたって測定結果を観察することによって測定結果の真の値により近い値を生成することができる。図11は、図16で説明されているデバイス1600によって実装される本開示の1つまたは複数の例示的な態様によるカルマンフィルタの例示的な実装を示している。カルマンフィルタを使用することによる性能の相違は、運動と静止状態との間にいくつかの高速な遷移がある場合に特に顕著なものとなり得る。
【０１３１】
センサ情報のカルマンフィルタベースの融合は、内在するセンサの分散に基づき融合されたセンサの各々について最適なゲインをもたらし得る。カルマンフィルタを使用する別の異なる利点として、カルマンフィルタの設計において、入力に関連付けられているノイズ(すなわち、望ましくない信号パラメータ)を使用することによって、異なる入力に重み付けすることができるという点が挙げられる。本質的に、カルマンフィルタへの異なる入力は、比例する形で異なる重みを有することができる。したがって、加速度計1655の入力は、加速度計1655の入力に関連付けられているノイズが小さい場合に大きな重みを付けられ、ジャイロスコープ1660の入力に関連付けられているノイズが小さい場合にジャイロスコープ1660の入力に大きく依存し得る。このようにして、ノイズの作用をあまり受けていないか、またはより正確に動作していると判定されたセンサは、強調され、その一方で、高いノイズに関連付けられているセンサ出力は、低減されるか、または排除され得る。
【０１３２】
一実施形態では、ジャイロスコープ1660および加速度計1655の各々に使用されるそれぞれのゲインは、独立して調整され得る。したがって、最小量のノイズの作用を受けているセンサのゲインは、大きくなり、最大量のノイズの作用を受けているセンサのゲインは、小さくなり得る。いくつかの実施形態では、ゲインは、推定された望ましくないパラメータにおおよそ反比例し、ゲインの調整は、望ましくない信号パラメータの変動の逆数におおよそ比例する。さらに、伝統的に、ジャイロスコープ1660および加速度計1655は、重力ベクトルフィルタ202に入力を送る前に事前較正される。しかし、カルマンフィルタが重力ベクトルフィルタ202において使用される場合、ジャイロスコープ1660および加速度計1655の出力は、重み付けパラメータとして作用するノイズなどの、関連する望ましくない信号パラメータとともに重力ベクトル202に直接送られ、フィルタの伝統的実装では必要である追加のステップをなくすことができる。
【０１３３】
ジャイロスコープのオフセットも、カルマンフィルタの一部として計算され、これによりジャイロスコープ1660の出力を、アプリケーションに対して早いうちに利用できるようにすることができる。ジャイロスコープ1660のオフセットを早い段階で利用可能にすることは、アプリケーションがジャイロスコープ1660の出力に依存しているシナリオでは有利である。たとえば、カメラアプリケーションは、カメラ画像中の遠近法補償のようなアプリケーションについて高速で、正確なジャイロスコープデータを必要とする。さらに、カルマンフィルタにおいてオフセットを計算することで、ジャイロスコープ1660を事前較正するプロセスが不要になる。その代わりに、ジャイロスコープ1660は、フィルタを実行している間に構成され得る。
【０１３４】
ジャイロスコープのオフセットは、デバイスが静止しているときにジャイロスコープの出力に(ランダムノイズを含む小さな誤差とともに)ほぼ等しいものとしてよい。多くの安価なジャイロスコープが、室温で1秒当たり数度ものオフセット、それに加えて、温度範囲にわたる実質的なオフセットドリフトを有し、これにより、オフセットが較正されるまでジャイロスコープは事実上使用不可能になり得る。
【０１３５】
デバイスが静止しているときに、ジャイロスコープのオフセットは、静止状態の時間間隔にわたってジャイロスコープ1660の出力を単に平均することによってカルマンフィルタなしで較正され得る。しかし、いくつかの使用事例において、運動中にもオフセットを較正する必要がある場合がある。たとえば、ユーザによっては電話機をデスク上に静止させておくことは滅多になく、むしろ、手に持つか、またはポケットに入れてあり、したがって、常に何らかの運動がある。そのような状況では、カルマンフィルタは、運動中にオフセットを較正することができるので有用である。これは、デバイスの方位が、ジャイロスコープ1660と無関係に加速度計1655および磁力計1665の測定結果から観察可能であるからである。したがって、加速度計1655および磁力計1665から計算されたデルタ時間(dt)にわたる方位変化(dOrientaionAMと称される)、およびジャイロスコープからのデルタ方位(ジャイロスコープ1660の信号積分によって決定される)(dOrientationGと称される)が与えられると、(dOrientationG-dOrientationAM)/dtはジャイロスコープ1660のオフセットの推定値を与える。複数の測定結果にわたって平均すると、オフセット推定値から望ましいレベルの精度が得られる。
【０１３６】
センサの同期化
デバイス1600などのコンピューティングデバイス上で、オペレーティングシステムがハードウェアとアプリケーションとの間のインターフェース層を構成する。アプリケーションは、オペレーティングシステム層を通じてハードウェアが提供する、センサデータへのアクセスなどの機能を利用する。オペレーティングシステムでは、ハードウェアから特定の様式でフォーマットされた入力を予期し、基盤となるハードウェアに関係なく統一された様式でアプリケーションがデータにアクセスするためのAPIを提供する。オペレーティングシステムのこれらの特性は、ハードウェアからアプリケーションに正確なセンサデータを送る上で制約となり得る。たとえば、オペレーティングシステム(Androidなど)では、統一されたタイムスタンプのセンサデータ(回転/四元数座標)を予期し得る。そのような制限は、豊富にある正確なセンサデータを提供するハードウェアの能力を減じる。デバイス1600のコンポーネントによって実行される、本発明の実施形態はセンサデータを、センサの精度を実質的に損なうことなく、OSによって予期されている様式でオペレーティングシステムに送る。
【０１３７】
図12Aは、センサ入力の様々なソースを同期させるための本発明の非制限的な実施形態を示す簡略化された時系列流れ図である。シーケンス1200は、ハードウェア(回路、専用ロジックなど)、ソフトウェア(汎用コンピューティングシステムまたは専用マシン上で実行されるようなもの)、ファームウェア(組み込みソフトウェア)、またはこれらの組み合わせを備える処理ロジックによって実行され得る。一実施形態では、シーケンス1200は、図16に示されているような1つまたは複数のコンピュータデバイス1600によって実行される。一実施形態では、センサ1650は、図16で説明されているデバイスのフィルタリングおよび処理コンポーネントによるさらなる処理のためにセンサ入力を取得する。
【０１３８】
回転ベクトル、したがって方位データは、重力ベクトルフィルタ202および磁気ベクトルフィルタ204の結果から導出される。現実のシステムでは、センサは異なるサンプリングレートでサンプリングされ得る。しかし、OSフレームワークおよびアプリケーションが同期した様式で統一されたタイムスタンプを持つセンサデータから導出された方位データを取得することが望ましい場合がある。
【０１３９】
共通の時間に対応する統一された一組の方位データが、基盤のハードウェア、ファームウェア、および/またはソフトウェアなどの、本発明の態様によってOSフレームワークに提示されるものとしてよく、重力ベクトルフィルタ202および磁気ベクトルフィルタ204は、ジャイロスコープサンプルが届くごとに更新される。加速度計1655および磁力計1665は、ジャイロスコープのタイムスタンプと異なるサンプル時間をたまたま有している場合、加速度計1655および磁力計1665の出力は補間され、ジャイロスコープ1660の時間に同期され得る。
【０１４０】
図12Aは、ジャイロスコープサンプルが届くことでマークされる3つの異なるタイムゾーンを示している。時刻T1に、第1のジャイロスコープサンプル1202が届き、時刻T2に、第2のジャイロスコープサンプル1206が届き、時刻T3に、第3のジャイロスコープサンプル1210が届く。ブロック1216は、T0からT1までの時間を表し、ブロック1218は、T1からT2までの時間を表し、ブロック1220は、T2からT3までの時間を表す。図12Aを参照すると、時刻T1に、ジャイロスコープサンプル1202が、重力ベクトルフィルタ202および磁気ベクトルフィルタ204の両方に届く。ブロック1212および1222に示されているように、本発明の実施形態は、前の重力ベクトルフィルタ202および磁気ベクトルフィルタ204の結果を先行する時間T0からT1に伝搬する(たとえば、いくつかの実施形態では回転する)ことができる。結果がジャイロスコープ1660のタイムスタンプに同期された後、重力ベクトルフィルタ202および磁気ベクトルフィルタ204の出力は、OSフレームワーク、アプリケーション、または方位データを要求する他のコンポーネントに方位データとして出力され得る。同様に、ブロック1214および1226に示されているように、時刻T2で、先行する時刻T1からT2までの前の重力ベクトルフィルタ202および磁気ベクトルフィルタ204の結果は、T2に伝搬され、ジャイロスコープサンプル1206と同期され得る。
【０１４１】
センサがサンプリングされるときに、データ平均処理がプロセッサ1610または他のコントローラロジックによって実行され得る。図12Aでは、ブロック1224に示されているように、加速度計サンプル1204がT1からT2までの間に届く。重力ベクトルフィルタ202は、加速度計の測定結果を、T1からサンプルが届いたタイムスタンプまで平均し、それを一次フィルタに受け渡す。同様に、図12Aでは、ブロック1228に示されているように、磁力計サンプル1208がT2からT3までの間に届く。重力ベクトルフィルタ202は、加速度計の測定結果を、T1からサンプルが届いたタイムスタンプまで平均し、それを一次フィルタに受け渡す。
【０１４２】
いくつかの実装では、重力フィルタと磁気フィルタの平均をとるステップは、ジャイロスコープのタイムスタンプへの加速度計1655および磁力計1665の伝搬を介してジャイロスコープと同期するステップも意味する。たとえば、加速度計サンプル1204は、ジャイロスコープの時刻T2へ伝搬され、磁力計サンプル1208は、ジャイロスコープの時刻T3へ伝搬され得る。
【０１４３】
ジャイロスコープのサンプリングレートで、データ回転がプロセッサ1610または他のコントローラロジックによって実行され得る。図12Aを参照すると、時刻T1で、ジャイロスコープサンプル1202が、重力ベクトルフィルタ202および磁気ベクトルフィルタ204の両方に届くことがわかる。システムは、前の重力および磁気ベクトルフィルタ204の結果を先行する時刻T0からT1に伝搬させる(1212に示されているように)。結果が計算され、ジャイロスコープのサンプルのタイムスタンプに同期された後、データの平均からの大きさベクトルが回転ベクトルとともに出力される。同様に、T2およびT3で、ジャイロスコープのタイムスタンプと一致するように加速度計1655および磁力計1665の読み取り値がそれぞれのフィルタを通して伝搬される。
【０１４４】
いくつかの実装では、同期(伝搬)に対するデータ回転は、デバイスが回転しているときのみ実行され得るが、それは、デバイスが静止している間、デバイスが静止していてデータ回転が必要でない場合に加速度計1655および磁力計1665の測定結果がタイムスタンプに関係なくほぼ一定であるからである。運動しているデバイスの場合、ジャイロスコープ1660のセンサデータが利用可能であるので、伝搬は、重力フィルタについて生成される回転と同様に、ジャイロスコープ1660から計算された回転行列を使用して正確に実行され得る。唯一の違いは、GravFilter.Rotate;MagFilter.Rotateに対する回転行列が、gyro(i)*(Tgyro(i) -T(gyro(i-1))から計算できるという点であるが、加速度については、回転行列に対するTgyroへの伝搬はgyro(i)*(Taccel-tgyro(i))から計算され得る。
【０１４５】
したがって、いくつかの実施形態では、センサの平均は、サンプルが様々なセンサから受信されるとともに実行され累算され、回転ベクトルが、ジャイロスコープサンプル(すなわち、1202、1206、および1210)を受け取ったときに生成される。しかし、回転ベクトルおよび大きさは、ジャイロスコープサンプルが受信される速度と同期される統一されたタイムスタンプとともに出力され、これにより、オペレーティングシステムは、統一されたタイムスタンプのセンサデータを供給される。
【０１４６】
図12Aに例示されている特定のシーケンスステップは、本発明の一実施形態による、動作モードを切り替える特定の方法を構成することは理解されるであろう。ステップの他のシーケンスも、代替的実施形態においてしかるべく実行され得る。たとえば、本発明の代替的実施形態は、上で概要を述べたステップを異なる順序で実行することができる。例示のため、ユーザは、第3の動作モードから第1の動作モードに、第4の動作モードから第2の動作モードに、またはこれらのモード間の組み合わせに変更することを選択することができる。さらに、図12Aに例示されている個別のステップは、個別のステップに適している通りに様々なシーケンスで実行され得る複数のサブステップを含み得る。さらに、特定の用途に応じて追加のステップを加えたり、取り除いたりできる。当業者であれば、プロセスの多くの変更形態、修正形態、および代替的形態を認識し、理解するであろう。
【０１４７】
図12Bは、センサ入力の様々なソースを同期させるための本発明の非制限的な実施形態を示す簡略化された時系列流れ図である。プロセス1201は、ハードウェア(回路、専用ロジックなど)、ソフトウェア(汎用コンピューティングシステムまたは専用マシン上で実行されるようなもの)、ファームウェア(組み込みソフトウェア)、またはこれらの組み合わせを備える処理ロジックによって実行され得る。一実施形態では、プロセス1201は、図16に示されているような1つまたは複数のコンピュータデバイス1600によって実行される。
【０１４８】
ブロック1252で、処理ロジックまたはフィルタなどのデバイスのコンポーネントによって実行される方法が、複数のセンサ入力から共通のセンサ入力を判定する。ブロック1254で、この方法は、共通のセンサ入力と方位データを生成するための出力を同期させ、方位データは複数のセンサ入力を使用して生成される、手段とを備えることができる。
【０１４９】
図12Bに例示されている特定のシーケンスステップは、本発明の一実施形態による、動作モードを切り替える特定の方法を構成することは理解されるであろう。ステップの他のシーケンスも、代替的実施形態においてしかるべく実行され得る。たとえば、本発明の代替的実施形態は、上で概要を述べたステップを異なる順序で実行することができる。例示のため、ユーザは、第3の動作モードから第1の動作モードに、第4の動作モードから第2の動作モードに、またはこれらのモード間の組み合わせに変更することを選択することができる。さらに、図12Bに例示されている個別のステップは、個別のステップに適している通りに様々なシーケンスで実行され得る複数のサブステップを含み得る。さらに、特定の用途に応じて追加のステップを加えたり、取り除いたりできる。当業者であれば、プロセスの多くの変更形態、修正形態、および代替的形態を認識し、理解するであろう。
【０１５０】
四元数システムの第4の成分の導出
いくつかのOSフレームワーク(Google Androidなど)では、アプリケーションは、第4の成分へのアクセスなしのまま、3つの回転ベクトル(四元数)XYZ成分のみにアクセスすることができ、いくつかの場合において、アプリケーションは、第4の成分を導出することを必要とする場合がある。四元数回転システムにおける第4の成分は、角度サイズ(W)である。四元数システムは、4つの要素を含み、1つは、角度サイズに関与し、3つは、XYZの成分および射影の角度方向に関与する。四元数システムにおいて、4つの要素の平方和は1に等しい。したがって、アプリケーションは、3つの要素が存在する場合の第4の要素の大きさを再生成することができる。しかし、第4の成分の平方は、1から残り3つの成分の平方和を引いた値に等しいので、第4の角度の符号または方位は、アプリケーション層によって再生成され得ず、曖昧な要素を第4の成分に残す。
【０１５１】
四元数システムの4つの成分すべてがOSフレームワーク層からアプリケーション層に利用可能であった場合、符号はアプリケーション層に伝達されるので角度サイズが正であろうと負であろうと問題になっていないであろう。しかし、いくつかのOSフレームワーク(Google Androidなど)は、四元数角度を剥ぎ取り、3つの残りのXYZ成分のみを搬送する。アプリケーション層における方位データの消費者が角度符号を再生成した場合、結果として得られる符号は、アプリケーションにとって曖昧なものとなる。
【０１５２】
実施形態では、第4の要素が常に正であるように局所的回転ベクトルを生成することによって混同と曖昧さとを回避することができる。局所的回転ベクトルは、回転ベクトルのXYZ成分を調整することによって生成され得る。したがって、四元数が第4の要素から剥ぎ取られると、クライアントアプリケーションは、サイズ角度が正であり、曖昧さも誤りもないと仮定して、それを再生成する。
【０１５３】
図13は、第4の成分が剥ぎ取られるか、またはオペレーティングシステムによって許容されない四元数システムの第4の成分をアプリケーション層側で導出するためのメカニズムを実現する本発明の非制限的な実施形態を例示する簡略化された流れ図である。プロセス1300は、ハードウェア(回路、専用ロジックなど)、ソフトウェア(汎用コンピューティングシステムまたは専用マシン上で実行されるようなもの)、ファームウェア(組み込みソフトウェア)、またはこれらの組み合わせを備える処理ロジックによって実行され得る。一実施形態では、プロセス1300は、図16に示されているような1つまたは複数のコンピュータデバイス1600によって実行される。一実施形態では、センサ1650は、図16で説明されているデバイスのフィルタリングおよび処理コンポーネントによるさらなる処理のためにセンサ入力を取得する。
【０１５４】
ブロック1302で、デバイス1600は、センサを使用して方位データおよびデバイス1600の方位に関連付けられている四元数システムの第4の成分を判定する。方位データは、図2〜図12を参照しつつ説明されている態様を使用して決定され得る。ブロック1304で、デバイス1600は、四元数システムの3つの成分のみをアプリケーション層に受け渡すことができるデバイス1600上で使用されるオペレーティングシステムフレームワークを検出する。ブロック1306で、デバイス1600のコンポーネントが、第4の四元数成分が負であるかどうかを判定する。第4の成分が負である場合、この方法は、第4の成分が常に正となるように四元数座標を調整する。一実装において、この調整は、四元数(WXYZ)システムの4つすべての成分に対する符号を反転することによって実行され得る。このような反転は、方位に関して等価であるが角度成分が非負である四元数を生成し得る。
【０１５５】
図13に例示されている特定のシーケンスステップは、本発明の一実施形態による、動作モードを切り替える特定の方法を構成することは理解されるであろう。ステップの他のシーケンスも、代替的実施形態においてしかるべく実行され得る。たとえば、本発明の代替的実施形態は、上で概要を述べたステップを異なる順序で実行することができる。例示のため、ユーザは、第3の動作モードから第1の動作モードに、第4の動作モードから第2の動作モードに、またはこれらのモード間の組み合わせに変更することを選択することができる。さらに、図13に例示されている個別のステップは、個別のステップに適している通りに様々なシーケンスで実行され得る複数のサブステップを含み得る。さらに、特定の用途に応じて追加のステップを加えたり、取り除いたりできる。当業者であれば、プロセスの多くの変更形態、修正形態、および代替的形態を認識し、理解するであろう。
【０１５６】
非正規化重力ベクトルを使用することによる直線加速度の精度向上
オペレーティングシステム(OS)フレームワーク(Google Android APIなど)は、方位データ入力として重力ベクトルのほかに直線加速度を必要とする場合がある。デバイス1600が、非静止状態である場合、測定された加速度は、測定された加速度の合計に関連付けられている成分および誤差として直線加速度および重力を有する。測定された加速度に関連付けられている誤差は、フィルタを使用して除去される加速度オフセットバイアスを有する。重力ベクトルフィルタ202は、いくつかの点でローパスフィルタに類似しているので、これはノイズを除去するが、すべてのバイアスを保持する。
【０１５７】
簡単のため、常に静止している(決して回転しない)システムを考える。次いで、ジャイロスコープ1660は、必要でない場合もあり、重力推定値は、加速度計1655からXYZ成分の平均をとる(フィルタリングする)ことによって得られる。しかし、平均をとる操作は、測定バイアスを排除しない場合がある。次に、回転するシステムにおいて、ジャイロスコープ1660により、システムは、測定をバイアスが除去可能でない疑似静止システムに縮小することによって共通基準フレームに加速度計測定結果の回転戻しを行うことができる。縮小された測定は、観察不可能な(したがって、除去不可能な)加速度計1655バイアスを持つジャイロスコープ支援ローパスフィルタに単に送られるだけである。したがって、直線加速度の測定結果と重力の測定結果は両方とも、部分的には測定された加速度の全誤差を占める加速度オフセットに対するこの除去不可能なバイアスにより関連付けられている誤差成分を有する。
【０１５８】
図14Aは、直線加速度を生成するための従来技術を例示する簡略化されたブロック図である。図14Aに示されているように、従来技術のシステムにおいて、ほとんどのOSフレームワークは正規化された重力ベクトルも必要とするので、直線加速度は、重力ベクトルフィルタ1402からの測定された加速度から正規化された重力を除去することによって計算される。図14Aのブロック1404に示されているように、重力は、真の重力ベクトルの大きさは、地球上で約9.81m/s2であるという事実を使用して重力ベクトルフィルタの出力を正規化することによって正規化される。測定された加速度において、直線加速度と重力の両方が関連する誤差成分を有する。正規化された重力が、測定された重力の代わりに測定された加速度から除去されると、測定された重力に関連付けられている誤差は、計算から除去されず、直線加速度は、測定された直線加速度に関連付けられている誤差だけと比べて大きな誤差を有する。たとえば、直線加速度は、デバイス1600が静止しているときにゼロであることが知られている。したがって、重力が測定された加速度から除去されると、結果はゼロとなるであろう。しかし、図14Aのブロック1406に示されているように、正規化された重力を、測定された加速度から測定された直線重力の代わりに除去すると、多くの場合においてその結果は、正規化および非正規化された重力と計算された直線加速度の精度に対する関連する影響との間の差を示す非ゼロの数値である。次の式は、図14Aに示されているような出力を表す。
1.フィルタリングされた重力=ローパス(測定された加速度)(ジャイロスコープによって補助される)
2.出力される重力=フィルタリングされた重力*9.8086/正規化された(重力)
3.直線加速度=測定された加速度-出力される重力(ハイパス(測定された加速度)でなく、したがって加速度オフセットを含まないわけではない)
【０１５９】
図14Bは、本発明の実施形態による直線加速度を生成するための非制限的なシステムを例示する別の簡略化されたブロック図である。図14Bの1408に示されているように、本発明の実施形態は、プロセッサ1610またはコントローラなどのコンポーネントにより、デバイス1600によって実行されるものとしてよく、非正規化重力は、重力ベクトルがOSフレームワークについて正規化されているとしても、測定された加速度(以下の式2)から直線加速度を導出する際に正規化された重力(図14Aに示されているような)の代わりに使用され得る。いくつかの実施形態では、直線加速度アルゴリズムが、ハイパスフィルタと似た動作をし、重力と加速度計オフセットの両方を除去するように、出力される重力ベクトルは、図14Bの1404で示されているように、直線加速度が導出された後に正規化され得る。非正規化重力を使用することによって、直線加速度は、加速度計のノイズ範囲内で、ゼロに近く加速度計オフセット(少なくとも静止位置において)の影響を受け得ない。非正規化重力ベクトルは、フィルタリングされた重力ベクトルである。したがって、デバイス1600が、静止位置にある場合、直線加速度に加速度計オフセットはなく、直線加速度に対する出力値はゼロまたはゼロに近い値になる。次の式は、図14Bに示されているように、本発明の実施形態による出力を表す。
1.フィルタリングされた重力=ローパス(測定された加速度)(いくつかの場合においてジャイロスコープによって補助される)
2.直線加速度=測定された加速度-フィルタリングされた重力(ハイパス(測定された加速度)と等価である、したがって直線加速度は加速度オフセットを含まず、したがって静止位置ではゼロに近い)
3.出力される重力=フィルタリングされた重力*9.8086/正規化された(重力)
【０１６０】
図15は、本発明の実施形態によるデバイス1600の直線加速度を判定するための方法の非制限的な例を示す別の簡略化された流れ図である。プロセス1500は、ハードウェア(回路、専用ロジックなど)、ソフトウェア(汎用コンピューティングシステムまたは専用マシン上で実行されるようなもの)、ファームウェア(組み込みソフトウェア)、またはこれらの組み合わせを備える処理ロジックによって実行され得る。一実施形態では、プロセス1500は、図16に示されているような1つまたは複数のコンピュータデバイス1600によって実行される。一実施形態では、センサ1650は、図16で説明されているデバイスのフィルタリングおよび処理コンポーネントによるさらなる処理のためにセンサ入力を取得する。
【０１６１】
図15を参照すると、ブロック502で、デバイス1600は、加速度計1655を使用して加速度を測定することがわかる。測定された加速度は、直線加速度成分と重力成分の両方を含み、また直線加速度成分および重力成分に対する関連する誤差成分も有する。
【０１６２】
ブロック1504で、デバイス1600は、重力ベクトルフィルタ202を使用してデバイス1600に関連付けられている非正規化重力ベクトルを判定する。重力ベクトルフィルタ202は、加速度計1655およびジャイロスコープ1660からの入力を含み得る。
【０１６３】
ブロック506で、図16を参照して説明されている、デバイス1600によって実行される方法は、デバイス1600の測定された加速度から重力ベクトルの非正規化重力成分(ステップ1502で決定される)を少なくとも除去することによってデバイス1600の直線加速度を判定する。非正規化重力成分が、正規化された重力の代わりに測定された加速度から除去される場合、重力成分に関連付けられている誤差も除去される。この結果、より正確な直線加速度値が得られる。
【０１６４】
図15に例示されているステップの特定のシーケンスは、本発明の一実施形態による、動作モードを切り替える特定の方法を構成することは理解されるであろう。ステップの他のシーケンスも、代替的実施形態においてしかるべく実行され得る。たとえば、本発明の代替的実施形態は、上で概要を述べたステップを異なる順序で実行することができる。例示のため、ユーザは、第3の動作モードから第1の動作モードに、第4の動作モードから第2の動作モードに、またはこれらのモード間の組み合わせに変更することを選択することができる。さらに、図15に例示されている個別のステップは、個別のステップに適している通りに様々なシーケンスで実行され得る複数のサブステップを含み得る。さらに、特定の用途に応じて追加のステップを加えたり、取り除いたりできる。当業者であれば、プロセスの多くの変更形態、修正形態、および代替的形態を認識し、理解するであろう。
【０１６５】
図16に例示されているようなデバイスは、すでに説明されているコンピュータ化デバイスの一部として組み込まれ得る。たとえば、デバイス1600は、ハンドヘルドデバイスまたはモバイルデバイスのコンポーネントのうちのいくつかを表すものとしてよい。ハンドヘルドデバイスまたはモバイルデバイスは、カメラおよび表示ユニットのような入力センサユニットを備えるコンピューティングデバイスであってもよい。ハンドヘルドデバイスの例として、限定はしないが、ビデオゲーム機、タブレット、スマートフォン、およびデバイスが挙げられる。図16は、本明細書で説明されているような、様々な他の実施形態によって提供される方法を実行することができ、および/またはホストデバイス、リモートキヨスク/端末、販売時点情報管理デバイス、デバイス、セットトップボックスおよび/またはデバイスとして機能し得るデバイス1600の一実施形態の概略図となっている。図16は、様々なコンポーネントの一般化された図を示すことのみを目的としており、そのどれか、またはすべてが適切に利用され得る。したがって、図16は個別のシステム要素が比較的個別化された様式または比較的一体化された様式でどのように実装され得るかをおおざっぱに示している。
【０１６６】
デバイス1600は、バス1605を介して電気的に結合され得る(または適宜、他の何らかの形で通信しているものとしてよい)ハードウェア要素を備えるように図示されている。これらのハードウェア要素は、限定することなく、1つまたは複数の汎用プロセッサおよび/または1つまたは複数の専用プロセッサ(デジタル信号処理チップ、グラフィックスアクセラレーションプロセッサ、および/または同様のものなど)を含む、1つまたは複数のプロセッサ1610、限定することなく、カメラ、マウス、キーボード、および/または同様のものを含み得る、1つまたは複数の入力デバイス1615、および限定することなく、表示ユニット、プリンタ、および/または同様のものを含み得る、1つまたは複数の出力デバイス1620を含むものとしてよい。
【０１６７】
それに加えて、コンピューティングデバイス1600は、図2、図7A、図7B、図10、および図11に例示されているように、限定はしないが、1つまたは複数の加速度計1655(たとえば、加速度計1655)、1つまたは複数のジャイロスコープ1660(たとえば、ジャイロスコープ1660)、および/または1つまたは複数の磁力計(たとえば、磁力計1665)を備えることができる、複数のセンサ1650をさらに具備することができる。加速度計1655は、コンピューティングデバイス1600が受ける、および/または加速度計1655によって他の何らかの形で感知される加速度を測定し、および/または加速度に関する情報を(たとえば、プロセッサ1610に)供給することができる。ジャイロスコープ1660 150は、同様に、コンピューティングデバイス1600が受ける、および/またはジャイロスコープ1660 1655によって他の何らかの形で感知されるジャイロスコープの運動(たとえば、方位の変化)を測定し、および/またはジャイロスコープの運動に関する情報を(たとえば、プロセッサ1610に)供給することができる。それに加えて、磁力計1665は、コンピューティングデバイス1600が受ける、および/または磁力計1665によって他の何らかの形で感知される磁場を測定し、磁場の測定結果および/または変化(たとえば、姿勢の変化)に関する情報を(たとえば、プロセッサ1610に)供給することができる。プロセッサ1610は、たとえば、図2、図7A、図7B、図10、および図11に例示されているように、上で説明されている重力ベクトルフィルタ202および磁気ベクトルフィルタ204のうちの1つまたは複数を実装することができる。他の実施形態では、これらのフィルタは、上で説明されているセンサのうちの1つまたは複数のセンサで実装され得るか、または個別のハードウェアもしくはソフトウェアコンポーネントとして、たとえば、オペレーティングシステム1640、アプリケーション1645、もしくは作業用メモリ1635もしくはストレージデバイス1625の他の部分に格納されるものとして実装され得る。
【０１６８】
デバイス1600は、限定することなく、ローカルおよび/またはネットワークアクセス可能ストレージを含むことができ、および/または限定することなく、ディスクドライブ、ドライブアレイ、光ストレージデバイス、プログラム可能、フラッシュ書換可能であるものとしてよい、ランダムアクセスメモリ(「RAM」)および/またはリードオンリーメモリ(「ROM」)などのソリッドステートストレージデバイス、および/または同様のものを含むことができる、1つまたは複数の非一時的なストレージデバイス1625を、さらに備える(および/または通信する)ことができる。このようなストレージデバイスは、限定することなく、様々なファイルシステム、データベース構造体、および/または同様のものを含む、適切なデータストレージを実装するように構成され得る。
【０１６９】
デバイス1600は、限定することなく、モデム、ネットワークカード(ワイヤレスもしくは有線)、赤外線通信デバイス、ワイヤレス通信デバイスおよび/またはチップセット(Bluetooth（登録商標）デバイス、802.11デバイス、WiFiデバイス、WiMaxデバイス、セルラー通信設備など)、および/または同様のものを含み得る、通信サブシステム1630を備えることも可能である。通信サブシステム1630は、ネットワーク(一例として、以下で説明されているネットワークなど)、他のデバイス、および/または本明細書で説明されている他のデバイスとデータを交換することを可能にし得る。多くの実施形態において、デバイス1600は、上で説明されているように、RAMまたはROMデバイスを含み得る、非一時的な作業用メモリ1635をさらに備える。
【０１７０】
デバイス1600は、本明細書で説明されているように、オペレーティングシステム1640、デバイスドライバ、実行可能ライブラリ、および/または様々な実施形態によって提供されるコンピュータプログラムを含み得る、および/または方法を実装し、および/または他の実施形態によって実現されるシステムを構成するように設計され得る、1つまたは複数のアプリケーションプログラム1645などの他のコードを含む、作業用メモリ1635内に現在配置されているものとして図示されている、ソフトウェア要素も備えることができる。ただ単に例として、上で説明されている方法に関して説明されている1つまたは複数の手順は、コンピュータ(および/またはコンピュータ内のプロセッサ)によって実行可能なコードおよび/または命令として実装することも可能であり、次いで、一態様において、そのようなコードおよび/または命令は、説明されている方法、たとえば、図2B、図2C、図3、図6、図8A、図8B、図9、図13、および図15に例示されている方法のどれかに従って1つまたは複数のオペレーションを実行するように汎用コンピュータ(または他のデバイス)を構成し、および/または適合させるために使用され得る。
【０１７１】
一組のこれらの命令および/またはコードは、上で説明されているストレージデバイス1625などの、コンピュータ可読記憶媒体に格納することも可能である。いくつかの場合において、記憶媒体は、デバイス1600などの、デバイス内に組み込むことも可能である。他の実施形態では、記憶媒体は、デバイスから分離し(たとえば、コンパクトディスクなどの取り外し可能な媒体)、および/またはインストレーションパッケージで提供されることも可能であり、これにより、記憶媒体を使用して、中に格納されている命令/コードで汎用コンピュータをプログラムし、構成し、および/または適合させることができる。これらの命令は、デバイス1600によって実行可能である、実行可能コードの形態をとることも可能であり、および/またはデバイス1600でコンパイルおよび/またはインストールした後に(たとえば、様々な一般的に利用可能なコンパイラ、インストールプログラム、圧縮/展開ユーティリティなどを使用して)、実行可能コードの形態をとるソースコードおよび/またはインストール可能コードの形態をとることも可能である。
【０１７２】
特定の要件に従って、実質的な変更を加えることができる。たとえば、カスタマイズされたハードウェアも使用することが可能であり、および/または特定の要素も、ハードウェア、ソフトウェア(アプレットなどのポータブルソフトウェアを含む)、または両方で実装することが可能である。さらに、ネットワーク入力/出力デバイスなどの他のコンピューティングデバイスとの接続が使用され得る。
【０１７３】
いくつかの実施形態では、本開示による方法を実行するためにデバイス(デバイス1600など)を使用することができる。たとえば、説明されている方法の手順の一部または全部は、プロセッサ1610が作業用メモリ1635内に包含されている1つまたは複数の命令(オペレーティングシステム1640および/またはアプリケーションプログラム1645などの他のコードに組み込むことも可能である)の1つまたは複数のシーケンスを実行することに応答してデバイス1600によって実行され得る。このような命令は、ストレージデバイス1625の1つまたは複数などの、別のコンピュータ可読媒体から作業用メモリ1635内に読み込まれ得る。単なる例であるが、作業用メモリ1635に包含されている命令のシーケンスが実行されると、プロセッサ1610が本明細書で説明されている方法の1つまたは複数の手順を実行することが可能である。
【０１７４】
本明細書で使用されているような「マシン可読媒体」および「コンピュータ可読媒体」という用語は、特定の様式でマシンを動作させるデータを提供することに関わる媒体を指す。デバイス1600を使用して実装される実施形態において、様々なコンピュータ可読媒体が、命令/コードを実行のためプロセッサ1610に送ることに関わる可能性があり、および/またはそのような命令/コード(たとえば、信号)を格納し、および/または搬送するために使用することが可能である。多くの実装において、コンピュータ可読媒体は、物理的および/または有形の記憶媒体である。このような媒体は、限定はしないが、不揮発性媒体、揮発性媒体、および伝送媒体を含む多くの形態をとり得る。不揮発性媒体として、たとえば、ストレージデバイス1625などの光および/または磁気ディスクが挙げられる。揮発性媒体としては、限定することなく、作業用メモリ1635などのダイナミックメモリが挙げられる。伝送媒体として、限定はしないが、バス1605を構成する電線を含む、同軸ケーブル、銅線、および光ファイバ、さらには通信サブシステム1630の様々なコンポーネント(および/または通信サブシステム1630が他のデバイスとの通信を行う際に使用する媒体)が挙げられる。したがって、伝送媒体は、波(限定はしないが、電波および赤外線データ通信において生成されるような、電波、音波、および/または光波を含む)の形態もとり得る。
【０１７５】
物理的および/または有形のコンピュータ可読媒体の一般的な形態として、たとえば、フロッピディスク、フレキシブルディスク、ハードディスク、磁気テープ、または他の任意の磁気媒体、CD-ROM、他の光媒体、パンチカード、紙テープ、何らかのパターンで穴があけられている他の物理的媒体、RAM、PROM、EPROM、FLASH-EPROM、他のメモリチップもしくはカートリッジ、これ以降説明するような搬送波、またはコンピュータが命令および/またはコードを読み出すことができる他の媒体が挙げられる。
【０１７６】
様々な形態のコンピュータ可読媒体が、1つまたは複数の命令の1つまたは複数のシーケンスを実行のためプロセッサ1610に搬送することに関与し得る。単に例としてであるが、命令は、最初に、リモートコンピュータの磁気ディスクおよび/または光ディスクに入れて搬送することができる。リモートコンピュータは、命令をそのリモートコンピュータのダイナミックメモリ内にロードし、命令を伝送媒体を介して信号として送信し、デバイス1600によって受信されおよび/または実行されるようにすることが可能である。電磁信号、音響信号、光信号、および/または同様の信号の形態をとり得る、これらの信号は、すべて、本発明の様々な実施形態により命令が符号化されて載せられる搬送波の例である。
【０１７７】
通信サブシステム1630(および/またはそのコンポーネント)は、一般的に、信号を受信し、次いで、バス1605が、信号(および/または信号によって搬送されるデータ、命令など)を作業用メモリ1635に搬送し、プロセッサ1610は、その作業用メモリから命令を取り出して実行する。作業用メモリ1635に入った命令は、適宜、プロセッサ1610による実行前または実行後に非一時的なストレージデバイス1625に格納することができる。
【０１７８】
上で説明されている方法、システム、およびデバイスは例である。様々な実施形態において、適宜様々な手順またはコンポーネントを省略し、置換し、または追加することができる。たとえば、代替的構成において、説明されている方法は、説明されているのと異なる順序で実行することもでき、および/または様々な段階が追加され、省略され、および/または組み合わされ得る。また、いくつかの実施形態に関して説明されている特徴は、様々な他の実施形態において組み合わせることもできる。実施形態の異なる態様および要素は、類似の様式で組み合わせることができる。また、技術は発展し、それゆえ、要素の多くは、開示の範囲をこれらの具体的例に制限しない例である。
【０１７９】
説明では、実施形態を十分理解できるように、具体的に詳細を述べている。しかし、実施形態は、これらの具体的詳細がなくても実施され得る。たとえば、回路、プロセス、アルゴリズム、構造、および技術は、実施形態が不明確にならないよう、いたずらに詳細を述べることなく示されていることがある。この説明では、例示的な実施形態のみを取りあげているが、本発明の範囲、応用性、または構成を制限することを意図していない。むしろ、実施形態の先行する説明は、当業者にとって、本発明の実施形態を実装することを可能にする説明となる。本発明の精神および範囲から逸脱することなく、様々な変更を要素の機能および配置構成に加えることができる。
【０１８０】
また、いくつかの実施形態は、流れ図またはブロック図として図示されているプロセスとして説明された。各々オペレーションを逐次プロセスとして記述している場合があるが、オペレーションの多くは、並列または同時実行することが可能である。それに加えて、オペレーションの順序も変更することができる。プロセスは、図に含まれていない追加のステップを有している場合がある。さらに、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはこれらの任意の組み合わせによって方法の実施形態を実装することができる。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードで実装される場合、関連するタスクを実行するためのプログラムコードまたはコードセグメントは、記憶媒体などのコンピュータ可読媒体内に格納することができる。プロセッサは、関連するタスクを実行することができる。
【０１８１】
いくつかの実施形態について説明したが、本開示の精神から逸脱することなく様々な修正形態、代替的構造、および等価物が使用され得る。たとえば、上記の要素は、単に、より大きなシステムの一コンポーネントであってもよく、他の規則は本発明の適用に優先するか、または他の何らかの形で修正され得る。また、上記の要素が考察される前に、考察されるときに、または考察された後に多数のステップが実行され得る。したがって、上記の説明は、本開示の範囲を制限しない。
【符号の説明】
【０１８２】
200  プロセス
201  プロセス
202  重力ベクトルフィルタ
204  磁気ベクトルフィルタ
300  プロセス
400  グラフ
405  直線
410  直線
500  グラフ
505  直線
510  直線
720  拡張重力ベクトルフィルタ
800  プロセス
801  プロセス
900  プロセス
1200  シーケンス
1202  第1のジャイロスコープサンプル
1204  加速度計サンプル
1206  第2のジャイロスコープサンプル
1210  第3のジャイロスコープサンプル
1300  プロセス
1500  プロセス
1600  デバイス
1605  バス
1610  プロセッサ
1615  入力デバイス
1620  出力デバイス
1625  ストレージデバイス
1630  通信サブシステム
1635  作業用メモリ
1640  オペレーティングシステム
1645  アプリケーション
1650  センサ
1655  加速度計
1660  ジャイロスコープ
1665  磁力計
【図１】
0006296989.tif 000002
【図２Ａ】
0006296989.tif 000003
【図２Ｂ】
0006296989.tif 000004
【図２Ｃ】
0006296989.tif 000005
【図３】
0006296989.tif 000006
【図４】
0006296989.tif 000007
【図５】
0006296989.tif 000008
【図６】
0006296989.tif 000009
【図７Ａ】
0006296989.tif 000010
【図７Ｂ】
0006296989.tif 000011
【図８Ａ】
0006296989.tif 000012
【図８Ｂ】
0006296989.tif 000013
【図９】
0006296989.tif 000014
【図１０】
0006296989.tif 000015
【図１１】
0006296989.tif 000016
【図１２Ａ】
0006296989.tif 000017
【図１２Ｂ】
0006296989.tif 000018
【図１３】
0006296989.tif 000019
【図１４Ａ】
0006296989.tif 000020
【図１４Ｂ】
0006296989.tif 000021
【図１５】
0006296989.tif 000022
【図１６】
0006296989.tif 000023