(58)【調査した分野】(Int.Cl.,DB名)
前記第1の状態に関連付けられている前記第1の電力レベルが前記閾値より高いと判定するステップは、前記第1の状態が前記閾値より高い電力レベルに関連付けられている複数の状態のうちの1つであると判定するステップを含む請求項1に記載の方法。
前記閾値より高い前記電力レベルに関連付けられている前記複数の状態は、前記デバイスのディスプレイの1つまたは複数がオンにされると、アプリケーションプロセッサが活動を実行し、電子メールを送受信し、テキストを作成し、電話を受けるかもしくはかけ、前記デバイスを使用して通信し、または前記デバイス上でインターネットブラウジングを行うことを含む請求項2に記載の方法。
前記少なくとも1つのセンサからのセンサ測定結果は、ユーザにキャリブレーションルーチンの実行を促すことなく、またユーザに前記デバイスをキャリブレーション位置に置くことを促すことなく得られる請求項6に記載の方法。
キャリブレーションデータを自動収集するステップは、第1の期間に複数の配向の高品質キャリブレーションデータに関連付けられている1つまたは複数の配向について前記デバイスを監視するステップと、前記デバイスが高品質キャリブレーションデータに関連付けられている配向のうちの1つの配向にあることを検出したことに応答して、第2の期間にキャリブレーションデータを収集するステップとを含む請求項1に記載の方法。
高品質キャリブレーションデータに関連付けられている前記配向でキャリブレーションデータを収集するステップは、前記デバイスが前記配向で静止しているか、または実質的に静止していると判定するステップをさらに含む請求項9に記載の方法。
第2の期間に前記少なくとも1つのセンサを使用してキャリブレーションデータを収集するために前記デバイスが高品質キャリブレーションデータに関連付けられている配向に遷移したかどうかを判定するために、前記デバイスが前記第1の電力レベルにある間にセンサ測定結果が収集され、スケジューリングは、少なくとも一部は前記デバイスが遷移したかどうかを判定する前記ステップに基づく請求項1に記載の方法。
前記第1の状態に関連付けられている前記第1の電力レベルが前記閾値より高いと判定するステップは、前記スケジューリングモジュールによって、前記第1の状態が前記閾値より高い電力レベルに関連付けられている複数の状態のうちの1つであると判定するステップを含む請求項15に記載のデバイス。
前記閾値より高い前記電力レベルに関連付けられている前記複数の状態は、前記デバイスのディスプレイの1つまたは複数がオンにされると、アプリケーションプロセッサが活動を実行し、電子メールを送受信し、テキストを作成し、電話を受けるかもしくはかけ、前記デバイスを使用して通信し、または前記デバイス上でインターネットブラウジングを行うことを含む請求項16に記載のデバイス。
前記少なくとも1つのセンサからのセンサ測定結果は、ユーザにキャリブレーションルーチンの実行を促すことなく、またユーザに前記デバイスをキャリブレーション位置に置くことを促すことなく得られる請求項20に記載のデバイス。
キャリブレーションデータを自動収集するステップは、第1の期間に複数の配向の高品質キャリブレーションデータに関連付けられている1つまたは複数の配向について前記デバイスを監視するステップと、前記スケジューリングモジュールによって前記デバイスが高品質キャリブレーションデータに関連付けられている前記配向のうちの1つの配向にあることを検出したことに応答して、第2の期間にキャリブレーションデータを収集するステップとを含む請求項15に記載のデバイス。
高品質キャリブレーションデータに関連付けられている前記配向でキャリブレーションデータを収集するステップは、前記デバイスが前記配向で静止しているか、または実質的に静止していると判定するように前記スケジューリングモジュールがさらに構成されるステップを含む請求項23に記載のデバイス。
第2の期間に前記少なくとも1つのセンサを使用してキャリブレーションデータを収集するために前記デバイスが高品質キャリブレーションデータに関連付けられている配向に遷移したかどうかを前記スケジューリングモジュールによって判定するために、前記デバイスが前記第1の電力レベルにある間にセンサ測定結果が収集され、スケジューリングは、少なくとも一部は前記デバイスが遷移したかどうかを判定する前記ステップに基づく請求項15に記載のデバイス。
前記収集されたキャリブレーションデータの前記不足は、第1の期間における前記第2のタスクのスケジューリングの欠如に基づき決定される請求項27に記載のデバイス。
デバイスの第1の状態を検出するための手段であって、前記デバイスの前記第1の状態は、第1の電力レベルに関連付けられ、前記第1の電力レベルは、少なくとも部分的に第1のタスクの電力消費量に基づく、手段と、
前記第1の状態に関連付けられている前記第1の電力レベルが閾値より高いと判定するための手段と、
前記第1の状態に関連付けられている前記第1の電力レベルが前記閾値より高いと判定したことに応答して、前記デバイス上の第2のタスクの実行をスケジュールするための手段であって、前記第2のタスクは、少なくとも1つのセンサを使用するキャリブレーションデータの自動収集に関連付けられている、手段とを備える装置。
前記第1の状態に関連付けられている前記第1の電力レベルが前記閾値より高いと判定するための手段は、前記第1の状態が前記閾値より高い電力レベルに関連付けられている複数の状態のうちの1つであると判定するための手段を含む請求項30に記載の装置。
前記閾値より高い前記電力レベルに関連付けられている前記複数の状態は、前記デバイスのディスプレイの1つまたは複数がオンにされると、アプリケーションプロセッサが活動を実行し、電子メールを送受信し、テキストを作成し、電話を受けるかもしくはかけ、前記デバイスを使用して通信し、または前記デバイス上でインターネットブラウジングを行うことを含む請求項31に記載の装置。
前記少なくとも1つのセンサからのセンサ測定結果は、パッシブキャリブレーションアクションから得られ、前記少なくとも1つのセンサからのセンサ測定結果は、ユーザにキャリブレーションルーチンの実行を促すことなく、またユーザに前記デバイスをキャリブレーション位置に置くことを促すことなく得られる請求項30に記載の装置。
キャリブレーションデータを自動収集するための手段は、第1の期間に複数の配向の高品質キャリブレーションデータに関連付けられている1つまたは複数の配向について前記デバイスを監視するための手段と、前記デバイスが高品質キャリブレーションデータに関連付けられている前記配向のうちの1つの配向にあることを検出したことに応答して、第2の期間にキャリブレーションデータを収集するための手段とを含む請求項30に記載の装置。
高品質キャリブレーションデータに関連付けられている前記配向でキャリブレーションデータを収集するための手段は、前記デバイスが前記配向で静止しているか、または実質的に静止していると判定するための手段をさらに含む請求項36に記載の装置。
第2の期間に前記少なくとも1つのセンサを使用してキャリブレーションデータを収集するために前記デバイスが高品質キャリブレーションデータに関連付けられている配向に遷移したかどうかを判定するために、前記デバイスが前記第1の電力レベルにある間にセンサ測定結果が収集され、スケジューリングは、少なくとも一部は前記デバイスが遷移したかどうかを判定するステップに基づく請求項30に記載の装置。
前記複数のキャリブレーション測定結果が異なる配向で得られた度数を判定するステップは、前記複数のキャリブレーション測定結果について配向エントロピーを計算するステップを含む請求項41に記載の方法。
前記配向エントロピーが所定の閾値を超えたと判定したことに応答して、前記1つまたは複数のキャリブレーションパラメータを更新するステップをさらに含む請求項42に記載の方法。
前記配向エントロピーが所定の閾値より低いと判定したことに応答して、前記1つまたは複数のキャリブレーションパラメータを更新することなくキャリブレーション測定結果がすでに受け取られている配向に対するキャリブレーション測定結果を破棄するステップをさらに含む請求項42に記載の方法。
前記配向エントロピーが所定の閾値より低いと判定したことに応答して、前記1つまたは複数のキャリブレーションパラメータを更新することなくキャリブレーション測定結果がすでに受け取られている配向に対するキャリブレーション測定結果を使用するステップをさらに含む請求項42に記載の方法。
前記複数のキャリブレーション測定結果が異なる配向でキャプチャされた度数を判定するステップは、前記複数のキャリブレーション測定結果に対するヒストグラムに少なくとも一部は基づく請求項41に記載の方法。
前記複数のキャリブレーション測定結果が異なる配向でキャプチャされた度数を判定するステップは、ビン範囲に従って前記複数のキャリブレーション測定結果の各々を複数の配向ビンのうちの少なくとも1つの配向ビンにグループ分けするステップと、キャリブレーション測定結果を含む前記複数の配向ビンの多様性を判定するステップとを含む請求項41に記載の方法。
前記1つまたは複数のキャリブレーションパラメータは、フィルタへの入力であり、前記フィルタにおいて更新され、キャリブレーション結果を生成する請求項41に記載の方法。
前記複数のキャリブレーション測定結果が異なる配向でキャプチャされた度数を判定するステップは、前記複数のキャリブレーション測定結果について配向エントロピーを、前記キャリブレーションモジュールによって、計算するステップを含む請求項53に記載のデバイス。
前記複数のキャリブレーション測定結果が異なる配向でキャプチャされた度数を判定するステップは、前記複数のキャリブレーション測定結果に対するヒストグラムに少なくとも一部は基づく請求項53に記載のデバイス。
前記複数のキャリブレーション測定結果が異なる配向でキャプチャされた度数を判定するステップは、前記キャリブレーションモジュールがビン範囲に従って前記複数のキャリブレーション測定結果の各々を複数の配向ビンのうちの少なくとも1つの配向ビンにグループ分けするステップと、キャリブレーション測定結果を含む前記複数の配向ビンの多様性を判定するステップとを実行するように構成されるステップを含む請求項53に記載のデバイス。
前記度数を判定するステップは、前記キャリブレーションモジュールが前記複数のキャリブレーション測定結果が得られた配向の範囲または分散を判定するように構成されるステップを含む請求項53に記載のデバイス。
前記1つまたは複数のキャリブレーションパラメータは、フィルタへの入力であり、前記フィルタにおいて更新され、キャリブレーション結果を生成する請求項53に記載のデバイス。
前記複数のキャリブレーション測定結果が異なる配向でキャプチャされた度数を判定するステップは、前記複数のキャリブレーション測定結果に対するヒストグラムに少なくとも一部は基づく請求項66に記載の装置。
前記複数のキャリブレーション測定結果が異なる配向でキャプチャされた度数を判定するための手段は、ビン範囲に従って前記複数のキャリブレーション測定結果の各々を複数の配向ビンのうちの少なくとも1つの配向ビンにグループ分けするための手段と、キャリブレーション測定結果を含む前記複数の配向ビンの多様性を判定するための手段とを含む請求項66に記載の装置。
前記1つまたは複数のキャリブレーションパラメータは、フィルタへの入力であり、前記フィルタにおいて更新され、キャリブレーション結果を生成する請求項66に記載の装置。
前記センサに対する動作環境の温度を検出したことに応答して、前記検出された温度を使用して前記センサに対する複数の温度ビンから1つの温度ビンを識別するステップをさらに含み、前記温度ビンは温度の範囲を含む請求項72に記載の方法。
別の温度ビンからの前記センサ測定データに関連付けられている重みを、前記温度ビンに関連付けられているフィルタの1つまたは複数のパラメータを調整することによって下げるステップをさらに含む請求項76に記載の方法。
生成する前記ステップは、前記検出された温度に対する前記温度ビンにおける少なくとも1つの配向についてセンサ測定データを、1つまたは複数の隣接する温度ビンから前記識別された温度ビンまでの前記センサ測定データを使用して、線形補間するステップを含む請求項75に記載の方法。
センサ測定データを線形補間するステップは、1つまたは複数の隣接する温度ビンからの前記センサ測定結果と温度の変化に関するセンサ測定データの変化の所定の勾配とを使用して前記温度ビンにおける前記少なくとも1つの配向に対する前記センサ測定データを導出するステップを含む請求項78に記載の方法。
前記検出された温度での少なくとも1つの配向に対する前記センサ測定データを、別の温度からの前記センサ測定データを使用して更新するステップをさらに含む請求項72に記載の方法。
前記検出された温度について前記センサに対して前記生成されたキャリブレーションデータは、前記温度での、または前記温度に近い温度での前記センサからの出力をキャリブレートするために使用される請求項72に記載の方法。
前記温度補償モジュールは、前記センサに対する動作環境の温度を検出したことに応答して、前記検出された温度を使用して前記センサに対する複数の温度ビンから1つの温度ビンを識別するようにさらに構成され、前記温度ビンは温度の範囲を含む請求項84に記載のデバイス。
前記温度補償モジュールは、別の温度ビンからの前記センサ測定データに関連付けられている重みを、前記温度ビンに関連付けられているフィルタの1つまたは複数のパラメータを調整することによって下げるようにさらに構成される請求項88に記載のデバイス。
生成する前記ステップは、前記検出された温度に対する前記温度ビンにおける少なくとも1つの配向についてセンサ測定データを、1つまたは複数の隣接する温度ビンから前記識別された温度ビンまでの前記センサ測定データを使用して、線形補間するステップを含む請求項87に記載のデバイス。
センサ測定データを線形補間するステップは、1つまたは複数の隣接する温度ビンからの前記センサ測定結果と温度の変化に関するセンサ測定データの変化の所定の勾配とを使用して前記温度補償モジュールによって前記温度ビンにおける前記少なくとも1つの配向に対する前記センサ測定データを導出するステップを含む請求項90に記載のデバイス。
前記温度補償モジュールは、前記検出された温度での少なくとも1つの配向に対する前記センサ測定データを、別の温度からの前記センサ測定データを使用して更新するようにさらに構成される請求項84に記載のデバイス。
前記検出された温度について前記センサに対して前記生成されたキャリブレーションデータは、前記温度での、または前記温度に近い温度での前記センサからの出力をキャリブレートするために使用される請求項84に記載のデバイス。
前記センサに対する動作環境の温度を検出したことに応答して、前記検出された温度を使用して前記センサに対する複数の温度ビンから1つの温度ビンを識別するための手段をさらに備え、前記温度ビンは温度の範囲を含む請求項97に記載の装置。
別の温度ビンからの前記センサ測定データに関連付けられている重みを、前記温度ビンに関連付けられているフィルタの1つまたは複数のパラメータを調整することによって下げるための手段をさらに備える請求項100に記載の装置。
生成するための前記手段は、前記検出された温度に対する前記温度ビンにおける少なくとも1つの配向についてセンサ測定データを、1つまたは複数の隣接する温度ビンから前記識別された温度ビンまでの前記センサ測定データを使用して、線形補間するための手段を含む請求項99に記載の装置。
センサ測定データを線形補間するステップは、1つまたは複数の隣接する温度ビンからの前記センサ測定結果と温度の変化に関するセンサ測定データの変化の所定の勾配とを使用して前記温度ビンにおける前記少なくとも1つの配向に対する前記センサ測定データを導出するステップを含む請求項102に記載の装置。
前記検出された温度での少なくとも1つの配向に対する前記センサ測定データを、別の温度からの前記センサ測定データを使用して更新するための手段をさらに備える請求項97に記載の装置。
前記検出された温度について前記センサに対して前記生成されたキャリブレーションデータは、前記温度での、または前記温度に近い温度での前記センサからの出力をキャリブレートするために使用される請求項97に記載の装置。
【発明を実施するための形態】
【0043】
いくつかの例示的な実施形態について、その一部をなす、添付図面に関して説明される。開示の1つまたは複数の態様を実装することができる、特定の実施形態が以下で説明されるが、他の実施形態も使用することができ、また様々な修正も、本開示の範囲または付属の請求項の精神から逸脱することなく加えることができる。
【0044】
I.自動キャリブレーションの概要
図1および
図2は、本開示の1つまたは複数の態様を実装することができ、また
図20を参照しつつより詳細に説明されているコンピューティングデバイス2000のコンポーネントを実装することができる例示的なデバイスを示している。
図1に示されているように、たとえば、コンピューティングデバイス2000は、ディスプレイ105、ボタンおよび/またはキー110、および/またはカメラ115などの1つまたは複数のコンポーネントを備えることができる。いくつかの配置構成では、ディスプレイ105はタッチスクリーンであってよく、これにより、ユーザは、ディスプレイ105を介してタッチベースのユーザ入力をコンピューティングデバイス2000に供給することができるものとしてよい。
【0045】
1つまたは複数の配置構成において、コンピューティングデバイス2000は、
図2に例示されているような、複数の内部コンポーネントをさらに備えることができる。たとえば、コンピューティングデバイス2000は、1つまたは複数のプロセッサ(たとえば、プロセッサ2010)、1つまたは複数のメモリユニット(たとえば、メモリ2035)、少なくとも1つのディスプレイアダプタ(たとえば、ディスプレイアダプタ215)、少なくとも1つのオーディオインターフェース(たとえば、オーディオインターフェース220)、1つまたは複数のカメラインターフェース(たとえば、カメラインターフェース225)、および/または他のコンポーネントを備えることができる。
【0046】
1つまたは複数の実施形態において、コンピューティングデバイス2000は、複数のセンサ、たとえば、1つまたは複数の加速度計(たとえば、加速度計2055)、1つまたは複数のジャイロスコープ(たとえば、ジャイロスコープ2060)、1つまたは複数の磁力計(たとえば、磁力計2065)、および/または1つまたは複数の温度センサ(たとえば、温度センサ2070)をさらに備えることができる。加速度計2055は、(たとえば、電気的干渉により)コンピューティングデバイス2000が受ける、および/または加速度計2055によって他の何らかの形で感知される加速度を測定し、および/または加速度に関する情報を(たとえば、プロセッサ2010に)供給することができる。ジャイロスコープ2060は、同様に、コンピューティングデバイス2000の配向に関する情報を測定し、および/または(たとえば、プロセッサ2010に)供給することができる。それに加えて、磁力計2065は、コンピューティングデバイス2000の姿勢を測定し、および/または姿勢に関する情報を(たとえば、プロセッサ2010に)供給することができる。温度センサ2070は、コンピューティングデバイス2000が受ける温度(たとえば、周囲温度)を測定し、および/またはその温度に関する情報を(たとえば、プロセッサ2010に)供給することができる。
【0047】
1つまたは複数の態様によれば、コンピューティングデバイス2000に備えられているセンサのどれか、および/またはすべて(たとえば、加速度計2055)は、センサおよび/またはコンピューティングデバイス2000が1つまたは複数の方向に移動されたときに特定のセンサによって検出される運動などの、状態の変化に応答して、および/または状態の変化に対応する出力信号として電気信号を発生することができる。それに加えて、または代替的に、そのようなセンサの製造方法の不備、期待された運転時の通常の劣化、および/またはそのようなセンサによって出力されるデータが時間の経過とともに不正確になり、および/または不正確なることに関わる可能性のある他の要因があるため、そのようなセンサによって出力される信号をより正確に解釈するようにコンピューティングデバイス2000に備えられているセンサのどれか、および/またはすべてをキャリブレートすることが望ましい場合がある。
【0048】
本明細書で使用されているように、センサを「キャリブレートする」という言い回しは、加速度計、ジャイロスコープ、磁力計などのセンサによって出力される生のセンサ測定データ(たとえば、電気信号)を受信し、1つまたは複数のスケール係数および/またはオフセットを生データに適用して、受け取ったセンサデータに対応する運動のより正確な表現を計算し、および/または他の何らかの形で決定することを含むものとしてよい。スケール係数およびオフセットは、独立して、および/または一緒に、「キャリブレーションパラメータ」と称してよく、各々のセンサは、それ独自の対応するキャリブレーションパラメータセットを有するものとしてよい。それに加えて、キャリブレーションパラメータをセンサデータに適用する際に、「スケール係数」は、受け取ったセンサデータに乗算される係数または他の値であってよく、「オフセット」は、受け取ったセンサデータに加算される値とすることができる。
【0049】
多くの現行システムにおいて、加速度計2055などのセンサのキャリブレーションは、コンピューティングデバイス2000が(たとえば、工場で)製造されるときに実行され得る。または、そのようなキャリブレーションは、キャリブレーションルーチンを手動で実行するようユーザに促すことによって、たとえば、センサデータを測定し記録できるように一組の異なる位置をコンピューティングデバイス2000に取らせることによって実行することができる。しかし、これらのキャリブレーション方法は両方とも、不利点が付随する。たとえば、加速度計2055などのセンサが、コンピューティングデバイスが製造されるときに工場でしかキャリブレートされないときに、センサによって測定されるデータの品質が時間の経過とともに劣化する場合(典型的には劣化したとき)に、センサデータの品質のこのような劣化を是正する手段がないこともあり得る。それに加えて、たとえば、加速度計2055などのセンサが、ユーザによってキャリブレートされるときに、正確な、および/または特定の測定を必要とする可能性のあるキャリブレーションルーチンそれ自体が、ユーザによって持ち込まれる誤差の影響を受けやすい場合がある。
【0050】
しかし、本開示の1つまたは複数の態様を実装することによって、1つまたは複数の加速度計2055などの、デバイスの1つまたは複数のセンサが、通常使用時に自動的にキャリブレートすることができ、キャリブレーションルーチンを実行し、および/またはデバイスに、たとえば、一組の異なる位置を取らせるようユーザに促す必要がない。その代わりに、また以下でさらに詳しく説明されるように、コンピューティングデバイス2000は、特定の時刻に1つまたは複数のセンサをキャリブレートするために使用される情報を測定し、および/またはキャプチャすることができ、これらの時刻は、デバイスによって、および/またはデバイスを使って実行される特定の活動に対応し得る。
【0051】
そのため、たとえば、加速度計2055をキャリブレートする際に、加速度計データに影響を及ぼすオフセットおよびスケール係数を推定することが望ましい場合がある。オフセットは、加速度計信号の定誤差としてモデル化され得るが、スケール係数は、乗法定数としてモデル化され得る。そこで、キャリブレーションの目標は、ノイズによって損なわれる信号からこれらの定数を推定することであるものとしてよい。
【0052】
ベクトル加速度計信号(たとえば、プロセッサ2010によって加速度計2055から受信される信号)は以下のようにモデル化され得る。
a
x=x
0(1+x
SF)+x
OFF+noise1
a
y=y
0(1+y
SF)+y
OFF+noise2
a
z=z
0(1+z
SF)+z
OFF+noise3
【0053】
ただし、a
xはセンサによって返される加速度計測定結果であり、x
0は真の加速度であり、x
OFFはx軸上のオフセットであり、x
SFはx軸上のスケール係数の偏差(1からの)である。類似の定義が、他の軸についても成り立ち得る。
【0054】
コンピューティングデバイス2000(たとえば、携帯電話を含むものとしてよい)の配向に応じて、オフセットおよびスケール係数は各々の軸上に異なる現れ方をし得る。
【0055】
図3Aおよび
図3Bは、本開示の1つまたは複数の例示的な態様によるコンピューティングデバイス2000の配向が加速度ベクトルにどのような影響を及ぼし得るかを示す例である。たとえば、
図3Aにされているように、z軸は重力の向きに揃えられ、そのため、a
xおよびa
yは0であると予期される。オフセットの存在により、
a
x=x
OFFおよびa
y=y
OFFである。a
z=g(1+z
SF)+z
OFFであることに留意されたい。
【0056】
図3Bに示されているように、コンピューティングデバイス2000は、z軸が重力に対して揃えられるが、逆さまであるように保持される。そこで、a
-z=-g(1+z
SF)+z
OFFとなる。
【0057】
次に、この2つの方程式を解くことによって、z軸に関してオフセットおよびスケール係数を促すことができる。これらの方程式は、
【0060】
オフセットおよびスケール係数は、上で説明されているように2つの未知数について2つの方程式を解くことによって計算され得る。他の軸は、注目する軸が重力に対して揃えられ、次いでそれから離れるようにコンピューティングデバイス2000を置くことによって同じ方法を使用してキャリブレートすることもできる。コンピューティングデバイスの配向が知られていると仮定することで、手動または工場キャリブレーションが可能である。
【0061】
自動キャリブレーションでは、スカラー加速度は重要な概念となり得る。スカラー加速度は、加速度計データのノルムとして定義され得る。たとえば、スカラー加速度は
【0064】
コンピューティングデバイス2000が静止していて、加速度計誤差が存在しない場合、どのようなコンピューティングデバイス2000の配向についても、スカラー加速度は、重力に等しい、すなわち、スカラー加速度は
【0066】
として表すことができるが、ただし、gは重力である。
【0067】
得られた温度について、オフセットとスケール係数の両方は、定数であると仮定することができる。そのため、静止期間において、重力と比較したときのスカラー加速度長の変化は、オフセットおよびスケール係数誤差に帰因するものとしてよい。加速度計長の変化のこれらのノイズを含む推定値は、プロセッサによって、オフセットおよびスケール係数を計算するために使用され、自動キャリブレーションアルゴリズムの基盤を形成し得る。
【0068】
本明細書で説明されている1つまたは複数のキャリブレーションアルゴリズムおよび/または方法において、二乗したスカラー加速度とg
2との差は、以下でさらに詳しく説明するように、カルマンフィルタ(KF)測定として使用される。それに加えて、スカラー加速度に頼るアルゴリズムは、デバイスの配向から独立しているものとしてよい。異なる配向におけるいくつかの測定(必ずしも直交しない)は、ノイズの存在下でキャリブレーションパラメータを確実に求めるために必要な場合がある。
【0069】
図4は、本開示の様々な態様を実装するシステムの例を示す。
図4に示されているように、システム400は、センサ自動キャリブレーションを実行するように構成されたシステムであってよい。少なくとも1つの配置構成において、システム400は、実行されたときに、以下で説明されているような様々なステップをコンピュータデバイスに実行させるコンピュータ可読媒体、ストレージ2025、またはメモリ2035上に格納されているコンピュータ可読命令として実装され得る。別の配置構成では、システム400またはスケジューリングモジュール、キャリブレーションモジュール、および温度補償モジュールなどのシステム400のコンポーネントは、ハードウェア、ソフトウェア、ファームウェアモジュールまたはこれらの組み合わせとして実装され得る。
【0070】
1つまたは複数の態様によれば、システム400は、スケジューリングモジュール405、キャリブレーションモジュール410、および温度補償モジュール415を備えることができる。これらのモジュールの各々について、以下でさらに詳しく説明する。
【0071】
しかし、概要として、少なくとも1つの配置構成において、スケジューリングモジュール405は、キャリブレーションおよび温度補償モジュールをスケジュールする役割を有しているものとしてよい。キャリブレーションを開始するために選択されている基準は、電力考慮事項に基づくものとすることができる(たとえば、加速度計を自動的にキャリブレートする際に、コンピューティングデバイス2000などの、デバイスによって消費される電力を低減するため)。
【0072】
キャリブレーションモジュール410は、固定検出器モジュール、特徴作成/データ前処理モジュール、カルマンフィルタモジュール、フィードバックモニターモジュール、および決定モニターモジュールなどのいくつかのサブモジュールを含み得る。
【0073】
1つまたは複数の配置構成において、温度補償モジュール415は、センサが動作する各々の温度範囲に対する結果の管理を受け持つものとしてよい。遭遇するすべての温度について、キャリブレーションモジュールの1つのインスタンスが実行され得る。中間結果は、ルックアップテーブル内に格納され、同じ温度における次のサンプルに遭遇したときに読み返され得る。
【0074】
1つまたは複数の態様によれば、システム400のモジュールは一緒に動作して、自動センサキャリブレーションを実行し、および/または自動センサキャリブレーションを提供することができる。次に、これらのモジュールの動作の仕方、および/または相互作用の仕方の高レベルの例について説明する。
【0075】
最初に、スケジューリングモジュール405は、コンピューティングデバイス2000が高電力モードに入っているかどうかを判定することができる。次いで、スケジュールされている場合、温度補償モジュール415がアクティブ化され得る。すべてのセンサ測定データおよび温度データの対について、以下でさらに詳しく説明されているように、キャリブレーションモジュール410の2つのインスタンスが更新され得る。一方では、デフォルトの、または周囲の温度でビン範囲に従った分割を行い(たとえば、周囲における収束を高速化するため)、他方では、現在の温度でビン範囲に従った分割を行うことができる(特定の温度に対するカルマンフィルタ(KF)を更新するため)。
【0076】
その後、各々の温度ビンについて、センサ測定(たとえば、加速度)サンプルがキャリブレーションモジュール410に受け渡され得る。次いで、サンプルが静止しているかどうかをチェックすることができる。静止期間の終わりにあると判定された場合、特徴作成モジュールにおいて、平均加速度および分散が計算され得る。特徴は、オフセットおよびスケール係数を反復法で推定することができる、カルマンフィルタに受け渡され得る。特定の温度に対するキャリブレーションパラメータが、決定モニターモジュールによって確実であると検出された場合、信頼性フラグを立てることができる。
【0077】
この後、キャリブレーションモジュールの更新の終わりに、温度ルックアップテーブルが、信頼性フラグとともに中間結果または最終結果で更新され得る。
【0078】
一般に、各々の温度における収束について、カルマンフィルタはキャリブレーションに対するすべての温度で100から150の信頼できる位置を必要とすることがある。そのため、テーブルの構築は時間の経過とともに進み得る。遭遇する温度はしばしば(たとえば、周囲)、キャリブレーションパラメータを高速化することがある。次に、これらのモジュールの各々、さらには自動加速度計キャリブレーションの他の態様に関する追加の詳細について、次のセクションでさらに詳しく説明することにする。
【0079】
図5は、本開示の1つまたは複数の例示的な態様による加速度計2055などの少なくとも1つのセンサを自動的にキャリブレートする例示的な方法を示す。1つまたは複数の態様によれば、本明細書で説明されている方法および/または方法ステップのどれか、および/またはすべては、たとえば、コンピューティングデバイス2000および/または以下でより詳しく説明されているコンピュータシステムなどの、コンピューティングデバイスによって、および/またはコンピューティングデバイス内に実装され得る。一実施形態では、
図5に関して以下で説明されている方法ステップのうちの1つまたは複数は、プロセッサ2010または他のプロセッサなどのコンピューティングデバイス2000のプロセッサによって実装される。それに加えて、または代替的に、本明細書で説明されている方法および/またはステップのどれか、および/またはすべては、メモリ2035または以下でさらに詳しく説明されているようなコンピューティングデバイス2000に内蔵されるか、または外付けの他のコンピュータ可読媒体などのコンピュータ可読媒体上に格納されているコンピュータ可読命令などのコンピュータ可読命令で実装され得る。
【0080】
ブロック501で、コンピューティングデバイス2000(たとえば、モバイルデバイス)は、設定および/またはユーザプリファレンスに対応する情報を初期化し、および/またはロードすることができる。少なくとも1つの配置構成において、そのような情報は、コンピューティングデバイス2000に備えられている1つまたは複数の加速度計2055をキャリブレートするためのデフォルトのキャリブレーションパラメータを含み得る。
【0081】
ブロック502で、パッシブキャリブレーションアクションが検出されたかどうかが判定され得る。たとえば、ブロック502で、コンピューティングデバイス2000は、パッシブキャリブレーションアクションが検出されたかどうかを判定することができる。パッシブキャリブレーションアクションは、たとえば、デバイスの位置および/または配向が知られるか、または推定され得るアクションおよび/または活動を含み得る。たとえば、パッシブキャリブレーションアクションは、ユーザが電話をかけるのを終わらせたときに検出され、そのときに、デバイスは何らかの形でユーザの手に持たれ、および/またはテーブルもしくは他の表面上に平坦に置かれていることが知られているものとしてよい。パッシブキャリブレーションアクションとして動作し得る他の可能な活動および/またはアクションは、スケジューリングモジュールに関してさらに詳しく以下で説明される。パッシブキャリブレーションアクションを検出したことに応答して本発明の態様を実行することは、スケジューリングが日和見的に行われる、たとえば、自然な使い方をしているときに、コンピューティングデバイスのユーザによって、特定のアクションを実行するか、またはコンピューティングデバイスを特定の配向に置くことをユーザに促すことなく実行され得るので有利であるものとしてよい。
【0082】
ブロック503で、デバイスが測定位置にあるかどうかが判定され得る。たとえば、ブロック502で、コンピューティングデバイス2000は、それが測定位置にあるかどうかを判定し得る。測定位置は、デバイスが少なくとも1つの軸に直交している位置を指し、および/または含み得る。1つまたは複数の追加の、および/または代替的な配置構成において、測定位置は、デバイスの配向が1つのまたは複数の軸に関して知られ得る位置を指し、および/または含み得る。たとえば、1つまたは複数の軸に関するデバイスの配向は、1つまたは複数のジャイロスコープ2060、1つまたは複数の磁力計2065、1つまたは複数の他の加速度計2055、および/または同様のものなどの、キャリブレートされる1つまたは複数の加速度計2055以外のセンサを使用して知られ得る。
【0083】
ブロック504で、測定がキャプチャされるか、または取得され得る。たとえば、ブロック504で、コンピューティングデバイス2000は、1つまたは複数の加速度計(たとえば、加速度計1230)から信号入力を受信することができる。そのような信号入力は、特定の時間において検出され、および/または測定された加速度の量に対応し得る。
【0084】
ブロック505で、測定結果が格納され得る。たとえば、ブロック505で、コンピューティングデバイス2000は、1つまたは複数の加速度計からブロック504で受信した信号に関する情報を(たとえば、メモリ1210に)格納することができる。そのような情報は,1つまたは複数の時点における信号の振幅に関する情報、周波数情報、および/または信号に関連する他の情報を含み得る。
【0085】
ブロック506で、信号がキャプチャされた位置に関する情報が格納され得る。たとえば、ブロック506で、コンピューティングデバイス2000は、デバイスの配向(たとえば、度数の単位で)、デバイスの姿勢に関する情報、および/または信号がキャプチャされた時刻に対応するデバイスに関する他の位置情報を(たとえば、メモリ1210に)格納することができる。以下で説明されているように、この位置情報は、その後、信号に基づき決定されるキャリブレーションパラメータに対する信頼水準を決定する際に使用され得る(たとえば、以下でさらに説明されるような配向エントロピーおよび/または周波数ビニング技術を使用して)。
【0086】
その後、ブロック507で、1つまたは複数のキャリブレーションパラメータが更新され得る。たとえば、ブロック507で、コンピューティングデバイス2000は、加速度計に対する1つまたは複数のスケール係数および/またはオフセットパラメータを計算することができ(たとえば、以下でより詳しく説明されている1つまたは複数の技術を使用して)、計算されたスケール係数および/またはオフセットパラメータは、1つまたは複数のキャリブレーションパラメータを更新するために使用され得る。たとえば、1つまたは複数の計算されたスケール係数および/またはオフセットパラメータは、既存のスケール係数および/またはオフセットパラメータを単純に置き換えることができる。それに加えて、または代替的に、たとえば、以下でさらに説明されているようなアルゴリズムを使用して、1つまたは複数の計算されたスケール係数および/またはオフセットパラメータを、既存のスケール係数および/またはオフセットパラメータとどのように組み合わせ、および/または既存のスケール係数および/またはオフセットパラメータを修正するためにどのように使用すべきかを決定することができる。
【0087】
これ以降、この方法は、リアルタイムでない、待ち時間に敏感でないバックグラウンドプロセスとして実行し続け(たとえば、コンピューティングデバイス2000がこの方法をバックグラウンドプロセスとして実行し続けることができ)、これにより、キャリブレーションデータを収集し、および/またはキャリブレーション調整を適用し続けることができる。たとえば、この方法はブロック502に戻り、そこで、コンピューティングデバイス2000は、再び、パッシブキャリブレーションアクションが検出されたかどうかを判定することができる。それに加えて、または代替的に、ブロック502で、パッシブキャリブレーションアクションが検出されていないと判定された場合、および/またはブロック503で、デバイスが測定位置にないと判定された場合、この方法は、再び、ステップ502にループして戻り、バックグラウンドプロセスとして実行を続けるものとしてよい。
【0088】
こうして、この方法は、コンピューティングデバイス2000が時間の経過とともにより多くの測定結果および位置をキャプチャすることを可能にし得る。上で説明されているように、解かれる方程式は、2つの変数を伴うので(つまり、スケール係数とオフセット)、連立方程式を解くために、軸ごとに少なくとも2つの測定結果をキャプチャすることが望ましいと思われる。さらに、この方法をたとえば上で説明されているようなループを用いてバックグラウンドプロセスとして実行することによって、時間の経過とともにキャリブレーションの精度を改善することができる。特に、コンピューティングデバイス2000がより多くの位置を見て、それらの位置に対応するより多くの測定結果を取得するので、キャリブレーションパラメータは、測定のより大きなサンプリングに基づくものとしてよく、しかるべくより正確なものとなり得る。それに加えて、または代替的に、この方法を、たとえば、キャリブレーション測定結果を取得するために特定の時刻を情報に基づき選択する、以下で説明されているスケジューリングモジュールなどの本明細書で説明されている他の態様と組み合わせて実行することによって節電を実現することができる。
【0089】
II.スケジューリングモジュール
本発明の実施形態では、コンピューティングデバイス2000上のタスクの実行をスケジュールするステップを記述する。いくつかの実施形態では、タスクは、デバイスに結合されたセンサをキャリブレートするなどのリアルタイムでない、待ち時間に敏感でないバックグラウンドタスクであってよい。センサとしては、限定はしないが、加速度計2055、ジャイロスコープ2060、磁力計2065、気圧計などが挙げられる。タスクは、コンピューティングデバイス2000の1つまたは複数のコンポーネントがアクティブであるか、または高電力モードに入っている間、デバイスのバッテリが充電中である間、または予想される高品質データの期間中に実行するようにスケジュールされ得る。一実施形態では、タスクのスケジューリングは、高電力モードの間、デバイスの充電中、または高品質データを伴う状態に至る電話の着信音/振動などのトリガーイベントに続いて実行され得る。
【0090】
いくつかの実装では、コンピューティングデバイス2000が高電力モードに入っているかどうかの判定は、高電力モードの間のタスクの実行による電力消費量に基づく。他の実装では、コンピューティングデバイス2000が高電力モードに入っているかどうかの判定は、現在状態が閾値より高い電力レベルに関連付けられている複数の状態のうちの1つであるとの判定結果に基づく。さらに他の実装では、デバイスまたはデバイスのコンポーネントは、様々なスリープ状態、活動状態、低電力状態、および高電力状態などの、定義済みの電力状態を有しているものとしてよい。さらに、いくつかのコンピューティングデバイス2000は、コンピューティングデバイス2000の電力状態へのアクセスを可能にするハードウェアフックを有することができ、これにより、コンピューティングデバイス2000が高電力モードに入っているかどうかの判定が容易になる。
【0091】
本発明のいくつかの実施形態では、センサからのセンサ測定データは、ユーザにデバイスをキャリブレーション位置に置くことを促す、またはユーザにキャリブレーションルーチンの実行を促すことなくキャプチャされ得る。デバイスに結合されているセンサのキャリブレーションは、プロセッサ2010によって自動的に実行され得る。加速度計2055、ジャイロスコープ2060、磁力計2065、気圧計などのセンサの連続的キャリブレーションは、コンピューティングデバイス2000の電力消費量にかなり関わる可能性がある。一態様では、コンピューティングデバイス2000に結合されているセンサをキャリブレートするための方法は、アプリケーションプロセッサ、DSPプロセッサ、またはコンピューティングデバイス2000に結合されている他のコンピューティングモジュール上で実行され得る。節電のためキャリブレーションをあまり頻繁に実行しないことが有益である可能性がある。たとえば、低活動の期間中にデバイスのセンサを連続的にキャリブレートすると、デバイスが低電力状態に入ること、またはデバイスの一部を完全にオフにして節電することを妨げる可能性がある。
【0092】
発明の態様では、節電のためコンピューティングデバイス2000に結合されているセンサを日和見的にキャリブレートするための方法を説明する。一般に、コンピューティングデバイス2000のキャリブレーションは、デバイスが活動状態にあるとき、または高品質キャリブレーションデータを生成するいくつかの活動の期間中にトリガーされ得る。それに加えて、キャリブレーションは、設定された期間に対してキャリブレーションがトリガーされていない状況を補償するようにランダムに、また決定論的にスケジュールされ得る。
【0093】
トリガーに基づく決定論的スケジューリング
コンピューティングデバイス2000に結合されているセンサのキャリブレーションは、コンピューティングデバイス2000またはコンピューティングデバイス2000のいくつかのコンポーネントがアクティブ状態にあるときに実行されるか、またはスケジュールされ得る。コンピューティングデバイス2000のアクティブ状態について、コンピューティングデバイス2000の異なるコンポーネントは、異なるレベルのパワーマネージメント機能または活動状態を有するものとしてよい。本発明の態様では、より高い電力消費量に関連付けられている活動状態の間にキャリブレーションを実行することができる。コンピューティングデバイス2000がすでにアクティブであり、他の有用なタスクを実行しているときに、キャリブレーションデータを収集するステップに関連する電力は、他のタスクに比べて無視できるくらいに小さい。たとえば、デバイスは、このデバイスのディスプレイがオンにされているとき、またはアプリケーションプロセッサが実行中であるときに高電力モードに入っているものとしてよい。ディスプレイは、電子メールを送受信する、テキストを作成する、電話を受けるもしくは電話をかける、コンピューティングデバイス2000が着信音を鳴らすまたは振動する、コンピューティングデバイス2000を使用して通信する、またはコンピューティングデバイス2000上でウェブをブラウジングする、ゲームをするなどの活動中にオンにされ、キャリブレーションデータを生成するためのセンサ測定結果が、そのような活動状態においてプロセッサによって収集され得る。
【0094】
いくつかの態様では、キャリブレーションは、高品質キャリブレーションデータを生成するいくつかの活動によってトリガーされ得る。これらの活動中にコンピューティングデバイスのセンサをキャリブレートすることは、デバイスが高電力モードで動作していない場合であっても、高品質キャリブレーションデータを収集するために望ましい場合がある。高品質キャリブレーションデータとして、限定はしないが、高い信頼度でセンサ測定結果をオフセットするために使用され得るキャリブレーションデータが挙げられる。たとえば、加速度計では、高品質キャリブレーションデータは、デバイスが静止している間に収集されるキャリブレーションデータを含み得る。さらに、キャリブレーション結果に関するデータの品質は、収集されたキャリブレーションデータに関連する配向の数を増やすことによって改善され得る。電話をかける、または電話を受けるというのは、価値あるキャリブレーションデータを提供し得るキャリブレーションデータを収集するための可能なトリガーの一例である。いくつかのデバイスにおいて、アプリケーションプロセッサはオフにされ、補助プロセッサ、マイクロコントローラ、DSPまたはASICが電話をかけるために使用され得る。また、ディスプレイも、節電のため通話中にオフにすることができる。したがって、デバイスは、アプリケーションプロセッサとディスプレイの両方がオフにされている低電力状態で動作する。しかし、複数の配向を含む高品質キャリブレーションデータは、通話中にキャプチャされてもよい。X、Y、およびZ軸の各々で対象となる配向角度の数は、電話をかけ、電話を受けている間に、キャリブレーションデータが取得されるときに著しく改善され得る。他の態様では、コンピューティングデバイス上のセンサのキャリブレーションも、一番の関心事ではないコンピューティングデバイス2000による電力消費量とともに決定論的にスケジュールされてもよい。たとえば、コンピューティングデバイス2000のバッテリが充電中である場合、節電は優先事項でなく、コンピューティングデバイス2000のキャリブレーションは、決定論的にスケジュールされ得る。
【0095】
図6は、キャリブレーションデータの収集をスケジュールするための非制限的な例を示す簡略化された流れ図である。
図6で説明されている、スケジューリングモジュール405/605などの、プロセス600は、ハードウェア(回路、専用ロジックなど)、ソフトウェア(汎用コンピューティングシステムまたは専用マシン上で実行されるようなもの)、ファームウェア(組み込みソフトウェア)、またはこれらの組み合わせを備える処理ロジックによって実行され得る。一実施形態では、プロセス600は、
図20に示されているような1つまたは複数のコンピューティングデバイス2000によって実行される。一実施形態では、センサ2050は、
図20で説明されているデバイスのフィルタリングおよび処理コンポーネントによるさらなる処理のためにセンサ入力を取得する。
【0096】
ブロック605で、コンピューティングデバイス2000からのスケジューリングモジュールは、スケジューリングが必要でないか定期的にチェックを実行する。ブロック610で、コンピューティングデバイス2000のスケジューリングモジュールは、デバイスが活動状態にあるか、充電中であるか、または通話中であるかをチェックする。ブロック620で、スケジューリングモジュールが、デバイスが活動状態にあるか、充電中であるか、または通話中であることを検出した場合、スケジューリングモジュールは、決定論的スケジューリングをアクティブ化することができる。ブロック630で、キャリブレーションモジュールは、コンピューティングデバイス2000に結合されているセンサを使用してキャリブレーションデータを収集するようにトリガーされる。
【0097】
一実装において、活動モードは、デバイスの状態に関連付けられている電力レベルにアクセスすることによって決定され得る。たとえば、デバイスは、デバイスに関連付けられている電力消費レベルが閾値レベルより高いか、またはデバイスの状態が所定の閾値レベルより高い電力レベルに関連付けられている複数の状態のうちの1つである場合に活動モードに入っていると見なしてよい。活動モードとして、限定はしないが、電子メールを送受信する、テキストを作成する、電話を受けるかもしくはかける、デバイスが着信音を鳴らすかもしくは振動する、デバイスを使用して通信する、またはデバイス上でインターネットブラウジングを行うことが挙げられる。モバイルデバイスなどの、コンピューティングデバイス2000の着信音および振動は、電話を受けるなどの活動状態へのトリガーとしても作用し得る。
【0098】
いくつかの実装では、コンピューティングデバイス2000のプロセッサ2010によって実行されるスケジューリングモジュールが、コンピューティングデバイス2000が高品質キャリブレーションデータに関連付けられている配向の1つにあることを検出した場合、スケジューリングモジュールは、ある期間についてキャリブレーションデータの収集をスケジュールする。加速度計2055などのいくつかのセンサについて、1つまたは複数の配向は、コンピューティングデバイス2000が特定の配向で静止しているか、または実質的に静止していると判定したことに基づき高品質キャリブレーションデータに関連付けられ得る。いくつかの実装では、デバイスの低電力状態またはスリープ状態への遷移は、少なくともキャリブレーションデータの収集が完了するまで遅らせることができる。デバイスの低電力状態またはスリープ状態への遷移の遅延は、コンピューティングデバイスが高品質データに関連付けられている状態に遷移することを予想することに基づくものとしてよく、キャリブレーションデータは、高品質データのこの状態において収集される。一実施形態では、コンピューティングデバイス2000は、キャリブレーションデータを収集するために高電力状態と低電力状態との間の中間状態に入ることができる。
【0099】
ランダムスケジューリング
コンピューティングデバイス2000は、設定された長さの時間においてキャリブレーションがトリガーされていない状況を補償するように1つまたは複数のセンサ2050のキャリブレーションをランダムにスケジュールすることができる。このような状況では、コンピューティングデバイス2000がコンピューティングデバイス2000のトリガーベースのキャリブレーションに単独で依存し得る前に、積極的なスケジューリングがコンピューティングデバイス2000に関連付けられているセンサ2050をキャリブレートする必要がある可能性がある。ランダムスケジューリングモードでは、コンピューティングデバイス2000は、コンピューティングデバイス2000に対する活動状態または他の電力考慮に関係なくキャリブレーションデータを収集することができる。コンピューティングデバイス2000のプロセッサ2010によって実行されるキャリブレーションアルゴリズムは、各々の軸上のエントロピーのレベルに基づき収束が生じていない場合に積極的なスケジューリングに切り替えるオプションをさらに提供することができる。
【0100】
図6を再び参照すると、ブロック615で、スケジューリングモジュールは、収集されたキャリブレーションデータの不足または収束の欠如を判定し、収集されたキャリブレーションデータにおける不足または収束の欠如を判定したことに応答して、センサに対するキャリブレーションデータの収集のランダムスケジューリングをアクティブ化することができる。一実施形態では、収集されたキャリブレーションデータにおける収束の欠如は、固定された期間における第2のタスクのスケジューリングの欠如に基づき決定され得る。例示的な一実装において、ブロック625で、最後のキャリブレーションが2日前から30日前までの間に実行された場合、キャリブレーションデータに対するランダムスケジューリングがアクティブ化され得る。それに加えて、ブロック615で、プロセッサ2010によって実行されるスケジューリングモジュールは、ランダムスケジューリングをアクティブ化する前にキャリブレーションデータが信頼できるものであるか、センサ2050が周囲温度に保たれているかをチェックすることができる。ブロック630で、キャリブレーションモジュールは、コンピューティングデバイス2000に結合されているセンサ2050を使用してキャリブレーションデータを収集するようにトリガーされ得る。
【0101】
図6に例示されている特定のステップは、本発明の一実施形態による、動作モードを切り替える特定の方法を構成することは理解されるであろう。ステップの他のシーケンスも、代替的実施形態においてしかるべく実行され得る。たとえば、本発明の代替的実施形態は、上で概要を述べたステップを異なる順序で実行することができる。たとえば、ユーザは、第3の動作モードから第1の動作モードに、第4のモードから第2のモードに、またはこれらのモード間の組み合わせに変更することを選択することができる。さらに、
図6に例示されている個別のステップは、個別のステップに適している通りに様々なシーケンスで実行され得る複数のサブステップを含み得る。さらに、特定の用途に応じて追加のステップを加えたり、取り除いたりできる。当業者であれば、プロセスの多くの変更形態、修正形態、および代替的形態を認識し、理解するであろう。
【0102】
配向位置の予想
本発明のいくつかの態様において、いくつかの活動の後、およびデバイスが低電力状態に入りデバイスの予想される配向に関連付けられているキャリブレーションデータをキャプチャする前にタイムアウトが実行され得る。このタイムアウトは、キャリブレーションデータが得られるようにコンピューティングデバイス2000がタイムアウト期間に低電力状態に入るのをさらに遅らせることができる。たとえば、ユーザは、電子メール送受信、テキスト作成、またはウェブのブラウジングの後に、シャツまたはズボンのポケット、テーブル、ハンドバッグなど、様々な場所にコンピューティングデバイス2000を置き、デバイスセンサをキャリブレートするための高品質配向データを生成することができる。
【0103】
いくつかの実装では、スケジューリングデバイスは、デバイスの第2の状態への遷移を、コンピューティングデバイス2000の現在の状態に基づき予想することができ、第2の状態は、高品質データに関連付けられ、キャリブレーションデータは、第2の状態のときに収集され、またスケジューリングデバイスは、コンピューティングデバイス2000の第2の状態への遷移を予想して第1の期間により低い電力レベルへのコンピューティングデバイス2000の遷移を遅延させることができる。第1の期間において第2の状態へのデバイスの遷移が検出された場合、第2の期間においてより低い電力状態へのデバイスの遷移が遅延され、第2の期間においてキャリブレーションデータの収集がスケジュールされ得る。
【0104】
図7は、高品質キャリブレーションデータに関連付けられているコンピューティングデバイス2000の配向を予想してキャリブレーションデータを収集するためのウィンドウを拡張するための例示的な実装を示すタイミング図である。時刻705において、高品質キャリブレーションデータ、より高い電力、またはコンピューティングデバイス2000のバッテリの充電などの節電不可知状態に関連付けられている活動の完了が検出され得る。一実施形態では、コンピューティングデバイス2000は、活動状態の完了を検出したことに応答して、時刻705において、DEF_SCH_OFFトリガーを発生し得る。コンピューティングデバイス2000は、コンピューティングデバイス2000に対するキャリブレーションデータを収集するための注目している比較的静止状態の位置または配向を検出することを予想して、時刻710で終了する、第1の期間(
図7のT1)にコンピューティングデバイス2000の状態を監視するステップも続ける。コンピューティングデバイス2000のこれらの静止状態の位置および配向は、高品質キャリブレーションデータが利用可能であり続ける時間に関連付けられ得る。注目している配向が第1の期間(T1)に検出された場合、スケジューリングモジュールは、高品質キャリブレーションデータを収集するために、時刻720で終了する、第2の期間(
図7のT2)に対する時間の延長を求める要求(時刻715におけるREQ_EXTN)を信号として送信することができる。
図7において、キャリブレーションデータの収集は、第2の期間の終わりのマークにもなる時刻720で停止され得る。あるいは、時刻725で、プロセッサ2010によって実行される、スケジューリングモジュールは、STOP_EXTN信号をアサートすることによってキャリブレーションデータの収集を停止することができる。
【0105】
III.キャリブレーションモジュール
次の説明では、添付図面などの、本開示の他の部分とともに、次の表で定義されている用語が使用され得る。
【0107】
図8は、コンピューティングデバイス2000上のタスクの実行をスケジュールするため本発明の実施形態によって実行される非制限的な方法を示す簡略化された流れ図である。キャリブレーションモジュールなどのプロセス800は、ハードウェア(回路、専用ロジックなど)、ソフトウェア(汎用コンピューティングシステムまたは専用マシン上で実行されるようなもの)、ファームウェア(組み込みソフトウェア)、またはこれらの組み合わせを備える処理ロジックによって実行され得る。一実施形態では、プロセス800は、
図20に示されているような1つまたは複数のコンピューティングデバイス2000によって実行される。
【0108】
例示的な
図8を参照すると、ブロック802で、本発明の実施形態を実行するコンピューティングデバイス2000のコンポーネントは、コンピューティングデバイス2000の第1の状態を検出することができ、コンピューティングデバイス2000の第1の状態は、第1の電力レベルおよび第1のタスクに関連付けられ得る。ブロック804で、本発明の実施形態は、第1の状態に関連付けられている第1の電力レベルが閾値より高い、またはデバイスに結合されているバッテリが充電中であると判定することができる。ブロック806で、本発明の実施形態は、コンピューティングデバイス2000上の第2のタスクの実行を、第1の状態に関連付けられている第1の電力レベルが閾値より高い、またはデバイスに結合されているバッテリが充電中であると判定したことに応答して、スケジュールすることができる。デバイス上の第2のタスクは、リアルタイムでないタスク、待ち時間に敏感でないタスク、またはバックグラウンドタスクであってよい。
【0109】
一実施形態では、第1の状態に関連付けられている第1の電力レベルの判定は、第1のタスクを実行している間の電力消費量に基づく。別の実施形態では、第1の状態に関連付けられている第1の電力レベルが閾値より高いと判定するステップは、第1の状態が閾値より高い電力レベルに関連付けられている複数の状態のうちの1つであると判定するステップを含む。閾値より高い電力レベルに関連付けられている複数の状態は、デバイスのディスプレイの1つまたは複数がオンにされると、アプリケーションプロセッサが活動を実行し、電子メールを送受信し、テキストを作成し、電話を受けるかもしくはかけ、デバイスの着信音または振動を行わせ、デバイスを使用して通信し、またはデバイス上でインターネットブラウジングを行うことを含み得る。さらに別の実施形態では、第1の状態に関連付けられている第1の電力レベルの判定は、コンピューティングデバイス2000上のハードウェアメカニズムにアクセスすることによってコンピューティングデバイス2000の電力状態にアクセスすることに基づく。
【0110】
一実施形態では、第2のタスクは、センサ2050を使用するキャリブレーションデータの自動収集に関連付けられ得る。センサからのセンサ測定結果は、ユーザにコンピューティングデバイス2000をキャリブレーション位置に置くことを促す、またはユーザにキャリブレーションルーチンの実行を促すことなくキャプチャされ得る。センサ2050は、加速度計2055、ジャイロスコープ2060、または磁力計2065のうちの1つであるものとしてよい。プロセッサ2010によりキャリブレーションデータを自動的に収集するステップは、第1の期間に複数の配向の高品質キャリブレーションデータに関連付けられている配向についてコンピューティングデバイス2000を監視するステップと、デバイスが高品質キャリブレーションデータに関連付けられている配向のうちの1つの配向にあることを検出したことに応答して、第2の期間にキャリブレーションデータを収集するステップとを含み得る。一実装において、高品質データに関連付けられている配向でキャリブレーションデータを収集するステップは、コンピューティングデバイス2000がその配向で静止しているか、または実質的に静止していると判定するステップをさらに含み得る。一態様では、センサ測定結果は、第2の期間にセンサ2050を使用してキャリブレーションデータを収集するためにコンピューティングデバイス2000が高品質キャリブレーションデータに関連付けられている配向に遷移したかどうかを判定するために、デバイスが第1の電力レベルにある間に収集され得る。
【0111】
一実施形態では、第2のタスクがスケジュールされ、一次/第1のタスクが完了している間にバックグラウンドで実行中である。この方法は、少なくとも第2のタスクの完了までデバイスの第2の電力レベルへの推移を遅延させることをさらに含むものとしてよく、第1の電力レベルは、第2の電力レベルよりも高い。一実装において、デバイスの第2の電力レベルへの遷移を遅延させるステップは、デバイスの第2の状態への遷移を、デバイスの第1の状態または電話の着信音などのトリガーに基づき予想するステップを含み、第2の状態は、高品質データに関連付けられ、キャリブレーションデータは、第2の状態のときに収集される。
【0112】
別の実施形態では、データを収集する第2のタスクは、コンピューティングデバイス2000が静止位置に確率的に進むことができるときに、通話などの、第1のタスクの完了後に実行され得る。ここで、センサ2050を使用してキャリブレーションデータを自動的に収集するステップは、デバイスの第2の状態への遷移を、デバイスの第1の状態に基づき予想するステップであって、第2の状態は、高品質データに関連付けられ、キャリブレーションデータは、第2の状態のときに収集される、ステップと、デバイスの第2の状態への遷移を予想して第1の期間に第2の電力レベルへのデバイスの遷移を遅延させるステップとを含み得る。この方法は、第1の期間内の第2の状態へのデバイスの遷移を検出するステップと、第2の期間に第2の電力レベルへのデバイスの遷移を、第1の期間内に第2の状態へのデバイスの遷移を検出したことに応答して遅延させるステップと、第2の期間中のキャリブレーションデータの自動収集をスケジュールするステップとをさらに含み得る。高品質キャリブレーションデータは、電話をかけるか、または電話を受けるときに収集され得る。
【0113】
一実施形態では、収集されたキャリブレーションデータにおける不足または収束の欠如を判定したことに応答して、デバイス上の第2のタスクのランダムスケジューリングをアクティブ化する。収集されたキャリブレーションデータにおける不足または収束の欠如は、第1の期間に対する第2のタスクのスケジューリングの欠如に基づき決定され得る。
【0114】
図8に例示されている特定のステップは、本発明の一実施形態による、動作モードを切り替える特定の方法を構成することは理解されるであろう。ステップの他のシーケンスも、代替的実施形態においてしかるべく実行され得る。たとえば、本発明の代替的実施形態は、上で概要を述べたステップを異なる順序で実行することができる。たとえば、ユーザは、第3の動作モードから第1の動作モードに、第4のモードから第2のモードに、またはこれらのモード間の組み合わせに変更することを選択することができる。さらに、
図8に例示されている個別のステップは、個別のステップに適している通りに様々なシーケンスで実行され得る複数のサブステップを含み得る。さらに、特定の用途に応じて追加のステップを加えたり、取り除いたりできる。当業者であれば、プロセスの多くの変更形態、修正形態、および代替的形態を認識し、理解するであろう。
【0115】
図9は、本開示の1つまたは複数の例示的な態様によるキャリブレーションモジュールの例示的なコンポーネントを示す。次の段落では、
図9に示されている図に含まれる機能ブロックについてさらに詳しく説明する。次の説明では、添付図面などの、本開示の他の部分とともに、本発明の実施形態は、例示的なセンサとして加速度計2055を使用して説明され得るが、ジャイロスコープ2060、磁力計2065、気圧計などの他のセンサも、代わりに本発明の態様を実装するために使用され得る。
図9で説明されている様々なモジュールは、ハードウェア、ソフトウェアもしくはファームウェア、またはこれらの組み合わせを使用して実装することができる。
【0116】
図9に示されている例示的なキャリブレーションモジュールの開始時に、入力センサ2050サンプルは、ブロック902で、高品質データサンプルについてテストされ得る。加速度計2055については、センササンプルは、静止しているかどうかに関してテストされ得る。静止しているかどうかは、Qualcomm運動検出器(QMD)と勾配運動検出器(GMD)との組み合わせに基づき判定することができ、キャリブレーションアルゴリズム内に実装することができる。サンプルが静止状態にあると判定された後、同じ静止しているセグメントの一部である他のサンプルと平均され得る。静止しているセグメントデータの分散も計算され得る。ジャイロスコープ2060などの他のセンサについては、デバイスが静止しているかどうかのほかに他の運動および配向も、高品質データに関連付けられ得る。
【0117】
引き続き
図9を参照すると、ブロック904で、データ前処理ブロックは、カルマンフィルタにデータを受け渡す前にセンサ2050の入力を前処理する。加速度計2055を含む例示的な実施形態について、前処理ブロック904は、平均された加速度計読み取り値からスカラー加速度を計算する。スカラー加速度分散も個別の軸分散の関数として計算される。これら2つの特徴は、測定結果およびノイズ推定値としてカルマンフィルタに受け渡される。特徴の作成およびその分散の推定の詳細について、以下でさらに詳しく説明する。
【0118】
ブロック906で、カルマンフィルタは前処理ブロック904からの入力を使用して、キャリブレーションパラメータの推定値を最適に(平均平方誤差を最小にする)計算することができる。高水準では、カルマンフィルタは、分散で重み付けされた各々の新しい測定結果を使用し、それにより、信頼できない測定結果により小さな重みを自動的に割り当てる。低い分散または信頼できる測定結果は、推定値に寄与することが多く、最後の推定値に適宜組み込まれる。カルマンフィルタは、キャリブレーションパラメータおよびその誤差推定値を備える。このブロックは、以下でさらに説明する。
【0119】
ブロック908で、フィードバックブロックは、推定されたキャリブレーションパラメータの分散を監視する。分散が特定の限度条件を満たした場合、推定されたパラメータは、フィードバックに対して信頼できると見なされる。言い換えると、推定されたパラメータは、リアルタイムで入力加速度サンプルに十分正確に適用されるということである。カルマンフィルタモデルの線形性の仮定により、フィルタの性能は、オフセットまたはスケール係数が大きい場合に低下する。これらの効果を緩和するために、推定されたパラメータが入力サンプルに適用され得る。補正が適用されると、推定される残りのオフセットは、より小さくなり、したがって非線形性の効果が緩和される。したがって、精度および収束は、フィードバックを使用することによって改善され得る。
【0120】
ブロック910で、決定ブロックは、カルマンフィルタブロック906、フィードバックモニターブロック908、および独立したメトリクス912からのデータを使用し、推定されたパラメータの品質および信頼性を判定することができる。メトリクスが要件と等価の収束精度を示している場合、キャリブレーションアルゴリズムの結果がクライアントにパブリッシュされ得る。使用されるいくつかのメトリクスは推定されたパラメータ分散、カルマンフィルタからの残差、および配向エントロピーである。メトリクスは、
図10、
図11、および
図12においてより詳しく説明されている。
【0121】
カルマンフィルタでは、フィードバック制御を使用することによってプロセスを推定する。プロセス状態(オフセットおよびスケール係数)がある時点で推定され、次いで、ノイズを含む新しい測定結果と比較される。次いで、残留誤差がフィードバックされ、プロセスが繰り返される。本発明の例示的な一実施形態は、以下のようにステップバイステップで説明される。
【0122】
ステップ1。静止している加速度計の測定結果(静止期間またはセグメント全体にわたって計算される)およびその分散がカルマンフィルタに送られるので、時間更新フェーズでは、現在のオフセットおよびスケール係数推定値(「State」)および分散を射影する。この場合、現在の状態は前の状態に等価であり(先験的)、現在の共分散は、最後の共分散行列に等しい(先験的共分散)。
【0123】
ステップ2。次に、測定更新フェーズが、まず最初にカルマンゲインを計算することから始まる。次に、現在の測定zが組み込まれ、キャリブレーションパラメータの事後推定を生成する。この時点において、事後分散も更新される。
【0124】
ステップ3。各々の時間および測定更新の対の後に、プロセスは、新しい先験的推定を予測するために使用される前の事後推定を用いて繰り返される。この再帰的手続きは、所望の精度が得られるまで実行される。
【0125】
加速度計2055の詳細が上の
図8に関して説明されているように本発明の実施形態を説明する際に使用され得るが、磁力計2065、ジャイロスコープ2060、気圧計などの他のセンサも、本発明の実施形態によって使用され得る。
【0126】
図10は、本開示の1つまたは複数の例示的な態様によるフィードバックループを使用してキャリブレーションパラメータを更新する例示的な方法を示す。
図10の態様では、
図9からの決定モニター910を説明している。プロセス1000は、ハードウェア(回路、専用ロジックなど)、ソフトウェア(汎用コンピューティングシステムまたは専用マシン上で実行されるようなもの)、ファームウェア(組み込みソフトウェア)、またはこれらの組み合わせを備える処理ロジックによって実行される。一実施形態では、プロセス1000は、
図20に示されているような1つまたは複数のコンピュータシステム2000によって実行される。一実施形態では、センサ2050は、フィルタリングによりさらなる処理および
図20で説明されているコンピューティングデバイス2000のコンポーネントによる処理のためにセンサ入力を取得する。
【0127】
すでに説明されているように、この例示的な方法で説明されているものなどのフィードバックループを使用することによって、測定データがセンサ読み取り値にリアルタイムで(たとえば、進行中の自動キャリブレーションプロセスにおいて)適用され、性能を徐々に改善してゆくことができる。たとえば、デバイスが3日間にわたってキャリブレートされる場合、1日目にキャプチャされる測定結果は、全3日間のキャリブレーション期間がまだ終わっていないとしても、2日目に加速度計データにキャリブレーションパラメータを適用するために使用され得る。この例では、センサデータを徐々にキャリブレートすることによって、2日目の測定はより正確なものとなり、次いで、3日目の測定も同様により正確になる。
【0128】
ブロック1001で、工場/デフォルトキャリブレーション設定がロードされ得る。たとえば、ブロック1001において、コンピューティングデバイス2000は、デフォルトのキャリブレーションパラメータをロードすることができる(たとえば、工場での製造時にコンピューティングデバイス2000上にロードされる)。
【0129】
ブロック1002で、キャリブレーションセンサ測定結果に対応をするセンサ入力を受け取ることができる。たとえば、ブロック1002で、コンピューティングデバイス2000は、コンピューティングデバイス2000に備えられている加速度計2055などの1つまたは複数のセンサからそのようなセンサ入力を受け取ることができる。ブロック1003で、キャリブレーションパラメータが更新され得る。たとえば、ブロック1003で、コンピューティングデバイス2000は、受け取ったセンサ入力に基づき1つまたは複数のキャリブレーションパラメータを更新することができる。
【0130】
ブロック1004で、限度に達したかどうかが判定され得る。たとえば、ブロック1004で、コンピューティングデバイス2000は、位置測定が、1つまたは複数のキャリブレーションパラメータのファイナライズおよび/またはパブリッシュを保証するのに十分な回数だけなされたかどうかを判定することができる。少なくとも1つの配置構成において、この決定は、所定の閾値に基づき得る。他の配置構成では、この判定は、得られた配向の多様性または
図11および
図12で説明されている他の要因などの他の要因に基づくものとしてよい。ブロック1004において、限度に達していないと判定された場合、この方法はブロック1002に戻り、追加のセンサ入力を受け取ることができる。このようにして、フィードバックループおよび/または閉ループなどのフィードバックループが形成され得る。その一方で、ブロック1004において、限度に達していると判定された場合、ブロック1005で、最終的キャリブレーションがパブリッシュされ得る。たとえば、ブロック1005で、コンピューティングデバイス2000は、フィードバックループの様々な繰り返しを通じて生成され、および/またはチューニングされたキャリブレーションパラメータをファイナライズし、パブリッシュし、および/または格納することができる。
【0131】
図10に例示されている特定のステップは、本発明の一実施形態による、動作モードを切り替える特定の方法を構成することは理解されるであろう。ステップの他のシーケンスも、代替的実施形態においてしかるべく実行され得る。たとえば、本発明の代替的実施形態は、上で概要を述べたステップを異なる順序で実行することができる。たとえば、ユーザは、第3の動作モードから第1の動作モードに、第4のモードから第2のモードに、またはこれらのモード間の組み合わせに変更することを選択することができる。さらに、
図10に例示されている個別のステップは、個別のステップに適している通りに様々なシーケンスで実行され得る複数のサブステップを含み得る。さらに、特定の用途に応じて追加のステップを加えたり、取り除いたりできる。当業者であれば、プロセスの多くの変更形態、修正形態、および代替的形態を認識し、理解するであろう。
【0132】
決定モニターモジュール910は、推定された状態の品質を監視し、必要な信頼性が得られたときにキャリブレーション結果をパブリッシュすることを許可する。決定モニターでは、次のメトリクスの組み合わせを使用して決定を行う。
--推定分散(パラメータ分散(P)行列の対角要素)
--配向エントロピー
--KF残差
--KFスカラー長残差
--推定共分散比
--閾値を修正するために使用されるCLオフセットの大きさ
メトリクスの各々について、以下で詳しく説明する。
【0133】
推定分散
本発明の実施形態では、事後共分散行列の対角要素を決定する。これらの要素が厳しい閾値(小さな分散)より低い場合に、推定される状態は、信頼できるものと見なされ得る。共分散行列は、状態推定における実誤差を表し得ない。現在のモデルでは、P行列は、楽観的すぎる場合がある。いくつかの測定を得ることは有用である場合があるが、すべての測定が状態推定の改善に寄与するとは限らない。運動の多様性は、収束に役立ち得るが、モデルは、この態様を明示的に考慮することはない。そのため、P要素は、電話の位置が前の位置に非常によく似ている場合であっても減少し得る。一例として、コンピューティングデバイス2000が常に同じ配向にある場合、P内の項は減少する(非常にゆっくりとした速度で)。しかし、長期間にわたる場合、結果は小さな分散を有することもあり得るが、実際には、状態はただ1つの一意的な位置を使用することによって推定されている可能性がある。
【0134】
カルマンフィルタは、推定が一意的な位置から導かれたのかそうでないのかを知ることはないが、それはこのモデルはこの情報を欠いているからである。たとえば、3つの一意的な位置と、6つの未知数(3つのオフセット、3つのスケール係数)を推定すべき場合、カルマンフィルタは、そのようなシナリオを回避するために組み込まれている知識を有していないことがある。そのため、この情報は、以下でさらに詳しく説明するようにカルマンフィルタを使用して、配向エントロピーの形態で外部的に符号化され、監視され得る。そのため、誤差共分散項を測定基準として使用して収束をチェックすることが望ましいが、「キャリブレーションが完了した」と宣言するには十分な条件とならない場合がある。
【0135】
配向エントロピー
デバイスに結合されている複数のセンサのキャリブレーションシステムは、センサをキャリブレートするために時間をかけてセンサ入力を監視する。しかし、モバイルデバイスが長期間にわたって同じ配向にある場合、その結果、分散は小さく、誤って良いキャリブレーション結果を示すおそれがある。実際、状態は1つまたはごく少数の一意的な配向のみを使用することによって推定され、その結果、システム内の様々なセンサに対するキャリブレーションパラメータは不満足なものとなった。
【0136】
センサ測定結果をフィルタリングするためにそのようなシステムにおいて使用されるカルマンフィルタは、推定が一意的な配向から導かれたのかそうでないのかを知ることはないが、それはこのモデルがこの情報を欠いているからである。そのため、本発明のいくつかの態様では、この情報を配向エントロピー(
図11)および頻度ビニング(
図12)の形態で外部的に符号化し、カルマンフィルタからの結果を監視する。
【0137】
アルゴリズムにおいてなされる仮定の1つは、測定が独立しており、独立した電話位置から理想的には得られるという仮定であってよい。この趣旨で、測定の一部として対象となる配向を含むようにカルマンフィルタ内でチェックは行われない。そこで、フィルタの外部で対象となる配向のチェックを行う(軸ごとに)。配向角度は、
【0139】
に示されているようなベクトル加速度とスカラー加速度との比の逆コサインとして決定され得る。
【0140】
本発明の実施形態は、各々の軸に対するヒストグラムを維持し、固定されたビンを使用し、0から180度までの角度を対象とする。新しい測定を受け取ると必ず、配向ヒストグラムは更新されるものとしてよく、配向の対応する確率が更新される。これは、
【0142】
に示されているように実行することができる。
【0146】
ヒストグラムカウントまたはエントロピーのいずれかが、対象となる異なる配向を示す可能性もある。いずれか一方または両方の量が閾値より高いことを確認することによって、十分な独立した測定が使用されたかどうかを判定することができる。そこで、この独立した情報は、推定されたキャリブレーションパラメータの信頼性に関する決定を補強する。
【0148】
これにより、結果をパブリッシュすることに関して決定を下す前に、決定モニターで、十分な多様性のある配向が出現したことを確認する。最大配向エントロピーと現在のエントロピーの両方が、決定を下すために使用される。決定は、エントロピーに対して下限を使用することによって行われる。
【0149】
異なるブロックで使用される配向エントロピー
ループ閉条件:配向エントロピーは、ループ閉(フィードバック)の前の追加の基準として使用され得る。これは、非常によく似た電話配向が生じたときにフィードバックが開始しないようになされる。いくつかのテストで、分散項だけに基づくフィードバックでは不正なフィードバックが生じたことが観測された。ループが最初に閉じたときであっても追加のエントロピー基準を含めることでフィルタの安定性が増す。
【0150】
P行列の部分的残余:エントロピー数は、データの多様性を特徴付けることができる。エントロピーは、ループ閉がなされたときにPを修正するために使用され、ループ閉の一番最初に追加項を加えてPを大きな値にリセットする。
【0152】
Pの増加は、ループのフィードバックまたは閉による過渡値を回避し得る。閉のときに、非直線性誤差がかなり低減され、モデルはより正確なものとなる。
【0153】
類似の位置におけるPのフリーズ:配向エントロピーは、位置が変化しているかどうかに関する情報を提供し、電話の位置が前の位置から変化していないときにPの減少を回避するために使用され得る。
P
k=αP
k-1+(1-α)P
k,
ただし、αは現在の配向が前の配向に等しいかどうかに応じて、それぞれ、1または0である。
【0154】
図11は、本開示の1つまたは複数の例示的な態様による配向エントロピーを使用してキャリブレーション測定結果を評価する非制限的である例示的な方法を示す。プロセス1100は、ハードウェア(回路、専用ロジックなど)、ソフトウェア(汎用コンピューティングシステムまたは専用マシン上で実行されるようなもの)、ファームウェア(組み込みソフトウェア)、またはこれらの組み合わせを備える処理ロジックによって実行される。一実施形態では、プロセス1100は、
図20に示されているような1つまたは複数のコンピュータシステム2000によって実行される。一実施形態では、センサ2050は、フィルタリングによりさらなる処理および
図20で説明されているデバイスのコンポーネントによる処理のためにセンサ入力を取得する。一実施形態では、カルマンフィルタを使用することができる。
【0155】
ブロック1101で、加速度計測定結果などの複数のセンサキャリブレーション測定結果、および対応する位置/配向情報が受信され得る(たとえば、コンピューティングデバイス2000において備えられている1つまたは複数の加速度計および/または他のセンサからコンピューティングデバイス2000および/またはその中に備えられているプロセッサ2010によって)。例示を目的として加速度計が説明されているが、他のセンサも本発明の実施形態において使用することができる。ブロック1102で、1つまたは複数のプロセッサ2010は、位置/配向に関連付けられている受け取ったセンサキャリブレーション測定結果がすでに分析されているかどうかを判定することができる。
【0156】
位置/配向に関連付けられているセンサキャリブレーション測定結果がまだ分析されていない場合、ブロック1103で、1つまたは複数のキャリブレーションパラメータの1つまたは複数のセンサキャリブレーション測定値および1つまたは複数の信頼値が更新され得る。その一方で、位置がすでに分析されている場合、ブロック1104で、1つまたは複数のキャリブレーションパラメータの1つまたは複数のセンサキャリブレーション測定値は、1つまたは複数のキャリブレーションパラメータの1つまたは複数の信頼値を更新することなく更新され得る。
【0157】
その後、ブロック1105で、最終キャリブレーションパラメータをパブリッシュする前に、1つまたは複数のプロセッサ2010が、配向エントロピーを計算して、複数のキャリブレーション測定結果が異なる配向で得られた度数を判定することができる。ブロック1106で、1つまたは複数のプロセッサ2010は、計算された配向エントロピーが閾値を超えるかどうかを判定することができる。1つまたは複数のプロセッサ2010が、配向エントロピーが閾値を超えないと判定した場合、ブロック1107で、デバイスは、1つまたは複数のセンサをキャリブレートするために測定およびデータの分析を続行することができる。一実施形態では、配向エントロピーが所定の閾値より小さいと判定したことに応答して、プロセッサ2010は、1つまたは複数のキャリブレーションパラメータを更新することなくセンサキャリブレーション測定結果がすでに受け取られている配向に対するセンサキャリブレーション測定結果を破棄することができる。別の実施形態では、配向に対するキャリブレーション測定結果は、1つまたは複数のキャリブレーションパラメータを更新することなくセンサキャリブレーション測定結果中のノイズを低減するためにプロセッサ2010によって使用され得る。その一方で、配向エントロピーが閾値を超えると判定された場合、ブロック1108で、最終キャリブレーションパラメータが、1つまたは複数のプロセッサ2010によってパブリッシュされ得る。
【0158】
図11に例示されている特定のステップは、本発明の一実施形態による、動作モードを切り替える特定の方法を構成することは理解されるであろう。ステップの他のシーケンスも、代替的実施形態においてしかるべく実行され得る。たとえば、本発明の代替的実施形態は、上で概要を述べたステップを異なる順序で実行することができる。たとえば、ユーザは、第3の動作モードから第1の動作モードに、第4のモードから第2のモードに、またはこれらのモード間の組み合わせに変更することを選択することができる。さらに、
図11に例示されている個別のステップは、個別のステップに適している通りに様々なシーケンスで実行され得る複数のサブステップを含み得る。さらに、特定の用途に応じて追加のステップを加えたり、取り除いたりできる。当業者であれば、プロセスの多くの変更形態、修正形態、および代替的形態を認識し、理解するであろう。
【0159】
図12は、本開示の1つまたは複数の例示的な態様による頻度ビニングを使用してセンサキャリブレーション測定結果を評価する非制限的である例示的な方法を示す。プロセス1200は、ハードウェア(回路、専用ロジックなど)、ソフトウェア(汎用コンピューティングシステムまたは専用マシン上で実行されるようなもの)、ファームウェア(組み込みソフトウェア)、またはこれらの組み合わせを備える処理ロジックによって実行される。一実施形態では、プロセス1100は、
図20に示されているような1つまたは複数のコンピュータシステム2000によって実行される。一実施形態では、センサ2050は、フィルタリングによりさらなる処理および
図20で説明されているデバイスのコンポーネントによる処理のためにセンサ入力を取得する。いくつかの実施形態では、カルマンフィルタを使用することができる。
【0160】
ブロック1201で、加速度測定情報などの複数のセンサキャリブレーション測定結果、および対応する位置情報が受信され得る(たとえば、コンピューティングデバイス2000において備えられている1つまたは複数の加速度計および/または他のセンサからコンピューティングデバイス2000および/またはその中に備えられている1つまたは複数のプロセッサによって)。例示を目的として加速度計が説明されているが、他のセンサも本発明の実施形態において使用することができる。ブロック1202で、位置がすでに分析されているかどうかが判定され得る。
【0161】
位置がまだ分析されていない場合、ブロック1203で、1つまたは複数のキャリブレーションパラメータの1つまたは複数の測定値および1つまたは複数の信頼値が更新され得る。その一方で、位置がすでに分析されている場合、ブロック1204で、1つまたは複数のキャリブレーションパラメータの1つまたは複数の測定値は、1つまたは複数のキャリブレーションパラメータの1つまたは複数の信頼値を更新することなく更新され得る。
【0162】
その後、ブロック1205で、位置に対応する頻度ビンのカウントが増加され得る。たとえば、ビンは5度増分単位で0°から360°の角度に割り当てられ、特定の増分の範囲内にある位置はその増分の「ビン」に対するカウントを増やす。このようにして、分析される様々な位置が、上で説明されているように追跡され得る。
【0163】
ブロック1206で、プロセッサは、十分な数の位置が分析されたかどうかを判定することができる。十分な数の位置が分析されていないと判定された場合、ブロック1207で、デバイスは、1つまたは複数のセンサをキャリブレートするために測定およびデータの分析を続行することができる。一実施形態では、十分な数の位置が分析されていないと判定したことに応答して、プロセッサ2010は、1つまたは複数のキャリブレーションパラメータを更新することなくキャリブレーション測定結果がすでに受け取られている配向に対するキャリブレーション測定結果を破棄することができる。別の実施形態では、配向に対するキャリブレーション測定結果は、1つまたは複数のキャリブレーションパラメータを更新することなくキャリブレーション測定結果に関連するノイズを低減するためにプロセッサ2010によって使用され得る。その一方で、十分な数の位置が分析されていると判定された場合、ブロック1208で、最終キャリブレーションパラメータがパブリッシュされ得る(たとえば、上で説明されているように)。
【0164】
図12に例示されている特定のステップは、本発明の一実施形態による、動作モードを切り替える特定の方法を構成することは理解されるであろう。ステップの他のシーケンスも、代替的実施形態においてしかるべく実行され得る。たとえば、本発明の代替的実施形態は、上で概要を述べたステップを異なる順序で実行することができる。たとえば、ユーザは、第3の動作モードから第1の動作モードに、第4のモードから第2のモードに、またはこれらのモード間の組み合わせに変更することを選択することができる。さらに、
図12に例示されている個別のステップは、個別のステップに適している通りに様々なシーケンスで実行され得る複数のサブステップを含み得る。さらに、特定の用途に応じて追加のステップを加えたり、取り除いたりできる。当業者であれば、プロセスの多くの変更形態、修正形態、および代替的形態を認識し、理解するであろう。
【0165】
残差
カルマンフィルタの残差または測定のイノベーションについても上で説明されている。大きな残差は、予測された測定結果(過去の測定結果に基づく)への補正の必要性を示す。そのため、処理される測定が多くなるにつれ、残差がより小さくなると予想される。残差が小さい場合、これは一般的に良い推定値を反映する。われわれは、大きなエントリについてイノベーションベクトルを検査し、それを、結果がまだ信頼できないことを示す指標として使用する。
【0166】
カルマンフィルタでは、測定中にホワイトノイズがあることを仮定する。現在の測定のノイズは、相関があるものとしてよい。それに加えて、モデルの非線形性は非ゼロの残差をもたらす可能性がある。しかし、キャリブレーションが進行するにつれ、また推定されたオフセットがより正確になるにつれ、残差はより小さくなる。理想的には、残差の平均はゼロに等しくなるべきである。
【0167】
このカルマンフィルタモデルは非最適であり、(1)非線形性、(2)モデル化されない変数/状態、(3)相関ノイズ、および(4)位置の多様性の無視のうちのいくつか、またはすべての要因により平均がゼロである残差をもたらし得ない。一実装において、残差閾値は、50mg
2とすることができ、標準偏差は、30mg
2とすることができる。本発明の実施形態は、推定値のロバスト性を高め、フィルタが定常状態誤差に到達することを保証するために、いくつかの場合において、標準偏差に対して限度を設定することができる。
【0168】
スカラー長残差
残差とスカラーは両方とも等価であるべきである。一実装において、残差がmg
2で推論される場合、次のように、スカラー長を計算してスカラー加速度長(mg)と残差を比較することができる。
【0170】
推定共分散比
分散と共分散項との比も、可能な状態結合のチェックに使用される。共分散行列は、以下の式に示される。一実施形態では、状態分散項と共分散項との比(4つの比/状態)が使用され、この比が1を超えるまで結果をパブリッシュし得ない。これは、共分散項が状態分散よりも小さいことを暗示し得る。この測定基準は、他の状態に関して状態の各々の収束の質の指標を与えることができる。
【0172】
たとえば、一実施形態では、x軸のオフセットについて、次の条件がチェックされ得る。
【0174】
閉ループオフセットの大きさ
観測閉ループオフセットが大きい場合、これは、データ中に大きな初期オフセットまたはスケール係数があることを示すものとしてよい。そのため、大きな閉ループの結果を得ることを利用すれば、非線形性の影響を計ることが可能である。また、実験により、誤差の約半分は、フィードバック時にループ閉を実行することによって補正され得ることがわかる。そこで、閉ループ推定の大きさを使用して、残差平均および標準偏差を計算するために閾値ウィンドウを設定することができる。最終決定のため、各々の測定基準における閾値が満たされる必要がある場合がある。
【0175】
3Dヒストグラム加速度計ビニング
一実施形態では、センサからの入力センサキャリブレーション測定結果は3Dヒストグラムで保存され、またカルマンフィルタに定期的に入力され、反復する類似の位置による共分散行列の減少を回避することができる。これは
図10および
図11に関して上で説明されている手順の拡張であるものとしてよい。配向ビンにおけるすべての測定結果は、同じビン内の測定結果との平均をとることができる。これにより、各々の配向ビンは、カルマンフィルタへの入力として1回だけ使用され得る。これは、Pの過小推定を回避するうえで有益であるものとしてよい。
【0176】
アルゴリズム設計の考慮事項
非線形性を回避するためのフィードバック
例示的な簡略化されたモデルにおいて、推定オフセットおよびスケール係数は、測定結果と線形関係を有するものとして仮定され得る。しかし、実際には、この関係は、非線形であり、このような簡略化されたモデルを使用することは性能の形で意味を有する。特に、推定オフセットおよびスケール係数が大きい(100mgまたは5%およびそれ以上である)場合、推定誤差は有意なものとなる可能性がある。
【0177】
非線形性による誤差を低減するために、中間推定値が入力される生の加速度計データに適用され得る。中間結果および「ループを閉じる」を適用することによって、新しい推定値はより小さくなり得る(データが部分的に補正されるので)。フィードバックループは、推定パラメータの標準偏差に基づき設計され得る。フィードバックの不安定性を回避するうえで、推定パラメータの標準偏差が正確であり、信頼性が高いことが望ましい。ループを閉じるときの他の考慮事項は、残差における過渡値を回避し、状態ベクトルをゼロに、場合によっては分散をより高い値に再初期化することであるものとしてよい。実験データによれば、オフセットの誤差を50mg以上に増やすフィードバックはあり得ない。また、フィードバックを適用した結果、すべての軸における誤差は20mgより小さくなった。そこで、ループを正しく閉じることで、結果として性能が改善され得る。
【0178】
H行列の正規化
重力の大きさでH行列を正規化することによって、スケール係数の非線形性は低減され得る。これは、勾配が正規化されるようになり、大きなオフセットの効果が低減されるからである。観測行列は次に示されているようにモデル化され得る。
【0180】
測定結果分散に対する下限(「R」)
測定結果の分散は、個別の軸上の分散の関数として計算され得る。それに加えて、分散計算の信頼度は、静止期間の長さに依存する。短いセグメントでは、推定分散の計算は信頼できない場合がある。長いセグメントでは、分散は非常に小さな値に低減され、したがって過小推定される可能性がある。これらのシナリオを回避するために、静止セグメントの長さにわたって個別の軸分散、さらには平均分散の両方で下限が使用され得る。これらの限度値は、センサのノイズ、量子化、および分解能誤差に基づき設計され得る。
【0181】
推定パラメータ分散に対する下限(「P行列」-共分散行列)
一般に、カルマンフィルタによって処理される静止セグメントの数が多ければ多いほど、状態推定がよくなる傾向がある。そのため、分散は、いくつかの静止セグメントが処理された後に小さくなる。値が非常に小さくなるか、またはゼロに近づくのを回避するために、本発明の実施形態では、分散に対して下限を設けることができる。いくつかの場合において、これは、測定結果も推定パラメータも完全にモデル化または計算されると仮定され得ないので必要な場合がある。それに加えて、予測値の分散が小さい場合、新しい測定結果がより小さな重みで組み込まれ得る。これは、新しい測定結果がオフセットおよびスケール係数誤差において潜在的にゆっくりした変化または遷移を許す可能性があるので有害であると思われる。
【0182】
分散は、センサにおけるノイズフロア、量子化、および分解能誤差などの要因に基づく自然な限度を有するものとしてよい。モデルは、これらの誤差を明示的に説明しないので、分散に対する人工的な下限が使用され得る。それに加えて、結果を外部クライアントにパブリッシュできる状態にある場合、本発明の実施形態では、必要な場合に値をスケーリングすることによって非現実的な、または過度に楽観的な分散を回避することができる。
【0183】
状態ベクトルおよびその分散の適切な初期化
いくつかの実装では、カルマンフィルタに与えられる初期推定値は、可能な限り正確に選択され、初期オフセットおよびスケール係数は、ゼロであると仮定され得る。オフセットに対する誤差分散は、スケール係数について(30mg)^2および(3%)^2に初期化され得る。いくつかの実装では、初期化は、結果をさらに改善するためにセンサの仕様書からの情報を組み込むこともできる。
【0184】
検証のための「良い」測定結果の格納
異なる配向から決定され得る良い測定結果のいくつかの固定された数は、後で使用できるようにレジストリに格納され得る。この一組の保存された測定結果を使用して、非線形性を低減するだけでなく、アルゴリズムにロバスト性をも加えることができる。測定結果は、循環バッファに格納され、ウィンドウサイズは、レジストリ内のメモリ635の利用可能性に基づき決定され得る。測定結果を格納すべきかどうかの決定は、以下の基準に基づくものとしてよい。
【0185】
配向頻度ビン
配向頻度ビンは、軸ごとに維持される。ビン幅は、30度に設定され、0から180°の範囲が対象となる。頻度ベクトルは、新しい測定結果を受け取るごとに更新される。一実装において、各々の軸について多様な測定結果を有するように固定された数の位置が各々のビンに累積され得る。いくつかの実装は、サイズ10の移動ウィンドウの形態をとり得る。
【0186】
垂直または水平加速度位置
軸が水平または垂直に揃えられる(重力に、または重力から遠ざかるように揃えられる)場合、測定結果は、将来使用できるように、メモリ635または他の記憶領域に保存することができる。これは、キャリブレーションデータを収束させる際に役立つ位置が格納されることを保証し得る。また、測定結果は、ユーザが6位置手動キャリブレーション試験を実施する場合に自動的に格納される。理想的には、バッファリングされたデータは、消費される電力に影響を及ぼすことなくそうする、したがって6位置試験で収束を促進する機会がある場合に必ず処理されるべきである。
【0187】
配向エントロピーの大きな変化
軸に対する配向エントロピー勾配(現在のエントロピー-前のエントロピー)がこれまでに遭遇した最大配向エントロピーより大きい場合、測定結果はレジストリに格納され得る。測定結果は、上記の条件のいずれか(たとえば、配向が一意である場合、または軸が重力に揃えられているか、または履歴に比べて高いエントロピーを有している場合)を満たしているときに、反復なしで、格納され得る。格納は、各々の温度範囲について別々に実行され得る。キャリブレーションアルゴリズムは、電力消費量に対して最低限の効果がある場合には必ず格納されている測定結果を処理すべきである。たとえば、充電中、または電話機が高電力モードに入っているとき。
【0188】
連続して静止しているときの挙動
長期間にわたる静止のデータまたはほぼ静止のデータがある場合、測定結果は冗長であり、状態推定の収束にはあまり役立たない。しかし、共分散行列は他のことを反映する。過度に楽観的な共分散推定のこの問題は、上で説明されている。3つの可能な事例におけるアルゴリズムの挙動について以下で説明する。
【0189】
長い静止期間(充電中)
加速度計データの平均をとるステップは、静止状態が検出されたときに始まり、平均をとるステップは、i)静止状態の終わりまたはii)平均したサンプルの数に対する最大限度に達するかのいずれかまで続くものとしてよい。データの平均をとるステップは、運動の検出または温度の変化でバックアップを開始することができる。言い換えると、測定は、新しい更新として見なされ、適切な温度ビンに対して使用され得るということである。
【0190】
観測不可能な軸
1つの軸の周りに連続的に周期運動があり(軸誤差を観測できなくする)、他の2つの軸の周りに連続運動があり得る状況では、静止状態検出では、関与する運動をキャプチャできない。この結果、過度に楽観的なPをもたらし得る推定共分散行列の減少が生じる可能性がある。1つの軸が頻度ビンを監視することによって同じビン内に連続的に入っていることが検出され得る。これが軸のいずれかで生じる場合、測定結果が状態推定において使用され得るが、P行列は減少し得ない。そこで、冗長位置を有することの利点が状態推定に組み込まれ得るが(ノイズ低減)、Pがこのことを反映することは妨げられ得る。
【0191】
第1のループ閉におけるPリセット
フィードバックは、モデル内の非線形性の効果を緩和するために適用され得る。推定パラメータが入力加速度計データに適用される場合、非線形性はかなり低減され、より正確なモデルを得ることができる。そこで、ループ閉まで状態推定が使用され、これはモデル誤差低減に役立ち得る。共分散項は、すでに低く(閉を達成するためにすでに処理されている測定による)、キャリブレーションプロセスの新しい開始を反映するために高い値にリセットする必要がある場合がある。Pは、初期値にリセットされるか、または最初に閉になるまでに達成された配向エントロピーに基づきリセットされ得る。Pが非常に大きな初期値にリセットされる場合、得られた推定値は破棄され、これはキャリブレーションを新たに開始することと同等であるものとしてよい。そこで、Pは、フィルタが受け取った一意的な位置の数をキャプチャする配向エントロピーに基づきリセットされ得る。これは、キャリブレーション時間が非常に長くなるのを防ぎ、フィルタ履歴を正確にキャプチャすることができる。
【0192】
不可能な値におけるフィルタリセット
いくつかの実施形態では、推定状態が監視され、オフセットが開または閉ループにおいて500mgより大きいか、またはスケール係数が40%より大きい場合に、フィルタは、初期状態にリセットされ得る。実際のオフセットおよびスケール係数が高い場合には開ループの結果は非線形性のため大きな誤差を有し得るので、高い閾値が使用され得る。誤差の原因は、多様な位置の欠如またはセンサ故障によりカルマンフィルタの推定が不正になることにあるものと思われる。いずれの場合も、フィルタはリセットすることができる。
【0193】
配向エントロピーの下限
配向エントロピーは、他のものに比べて同じ配向が繰り返されすぎる場合に小さくなることがある。そこで、最小の配向エントロピー閾値を使用して、閉のときのPリセット時にエントロピーの値が非常に低くなるのを回避する。
【0194】
異常値の数の監視
異常値測定は、フィルタ残差を突然高くする測定として定義され得る。理論上、誤差残差は、ゼロの平均および小さな標準偏差を有する。実際には、残差は、ゼロでない平均を有することができ、最初は大きい。処理される測定が多くなるにつれ、またループ閉が生じると、これらの残差はより小さくなり得る。フィルタ性能の信頼性を得た後(つまり、第1の組の結果が決定モニターによってパブリッシュされた後)、残差の増大は、フィルタオペレーションに問題があることを示す可能性がある。ここしばらくのいくつかの測定が、誤差残差をk*誤差共分散より大きくする(3シグマ検定)場合、これは次のうちの1つを示している可能性がある。
1.故障センサ--推定パラメータのドリフト、データのスパイクなど。
2.フィードバック誤差--フィードバックが不正であるため伝播する誤差。
3.フィルタ発散--未知の理由または不安定性により、推定パラメータが発散する。
【0195】
結果がパブリッシュされた後にこのような挙動を検出した場合に、アルゴリズムは、フィルタ状態を第1のパブリッシュのときに推定された値にリセットすることができる。
【0196】
ループ閉の前後の残差
ループ閉の前後において移動平均誤差残差が監視される。閉の後に残差誤差が増大する場合、これは不正なフィードバックであることを示し得る。次いで、フィルタがループ閉の前の状態に再初期化され、アルゴリズムは、新しい加速度計データの処理を再開し得る。
【0197】
図13は、コンピューティングデバイス2000上のタスクの実行をスケジュールするため本発明の実施形態によって実行される非制限的な方法を示す簡略化された流れ図である。プロセス1300は、ハードウェア(回路、専用ロジックなど)、ソフトウェア(汎用コンピューティングシステムまたは専用マシン上で実行されるようなもの)、ファームウェア(組み込みソフトウェア)、またはこれらの組み合わせを備える処理ロジックによって実行される。一実施形態では、プロセス1300は、
図20に示されているような1つまたは複数のコンピューティングデバイス2000によって実行される。
【0198】
例示的な
図13を参照すると、ブロック1302で、本発明の実施形態を実行するデバイスのコンポーネントは、複数のキャリブレーション測定結果を受け取ることができる。一実施形態では、複数のキャリブレーション測定結果が異なる配向でキャプチャされた度数を判定するステップは、ビン範囲に従って複数のキャリブレーション測定結果の各々を複数の配向ビンのうちの少なくとも1つの配向ビンにグループ分けするステップを含み得る。一実装において、複数の配向ビンのうちの各々の配向ビンは、所定の度数の増分(たとえば、5度の増分)の範囲内でキャプチャされる配向測定結果に対応し得る。別の実施形態では、度数を判定するステップは、キャリブレーション測定結果がキャプチャされた配向の範囲または分散を示すエントロピーを計算するステップを含み得る。さらに別の実施形態では、配向ヒストグラムが、キャリブレーションデータの多様性を計るために使用され得る。フィルタを使用して1つまたは複数のキャリブレーションパラメータが更新され得る。一実装において、フィルタは、カルマンフィルタとすることができる。
【0199】
ブロック1304で、本発明の実施形態では、複数のキャリブレーション測定結果が異なる配向でキャプチャされた度数を判定することができる。一実施形態では、複数のキャリブレーション測定結果が異なる配向でキャプチャされた度数を判定するステップは、複数の測定結果について配向エントロピーを計算するステップを含み得る。ブロック1306で、本発明の実施形態では、その度数に基づき、1つまたは複数のキャリブレーションパラメータを更新するかどうかを決定することができる。
【0200】
一実装において、配向エントロピーが所定の閾値を超えると判定したことに応答して、本発明の実施形態では、1つまたは複数のキャリブレーションパラメータを更新することを決定する。一実装において、配向エントロピーが所定の閾値より小さいと判定したことに応答して、本発明の実施形態では、1つまたは複数のキャリブレーションパラメータを更新することなくキャプチャされた測定結果を破棄する。別の実装において、配向エントロピーが所定の閾値より小さいと判定したことに応答して、本発明の実施形態では、キャプチャされた測定結果を使用して1つまたは複数のキャリブレーションパラメータを更新することなくキャプチャされた測定結果中のノイズを低減することができる。
【0201】
図13に例示されている特定のステップは、本発明の一実施形態による、動作モードを切り替える特定の方法を構成することは理解されるであろう。ステップの他のシーケンスも、代替的実施形態においてしかるべく実行され得る。たとえば、本発明の代替的実施形態は、上で概要を述べたステップを異なる順序で実行することができる。たとえば、ユーザは、第3の動作モードから第1の動作モードに、第4のモードから第2のモードに、またはこれらのモード間の組み合わせに変更することを選択することができる。さらに、
図13に例示されている個別のステップは、個別のステップに適している通りに様々なシーケンスで実行され得る複数のサブステップを含み得る。さらに、特定の用途に応じて追加のステップを加えたり、取り除いたりできる。当業者であれば、プロセスの多くの変更形態、修正形態、および代替的形態を認識し、理解するであろう。
【0202】
図14A〜
図14Cは、本開示の1つまたは複数の例示的な態様によるより詳細な例示的なキャリブレーション方法の様々な態様を示す。これらの図に示されている例示的なキャリブレーション方法の様々な部分について次の段落で説明する。本明細書でさらに詳しく説明されているように、
図14A〜
図14Cに例示されている方法のステップは、キャリブレーションモジュール410によって実行され、これらの図の中の識別された要素の各々は、キャリブレーションモジュール内のサブモジュールまたは要素として実装され得る。
【0203】
静止状態検出
このモジュールは、サンプルが静止期間の一部であるかないかを確定する。静止状態を判定するために使用される基準は、加速度計データにのみ基づくものとしてもよい。静止性は、加速度計のノルム、標準偏差、または加速度計の大きさのベクトル勾配に上限を設定することによって自動キャリブレーションアルゴリズムの一部として確定され得る。情報がサンプルごとに利用可能であることが望ましいものとしてよいが、それは、本発明の実施形態が固定長の静止セグメントに依存しており、静止期間の終わりまでサンプルの移動和を維持するからである。静止状態を確定するために使用されるウィンドウサイズに応じてシグナリングに関与する遅延があり得ることが理解される。したがって、運動の一部であるサンプルを使用することを回避するためにSTATIONARYからMOTIONへ状態がいつ変化するかを知ることは有益であろう。アルゴリズムは、上記の問題を回避するために静止期間の始まりと終わりからのいくつかのサンプルを遡及的に破棄する。
【0204】
それに加えて、自動キャリブレーションアルゴリズムでは、絶対静止状態が本質的ではない可能性もある。実際、いくつかのシナリオでは、絶対的に静止しているセグメントを使用することで、アルゴリズムの収束が遅延し得る。本発明の実施形態は、電話機の配向を知ることなく自動キャリブレートを行うために電話機の「通常使用」時のデータに依存する。たとえば、通話中に電話機を手に持つ、ダイアルする、ディスプレイを見る、座っているまたは立っているときにポケットに入っているなどは、キャリブレーションに使用することができるすべての運動タイプである。そこで、静止状態は、本明細書で説明されている本発明の実施形態に対する実質的に静止している位置を含み、また静止状態は、長いキャリブレーション時間を回避するために「ゆったりしている」という意味で使用されてもよい。
【0205】
II-B.データ処理および特徴作成
入力データを一組の特徴に変換することは、特徴抽出と称される。特徴抽出は、アルゴリズムに送られるデータの量を減らすために使用することができる。自動キャリブレーションでは、特徴抽出方式は、ベクトル加速度、スカラー加速度、スカラー加速度と重力の差としての測定結果、および最終的に、ベクトル加速度分散の関数としての測定結果分散の平均および分散を計算することを伴い得る。
【0206】
平均&分散の計算
入力サンプルが、現在の静止セグメントの一部であると判定された場合、サンプルは、セグメントの平均および分散の計算に組み込まれ得る。それぞれの静止セグメントは、典型的には、複数のサンプルからなるものとしてよい。
【0207】
静止セグメントが、n個のサンプルを有すると仮定された場合、データの平均および平均分散は、以下に示されているように計算され得る。
【0209】
軸の各々における分散は、以下のように計算できる。
【0211】
サンプルをバッファリングすることを回避するために、平均および分散の再帰的実装が使用され得る。同じ静止セグメントに属すサンプルの数に対する最小および最大の限度を使用することができる。サンプルの数に対する最小限度は、分散を確実に計算するために望ましい場合がある。サンプルの最大数に対する限度は、オーバーフローを防ぐために長期間にわたってデータを総和することを回避するために使用され得る。
【0212】
測定計算
測定は、平均加速度の大きさと重力との差として定義され得る。平方根演算を回避するために、平方した大きさの差を使用するとよい。測定は、
【0214】
のように定義され得る。ここで、a
x a
yおよびa
zは、前のセクションで示されているように計算された各々の軸上の平均加速度である。この測定は、
z=(x
0(1+x
SF)+x
OFF)
2+(y
0(1+y
SF)+y
OFF)
2+(z
0(1+z
SF)+z
OFF)
2-g
2 (8)
のようにオフセットおよびスケール係数に関してモデル化され得る。ここで、x
0は真の加速度であり、x
SFはx加速度におけるスケール係数誤差である。x
OFFはx加速度におけるオフセット誤差である。yおよびz軸についても同様の表記を使用することができる。
【0215】
測定分散計算
測定「z」の平均の分散は、
【0217】
と示されるようにモデル化することができるが、ただし、3の軸の加速度は無相関であると仮定する。不確定性の伝播から[R3]、var(a
x)とvar
【0219】
との間の関係を確定することができる。
【0220】
標準偏差をσ
Aとする実確率変数Aを考え、a、bは実数値定数である。実変数の分散に関する関数f=A
+bの分散は、
【0223】
一シナリオにおいて、b=2、したがって
【0231】
である。これにより、コンポーネントの分散に関する測定の分散は
【0234】
II-C.カルマンフィルタの設計
カルマンフィルタは、ホワイトノイズによって攪乱される線形力学系の瞬間状態を得るための推定器とすることができる。これは、状態と直線関係を有するが、ホワイトノイズによって損なわれた測定結果を使用することによってなされ得る。カルマンフィルタは、オフセットおよびスケール係数を再帰的に推定するために使用され得る。カルマンフィルタの動作および設計の詳細を以下に示す。
【0235】
一般化システムモデル
状態空間モデルにおいて、離散時間システムは、以下に示す方程式によって表されることが多い。
x
k=a
kx
k-1+bu
k+w
k-1、次の用語を使用することができる。
x
kは、システム状態を表し、ベクトルとすることができる。
kは、時刻を表す。
a
kおよびbは定数である。
u
kは、制御入力を表す。
w
kはプロセスノイズを表す。
【0236】
プロセスノイズは、平均0および共分散Qを有し、入力と無相関であるホワイトノイズであると仮定することができる。
p(w)=N(0,Q)
【0237】
次に、一シナリオにおいて、注目する信号xを直接決定することは困難な場合があり、測定された値zは、以下に示すようにxの一次関数である。
z
k=Hx
k+v
k 10)
【0238】
ここで、Hは観測行列またはゲイン行列でありv
kは、測定ノイズである。ノイズは、平均0および共分散を有するホワイトノイズであると仮定され、入力またはプロセスノイズと無相関であるものとしてよい。
p(v)=N(0,R)
【0239】
上で説明されているような線形システムが与えられた場合、カルマンフィルタは、ノイズw&vの効果を最小にしつつzをフィルタリングして、xを推定する。カルマンフィルタは、システムモデルを単純に再現して、現在の測定結果と予測値との間の誤差を(前の測定結果に基づく)使用して推定値を補正する。
【0240】
図15は、本開示の1つまたは複数の例示的な態様によるカルマンフィルタの一例を示す。
【0241】
自動キャリブレーションアルゴリズムの簡略化されたモデル
一シナリオでは、次の仮定を置くことができる。a
k=1、u
k=0、w
k=0。そこで、線形システムは、次の式に簡約され得る。
x
k=x
k-1、次元6×1。
z
k=Hx
k+v
k、次元1×1、Hは次元1×6を有する。
p(v)=N(0,R
k)
zは、式(7)(11)から計算された測定である。
【0242】
ここで、R
kは測定z
kの分散であり、式(9)に示されているように計算され得る。
【0243】
単純な項において、最後の状態の推定は、現在の状態であり、われわれのシステム内には制御入力またはプロセスノイズはあり得ない。プロセスノイズは、推定パラメータが時間とともに変化する場合に非ゼロであると仮定される。オフセットおよびスケール係数は、時間に関して定数であると仮定することができ、温度に関してのみ変化し得る。温度補償方式は、カルマンフィルタの外側に設計され、そのため、プロセスノイズを仮定することはできない。温度補償に関する詳細について以下で説明され得る。
【0244】
状態ベクトル
状態ベクトルは、推定すべきパラメータ、つまり、3つすべての軸上のオフセットおよびスケール係数からなる。
状態ベクトルは以下の通りとすることができる。
【0246】
観測行列
線形関係は、推定状態と測定結果との間に仮定され得る。Hは、遷移行列であり、推定状態に関する測定の偏導関数からなるものとしてよい。この場合xおよびzは6*1および1*1のベクトルなので、H行列の次元は[6*1]である。式(8)で示されているようにモデル化されたzを使用することで、偏導関数は、以下に示されている状態に関して計算され得る。
∂z/∂x
OFF=2x
0(1+x
SF)+x
OFF〜2a
x
∂z/∂y
OFF=2y
0(1+y
SF)+y
OFF〜2a
y
∂z/∂z
OFF=2z
0(1+z
SF)+z
OFF〜2a
z
∂z/∂x
SF=2(x
0(1+x
SF)+x
OFF).x
0〜2a
x2
∂z/∂y
SF=2(y
0(1+y
SF)+y
OFF).y
0〜2a
y2
∂z/∂z
SF=2(z
0(1+z
SF)+z
OFF).z
0〜2a
z2
H=[2a
x, 2a
y, 2a
z, 2a
x2, 2a
y2, 2a
z2] 13)
【0247】
ここで、a
x a
y a
zは、式、および
【0249】
に示されているように計算され得る。ただし、x
0は真の加速度であり、x
SFはx加速度におけるスケール係数誤差であり、x
OFFはx加速度におけるオフセット誤差である。yおよびz軸についても同様の表記を使用することができる。
【0250】
現在の状態と測定結果との間の関係は、遷移行列Hによって関係付けられ得る。3つのオフセット関係項は、3つの軸における平均加速度に正比例する、すなわち、状態は、入力加速度により直接的に影響を受けるか、または修正されるものとしてよいが、それは、オフセットが各々の軸上の加速度の大きさに正比例するからである。その一方で、スケール係数項(行列内の4番目から6番目)は、平方加速度に比例して変化し得る(近似的に)。スケールは、加速度への乗法項であるため、測定(加速度の大きさの平方)に比例して変化し得る。
【0251】
状態は、測定結果に対して直線的に変化しない可能性もあり、モデルは、オフセットおよびスケール係数誤差が大きい場合に不正確なものとなり得る。以下でより詳しく説明されているように、ループを閉じ(フィードバックを使用して)、H行列を正規化することによって、非線形性誤差を低減することが望ましい場合がある。
【0252】
「R」の計算
測定結果の分散は、カルマンフィルタのノイズとして直接的に使用され得る。代替的アプローチにおいて、計算された分散は、静止期間におけるサンプルの個数で除算され得る。ノイズの大きさの減少は、セグメント内の静止サンプルの数が多いことによる可能性がある。しかし、これは、平均をとるステップが分解能による誤差の軽減に役立たないので、非常に楽観的な結果をもたらす可能性がある。一般に、セグメント内のノイズは、静止状態のせいで小さくなり得る。そのため、測定結果の分散に等しいRが、式(9)に示されているように使用され得る。
【0253】
予測と補正のフェーズ
カルマンフィルタは次のように2ステップで動作する。
ステップ1-時間更新または予測因子フェーズ
時間更新の式は、現在の状態および誤差共分散を(時間的に)前方に射影する役割を有する。初期推定値
【0255】
およびP
k-1が与えられた場合、このステップは、出力の過去の測定結果に基づき状態の次の推定値を計算することができる。ここで、先験的共分散行列は、初期状態の分散に初期化され得る。
【0256】
先験的共分散は、以下に示されているように計算することもできる。
【0258】
ステップ2-測定更新または補正フェーズ
このステップで、先験的推定値を補正することを試みる。カルマンゲインは、事後誤差共分散を最小にすることを目指すブレンド係数であり、以下に示されているように先験的推定値を精密化して「事後」推定値を与えるために使用され得る。
【0262】
は、測定イノベーションまたは残差とも称されるが、それは、予測される測定結果と実際の測定結果との間の相違を反映するからである。事後共分散は、
【0265】
カルマンゲインの有意性
先験的誤差が小さい場合、ゲインKは小さく、したがって、適用される補正も小さいものとしてよい。言い換えると、現在の測定結果は、ほぼ無視され、過去の推定値のみが新しい推定値を形成するということである。これは、先験的推定値が良い場合に、それを補正する必要はほとんどのないので論理的である。
【0266】
先験的誤差が大きい場合、測定ノイズ項Rは重要でなく、K=1/Hとしてよい。そのため、先験的推定値は無視され、現在の測定結果が状態の推定に使用され得る。
【0267】
測定ノイズRが大きい場合、Kは小さく、したがって現在の測定結果は無視され、推定値は過去の推定値により依存し得る。
【0268】
II-Dフィードバックモニター
フィードバックモニターは、軸エントロピーごとの共分散行列、およびフィードバックにおいて推定パラメータを使用する前の残差を監視するモジュールである。フィードバックモニターは、状態推定値の分散が閾値より低くなるまで事後共分散行列(P)の要素をチェックする。条件は、すべてのオフセットまたはすべてのスケール係数のいずれかについてチェックされ得る。そのため、オフセットのどれかが小さな誤差分散を有していない場合、オフセットループ閉が生じることはあり得ない。同様に、スケール係数のどれかが分散要件を満たしていない場合、スケール係数閉が成功することはあり得ない。
【0269】
それに加えて、個別の軸の配向エントロピー(以下で定義される)は、各々の軸が十分に多様な運動の作用を受けたことを確認するために監視され得る。これは、早期のキャリブレーションパラメータのフィードバックを回避するための追加予防措置であってよい(以下で説明されているように、Pは過度に楽観的であるので)。一例として、電話機がZ-up位置に置かれ、数週間にわたって連続的に回転された場合、3つすべての軸に対する分散項は、フィードバック閾値に到達する。このことが一度生じると、現在のキャリブレーション推定値が入力される加速度計データに適用され得る。この結果、フィードバックを介して誤差の伝播が生じ、その結果、キャリブレートするための回復時間が長くなり得る。いずれの場合も、結果は、決定モニターで使用される組み合わせまたはメトリクスによりパブリッシュされない可能性がある。
【0270】
現在の推定パラメータを適用する理由は、測定結果と推定されたKF状態(オフセットおよびスケール係数)との間の非線形の関係による推定値の誤差が大きくなることを回避することである。
【0271】
独立した3状態KFを使用するオフセットの推定
KFは、連続する静止セグメントの大きさの差を使用する新しい測定を用いて設計されている。この新しい測定を使用することで、3状態KFは現在の方法と平行に実行され、オフセットを計算するために使用され得る。スケール係数の代わりにオフセットを計算することは、スケール係数が観測可能でないので有利な場合がある。このアプローチを使用する利点は、非線形性による誤差が見えないという点にある。そのため、これらのオフセットは、6状態KFから推定されたオフセットをベンチマークするために使用され得る。別の実装において、3状態KFは、オフセットをキャリブレートするために最初に利用され、その後、6状態KFがスケール係数を計算するために使用される。
【0272】
初期化のためのパッシブキャリブレーション
オフセットおよびスケール係数を独立して計算する他の方法を、キャリブレーションデータの比較に使用することも可能である。たとえば、長期の最小値および最大値を監視することに基づきオフセットおよびスケールを計算する場合、キャリブレーションデータの信頼性を理解するために2つのアルゴリズムからの結果を使用することが可能である。
【0273】
「インテリジェントパブリッシング」の提供
長期間、ユーザ挙動がキャリブレーション収束に結果的につながらない(すなわち、ユーザが電話機をアクティブに使用しない)場合、本発明の方法は、実行すべき運動の種類および促進すべき収束の軸に関する指示を出すことができる。これは、軸の配向エントロピーに基づくものとしてよい。
【0274】
センサ故障検出
本発明の実施形態では、残差監視および閉ループ推定値を使用してセンサ故障検出を実装することもできる。たとえば、キャリブレーションアルゴリズムが連続的にリセットする場合、これは故障センサを識別するために使用され得る。
【0275】
IV.温度補償モジュール
コンピューティングデバイス2000において、カルマンフィルタ(KF)などのフィルタに関して、センサのキャリブレーションのためのオフセットおよびスケール係数は、与えられた温度について長い時間にわたってかなり一定している。しかし、オフセットおよびスケール係数は、全温度範囲にわたる温度変化とともにドリフトを生じ、その結果、コンピューティングデバイス2000に関連付けられている実際の配向および運動からの著しい分散を示し得る出力を生じ得る。たとえば、5〜10℃の周囲温度の変化は、2.5mgから5mgまでの範囲の誤差を引き起こし得る。全温度範囲にわたってオフセットおよびスケール係数をキャリブレートすることで、様々な温度で動作するセンサの精度を実質的に高めることができる。
【0276】
本発明の実施形態では、異なる温度範囲に対応するキャリブレーションパラメータを格納するためのルックアップテーブルを作成することを提案する。ルックアップテーブルは、コンピューティングデバイス2000のストレージデバイス2025に格納され得る。ルックアップテーブルは、加速度計オフセット、スケール係数、その品質推定値、および信頼性フラグを格納することができる。テーブルの例を以下に示す。
【0278】
モーションセンサの動作環境の温度はモーションセンサの付近にある専用温度センサまたはモーションセンサの付近にある多目的温度センサのいずれかによって取得できる。温度データを5Hz以上の速度、より高い精度で温度データを収集する温度センサを有することが望ましい。加速度計などの、モーションセンサに対する動作温度範囲は、センサのメーカーによって提供されるデータシートから得られるか、または実験を通じて決定され得る。
【0279】
テーブル内の温度ビンサイズは、加速度計のオフセットおよびスケール係数に対する温度係数に基づくものとしてよい。テーブルの一実装において、最悪の場合のシナリオについて、2つの係数のうちの大きい方(すなわち、max(offset_temp_coefficient,scale_factor_temp_coefficient))が、ビンサイズとして選択され得る。いくつかのセンサに対して、5℃の等しいサイズのビンが選択され得る。
【0280】
単一の測定を使用する複数のカルマンフィルタパラメータの更新
受け取ったすべてのセンサデータおよび温度の対について、温度モジュールは、KFの2つのインスタンス(各々の温度ビンに対して1つ)を更新することができる。2つのKFビンを更新することは、キャリブレーションの収束を促進するので都合がよい。各々の測定について2つのビンを更新することによって、各々の可能なセンサ測定結果を使用して、少なくとも周囲温度の結果を更新し、またセンサの現在の温度範囲でより高速な結果も提供する。温度T≠Tamb(Tambは周囲温度)にある測定について、温度Tにおけるビンが更新され得る。それに加えて、Tambにおけるビンも、同じ測定結果を使用して更新され得るが、高い測定ノイズを含んで処理され得る。測定ノイズを測定結果に関連付けることによって、温度モジュールはカルマンフィルタに対する各々の測定に重みを関連付けることができる。各々の場合において、測定ノイズは、周囲温度のビン中心からの現在の温度の距離に基づき計算され、次の公式によって表され得る。
R
k=R
k+c*((T-T
amb)*tempCo)2
【0281】
そこで、TambにおけるデフォルトのKFは、高い測定ノイズを含む新しい測定で更新され得るが、それは、Tの現在のビンの中心から遠く離れているからである。Tに対するKFビンは、測定Tに対する温度と温度Tに対する現在のビンの中心との間の距離に基づく小さな測定ノイズも有し得る。上記の式に示されているように、定数倍することでオフセットとスケール係数の両方による最悪の場合の誤差を考慮することができる。一実装では、定数は4である。
【0282】
空のビンに対する補間
本発明の実施形態では、キャリブレーションが十分な精度で行われる場合、オフセットおよびスケール係数は、上で説明されている対応するノイズパラメータとともにデフォルトの温度ビンおよび現在の温度ビンにコピーされ得る。一態様では、更新時に、テーブルのセルに前のキャリブレーション結果がすでに入っている場合、新しい値と古い値とが加重平均され得る。理想的には、前のキャリブレーション結果を上書きするのが安全であろうが、誤った値が報告される場合に結果を歪めるのを回避するために、値の平均をとるとよい。適切な重みを付けるために、各々のテーブルのセルは、電話機の寿命にわたってこのセルに実行されたKF更新の回数も含むものとする。次いで、現在のKF更新に対する重みは、テーブルのセルの値を平均する前にしかるべく調整され得る。
【0283】
ルックアップテーブル内のエントリは、コンピューティングデバイスの寿命全体にわたって動的に、連続的に更新され得る。コンピューティングデバイス2000が使用されると、テーブルに書き込みが行われ、テーブルによって表されるデータの精度が高まる。しかし、コンピューティングデバイスが最初に使用されるときに、ルックアップテーブルは疎らに書き込まれ得る。現在の電話機の温度に対するテーブルのセルが空である場合、加速度計のオフセットおよびスケール係数は近似値を設定され得る。一態様では、高いセルと低いセルの両方が利用可能である場合に、高い温度および低い温度における最も近い利用可能なセルからのオフセットおよびスケール係数の線形補間が使用され得る。対応する分散も、しかるべく補間され得る。補間に対する2つまたはそれ以上の最も近いセルが利用不可能な場合、分散は高められ得る。一実装において、分散は、次の式に従って高められる。
var(T)=var(T
1)+((T
1-T)*temp_coeff)2
【0284】
利用可能な温度範囲の外の外挿は、温度への依存が線形であったりなかったりするので望ましくなく、非線形の場合には、外挿を行うと間違った結果が得られることがある。キャリブレーション精度は、テーブルの有限な温度ビンサイズによって制限される。ビンサイズとキャリブレーション時間との間にトレードオフの関係があり得る。ビンが小さい(精度が良い)場合、同じビンの一部となる測定結果がますます少なくなるのでキャリブレーション時間は長くなる。
【0285】
図16は、コンピューティングデバイス2000の温度補償モジュールによって実行される非制限的な方法を示す簡略化された流れ図である。プロセス1600は、ハードウェア(回路、専用ロジックなど)、ソフトウェア(汎用コンピューティングシステムまたは専用マシン上で実行されるようなもの)、ファームウェア(組み込みソフトウェア)、またはこれらの組み合わせを備える処理ロジックによって実行される。一実施形態では、プロセス1600は、
図20に示されているような1つまたは複数のコンピューティングデバイス2000によって実行される。
【0286】
ブロック1605で、キャリブレーションモジュールがキャリブレーションオフセットおよびキャリブレーションスケール係数を計算し、信頼性フラグが立てられると、キャリブレーションデータがパブリッシュされる。ブロック1610で、ルックアップテーブルは、現在の測定された温度に対応して更新される。テーブルを更新するプロセスは、
図15においてより詳しく説明された。ブロック1615で、キャリブレーション時間も、将来使用できるように更新される。
【0287】
図16に例示されている特定のステップは、本発明の一実施形態による、動作モードを切り替える特定の方法を構成することは理解されるであろう。ステップの他のシーケンスも、代替的実施形態においてしかるべく実行され得る。たとえば、本発明の代替的実施形態は、上で概要を述べたステップを異なる順序で実行することができる。たとえば、ユーザは、第3の動作モードから第1の動作モードに、第4のモードから第2のモードに、またはこれらのモード間の組み合わせに変更することを選択することができる。さらに、
図16に例示されている個別のステップは、個別のステップに適している通りに様々なシーケンスで実行され得る複数のサブステップを含み得る。さらに、特定の用途に応じて追加のステップを加えたり、取り除いたりできる。当業者であれば、プロセスの多くの変更形態、修正形態、および代替的形態を認識し、理解するであろう。
【0288】
図17は、センサキャリブレーション情報で温度補償ルックアップテーブルを更新するためコンピューティングデバイス2000の温度補償モジュールによって実行される非制限的な方法を示す簡略化された流れ図である。
【0289】
図16は、コンピューティングデバイス2000の温度補償モジュールによって実行される非制限的な方法を示す簡略化された流れ図である。プロセス1600は、ハードウェア(回路、専用ロジックなど)、ソフトウェア(汎用コンピューティングシステムまたは専用マシン上で実行されるようなもの)、ファームウェア(組み込みソフトウェア)、またはこれらの組み合わせを備える処理ロジックによって実行される。一実施形態では、プロセス1600は、
図20に示されているような1つまたは複数のコンピューティングデバイス2000によって実行される。
【0290】
図17は、加速度計からの加速度情報に対するルックアップテーブルを記述しているが、類似の技術が、他のセンサにも同様に使用することができる。ブロック1605で、キャリブレーションモジュールがキャリブレーションオフセットおよびキャリブレーションスケール係数を計算し、信頼性フラグが立てられると、キャリブレーションデータがパブリッシュされる。ブロック1610で、ルックアップテーブルは、現在の測定された温度に対応して更新される。テーブルを更新するプロセスは、
図15においてより詳しく説明された。ブロック1615で、キャリブレーション時間も、将来使用できるように更新される。
【0291】
ブロック1702で、新しい加速度データが、センサから届く。キャリブレーションモジュールは、この新しい加速度を使用して、センサをキャリブレートすることができる。一実装において、決定ブロック1706で、デフォルトの信頼性フラグが立てられた場合、結果はパブリッシュされ得る(ブロック1708)。1704で、初期キャリブレーションステップが完了していない場合、現在の温度が感知され得る(ブロック1710)。一態様では、現在の温度は、加速度計の付近にある温度センサを使用して感知される。一実装において、温度センサは、5Hz以上の速度、より高い精度で情報を提供することが望ましいものとしてよい。温度が測定されると、決定ブロック1712[a, b, c, n]において、現在の読み取り値に対する測定された温度が、異なる温度ビンと突き合わせて比較され得る。温度ビンが見つかった後(1712aおよび1714aに示されているように)、PおよびX値がロードされる。ブロック1716で、自動キャリブレーションが実行され、キャリブレーションは再びチェックされる(ブロック1704)。ブロック1718および1720において、自動キャリブレーションが実行された後、テーブルは、決定ブロック1712において決定された温度ビンに従って新しいP、X、およびRFLAG値で更新される。上記のステップは、キャリブレーションデータを生成するための例示的なステップであり、特定のステップは、本発明の範囲から逸脱することなく変更されるか、または完全に取り除かれるか、または置換され得る。
【0292】
本発明の実施形態は、充電中または周囲温度の変化において温度係数を計算することができる高度な温度キャリブレーション技術も実行し、またベンダーデータシートを使用して温度曲線をモデル化し、上で説明されているモデルに組み込むことができる。
【0293】
別の実施形態では、温度(または温度ビン)に対してキャリブレーションデータをただ格納するだけの代わりに、本発明の実施形態では、各々の温度(または温度ビン)における様々な配向に対してキャリブレーションデータを格納することができる。また、温度に対するキャリブレーションデータは、各々の温度における様々な配向に関連付けられているキャリブレーションデータを使用して生成され得る。いくつかの場合において、与えられた温度における1つまたは複数の配向についてキャリブレーションデータを補間すると、全体的なキャリブレーションが改善され得る。
図17で説明されているように、1つまたは複数の配向についてキャリブレーションデータを補間すると、その温度でキャリブレーションデータのエントロピーが増大し、したがって、与えられた温度に対してキャリブレーションデータを直接的に補間するのに比べてよい結果が得られる。
【0294】
図17に例示されている特定のステップは、本発明の一実施形態による、動作モードを切り替える特定の方法を構成することは理解されるであろう。ステップの他のシーケンスも、代替的実施形態においてしかるべく実行され得る。たとえば、本発明の代替的実施形態は、上で概要を述べたステップを異なる順序で実行することができる。たとえば、ユーザは、第3の動作モードから第1の動作モードに、第4のモードから第2のモードに、またはこれらのモード間の組み合わせに変更することを選択することができる。さらに、
図17に例示されている個別のステップは、個別のステップに適している通りに様々なシーケンスで実行され得る複数のサブステップを含み得る。さらに、特定の用途に応じて追加のステップを加えたり、取り除いたりできる。当業者であれば、プロセスの多くの変更形態、修正形態、および代替的形態を認識し、理解するであろう。
【0295】
図18は、温度に対してキャリブレーションデータを生成するためにコンピューティングデバイス2000の温度補償モジュールによって実行される非制限的な方法を示す簡略化された流れ図である。
図16および
図17に関して説明されている態様は、
図18に関して以下で説明されている態様を含むように組み合わされるか、または修正され得る。プロセス1800は、ハードウェア(回路、専用ロジックなど)、ソフトウェア(汎用コンピューティングシステムまたは専用マシン上で実行されるようなもの)、ファームウェア(組み込みソフトウェア)、またはこれらの組み合わせを備える処理ロジックによって実行される。一実施形態では、プロセス1800は、
図20に示されているような1つまたは複数のコンピュータシステム2000によって実行される。一実施形態では、センサ2050は、フィルタリングによりさらなる処理および
図20で説明されているデバイスのコンポーネントによる処理のためにセンサ入力を取得する。
【0296】
ブロック1802で、本発明の実施形態では、温度センサ2070を使用して、コンピューティングデバイス2000に結合されているセンサに対する動作環境の温度を検出する。一実施形態では、少なくとも1つの配向は、検出された温度における少なくとも1つの配向に関連付けられているセンサ測定データを有していなくてもよい。センサ2050として、加速度計2055、ジャイロスコープ2060、または磁力計2065などの、慣性センサまたはモーションセンサが挙げられる。加速度計2055については、キャリブレーションデータは、センサオフセットおよび/または感度を含み得る。
【0297】
ブロック1804で、本発明の実施形態では、検出された温度で、または検出された温度に近い温度で格納されているセンサ測定データに関連付けられているエントロピーを決定する。一実施形態では、検出された温度で、または検出された温度に近い温度でセンサ測定データをグループ化するために温度ビンが使用され得る。温度ビンは温度の範囲であって、その範囲の1つまたは複数の配向についてキャリブレーションデータを組み合わせるために識別された温度の範囲であるものとしてよい。ブロック1802で温度が検出された後、温度ビンは、検出された温度を使用してセンサに対する複数の温度ビンから識別され得る。プロセッサ2010は、検出された温度における1つまたは複数の配向位置に関連付けられているセンサ測定データに関連付けられた多様性を計算することができる。一実施形態では、センサ測定データの多様性は、センサ測定データに関連付けられているエントロピーを計算することによって計ることができる。別の実施形態では、配向ヒストグラムが、データに関連付けられている多様性を決定するために使用され得る。しかし、別の実施形態では、コンピューティングデバイスが、各々の温度ビンについて事前計算されたエントロピーをメモリ2035に格納し、アクセスを高速化する。
【0298】
ブロック1806で、本発明の実施形態は、その温度に対する格納されているセンサ測定データに関連付けられている多様性が閾値より低いかどうかを判定する。閾値は、デバイスのコンポーネントによって事前に決定され、静的もしくは動的に設定され得る。様々な配向に対するキャリブレーションデータに関連付けられているエントロピーが、閾値より高い場合、コンピューティングデバイス2000は、ブロック1810で、温度ビンに対してキャリブレーションデータを生成することができる。
【0299】
ブロック1808で、その温度に対する格納されているキャリブレーションデータに関連付けられているエントロピーが閾値より低いと判定したことに応答して、コンピューティングデバイス2000のコンポーネントは、別の温度からのセンサ測定データを使用して、検出された温度に対する複数の測定データに関連付けられている多様性を高めることができる。一実施形態では、別の温度からのセンサ測定データを使用するステップは、別の温度ビンからのセンサ測定データに関連付けられている重みを、温度ビンに関連付けられているフィルタのパラメータを調整することによって下げるステップを含み得る。一実施形態では、別の温度ビンからのセンサ測定データに関連付けられている重みを下げるステップは、別の温度ビンから借りてきたセンサ測定データとともにノイズを使用するステップを含み得る。
【0300】
一実施形態では、別の温度からのセンサ測定データを使用するステップは、検出された温度に対する温度ビンにおける少なくとも1つの配向についてセンサ測定データを、検出された温度に対する現在の温度ビンより高い、および/または低い温度を含む温度ビンからのセンサ測定データを使用して、線形補間するステップを含み得る。センサ測定データを線形補間するステップは、現在の温度ビンより高い、および/または低い温度を含む温度ビンからのセンサ測定データと温度の変化に関するセンサ測定データの変化の所定の勾配とを使用して識別された温度ビンの配向に対するセンサ測定データを導出するステップを含み得る。勾配または温度係数は、温度の変化を受けるときにコンピューティングデバイスが静止している場合に時間間隔を検出することによって決定され得る。一実施形態では、温度の変化に関するセンサ測定データの変化の勾配の判定は、コンピューティングデバイス2000の通常使用時に、たとえば電話機などのコンピューティングデバイス2000が充電している間に(静止して6〜10時間)、実行され得る。コンピューティングデバイス2000の配向は変化しないので、センサオフセットおよび温度係数は、温度の変化ごとにセンサ読み取り値の変化を観測することによって温度補償モジュールによって計算され得る。生成された比を温度係数として使用することができる。1つの利点として、そのような温度補償によりコンピューティングデバイス2000が多様な電話機配向でウォームアップすることはあり得ず、単純にデバイスが1つの位置にある間の温度の変化で十分であるものとしてよいという点が挙げられる。温度係数が計算された後、隣接する温度ビンを使用して非常に正確な補間が実行され得る。広範な温度範囲にわたって十分な温度係数が計算された場合、いくつかの実装では、現在のおよび近くの温度におけるキャリブレーション結果が同時に得られる。
【0301】
配向に対してセンサ測定データを補間することに加えて、いくつかの実施形態では、1つまたは複数のプロセッサ2010が、補間された、または借りたセンサ測定データを使用してメモリ2035内の識別された温度における1つまたは複数の配向欠落センサ測定データを更新することができる。
【0302】
ブロック1810で、1つまたは複数のプロセッサ2010を使用する本発明の実施形態は、検出された温度ビンに対する少なくとも借りた、または補間されたセンサ測定データを使用して検出された温度に対するセンサのキャリブレーションデータを生成する。一実施形態では、各々の温度ビンは、それぞれのフィルタに関連付けられ得る。一実装において、1つまたは複数のプロセッサ2010は、少なくとも1つの配向に関連付けられている借りた、または補間されたセンサ測定データを使用してフィルタを更新することによって識別された温度に対するキャリブレーションデータを生成することができる。少なくとも1つの配向に関連付けられている借りた、または補間されたセンサ測定データは、同じ温度ビンからの他の配向からの他のセンサ測定データと異なる借りた、または補間されたセンサ測定データに対する低い信頼度を示すパラメータとともにフィルタに入力され得る。これは、フィルタにおける他のセンサ測定データより低い借りた、または補間されたセンサ測定データの重み付けの効果を有し得る。いくつかの実施形態では、カルマンフィルタなどの調整可能なフィルタが、本発明の実施形態において使用される。
【0303】
図18に例示されている特定のステップは、本発明の一実施形態による、動作モードを切り替える特定の方法を構成することは理解されるであろう。ステップの他のシーケンスも、代替的実施形態においてしかるべく実行され得る。たとえば、本発明の代替的実施形態は、上で概要を述べたステップを異なる順序で実行することができる。たとえば、ユーザは、第3の動作モードから第1の動作モードに、第4のモードから第2のモードに、またはこれらのモード間の組み合わせに変更することを選択することができる。さらに、
図18に例示されている個別のステップは、個別のステップに適している通りに様々なシーケンスで実行され得る複数のサブステップを含み得る。さらに、特定の用途に応じて追加のステップを加えたり、取り除いたりできる。当業者であれば、プロセスの多くの変更形態、修正形態、および代替的形態を認識し、理解するであろう。
【0304】
直交軸感度
センサの製造プロセスにおいて、センサはX、Y、およびZ座標軸系に合わせてキャリブレートされ、これらの軸は、互いに相対的に垂直である。しかし、製造欠陥のせいで、これらの軸は常に互いに垂直であるとは限らない。一方の軸における分散は、座標系内のすべての軸の直交軸分散を引き起こすが、それは、計算が3つの軸が互いに直交しているとの前提条件に基づくからである。センサ融合の技術により、複数のセンサ間の測定結果をチェックし、センサキャリブレーションの分散を検出することができる。製造欠陥によるセンサキャリブレーションの分散が検出された後、その軸に対する分散は、将来の計算において補償され得る。
図19は、製造欠陥による直交軸感度を補償する例示的な方法を示す。ブロック1905で、コンピューティングデバイス2000またはコンピューティングデバイスのモジュールは、複数のセンサからのセンサデータを使用して軸に対する相互分散を検出する。ブロック19で、相互分散オフセットが、複数のセンサからのデータおよびすべての軸が互いに垂直であるという仮定を使用して軸について計算される。ブロック1915で、相互分散オフセットは、軸の相互分散オフセットを補償するためにすべての計算およびフィルタにおいて使用される。
【0305】
V.コンピューティングシステム例
加速度計自動キャリブレーションの複数の態様について説明したが、次に、本開示の様々な態様が実装され得るコンピューティングシステムの一例について
図20に関して説明することにする。1つまたは複数の態様によれば、
図20に例示されているようなコンピュータシステムは、本明細書で説明されている特徴、方法、および/または方法ステップのどれか、および/またはすべてを実装し、実施し、および/または実行することができる、コンピューティングデバイスの一部として組み込まれ得る。たとえば、コンピュータシステム2000は、ハンドヘルドデバイスのコンポーネントのうちのいくつかを表すものとしてよい。ハンドヘルドデバイスは、カメラおよび/または表示ユニットなどの入力センサユニットを備えるコンピューティングデバイスであってもよい。ハンドヘルドデバイスの例として、限定はしないが、ビデオゲーム機、タブレット、スマートフォン、およびモバイルデバイスが挙げられる。一実施形態では、システム2000は、
図1および
図2で説明されているコンピューティングデバイスを実装するように構成される。
図20は、本明細書で説明されているような、様々な他の実施形態によって提供される方法を実行することができ、および/またはホストコンピュータシステム、リモートキヨスク/端末、販売時点情報管理デバイス、モバイルデバイス、セットトップボックス、および/またはコンピュータシステムとして機能し得るコンピューティングデバイス2000の一実施形態の概略図となっている。
図20は、様々なコンポーネントの一般化された図を示すことのみを目的としており、そのどれか、および/またはすべてが適宜利用され得る。
図20は、したがって、個別のシステム要素が比較的個別化された様式または比較的一体化された様式でどのように実装され得るかをおおざっぱに示している。
【0306】
コンピュータシステム2000は、バス2005を介して電気的に結合され得る(または適宜、他の何らかの形で通信しているものとしてよい)ハードウェア要素を備えるように図示されている。これらのハードウェア要素は、限定することなく、1つまたは複数の汎用プロセッサおよび/または1つまたは複数の専用プロセッサ(デジタル信号処理チップ、グラフィックスアクセラレーションプロセッサ、および/または同様のものなど)を含む、1つまたは複数のプロセッサ2010、限定することなく、カメラ、マウス、キーボード、および/または同様のものを含み得る、1つまたは複数の入力デバイス2015、および限定することなく、表示ユニット、プリンタ、および/または同様のものを含み得る、1つまたは複数の出力デバイス2020を含むものとしてよい。
【0307】
それに加えて、コンピューティングデバイス2000は、
図2にも例示されているように、限定はしないが、1つまたは複数の加速度計(たとえば、加速度計2055)、1つまたは複数のジャイロスコープ(たとえば、ジャイロスコープ2060)、および/または1つまたは複数の磁力計(たとえば、磁力計2065)を備えることができる、複数のセンサ2050をさらに具備することができる。加速度計2055は、コンピューティングデバイス2000が受ける、および/または加速度計2055によって他の何らかの形で感知される加速度を測定し、および/または加速度に関する情報を(たとえば、プロセッサ2010に)供給することができる。ジャイロスコープ2060は、同様に、コンピューティングデバイス2000が受ける、および/またはジャイロスコープ2060によって他の何らかの形で感知されるジャイロスコープの運動(たとえば、方位の変化)を測定し、および/またはジャイロスコープの運動に関する情報を(たとえば、プロセッサ2010に)供給することができる。それに加えて、磁力計2065は、コンピューティングデバイス2000が受ける、および/または磁力計2065によって他の何らかの形で感知される磁場を測定し、磁場の測定結果および/または変化(たとえば、姿勢の変化)に関する情報を(たとえば、プロセッサ2010に)供給することができる。いくつかの実施形態では、フィルタは、上で説明されているセンサのうちの1つまたは複数のセンサで実装され得るか、または個別のハードウェアもしくはソフトウェアコンポーネントとして、たとえば、オペレーティングシステム2040、アプリケーション2045、もしくは作業用メモリ2035もしくはストレージデバイス2025の他の部分に格納されるものとして実装され得る。
【0308】
コンピュータシステム2000は、限定することなく、ローカルおよび/またはネットワークアクセス可能ストレージを含むことができ、および/または限定することなく、ディスクドライブ、ドライブアレイ、光ストレージデバイス、プログラム可能、フラッシュ書換え可能であるものとしてよい、ランダムアクセスメモリ(「RAM」)および/またはリードオンリーメモリ(「ROM」)などのソリッドステートストレージデバイス、および/または同様のものを含むことができる、1つまたは複数の非一時的なストレージデバイス2025を、さらに備える(および/または通信する)ことができる。このようなストレージデバイスは、限定することなく、様々なファイルシステム、データベース構造体、および/または同様のものを含む、適切なデータストレージを実装するように構成され得る。
【0309】
コンピュータシステム2000は、限定することなく、モデム、ネットワークカード(ワイヤレスもしくは有線)、赤外線通信デバイス、ワイヤレス通信デバイスおよび/またはチップセット(Bluetooth(登録商標)デバイス、802.11デバイス、WiFiデバイス、WiMaxデバイス、セルラー通信設備など)、および/または同様のものを含み得る、通信サブシステム2030を備えることも可能である。通信サブシステム2030は、ネットワーク(一例として、以下で説明されているネットワークなど)、他のコンピュータシステム、および/または本明細書で説明されている他のデバイスとデータを交換することを可能にし得る。多くの実施形態において、コンピュータシステム2000は、上で説明されているように、RAMまたはROMを含み得る、非一時的な作業用メモリ2035をさらに備える。
【0310】
コンピュータシステム2000は、本明細書で説明されているように、オペレーティングシステム2040、デバイスドライバ、実行可能ライブラリ、および/または様々な実施形態によって提供されるコンピュータプログラムを含み得る、および/または方法を実装し、および/または他の実施形態によって実現されるシステムを構成するように設計され得る、1つまたは複数のアプリケーションプログラム2045などの他のコードを含む、作業用メモリ2035内に現在配置されているものとして図示されている、ソフトウェア要素も備えることができる。ただ単に例として、上で説明されている方法に関して説明されている、たとえば
図4および他の図に関して説明されているような、1つまたは複数のモジュール(たとえば、スケジューリング、キャリブレーション、および温度モジュール)は、コンピュータ(および/またはコンピュータ内のプロセッサ)によって実行可能なコードおよび/または命令として実装することも可能であり、次いで、一態様において、そのようなコードおよび/または命令は、説明されている方法に従って1つまたは複数のオペレーションを実行するように汎用コンピュータ(または他のデバイス)を構成し、および/または適合させるために使用され得る。
【0311】
上で指摘されているように、1つまたは複数の実施形態において、システム2000は、すでに説明されている
図1および
図2のコンピューティングデバイスを実装するように構成され得る。これらの実施形態では、
図1および
図2に関して上で説明されているハードウェアコンポーネントは、システム2000に関してここで説明されている類似のコンポーネントに対応しているものとしてよい。それに加えて、または代替的に、システム2000に関して本明細書で説明されていない可能性のある
図1および
図2に関して上で説明されているコンポーネントは、システム2000に追加され、および/または他の何らかの形で組み込まれ得る(たとえば、
図1および
図2においてそのようなコンポーネントが備えられる仕方と同様にして)。
【0312】
一組のこれらの命令および/またはコードは、上で説明されているストレージデバイス2025などの、コンピュータ可読記憶媒体に格納することも可能である。いくつかの場合において、記憶媒体は、コンピュータシステム2000などの、コンピュータシステム内に組み込むことも可能である。他の実施形態では、記憶媒体は、コンピュータシステムから分離し(たとえば、コンパクトディスクなどの取り外し可能な媒体)、および/またはインストレーションパッケージで提供されることも可能であり、これにより、記憶媒体を使用して、中に格納されている命令/コードで汎用コンピュータをプログラムし、構成し、および/または適合させることができる。これらの命令は、コンピュータシステム2000によって実行可能である、実行可能コードの形態をとることも可能であり、および/またはコンピュータシステム2000でコンパイルおよび/またはインストールした後に(たとえば、様々な一般的に利用可能なコンパイラ、インストールプログラム、圧縮/展開ユーティリティなどを使用して)、実行可能コードの形態をとるソースコードおよび/またはインストール可能コードの形態をとることも可能である。
【0313】
特定の要件に従って、実質的な変更を加えることができる。たとえば、カスタマイズされたハードウェアも使用することが可能であり、および/または特定の要素も、ハードウェア、ソフトウェア(アプレットなどのポータブルソフトウェアを含む)、または両方で実装することが可能である。さらに、ネットワーク入力/出力デバイスなどの他のコンピューティングデバイスとの接続が使用され得る。
【0314】
いくつかの実施形態では、本開示による方法を実行するためにコンピュータシステム(コンピュータシステム2000など)を使用することができる。たとえば、説明されている方法の手順の一部または全部は、プロセッサ2010が作業用メモリ2035内に収められている1つまたは複数の命令(オペレーティングシステム2040および/またはアプリケーションプログラム2045などの他のコードに組み込むことも可能である)の1つまたは複数のシーケンスを実行することに応答してコンピュータシステム2000によって実行され得る。このような命令は、ストレージデバイス2025の1つまたは複数などの、別のコンピュータ可読媒体から作業用メモリ2035内に読み込まれ得る。単なる例であるが、作業用メモリ2035に収められている命令のシーケンスが実行されると、プロセッサ2010が本明細書で説明されている方法、たとえば、
図4に関して説明されているモジュールに関連付けられている方法の1つまたは複数の手順を実行することが可能である。
【0315】
本明細書で使用されているような「マシン可読媒体」および「コンピュータ可読媒体」という用語は、特定の様式でマシンを動作させるデータを提供することに関わる媒体を指す。コンピュータシステム2000を使用して実装される実施形態において、様々なコンピュータ可読媒体が、命令/コードを実行のためプロセッサ2010に送ることに関わる可能性があり、および/またはそのような命令/コード(たとえば、信号)を格納し、および/または搬送するために使用することが可能である。多くの実装において、コンピュータ可読媒体は、物理的および/または有形の記憶媒体である。このような媒体は、限定はしないが、不揮発性媒体、揮発性媒体、および伝送媒体を含む多くの形態をとり得る。不揮発性媒体として、たとえば、ストレージデバイス2025などの光および/または磁気ディスクが挙げられる。揮発性媒体としては、限定することなく、作業用メモリ2035などのダイナミックメモリが挙げられる。伝送媒体として、限定はしないが、バス2005を構成する電線を含む、同軸ケーブル、銅線、および光ファイバ、さらには通信サブシステム2030の様々なコンポーネント(および/または通信サブシステム2030が他のデバイスとの通信を行う際に使用する媒体)が挙げられる。したがって、伝送媒体は、波(限定はしないが、電波および赤外線データ通信において生成されるような、電波、音波、および/または光波を含む)の形態もとり得る。
【0316】
物理的および/または有形のコンピュータ可読媒体の一般的な形態として、たとえば、フロッピディスク、フレキシブルディスク、ハードディスク、磁気テープ、または他の任意の磁気媒体、CD-ROM、他の光媒体、パンチカード、紙テープ、何らかのパターンで穴があけられている他の物理的媒体、RAM、PROM、EPROM、FLASH-EPROM、他のメモリチップもしくはカートリッジ、これ以降説明するような搬送波、またはコンピュータが命令および/またはコードを読み出すことができる他の媒体が挙げられる。
【0317】
様々な形態のコンピュータ可読媒体が、1つまたは複数の命令の1つまたは複数のシーケンスを実行のためプロセッサ2010に搬送することに関与し得る。単に例としてであるが、命令は、最初に、リモートコンピュータの磁気ディスクおよび/または光ディスクに入れて搬送することができる。リモートコンピュータは、命令をそのリモートコンピュータのダイナミックメモリ内にロードし、命令を伝送媒体を介して信号として送信し、コンピュータシステム2000によって受信されおよび/または実行されるようにすることが可能である。電磁信号、音響信号、光信号、および/または同様の信号の形態をとり得る、これらの信号は、すべて、本発明の様々な実施形態により命令が符号化されて載せられる搬送波の例である。
【0318】
通信サブシステム2030(および/またはそのコンポーネント)は、一般的に、信号を受信し、次いで、バス2005が、信号(および/または信号によって搬送されるデータ、命令など)を作業用メモリ2035に搬送し、プロセッサ2010は、その作業用メモリから命令を取り出して実行する。作業用メモリ2035に入った命令は、適宜、プロセッサ2010による実行前または実行後に非一時的なストレージデバイス2025に格納することができる。
【0319】
上で説明されている方法、システム、およびデバイスは例である。様々な実施形態において、適宜様々な手順またはコンポーネントを省略し、置換し、または追加することができる。たとえば、代替的構成において、説明されている方法は、説明されているのと異なる順序で実行することもでき、および/または様々な段階が追加され、省略され、および/または組み合わされ得る。また、いくつかの実施形態に関して説明されている特徴は、様々な他の実施形態において組み合わせることもできる。実施形態の異なる態様および要素は、類似の様式で組み合わせることができる。また、技術は発展し、それゆえ、要素の多くは、開示の範囲をこれらの具体的例に制限しない例である。
【0320】
説明では、実施形態を十分理解できるように、具体的に詳細を述べている。しかし、実施形態は、これらの具体的詳細がなくても実施され得る。たとえば、よく知られている回路、プロセス、アルゴリズム、構造、および技術は、これらの実施形態が不明確にならないよう、いたずらに詳細を述べることなく示されていることがある。この説明では、例示的な実施形態のみを取りあげているが、本発明の範囲、応用性、または構成を制限することを意図していない。むしろ、実施形態の先行する説明は、当業者にとって、本発明の実施形態を実装することを可能にする説明となる。本発明の精神および範囲から逸脱することなく、様々な変更を要素の機能および配置構成に加えることができる。
【0321】
また、いくつかの実施形態は、流れ図またはブロック図として図示されているプロセスとして説明された。各々オペレーションを逐次プロセスとして記述している場合があるが、オペレーションの多くは、並列または同時実行することが可能である。それに加えて、オペレーションの順序も変更することができる。プロセスは、図に含まれていない追加のステップを有している場合がある。さらに、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはこれらの任意の組み合わせによって方法の実施形態を実装することができる。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードで実装される場合、関連するタスクを実行するためのプログラムコードまたはコードセグメントは、記憶媒体などのコンピュータ可読媒体内に格納することができる。プロセッサは、関連するタスクを実行することができる。
【0322】
いくつかの実施形態について説明したが、本開示の精神から逸脱することなく様々な修正形態、代替的構造、および等価物が使用され得る。たとえば、上記の要素は、単に、より大きなシステムの一コンポーネントであってもよく、他の規則は本発明の適用に優先するか、または他の何らかの形で修正され得る。また、上記の要素が考察される前に、考察されるときに、または考察された後に多数のステップが実行され得る。したがって、上記の説明は、本開示の範囲を制限しない。