(57)【要約】  センサーデータのタイムアライメントのための技術が説明される。１つまたは複数の実施形態によれば、異なるセンサーシステムからのセンサーデータが、参照時間軸に対してタイムアラインされる。例えば、センサーシステムが、参照時間値に基づいてセンサーデータにマークを付けることを可能にするために、参照時間値が、センサーシステムに伝搬されてもよい。センサーシステムからのセンサーデータは、アライメントポリシーをセンサーデータに適用することによって、タイムアラインされてもよい。アライメントポリシーは、例えば、センサーシステムの時間軸と参照時間軸との間の差を説明する。したがって、異なるセンサーシステムからのセンサーデータは、様々な異なる方法で、共通の時間値に対してアラインされてもよい。
2016539447.tif 000002
【特許請求の範囲】
【請求項１】
センサーデータの、時間に正確なバージョンを生成するシステムであって、
少なくとも１つのプロセッサと、
１つまたは複数のコンピューター可読記憶メディアであって、前記少なくとも１つのプロセッサによる実行に応答して前記システムに以下の動作を実行させる、前記１つまたは複数のコンピューター可読記憶メディア上に記憶される命令を含む、１つまたは複数のコンピューター可読記憶メディアとを含み、
前記動作は、
タイムスタンプを含むセンサーデータのインスタンスを、センサーシステムから受信するステップと、
前記センサーシステムのためのアライメントポリシーを確認するステップと、
アライン済みタイムスタンプを生成するために、前記アライメントポリシーを前記タイムスタンプの時間値に適用するステップと、
前記センサーシステムに参照時間値を伝搬するステップと、
前記参照時間値に少なくとも部分的に基づく、センサーデータの前記インスタンスのタイムアライン済みバージョンを生成するために、前記参照時間値を使用して前記センサーシステムを更新するステップと
を含む、システム。
【請求項２】
前記センサーシステムからの前記タイムスタンプは、前記センサーシステムの内部タイムクロック、または前記センサーシステムの外部に実装されるタイムクロックのうちの少なくとも１つに基づく、請求項１に記載のシステム。
【請求項３】
前記アライメントポリシーは、前記センサーシステムの内部タイムクロックと、前記参照時間値との間の関係を表す、請求項１に記載のシステム。
【請求項４】
前記アライメントポリシーは、前記センサーシステムの動作周波数に関係する、請求項１に記載のシステム。
【請求項５】
前記適用するステップは、前記タイムスタンプの前記時間値を、前記参照時間値でアラインする、請求項１に記載のシステム。
【請求項６】
前記センサーシステムは、特定のコンピューティングデバイス上に存在し、前記動作は、
センサーデータの異なるインスタンスのタイムアライン済みバージョンを、異なるコンピューティングデバイスと動作可能に関係付けられる異なるセンサーシステムから受信するステップと、
センサーデータの前記異なるインスタンスのタイムスタンプと、センサーデータの前記インスタンスの前記アライン済みタイムスタンプとが、共通の時間値に対応することを確認するステップと、
センサーデータの前記異なるインスタンスと、センサーデータの前記インスタンスとを、前記共通の時間値に基づいて結合するステップと
をさらに含む、請求項１に記載のシステム。
【請求項７】
前記動作は、
前記アライメントポリシーの変更の表示を受信するステップと、
前記変更に基づいて前記アライメントポリシーの値を更新するステップであって、前記センサーシステムからのセンサーデータの１つまたは複数の後続のインスタンスが、前記更新後の値に基づいてタイムアラインされることを可能にする、更新するステップと
をさらに含む、請求項１に記載のシステム。
【請求項８】
状態の変更に応じてセンサーデータをタイムアラインするように実行可能な、コンピューターで実装される方法であって、
センサーシステムのためのアライメントポリシーの値を追跡するステップと、
前記アライメントポリシーの変更の表示を受信し、前記変更は、前記センサーシステムに関する前記状態の変更に応答して生じるステップと、
前記アライメントポリシーの前記変更に基づいて、前記アライメントポリシーの値を更新するステップと、
前記センサーシステムからのセンサーデータが、前記更新後のアライメントポリシーの値に基づいてタイムアラインされるように、前記アライメントポリシーの更新に応答して前記センサーシステムを修正するステップと
を含む、コンピューターで実装される方法。
【請求項９】
前記アライメントポリシーは、前記センサーシステムの内部タイムクロックと、前記センサーシステムが動作可能に関係付けられるコンピューティングデバイスについての参照時間値との間の関係を表す、請求項８に記載のコンピューターで実装される方法。
【請求項１０】
前記アライメントポリシーは、前記センサーシステムのサンプリング周波数に関係し、前記変更は、前記センサーシステムの前記サンプリング周波数の変更を示す、請求項８に記載のコンピューターで実装される方法。
【発明の詳細な説明】
【発明の概要】
【課題を解決するための手段】
【０００１】
[0001]この発明の概要は、発明を実施するための形態でさらに後述される一揃いの概念を簡略化した形式で紹介するために提供される。この発明の概要は、クレームされた事項の主要な特徴または本質的特徴を識別することを意図するものではなく、クレームされた事項の範囲を判断する際の補助として用いられることを意図するものでもない。
【０００２】
[0002]センサーデータのタイムアライメントのための技術が説明される。１つまたは複数の実施形態によれば、異なるセンサーシステムからのセンサーデータが、参照時間軸に対してタイムアラインされる。例えば、センサーシステムが、参照時間値に基づいてセンサーデータにマークを付けることを可能にするために、参照時間値が、センサーシステムに伝搬されてもよい。センサーシステムからのセンサーデータは、アライメントポリシーをセンサーデータに適用することによって、タイムアラインされてもよい。アライメントポリシーは、例えば、センサーシステムの時間軸と参照時間軸との間の差を説明する。したがって、異なるセンサーシステムからのセンサーデータは、様々な異なる方法で、共通の時間値に対してアラインされてもよい。
【０００３】
[0003]発明を実施するための形態は、添付図面を参照して説明される。図面では、参照番号の最上位桁は、その参照番号が最初に現れる図面を識別する。説明および図面の中で異なるインスタンスに同一の参照番号を使用することは、類似のまたは同一の物を示す可能性がある。
【図面の簡単な説明】
【０００４】
【図１】[0004]本明細書で論じる技術を採用するように動作可能な実装例での環境の図である。
【図２】[0005]１つまたは複数の実装に従って、センサーデータをタイムアラインするための実装シナリオの例を示す。
【図３】[0006]１つまたは複数の実装に従って、センサーデータをタイムアラインするための実装シナリオの例を示す。
【図４】[0007]１つまたは複数の実装に従って、複数のデバイスからのセンサーデータを結合するための実装シナリオの例を示す。
【図５】[0008]１つまたは複数の実施形態に従って、センサーデータを参照時間軸でアラインするための方法におけるステップを説明するフロー図である。
【図６】[0009]１つまたは複数の実施形態に従って、参照時間軸に基づいてセンサーデータにタイムスタンプを付するための方法におけるステップを説明するフロー図である。
【図７】[0010]１つまたは複数の実施形態に従って、参照時間軸に基づいてセンサーデータをタイムアラインするための方法におけるステップを説明するフロー図である。
【図８】[0011]１つまたは複数の実施形態に従って、センサーシステムのためのアライメントポリシーを追跡するための方法におけるステップを説明するフロー図である。
【図９】[0012]１つまたは複数の実装に従って、異なるセンサーシステムからのセンサーデータを結合するための方法におけるステップを説明するフロー図である。
【図１０】[0013]本明細書で説明する技術の実施形態を実装するように構成される、図１を参照して説明するシステムおよびコンピューティングデバイスの例を示す。
【発明を実施するための形態】
【０００５】
概要
[0014]多くのコンピューティングデバイスは、様々な種類の環境現象を感知するために採用され得る複数のセンサーを有する。このようなセンサーの例は、位置センサー、方位センサー、音声センサー、映像センサー（例えば、カメラ）、タッチセンサー、生体認証センサー、気候（例えば、気温、気圧、湿度など）、ネットワーク活動、時間などを含む。センサーは、システムプロセスのロジック状態、デバイス状態、ネットワーク関連状態などのシステム状態条件を検出するための機能も含むことができる。
【０００６】
[0015]少なくともいくつかの実施形態では、「センサーシステム」は、１つまたは複数のセンサーに基づいて定義される。例えば、方位センサーシステムは、ジャイロスコープ、および加速度計などのセンサーの集まりを含むことができる。１つのセンサーシステムの異なるセンサーからのデータは、様々な環境条件を判断するために処理され、かつ／または組み合わせることができる。さらに、複数のセンサーシステムからの入力は、様々な環境条件を判断する際に考慮されることができる。
【０００７】
[0016]センサーデータのタイムアライメントのための技術が説明される。本明細書で論じる実施形態により、異なるセンサーシステムからのセンサーデータストリームをバッファ処理し、かつ注釈を付けることが、環境全体の他の状態条件に関連するセンサー入力の正確な計算を可能にすることができる。本明細書で用いられる、「環境」という用語は、地理的な位置、光、音、物理的方向などの物理現象を指すことができる。環境は、追加的にまたは代替的に、１つのコンピューティングデバイスおよび／または複数のコンピューティングデバイス、ネットワーク、クラウドベースアーキテクチャなどについてのシステム状態条件を指すことができる。
【０００８】
[0017]少なくともいくつかの実装では、センサーシステムからのセンサーデータは、様々な方法でタイムアラインされることができる。例えば、システム時間の表示を異なるセンサーシステムに提供する参照タイムクロックが、利用されることができる。センサーシステムは、それぞれのセンサーデータに、参照タイムクロックから受信した時間データでマークを付けることができる。したがって、異なるセンサーシステムからのセンサーデータストリームは、参照タイムクロックからの共通の時間値に基づいてアラインされることができる。異なるセンサーシステムからのデータをタイムアラインすることにより、異なるシステムからのデータを、様々な方法で使用され得る一貫したデータストリームへと融合することが可能となる。
【０００９】
[0018]本明細書で論じられる技術は、センサーシステムからの生データに適用するだけでなく、生センサーデータを処理することで得られるデータに対しても適用する。例えば、音声センサーからの波形データと同様に、波形データ中に生じる単語の音声認識を介して認識される単語も、タイムアラインされることができる。したがって、「センサーデータ」は、生センサーデータと処理済みのセンサーデータの両方を指すことができる。
【００１０】
[0019]１つまたは複数の実装によれば、センサーシステムからのセンサーデータは、アライメントポリシーに関連付けられ、アライメントポリシーによって、センサーデータは参照時間値でアラインされることが可能となる。概して、アライメントポリシーは、センサーシステムによって提供されるセンサーデータと参照時間値との間の関係を表す。アライメントポリシーの例は、例えば、参照タイムクロック、例としてシステムのためのマスタータイムクロックに対する、センサーシステムのサンプリング周波数を表す。アライメントポリシーの他の例は、センサーシステムのローカルクロックとデバイスの参照タイムクロックとの間のスキュー、センサーシステムのためのセンサーデータ収集の周期性などの値を含む。
【００１１】
[0020]したがって、アライメントポリシーは、センサーデータに適用され得る単一のパラメーター値、パラメーターの組み合わせ、複数の入力値を含み得るアルゴリズムなどに基づくことができる。センサーシステムがセンサーデータを出力すると、センサーデータは、センサーシステムのためのアライメントポリシーに基づいて処理され、センサーデータをタイムアラインすることができる。
【００１２】
[0021]いくつかの実装例では、センサーシステムは、タイムクロックを含むことができ、タイムクロックは、システムのための参照タイムクロックに対して調整される。例えば、個々のセンサーシステムについて、センサーシステムの内部タイムクロックとシステムのための参照タイムクロックとの間の差を表す、アライメントポリシーが決定されることができる。アライメントポリシーは、センサーシステムの内部タイムクロックとマスターシステムクロックとの間の時間差などの、様々な方法で実装されることができる。アライメントポリシーは、センサーシステムの内部タイムクロックとマスターシステムクロックとの間の動作周波数の差、マスタークロックに対して時間値を調整するために、センサーシステムの内部タイムクロックの時間値に対して適用され得る複数の値など、様々な他の方法で実装されてもよい。少なくともいくつかの実施形態では、アライメントポリシーは、周期的に（例えば、指定された時間間隔に基づいて）リフレッシュされてもよく、かつ／またはシステムの動作条件の変更などの様々なイベントに基づいてリフレッシュされる。
【００１３】
[0022]したがって、本明細書で論じる技術によって、異なる時間軸に従って動作し得るセンサーシステムからのセンサーデータが、タイムアラインされることが可能となる。これにより、タイムアラインされたセンサーデータの豊富な集合が、異なるタスクを実行するための様々な機能によって活用されることが可能となる。
【００１４】
[0023]以下の説明では、本明細書で説明する技術を採用するように動作可能な環境の例が、最初に説明される。次に、「シナリオの例」と題する項では、１つまたは複数の実装によるセンサーデータのタイムアライメント技術についてのいくつかのシナリオの例について論じる。これに続いて、「手続きの例」と題する項では、１つまたは複数の実施形態によるいくつかの手続きの例について説明する。最後に、「システムおよびデバイスの例」と題する項では、１つまたは複数の実施形態による、本明細書で論じる技術を採用するように動作するシステムおよびデバイスの例について説明する。
動作環境の例
[0024]図１は、本明細書で説明するセンサーデータのタイムアライメントのための技術を採用するように動作可能な実装例における、環境１００の図である。図示する環境１００は、コンピューティングデバイス１０２を含み、コンピューティングデバイス１０２は、様々な方法で構成されることができる。例えば、コンピューティングデバイス１０２は、携帯電話、タブレットコンピューター、ラップトップコンピューター、ウェアラブルデバイスなどの、携帯用として構成されてもよい。代替的にまたは追加的に、コンピューティングデバイス１０２は、他の使用シナリオ向けに構成されてもよい。したがって、コンピューティングデバイス１０２は、十分なメモリおよびプロセッサリソースを有するフルリソースデバイスから、限られたメモリおよび／または処理リソースしかない低リソースデバイスにわたる可能性がある。コンピューティングデバイス１０２はまた、コンピューティングデバイス１０２に１つまたは複数の動作を実行させるソフトウェアを含んでもよい。コンピューティングデバイス１０２に関する実装例の詳細は、図１０を参照して以下で論じる。
【００１５】
[0025]コンピューティングデバイス１０２は、様々なアプリケーション１０４を含み、アプリケーション１０４は、コンピューティングデバイス１０２に様々な機能を提供する。コンピューティングデバイスに典型的に関連付けられる様々なアプリケーション１０４は、オペレーティングシステム、（例えば、企業関連タスク向けの）複数の生産性モジュールを統合する生産性スイート、ウェブブラウザー、ゲーム、マルチメディアプレイヤー、ワードプロセッサ、表計算プログラム、コンテンツマネージャーなどを含むが、限定はされないと考えられる。
【００１６】
[0026]複数のセンサーシステム１０６は、コンピューティングデバイス１０２上にインストールされ、かつ／またはコンピューティングデバイス１０２と動作可能に関連付けられる。概して、センサーシステム１０６は、コンピューティングデバイス１０２に関連する様々な現象を感知するように構成される。個々のセンサーシステム１０６は、１つまたは複数の種類およびインスタンスのセンサー１０８を含むことができる。センサー１０８の例には、加速度計、カメラ、マイクロホン、生体認証センサー、タッチ入力センサー、ポジションセンサーなどを含む。センサー１０８のうちの１つまたは複数は、時間（例えば、内部時間および／または外部時間）、様々な種類のデバイス状態、ロジック状態、プロセス状態（例えば、アプリケーション状態）などの、他の種類の現象を検出するように構成されてもよい。センサー１０８は、本明細書では明示的に言及しない、様々な他の種類およびインスタンスのセンサーを含んでもよい。
【００１７】
[0027]センサーシステム１０６は、異なる種類の現象と個々に関連付けられることができる。例えば、特定のセンサーシステム１０６は、カメラおよび／または他の種類の光センサーを介するなどして、画像入力を感知するように構成されてもよい。別のセンサーシステム１０６は、マイクロホンを介するなどして音声入力を検出するように構成されてもよい。さらに別のセンサーシステム１０６は、プロセス状態、アプリケーション状態、ハードウェア状態などの、コンピューティングデバイス１０２の様々な内部状態属性を検出するように構成されてもよい。したがって、センサーシステム１０６は、コンピューティングデバイス１０２に対する一連の感知能力を提供するように組み合わせることができる。
【００１８】
[0028]本明細書で説明する技術によれば、センサーシステム１０６により取得される、および／またはセンサーシステム１０６から取得されるセンサーデータは、本明細書で論じる実施形態に従って、様々な方法で処理され、かつ／または組み合わされてもよい。例えば、異なるセンサー１０８からのセンサーデータストリームは、様々な方法でタイムスタンプを付されることができ、異なるセンサーシステムからのセンサー出力の、時間に正確な像を提供するために、データストリームが相互に関連付けられることが可能となる。
【００１９】
[0029]センサーシステム１０６は、センサーシステムクロック１１０およびタイムスタンプモジュール１１２を含む。概して、センサーシステムクロック１１０は、センサーシステム１０６それぞれについての内部タイムクロックを表す。少なくともいくつかの実装では、センサーシステムクロック１１０は、特定の処理レートおよび／またはサンプリングレートに従って動作するセンサーシステム１０６の、内部処理機構および／またはサンプリング機構を表す。特定のセンサーシステムクロック１１０は、例えば、センサーシステム１０６それぞれの処理ユニットを表すことができる。
【００２０】
[0030]タイムスタンプモジュール１１２は、１つまたは複数の実施形態に従って、センサー１０８からのセンサーデータにタイムスタンプを付すことを可能にする機能を表す。少なくともいくつかの実施形態では、センサーシステムクロック１１０および／またはタイムスタンプモジュール１１２は、任意であり、センサーシステム１０６のうちの１つまたは複数は、センサーシステムクロック１１０および／またはタイムスタンプモジュール１１２を利用しなくともよい。
【００２１】
[0031]コンピューティングデバイス１０２は、マスタータイムクロック１１４をさらに含み、マスタータイムクロック１１４は、コンピューティングデバイス１０２のためのマスタータイムクロックを表す。マスタータイムクロック１１４は、例えば、コンピューティングデバイス１０２の様々な機能を同期させるために利用される、内部クロックを表す。少なくともいくつかの実装では、マスタータイムクロック１１４は、コンピューティングデバイス１０２の処理ユニット、例えば、中央処理装置（ＣＰＵ：ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）を表してもよい。本明細書で論じる実施形態によれば、マスタータイムクロック１１４からの時間情報は、センサーデータそれぞれにタイムスタンプを付するためにセンサーシステム１０６によって利用されることができる。
【００２２】
[0032]コンピューティングデバイス１０２は、アライメントのためにマスタータイムクロック１１４を利用することに関して論じられるが、他の実装では、代替的にまたは追加的に、他の種類のアライメント機構を使用してもよい。例えば、実施形態では、特定のデバイス内部のマスタークロックを利用しなくともよい。例えば、センサーデータをタイムアラインするために利用される、マスタータイムクロック１１４とは異なる仮想クロックが実装されてもよく、および／またはマスタータイムクロック１１４を必ずしも使用しない、センサーデータをアラインする他の方法が実装されてもよい。
【００２３】
[0033]コンピューティングデバイス１０２は、処理システム１１６およびコンピューター可読メディア１１８をさらに含み、処理システム１１６およびコンピューター可読メディア１１８は、コンピューティングデバイス１０２に関連付けられて幅広いデバイス機能を提供するために採用され得る、様々な異なる種類および組み合わせの処理コンポーネント、メディア、メモリ、ならびに記憶コンポーネントおよび／または記憶デバイスを表す。少なくともいくつかの実施形態では、処理システム１１６およびコンピューター可読メディア１１８は、汎用の計算動作用に採用され得る、処理能力およびメモリ／記憶装置を表す。処理システム１１６は、例えば、コンピューティングデバイス１０２のＣＰＵを表す。
【００２４】
[0034]本明細書で説明するセンサーのタイムアライメント技術の態様を実装する機能を表す、センサーアライメントモジュール１２０が含まれる。例えば、センサーアライメントモジュール１２０は、概して、本明細書で論じる様々な実施形態による参照時間表現（例えば、マスタータイムクロック１１４からの、および／または他の時間表現）で、センサーデータをアラインする機能を表す。センサーアライメントモジュール１２０は、（例えば、センサーシステム１０６自体によって）既にタイムスタンプを付されているセンサーデータをセンサーシステム１０６から受信してもよく、異なるセンサーシステム１０６からの異なる集合のセンサーデータを共通のタイムスタンプに基づいてアラインしてもよい。少なくともいくつかの実装では、センサーアライメントモジュール１２０が、センサーシステム１０６に（例えば、マスタータイムクロック１１４からの）参照時間値を伝搬して、センサーシステムが、参照時間値を利用してそれぞれのセンサーデータにタイムスタンプを付することができるようにしてもよい。
【００２５】
[0035]環境１００は、リモートデバイス１２２をさらに含み、リモートデバイス１２２は、ネットワーク１２４を介してコンピューティングデバイス１０２に通信可能に接続される。１つまたは複数の実装によれば、リモートデバイス１２２は、コンピューティングデバイス１０２から分離し、独立して機能するデバイスを表すという意味において「リモートである」と考えられる。例えば、リモートデバイス１２２は、コンピューティングデバイス１０２と同一の一般的な場所（例えば、同じ室内）にあってもよく、またはコンピューティングデバイスからいくらか離れていてもよい。リモートデバイス１２２は、様々な方法で実装されてもよく、その例について、コンピューティングデバイス１０２に関連して上記で、システム１０００に関連して以下で論じる。
【００２６】
[0036]少なくともいくつかの実装では、リモートデバイス１２２は、コンピューティングデバイス１０２に関連して上記で論じた機能のうちの少なくともいくつかを含む。例えば、リモートデバイス１２２は、それ自体の特定のセンサーおよび／またはセンサーシステムを含み、上記で論じた様々なタイムアライメント機能を含むことができる。以下でさらに詳述されるように、コンピューティングデバイス１０２およびリモートデバイス１２２からのセンサーデータは、参照時間軸に対してタイムアラインされ得、コンピューティングデバイス１０２およびリモートデバイス１２２の両方からのアライン済みセンサーデータを含む、集約されたセンサーデータの集合が生成されることを可能にする。
【００２７】
[0037]ネットワーク１２４は、概して、コンピューティングデバイス１０２、リモートデバイス１２２、および／または他のエンティティとネットワークとの間などの、有線接続および／または無線接続を提供する機能を表す。ネットワーク１２４は、ローカルアクセスネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｃｃｅｓｓ  ｎｅｔｗｏｒｋ）、広域ネットワーク（ＷＡＮ：ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）、インターネット、８０２．１１標準の各種、ＷｉＦｉ（商標）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、赤外線（ＩＲ：ｉｎｆｒａｒｅｄ）データ送信、近距離無線通信（ＮＦＣ：ｎｅａｒ  ｆｉｅｌｄ  ｃｏｍｍｕｎｉｃａｔｉｏｎ）などの様々な異なる技術を介して接続を提供することができる。
【００２８】
[0038]実施形態が動作する可能性のある環境の例について論じたが、ここで、１つまたは複数の実装によるいくつかの動作シナリオの例について考える。
シナリオの例
[0039]以下の議論では、前述のシステムおよびデバイス、ならびに／または本明細書で明示的に論じられない他のシステムおよびデバイスを利用して実装される可能性のある、センサーのタイムアライメント技術のためのいくつかのシナリオ例について説明する。シナリオの態様は、ハードウェア、ファームウェア、ソフトウェア、またはこれらの組み合わせで実装されてもよい。
【００２９】
[0040]図２は、１つまたは複数の実装による、センサーデータをタイムアラインするための動作シナリオの例２００を示す。シナリオ２００は、センサーシステム２０２ａ、２０２ｂを含み、センサーシステム２０２ａ、２０２ｂは、上記で紹介したセンサーシステム１０６の実装を表す。センサーシステム２０２ａ、２０２ｂは、センサー２０４ａ、２０４ｂ、センサーシステムクロック２０６ａ、２０６ｂ、およびタイムスタンプモジュール２０８ａ、２０８ｂのそれぞれの実装を含む。様々な実装によれば、センサー２０４ａ、２０４ｂは、それぞれ異なる種類、インスタンス、および／または組み合わせのセンサーを表す。
【００３０】
[0041]シナリオ２００では、マスタータイムクロック１１４からの参照時間値２１０が、センサーシステム２０２ａ、２０２ｂに伝搬される。参照時間値２１０は、例えば、上記で論じたコンピューティングデバイス１０２などのための様々なシステム処理を協調させるために採用される、時間の不連続点におけるシステム時間値を表す。少なくともいくつかの実施形態では、参照時間値２１０は、コンピューティングデバイスの処理ユニット（例えば、ＣＰＵ）のためのプロセッサクロックレートに基づく。
【００３１】
[0042]参照時間値２１０は、様々な異なる方法で、センサーシステム２０２ａ、２０２ｂに伝搬されることができる。例えば、マスタータイムクロック１１４は、周期的におよび／または継続的に、参照時間値２１０をセンサーシステム２０２ａ、２０２ｂに伝達してもよい。代替的にまたは追加的に、センサーシステム２０２ａ、２０２ｂは、参照時間値２１０についてマスタータイムクロック１１４に問い合わせしてもよい。別の例として、様々なイベントにより、参照時間値２１０がセンサーシステム２０２ａ、２０２ｂに伝達されてもよい。このようなイベントの例には、電源投入イベント、特定のセンサーシステムを利用するアプリケーションの起動、センサーシステムから（例えば、アプリケーションまたは他のプロセスから）のセンサーデータの要求などを含む。
【００３２】
[0043]さらにシナリオ２００について、センサーシステム２０２ａ、２０２ｂは、様々な方法で参照時間値２１０を利用することができる。例えば、センサーシステム２０２ａ、２０２ｂは、参照時間値２１０がセンサーデータにマークを付けるために受信されると、参照時間値２１０を利用することができる。代替的にまたは追加的に、センサーシステムクロック２０６ａ、２０６ｂは、センサーシステム２０２ａ、２０２ｂがマスタータイムクロック１１４と同期されることを可能にするために、参照時間値２１０と同期されてもよい。
【００３３】
[0044]シナリオ２００を続けると、センサーシステム２０２ａ、２０２ｂは、参照時間値２１０に基づいてタイムスタンプを付されるセンサーデータを出力する。例えば、センサーシステム２０２ａは、タイムスタンプ２１４ａを含むセンサーデータ２１２ａを出力する。さらに、センサーシステム２０２ｂは、タイムスタンプ２１４ｂを含むセンサーデータ２１２ｂを出力する。タイムスタンプ２１４ａ、２１４ｂは、様々な方法でセンサーデータ２１２ａ、２１２ｂとそれぞれ関連付けられることができる。例えば、タイムスタンプは、センサーデータのそれぞれのインスタンスのパケットヘッダーに注釈を付けるために使用されてもよい。代替的にまたは追加的に、タイムスタンプは、センサーデータのそれぞれのインスタンスにリンク付けされる、別個の並列なデータ構造として実装されてもよい。さらに別の例として、タイムスタンプは、センサーデータ自体に挿入されてもよい。したがって、タイムスタンプは、様々な異なる技術を利用して、センサーデータのそれぞれのインスタンスに相互に関連付けられることができる。
【００３４】
[0045]概して、タイムスタンプ２１４ａ、２１４ｂは、センサーデータ２１２ａ、２１２ｂそれぞれにより表される現象が、参照時間値２１０に対して、「いつ」検出されたかを示す時間値を表す。例えば、参照時間値２１０がセンサーシステム２０２ａ、２０２ｂによって受信されると、センサーシステムは、直ちにそれぞれのタイムスタンプ２１４ａ、２１４ｂでセンサーデータ２１２ａ、２１２ｂにマークを付けることができる。したがって、少なくともいくつかの実装では、タイムスタンプ２１４ａ、２１４ｂは、参照時間値２１０と同一の時間値を表す。
【００３５】
[0046]上記で参照したように、参照時間値２１０は、センサーシステムクロック２０６ａ、２０６ｂを設定するために利用されてもよい。その結果、タイムスタンプ２１４ａ、２１４ｂは、センサーシステムクロック２０６ａ、２０６ｂの時間値に基づいて生成され得る。
【００３６】
[0047]別の実装例では、参照時間値２１０は、ベースライン時間値として利用されることができ、センサーシステム２０２ａ、２０２ｂは（例えば、それらのそれぞれのタイムスタンプモジュールを介して）、参照時間値２１０が受信されてからの経過時間を表すデルタ値を加えた参照時間値２１０を含むようにタイムスタンプ２１４ａ、２１４ｂを生成することができる。参照時間値２１０は、例えば、参照時間値２１０からの経過時間を計算するカウンター用の開始時間として使用され得る。
【００３７】
[0048]シナリオ２００は、タイムアライン済みセンサーデータの集合をセンサーシステム２０２ａ、２０２ｂから生成するために経時的に（例えば、周期的に）繰り返されることができる。例えば、更新された参照時間値が、継続的におよび／または周期的にセンサーシステム２０２ａ、２０２ｂに伝搬されて、センサーシステムがマスタータイムクロック１１４と同期し続けることを可能にすることができる。以下でさらに詳述するように、センサーデータ２１２ａ、２１２ｂは、異なるエンティティおよび／またはプロセスに伝達されて、様々な目的で活用されることができる。
【００３８】
[0049]シナリオ２００は、共通技術を実装するセンサーシステム２０２ａ、２０２ｂに関して論じられるが、限定として解釈されるものではない。例えば、少なくともいくつかの実装では、センサーシステム２０２ａ、２０２ｂは、本明細書で論じる様々な技術を個別に活用して、タイムアライン済みセンサーデータを生成することができる。さらに、実装は、採用され得るセンサーシステムの数を限定するものではなく、複数の（例えば、３つ以上の）センサーシステムがタイムアライン済みセンサーデータを生成できるようにするために、本明細書で論じる技術が採用されることができる。
【００３９】
[0050]図３は、１つまたは複数の実装に従って、センサーデータをタイムアラインするための動作シナリオの例３００を示す。シナリオ３００は、センサーシステム３０２を含み、センサーシステム３０２は、上記で紹介したセンサーシステム１０６の実装を表す。センサーシステム３０２は、１つまたは複数のセンサー３０４、センサーシステムクロック３０６、およびタイムスタンプモジュール３０８を含む。
【００４０】
[0051]シナリオ３００では、センサーシステム３０２は、タイムスタンプ３１２を含むセンサーデータ３１０を出力する。タイムスタンプ３１２は、センサー３０４によってセンサーデータ３１０が検出された時を特定する時間値を含む。時間値は、例えば、センサーシステムクロック３０６によって指定される時間に基づく。
【００４１】
[0052]さらにシナリオ３００について、センサーアライメントモジュール１２０は、センサーデータ３１０を受信し、アライメントテーブル３１６からセンサーシステム３０２のためのアライメントポリシー３１４を決定する。概して、アライメントポリシー３１４は、例えば、マスタータイムクロック１１４によって指定される参照時間値でタイムスタンプ３１２をアラインするために、タイムスタンプ３１２に適用され得る時間補正および／またはタイムスキュー値を表す。例えば、アライメントポリシー３１４は、センサーシステムクロック３０６とマスタータイムクロック１１４とにより生成される時間値の間の相対的な関係を表す。アライメントテーブル３１６は、アライメントポリシーおよび／または他のアライメント関連情報が記憶され得るデータ記憶場所の一部として実装される。
【００４２】
[0053]アライメントポリシー３１４によって、例えば、センサーシステムクロック３０６によって指定される時間値が、不連続のインスタンスにおいてマスタータイムクロック１１４によって指定される時間値でアラインされることが可能となる。アライメントポリシー３１４は、時間間隔の値（例えば、マイクロ秒単位、ミリ秒単位など）、比率、方程式などの様々な方法で指定されることができる。
【００４３】
[0054]実装例では、アライメントポリシー３１４は、センサーシステム３０２についての既知のクロックレート（例えば、プロセッサのクロックレート）に基づくことができる。クロックレートは、例えば、センサーシステム３０２についてのサンプリング周波数および／またはサンプリングレートを指す。例えば、センサーシステム３０２は、６０ヘルツ（Ｈｚ）のクロックレートを有することができ、クロックレートはアライメントポリシー３１４に反映されることができる。少なくともいくつかの実装では、センサーシステム３０２によって出力されるセンサーデータがマスタータイムクロック１１４と同期されることを可能にするために、センサーシステムクロック３０６のクロックレートが、マスタータイムクロック１１４の基準クロックレートと比較して追跡されることができる。
【００４４】
[0055]１つまたは複数の実装によれば、アライメントテーブル３１６は、異なるセンサーシステムのためのアライメントポリシーを保持する。例えば、アライメントテーブルは、異なるセンサーシステムのための識別子を、それぞれのセンサーシステムのためのアライメントポリシーと相互に関連付ける。少なくともいくつかの実装では、アライメントポリシーは、それぞれのセンサーシステムに固有であることができ、例えば、特定のセンサーシステムは、別のセンサーシステムとは異なるアライメントポリシーを有することができる。
【００４５】
[0056]例えば、センサーデータ３１０は、センサーシステム３０２のための識別子を含んでもよい。センサーデータ３１０が受信されると、センサーアライメントモジュール１２０は、識別子を使用して、アライメントテーブル３１６内のセンサーシステム３０２のためのアライメントポリシー３１４を検索することができる。したがって、別のセンサーシステムは、別のシステム識別子と関連付けられることができ、別のシステム識別子によって、別のセンサーシステムのためのアライメントポリシーを見つけることが可能となる。アライメントポリシー生成方法の例については、以下で論じる。
【００４６】
[0057]引き続きシナリオ３００について、センサーアライメントモジュール１２０は、アライン済みタイムスタンプ３１８を生成するために、アライメントポリシー３１４をタイムスタンプ３１２に適用する。アライメントポリシー３１４をタイムスタンプ３１２に加算またはタイムスタンプ３１２から減算する、タイムスタンプ３１２とアライメントポリシー３１４とを乗算する、タイムスタンプ３１２およびアライメントポリシー３１４をある方程式の変数として利用する、などの様々な方法で、アライメントポリシー３１４をタイムスタンプ３１２に適用することができる。
【００４７】
[0058]様々な実装によれば、アライン済みタイムスタンプ３１８は、不連続のインスタンスについてマスタータイムクロック１１４によって示される参照時間値と同期される時間値を表す。例えば、マスタータイムクロック１１４によって指定される参照時間値ＴＲにおいて、センサー３０４によってセンサーデータ３１０がキャプチャされると考える。センサーデータ３１０が最初にＴＲにおいてキャプチャされると、タイムスタンプモジュール３０８は、センサーデータ３１０にタイムスタンプ３１２の一部として（例えば、センサータイムクロック３０６から読み取られた）時間値ＴＳでマークを付ける。ただし、ＴＳは、ＴＲにアラインされていない（例えば、等しくない）。したがって、少なくともいくつかの実装では、アライメントポリシー３１４をＴＳに適用することによって、アライン済みタイムスタンプ３１８のための時間値ＴＡが生成され、この場合、ＴＡは、ＴＲと等しいか、またはほぼ等しい。
【００４８】
[0059]次いで、センサーデータ３１０は、アライン済みタイムスタンプ３１８でマークを付けられ、アライン済みセンサーデータ３２０が生成される。アライン済みセンサーデータ３２０は、例えば、センサーデータ３１０と同一であるが、アライン済みタイムスタンプ３１８でマークを付けられたセンサーデータを含む。アライン済みタイムスタンプ３１８は、様々な方法で、アライン済みセンサーデータ３２０と関連付けられることができる。例えば、アライン済みタイムスタンプ３１８は、アライン済みセンサーデータ３２０のバッファヘッダーおよび／またはパケットヘッダーに注釈を付けるために使用されてもよい。代替的にまたは追加的に、アライン済みタイムスタンプ３１８は、アライン済みセンサーデータ３２０にリンク付けされる、別個の並列なデータ構造（例えば、メタデータ）として実装されてもよい。さらに別の例として、アライン済みタイムスタンプ３１８は、アライン済みセンサーデータ３２０自体に挿入されてもよい。したがって、タイムスタンプは、様々な異なる技術を利用して、センサーデータのそれぞれのインスタンスに相互に関連付けられることができる。
【００４９】
[0060]アライン済みセンサーデータ３２０は、アプリケーション、プロセスおよび／または機能などの、様々なエンティティに伝達されることができ、エンティティは、様々な目的でアライン済みセンサーデータ３２０を活用することができる。
【００５０】
[0061]シナリオ２００および３００を参照して論じられた技術は、相互排他的なものとして解釈されることはなく、実装では、センサーデータをアラインするための様々な技術を組み合わせてもよい。デバイスおよび／またはシステムでは、例えば、特定のセンサーシステムは、図２を参照して論じた技術を使用してもよいが、一方、別のセンサーシステムは、図３を参照して論じた技術を利用してもよい。さらに、特定のセンサーシステムが、特定のイベントおよび／または条件によって、シナリオ２００および３００で論じた技術を切り替えてもよい。
【００５１】
[0062]図４は、１つまたは複数の実装に従って、複数のデバイスからのセンサーデータを結合するための動作シナリオの例４００を示す。シナリオ４００は、コンピューティングデバイス４０２およびコンピューティングデバイス４０４を含む。少なくともいくつかの実装では、コンピューティングデバイス４０２、４０４は、それぞれ、コンピューティングデバイス１０２およびリモートデバイス１２２の実施形態を表す。
【００５２】
[0063]シナリオ４００では、コンピューティングデバイス４０２は、センサーデータを生成し、センサーデータは、タイムスタンプ４０８を含むアライン済みセンサーデータ４０６を生成するために、タイムアラインされる。さらに、コンピューティングデバイス４０４は、センサーデータを生成し、センサーデータは、タイムスタンプ４１２を含むアライン済みセンサーデータ４１０を生成するために、タイムアラインされる。タイムスタンプ４０８、４１２は、図２および図３に関する上記のような、本明細書で論じた技術のうちの１つまたは複数の技術を使用して生成されてもよい。
【００５３】
[0064]１つまたは複数の実装によれば、アライン済みセンサーデータ４０６およびアライン済みセンサーデータ４１０は、それぞれ異なる種類のセンサーデータを表してもよい。例えば、アライン済みセンサーデータ４０６は、コンピューティングデバイス４０２の１つまたは複数の音声センサーによって感知された音声データを含んでもよく、アライン済みセンサーデータ４１０は、コンピューティングデバイス４０４の画像センサーおよび／または映像センサー（例えば、カメラ）によって感知された画像データおよび／または映像データを含んでもよい。ただし、これは、限定を意図するものではなく、１つまたは複数の実装では、アライン済みセンサーデータ４０６およびアライン済みセンサーデータ４１０は、１つまたは複数の共通の種類のセンサーデータを含んでもよい。
【００５４】
[0065]さらにシナリオ４００について、タイムスタンプ４０８、４１２が同じ時間値に対応する、例えば、共通の時間値を共有すると判断される。例えば、時間値ＴＲ’（マスタータイムクロック１１４により生成される時間値など）について、タイムスタンプ４０８、４１２は、ＴＲ’と等しいか、またはほぼ等しい。したがって、アライン済みセンサーデータ４０６およびアライン済みセンサーデータ４１０は、集約されたセンサーデータ４１４の一部として結合される。概して、集約されたセンサーデータ４１４は、異なるデバイスおよび／またはシステムからのセンサーデータを保持し、センサーデータは、共通の時間値、例えば、共通のタイムスタンプを相互に関連付けることによりアラインされる。例えば、集約されたセンサーデータ４１４は、センサーデータタイムライン４１６を含み、センサーデータタイムライン４１６は、合致するタイムスタンプについてセンサーデータと特定の時間値を相互に関連付ける。アライン済みセンサーデータ４０６、４１０は、例えば、タイムスタンプ４０８、４１２に合致する、センサーデータタイムライン４１６の時間値４１８に相互に関連付けられる。
【００５５】
[0066]集約されたセンサーデータ４１４は、先行センサーデータ４２０をさらに含み、後続センサーデータ４２２を選択的に含んでもよい。概して、先行センサーデータ４２０は、時間値４１８より前に生じるタイムスタンプ付きのセンサーデータを表し、後続センサーデータ４２２は、時間値４１８より後に生じるタイムスタンプ付きのセンサーデータを表す。先行センサーデータ４２０および後続センサーデータ４２２は、コンピューティングデバイス４０２、コンピューティングデバイス４０４、ならびに／または他のデバイスおよび／もしくはエンティティから受信されてもよい。
【００５６】
[0067]結果的に、集約されたセンサーデータ４１４は、共通の時間値および／またはタイムスタンプに対してアラインされる、異なるデバイス、システム、および／またはエンティティからのセンサーデータを含む。特定の時間値および／または時間間隔からのセンサーデータについての問い合わせ、特定のデバイスおよび／またはデバイスの集合からのセンサーデータについての問い合わせ、などを介するといった様々な方法で、集約されたセンサーデータ４１４からのセンサーデータは、読み出され、かつ／または使用されることができる。
【００５７】
[0068]集約されたセンサーデータ４１４は、コンピューティングデバイス４０２、４０４からのセンサーデータに関して論じられているが、これは、限定を意図するものではない。例えば、集約されたセンサーデータ４１４は、（例えば、複数のセンサーシステムの）単一のデバイスからのセンサーデータおよび／またはコンピューティングデバイス４０２、４０４に追加して、もしくは代替的に、複数のデバイスからのセンサーデータを保持してもよい。
【００５８】
[0069]様々な実装によれば、集約されたセンサーデータ４１４は、コンピューティングデバイス４０２、コンピューティングデバイス４０４、および／または他のシステムまたはリソースなどの、特定のデバイスおよび／またはエンティティにより生成され、かつ／または保持されてもよい。
【００５９】
[0070]本明細書で説明した技術に従って、いくつかのシナリオの例を説明したが、ここで、１つまたは複数の実装による、いくつかの手続きの例の議論について考える。
手続きの例
[0071]以下の節では、１つまたは複数の実施形態による、タイムアライン済みセンサーデータについてのいくつかの手続きの例を説明する。手続きの例は、図１の環境１００、図１０のシステム１０００および／または、いかなる他の適切な環境でも採用され得る。少なくともいくつかの実施形態では、様々な手続きについて説明するステップは、自動的に実装され、ユーザーの操作に依存しない。
【００６０】
[0072]図５は、１つまたは複数の実施形態による方法におけるステップを説明する、フロー図である。方法は、例えば、１つまたは複数の実装に従って、センサーデータを参照時間軸でアラインする方法の例を表す。
【００６１】
[0073]ステップ５００では、参照時間値のインスタンスをセンサーシステムに伝搬する。マスタータイムクロックの時間値は、例えば、１つまたは複数のセンサーシステムに伝搬されることができる。
【００６２】
[0074]ステップ５０２では、参照時間値のインスタンスに基づいて、タイムスタンプでマークを付けられたセンサーデータをセンサーシステムから受信する。タイムスタンプは、例えば、参照時間値を含んでもよく、参照時間値からの経過時間を表すデルタ値を加えた参照時間値で、マークを付けられてもよい、等である。
【００６３】
[0075]ステップ５０４では、タイムスタンプに基づいてセンサーデータを処理する。センサーデータは、例えば、それぞれのタイムスタンプに基づいて、例えば、時系列で、他のセンサーデータと共に配列されてもよい。例えば、同一のおよび／または類似のタイムスタンプを有するセンサーデータの異なるインスタンスは、特定の時間に発生し、感知された現象の集まりを表すように、共にグループ化されてもよい。
【００６４】
[0076]様々な実装によれば、この方法は、更新された参照時間値をセンサーシステムに提供するために、周期的におよび／または継続的に実行されることができる。
[0077]図６は、１つまたは複数の実施形態による方法におけるステップを説明するフロー図である。方法は、例えば、１つまたは複数の実装に従って、参照時間軸に基づいてセンサーデータにタイムスタンプを付す方法の例を表す。
【００６５】
[0078]ステップ６００では、センサーシステムにおいて、参照時間値のインスタンスを受信する。参照時間値は、例えば、センサーシステムの外部にある機能、例えば、マスタータイムクロックから受信される。
【００６６】
[0079]ステップ６０２では、センサーシステムにより収集されたセンサーデータに、参照時間値のインスタンスに基づいて、タイムスタンプでマークを付ける。参照時間値が受信されたのと同じ時間に、例えば、参照時間値が受信されたのと同期して、センサーデータが感知されたことを示すために、センサーデータには、例えば、参照時間値でタイムスタンプが付される。
【００６７】
[0080]上記で参照したように、参照時間値は、センサーシステムによってベースライン時間値として利用されて、センサーシステムの内部クロックを同期し、ならびに／または、参照時間値で開始するカウンターを初期化し、および／もしくはカウンターにマークを付けることができる。例えば、センサーシステムの内部クロックが、参照時間値を使用して設定される場合、センサーデータにタイムスタンプを付すために、内部クロックの時間値が使用されてもよい。参照時間値が、カウンターを開始し、かつ／またはマークを付けるために使用される場合、センサーデータは、参照時間値からの経過時間を表すデルタ値を加えた参照時間値でマークを付けられてもよい。例えば、参照時間値と比較した、センサーデータについての実際のタイムスタンプを表すように、センサーデータは、「ＴＲ１＋ＴΔ」でマークを付けられてもよい。
【００６８】
[0081]ステップ６０４では、マークを付けられたセンサーデータをエンティティに伝達する。センサーシステムは、例えば、マークを付けられたセンサーデータを１つまたは複数の外部機能に送信し、マークを付けられたセンサーデータが様々な目的で活用されることを可能にすることができる。
【００６９】
[0082]様々な実装によれば、この方法は、更新されたアライン済み時間値でタイムスタンプが付されたセンサーデータのストリームを生成するために、周期的におよび／または継続的に実行されることができる。
【００７０】
[0083]図７は、１つまたは複数の実施形態による方法におけるステップを説明するフロー図である。方法は、例えば、１つまたは複数の実装に従って、参照時間軸に基づいてセンサーデータをタイムアラインする方法の例を表す。
【００７１】
[0084]ステップ７００では、タイムスタンプを含むセンサーデータのインスタンスをセンサーシステムから受信する。センサーアライメントモジュール１２０は、例えば、センサーシステムによってタイムスタンプでマークを付けられているセンサーデータを受信する。
【００７２】
[0085]ステップ７０２では、センサーシステムのためのアライメントポリシーを確認する。異なる種類のアライメントポリシーの例は、上記で論じられている。少なくともいくつかの実装では、アライメントポリシーは、特定のセンサーシステムに固有であり、例えば、特定のグループのセンサーシステムのうちのセンサーシステムは、それぞれ、異なるアライメントポリシーに関連付けられてもよい。上記で論じたアライメントテーブル３１４に関して、例えば、センサーシステムのための識別子は、センサーシステムのためのアライメントポリシーを検索するために使用されることができる。
【００７３】
[0086]ステップ７０４では、アライン済みタイムスタンプを生成するために、アライメントポリシーをタイムスタンプの時間値に適用する。アライメントポリシー適用の異なる方法の例は、上記で論じられている。アライメントポリシーは、例えば、時間値に加算する、時間値と乗算する、タイムアライメント方程式での変数として利用する、などが可能である。上述のように、アライメントポリシーは、単一のパラメーター、複数の異なるパラメーター、単一値の入力および／または複数値の入力を含み得るアルゴリズムなどに基づいてもよい。したがって、アライメントポリシーの実装は、本明細書で論じられる技術によれば、センサーデータに適用可能な単純な値から、センサーデータに適用可能な異なる変数および／またはアルゴリズムの、より複雑な組み合わせにまで及ぶ可能性がある。
【００７４】
[0087]ステップ７０６では、センサーデータのインスタンスにアライン済みタイムスタンプでマークを付ける。アライン済みタイムスタンプは、例えば、元のタイムスタンプを置き換えて使用されることができ、またはセンサーデータのインスタンスがタイムアラインされていることを示すように、元のタイムスタンプに対する追加として使用されることができる。
【００７５】
[0088]ステップ７０８では、アライン済みタイムスタンプに基づいてセンサーデータのインスタンスを処理する。センサーデータは、例えば、それぞれのタイムスタンプに基づいて、例えば、時系列で、他のセンサーデータと共に配列されてもよい。例えば、センサーデータは、アライン済みタイムスタンプの時間値に基づいて、一連のセンサーデータ中に置かれてもよい。代替的にまたは追加的に、同一のおよび／または類似のタイムスタンプ（例えば、アライン済みタイムスタンプ）を有するセンサーデータの異なるインスタンスは、特定の時間に発生し、感知された現象の集まりを表すように、共にグループ化されてもよい。
【００７６】
[0089]様々な実装によれば、この方法は、タイムアラインされたセンサーデータのストリームをセンサーシステムから提供するために、周期的におよび／または継続的に実行されることができる。
【００７７】
[0090]図８は、１つまたは複数の実施形態による方法におけるステップを説明するフロー図である。方法は、例えば、１つまたは複数の実装に従って、センサーシステムについてのアライメントポリシーを追跡する方法の例を表す。
【００７８】
[0091]ステップ８００では、センサーシステムのためのアライメントポリシーの値を追跡する。上記で論じたように、例えば、アライメントテーブル３１６は、異なるセンサーシステムのためのアライメントポリシーの値を保持する。
【００７９】
[0092]ステップ８０２では、アライメントポリシーにおける変更の表示を受信する。変更の表示は、アライメントポリシーにおける様々な変更を示すことができる。例えば、センサーシステムの内部クロックとマスタータイムクロックとの間のオフセットは、様々なイベントに応答して変更することができる。センサーシステムの内部クロックレートもまた、変更することができる。このような変更は、サンプリング周波数における変更、センサーシステム内の電力レベルにおける変更（例えば、入力電圧における変更）、使用シナリオにおける変更などに基づくといったように、異なるイベントに応答して発生してもよい。様々な種類のアライメントポリシーに対する、他の様々な種類の変更が検出され得る。
【００８０】
[0093]１つまたは複数の実装によれば、変更の表示は、様々な方法で受信されることができる。例えば、センサーシステムは、変更の表示を含む通知を（例えば、センサーアライメントモジュール１２０に）伝達してもよい。別の例として、センサーシステムの外部にある機能が、変更を検出してもよい。センサーアライメントモジュール１２０は、例えば、センサーシステムのサンプリングレートおよび／または内部クロックを監視してもよく、したがって、サンプリングレートおよび／または内部クロックの変更を検出してもよい。
【００８１】
[0094]代替的にまたは追加的に、センサーアライメントモジュール１２０は、周期的に、継続的に、および／または様々なイベントに応答するなどして、センサーシステムの内部クロックの読み取り値および／またはクロックレートについてセンサーシステムに問い合わせてもよい。アライメントポリシーを判断、例えば、センサーシステムのためのアライメントポリシーに変更が発生したかどうかを判断するために、内部クロックの読み取り値および／またはクロックレートは、マスタータイムクロック１１４のそれと比較されることができる。したがって、アライメントポリシーに対する変更は、様々な異なる方法で検出され得る。
【００８２】
[0095]ステップ８０４では、変更に基づいてアライメントポリシーの値を更新する。例えば、（例えば、アライメントテーブル３１６内の）センサーシステムについてのテーブル項目は、変更を示すために更新されることができる。センサーシステムのための既存のアライメントポリシーは、例えば、既存のアライメントポリシーに変更を反映させる、更新されたアライメントポリシーの値で置き換えられ、または拡張されることができる。
【００８３】
[0096]ステップ８０６では、更新されたアライメントポリシーの値を使用して、センサーシステムからのセンサーデータをタイムアラインする。例えば、図７を参照して上記で論じた方法は、更新されたアライメントポリシーを利用して実行されることができる。したがって、タイムアライメント処理は、１つのアライメントポリシーの使用から、更新されたアライメントポリシーの使用へと切り替えることができる。少なくともいくつかの実装では、この切り替えは、センサーデータがセンサーシステムからストリーミングされている間に、動的に（例えば、「ストリームの中間で」）行われてもよい。
【００８４】
[0097]図９は、１つまたは複数の実施形態による方法におけるステップを説明するフロー図である。方法は、例えば、１つまたは複数の実装に従って、異なるセンサーシステムからのセンサーデータを結合する方法の例を表す。
【００８５】
[0098]ステップ９００では、複数の異なるセンサーシステムからセンサーデータのインスタンスを受信する。センサーシステムは、例えば、単一のデバイス、例えば、コンピューティングデバイス１０２上に存在してもよい。代替的にまたは追加的に、センサーシステムのうち少なくともいくつかは、異なるデバイス上に存在してもよい。例えば、センサーシステムのうちの１つまたは複数は、コンピューティングデバイス１０２上に存在し、一方で、センサーシステムのうちその他の１つまたは複数は、リモートデバイス１２２上に存在してもよい。これらの変更形は、例示のためだけに提示されており、センサーシステムは、様々な異なる場所、デバイスおよび／またはシステムに存在する可能性があると理解すべきである。
【００８６】
[0099]ステップ９０２では、センサーデータのインスタンスが、共通の時間値でタイムスタンプを付されていることを確認する。例えば、センサーデータのインスタンスは、本明細書で論じる様々な技術に従って、共通の時間値に対してタイムアラインされてもよい。
【００８７】
[00100]ステップ９０４では、共通の時間値に基づいて、センサーデータのインスタンスを結合する。センサーデータのインスタンスは、例えば、特定の時間値、例えば、適時のインスタンスに対してアラインされる。少なくともいくつかの実施形態では、結合されたセンサーデータは、異なる共通の時間値の周りに結合されたセンサーデータの他のインスタンスを含む、集約されたセンサーデータの集合に統合されてもよい。結合されたセンサーデータは、例えば、センサーデータのタイムラインの一部として含まれてもよく、センサーデータのタイムラインは、異なるセンサーシステムからの結合されたセンサーデータの集合をある期間にわたって追跡する。
【００８８】
[00101]したがって、様々な異なるセンサーシステムからのセンサーデータは、異なるアライメント技術を用いてタイムアラインされてもよく、共通のタイムアライン済み時間値に基づいて、互いに照合されてもよい。少なくともいくつかの実施形態では、これにより、幅広い様々な異なる種類の感知される現象が、関心のある環境への豊富な状態認識を提供するためにタイムアラインされることが可能となる。本明細書で論じるように、感知される現象は、物理的な現象を含み得るだけでなく、論理的な現象ならびに他の環境属性および／またはシステム属性も含み得る。
【００８９】
[00102]本明細書で論じる技術の上述の態様例について考えたが、ここで、１つまたは複数の実施形態における技術の態様を実装するために採用される可能性がある、システムおよびデバイスの例についての議論を考える。
システムおよびデバイスの例
[00103]図１０は、コンピューティングデバイスの例１００２を含む、システムの例を全体的に１０００で示し、コンピューティングデバイスの例１００２は、本明細書で説明される様々な技術を実装し得る１つまたは複数のコンピューティングシステムおよび／またはデバイスを表す。例えば、上記で論じたコンピューティングデバイス１０２および／またはリモートデバイス１２２は、コンピューティングデバイス１００２として具現化されることができる。コンピューティングデバイス１００２は、例えば、サービスプロバイダーのサーバー、クライアントに関連付けられるデバイス（例えば、クライアントデバイス）、オンチップシステム、および／またはいかなる他の適切なコンピューティングデバイスもしくはコンピューティングシステムであってもよい。
【００９０】
[00104]図示するコンピューティングデバイスの例１００２は、互いに通信可能に連結される、処理システム１００４、１つまたは複数のコンピューター可読メディア１００６、および１つまたは複数の入力／出力（Ｉ／Ｏ：Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）インターフェイス１００８を含む。図示していないが、コンピューティングデバイス１００２は、様々なコンポーネントを互いに連結する、システムバス、または他のデータおよびコマンド転送システムをさらに含んでもよい。システムバスは、様々なバスアーキテクチャのいずれかを利用する、メモリバスもしくはメモリコントローラ、周辺バス、ユニバーサルシリアルバス、および／またはプロセッサバスもしくはローカルバスなどの、様々なバス構造のうちのいずれか１つまたはその組み合わせを含むことができる。様々な他の例も、制御ラインおよびデータラインとして検討される。
【００９１】
[00105]処理システム１００４は、１つまたは複数の動作を、ハードウェアを使用して実行する機能を表す。したがって、処理システム１００４は、プロセッサ、機能ブロックなどとして構成され得るハードウェア要素１０１０を含むものとして示される。これは、特定用途向け集積回路、または１つもしくは複数の半導体を使用して形成される他の論理デバイスとしてのハードウェアでの実装を含んでもよい。ハードウェア要素１０１０は、それらが形成される物質、またはそこで採用される処理機構によって限定されない。例えば、プロセッサは、半導体および／またはトランジスタ（例えば、電子集積回路（ＩＣ：ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ））からなるものでもよい。このような文脈において、プロセッサが実行可能な命令は、電子的に実行可能な命令であってもよい。
【００９２】
[00106]コンピューター可読メディア１００６は、メモリ／記憶装置１０１２を含むものとして示される。メモリ／記憶装置１０１２は、１つまたは複数のコンピューター可読メディアに関連付けられるメモリ／記憶装置の容量を表す。メモリ／記憶装置１０１２は、揮発性メディア（ランダムアクセスメモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）など）および／または不揮発性メディア（読み出し専用メモリ（ＲＯＭ：ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）、フラッシュメモリ、光ディスク、磁気ディスクなど）を含んでもよい。メモリ／記憶装置１０１２は、固定メディア（例えば、ＲＡＭ、ＲＯＭ、固定ハードドライブなど）およびリムーバブルメディア（例えば、フラッシュメモリ、リムーバブルハードドライブ、光ディスクなど）を含んでもよい。コンピューター可読メディア１００６は、以下でさらに説明される、様々な他の方法で構成されてもよい。
【００９３】
[00107]入力／出力インターフェイス１００８は、ユーザーがコンピューティングデバイス１００２にコマンドおよび情報を入力することを可能にし、かつ、情報が様々な入力／出力デバイスを用いてユーザーおよび／または他のコンポーネントもしくはデバイスに提示されることをも可能にする、機能を表す。入力デバイスの例は、キーボード、カーソル制御デバイス（例えば、マウス）、マイクロホン（例えば、音声認識用および／または音声入力用）、スキャナー、タッチ機能（例えば、物理的接触を検出するように構成される、容量性センサーまたは他のセンサー）、カメラ（例えば、接触をジェスチャとして含まない、動きを検出するために赤外振動数などの可視または不可視波長を採用し得るカメラ）などを含む。出力デバイスの例は、ディスプレイデバイス（例えば、モニターまたはプロジェクター）、スピーカー、プリンター、ネットワークカード、触覚レスポンスデバイスなどを含む。したがって、コンピューティングデバイス１００２は、以下さらに説明するような様々な方法で、ユーザーの操作をサポートするように構成され得る。
【００９４】
[00108]ソフトウェア、ハードウェア要素、またはプログラムモジュールの一般的な文脈において、様々な技術が本明細書で説明され得る。概して、このようなモジュールは、特定のタスクを実行し、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、要素、コンポーネント、データ構造などを含む。本明細書で用いる「モジュール」、「機能」および「コンポーネント」という用語は、概して、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせを表す。本明細書で説明する技術の特徴は、プラットフォームに依存しないことであり、これは、様々なプロセッサを有する、様々な商用コンピューティングプラットフォーム上で、技術が実装され得ることを意味する。
【００９５】
[00109]説明したモジュールおよび技術の実装は、何らかの形式のコンピューター可読メディア上に記憶され、または何らかの形式のコンピューター可読メディアを介して送信されてもよい。コンピューター可読メディアは、コンピューティングデバイス１００２によってアクセスされ得る、様々なメディアを含んでもよい。限定ではなく例として、コンピューター可読メディアは、「コンピューター可読記憶メディア」および「コンピューター可読信号メディア」を含むことができる。
【００９６】
[00110]「コンピューター可読記憶メディア」は、単なる信号伝送、搬送波、または信号自体とは対照的に、情報の永続的記憶を可能にするメディアおよび／またはデバイスを指すことができる。コンピューター可読記憶メディアは、信号自体を含まない。コンピューター可読記憶メディアは、コンピューター可読命令、データ構造、プログラムモジュール、論理素子／回路、または他のデータなどの情報の記憶に適切な方法または技術で実装される、揮発性のおよび不揮発性の、リムーバブルおよび非リムーバブルメディアならびに／または記憶デバイスなどのハードウェアを含む。コンピューター可読記憶メディアの例は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、もしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ：ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋｓ）もしくは他の光学式記憶装置、ハードディスク、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または他の記憶デバイス、有形メディア、もしくは所望の情報を記憶するのに適切で、コンピューターによりアクセスされ得る製品を含むことができるが、限定はされない。
【００９７】
[00111]「コンピューター可読信号メディア」は、ネットワークを介するなどして命令をコンピューティングデバイス１００２のハードウェアに送信するように構成される信号担持メディアを指すことができる。信号メディアは、典型的には、コンピューター可読命令、データ構造、プログラムモジュール、または、搬送波、データ信号、もしくは他の伝送機構などの変調データ信号中の他のデータを具現化することができる。信号メディアは、いかなる情報配信メディアをも含む。「変調データ信号」という用語は、信号内の情報を符号化するように設定され、または変更される信号の特性のうち１つまたは複数の特性を有する信号を意味する。限定ではなく例として、通信メディアは、有線ネットワークまたは直接有線接続などの有線メディア、ならびに音波、無線周波数（ＲＦ：ｒａｄｉｏ  ｆｒｅｑｕｅｎｃｙ）、赤外線、および他の無線メディアなどの無線メディアを含む。
【００９８】
[00112]前述したように、ハードウェア要素１０１０およびコンピューター可読メディア１００６は、本明細書で説明する技術の少なくともいくつかの態様を実装するために、いくつかの実施形態で採用され得る命令、モジュール、プログラム可能なデバイスロジックおよび／またはハードウェア形式で実装される固定デバイスロジックを表す。ハードウェア要素は、集積回路またはオンチップシステムのコンポーネント、特定用途向け集積回路（ＡＳＩＣ：ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ：ｆｉｅｌｄ−ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）、結合プログラム可能論理回路（ＣＰＬＤ：ｃｏｍｐｌｅｘ  ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｄｅｖｉｃｅ）、およびシリコンまたは他のハードウェアデバイスでの他の実装を含んでもよい。この文脈では、ハードウェア要素は、処理デバイスとして動作してもよく、処理デバイスは、実行する命令を記憶するために利用されるハードウェア要素およびハードウェアデバイス、例えば、前述のコンピューター可読記憶メディアにより具現化される命令、モジュール、および／またはロジックにより定義されるプログラムタスクを実行する。
【００９９】
[00113]前述したものを組み合わせたものが、また、本明細書で説明した様々な技術およびモジュールを実装するために採用されることができる。したがって、ソフトウェア、ハードウェア、またはプログラムモジュール、および他のプログラムモジュールは、ある形式のコンピューター可読記憶メディア上で、および／または１つまたは複数のハードウェア要素１０１０によって具現化される、１つまたは複数の命令および／またはロジックとして実装されることができる。コンピューティングデバイス１００２は、ソフトウェアモジュールおよび／またはハードウェアモジュールに対応する特定の命令および／または関数を実装するように構成されてもよい。したがって、コンピューティングデバイス１００２によってソフトウェアとして実行可能なモジュールの実装は、例えば、処理システムのコンピューター可読記憶メディアおよび／またはハードウェア要素１０１０の使用を通じて、ハードウェア内で少なくとも部分的に実現されることができる。命令および／または関数は、１つまたは複数の製品（例えば、１つまたは複数のコンピューティングデバイス１００２および／または処理システム１００４）によって、本明細書で説明される技術、モジュール、および例を実装するように実行可能／動作可能であってもよい。
【０１００】
[00114]図１０でさらに示すように、システムの例１０００は、パーソナルコンピューター（ＰＣ：ｐｅｒｓｏｎａｌ  ｃｏｍｐｕｔｅｒ）、テレビジョンデバイス、および／またはモバイルデバイス上でのアプリケーション実行時における、シームレスなユーザーエクスペリエンスのためのユビキタス環境を可能にする。アプリケーションを利用する、ビデオゲームをする、ビデオを見るなどの間に、１つのデバイスから次のデバイスへと移行する際の共通のユーザーエクスペリエンスについて、サービスおよびアプリケーションは、３つの環境全てにおいて実質的に同様に実行される。
【０１０１】
[00115]システムの例１０００では、複数のデバイスは、中央コンピューティングデバイスを通じて相互接続される。中央コンピューティングデバイスは、複数のデバイスに対しローカル接続されてもよく、または、複数のデバイスから遠隔設置されてもよい。１つの実施形態では、中央コンピューティングデバイスは、ネットワーク、インターネット、または他のデータ通信リンクを通じて複数のデバイスに接続される１つまたは複数のサーバーコンピューターのクラウドであってもよい。
【０１０２】
[00116]１つの実施形態では、この相互接続アーキテクチャによって、複数のデバイスを横断して配信される機能が、複数のデバイスのユーザーに共通の、かつシームレスなエクスペリエンスを提供することが可能となる。複数のデバイスのそれぞれは、異なる物理的要件および能力を有する可能性があり、中央コンピューティングデバイスは、プラットフォームを使用して、デバイスに適合し、かつ全てのデバイスに共通するエクスペリエンスがデバイスに配信されることを可能にする。１つの実施形態では、ターゲットデバイスのクラスが生成され、エクスペリエンスは、デバイスのジェネリッククラスに適合する。デバイスのクラスは、デバイスの物理的特徴、使用形態、または他の共通の特性によって定義されることができる。
【０１０３】
[00117]様々な実装では、コンピューティングデバイス１００２は、コンピューター１０１４、モバイル１０１６、およびテレビジョン１０１８の使用のためなどの、様々な異なる構成を想定してもよい。これらの構成のそれぞれは、概して異なる構成および能力を有する可能性があるデバイスを含み、したがって、コンピューティングデバイス１００２は、異なるデバイスクラスのうちの１つまたは複数のデバイスクラスに従って構成され得る。例えば、コンピューティングデバイス１００２は、パーソナルコンピューター、デスクトップコンピューター、マルチ画面コンピューター、ラップトップコンピューター、ネットブックなどを含む、コンピューター１０１４クラスのデバイスとして実装されてもよい。
【０１０４】
[00118]コンピューティングデバイス１００２は、また、携帯電話、携帯音楽プレイヤー、携帯ゲームデバイス、タブレットコンピューター、マルチ画面コンピューターなどのモバイルデバイスを含む、モバイル１０１６クラスのデバイスとして実装されてもよい。コンピューティングデバイス１００２は、また、普段の視聴環境において、通常大型画面を有し、または通常大型画面に接続されるデバイスを含む、テレビジョン１０１８クラスのデバイスとして実装されてもよい。これらのデバイスは、テレビジョン、セットトップボックス、ゲームコンソールなどを含む。
【０１０５】
[00119]本明細書で説明した技術は、コンピューティングデバイス１００２のこれら様々な構成によってサポートされ得るが、本明細書で説明した技術の特定の例に限定されない。例えば、コンピューティングデバイス１０２および／またはリモートデバイス１２２に関して論じた機能は、以下で説明されるように「クラウド」１０２０上でプラットフォーム１０２２を介するなどして、分散システムの使用を通じて全体または一部が実装され得る。
【０１０６】
[00120]クラウド１０２０は、リソース１０２４のためのプラットフォーム１０２２を含み、かつ／または表す。プラットフォーム１０２２は、クラウド１０２０のハードウェア（例えば、サーバー）およびソフトウェアリソースの基盤となる機能を抽象化する。リソース１０２４は、コンピューティングデバイス１００２から離れたサーバー上でコンピューター処理が実行される間に利用できるアプリケーションおよび／またはデータを含んでもよい。リソース１０２４は、インターネット上で、および／またはセルラーネットワークもしくはＷｉ−Ｆｉネットワークなどのサブスクライバーネットワークを通じて提供されるサービスを含むこともできる。
【０１０７】
[00121]プラットフォーム１０２２は、コンピューティングデバイス１００２を他のコンピューティングデバイスと接続するためのリソースおよび関数を抽象化することができる。プラットフォーム１０２２は、また、プラットフォーム１０２２を介して実装されるリソース１０２４について直面する要求に対して、対応するレベルのスケールを提供するためのリソースのスケーリングを抽象化する役割をする。したがって、相互接続したデバイスの実施形態では、本明細書で説明する機能の実装は、システム１０００の至る所に分散されることができる。例えば、機能は、コンピューティングデバイス１００２上で部分的に実装されることができ、同様に、クラウド１０２０の機能を抽象化するプラットフォーム１０２２を介して実装されることができる。
【０１０８】
[00122]本明細書で論じるのは、本明細書で論じる技術を実行するように実装され得る多数の方法である。方法の態様は、ハードウェア、ファームウェアもしくはソフトウェア、またはこれらの組み合わせで実装されることができる。方法は、１つまたは複数のデバイスによって実行される動作を指定するステップの集合として示され、動作の実行についてそれぞれのブロックによって示される順序に必ずしも限定されない。さらに、特定の方法に関して示す動作は、１つまたは複数の実装に従って、別の方法の動作と組み合わされてもよく、かつ／または交換されてもよい。方法の態様は、環境１００に関して上記で論じた様々なエンティティ間の相互作用を介して実装されることができる。
結論
[00123]構造的特徴および／または方法論的な動作に固有の言葉で、実装の例が説明されてきたが、添付の請求項で定義される実装は、説明した特定の特徴または動作に必ずしも限定されないと理解されるべきである。むしろ、特定の特徴および動作は、クレームされる特徴を実装する形式の例として開示される。
【図１】
2016539447.tif 000003
【図２】
2016539447.tif 000004
【図３】
2016539447.tif 000005
【図４】
2016539447.tif 000006
【図５】
2016539447.tif 000007
【図６】
2016539447.tif 000008
【図７】
2016539447.tif 000009
【図８】
2016539447.tif 000010
【図９】
2016539447.tif 000011
【図１０】
2016539447.tif 000012
【国際調査報告】
2016539447.tif 000013
2016539447.tif 000014