(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-16
(45)【発行日】2023-10-24
(54)【発明の名称】デバイスメッセージフレームワーク
(51)【国際特許分類】
G06F 16/13 20190101AFI20231017BHJP
G06F 16/14 20190101ALI20231017BHJP
【FI】
G06F16/13 200
G06F16/14
(21)【出願番号】P 2021532188
(86)(22)【出願日】2019-12-10
(86)【国際出願番号】 US2019065531
(87)【国際公開番号】W WO2020123544
(87)【国際公開日】2020-06-18
【審査請求日】2021-07-09
(32)【優先日】2018-12-13
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】518156417
【氏名又は名称】ズークス インコーポレイテッド
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】クイン、カール エドワード
【審査官】酒井 恭信
(56)【参考文献】
【文献】特開2011-159093(JP,A)
【文献】米国特許出願公開第2011/0187861(US,A1)
【文献】国際公開第2018/180121(WO,A1)
【文献】米国特許出願公開第2020/0377114(US,A1)
【文献】米国特許出願公開第2013/0261881(US,A1)
【文献】特開2002-312384(JP,A)
【文献】特表2017-529625(JP,A)
【文献】特開2018-120429(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/10 - 16/188
(57)【特許請求の範囲】
【請求項1】
1つ以上のプロセッサと、
命令を記憶するメモリと、を備え、前記命令が、前記1つ以上のプロセッサによって実行されたとき、システムに、
自律型車両の1つ以上のサブシステムによって生成されたデータ、
複数の時間を示すタイムスタンプ、および
前記データに関連した複数のトピックを含むメッセージを受信することと、
1つ以上のデータストアの第1のディレクトリに、第1の複数のファイルを記憶することであって、前記第1の複数のファイル
のそれぞれが、前記データのうち、前記タイムスタンプに基づく
複数の時間と前記
複数のトピックとによって分割されたそれぞれの一部分を含み、かつ階層に従って前記第1のディレクトリの第1の複数のサブディレクトリに記憶され、前記階層が、時間レベルと、前記時間レベルより下位のトピックレベルとを含む、記憶することと、
前記1つ以上のデータストアの第2のディレクトリに、第2の複数のファイルを記憶することであって、前記第2の複数のファイルが、前記データの前記一部分に少なくとも部分的に基づき、かつ前記階層に従って前記第2のディレクトリの第2の
複数のサブディレクトリに記憶される、記憶することと、
要求を受信することであって、前記要求が、要求されたトピック、開始時間、または終了時間を含む、受信することと、
前記要求されたトピック、前記開始時間、または前記終了時間に少なくとも部分的に基づいて、前記第1の複数のファイルまたは前記第2の複数のファイルのうちの1つ以上を提供することと、を行わせる、システム。
【請求項2】
前記第1の複数のファイルまたは前記第2の複数のファイルのうちの1つ以上を提供することが、前記第1の複数のファイルまたは前記第2の複数のファイルが、前記要求されたトピックと関連付けられているかどうか
に少なくとも部分的に基づいている、請求項1に記載のシステム。
【請求項3】
前記第1のディレクトリが、第1のアクセス許可と関連付けられ、前記第2のディレクトリが、前記第1のアクセス許可よりも制約的な第2のアクセス許可と関連付けられ、
前記要求が、要求許可レベルと関連付けられ、
前記第1の複数のファイルまたは前記第2の複数のファイルのうちの1つ以上を提供することが、前記第1のアクセス許可、前記第2のアクセス許可、および前記要求許可レベルに少なくとも部分的に基づいて前記第1の複数のファイルのうちの第1のファイルを提供することを含む、請求項1または請求項2に記載のシステム。
【請求項4】
第1のトピックが、前記自律型車両の第1のサブシステムに関連し、第2のトピックが、前記自律型車両の第2のサブシステムに関連し、前記要求が、
前記開始時間と前記終了時間との間の前記自律型車両の前記第1のサブシステムからのデータ
および前記自律型車両の前記第2のサブシステムからのデータに少なくとも部分的に基づいて判定された、バリアントセットのデータの要求を含む、請求項1~3のいずれか一項に記載のシステム。
【請求項5】
前記第1のディレクトリが、前記1つ以上のデータストア上の第1のストレージロケーションを示す第1のルートディレクトリを含み、前記第2のディレクトリが、前記1つ以上のデータストア上の第2のストレージロケーションを示す第2のルートディレクトリを含み、前記第1のストレージロケーションが、前記第2のストレージロケーションとは相違する、請求項1~
4のいずれか一項に記載のシステム。
【請求項6】
前記第1のストレージロケーションが、クイックアクセスのために最適化されたローカルデータストア内に位置する、請求項
5に記載のシステム。
【請求項7】
方法であって、
システムによって、複数のトピックに関連した第1のデバイスデータを受信することであって、前記第1のデバイスデータが、第1の複数のファイルからなり、期間中にデバイスの1つ以上のコンポーネントによって生成されたメッセージデータに対応する、受信することと、
前記システムによって、1つ以上のデータストア上に、かつ第1のロケーションに、階層データ構造に従って前記第1の複数のファイルを記憶することであって、前記第1の複数のファイル
のそれぞれが、前記第1のデバイスデータのうち、タイムスタンプに基づく
複数の時間と
前記複数のトピックとによって分割されたそれぞれの一部分を含み、前記階層データ構造が、時間レベルと、前記時間レベルより下位のトピックレベルとを含む、記憶することと、
前記システムによって、第2の複数のファイル
からなる第2のデバイスデータを
受信することであって、前記第2のデバイスデータが、前記期間と関連付けられる、
受信することと、
前記システムによって、前記階層データ構造に従って、前記1つ以上のデータストア上の第2のロケーションに前記第2の
複数のファイルを記憶することと、を含む、方法。
【請求項8】
前記第2のデバイスデータが、前記第1の複数のファイルから導出されたデータを含む、請求項
7に記載の方法。
【請求項9】
前記第1の複数のファイルのうちのファイルが、前記メッセージデータの複数のメッセージからなり、前記ファイルが、閾値サイズ未満である、請求項
7または8に記載の方法。
【請求項10】
前記複数のメッセージのうちのメッセージが、
メッセージタイプ、
前記メッセージが作成されたタイムスタンプ、および
メッセージ番号を含む、請求項
9に記載の方法。
【請求項11】
前記第1の複数のファイルが、第1のデータストアに記憶され、前記第2の複数のファイルが、前記第2の複数のファイルのレイテンシまたは使用頻度に基づいて第2のデータストアに記憶される、請求項
7~
10のいずれか一項に記載の方法。
【請求項12】
前記第1のロケーションが、第1のアクセス許可と関連付けられ、前記第2のロケーションが、第2のアクセス許可と関連付けられ、前記第2のアクセス許可が、前記第1のアクセス許可よりも制約的である、請求項
7~
11のいずれか一項に記載の方法。
【請求項13】
要求を受信することであって、前記要求が、要求データ識別子、開始時間、終了時間、および要求許可レベルを含む、受信することと、
前記要求、前記第1のアクセス許可、
および前記第2のアクセス許可に少なくとも部分的に基づいて、前記第1の複数のファイルのうちの第1のファイル、または前記第2の複数のファイルのうちの第2のファイルを伝送することと、をさらに含
む、
請求項
12に記載の方法。
【請求項14】
前記第1のデバイスデータが、自律型車両の第1のサブシステムから取得され、前記第2のデバイスデータが、前記自律型車両の第2のサブシステムから取得される、請求項
7~
13のいずれか一項に記載の方法。
【請求項15】
1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに請求項
7~
14のいずれか一項に記載の方法を実施させる、プログラム。
【発明の詳細な説明】
【関連出願の相互参照】
【0001】
本出願は、2018年12月13日に出願された「DEVICE MESSAGE FRAMEWORK」と題される米国特許出願第16/219,623号に対する優先権を主張し、その完全な開示の全体が参照により、すべての目的のために組み込まれる。
【背景技術】
【0002】
ロボット車両、コンピューティング車両、および自律型または半自律型車両を含む多くのデバイスは、典型的には、デバイス自体からリモートで分析および記憶される大量のデータを生じ得る。そのようなデータは、単一のファイルにログされるとき、特に長い時間のスパンを考慮すると、非常に大きなファイルを作成し得る。この大きなファイルサイズは、リモートコンピューティングロケーションへの送信時に長期間にわたって一連のメッセージを記録すること、および典型的にこれらのファイルをローカルでコピーしなければこれらのファイルを開くことができないことによりオフラインで操作することに、問題を呈し得る。加えて、分析目的のためにはデータのわずかな部分しか必要とされないことが多く、必要とされるデータに対して大量のデータが送信およびアクセスされることとなる。このことは、ひいては、帯域幅、ストレージ、および計算リソースの不必要な使用を引き起こし得る。
【図面の簡単な説明】
【0003】
詳細な説明は、添付の図を参照して記載される。図において、参照番号の左端の数字(複数可)は、参照番号が最初に表れる図を識別する。異なる図における同じ参照番号の使用は、類似または同一の構成要素または特徴を示す。
【
図1】自律型車両データサービスが自律型車両からデータを受信し、階層データ構造を使用してデータを記憶し、データにアクセスし、およびデータに対して分析を実施する例示的なシステムを例示している。
【
図2】
図1の階層データ構造内のファイルにデータを細分化する方法の例示的な図を例示している。
【
図3】自律型車両データサービスが自律型車両からデータを受信し、階層データ構造を使用してデータを記憶し、データにアクセスし、およびデータに対して分析を実施する別の例示的なシステムを例示している。
【
図4】
図3のサービスなどの自律型車両サービスの異なる態様間の例示的な通信を例示している。
【
図5】データのレイヤを含む階層データ構造の例を例示している。
【
図6】
図5の階層データ構造のファイルの内容の例を例示している。
【
図7】
図5の階層データ構造の、2つの関連するが異なるファイル木またはデータ構造からデータにアクセスし得る方法の例を例示している。
【
図8】
図5の階層データ構造の、2つの関連するが異なるファイル木またはデータ構造の別の例を例示している。
【
図9】階層データ構造内のロボットデバイスデータにアクセスし、およびロボットデバイスデータを記憶するための例示的なプロセスを例示している。
【
図10】階層データ構造を使用してロボットデバイスデータにアクセスし、およびロボットデバイスデータを組み合わせるための例示的なプロセスを例示している。
【
図11】階層データ構造を使用してデータを受信し、データを記憶し、データにアクセスし、およびデータを組み合わせるための例示的なプロセスを例示している。
【
図12】データサービスにメッセージおよびデータを提供するサブシステムの例を例示している。
【発明を実施するための形態】
【0004】
本開示は、ディレクトリまたは階層データ構造を使用して、効率的に、ロボットデバイスまたは自律型車両などのデバイスから取得されたデータを編成し、データにアクセスし、ならびにデータに対して分析および動作を実施する方法、装置、およびシステムについて記載する。自律型車両などのデバイスは、動作の通常の過程で、ログデータ、センサデータ、および決定ポイントを含む複数のメッセージを生成し得る。本明細書に記載されるように、デバイス自体、またはデータを受信するサービスは、データを階層データ構造内に書き込んで、データに対して実施される、はるかに高速のアクセス、ならびにより効率的かつ直感的な分析およびオペレータを可能にし得る。階層データ構造は、メッセージを異なるトピック(データ識別子)に編成し得る。データ構造内の最下位レベルであり得る階層内のファイルは、特定のトピックについての1つまたはいくつかのメッセージ(例えば、ログまたは他のデータ)を含み得る。各ファイルは、ファイルが記録された時間、またはファイルが関連する時間と関連付けられ得、ファイルのサイズに対する制限として機能する閾値サイズ未満であり得る。この時間値は、データ構造の第2のレベルを表し得る。いくつかの態様では、デバイスまたは自律型車両は、このようにしてデバイスまたは自律型車両によって作成されたデータを編成して、リンクされたサービスまたはシステムへの特定のデータのより速い、より効率的な、かつより正確な報告を可能にし得る。
【0005】
いくつかの態様では、データ構造の1つ以上のファイルは、例えばデータ構造の1つ以上のレイヤに、データ構造を使用して修正および記憶され得る。いくつかの例では、データは、データ構造内に記憶され直されるが、他の例では、データは、同じ方法でデータを編成する別のデータ構造内に記憶される。一例では、このことは、同じ時間ウィンドウから特定のトピックを合わせてバンドルすること、他のトピックを除外すること、1つ以上のファイル内の値を変更することなどを含み得る。次いで、この修正されたデータは、例えばサブディレクトリまたはレイヤ(例えば、バリアントレイヤ)内の、データ構造内に記憶され得る。このようにして、分析または前処理は、様々なファイルに対して実施され、同じデータ構造に記憶されて、下流処理を強化し、修正されたデータへのアクセスをはるかに効率的にし得る。
【0006】
いくつかの態様では、データ構造は、複数車両データ管理システムまたはサービスの場合など、ファイル(複数可)が関連する車両などのデバイスを指定するレベルを含み得る。ストレージロケーション、アクセス許可、または制限情報などの、データの1つ以上の他の特性を識別するためのルートレベルが、実装され得る。このようにして、データは、インテリジェントかつ効率的に編成、処理、およびアクセスすることができる。
【0007】
いくつかの態様では、最低時間レベルは、各ファイルが、自律型車両上で生成される1つ以上のメッセージなどの、例えばデバイスによって生成される、1分間隔のデータを含み得るように分を表し得るが、任意の他の時間間隔(例えば、ミリ秒、秒、時間など)が想到される。本明細書に記載されるように、ファイルは、少量(閾値量未満)のデータを包含し、そのため、現在のシステムよりもいくつかの特定の利益および利点を提供することができる。記述されたデータディレクトリまたは階層データ構造は、各ファイル(複数可)で処理することが禁止されたデータ量、柔軟性のない任意のトピックグループ化、データストレージの拡張の困難性、遅いアクセス、特定のオペレーティングシステム(例えば、ROS)に依存するファイル、記憶する所とアクセスする所との統一がないこと、およびアクセスする統一されたAPIがないことを含む、以前に使用されたシステムに関する1つ以上の識別された問題に対処し得る。
【0008】
例えば、1つのロギングシステムを使用した、データのいくつかの実行または時間スパンは、20MB/秒でダウンロードするには1.5時間が必要になる100GBを超え得る。データをより短い期間に分離し、かつより多くのトピックによって編成することによって、データは、はるかに迅速に別のシステムにダウンロードまたは伝達することができ、関連するデータは、はるかに速くアクセスすることができ、このことは、カスタマイズ可能であり得る。記述されたデータディレクトリは、ロケートしてアクセスするのが容易である細粒度のファイルを提供し得る。データディレクトリは、名前によって直接にトピックアクセスを提供し、したがって、非常に細粒度のレベルでデータにアクセスするための直感的かつ効率的な方法を提供し得る。
【0009】
記述された階層データ構造は、特定のトピックについて複数のレベルに編成されたファイルを記憶し得、データをレコードからトリミングまたは他の方法で除外する必要がなく、したがって、既存の方法と比較して広範囲のデバイスをより良好にサポートすることができる、より完全なデータレコードを提供する。いくつかの態様では、記述された階層データ構造内のビデオファイルは、大量のデータを記憶し、およびこれらのデータにアクセスする非効率性をさらに軽減するために、ランダムアクセスAPIを通じて処理され得る。
【0010】
記述されたデータディレクトリは、様々なシステムとインターフェースすることができ、標準のストレージ技術をサポートすることができる。
【0011】
以下により詳細に記載され、かつ全体を通して使用されるように、メッセージは、階層データ構造内の最低レベルユニットを表し得る。いくつかの態様では、メッセージは、車両(または他のデバイス)上で送信されたメッセージを表し得、関連付けられたタイムスタンプおよびメタデータを含んでもよい。いくつかの態様では、メッセージは、ログデータ(例えば、センサからのデータ、中間プロセスからのデータ、システムのデバイス/サブシステムのコンポーネントおよび/またはサブコンポーネントからの応答など)を含み得る。トピックは、車両またはデバイス上で送信されるメッセージのタイプであり得る。トピックは、自律型車両サービスにおいて事前に定義され得るか、または構成可能であり得る。いくつかの態様では、例示的なトピックは、LIDARサブシステム、レーダサブシステム、物体判定サブシステム、または様々な他のサブシステムなどのロボットデバイスまたは自律型車両の特定のサブシステムに関連する、またはこのサブシステムによって生成されたデータを含み得る。いくつかの他の例では、トピックは、例えば、特定のトリガに応答して行われた特定の決定、1つ以上の判定または決定を行うために使用される複数のサブシステムからの入力、キーワードに関連する1つまたは複数のサブシステムからのデータなどを含み得る。
【0012】
ウィンドウは、トピックが細分化されてできる期間を指し得る。例えば、ファイルサイズとデータの鮮度とのバランスを取るために、トピックを1分間のウィンドウに分離することが有益であり得る。ファイルは、トピックのウィンドウに関連するデータを表し得る。ファイルは、特定のトピックに関連する1つ以上のメッセージを包含し得る。いくつかの例では、ファイルに対する1分間のウィンドウは、1MB未満の平均ファイルサイズ(より大きなファイルは、70~100MBの範囲にある)に等しくてもよく、このことは、要求に応答してデータを速く送信するかまたはストリーミングすることに、およびデータにアクセスすることに特に有益であり得る。レイヤまたはサブディレクトリは、ルート、バリアント識別子、および関連付けられたデータまたはファイルを有するデータのレイヤまたはセットまたはグループを指し得、これは、関連付けられたデータまたはファイルが編成される1つ以上の追加のサブディレクトリを含み得る。異なるレイヤまたはサブディレクトリは、時間レベル(複数可)、トピックレベル(複数可)、デバイス識別子レベル(複数可)などを含む、同じレベル構造の一部またはすべてを共有し得るが、異なるデータまたはファイルを包含し得る。バリアントまたはバリアントレイヤは、例えば、車両から収集されたデータから何らかの方法で修正された代替メッセージセットであり得る。そのようなバリアントレイヤは、限定されないが、アクセス制御の複数のレベルのうちの1つと関連付けられたデータセットを関連付けること、より高速なアクセスのために様々なシステム上の特定の部分のストレージを提供すること、(例えば、テストアルゴリズムによって)独立して改変されたデータのセットを提供すること、および/または他のレイヤからのデータの組み合わせなどの追加の機能性を提供し得る。いくつかの態様では、バリアントは、カスタム分析、データのより効率的な前処理、および/またはオフライン使用を実施するために最適化され得る。いくつかの態様では、自律型車両の動作は、ナノ秒で測定された時間を想定し得る。1つ以上のデータストアからのデータのリコール中、そのようなバリアントおよびトピックは、アクセス制御目的に使用され得る。非限定的な例として、特定のバリアントレイヤは、1つのデータストア上に記憶され、他のバリアントは、別のデータストアに記憶され得る。1つのデータストアからのデータは、ユーザ、バリアント、ロケーションなどに少なくとも部分的に基づいて、1つのユーザ、ロケーションなどにのみ利用可能であり得る。さらに、データを記憶するとき、バリアントレイヤおよびトピックは、最適な取り出しのために異なるデータストア内に選択的に記憶され得る。非限定的な例として、頻繁にアクセスされるデータは、ローカルルートに記憶され得る一方で、頻繁にアクセスされない関連付けられたバリアントおよび/またはトピックは、リモートの、および/またはアクセス時間がより長いデータストアに記憶され得る。いくつかの場合に、異なるレイヤが記憶されるロケーションは、データへのアクセスのレイテンシおよび/または頻度に基づいて判定され得る。
【0013】
図1は、サービス102がデバイス106からデータを受信する例示的なシステム100を例示しており、デバイス106として、描示されるように、ディレクトリ構造を使用してデータを記憶し、データにアクセスし、およびデータに対する分析を実施する自律型車両が挙げられ得る。自律型車両としてのデバイス106は、例としてのみ与えられることを理解されたい。記載された技術は、多様な他のデバイスが、記述された階層データ構造と併せて有益に利用され得るように、ロボットの構成要素または特徴を有するデバイスを含む多様なデバイスに適用可能である。
【0014】
デバイス106は、センサの読み取り、デバイス106のいくつかのサブシステムからのデータ、なされる決定ポイント、処理ステップなどに関する様々なデータを生成し得る。このデータは、いくつかの場合、非常に大きい場合がある。例示されるように、このデータは、LIDARデータ112および画像データ114、ならびにログデータなどを含む様々な他のデータを含み得る決定データ108を含むことができるセンサデータ110によって表される。
図12は、以下に記載されるように、デバイス106の例として、自律型または半自律型車両内の様々なサブシステムを詳述し、デバイス106は、このタイプ、または本明細書でまとめてデバイスまたは車両データと呼ばれ得る他のタイプのデータを生成および報告し得る。
【0015】
いくつかの態様では、デバイス106の様々なサブシステムによって生成されるデータは、メッセージまたはログデータの形式であり得る。これらのメッセージは、例えばデバイス106の1つ以上のセンサによって取得されたデータに基づいて、サブシステムによって生成され得る。いくつかの場合では、デバイス106上の1つ以上のコンピューティングシステムは、メッセージをパッケージ化するか、または生データもしくはパッケージ化されていないデータからメッセージを生成し得る。これらの場合のいずれでも、デバイス106またはデバイス106のコンピューティングシステムは、メッセージまたはデータが関連する様々なトピックに従って、メッセージをグループ化してファイルにし得る。いくつかの態様では、トピックは、デバイスの様々な動作パラメータ、センサ読み取り値、動作決定などを含み得る。トピックは、サービス102に対して事前に定義され得、サービス102によって管理されるデバイス106のサブセットに対して事前に定義され得、および/またはカスタマイズ可能であり得る。
【0016】
デバイス106は、生データまたはメッセージをパッケージ化して、異なるトピックに対するファイルにし得る。いくつかの態様では、デバイス106は、1分間隔などの規則的または可変的な間隔で、データをパッケージ化してファイルにし得る。デバイス106は、サービス102にファイルを送信し得、サービス102は、階層データ構造に従ってこれらのデータを、少なくともトピックおよび時間によってインデックス付けして、データストア104内に記憶し得る。
【0017】
サービス102は、いくつかのデバイス106からの決定データ108およびセンサデータ110を含むデバイスデータの収集を容易にするために、1つ以上のサーバ、仮想コンピューティングインスタンス、データストアなどの様々なコンピューティングシステム、およびそれらの組み合わせを含み得る。いくつかの態様では、サービス102は、ストレージ、1つ以上のプロセッサ(複数可)、メモリ、およびオペレーティングシステムを含み得る。ストレージ、プロセッサ(複数可)、メモリ、およびオペレーティングシステムは、通信インフラストラクチャを介して通信可能に結合され得る。任意選択的に、コンピュータシステムは、入力/出力(I/O)デバイス(複数可)を介してユーザまたは環境と、ならびに通信インフラストラクチャを介して、ネットワークを介したデバイス106などの1つ以上の他のコンピューティングデバイスと、インタラクトし得る。オペレーティングシステムは、1つ以上のアプリケーションを制御するために他のコンポーネントとインタラクトし得る。いくつかの事例では、コンピュータシステム(複数可)は、本明細書に記載されるように、様々なサブシステムを実装するための任意のハードウェアおよび/またはソフトウェアを実装し得る。
【0018】
いくつかの場合では、データストア104は、サービス102によって提供され得るか、もしくはサービス102と関連付けられ得るか、または別個のシステムもしくはサービスによって実装され得る。
【0019】
サービス102は、階層データ構造に対してキー設定されるインデックスシステムを介してデータへのアクセスを提供し得る。いくつかの態様では、サービス102、デバイス106、またはそれらの組み合わせは、時間によってインデックス付けされたファイルを付加するか、または他の方法で編成して、車両またはデバイス識別子、ルート値、および他の識別子などの、様々な他の階層レベルにし得る。サービス102が階層データ構造またはディレクトリを使用して、ルート、デバイス、トピック、および時間によって特定のファイルを記憶し、および特定のファイルへのアクセスを提供し得る。いくつかの場合では、サービス102は、階層データ構造内の1つ以上のファイルを修正することをさらに可能にし得る。サービス102は、例えばファイルが関連するレイヤを追加するかまたは変更することによって、修正されたファイル(複数可)を階層データ構造へと記憶し直す。このようにして、サービス102は、時間によってインデックス付けされたトピックの粒度に関するデバイスデータへの速いかつ効率的なアクセスを容易にし得る。
【0020】
図2は、記述されたディレクトリまたは階層データ構造内のファイルにデバイスデータを細分化する方法の例示的な
図200を例示している。
【0021】
ファイル214によって表される本明細書に記載される階層データ構造の下では、各ファイル214は、所与の期間またはウィンドウ224について、いくつかの異なるトピック216、218、220、222のうちの1つを表す。このようにして、各トピックは、一連のファイルに包含され、時間の間隔によって分離される。いくつかの態様では、ウィンドウサイズ224の1分間の時間間隔は、有用な情報と管理可能なファイルサイズとのバランスを提供し得る。
【0022】
いくつかの態様では、一連のファイルのトピック216、218、220、222は、別のデータ編成スキーム212によって表されるバッグ202のトピック204、206、208、210以外のカスタムトピックを含むなど、より正確かつ狭義に定義され得る。いくつかの例では、トピック216、218、220、222は、自律型車両のいくつかのサブシステム、動作基準、異なる決定ポイントに関連するデータまたはメッセージのタイプなどのうちのいずれかに対応するように構成され得る。
【0023】
図3は、データサービス302が、ディレクトリ構造を使用して自律型または半自律型車両318からデータ310を受信して、データを記憶し、データにアクセスし、およびデータに対して分析を実施する、別の例示的なシステム300を例示している。システム300は、
図1に関連して上述した1つ以上の態様を組み込み得る。例えば、サービス302は、サービス102の1つ以上の態様を組み込み得る。
図1に関連して同様に記載されるように、サービス302は、1つ以上の車両318から車両データ310を受信し得る。サービス302は、これらのデータを、トピック、時間、車両、ルート、または他の値のうちの少なくとも1つによって編成された階層データ構造で受信するか、またはこの階層データ構造に分類するかのいずれかであり得る。いくつかの場合では、複数のデバイスまたは車両318からのデータは、組み合わされるか、または併合されて、以下により詳細に記載するように、階層データ構造を使用する単一のデータ構造になり得る。併合は、異なる車両からのデータセットを追加または組み合わせること、計算(例えば、統計計算、デバイス上で実行される追加/代替プロセス(例えば、知覚、計画、予測などのための提案された新しいアルゴリズム)のテストなど)を実施して、複数の車両からのデータに基づいてデータポイントを作成するなどして、様々な形態および形態の組み合わせをとり得る。例示される例では、サービス302は、許可マネージャ304、ストレージマネージャまたはビルダ306、およびデータインターフェースまたはリーダ308をさらに含み得る。許可マネージャ304、ストレージマネージャ306、およびデータインターフェース308の各々は、サービス302上で実行中のサービスであり得るか、またはサービス302によって提供され得、および/またはサービス302として、組み合わせられたもしくは別異するコンピューティングシステム上で動作させ得る。また、例示的なシステム300に例示されるように、データストア312は、サービス302から分離され得、データストレージサービス314または他のネットワークコンピューティングサービスプロバイダもしくはシステムによって、ホストまたは提供され得る。この例では、データストア312(サービス302に分離または統合され得る)は、年/月/日、時、分、秒、車両、およびトピックに対する様々なレベルを含む階層データ構造316に従ってファイルを記憶し得る。
【0024】
ストレージマネージャまたはビルダ306は、データ構造316に従って、車両データ310を受信し、車両データ310をデータストア312に書き込み得る。いくつかの態様では、ビルダ306は、データが例えばデータストア312内の書き込まれるべきロケーション、および車両名または識別子を使用して、データをデータストア312に書き込み得る。いくつかの態様では、ビルダ306は、車両データ310を、時間の複数のレベル、およびトピック識別子などの異なるレイヤおよび/または階層316のレベルと関連付け得る。車両318およびビルダ306は各々、車両データ310をデータストア312に記憶される様々なレイヤと関連付ける動作を、別個にまたは組み合わせて、実施し得ることを理解されたい。いくつかの場合では、ビルダ306は、車両データ310の様々なファイルへのアクセスを可能にするために、異なるファイルをデータストア312内の異なるロケーションと関連付けるインデックスまたは他のデータ構造を維持し得る。いくつかの場合では、このインデックスは、車両データ310のファイルへの容易なアクセスを容易にするために、すべてのルート名およびレイヤインジケータのディレクトリを含み得る。
【0025】
ビルダ306はまた、データに対する、前処理動作、再処理動作、追加動作、新しい仲介物からの出力を提供する(例えば、以下に記載される計画システム1228などの新しい計画システム、または車両318の他のシステムをテストする)動作、グループ化動作、または他の動作を容易にする目的で、同じまたは類似のデータを異なるレイヤに書き込み得る。これらの異なるレイヤは、本明細書ではバリアントレイヤと呼ばれる。これらのバリアントレイヤは、以下により詳細に記載するように、カスタム分析またはオフライン使用のために最適化され得る。
【0026】
いくつかの態様では、ビルダ306は、車両データ310への様々なアクセス要件を最適化するために、異なるロケーションに異なるファイルを格納し得る。例えば、ビルダ306は、車両データ310のいくつかのファイルを、ローカルなまたは容易にアクセス可能なメモリロケーションまたはデータストアへ記憶し得る。このことは、他のファイルよりも頻繁にアクセスされるファイルに特に有用であり得る。同様に、ビルダ306は、例えば、大量の車両データ310を記憶するために必要なコストおよびリソースを低減するために、車両データ310のいくつかのファイルをリモートのメモリロケーションに記憶し得る。いくつかの態様では、車両データ310のファイルを異なるロケーションに記憶することは、データストレージサービス314によってさらに容易にされるか、または全体的または部分的に実施され得る。
【0027】
データインターフェース/リーダ308は、データストア312に記憶された車両データ310を読み出し得るか、またはアクセスし得る。いくつかの態様では、リーダ308は、ストアロケーションおよび車両名に従ってデータストア内のファイルにアクセスし得る。いくつかの場合では、リーダ308は、データストア312に記憶されたデータに対して照会を実行し、かつ車両データ310の特定のファイルにアクセスすることを、容易にし得る。リーダは、例えば自律型車両サービス302によって提供される1つ以上のインターフェースを介して、どのようなファイルを取得するかを指定する情報を受信し得る。いくつかの態様では、車両データのファイルは、データの範囲を探索することによって、ロケートされて取り出され得る。範囲は、開始および停止時間値などの時間範囲、または開始点もしくは終了点を有する時間の持続期間を含み得る。範囲情報はまた、車両識別子および1つ以上のトピックを含み得るか、または伴い得る。
【0028】
いくつかの態様では、リーダ308は、例えば時間値、車両、およびトピックを含む範囲によって識別される、特定のセットのファイルを照会および取得するための命令を受信し得る。いくつかの態様では、リーダ308は、例えば、サービス302によって維持された、データストア312内の記憶データの車両データ310のインデックスを探索して、範囲情報に対応するファイルのセットを識別し得る。この例では、インデックスは、階層データ構造内の様々なレイヤに従ってデータストア312内にどのようなデータが記憶されているかのインベントリ、および/またはデータが記憶されるロケーションを含み得る。他の場合では、データストレージサービス314は、範囲情報に基づいて、要求されたファイルを識別し得る。いずれの場合でも、リーダ308またはデータストレージサービス314は、データストア312からの要求された車両データ310を取得し得る。次いで、リーダ308は、最初の要求に応答するために、要求されたファイルをサービス302に提供し得る。いくつかの態様では、選択されたファイル内のデータの少なくとも一部分は、例えば、要求または照会が、要求に準拠するように選択されたファイルに包含されるデータのサブセットを指定するときに、提供され得る。いくつかの場合では、照会に応答して取得されたファイル内のメッセージは、例えば、デバイスまたは車両によって記録された順序で提供され得る。このことは、第1のインスタンスにメッセージを記録すること(例えば、デバイスまたは車両に起こったイベントの再生)を再実装するために、ファイル内のメッセージをストリーミングすること、または他の方法でメッセージを連続的に提供することを含み得る。
【0029】
いくつかの態様では、バリアントレイヤまたは代替レイヤが作成され、データ構造316内に記憶し直され得る。これらのバリアントレイヤは、データ構造の異なるレイヤからのファイルを組み合わせること、単一のレイヤからいくつかのファイルを削除すること、ならびに他の動作および修正を含み得る。有益なことに、バリアントレイヤは、他の定義またはパラメータを必要とせずに、読み取りまたは書き込み命令で(例えば、URLを使用して)バリアントレイヤ名を単に指定することによって読み取りおよび書き込まれ得る。
【0030】
いくつかの例では、1つ以上のファイルは、異なるバリアントレイヤ識別子を使用して、ビルダ306によって修正され、データストア312に記憶し直され得る。
【0031】
いくつかの態様では、データ構造316、およびデータストア312は、主にレイヤおよびファイル階層構造(例えば、C++、Python、RESTなど)に基づいて、様々なプログラミング言語をサポートし得る。効率のために、時間、デバイス(例えば、車両)、およびトピックからファイルへの直接マッピングがあるため、データストア312およびデータ階層316とのインターフェースは、異なるAPI呼び出しなどを使用して、複数の異なる言語について比較的容易に構成され得る。いくつかの例では、データ構造316は、データへの効率的なアクセスをさらに確保するために十分にテストされたAPIを提供し得るSSTableフォーマットを含む様々なフォーマットを使用してデータストア312に記憶され得る。いくつかの場合では、データは、階層316に記憶されるときに圧縮され得、このことは、制限された帯域幅チャネルを介してデータを伝達することを改善し得る。
【0032】
いくつかの態様では、トピック、バリアント、時間などを指定することができる、ユニバーサルリソースロケータ(URL)または他のユニバーサルリソース識別子(URI)を使用して、レイヤを記憶し、レイヤにアクセスし、またはレイヤをリコールすることができる。このようにして、特定の車両またはデバイスによって生成された特定の期間からの特定のファイルは、容易に読み取られ、ロケートされ、およびリコールされ得る。いくつかの場合では、レイヤ自体、または別のレイヤを参照するレイヤは、レイヤに記憶されたデータが関連するいずれのファイル、トピック、時間、デバイスなどを示し得る。
【0033】
いくつかの場合では、時間範囲、またはファイル要求の開始値および終了値を使用して1つ以上のファイルにアクセスするかまたはこれらのファイルを呼び出すための要求が受信され、かつ指定された時間が2つの時間サブディレクトリ間にある場合、リーダは、要求に対するより完全な応答を提供するために、範囲の最初の最も早いファイル、および最後の最も遅いファイルを選択し得る。
【0034】
いくつかの場合では、サービス302は、例えば、ルートレベル、バリアントレイヤレベル、トピックレベル、時間レベル、デバイス識別子レベル、またはそれらの組み合わせで、車両データ310の様々なファイルへのアクセスを制御し得る許可マネージャ304を含み得る。許可マネージャ304は、異なる許可を異なるファイルと関連付けて、どのようなエンティティを車両データ310の特定のファイルにアクセスできるようにするかを制御し得る。いくつかの場合では、許可マネージャ304は、トピック、車両、または異なるバリアントレイヤプロパティによってファイルをグループ化し得る。次いで、許可マネージャ304は、誰が車両データ310のその特定のサブセットにアクセスする必要がある可能性が高いか、または1つ以上のグループもしくはアカウントへのアクセスを制約する必要がある可能性が高いかに基づいて、許可をデータの異なるグループと関連付け得る。例えば、バリアントレイヤは、自律型車両318上に実装される1つ以上の安全対策を示す、車両データに対して実施される特定の動作(例えば、異なるファイルまたはトピックの組み合わせを含み得る)を定義し得る。例えば、データが機密であるか、または特定のグループのみがデータにアクセスする可能性がある場合、安全データにアクセスすることができる者を制限することが望ましい場合がある。
【0035】
許可マネージャ304は、1つ以上の許可を1つ以上のファイルまたはレイヤと関連付け、データへの将来のアクセスを制限または制御するために、その情報をビルダ306および/またはデータストレージサービス314に伝達し得る。
【0036】
いくつかの態様では、許可マネージャ304は、管理者が特定の許可を定義するか、構成するか、または選択し、それらの許可を様々なグループのユーザ、エンティティ、IPアドレス、または他の特性と関連付けることを可能にするための管理インターフェースを有し得るか、または提供し得る。いくつかの態様では、特定のデータは、階層データ構造内の様々なデータへのより正確かつ細粒度のアクセス制御をさらに可能にするための1つ以上のバリアントレイヤと関連付けられ得る。例えば、ナビゲーション制御データは、車両318によって生成され得る。異なるグループがナビゲーション制御データの異なる部分により効率的にアクセスすることを可能にするために、ナビゲーション制御データを分割し、異なるバリアントレイヤに記憶し得る。例えば、あるグループは、
図12を参照して以下に記載される追跡サブシステム1226などの追跡サブシステムを監視および改善することを担当し得、別のグループは、知覚および予測サブシステム1212が適切に動作していることを確認するために監視することを担当し得るのに対して、さらに別のグループは、ドライブコントローラ1270を改善することを担当し得る。ナビゲーション制御データは、各グループにとって有用であるもの、および異なるバリアントレイヤと関連付けられ、かつ異なるバリアントレイヤに記憶された各々に関する関連データに従って、分割され得る。各バリアントレイヤは、バリアントレイヤの各々におけるデータにアクセスすることを許される認証情報の形態でユーザ、グループ、または他の識別情報を指定するアクセス許可と関連付けられ得る。
【0037】
アクセス許可は、様々なグループが、異なるグループに関連しないデータへのアクセスを制約することによって、ナビゲーション制御データの異なるサブセットに効率的にアクセスすることを可能にし得る。いくつかの場合では、アクセス許可を使用して、外部編成によって課される1つ以上の規制または規則を遵守するため、データプライバシーの理由などで、特定のグループまたはユーザが機密データにアクセスしないようにし得る。
【0038】
図4は、
図1および
図3を参照して上述されるように、自律型車両サービスと自律型車両との異なる態様間の例示的な通信400を例示している。いくつかの態様では、車両センサ402および/または車載コンピューティングシステム404は、
図1および
図3を参照して上述したように、車両106、306などの自律型車両または半自律型車両の一部であり得、および/または
図12を参照して以下に記載される車両1200の1つ以上のサブシステムを含み得る。加えて、車両データストア410は、
図1および
図3に関連して上述された車両データストア104および312の1つ以上の態様を含み得る。
【0039】
車両センサ402は、
図12を参照して以下により詳細に記載するように、様々なセンサデータを取得し得る。センサデータは、動作412において、1つ以上の車載コンピューティングシステム404に伝達され得る。いくつかの場合では、車両センサ402は、
図12を参照して以下により詳細に記載されるように、センサ読み取り値およびデータ412を、1つ以上の車両サブシステムの1つ以上のコンピューティングシステムに伝達し得る。いずれの場合でも、中央車載コンピューティングシステム404または中央車載コンピューティングシステム404の1つ以上のサブシステムのいずれかが、車両を動作させる過程で動作414においてセンサデータを処理し得る。動作414は、例えば様々なサブシステム間で伝達され得る、センサデータと車両の動作の様々な態様とに関する複数のメッセージの形態で動作データを生成し得る。いくつかの態様では、メッセージは、ログデータを含み得る。非限定的な例として、そのような搭載コンピューティングシステム404は、1つ以上のセンサからのセンサデータに少なくとも部分的に基づいて、検出、分類、オブジェクトのセグメント化、地図に対する車両の位置特定などの動作を実施し得る。そのような検出、分類、セグメント化、位置特定、予測オブジェクト運動などは、1つ以上のメッセージの形態で出力され得る。ひいては、そのような例では、他のプロセスは、より多くのメッセージを作成するためにそのようなメッセージを消費し得る(例えば、以下に記載される計画システムは、前述のメッセージデータに基づいて、車両コントローラによって消費されるメッセージを作成し得る)。もちろん、任意の数のコンポーネントおよびサブコンポーネントが、互いの間でデータを伝送し得る。任意のそのような例では、メッセージは、中央タイムキーピングサーバプロセスによって提供されるような対応するタイムスタンプを有し得る。
【0040】
いくつかの態様では、車載コンピューティングシステム404、または車両の1つ以上のサブシステムの1つ以上のコンピューティングシステムは、例えば、上述したように、動作416において、階層データ構造に従って、センサデータおよび動作データをパッケージ化してファイルにし得る。いくつかの態様では、動作414および/または416は、コンピューティングシステム404が、自律型車両のいくつかのサブシステムから生成されたメッセージを収集および記録することを含み得る。コンピューティングシステム404は、ログデータを含み得るメッセージをいくつかの異なるトピックにグループ化し得る。グループ化は、メッセージを生成した、実行されたタスクまたはプロセスを生成した、1つ以上のサブシステムにまたがり得るサブシステムによること、キーワードによること、または他のメトリクスもしくはスキームによることを含む、いくつかの異なる方法で実施され得る。メッセージデータは、期間に細分化され得る。いくつかの態様では、期間またはウィンドウは、1分間隔などで事前に定義され得るが、任意の他の期間が想到される。いくつかの場合では、受信データ内に包含されるデータの量が閾値データ限界を超えないことを確保するために、そのような時間ウィンドウが、受信データの周波数および量に基づいて判定され得る。動作412、414、416、および/または418のうちの1つ以上が、規則的な間隔で、構成可能なおよび/または可変の間隔で、または1つ以上のイベントの発生時などの、様々な時間に実施され得る。1つ以上のイベントは、車両の1つ以上のセンサまたはサブシステムによってトリガされるような車両上イベントを含み得る。
【0041】
車載コンピューティングシステム404および/または自律型車両の他のコンポーネントは、動作418において、例えば1つ以上のネットワークを介して、センサおよび動作データを自律型車両サービス408に伝達し得る。動作416において車両コンピューティングシステムがデータをパッケージ化する場合、データは、より小さいファイル(例えば、ほとんどが1MB未満であり、約70~100MBまでのいくつかのより大きなファイル)で自律型車両に伝達され得る。いくつかの態様では、より小さいウィンドウでの動作412、414、416、および418によって表される、432においてデータをパッケージ化および伝達することは、データを自律型車両サービス408に送信するプロセスにおいて、車載コンピューティングシステム404に対するストレスを低減し得る。いくつかの態様では、動作416においてパッケージ化されるファイルは、データバッファが必要とされないように十分に小さい場合があるか、または代替的に、データバッファが使用され得る容量ほどの数または大きさではない場合がある。
【0042】
動作418においてセンサおよび動作データを受信すると、自律型車両サービス408は、動作420において、データを階層データ構造に編成し、動作422においてデータを車両データストア422に記憶し得る。いくつかの態様では、動作420は、時間値およびトピックと関連付け済みであり得る車両データのファイルを、車両識別子、ルート値、および/または1つ以上のバリアントレイヤなどのデータ階層内の追加のレベルと関連付けることを含み得る。異なるトピックのいくつかのファイルが、時間値によって編成されたサブディレクトリまたはレイヤに、グループ化または編成され得る。
【0043】
いくつかの態様では、自律型車両サービス408は、動作424において、車両データの一部にアクセスし、および/またはこの一部を修正するための1つ以上の命令を受信し得る。いくつかの態様では、動作422は、データの新しいサブセットであって、このサブセットの中に含まれるファイルまたはトピックの1つ以上の特性を有するバリアントレイヤによって表されるデータの新しいサブセットを作成することを含む、データを修正するための命令を受信することを含み得、このサブセットは、取得された元のデータから変更され得るか、または修正され得る。応答して、自律型車両サービス408は、動作426において、車両データストア410からデータを要求および取得し得る。いくつかの場合では、自律型車両サービス408は、動作428において、動作424において受信された命令に従ってデータを修正し、データストア410に対する動作430において、修正されたデータを階層データ構造に記憶し得る。このようにして、通信400は、車両データへの容易なアクセスおよび車両データの操作を容易にし得る。
【0044】
いくつかの態様では、動作424において受信されたデータを修正するための命令は、データに対して実施されるいくつかの異なるプロセスを含み得、特定のファイルを追加するかまたは削除することは、新しいサブディレクトリを作成するために、階層データ構造の1つ以上のサブディレクトリを形成することを含む。
【0045】
図5は、いくつかの異なるデータレベルを含む、ディレクトリデータ構造内のサブディレクトリ、木、またはレイヤ500と呼ばれ得るファイル構造の例を例示している。木500は、自律型車両または半自律型車両などの1つ以上のデバイスから受信されたデータをより効率的に記憶するために、階層の様態で編成された様々なレベルを含み得る。木構造500は、理解を容易にするために、関係語で記載される。これは説明の目的のためにのみ与えられ、データが物理的にどのように記憶されるかの形態を表すものではないことを理解されたい。
【0046】
木は、木と関連付けられた1つ以上のアクセス許可、木のデータストレージまたはメモリロケーションなどを含む、木の1つ以上の属性を指定するルートレベル502を有し得る。非限定的な例として、そのようなルートレベルは、データが、リモートの、クラウドベースの、サーバ、ローカルに、圧縮されて、非圧縮で、特定のプロトコルを介してアクセス可能で、などで存在することを指定し得る。次に、木500のファイルが関連する特定の日時に対して、1つ以上のレベルが含まれ得る。例示される例では、第1のレベル504は、年を表し、次のレベル506は、月を表し、次のレベル508は、日を表し、次のレベル510は、時、分、および秒を表す。時間レベル504、506、508、および510の各々は、任意の時間周期を含むように拡張され得る。例示されるように、時間の各分は、新しい最小レベルの時間512、520、524などによって表される。他の数のレベルおよび時間の他の分割が同様に使用できることを理解されたい。
【0047】
時間レベル(複数可)よりも下に、デバイス識別レベル512が、含まれ得る。非限定的な例として、自律型車両のフリート内の第5の自律型車両から生成および収集されたデータは、例えば「AV_5」などのレベルを指定し得る。いくつかの異なるトピックファイル514、516、518などが、デバイス当たりの各時間ウィンドウの下に含まれ得る。例示される例では、トピック1 514は、ファイル514、522、および526として、時間レベル512、520、および524の各々に含まれる。いくつかの例では、同じトピックを表すファイルは、それらのトピック内に入るデータ(例えば、そのトピックに関連する1つ以上のメッセージ)が、対応する時間間隔で車両によって生成されるときに、異なる時間間隔で含まれ得るか、または存在し得る。
【0048】
このように車両データまたは他のデバイスデータを構造化することは、細粒度レベルでの車両データへの容易かつ効率的なアクセスを提供し得る。加えて、このデータ構造は、上述したリーダ206などのリーダが複数のレイヤ化されたルートから読み取ることをサポートする。同じ構造またはフォーマットをいくつかの木にわたって使用して、データのより効率的なアクセスまたはリコールを提供するのに役立て得る。
【0049】
図6は、
図5のディレクトリデータ構造のファイル600の内容の一例を例示している。一例では、トピックファイル600は、Google LevelDBのSSTableフォーマットなどのテーブルフォーマットで記憶され得るが、他のフォーマットが想到される。テーブル内の各行602は、メッセージ番号604/メッセージ606対を含み得る。一例では、メッセージ番号604は、2が1の後の時間を表すなどのように、時間的に順次であり得る。メッセージは、ROS、プロトコルバッファ、JSON、XMLなどのいくつかの異なるフォーマットであり得、任意のトピックは、複数のメッセージタイプを包含し得る。各メッセージ606は、メッセージの内容のタイプ(例えば、ROSメッセージ、プロトコルバッファなど)、オリジン、または1つ以上の属性を識別し得るタイプ識別子608と、データフィールド610と、を含み得る。いくつかの態様では、余サイズフィールド612によって、メッセージ616内などのメッセージ内のデータ614の別のフォーマットまたはフィールドに対して空間が予約され得る。いくつかの態様では、余データ614は、時間が、Unix(登録商標)時間またはUNIX Epcoh時間で報告される、ナノ秒単位であり得るタイムスタンプ618または他の時間識別子と、例えば余データのソースを記述するための、フレーム識別子620と、を含み得る。
【0050】
一例では、ファイル600内の1つの行(例示されるように最後の行)が、タイプおよび他のメタモノを記述するメタデータレコード622を含み得る。例示されるように、メタデータレコード622は、バージョン、名前、時間情報、およびファイル600に含まれる任意のデータフォーマットに関連する情報などの、ファイル600に関する多様なフィールドおよび情報を含み得る。
【0051】
図7は、
図5のディレクトリデータ構造の、2つの関連するが異なるファイル木またはサブディレクトリの例700を例示している。root_1と標示された第1の木702は、特定の時間712、714、716における特定の車両710についてのトピック1 704、706、708に関連するファイルを含む。root_2と標示された第2の木718は、同じ車両710についての期間またはウィンドウ710、714、および716のトピック2 720、724、および728、ならびにトピック3 722、726、および730に関連するファイルを記憶し得る。このようにして、車両または他のロボットデバイスの異なるトピックのファイルは、別個の木またはサブディレクトリに記憶され得る。
【0052】
統一されたデータ階層に従って、ロボットまたは車両データを別個の木またはサブディレクトリに記憶する能力は、有益であり、他のものよりも頻繁にアクセスされる特定のファイルの効率的なローカルキャッシュを可能にし得る。また、例えば、異なるデータへの同時アクセスを容易にするために、およびいくつかの他の理由で、特定のトピックを別個の木に記憶することも、有益であり得る。いくつかの場合では、異なるトピックのための異なるファイルを異なる髪に記憶することを使用して、例えば、
図2の許可マネージャ204を参照して上述したように、異なる許可スキームを異なるデータと関連付け得る。
【0053】
木702および718は、時間の長さのバリアントのために、異なるトピックに対する任意の数のファイルを含み、異なるサイズ設定された時間ウィンドウを含み得ることを理解されたい。
【0054】
いくつかの態様では、データ木702および718のレベルは、定義された順序を有し得、各ファイルについて、見つかった最初のファイルは、要求されたときに取り出される。したがって、例示される例では、この例示的なアクセススキームに従って、木2 718がトピック1に対応するデータを有し得ることにかかわらず、トピック1に対するファイルが要求され、ファイル704、706、および708が取り出される。
【0055】
図8は、
図5のディレクトリデータ構造の、2つの関連するが異なるファイル木またはデータ構造の別の例800を例示している。
図8の例では、各々がroot_2と関連付けられた2つの異なる木802および804が例示されている。木802は、期間810に対する、および車両812に対する、トピック1と関連付けられたファイル814を含む。木804は、期間810に対する、および車両812に対する、トピック2および3と関連付けられたファイル816および818を含む。木802は、木がバリアントレイヤと関連付けられていることを指定する、2つの追加のレベル806、808を有する。バリアントレイヤ識別子806および808を使用して、ある方法または別の方法で木に記憶されたファイルを修正し、修正されたファイル、またはファイルの異なる組み合わせ、または新たに生成されたファイルを、別個のアドレス指定可能な木に保存し得る。木802および804は、時間の長さのバリアントのために、異なるトピックに対する任意の数のファイルを含み、異なるサイズ設定された時間ウィンドウを含み得ることを理解されたい。いくつかの態様では、木804はまた、トピック1と関連付けられたファイル814を記憶し得、ここでアクセスプリファレンスが構成され得る(例えば、まず、木802からトピックにアクセスし、そこにない場合、木804からアクセスする)。
【0056】
本明細書に記載される階層データ構造またはディレクトリは、部分的に、トピック、時間、および車両によってファイルを編成することを通じて、実施されるデータの簡単かつ効率的な修正、再編成、比較、および追加を可能にする。バリアントレイヤ、または異なるファイル、外部データ、他のファイルから導出されたデータなどの形態をなすカスタマイズ可能なコンテンツを有するレイヤを、記述されたディレクトリを介して容易に作成し、およびこのレイヤにアクセスすることができる。バリアントレイヤは、バリアントレイヤ識別子を新しいレイヤと関連付けることを介して、異なるレイヤのファイルを組み合わせて新しいレイヤを形成することによることを含む、いくつかの方法で作成され得る。レイヤは、階層データ構造に従って時間的に揃った異なるトピックのファイルを組み合わせることによって、形成され得る。このことは、異なるトピックであるが、同じ期間またはウィンドウと関連付けられたファイルを組み合わせて、1つ以上の時間レベルを有するレイヤにすることを含み得る。このようにして、ほぼ無限の方法でデータを組み合わせて、関連するが、自律型車両の異なるサブシステムなどの異なるソースから到来し得るデータへのより速いアクセスを可能にし得る。
【0057】
別の例では、バリアントレイヤは、外部データおよび/またはデバイスに関連する他のデータを含む他のデータを関連付けることによって作成され得る。いくつかの例では、データは、デバイスによって生成されたデータから導出され、次いで、階層データ構造に記憶されたファイルと組み合わされ得る。このことは、デバイスデータの第1のセットのファイルにアクセスすることと、それらのファイルに包含される情報のいくつかのサブセットを抜き取るかまたは取得することと、次いで、そのデータをデバイスデータの第2のセットのファイルと組み合わせることと、階層データ構造を使用して、新しく生成されたデータのセットを記憶することと、を含み得る。
【0058】
例えば、第1のセットのファイルは、
図12を参照して以下に記載されるセンサ較正サブシステム1230などの、サブシステムに関連する様々なセンサデータならびに他のメッセージおよび/またはログデータを含み得る。抽出された情報を道路ナビゲーションシステム1242などの別のサブシステムによって生成されたデータと関連付けるために、そのサブシステム1230によって生成されたデータからいくつかの情報を抽出することが望ましい場合がある。カメラ、レーダ、ライダーなどの1つ以上のセンサの較正、またはいくつかの他の動作特性に関連するデータは、道路ナビゲーションシステム1242によってなされた特定のナビゲーション決定と、時間的に相関して比較するときに、特に有用であり得る。このシナリオでは、期間および特定の車両についてセンサ較正サブシステム(例えば、第1のトピック)と関連付けられたファイルは、本明細書に記載されるように、階層データ構造を介してアクセスされ得る。特徴的な情報は、アクセスされたファイルのうちのいくつかまたはすべてから抜き取られ得る(例えば、データがファイルの各々に包含される場合)。道路ナビゲーションシステム1242と関連付けられたファイルもまた、同じ期間および特定の車両についてアクセスされ得る。抜き取られたデータは、ファイルに編成され、次いで、アクセスされた道路ナビゲーションシステムファイルと組み合わされ、さらなる分析および使用などのために、階層データ構造の新しいレイヤに記憶され得る。
【0059】
いくつかの例では、抜き取られたデータは、新しいトピックおよび時間値と関連付けられた新しいファイルに編成され得る。次いで、これらの新しいファイルは、時間および車両識別子に従って2つの異なるセットのファイルを、例えば新しいレイヤまたは既存のレイヤに、揃えることによって、階層データ構造の異なるレベルにおいて新しいファイルを関連付けることによって、道路ナビゲーションシステムファイルのファイルと組み合わされ得る。記述された階層データ構造を使用することによって、車両またはロボットデバイスの様々なサブシステムからのデータを、容易かつ効率的に組み合わせ、時間的に揃え得る。
【0060】
他の例では、データに対して、値を計算するか、または他の動作を実施することによって、デバイスまたは自律型車両によって生成されたデータから、様々なタイプの情報が導出され得る。これらの演算として、数学演算(平均、加速度、特殊な関係などを計算する)、ブール演算、言語演算(特定のキーワードを値または他のキーワードと関連付ける)、および基本的に、基礎となるデータを何らかの方法で使用する任意の定義された演算が挙げられ得る。この点において、記述された階層データ構造は、広範囲の分析のためにデータを分析し、前処理し、編成し、および記憶することにおいて非常に強力なツールである。
【0061】
いくつかの態様では、車両から取得されたデータは、特定の目的で基礎となるデータを抽出するかまたは修正することによって大量のデータがサイズを低減され、かつバリアントレイヤに保存され得るように、ロールアップされ得る。
【0062】
他の場合では、デバイスもしくは車両によって生成されないデータ、またはデバイスの外部のデータは、同様の方法で組み合わされ得る。例えば、特定の時間における車両の動作に対応し得る他のデータ(例えば、外部センサデータ、気象データ、交通データなど)は、例えば車両の1つ以上のサブシステムの動作または機能に対する、環境要因の影響を導出するかまたは推測するために、車両によって生成されたデータと関連付けられ得る。
【0063】
同様に、バリアントレイヤは、1つ以上のトピックのファイルの形態で、既存のレイヤからデータを削除することによって生成され得る。このことは、トピックが、典型的に、多くのデータまたはファイルを包含する場合に、特に有益であり得るが、いくつかの特定の目的で、データまたはファイルの小さなサブセットのみが必要とされる。関連データのみを含むバリアントレイヤを作成し、かつ例えば、バリアントレイヤを容易にアクセス可能なデータストレージロケーションに記憶することによって、データは、より速くアクセスし、より少ないリソース(例えば、処理、メモリ、およびネットワークリソース)を使用し得る。
【0064】
いくつかの場合では、バリアントレイヤを使用して、よりカスタマイズ可能なアクセススキームを提供し得、この場合に、異なるトピックのファイルを有する特定のバリアントレイヤは、通常特定のデータにアクセスするエンティティ、データプライバシーに関わる事項に準ずるために特定のエンティティのみが見ることを許される機密データなどを含む、任意の数の異なる特性によってグループ化されるかまたは定義されたアクセス許可と関連付けられ得る。このようにして、データの様々な下位分割へのアクセスは、非常に正確な方法で制御され得る。
【0065】
いくつかの例、記述データ階層の使用では、バリアントレイヤを使用して、他のデータよりも頻繁にアクセスされるデータをグループ化し、データへの速いアクセスを提供するロケーションに記憶し得る。このことは、必要な速いアクセスのデータストレージの量を低減するとともに、また、探索する必要があるデータの量を最小限に抑えることによって、データにアクセスする時間も低減する。このようにバリアントレイヤを使用して、アクセスに基づいてデータをより良好に編成することはまた、データストレージのコストを最適化し、データを複製して第2のロケーションに記憶することなどによって障害許容性を増加させるためにも使用され得る。
【0066】
さらに他の実施例では、バリアントレイヤを利用して、デバイスもしくは車両、またはそのサブシステムの動作のシミュレーションを実行する(または以前に記録されたデータに対して、新しいアルゴリズム、手順などを他の方法でテストする)ことによって生成されたデータを記録および比較し得る。例えば、デバイスまたは車両の1つ以上のサブシステムにおいて、新しい設計をテストするか、または異なる状況、環境などを考慮するために、異なる入力および/または異なるアルゴリズムが使用され得る。出力は、バリアントレイヤに編成され、他の入力および/または他の処理アルゴリズムを使用してデバイスまたは車両から取得されたデータと比較され得る。非限定的な例として、新しいコンピュータ視覚検出器(画像データ中のオブジェクトを識別するためのプロセス)は、車両の運転中に取得された以前に記録された画像に対して実行され得る。そのような例では、第1の検出器アルゴリズムからの出力は、元の検出器からの検出と直接比較され得る。このようにして、バリアントレイヤを使用して、デバイスもしくは車両、またはその1つ以上のサブシステムに実装され得る様々な設計変更の結果をテストし、および効率的に比較し得る。より具体的な例では、
図12を参照して以下に発見された車両1200の計画サブシステム1228で使用される1つ以上の決定ポイントまたはアルゴリズムを有利に試験し、結果を1つ以上のバリアントレイヤに出力し得る。次いで、これらの新しいバリアントレイヤを、他の決定ポイントまたはアルゴリズムを使用して計画サブシステム1228からの出力を既存のレイヤと効率的に比較して、これらの決定ポイントまたはアルゴリズムを改善し、かつサブシステム1228および/または車両1200の性能を最適化するのに役立て得る。バリアントレイヤのこの使用は、新しい設計特徴、車両の1つのまたは様々なサブシステムの1つ以上の態様を実行するためのコード、車両を動作させるための決定を行うための既存のアルゴリズムの新しいものまたは変更などをテストするために、特に有用であり得る。いくつかの場合では、データは、導出されたメトリクスまたはデータを比較することを可能にするために、車両により生成されたデータから導出され、修正され(例えば、それに対して実施された1つ以上の動作)、次いでバリアントレイヤに記憶され得る。
【0067】
別の例では、1つ以上のバリアントレイヤを使用して、第三者に有用であり得る特定のセニョールおよび他のデータを記憶し得る。この場合、カメラまたは他のセンサ1250データは、そのような必要な第三者による関連するデータのみへの効率的なアクセスのために、新しいバリアントレイヤ(複数可)内に取り出され、および記憶され得る。同様に、必要でない他のデータ(例えば、決定メッセージなど)は、このデータが専有情報を含み得るため、そのような第三者にアクセスできない場合がある。他の場合、データは、新しいバリアントレイヤに直接書き込まれ得る。
【0068】
別の例では、1つ以上の検出器、センサなどの1つ以上のコンポーネントが、交換され得るか、または車両に追加され得る。交換されたかまたは新しいコンポーネントから取得された新しいデータを1つ以上のバリアントレイヤに記憶することによって、新しいコンポーネントの性能が、アクセスされ、および古いコンポーネント(例えば、別のレイヤに記憶されている)と比較されて、車両またはデバイスの性能を最適化するための修正を支援し得る。
【0069】
図9は、階層データ構造内のロボットデバイスデータにアクセスし、およびロボットデバイスデータを記憶するための例示的なプロセス900を例示している。プロセス900は、例えば、
図4を参照して上述したように、ロボットデバイスもしくは自律型車両、または車載コンピューティングシステム404などのそのサブシステムによって、実施され得る。他の例では、プロセス900は、
図1および
図3を参照して上述したサービス102、302などのロボットデバイスまたは自律型車両サービスによって、実施され得る。さらにいくつかの場合では、プロセス900の異なる動作が、ロボットデバイスまたはサービスのいずれかによって実施され得る。
【0070】
プロセスは、動作902で開始し得、動作902では、階層データ構造内に編成された複数のファイルを含む第1のロボットデバイスデータが取得され得る。いくつかの場合では、複数のファイルのうちの各ファイルは、ロボットデバイスによって生成された少なくとも1つのそれぞれのメッセージに基づいている。さらにいくつかの場合では、ファイルは、順次ファイルであり、および/または第1のトピックおよび第1の時間値と関連付けられ得る。いくつかの場合では、ロボットデバイスサービスは、第1のロボットデバイスデータを取得し得る。サービスはまた、動作904において、ロボット車両の動作に関連する追加のロボットデバイスデータを取得し得る。
【0071】
サービスは、動作906において、階層データ構造に従って、追加のロボットデバイスデータを追加のファイルのセットに記憶し得る。いくつかの態様では、追加のロボットデバイスデータは、
図8を参照して上記により詳細に記載したように、階層データ構造に編成されたファイルの第2のセット、階層データ構造に記憶されたファイルから導出されたデータ、またはロボットデバイスの外部のデータ、のうちの少なくとも1つを含み得る。いくつかの態様では、追加のロボット情報を記憶することは、追加のロボット情報を第1のロボットデータのファイルのうちのいくつかまたはすべてと組み合わせることを含み得る。さらに他の例では、追加のロボットデバイスデータは、新しい時間レベルで、第1のロボットデバイスデータのファイルの後などに、第1のロボットデバイスデータに添付され得るか、または追加され得る。いくつかの態様では、第1のロボットデバイスデータの複数のファイルは、第1のレイヤに編成され得、追加のファイルのセットは、新しいバリアントレイヤに書き込まれ得る。
【0072】
いくつかの態様では、第1のファイルは、レイヤ内の第1のファイルおよび追加のファイルをそれぞれのファイルと関連付けられた時間値に従って編成することによって、追加のファイルと組み合わされ得る。いくつかの態様では、異なるファイルの時間値は、ファイルの第1のグループからの1つ以上のファイルが、追加のファイルのオフセットからの1つ以上のファイルと同じ時間レベルに記憶され得るように、部分的にまたは完全に重複し得る。
【0073】
図10は、階層データ構造を使用してロボットデバイスデータにアクセスし、およびロボットデバイスデータを組み合わせるための例示的なプロセス1000を例示している。プロセス1000は、例えば、
図4を参照して上述したように、ロボットデバイスもしくは自律型車両、または車載コンピューティングシステム404などのそのサブシステムによって、実施され得る。他の例では、プロセス1000は、
図1および
図3を参照して上述したサービス102、302などのロボットデバイスまたは自律型車両サービスによって、実施され得る。さらにいくつかの場合では、プロセス1000の異なる動作が、ロボットデバイスまたはサービスのいずれかによって実施され得る。
【0074】
プロセス1000は、動作1002で開始し得、動作1002では、全体を通して記載されるように、階層データ構造内のファイル内に編成されたロボットデバイスデータが取得され得る。ロボットデバイスデータは、
図1および
図3を参照して上記により詳細に記載したように、ロボットデバイスもしくは自律型車両106、318、または対応するサービス102、302から取得され得る。階層データ構造のサブディレクトリまたはレイヤからの少なくとも1つの第1のファイルが、動作1004において、例えば、自律型車両サービス102、302またはリーダ308によって受信されたデータにアクセスする要求に応答して、アクセスされ得る。同様に、動作1006において、階層データ構造の第2のサブディレクトリまたはレイヤからの少なくとも1つの第2のファイルが、アクセスされ得る。
【0075】
次に、動作1008において、少なくとも1つの第1のファイルと少なくとも1つの第2のファイルとを組み合わせて、新しいまたは第3のサブディレクトリまたはレイヤを生成し得る。動作1010において、第3のレイヤは、階層データ構造に記憶され得る。いくつかの態様では、動作1008および1010は、自律型車両サービス102、302またはビルダ306によって実施され得る。
【0076】
図11は、階層データ構造を使用して、自律型車両データを受信する、自律型車両データを記憶する、自律型車両データにアクセスする、および自律型車両データを組み合わせるための例示的なプロセス1100を例示している。プロセス1100は、例えば、
図1および
図3を参照して上述したサービス102、302などの自律型車両サービスによって実施され得る。
【0077】
プロセス1100は、動作1102で開始し得、動作1102では、自律型車両の1つ以上のサブシステム、タイムスタンプ、およびトピックによって生成されたデータが、サービス102、302などの自律型車両サービスによって、自律型車両から取得または受信され得る。次に、動作1104において、複数のファイルを含むデータの一部分は、データストレージサービス314のデータストア104または312などの1つ以上のデータストアに送信され得る。1つ以上のデータストアは、自律型車両のタイムスタンプ、トピック、または識別子に少なくとも部分的に基づいて、ファイルを、例えば階層データ構造またはディレクトリ316の、1つ以上のサブディレクトリまたはレイヤに記憶するように構成され得る。
【0078】
動作1106において、第1のトピック、第2のトピック、開始時間、および終了時間、または時間範囲などを含む、データの要求が、例えば自律型車両サービスによって、受信され得る。要求に応答して、少なくとも1つの第1のファイルが、動作1108において、少なくとも第1のトピックに従って、およびいくつかの場合では、指定された時間範囲に従って、アクセスされ得る。同様に、少なくとも1つの第2のファイルが、動作1110において、少なくとも第2のトピックに従って、およびいくつかの場合では、指定された時間範囲に従って、アクセスされ得る。次いで、動作1112において、少なくとも1つの第1のファイルと少なくとも1つの第2のファイルとが組み合わされて、新しいレイヤまたはサブディレクトリをなし、要求に応答して提供され得る。いくつかの態様では、本開示を通じて記載されるように、新しいレイヤまたはサブディレクトリは、階層データ構造を使用して記憶され得る。
【0079】
いくつかの態様では、要求、または要求と関連付けられたアカウントは、第1の許可レベルと関連付けられ得る。いくつかの場合では、サービス302および/または許可マネージャ304などのサービスは、要求と関連付けられた許可レベルが、要求されたファイルのうちの1つ以上と関連付けられた許可レベルを満たすか、または超えるかどうかを判定し得る。要求で指定されたファイル、トピック、レベル、ルート、またはレイヤと関連付けられた許可レベルが、要求の許可レベルよりも高い場合、サービスは、1つ以上のファイル、レベル、サブディレクトリなどへのアクセスを拒否し得る。さらなる例として、異なるバリアントレイヤは、異なるチームおよび/またはユーザのグループに制約され得る。非限定的な例として、特定のセンサデータが、ソフトウェア開発者に利用可能にされ得るのに対して、(例えば)個人識別可能な情報に関する情報は、利用可能にされなくてもよい。したがって、異なるユーザグループが、アクセス権を有し得る(相違するバリアントレイヤ上に設定されたアクセス許可に従って)。少なくともいくつかの例では、プロファイルは、1つ以上のコンピューティングシステムと関連付けられ得る。そのようなプロファイルは、相違するバリアントレイヤへのアクセス権を有し得るユーザのうちのいずれか1つ以上、および/またはデータを取得する好ましい順序を判定し得る。非限定的な例として、プロファイルは、バリアント「B」よりもバリアント「A」のデータを好むように指定し得る。そのような例では、データが複数のソース(例えば、両方のバリアントレイヤ「A」および「B」)から要求されるとき、両方で利用可能なトピックの要求は、プリファレンスの順序で、かつプロファイルに示される許可セットに従って、データを取り出し得る。
【0080】
図12は、自律型車両のアーキテクチャ1200に従って使用され得る要素の例を例示している。自律型車両は、様々なコントローラに結合された自律型車両操作システム1202を有することを特徴とし得、コントローラは、ロコモーション、電力管理などを処理するために自律型車両の様々な構成要素に結合されている。自律型車両操作システム1202の要素は、本明細書に記載されるように、オブジェクト識別および環境分析を実装するための計算システムを提供する。これらの要素は、自律型車両以外の他の用途での使用を見出し得る。
【0081】
アーキテクチャ1200は、本明細書に記載されるシステム、方法、および装置の態様を実装するための、様々なハードウェア、ソフトウェア、ファームウェアなどを含む1つ以上のコンピュータシステム(複数可)を指定し得る。例えば、自律型車両操作システム1202は、自律型車両の様々な態様に使用可能な周囲分析システム1203および他の構成要素を含み得る。周囲分析システム1203は、自律型車両操作システム1202がモータ、ステアリング、物体回避などのためのコントローラを動作させるために使用し得る情報を取り込むために使用され得る。
【0082】
周囲分析システム1203は、実装を簡素化するために複数のサブシステムとして編成され得る。いくつかの例では、サブシステムは、独立して実装されるのに対して、他の例では、2つ以上のサブシステムが、部分的または完全に一緒に統合される。サブシステムは、LIDARサブシステム、カメラサブシステム、レーダサブシステム、ソナーサブシステム、知覚ならびに予測サブシステム1212、位置特定ならびにマッピングサブシステム1214、追跡サブシステム1226、計画サブシステム1228、センサ較正サブシステム1230、および場合によっては他のサブシステム1234を含み得る。知覚および予測サブシステム1212は、LIDAR、レーダ、および視覚画像を含む様々なタイプのセンサデータからのオブジェクトの検出、セグメント化、および分類を実施する。
【0083】
所与のサブシステムは、入力を受信し、かつ出力を提供するために、他のサブシステムと通信するためのプログラムコードまたはハードウェアで実装され得る。入力の一部は、センサからのものであり得る。本明細書のいくつかの説明では、読みやすさのために、サブシステムは、サブシステムがデータまたは信号を取得するセンサ、および/またはサブシステムがデータまたは信号を出力するエミッタを含むものとして記載され得る。例えば、ソナーサブシステムは、超音波センサを有するものとして記載され得るか、または超音波センサから信号を受信するものとして記載され得る。別の例として、カメラサブシステムは、カメラおよびディスプレイを有するか、またはカメラから信号もしくはデータを受信し、かつ信号もしくはデータをディスプレイに送信するものとして記載され得る。
【0084】
図12には示されていないが、必要に応じてサブシステム間の通信が提供され得ることを理解されたい。所与のサブシステムは、何らかのチャネルを介してデータを他のサブシステムに直接送信することによって、別のサブシステムと通信し得るか、または周辺分析システム1203は、サブシステムがサブシステム間でデータおよび/または信号を渡すことによって通信することができるバスサブシステムまたは通信インフラストラクチャを含み得る。周囲分析システム1203はまた、外部データを受信するように、かつ周囲分析システム1203の外部に情報を伝達するように構成され得る。
【0085】
所与のサブシステムは、その独自の計算処理の一部を有し得、この計算処理は、その所与のサブシステムに専用のハードウェアによって実施され得るか、またはそのサブシステムの計算を実施するために割り当てられたプロセッサまたは回路によって実施され得、このことは、サブシステムが全体的にソフトウェアで実装され、プログラムコードメモリおよびデータストレージメモリなどのメモリ1238を使用して1つ以上のプロセッサ(複数可)1236によって実行される場合に当てはまり得る。メモリは、RAMなどの変数およびデータ、ならびに永続的記憶用メモリ(すなわち、寿命の一部の期間に、リフレッシュ、電力などを必要とせずに持続するデータ)の一時的記憶用であり得、明示的に言及されていなくても示されていることが含意されるものである。例えば、サブシステムがデータベース上で動作するか、またはデータを記憶するように記載される場合、電子的に読み取り可能な形態でデータを記憶するための何らかの形態のメモリが存在するであろう。いくつかの場合では、メモリ内のデータベースまたはデータストレージは、1つのサブシステムに特有ではなく、かつ1つのサブシステムの内部にはない。それらの場合、メモリは、2つ以上のサブシステムによってアクセス可能である。例えば、1つのサブシステムは、そのサブシステムによって取得されたセンサデータに基づいてレコードを作成し、それらのレコードをデータベースまたは他のデータ構造に書き込み、ひいては、別のサブシステムが、そのデータを読み取り、および使用することができる。サブシステムがソフトウェアで実装される場合、サブシステムは、そのサブシステムに特有のプロセッサ、またはより一般的なプログラムコードメモリおよびプロセッサに結合されたプログラムコードを含み得る。
【0086】
いくつかの事例では、周囲分析システム1203は、自律型車両で使用される。いくつかの事例では、周囲分析システム1203は、自律型車両のための知覚および計画機能性を提供し得る。一般に、周囲分析システム1203は、LIDAR知覚、レーダ知覚、ビジョン(カメラ)知覚、音響知覚、セグメント化および分類、追跡および融合、ならびに予測/計画、ならびにドライブコントローラ、電源コントローラ、環境コントローラ、および通信コントローラなどの他のコントローラとのインターフェーシングを提供し得る。
【0087】
自律型車両操作システム1202は、道路ナビゲーションシステム1242、マニフェストマネージャ1244、および監査/故障ロガー1246を含み得る。自律型車両操作システム1202はまた、様々なセンサ1250およびエミッタ1252を含むか、またはそれらにインターフェースし得る。
【0088】
自律型車両操作システム1202は、モータ1280、ステアリング1282、ブレーキ1284、およびサスペンション1286と相互作用するドライブコントローラ1270、バッテリ1288およびインバータ/充電器1290と相互作用する電源コントローラ1272、加熱、換気、空調(HVAC)コンポーネント1292および照明1294と相互作用する環境コントローラ1274、ならびに自律型車両と、自律型車両とともに使用されるデバイスと、ネットワーク、セルラーチャネル、またはWi-Fi(登録商標)チャネル1296などを介した外部デバイスと、の間の通信を処理する通信コントローラ1276とインターフェースし得る。自律型車両操作システム1202、コントローラ、および自律型車両に設置された車両コンポーネントの組み合わせは、常に人間の介入なしに、安全にナビゲートすることができる車両を提供することができる。
【0089】
自律型車両操作システム1202は、例示されるものを超えて、自律型車両での使用に好適な任意の数またはタイプのセンサを含み得る。様々なセンサ1250は、限定されないが、超音波変換器、ホイールエンコーダ、環境センサ、マイクロホン、慣性測定ユニット(複数可)(IMU)、加速度計、ジャイロスコープ、磁力計、温度センサ、湿度センサ、光センサ、グローバルポジショニングシステム(GPS)センサ、圧力センサ、位置センサなどを含み得る。
【0090】
LIDARサブシステムは、本明細書に記載されるように、セグメント化のためにLIDARデータをキャプチャするための1つ以上のLIDARセンサを含み得、本明細書に詳細に記載されるように、任意の1つ以上の深度センサを備え得る。いくつかの事例では、LIDARサブシステム1204は、複数のLIDARセンサからLIDARデータを組み合わせるかまたは合成してLIDARデータのメタスピンを生成するための機能性を含み得、LIDARデータは、複数のLIDARセンサに基づくLIDARデータを指し得る。LIDARデータのメタスピンの場合、LIDARサブシステムは、メタスピンデータの仮想原点(例えば、すべてのLIDARセンサに共通の座標基準フレーム)を判定し、かつ1つ以上のLIDARセンサの各々からのLIDARデータが仮想原点に対して表現されるようにデータ変換を実施するための機能性を含み得る。本開示の文脈において理解され得るように、LIDARサブシステムは、データをキャプチャし得、後続の処理のためにデータセットを他のサブシステムに伝送し得る。
【0091】
カメラサブシステムは、画像セグメント化および/または分類のためのビジョンデータをキャプチャするための1つ以上のカメラセンサを含み得るか、またはこれらのカメラセンサにインターフェースし得る。カメラサブシステムは、任意の数およびタイプのカメラセンサを含み得る。例えば、カメラサブシステムは、任意のカラーカメラ、モノクロカメラ、デプスカメラ、RGB-Dカメラ、ステレオカメラ、赤外線(IR)カメラ、紫外線(UV)カメラなどを含み得る。本開示の文脈で理解され得るように、カメラサブシステムは、データをキャプチャし得、後続の処理のためにデータセットを他のサブシステムに伝送し得る。例えば、カメラサブシステムからのデータは、別のサブシステムによってそのように処理されるマルチチャネル画像の1つ以上のチャネルとして含まれ得る。
【0092】
レーダサブシステムは、環境内の物体の範囲、角度、および/または速度をキャプチャするための1つ以上のレーダセンサを含み得る。本開示の文脈において理解され得るように、レーダサブシステムは、データをキャプチャし得、後続の処理のためにデータセットを他のサブシステムに伝送し得る。例えば、レーダサブシステムからのデータは、別のサブシステムに提供されるマルチチャネル画像の1つ以上のチャネルとして含まれ得る。
【0093】
ソナーサブシステムは、1つ以上のスピーカまたは音響エミッタ、および環境内の物体から音響情報をキャプチャするため1つ以上のマイクロホン(マイクロホンアレイなど)を含み得るか、またはこれらとインターフェースし得る。追加的に、または代替で、そのようなソナーサブシステムは、様々な超音波変換器を備えてもよい。例えば、ソナーサブシステムは、超音波変換器に音のパルスを発し得、環境内の物体と関連付けられた場所および/または動き情報を判定するためのエコーを待機し得る。本開示の文脈において理解され得るように、ソナーサブシステムは、データをキャプチャし得、後続の処理のためにデータセットを他のサブシステムに伝送し得る。例えば、別のサブシステムは、より正確にオブジェクトをセグメント化するために、および/またはオブジェクトに関する情報を判定するために、または他の目的で、ソナーサブシステムから取得されたデータをLIDARサブシステムから取得されたデータと融合することができる。
【0094】
いくつかの事例では、LIDARサブシステム、カメラサブシステム、レーダサブシステム、および/またはソナーサブシステムは、データを組み合わせおよび/または合成するために、周囲分析システムの他のサブシステムに1つ以上のデータセットを提供し得る。
【0095】
周辺分析システム1203は、テストに部分的に使用するために、コンピュータシミュレーションアルゴリズムによって生成されたシミュレートデータのためのストレージをさらに含み得る。いくつかの事例では、シミュレートデータは、カメラデータ、LIDARデータ、レーダデータ、ソナーデータ、慣性データ、GPSデータなどの任意のタイプのシミュレートデータを含み得る。いくつかの事例では、周辺分析システム1203は、本明細書に記載されるように、動作を検証するため、および/または機械学習アルゴリズムを訓練するために、シミュレートデータに対して本明細書に記載される変換動作を修正、変換、および/または実施することができる。例えば、実験室の設定でいくつかの機能をテストするために、いくつかのサブシステムの性能をテストするために、シミュレートされたセンサデータ/信号が、実際のセンサデータであるかのようにサブシステムに供給され得る。いくつかの実装形態では、シミュレートデータは、自律型車両操作システム1202に送信されるメッセージ、イベント、およびシステムアラートを含み得る。
【0096】
位置特定およびマッピングサブシステム1214は、データをボクセルマップに変換するかまたはマッピングするための機能性を含み得る。例えば、位置特定およびマッピングサブシステム1214は、LIDARデータ、カメラデータ、レーダデータ、ソナーデータなどを受信し、個々のデータポイントを、環境内の三次元空間を表すボクセルマップにマッピングするか、変換するか、または関連付けることができる。ボクセル空間は、離散した小体積、例えばボクセルとして表される、自律型車両を取り囲む空間などの三次元環境の論理表現である。ボクセルマップは、ボクセル空間内のそれぞれのボクセルのデータまたは値を提供する。三次元環境の表現として、ボクセルマップは、メモリに記憶され、プロセッサによって操作され得る。
【0097】
いくつかの事例では、位置特定およびマッピングサブシステム1214は、ボクセル空間の長さ、幅、および高さを含む、ボクセル空間の寸法を画定することができる。さらに、位置特定およびマッピングサブシステム1214は、個々のボクセルのサイズを判定し得る。いくつかの事例では、ボクセルは、ボクセル空間全体にわたって均一なサイズおよび形状であり得るのに対して、いくつかの事例では、ボクセルのサイズおよび/または密度は、ボクセル空間内の相対的なロケーションに基づいて変化し得る。例えば、ボクセルのサイズは、ボクセル空間の原点または中心からのボクセルの距離に比例して増加し得るか、または減少し得る。追加的に、または代替で、そのような位置特定およびマッピングサブシステム1214は、仮想原点とボクセル空間の原点との間の変換を含んでもよい。いくつかの事例では、位置特定およびマッピングサブシステム1214は、データを含まないか、またはデータ閾値を下回る量のデータを含むボクセルが、ボクセルマップ内に存在する必要がなく、それらのボクセルの値を想定するかまたは無視することができる、スパースなボクセル空間を生成するための機能性を含み得る。そのような事例では、ボクセルマップは、オクトマップ、ボクセルハッシングなどとして編成され得る。いくつかの事例では、位置特定およびマッピングサブシステム1214は、ボクセル空間にマッピングされ、およびボクセルマップに記憶される際に、データをフィルタリングすることによって、ボクセルマップのデータ、またはボクセルマップを生成するために使用されるデータ内のノイズの量を減少させるための機能性を含み得る。例えば、フィルタリングは、ボクセル当たりの閾値量(例えば、ボクセルと関連付けられたLIDARデータポイントの数)を下回るか、または所定数のボクセル(例えば、近接ボクセルの数と関連付けられたLIDARデータポイントの数)を超えるデータを削除することを含み得る。いくつかの事例では、位置特定およびマッピングサブシステム1214は、データが経時的に集取されるにつれて、および/またはボクセル空間が対応する現実世界環境内で自律型車両がナビゲートすることに応答して、ボクセルマップを更新することができる。例えば、位置特定およびマッピングサブシステム1214は、自律型車両が環境においてナビゲートする際に、ボクセルマップに対して、データを追加し、および/またはデータを破棄し得る。
【0098】
いくつかの事例では、位置特定およびマッピングサブシステム1214は、ボクセルマップを初期化することができ、ボクセルのサイズ、配向、および範囲などの他のボクセル空間パラメータは、初期ボクセルマップを空の空間を表すものとして扱うことができ、位置特定およびマッピングサブシステム1214は、LIDARデータが経時的にキャプチャされると、オブジェクトの表現を構築することができる。他の事例では、位置特定およびマッピングサブシステム1214は、グローバルマップデータを使用してボクセルマップおよびボクセル空間パラメータを初期化することができる。
【0099】
追跡サブシステム1226は、1つ以上の動的オブジェクトの表示を受信し、かつオブジェクトを追跡するために追加の処理を実施するための機能性を含み得る。例えば、追跡サブシステム1226は、動的オブジェクトの速度を判定し得、および/または経時的に動的オブジェクトの軌跡を判定および記憶し得る。いくつかの事例では、追跡サブシステム1226は、オブジェクトの以前の動きに基づいて追跡されるオブジェクトの経路を予測し得る予測アルゴリズムを実施するようにプログラムされ得る。様々な例では、追跡サブシステム1226は、1つのオブジェクトが以前に検出されたオブジェクトと同じであるというデータ関連付けを実施する。いくつかの例では、追跡サブシステムは、オブジェクトの、範囲を維持し、速度を計算し、配向を判定する。
【0100】
計画サブシステム1228は、自律型車両の軌跡を判定するために、地面、静的オブジェクト、および/または動的オブジェクトのセグメント化されたデータおよび/または表示を受信するための機能性を含み得る。例えば、計画サブシステム1228は、地面を識別するセグメント化情報を受信し得、自律型車両が追従するための軌道を生成し得る。
【0101】
センサ較正サブシステム1230は、環境に関して判定されたセグメント化情報に少なくとも部分的に基づいて、1つ以上のセンサ1250を較正するための機能性を含み得る。例えば、LIDAR、カメラ、レーダ、および/またはソナーセンサまたはサブシステムからのセンサデータを使用して(例えば、同時位置特定およびマッピング(SLAM)を使用して)位置および/または配向を推定し得るのに対して、自律型車両はまた、環境内の自律型車両の位置を判定するための慣性測定ユニット(IMU)および/またはGPSユニットなどの追加のセンサも含み得る。いくつかの事例では、IMUは、自律型車両が第1の位置にあることを示し得るのに対して、本明細書で議論されるLIDARデータの分析は、車両が第1の位置とは異なる第2の位置にあることを示す。センサ較正サブシステム1230は、位置の差を判定し得、1つ以上のセンサを調整するかまたは較正して、自律型車両の位置、または1つ以上のセンサ内的特性もしくはセンサ外的特性を更新し得る。
【0102】
例えば、カメラセンサの特性は、焦点距離、画像中心、歪みパラメータ、シャッター速度、分解能、およびスペクトルを含み得る。レーダの特性は、出力電力および入力感度を含み得る。LIDARセンサの特性は、分解能およびサンプリング速度を含み得る。例示的なニューラルネットワークは、入力データを、一連の接続されたレイヤを通過させて、出力を生成し得る。ニューラルネットワークの一例は、畳み込みニューラルネットワーク、またはCNNを含み得る。CNN内の各レイヤはまた、別のCNNを含み得るか、またはいくつかのレイヤを含み得る。本開示の文脈において理解され得るように、ニューラルネットワークは、学習されたパラメータに基づいて出力が生成されるようなアルゴリズムの広範なクラスを指し得る機械学習を利用し得る。
【0103】
ニューラルネットワークの文脈において議論されるが、多くのタイプの機械学習は、本開示と一貫して使用され得る。例えば、機械学習アルゴリズムは、限定されないが、回帰アルゴリズム(例えば、通常の最小二乗回帰(OLSR)、線形回帰、ロジスティック回帰、段階的回帰、多変量適応回帰スプライン(MARS)、ローカルに推定される散布図平滑化(LOESS))、インスタンスベースのアルゴリズム(例えば、リッジ回帰、最小絶対収縮および選択演算子(LASSO)、弾性ネット、最小角度回帰(LARS))、決定木アルゴリズム(例えば、分類および回帰木(CART)、反復二分計3(ID3)、カイ二乗自動相互作用検出(CHAID)、決定株、条件付き決定木)、ベイジアンアルゴリズム(例えば、ナイーブベイズ、ガウスナイーブベイズ、多項ナイーブベイズ、平均1依存性推定器(AODE)、ベイジアン信念ネットワーク(BNN)、ベイジアンネットワーク)、クラスタリングアルゴリズム(例えば、k平均、kメディアン、期待値最大化(EM)、階層クラスタリング)、アソシエーションルール学習アルゴリズム(例えば、パーセプトロン、バックプロパゲーション、ホップフィールドネットワーク、動径基底関数ネットワーク(RBFN))、深層学習アルゴリズム(例えば、深層ボルツマンマシン(DBM)、深層信念ネットワーク(DBN)、畳み込みニューラルネットワーク(CNN)、積層オートエンコーダ)、次元削減アルゴリズム(例えば、主成分分析(PCA)、主成分回帰(PCR)、部分最小二乗回帰(PLSR)、サモンマッピング、多次元尺度構成法(MDS)、射影追跡、線形判別分析(LDA)、混合判別分析(MDA)、二次判別分析(QDA)、フレキシブル判別分析(FDA))、アンサンブルアルゴリズム(例えば、ブースティング、ブートストラップアグリゲーティング(バッギング)、AdaBoost、スタック汎化(ブレンディング)、勾配ブースティングマシン(GBM)、勾配ブースト回帰木(GBRT)、ランダムフォレスト)、SVM(サポートベクターマシン)、教師あり学習、教師なし学習、半教師あり学習などを含み得る。
【0104】
図12に描示される環境は、ストレージ、1つ以上のプロセッサ(複数可)、メモリ、および場合によってはオペレーティングシステムを含む1つ以上のコンピュータシステムで実装され得る。
【0105】
本明細書に記載されるシステムおよび方法は、ソフトウェアまたはハードウェア、またはそれらの任意の組み合わせで実装できる。本明細書に記載されるシステムおよび方法は、互いに物理的または論理的に分離されてもされなくてもよい1つ以上のコンピューティングデバイスを使用して実装できる。方法は、オンプレミスハードウェア、オンプレミス仮想システム、またはホスト型プライベートインスタンスのいずれかとして配置されたコンポーネントによって、実施され得る。追加的に、本明細書に記載される方法の様々な態様を、組み合わせるか、または融合して、他の機能にしてもよい。
【0106】
システムおよび方法を実装するための例示的な環境およびコンピュータ化システムは、本明細書に記載される方法の一部またはすべてを特に実施するように構成できるプロセッサまたはコンピュータシステムを含み得る。いくつかの例では、方法は、1つ以上のコンピュータまたはプロセッサによって、部分的または完全に自動化できる。本明細書に記載されるシステムおよび方法は、ハードウェア、ファームウェア、および/またはソフトウェアのいずれかの組み合わせを使用して、実装され得る。本明細書に記載される本システムおよび方法(またはそれらの任意の部分(複数可)もしくは機能(複数可))は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組み合わせを使用して実装され得、1つ以上のコンピュータシステムまたは他の処理システムで実装され得る。いくつかの例では、例示されるシステム要素を組み合わせて単一のハードウェアデバイスにするか、または複数のハードウェアデバイスに分離し得る。複数のハードウェアデバイスが使用される場合、ハードウェアデバイスは、互いに近接して、または互いにリモートで、物理的に位置し得る。記載および例示される方法の例は、例示的であり、限定的ではないことが意図されている。例えば、方法のステップのいくつかまたはすべてを、異なる例で組み合わせ、再配置し、および/または省略し得る。
【0107】
一例では、本明細書に記載されるシステムおよび方法は、本明細書に記載される機能性を実行することができる1つ以上のコンピュータシステムに向けられ得る。例示的なコンピューティングデバイスは、限定されないが、OS X(登録商標)、iOS(登録商標)、Linux(登録商標)、Android(登録商標)、およびMicrosoft(登録商標)Windows(登録商標)などの任意のオペレーティングシステムを実行するパーソナルコンピュータ(PC)システムであり得る。しかしながら、本明細書に記載されるシステムおよび方法は、これらのプラットフォームに限定されない場合がある。代わりに、本明細書に記載されるシステムおよび方法は、任意の適切なオペレーティングシステムを実行する任意の適切なコンピュータシステム上に実装され得る。限定されないが、コンピューティングデバイス、通信デバイス、携帯電話、スマートフォン、電話デバイス、パーソナルデジタルアシスタント(PDA)、パーソナルコンピュータ(PC)、携帯型PC、インタラクティブテレビ(iTV)、デジタルビデオレコーダ(DVD)、クライアントワークステーション、シンクライアント、シッククライアント、プロキシサーバ、ネットワーク通信サーバ、リモートアクセスデバイス、クライアントコンピュータ、サーバコンピュータ、ルータ、ウェブサーバ、データ、メディア、オーディオ、ビデオ、電話、またはストリーミングテクノロジーサーバなどの、本明細書に記載されるシステムおよび方法の他の構成要素もまた、コンピューティングデバイスを使用して実装され得る。サービスは、例えば、限定されないが、インタラクティブテレビ(iTV)、ビデオオンデマンドシステム(VOD)を使用して、およびデジタルビデオレコーダ(DVR)または他のオンデマンド視聴システムを介して、オンデマンドで提供され得る。
【0108】
システムは、1つ以上のプロセッサを含み得る。プロセッサ(複数可)は、限定されないが、通信バス、クロスオーバーバー、またはネットワークなどの通信インフラストラクチャに接続され得る。プロセスおよびプロセッサは、同じ物理ロケーションに位置する必要がない。言い換えれば、プロセスは、例えばLANまたはWAN接続を介して、1つ以上の地理的に遠いプロセッサで実行することができる。コンピューティングデバイスは、グラフィックス、テキスト、および他のデータを、ディスプレイユニット上に表示するために、通信インフラストラクチャから転送し得るディスプレイインターフェースを含み得る。
【0109】
コンピュータシステムはまた、限定されないが、メインメモリ、ランダムアクセスメモリ(RAM)、および二次メモリなどを含み得る。二次メモリは、例えば、ハードディスクドライブ、および/またはコンパクトディスクドライブCD-ROMなどのリムーバブルストレージドライブを含み得る。リムーバブルストレージドライブは、リムーバブルストレージユニットから読み取り、および/またはリムーバブルストレージユニットに書き込まれ得る。理解され得るように、リムーバブルストレージユニットは、コンピュータソフトウェアおよび/またはデータが記憶されたコンピュータ使用可能記憶媒体を含み得る。いくつかの例では、マシンアクセス可能媒体は、コンピュータによってアクセス可能なデータを記憶するために使用される任意のストレージデバイスを指し得る。マシンアクセス可能媒体の例としては、例えば、限定されないが、磁気ハードディスク、フロッピーディスク、コンパクトディスク読み取り専用メモリ(CD-ROM)またはデジタル多目的ディスク(DVD)などの光ディスク、磁気テープ、および/またはメモリチップなどが挙げられ得る。
【0110】
プロセッサはまた、データを記憶するための1つ以上のデータストレージデバイスを含み得るか、またはこれらのデータ記憶デバイスと通信するために動作可能に結合され得る。そのようなデータストレージデバイスは、非限定的な例として、磁気ディスク(内部ハードディスクおよびリムーバブルディスクを含む)、磁気光ディスク、光ディスク、読み取り専用メモリ、ランダムアクセスメモリ、および/またはフラッシュストレージを含むことができる。コンピュータプログラム命令およびデータを有形に具現化するのに好適なストレージデバイスはまた、例えば、EPROM、EEPROM、およびフラッシュメモリデバイスなどの半導体メモリデバイス、内部ハードディスクおよびリムーバブルディスクなどの磁気ディスク、磁気光ディスク、ならびにCD-ROMおよびDVD-ROMディスクを含む、すべての形態の不揮発性メモリを含むことができる。プロセッサおよびメモリは、ASIC(特定用途向け集積回路)、またはFPGA(フィールドプログラマブルゲートアレイ)によって補完され得るか、または組み込まれ得る。
【0111】
処理システムは、コンピュータ化されたデータストレージシステムと通信することができる。データストレージシステムは、MySQL(商標)または他のリレーショナルデータベースなどの非リレーショナルデータストアまたはリレーショナルデータストアを含むことができる。他の物理データベースタイプおよび論理データベースタイプが、使用され得る。データストアは、Microsoft SQL Server(商標)、Oracle(商標)、IBM DB2(商標)、SQLITE(商標)、またはリレーショナルまたは他のいずれかの、任意の他のデータベースソフトウェアなどのデータベースサーバであり得る。データストアは、構文タグを識別する情報、および構文タグに対して操作するために必要とされる任意の情報を記憶し得る。いくつかの例では、処理システムは、オブジェクト指向プログラミングを使用し得、データをオブジェクトに記憶し得る。これらの例では、処理システムは、オブジェクトリレーショナルマッパー(ORM)を使用して、データオブジェクトをリレーショナルデータベースに記憶し得る。本明細書に記載されるシステムおよび方法は、任意の数の物理データモデルを使用して実装することができる。一例では、リレーショナルデータベース管理システム(RDBMS)を使用することができる。これらの例では、RDBMS内のテーブルは、座標を表す列を含むことができる。テーブルは、テーブルの間の事前に定義された関係を有し得る。テーブルはまた、座標と関連付けられた付加事項を有することもできる。
【0112】
代替例では、二次メモリは、コンピュータプログラムまたは他の命令をコンピュータシステムにロードできるようにするための他の類似のデバイスを含み得る。そのようなデバイスは、例えば、リムーバブルストレージユニットおよびインターフェースを含み得る。そのようなものの例としては、プログラムカートリッジおよびカートリッジインターフェース(例えば、限定されないが、ビデオゲームデバイスに見出されるものなど)、リムーバブルメモリチップ(例えば、限定されないが、消去可能なプログラマブル読み取り専用メモリ(EPROM)、またはプログラマブル読み取り専用メモリ(PROM)および関連付けられたソケットなど)、ならびにソフトウェアおよびデータがリムーバブルストレージユニットからコンピュータシステムに転送されることを可能にし得る他のリムーバブルストレージユニットおよびインターフェースが挙げられ得る。
【0113】
コンピューティングデバイスとしてまた、限定されないが、マイクロホンなどの音声入力デバイス、タッチスクリーン、カメラなどのジェスチャ認識デバイス、他のナチュラルユーザインターフェース、マウスまたはデジタイザなどの他のポインティングデバイス、ならびにキーボードまたは他のデータ入力デバイスも挙げられ得る。コンピューティングデバイスとしてまた、限定されないが、ディスプレイ、およびディスプレイインターフェースなどの出力デバイスも挙げられ得る。コンピューティングデバイスとして、限定されないが通信インターフェース、ケーブル、および通信経路などの、入力/出力(I/O)デバイスが挙げられ得る。これらのデバイスとして、限定されないが、ネットワークインターフェースカード、およびモデムが挙げられ得る。通信インターフェース(複数可)は、コンピュータシステムと1つ以上の外部デバイスとの間でソフトウェアおよびデータを転送することを可能にし得る。
【0114】
1つ以上の例では、コンピューティングデバイスは、自動車システムに動作可能に結合され得る。そのような自動車システムは、手動で操作されるか、半自律型であるか、または完全自律型であるかのいずれかであり得る。そのような例では、入力デバイスおよび出力デバイスとして、限定されないが加速度、ブレーキ、およびステアリングなどの、自動車機能を制御するための1つ以上の画像キャプチャデバイス、コントローラ、マイクロコントローラ、および/または他のプロセッサが挙げられ得る。さらに、そのような例での通信インフラストラクチャとしてまた、コントローラエリアネットワーク(CAN)バスが挙げられ得る。
【0115】
1つ以上の例では、コンピューティングデバイスは、任意のマシンベースのビジョンシステムに動作可能に結合され得る。例えば、そのようなマシンベースのビジョンシステムとして、限定されないが、手動で操作される、半自律型、または完全自律型の産業または農業用ロボット、家庭用ロボット、検査システム、セキュリティシステムなどが挙げられる。すなわち、本明細書に記載される例は、1つの特定の文脈に限定されず、マシンビジョンを利用する任意の用途に適用可能であり得る。
【0116】
1つ以上の例では、本例は、コンピュータネットワーク(複数可)の環境で実践できる。ネットワークは、プライベートネットワーク、またはパブリックネットワーク(例えば、以下で記載されるように、インターネット)、またはその両方の組み合わせを含むことができる。ネットワークは、ハードウェア、ソフトウェア、またはその両方の組み合わせを含み得る。
【0117】
電気通信指向の見方から、ネットワークは、通信施設によって相互接続されたハードウェアノードであって、1つ以上のプロセス(ハードウェア、ソフトウェア、またはそれらの組み合わせ)が各そのようなノードで機能するハードウェアノードのセットとして記述することができる。プロセスは、プロセス間通信経路を使用して、プロセス間の通信経路を介して、相互通信し、および互いに情報を交換することができる。これらの経路では、適切な通信プロトコルが、使用される。操作コマンド(遠隔操作)は、セルラー、赤外線、無線、または無線ネットワークを介してシステムによって受信され得る。
【0118】
本例に従う例示的なコンピュータおよび/または通信ネットワーク環境は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアとの組み合わせを含み得るノードを含み得る。ノードは、通信ネットワークを介して相互接続され得る。各ノードは、ノードに組み込まれたプロセッサによって実行可能な1つ以上のプロセスを含み得る。例えば、単一のプロセスが、複数のプロセッサによって実行され得るか、または複数のプロセスが、単一のプロセッサによって実行され得る。追加的に、ノードの各々は、ネットワークと外部世界との間のインターフェースポイントを提供し得、サブネットワークの集合体を組み込み得る。
【0119】
一例では、プロセスは、任意の通信プロトコルを介した通信をサポートするプロセス間通信経路を介して互いに通信し得る。経路は、順次にまたは並列に、連続的にまたは断続的に、機能し得る。経路は、多くのコンピュータによって使用される標準的な並列命令セットに加えて、通信ネットワークに関して本明細書に記載される通信規格、プロトコル、または技術のいずれかを使用することができる。
【0120】
ノードは、処理機能を実施することができる任意のエンティティを含み得る。例とともに使用することができるそのようなノードの例として、記載されるように、プロセッサの集合体に接続された、コンピュータ(パーソナルコンピュータ、ワークステーション、サーバ、またはメインフレームなど)、ハンドヘルド無線デバイスおよび有線デバイス(パーソナルデジタルアシスタント(PDA)、処理能力を有するモデム携帯電話、BlackBerry(登録商標)デバイスを含む無線電子メールデバイスなど)、文書処理デバイス(スキャナ、プリンタ、ファクシミリマシン、または多機能文書マシンなど)、または複合エンティティ(ローカルエリアネットワークまたは広域ネットワークなど)が挙げられる。例えば、本開示の文脈では、ノード自体は、ワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)、プライベートネットワーク(仮想プライベートネットワーク(VPN)など)、またはネットワークの集合体であり得る。
【0121】
ノード間の通信は、通信ネットワークによって可能にされ得る。ノードは、連続的または断続的に通信ネットワークと接続され得る。例として、本開示の文脈では、通信ネットワークは、十分な帯域幅および情報セキュリティを提供するデジタル通信インフラストラクチャであり得る。
【0122】
通信ネットワークは、任意のタイプの規格、プロトコル、または技術を使用して、任意の周波数で、有線通信能力、無線通信能力、またはその両方の組み合わせを含むことができる。加えて、本例では、通信ネットワークは、プライベートネットワーク(例えば、VPN)またはパブリックネットワーク(例えば、インターネット)であり得る。
【0123】
通信ネットワークによって使用される例示的な無線プロトコルおよび技術の非包括的なリストとして、Bluetooth(登録商標)、汎用パケット無線サービス(GPRS)、セルラーデジタルパケットデータ(CDPD)、モバイルソリューションプラットフォーム(MSP)、マルチメディアメッセージング(MMS)、無線アプリケーションプロトコル(WAP)、コード分割多重アクセス(CDMA)、ショートメッセージサービス(SMS)、無線マークアップ言語(WML)、ハンドヘルドデバイスマークアップ言語(HDML)、無線のためのバイナリーランタイム環境(BREW)、無線アクセスネットワーク(RAN)、およびパケット交換コアネットワーク(PS-CN)が挙げられ得る。また、様々な世代無線技術も挙げられる。通信ネットワークによって使用される主に有線プロトコルおよび技術の例示的な非包括的なリストとして、非同期転送モード(ATM)、拡張された内部ゲートウェイルーティングプロトコル(EIGRP)、フレームリレー(FR)、高レベルデータリンク制御(HDLC)、インターネット制御メッセージプロトコル(ICMP)、内部ゲートウェイルーティングプロトコル(IGRP)、インターネットワークパケットエクスチェンジ(IPX)、ISDN、ポイントツーポイントプロトコル(PPP)、伝送制御プロトコル/インターネットプロトコル(TCP/IP)、ルーティング情報プロトコル(RIP)、およびユーザデータグラムプロトコル(UDP)が挙げられる。当業者が認識するように、任意の他の知られているか、または予想される無線もしくは有線のプロトコルおよび技術を使用することができる。
【0124】
本開示の例は、本明細書における動作を実施するための装置を含み得る。装置は、所望の目的で特別に構築され得るか、または装置は、デバイスに記憶されたプログラムによって選択的に作動されるかまたは再構成される汎用デバイスを含み得る。
【0125】
1つ以上の例では、本例は、マシン実行可能命令において具現化される。これらの命令を使用して、命令とともにプログラムされた処理装置、例えば、汎用または専用のプロセッサに、本開示のステップを実施させることができる。代替的に、本開示のステップは、ステップを実施するためのハードワイヤードロジックを包含する特定のハードウェアコンポーネント、またはプログラムされたコンピュータコンポーネントおよびカスタムハードウェアコンポーネントの任意の組み合わせによって実施することができる。例えば、本開示は、上記に概説したように、コンピュータプログラム製品として提供できる。この環境では、これらの例は、命令が記憶されたマシン可読媒体を含むことができる。命令を使用して、本例によるプロセスまたは方法を実施するための任意のプロセッサ(複数可)(または他の電子デバイス)をプログラムすることができる。加えて、本開示を、コンピュータプログラム製品上にダウンロードおよび記憶することもできる。ここで、プログラムは、通信リンク(例えば、モデムまたはネットワーク接続)を介して、搬送波または他の伝播媒体において具現化されるデータ信号によって、リモートコンピュータ(例えば、サーバ)から要求コンピュータ(例えば、クライアント)に転送され得、最終的には、そのような信号は、後続の実行のためにコンピュータシステムに記憶され得る。
【0126】
これらの方法は、コンピュータまたは任意の命令実行システムによって、またはそれに関連して使用するためのプログラムコードを提供するコンピュータ使用可能可読媒体またはコンピュータ可読記憶媒体からアクセス可能なコンピュータプログラム製品に実装することができる。コンピュータ使用可能記憶媒体またはコンピュータ可読記憶媒体は、コンピュータまたは命令実行システム、装置、またはデバイスによって、またはそれに関連して使用するためにプログラムを包含するかまたは記憶することができる任意の装置であり得る。
【0127】
対応するプログラムコードを記憶しおよび/または実行するのに好適なデータ処理システムは、メモリ素子などのコンピュータ化されたデータストレージデバイスに直接的または間接的に結合された少なくとも1つのプロセッサを含むことができる。入力/出力(I/O)デバイス(限定されないが、キーボード、ディスプレイ、ポインティングデバイスなどを含む)が、システムに結合できる。ネットワークアダプタもまた、システムに結合されて、介在するプライベートネットワークまたはパブリックネットワークを通して他のデータ処理システムまたはリモートプリンタまたはストレージデバイスに、データ処理システムが結合されるようにすることを可能にし得る。ユーザとの対話を提供するために、これらの特徴は、LCD(液晶ディスプレイ)などのディスプレイデバイス、またはユーザに情報を表示するための別のタイプのモニタ、ならびにキーボード、およびユーザがコンピュータに入力を提供することができるマウスまたはトラックボールなどの入力デバイスを有するコンピュータ上に、実装することができる。
【0128】
コンピュータプログラムは、コンピュータ内で直接的または間接的に使用できる命令のセットであり得る。本明細書に記載されるシステムおよび方法は、CUDA、OpenCL、Flash(登録商標)、JAVA(登録商標)、C++、C、C#、Python、Visual Basic(登録商標)、JavaScript(登録商標)PHP、XML、HTMLなどのプログラミング言語、またはコンパイル言語もしくは解釈言語を含むプログラミング言語の組み合わせを使用して実装することができ、スタンドアロンプログラムとして、またはコンピューティング環境での使用に好適なサブシステム、コンポーネント、サブルーチン、または他のユニットとして、任意の形態でデプロイすることができる。ソフトウェアは、限定されないが、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むことができる。SOAP/HTTPなどのプロトコルは、プログラミングサブシステム間のインターフェースを実装する際に使用され得る。本明細書に記載されるコンポーネントおよび機能性は、限定されないが、Microsoft(登録商標) Windows(登録商標)、Apple(登録商標)Mac(登録商標)、iOS(登録商標)、Unix(登録商標)/X-Windows(登録商標)、Linux(登録商標)、VMS(登録商標)、Android、QNXなどの異なるバージョンを含む、ソフトウェア開発に好適な任意のプログラミング言語を使用して、仮想化環境または非仮想化環境で実行される任意のデスクトップオペレーティングシステム上に実装され得る。このシステムは、Ruby on Railsなどのウェブアプリケーションフレームワークを使用して実装され得る。
【0129】
命令のプログラムの実行のための好適なプロセッサとしては、限定されないが、汎用および専用のマイクロプロセッサ、ならびに任意の種類のコンピュータの単独のプロセッサ、または複数のプロセッサもしくはコアのうちの1つが挙げられる。プロセッサは、読み取り専用メモリ、ランダムアクセスメモリ、その両方、または本明細書に記載されるデータストレージデバイスの任意の組み合わせなどのコンピュータ化データストレージデバイスから命令およびデータを受信および記憶し得る。プロセッサは、電子デバイスの動作および性能を制御するために動作可能な任意の処理回路機構または制御回路機構を含み得る。
【0130】
本明細書に記載されるシステム、サブシステム、および方法は、ソフトウェアまたはハードウェア要素の任意の組み合わせを使用して実装することができる。本明細書に記載されるシステム、サブシステム、および方法は、単独でまたは他のものと組み合わせて動作する1つ以上の仮想マシンを使用して実装できる。任意の適用可能な仮想化ソリューションは、物理コンピューティングマシンプラットフォームをカプセル化して、ハードウェアコンピューティングプラットフォームまたはホスト上で実行される仮想化ソフトウェアの制御下で実行される仮想マシンにするために使用できる。仮想マシンは、仮想システムハードウェアとゲストオペレーティングシステムソフトウェアとの両方を有することができる。
【0131】
本明細書に記載されるシステムおよび方法は、データサーバなどのバックエンドコンポーネントを含むコンピュータシステム、またはアプリケーションサーバもしくはインターネットサーバなどのミドルウェアコンポーネントを含むコンピュータシステム、またはグラフィカルユーザインターフェースもしくはインターネットブラウザを有するクライアントコンピュータなどのフロントエンドコンポーネントを含むコンピュータシステム、またはそれらの任意の組み合わせに実装できる。システムのコンポーネントは、通信ネットワークなどの任意の形態または媒体のデジタルデータ通信によって接続できる。通信ネットワークの例としては、例えば、LAN、WAN、ならびにインターネットを形成するコンピュータおよびネットワークが挙げられる。
【0132】
本開示の1つ以上の例は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースまたはプログラマブル家電製品、ミニコンピュータ、メインフレームコンピュータなどを含む、他のコンピュータシステム構成で実践され得る。本明細書に記載されるシステムおよび方法はまた、タスクがネットワークを通してリンクされたリモート処理デバイスによって実施される分散コンピューティング環境でも実践され得る。
【0133】
用語「コンピュータプログラム媒体」および「コンピュータ可読媒体」は、限定されないが、リムーバルストレージドライブ、ハードディスクドライブにインストールされたハードディスクなどの媒体を一般に指すために使用され得る。これらのコンピュータプログラム製品は、コンピュータシステムにソフトウェアを提供し得る。本明細書に記載されるシステムおよび方法は、そのようなコンピュータプログラム製品を対象とし得る。
【0134】
「一実施形態」、「実施形態」、「例示的な実施形態」、「様々な実施形態」などへの言及は、本開示の実施形態(複数可)が特定の特徴、構造、または特性を含み得るが、あらゆる実施形態が必ずしもこの特定の特徴、構造、または特性を含むわけではないことを示し得る。さらに、「一実施形態では」または「例示的な実施形態では」という語句を繰り返して使用することは、必ずしも同じ実施形態を指すとは限らないが、そうであってもよい。同様に、「インスタンス」への言及は、本開示の様々なインスタンス(複数可)が特定の特徴、構造、または特性を含み得るが、あらゆるインスタンスが必ずしもこの特定の特徴、構造、または特性を含むわけではないことを示し得る。さらに、「いくつかの事例では」という語句を繰り返して使用することは、必ずしも同じ事例を指すとは限らないが、そうであってもよい。
【0135】
アルゴリズムは、一般に、所望の結果につながる、首尾一貫した一連の行為または動作であると見なされ得る。これらは、物理量の物理的操作を含む。通常、必ずしもそうではないが、これらの量は、記憶され、転送され、組み合わされ、比較され、および他の方法で操作されることが可能な電気信号または磁気信号の形態をとる。主に一般的な用例という理由で、これらの信号をビット、値、要素、記号、文字、用語、数字などと呼ぶことは、時に便利であることがわかっている。しかしながら、これらおよび同様の用語のすべてが、適切な物理量と関連付けられ、かつこれらの量に適用される単なる便利な標示であることを理解されたい。
【0136】
具体的に別途述べない限り、明細書全体を通して、「処理する」、「コンピューティング」、「計算する」、「判定する」などの用語は、コンピュータもしくはコンピューティングシステム、または同様の電子コンピューティングデバイスのアクションおよび/またはプロセスであって、コンピューティングシステムのレジスタおよび/またはメモリ内の、電子的などの物理的な量として表されるデータを操作および/または変換して、コンピューティングシステムのメモリ、レジスタ、または他のそのような情報ストレージ、伝送、またはディスプレイデバイス内の物理的な量として同様に表される他のデータにするアクションおよび/またはプロセスを指すことが、理解され得る。
【0137】
同様に、「プロセッサ」という用語は、レジスタおよび/またはメモリからの電子データを処理し、かつその電子データをレジスタおよび/またはメモリに記憶され得る他の電子データに変換する任意のデバイスまたはデバイスの一部を指し得る。非限定的な例として、「プロセッサ」は、中央処理ユニット(CPU)またはグラフィック処理ユニット(GPU)であり得る。「コンピューティングプラットフォーム」は、1つ以上のプロセッサを備え得る。本明細書で使用される場合、「ソフトウェア」プロセスは、例えば、タスク、スレッド、およびインテリジェントエージェントなどの、経時的に作業を実施するソフトウェアおよび/またはハードウェアエンティティを含み得る。また、各プロセスは、順次にまたは並列に、連続的にまたは断続的に命令を実行するための複数のプロセスを指し得る。「システム」および「方法」という用語は、システムが1つ以上の方法を具現化し得、かつ方法がシステムと見なされ得る限り、本明細書で互換的に使用される。
【0138】
本文書では、サブシステム、コンピュータシステム、またはコンピュータ実装マシンへのアナログデータまたはデジタルデータを取得すること、入手すること、受信すること、または入力することについて、言及され得る。アナログデータおよびデジタルデータを取得するプロセス、入手するプロセス、受信するプロセス、または入力するプロセスは、データを関数呼び出しのパラメータとして受信すること、またはデータをアプリケーションプログラミングインターフェースへの呼び出しとして受信することによるなどの、多様な方法で達成できる。いくつかの実装形態では、アナログデータまたはデジタルデータを取得するプロセス、入手するプロセス、受信するプロセス、または入力するプロセスは、シリアルインターフェースまたは並列インターフェースを介してデータを転送することによって達成できる。別の実装形態では、アナログデータまたはデジタルデータを取得するプロセス、入手するプロセス、受信するプロセス、または入力するプロセスは、コンピュータネットワークを介してデータを提供エンティティから入手エンティティに転送することによって達成できる。アナログデータまたはデジタルデータを提供すること、出力すること、伝送すること、送信すること、または提示することにも言及され得る。様々な例では、アナログデータまたはデジタルデータを提供するプロセス、出力するプロセス、伝送するプロセス、送信するプロセス、または提示するプロセスは、データを、関数呼び出しの入力パラメータまたは出力パラメータ、アプリケーションプログラミングインターフェースまたはプロセス間通信機構のパラメータとして転送することによって達成できる。
【0139】
1つ以上の実施形態が記載されているが、それらの様々な改変物、追加物、置換物、および均等物は、本開示の範囲内に含まれる。
【0140】
実施形態の説明では、本明細書の一部を形成する添付の図面を参照し、これらは例示として、特許請求される主題の特定の実施形態を示す。他の実施形態が使用され得ること、および構造変更などの変更または改変が行われ得ることを理解されたい。そのような実施形態、変更、または改変は、意図された特許請求される主題に関する範囲から必ずしも逸脱するものではない。本明細書のステップは、特定の順序で提示され得るが、いくつかの場合、記載されるシステムおよび方法の機能を変更することなく、特定の入力が異なる時間に、または異なる順序で提供されるように、順序が変更されてもよい。開示される手順はまた、異なる順序でも実行され得る。追加的に、本明細書に存在する様々な計算が、開示された順序で実施される必要はなく、計算の代替順序を使用した他の実施形態が容易に実装され得る。並べ替えられることに加えて、計算がまた、同じ結果を有する下位の計算に分解され得る。いくつかの例では、示される動作は、並列にかつ実質的に同時に、実施され得る。一般に、一連のブロックが示され得るが、示されるプロセスを実施するためにすべてのステップが必要とされ得るわけではない。
【0141】
上記の議論は、記載される技術の例示的な実装形態を明記しているが、他のアーキテクチャが、記載される機能性を実装するために使用され得、本開示の範囲内であることが意図される。さらに、具体的な役割分担が議論の目的で上記に定義されているが、様々な機能および役割が、状況に応じて異なる方法で配分および分割され得る。
【0142】
さらに、主題は、構造的特徴および/または方法論的行為に特有の言語で記載されてきたが、添付の特許請求の範囲で定義される主題は、記載される特定の特徴または行為に必ずしも限定されないことを理解されたい。むしろ、特定の特徴および行為は、特許請求の範囲を実装する例示的な形態として開示される。
【0143】
例示的な条項
本開示の実施形態は、以下の条項を考慮して記載され得る。
1.システムであって、1つ以上のプロセッサと、命令を記憶するメモリと、を備え、命令が、1つ以上のプロセッサによって実行されたとき、システムに、自律型車両の1つ以上のサブシステムによって生成されたデータ、タイムスタンプ、およびトピックを含むメッセージを受信することと、1つ以上のデータストアの第1のディレクトリに、複数のファイルを記憶することであって、複数のファイルのうちの第1のファイルが、データの少なくとも一部分を含み、かつ階層に従って第1のディレクトリの第1のサブディレクトリに記憶され、階層が、タイムスタンプ、トピック、または識別子に少なくとも部分的に基づく、記憶することと、1つ以上のデータストアの第2のディレクトリに、複数の第2のファイルを記憶することであって、複数の第2のファイルのうちの第2のファイルが、データの部分に少なくとも部分的に基づき、かつ階層に従って第2のディレクトリの第2のサブディレクトリに記憶される、記憶することと、要求を受信することであって、要求が、要求されたトピック、開始時間、または終了時間を含む、受信することと、要求されたトピック、開始時間、または終了時間に少なくとも部分的に基づいて、第1のファイルまたは第2のファイルのうちの1つ以上を提供することと、を行わせる、システム。
2.第1のファイルまたは第2のファイルのうちの1つ以上を提供することが、第1のファイルまたは第2のファイルが、要求されたトピックと関連付けられているかどうか、およびディレクトリプリファレンスを示すプロファイルに少なくとも部分的に基づいている、条項1に記載のシステム。
3.第1のディレクトリが、第1のアクセス許可と関連付けられ、第2のディレクトリが、第1のアクセス許可よりも制約的な第2のアクセス許可と関連付けられ、要求が、要求許可レベルと関連付けられ、第1のファイルまたは第2のファイルのうちの1つ以上を提供することが、第1のアクセス許可、第2のアクセス許可、および要求許可レベルに少なくとも部分的に基づいて第1のファイルを提供することを含む、条項1または2に記載のシステム。
4.第1のトピックが、自律型車両の第1のサブシステムに関連し、第2のトピックが、自律型車両の第2のサブシステムに関連し、要求が、自律型車両の第1のサブシステムからのデータ、および開始時間と終了時間との間の自律型車両の第2のサブシステムからのデータに少なくとも部分的に基づいて判定された、バリアントセットのデータの要求を含む、条項1~3のいずれかに記載のシステム。
5.第1のディレクトリが、1つ以上のデータストア上の第1のストレージロケーションを示す第1のルートディレクトリを含み、第2のディレクトリが、1つ以上のデータストア上の第2のストレージロケーションを示す第2のルートディレクトリを含み、第1のストレージロケーションが、第2のストレージロケーションとは相違する、条項1~4のいずれかに記載のシステム。
6.第1のストレージロケーションが、クイックアクセスのために最適化されたローカルデータストア内に位置する、条項5に記載のシステム。
7.第1のファイルおよび第2のファイルが、閾値サイズ未満である、条項1~6のいずれかに記載のシステム。
8.方法であって、第1のデバイスデータを受信することであって、第1のデバイスデータが、複数のファイルからなり、一定の期間中にデバイスの1つ以上のコンポーネントによって生成されたメッセージデータに対応する、受信することと、1つ以上のデータストア上に、かつ第1のロケーションに、階層データ構造に従って第1の複数のファイルを記憶することであって、階層データ構造が、メッセージ時間、データ識別子、またはデバイス識別子に少なくとも部分的に基づく、記憶することと、第2の複数のファイルを含む第2のデバイスデータを取得することであって、第2のデバイスデータが、期間と関連付けられる、取得することと、階層データ構造に従って、1つ以上のデータストア上の第2のロケーションに第2のデバイスデータを記憶することと、を含む、方法。
9.第2のデバイスデータが、第1の複数のファイルから導出されたデータを含む、条項8に記載の方法。
10.第1の複数のファイルのうちのファイルが、メッセージデータの複数のメッセージからなり、ファイルが、閾値サイズ未満である、条項8または9に記載の方法。
11.複数のメッセージのうちのメッセージが、メッセージタイプ、メッセージが作成されたタイムスタンプ、およびメッセージ番号を含む、条項10に記載の方法。
12.第1の複数のファイルが、第1のデータストアに記憶され、第2の複数のファイルが、第2の複数のファイルのレイテンシまたは使用頻度に基づいて第2のデータストアに記憶される、条項8~11のいずれかに記載の方法。
13.第1のロケーションが、第1のアクセス許可と関連付けられ、第2のロケーションが、第2のアクセス許可と関連付けられ、第2のアクセス許可が、第1のアクセス許可よりも制約的である、条項8~12のいずれかに記載の方法。
14.要求を受信することであって、要求が、要求データ識別子、開始時間、終了時間、および要求許可レベルを含む、受信することと、要求、第1のアクセス許可、第2のアクセス許可、およびプロファイルに少なくとも部分的に基づいて、第1の複数のファイルのうちの第1のファイル、または第2の複数のファイルのうちの第2のファイルを伝送することと、をさらに含み、プロファイルが、要求データ識別子に少なくとも部分的に基づいて、第1の複数のファイルまたは第2の複数のファイルにアクセスするための命令を提供する、条項13に記載の方法。
15.第1のデバイスデータが、自律型車両の第1のサブシステムから取得され、第2のデバイスデータが、自律型車両の第2のサブシステムから取得される、条項8~14のいずれかに記載の方法。
16.システムであって、1つ以上のプロセッサと、命令を記憶するメモリと、を備え、命令が、1つ以上のプロセッサによって実行されたとき、システムに、第1のデータ識別子、第2のデータ識別子、および照会アクセスレベルを含む照会を取得することと、第1のロケーションから、かつ照会およびプロファイルに少なくとも部分的に基づいて、第1の複数のファイルを取り出すことであって、第1の複数のファイルが、階層データ構造に従って第1のロケーションに配置される、取り出すことと、第2のロケーションから、かつ照会およびプロファイル少なくとも部分的に基づいて、階層データ構造に従って第2のロケーションに配置された第2の複数のファイルを取り出すことと、第1の複数のファイルおよび第2の複数のファイルを伝送することと、を行わせ、プロファイルが、第1のデータ識別子に少なくとも部分的に基づいて第1のロケーションから第1の複数のファイルを取り出すための命令と、第2のデータ識別子に少なくとも部分的に基づいて第2のロケーションから第2の複数のファイルを取り出すための命令とを含み、第1の複数のファイルおよび第2の複数のファイルが、閾値ファイルサイズ以下であるファイルを含む、システム。
17.階層データ構造が、複数のタイムスタンプ、複数のデータ識別子、および複数のデバイス識別子に少なくとも部分的に基づく複数のサブディレクトリを含み、複数のタイムスタンプのうちのタイムスタンプは、最小の時間差を満たすか、または超える、条項16に記載のシステム。
18.第1のロケーションが、第1のアクセスレベルと関連付けられ、第2のロケーションが、第2のアクセスレベルと関連付けられ、第1の複数のファイルを取り出すことが、第1のアクセスレベルおよび照会アクセスレベルに少なくとも部分的に基づいており、第2の複数のファイルを取り出すことが、第2のアクセスレベルおよび照会アクセスレベルに少なくとも部分的に基づいている、条項16または17に記載のシステム。
19.第1の複数のファイルまたは第2の複数のファイルのうちのファイルが、複数のメッセージを含み、複数のメッセージのうちのメッセージは、メッセージタイプ、メッセージサイズ、またはメッセージデータのうちの1つ以上を含む、条項17または18に記載のシステム。
20.第1のロケーションが、リモートデータストア上のロケーションであり、第2のロケーションが、ローカルデータストア上のロケーションである、条項17~19のいずれかに記載のシステム。