IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ ウーブン・アルファ株式会社の特許一覧

特開2023-57532カスタマイズされたデータ要求システムおよび使用方法
<>
  • 特開-カスタマイズされたデータ要求システムおよび使用方法 図1
  • 特開-カスタマイズされたデータ要求システムおよび使用方法 図2
  • 特開-カスタマイズされたデータ要求システムおよび使用方法 図3
  • 特開-カスタマイズされたデータ要求システムおよび使用方法 図4
  • 特開-カスタマイズされたデータ要求システムおよび使用方法 図5A
  • 特開-カスタマイズされたデータ要求システムおよび使用方法 図5B
  • 特開-カスタマイズされたデータ要求システムおよび使用方法 図6
  • 特開-カスタマイズされたデータ要求システムおよび使用方法 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023057532
(43)【公開日】2023-04-21
(54)【発明の名称】カスタマイズされたデータ要求システムおよび使用方法
(51)【国際特許分類】
   G06F 11/34 20060101AFI20230414BHJP
   G06F 11/30 20060101ALI20230414BHJP
   G01M 17/007 20060101ALI20230414BHJP
【FI】
G06F11/34 176
G06F11/30 140D
G01M17/007 J
【審査請求】有
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2022155497
(22)【出願日】2022-09-28
(31)【優先権主張番号】17/497,988
(32)【優先日】2021-10-11
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVASCRIPT
(71)【出願人】
【識別番号】521080336
【氏名又は名称】ウーブン・アルファ株式会社
(74)【代理人】
【識別番号】100099759
【弁理士】
【氏名又は名称】青木 篤
(74)【代理人】
【識別番号】100123582
【弁理士】
【氏名又は名称】三橋 真二
(74)【代理人】
【識別番号】100092624
【弁理士】
【氏名又は名称】鶴田 準一
(74)【代理人】
【識別番号】100147555
【弁理士】
【氏名又は名称】伊藤 公一
(74)【代理人】
【識別番号】100123593
【弁理士】
【氏名又は名称】関根 宣夫
(74)【代理人】
【識別番号】100133835
【弁理士】
【氏名又は名称】河野 努
(74)【代理人】
【識別番号】100180194
【弁理士】
【氏名又は名称】利根 勇基
(72)【発明者】
【氏名】橋本 大輔
(72)【発明者】
【氏名】マーク カレ
(72)【発明者】
【氏名】マリオ フレイタス
(72)【発明者】
【氏名】関谷 岳史
(72)【発明者】
【氏名】ロハン フェア
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042GB08
5B042MA08
5B042MA09
5B042MC08
5B042MC40
(57)【要約】
【課題】車両から所望のデータを収集する。
【解決手段】車両はセンサおよび送信機を含む。車両は更に、命令を格納するように構成されている非一時的コンピュータ可読媒体と、非一時的コンピュータ可読媒体に接続されているプロセッサとを含む。プロセッサは、データ収集コマンドを受信または生成するために命令を実行するように構成されており、データ収集コマンドは、センサ、アプリケーションログ、またはシステムログの少なくとも1つから収集されたデータを処理するための処理指示を含む。プロセッサは更に、データ収集コマンドに基づいてセンサ情報を収集するために、命令を実行するように構成されている。プロセッサは更に、処理指示に基づいて、収集されたデータを処理し、処理されたデータを送信することを送信機に指示するために、命令を実行するように構成されている。
【選択図】図3
【特許請求の範囲】
【請求項1】
車両であって、
センサと、
送信機と、
命令を格納するように構成されている非一時的コンピュータ可読媒体と、
前記非一時的コンピュータ可読媒体に接続されているプロセッサと
を備え、
前記プロセッサは、
収集された収集データを処理するための処理指示を含むデータ収集コマンドを受信または生成し、
前記データ収集コマンドに基づいて、前記センサ、アプリケーションログ、またはシステムログの少なくとも1つからデータを収集し、
前記処理指示に基づいて、前記収集されたデータを処理し、
前記処理されたデータを送信することを前記送信機に指示するために、前記命令を実行するように構成され、
前記処理指示は、実行される多数の処理動作と、該処理動作の各々についての処理のタイプとを含む、車両。
【請求項2】
複数のセンサを更に備え、
前記センサは前記複数のセンサの1つであり、前記プロセッサは、前記受信したデータ収集コマンドに基づいて、前記複数のセンサから前記センサを識別するために、前記命令を実行するように構成されている、請求項1に記載の車両。
【請求項3】
前記非一時的コンピュータ可読媒体は、前記非一時的コンピュータ可読媒体に格納され且つ前記プロセッサにより実行されるアプリケーションを更に備え、
前記プロセッサは、トリガーイベントの発生の検出に応答して、前記データ収集コマンドを生成するように構成されている、請求項1又は2に記載の車両。
【請求項4】
前記非一時的コンピュータ可読媒体は、前記トリガーイベントを決定するための基準を格納するように構成されている、請求項3に記載の車両。
【請求項5】
前記データ収集コマンドは、収集されるセンサデータの時間範囲についての指示を含む、請求項1又は2に記載の車両。
【請求項6】
前記データ収集コマンドは優先度レベル情報を含む、請求項1又は2に記載の車両。
【請求項7】
前記プロセッサは、前記データ収集コマンドにより定義されたツリーに基づいて前記収集されたデータを処理するために、前記命令を実行するように構成されている、請求項1又は2に記載の車両。
【請求項8】
前記データ収集コマンドは、前記処理動作の少なくとも1つを実行するためのアルゴリズムに関する情報を含む、請求項1又は2に記載の車両。
【請求項9】
前記プロセッサは、さらに、
第2データ収集コマンドを受信または生成し、
前記第2データ収集コマンドに基づいて収集されるデータが前記データ収集コマンドに基づいて収集されるデータと重なるかどうかを判定し、
重なっているデータについてのデータ収集指示を前記第2データ収集コマンドから除去し、
前記第2データ収集コマンドの全体を処理するために、前記命令を実行するように構成されている、請求項1又は2に記載の車両。
【請求項10】
方法であって、
収集された収集データを処理するための処理指示を含むデータ収集コマンドを受信することと、
前記データ収集コマンドに基づいて、車両に接続されているセンサ、アプリケーションログ、またはシステムログの少なくとも1つからデータを収集することと、
前記処理指示に基づいて、前記収集されたデータを処理することと、
前記処理されたデータを送信することを送信機に指示することと
を含み、
前記処理指示は、実行される多数の処理動作と、前記処理動作のそれぞれについての処理のタイプとを含む、方法。
【請求項11】
前記データ収集コマンドに基づいて、前記車両に取り付けられている複数のセンサから前記センサを選択することを更に含む、請求項10に記載の方法。
【請求項12】
アプリケーションを実行することを更に含み、
前記アプリケーションを実行することは、トリガーイベントの発生の検出に応答して、前記データ収集コマンドを生成することを含む、請求項10又は11に記載の方法。
【請求項13】
前記トリガーイベントは、前記アプリケーションのクラッシュと、前記アプリケーションの異常を検出することとを含む、請求項12に記載の方法。
【請求項14】
収集されるセンサデータの時間範囲についての指示を含む前記データ収集コマンドを生成することを更に含む、請求項10又は11に記載の方法。
【請求項15】
優先度レベル情報を含む前記データ収集コマンドを生成することを更に含む、請求項10又は11に記載の方法。
【請求項16】
前記収集されたデータを処理することは、前記データ収集コマンドにより定義されたツリー構造に基づいて、前記収集されたデータを処理することを含む、請求項10又は11に記載の方法。
【請求項17】
前記処理動作の少なくとも1つを実行するためのアルゴリズムに関する情報を含む前記データ収集コマンドを生成することを更に含む、請求項10又は11に記載の方法。
【請求項18】
第2データ収集コマンドを受信することと、
前記第2データ収集コマンドに基づいて収集されるデータが、前記データ収集コマンドに基づいて収集されるデータと重なるかどうかを判定することと、
重なっているデータについてのデータ収集指示を前記第2データ収集コマンドから除去することと、
前記第2データ収集コマンドの全体を処理することと
を更に含む、請求項10又は11に記載の方法。
【請求項19】
システムであって、
命令を格納するように構成されている非一時的コンピュータ可読媒体と、
前記非一時的コンピュータ可読媒体に接続されているプロセッサと
を備え、
前記プロセッサは、
ユーザからの入力に基づいて、トリガーイベントと、収集されるデータのタイプと、前記データが収集される時間範囲とを含むデータ収集指示を受信し、
収集されたデータに対して実行される処理動作のツリー構造と、前記ツリー構造の各ノードについての処理のタイプとを含む処理指示を前記ユーザから受信し、
前記受信したデータ収集指示と、前記受信した処理指示とに基づいて、データ収集コマンドを生成し、
前記トリガーイベントの検出に応答して、センサを含む車両のデータ収集ユニットへの前記データ収集コマンドの送信を指示するために、前記命令を実行するように構成されている、システム。
【請求項20】
前記プロセッサは、さらに、前記データ収集コマンドの送信と併せてアプリケーションログの送信を指示するために、前記命令を実行するように構成されている、請求項19に記載のシステム。
【発明の詳細な説明】
【背景技術】
【0001】
車両、ロボット、電気器具などのような装置は、サードパーティアプリケーション開発者によりアクセス可能なオペレーティングシステム(OS)をより頻繁に含んでいる。サードパーティアプリケーション開発者は、ユーザの装置に対する体験を変えるために、装置に対するOS上で作動するプログラムを開発する。ユーザの満足度を最大にするために、サードパーティアプリケーション開発者はアプリケーションの性能についてのデータを収集し、アプリケーションを更新またはデバッグする。
【0002】
幾つかの実例においては、サードパーティアプリケーション開発者は、アプリケーションの性能についてのデータを収集するために装置にアクセスする。幾つかの実例においては、サードパーティアプリケーション開発者は、アプリケーションの性能に関する情報を、アプリケーションの批評を通してなどのように、ユーザから受信する。幾つかの実例においては、サードパーティアプリケーション開発者は、装置上で作動しているアプリケーションをデバッグまたは更新するために、装置から受信した生データを処理する。
【図面の簡単な説明】
【0003】
図1】幾つかの実施形態に従う、カスタマイズされたデータを収集するためのシステムの図である。
図2】幾つかの実施形態に従う、カスタマイズされたデータを収集するためのシステムの図である。
図3】幾つかの実施形態に従う、カスタマイズされたデータを収集する方法のフローチャートである。
図4】幾つかの実施形態に従う、データ収集コマンドのデータ構造の図である。
図5A】幾つかの実施形態に従う、データ収集コマンドについてのコードの図である。
図5B】幾つかの実施形態に従う、画像トリミングについてのコードの図である。
図6】幾つかの実施形態に従う、カスタマイズされたデータを生成するためにデータを処理する方法のフローチャートである。
図7】幾つかの実施形態に従う、カスタマイズされたデータの収集を実施するためのシステムの図である。
【発明を実施するための形態】
【0004】
本開示の態様は、付随する図面と共に下記の詳細な記述を読むことにより最も良好に理解される。当業界における標準的な慣行に従って、種々の特徴は一定の縮尺で描かれていないことに留意されたい。実際、種々の特徴の寸法は、説明を明確にするために任意に増減され得る。
【0005】
下記の開示は、提供される主題の異なる特徴を実現するための多くの異なる実施形態、または例を提供する。構成要素、値、動作、材料、配置などの具体的な例は、本開示を簡潔にするために下記に記述される。もちろん、これらは単なる例にすぎず、限定的であることは意図されていない。他の構成要素、値、動作、材料、配置なども考えられる。例えば、後に続く記述における第2の特徴上への第1の特徴の形成は、第1および第2の特徴が直接接触して形成される実施形態を含むことができ、また、第1および第2の特徴が直接接触しなくてもよいように、追加的特徴を、第1および第2の特徴の間に形成できる実施形態を含むことができる。加えて、本開示は、種々の例において、参照番号および/または文字を繰り返すこともあり得る。この繰り返しは、簡潔性と明確性の目的のためであり、それ自体は、検討されている種々の実施形態および/または構成間の関係に影響しない。
【0006】
更に、「~の下」、「~の下方」、「下部の」、「~の上方」、「上部の」などのような空間的相対位置を示す用語は、ここにおいては、図において例示されているように、1つの要素または特徴の、他の要素または特徴との関係を記述するための記述を容易にするために使用することもあり得る。空間的相対位置を示す用語は、図において示されている向きに加えて、使用中または動作中の装置の異なる向きも含むことが意図されている。装置は他の向きにすることができ(90度回転、または他の向き)、ここにおいて使用されている空間的相対位置を示す記述子も同様にそれに応じて解釈できる。
【0007】
簡潔性のために、本開示の種々の構成要素間の通信は無線として記述される。当業者は、有線接続を使用する通信もまた本開示の範囲内であり、本開示が無線通信のみに限定されないということを理解するであろう。
【0008】
オペレーティングシステム(OS)は、アプリケーション設計者が、車両上で作動可能なアプリケーションを開発および実施することを可能にすることが意図されている。OSは、車両における安全プロトコルの動作を保護するが、非安全プロトコルへのアクセスをアプリケーション設計者に対して最大にしようとする。アプリケーションの設計および実施の間、設計者は、アプリケーションをデバッグまたは向上するために、アプリケーションの不具合、問題、性能向上、テストデータ収集、または他の所望される情報に関するフィードバック情報を得ようとする。本開示は、アプリケーション設計者が求める情報内容、フォーマット、および適時性を提供するために、収集されたデータおよびフィードバック情報がアプリケーション設計者によりどのようにカスタマイズされるかに向けられている。
【0009】
アプリケーション216、226、または232(図2)などのような、アプリケーション設計者により開発されたアプリケーションは、アプリケーションがトリガーイベント(trigger event)の条件が満たされたと判定したことに応答して、OS218、228、または238(図2)などのようなOSを介して、データ収集コマンド400(図4)などのようなデータ収集コマンドを、データ収集ユニット236(図2)などのようなデータ収集ユニットに送信することができる。アプリケーション設計者は、車両センサからデータを収集するためのトリガーイベントと、時間範囲402(図4)などのような、データが収集される時間範囲とを定義することができる。トリガーイベントは、車両内のまたは車両の周囲の環境における、アプリケーション設計者がデータを得ようしている出来事である。例えば、トリガーイベントには、急加速、急ブレーキ、データ要求の対象の画像の取り込み、データ要求の対象の検出、他の適切な出来事が含まれる。幾つかの実施形態においては、トリガーイベントは、アプリケーションの故障または「クラッシュ」などのようなアプリケーション内のイベントの出来事である。幾つかの実施形態においては、アプリケーションは、トリガーイベント(トリガー条件)の条件が満たされたか否かを判定し、アプリケーションがトリガー条件が満たされたと判定したことに応答して、アプリケーションはデータ収集コマンドをデータ収集ユニットに送信する。幾つかの実施形態においては、データ収集ユニットは、トリガー条件が満たされたか否かを判定し、トリガー条件が満たされたと判定したことに応答して、データ収集ユニットは、トリガーイベントと関連付けられているデータを収集する。幾つかの実施形態においては、サーバ120(図1)などのようなサーバは、トリガー条件が満たされたか否かを判定し、サーバがトリガー条件が満たされたと判定すると、サーバはデータ収集コマンドをデータ収集ユニットに送信する。
【0010】
データ収集コマンドは時間範囲の情報を含んでいる。データが収集される時間範囲とは、イベントに対する開始時間403およびイベントに対する終了時間404(図4)などのような、トリガーイベントの前および/または後の時間期間を意味する。例えば、トリガーイベントの5秒前からトリガーイベントの10秒後(イベントに対する開始時間=-5秒、イベントに対する終了時間=10秒)までである。幾つかの実施形態においては、時間範囲はまた、どのくらいの頻度でデータを時間範囲からサンプリングすべきかを示す頻度パラメータを含んでいる。例えば、イベント時間がt=100秒、開始時間が-1秒、終了時間が2秒、頻度が10Hz(100ミリ秒サイクル)のときには、t=99.0秒、99.1秒、99.2秒、...、101.9秒、102.0秒におけるデータが、データ収集コマンドにより収集される。データ収集コマンドは、センサIDおよび/またはアプリケーションIDなどのようなデータソースIDを含んでおり、それにより、アプリケーション設計者は、トリガーイベントに応答して収集されるデータのタイプをカスタマイズすることができる。例えば、カメラ画像データ、ライダーデータ、レーダーデータ、車両の位置および向きのデータ、加速度データ、アプリケーションログ、車両と車両の周囲の対象物との間の距離に関する近接データ、または、道路交通情報通信システム(VICS(登録商標):Vehicle Information and Communication System)や交通案内チャネル(TMC:Traffic Message Channel)などのような交通および走行情報。トリガー条件が満たされると、データ収集コマンドが処理のためにデータ収集ユニットに送信され、収集されたデータは、データ収集コマンドにおける情報に基づいて処理されて、車両から送信される。
【0011】
データを受信すると、データ収集ユニットは、メモリユニット237(図2)などのようなメモリユニットにおける優先度キュー239(図2)などのような優先度キューに要求を追加する。幾つかの実施形態においては、データ収集ユニットは、キュー内の要求の優先度を調整することができる。幾つかの実施形態においては、車両の安全性または製造者のアプリケーションに関するデータには、サードパーティのアプリケーションに比べて、より高い優先度を与えることができる。幾つかの実施形態においては、要求の優先度は、データ収集コマンドにおける優先度406(図4)などのような優先度情報により特定される。幾つかの実施形態においては、要求の優先度は、要求者ID407(図4)などのような、データ収集コマンドを送る要求者のアイデンティティにより決定される。幾つかの実施形態においては、要求の優先度は、ソースID405(図4)などのような、データが収集されるソースのアイデンティティにより決定される。データ収集ユニットは、アプリケーション設計者からの、後処理410(図4)などのような、カスタマイズされた命令に基づいてデータを処理する。その後、処理されたデータは、アプリケーション設計者によるアクセスのために、サーバまたはクラウドベースのシステムに車両から送信される。
【0012】
幾つかの実施形態においては、データの処理は、車両からのデータの送信の前に実行される。この処理は、送信されるデータの量を最小にし、アプリケーション設計者に最も関連するデータをアプリケーション設計者に好適なフォーマットで提供することを支援する。
【0013】
アプリケーション設計者は、要求された処理を実施するために使用されるアルゴリズムと共に、収集されたデータに対して実行されるべき処理動作の回数、収集されたデータに対して実行される処理のタイプを選択することができる。収集されたデータに対して実行される処理動作をアプリケーション設計者が設定する柔軟性を高めることによって、アプリケーション設計者は、対象の情報をデータから失うことなく且つ不必要なデータを有することなく、アプリケーションのデバッグ、アプリケーションの性能向上、アプリケーションのテスト、最適化のためのアプリケーションのニューラルネットワークの学習、またはアプリケーションに対する他の修正または更新をより対象とした適切なデータを受信することができる。幾つかの場合、車両から転送されるデータの量は、アプリケーション設計者により選択された適切な処理動作により削減される。削減されたデータの量は、システムが、車両130とサーバ120との間のネットワークトラフィックの量を削減することを支援する。削減されたデータの量はまた、システムが、車両運転手などのような車両オペレータに対してよりカスタマイズ可能な体験を提供するためにより多くの数のアプリケーションにデータを提供することを支援する。幾つかの例においては、ユーザに提供されるデータの量は、ユーザにより選択された処理の結果として増大される。増大されたデータの量は、幾つかの例においては、ユーザにより多くの量の有用データを提供して、ユーザが、より効率的にアプリケーションの機能を調査し、より多い量の有用な訓練データでアプリケーションのニューラルネットワークを学習および最適化し、より良好なテストカバレッジを有するようにより多くの量のテストデータでアプリケーションをテストし、且つアプリケーションの更新またはデバッグを提供することを可能にする。
【0014】
収集されたデータに対して実行される処理動作を決定するために、アプリケーション設計者は、何れの動作が、処理されたデータの何れの部分に対して実行されるのかを決定するために、ツリー構造および固有ノードIDを使用する。幾つかの実施形態においては、アプリケーション設計者は、収集されたデータに対して実行される動作を決定するためにグラフ構造を使用する。ツリー構造はまた、収集されたデータに対して実行される処理動作の順序を決定する。例えば、幾つかの実施形態においては、トリミング動作が画像に対して実行され、トリミングされた画像のサイズが変更される。幾つかの実施形態においては、画像のサイズが変更され、その後、サイズが変更された画像に対してトリミング動作が実行される。幾つかの実施形態においては、アプリケーション設計者は、処理の対象データは画像データであるべきであり、その後、その画像データはトリミングされるべきであり、トリミングされたデータのサイズが変更されるべきであると決定することができる。幾つかの実施形態においては、アプリケーション設計者は、ガンマ補正有りのまたはガンマ補正なしの画像データがデータ処理に使用されるかどうかを決定することができる。幾つかの実施形態においては、アプリケーション設計者は、RGB、YUV444、YUV420、ベイヤパターン画像などのような、処理に使用される画像データのフォーマットを決定することができる。このことは、アプリケーション設計者が、データから有用な情報を失うことなくアプリケーションをテストし且つアプリケーションのニューラルネットワークを学習するために適切なデータを使用することを可能にする。アプリケーション設計者はまた、トリミングされたデータに対する圧縮などのような第2動作を実行することができる。つまり、各動作が、ツリー構造における固有の「親」ノードを参照する限り、複数の動作を単一のデータに対して実行することができる。これらの処理のガイドラインは、アプリケーション設計者が、プロセッサ702、メモリ704、バス708(図7)のIOトラフィックなどのようなシステムの作業負荷の量を減少することを可能にする。アプリケーション設計者はまた、ユースケースおよび収集されたデータの対象が時間の経過と共に変化する場合であっても、アプリケーションのユースケースに対して所望のアルゴリズムをアプリケーション設計者が柔軟に選択できるように、JPEG圧縮、PNG圧縮、ZIP圧縮、H.264符号化などのような、データのサイズを圧縮する所定の動作のために使用されるアルゴリズムを決定することができる。圧縮アルゴリズム、符号化アルゴリズム、および、例えば、線形補間、バイリニア補間、バイキュービック補間などの補間アルゴリズムなどのような、収集されたデータを処理するために使用されるアルゴリズムを知ることにより、アプリケーション設計者は、もしあれば、如何なる修正をアプリケーションに対して行うかを決定するために、処理されたデータを効率的に扱うことができる。アプリケーション216、232、または226(図)などのようなアプリケーションソフトウェアが次世代製品に対して再使用される場合、次世代製品のプロセッサ702(図7)などのようなプロセッサが、現在の世代とは異なる場合、および、次世代のプロセッサのHW加速装置が、より良好な性能を有する新しい処理アルゴリズムをサポートする場合、または、HW加速装置が、現在の世代のプロセッサによりサポートされている処理アルゴリズムをサポートしない場合などがある。これらの場合においても、後処理を使用するアルゴリズムの柔軟性は、アプリケーション設計者が、次世代において使用されるアルゴリズムを、アプリケーションソフトウェアの最小の変更量で容易に変更することを可能にする。幾つかの実施形態においては、アプリケーション設計者は、送信されたデータに対しても出力フォーマットをカスタマイズすることができる。例えば、データが画像データであるとき、データの出力フォーマットは、ピクセル高さ、ピクセル幅、チャネル数、RGBおよびBGRなどのような)チャネルの順序(、(チャネル-高さ-幅(CHW)および高さ-幅-チャネル(HWC)などのような)データのレイアウト、(jpegファイル、pngファイルなどのような)ファイルフォーマット、(グーグルプロトコルバッファ、ロボットオペレーティングシステム(ROS)トピックなどのような)シリアル化されたデータのフォーマットなどについての情報を含んでいる。このことは、ユースケースおよび収集されたデータの対象が時間の経過と共に変化する場合であっても、アプリケーション設計者が、アプリケーションに対するユースケースに適合するアルゴリズムおよびデータフォーマットを柔軟に選択することを可能にする。
【0015】
アプリケーション開発者により受信されたデータをカスタマイズする機能を提供することにより、本開示は、外部のアプリケーション開発者が、アプリケーションをデバッグ、テスト、最適化、または更新するために車両におけるセンサからデータにアクセスすることを可能にする。収集されたデータのフォーマット、タイミング、および内容は、開発ツールなどのようなアプリケーションの開発環境と、アプリケーションの性能に密接に関連し、アプリケーションを効率よくデバッグするために、アプリケーションの性能に悪影響を与える出来事を識別するために、開発者によりカスタマイズ可能である。下記の記述は、自動車などの車両における使用に言及しているが、当業者は、本開示が、ロボット、ドローン、家庭用電気器具、または他の適切な装置などのような、他のタイプの可動装置に適用可能であるということは理解するであろう。
【0016】
図1は、幾つかの実施形態に従う、カスタマイズされたデータを収集するためのシステム100の図である。システム100は、ユーザから情報を受信するように構成されているユーザインタフェース(UI)110を含んでいる。UI110は、情報をサーバ120または車両130に転送するように構成されている。幾つかの実施形態においては、UI110は、車両130と直接通信することができる。幾つかの実施形態においては、UI110は、サーバ120を通して車両130と通信するように構成されている。システム100は更に、UI110および車両130と通信するように構成されているサーバ120を含んでいる。システム100は更に、サーバ120およびUI110と通信することができる車両130を含んでいる。
【0017】
UI110は、ユーザから入力命令を受信するように構成されている。幾つかの実施形態においては、ユーザにはソフトウェア開発者が含まれる。幾つかの実施形態においては、ユーザには保険プロバイダが含まれる。幾つかの実施形態においては、ユーザには、法の執行機関が含まれる。
【0018】
幾つかの実施形態においては、UI110は、車両130の電子制御ユニット(ECU)上で作動されるアプリケーションのバイナリ実行可能ファイルまたはソースコードをユーザがアップロードすることを可能にする。UI110はまた、車両130のECU上で作動されるアプリケーションをユーザが更新することを可能にする。例えば、幾つかの実施形態においては、ユーザはUI110を使用してオーバーザエア(OTA)更新をアプリケーションに送信することができる。幾つかの実施形態においては、アプリケーションの更新は、アプリケーションにより生成されたデータ収集コマンドに起因する車両130からの受信データに基づいている。幾つかの実施形態においては、トリガーイベントの条件は、アプリケーションを更新することにより更新される。幾つかの実施形態においては、後処理パラメータ410(図4)における情報などのような、アプリケーションから、データ収集ユニット236(図2)などのようなデータ収集ユニットに転送される後処理指示の内容は、アプリケーションを更新することにより更新される。幾つかの実施形態においては、データ収集コマンド400(図4)などのような、アプリケーションからデータ収集ユニットに転送されるデータ収集コマンドにおける任意の他の情報は、アプリケーションを更新することにより更新される。幾つかの実施形態においては、UI110は、車両130のECU上で作動されるアプリケーションの学習済みのニューラルネットワークの重みデータをユーザがアップロードすることを可能にする。
【0019】
幾つかの実施形態においては、UI110はグラフィカルユーザインタフェース(GUI)を含んでいる。幾つかの実施形態においては、UI110は、モバイルテレフォンなどのような、サーバ120に接続可能なモバイル端末を含んでいる。幾つかの実施形態においては、UI110は、サーバ120に接続可能なコンピュータを含んでいる。UI110はまた、データ要求のステータスに関する更新、または車両130上で作動されているアプリケーションのステータスに関する更新をユーザに提供することができる。幾つかの実施形態においては、UI110は、ユーザによる追加の問い合わせ(query)に応答して、データ要求に関するステータスの更新を提供する。幾つかの実施形態においては、UI110は、ユーザの介在なしに自動的にサーバ120から更新された情報を受信すると、データ要求に関するステータスの更新を提供する。幾つかの実施形態においては、ステータスの更新はUI110にユーザに対する警告を発動させる。幾つかの実施形態においては、警告は可聴警告または可視警告を含んでいる。
【0020】
幾つかの実施形態においては、UI110は、車両130により収集されたデータに対して実行される処理のタイプを示す情報をユーザから受信するように構成されている。例えば、アプリケーションのユースケースが変化し、または車両130におけるECUの機能が変化した場合、ユーザは、如何なるデータ収集コマンドをアプリケーションが生成するかを修正するためにアプリケーションを更新することができる。
【0021】
幾つかの実施形態においては、UI110は、イベント時間、時間範囲、データソースID、後処理、または他のパラメータに対応する情報を有するデータ収集要求をユーザから受信するように構成されている。幾つかの実施形態においては、UI110は、データ収集コマンド400(図4)と類似している情報を含んでいるデータ収集要求を受信するように構成されている。UI110はデータ収集要求をデータ収集コマンドに変換する。幾つかの実施形態においては、UI110は、アプリケーションの代わりにデータ収集コマンドを、車両におけるデータ収集ユニット236(図2)などのようなデータ収集ユニットに、無線ネットワークなどのようなネットワークを介して送る。
【0022】
サーバ120は、UI110および車両130から情報を受信するように構成されている受信機122を含んでいる。サーバ120は、UI110および車両130に情報を送信するように構成されている送信機124を含んでいる。サーバ120はメモリ126を含み、メモリ126は、データ要求と、アプリケーションのバイナリ実行可能ファイルまたはソースコードと、UI110からのアプリケーションのニューラルネットワークの重みデータとを格納し、車両130からの収集データを格納するように構成されている。サーバ120は更に、UI110および車両130との通信との間に情報を処理するように構成されているプロセッサ128を含んでいる。幾つかの実施形態においては、車両130から受信した収集データは、ユーザ、または車両130で作動しているアプリケーションからのデータ要求に従って既に処理されている。幾つかの実施形態においては、車両130から受信した収集データはデータ要求に従ってプロセッサ128により処理される。
【0023】
メモリユニット126は、受信機122により受信された情報を格納するように構成されている。幾つかの実施形態においては、メモリ126は、DRAMなどのようなランダムアクセスメモリ(RAM)、フラッシュメモリ、または他のタイプのメモリを含んでいる。幾つかの実施形態においては、メモリ126はユーザによりアクセス可能である。幾つかの実施形態においては、メモリ126における情報の更新は、メモリ126において更新された情報と関連付けられているユーザへの通知を誘発する。例えば、幾つかの実施形態においては、ユーザにより開発されたアプリケーションからのデータ収集コマンドに関するデータをサーバ120が受信したことに応答して、通知がユーザに送信される。幾つかの実施形態においては、メモリ126は、情報が受信された時間を示すタイムスタンプデータと連携して情報を格納する。幾つかの実施形態においては、送信機124は、優先度レベルに基づいて、UI110または車両130に情報を送信するように構成されている。
【0024】
送信機124はUI110および車両130に情報を送信するように構成されている。幾つかの実施形態においては、送信機124は、メモリ126における更新に応答して、ユーザに更新を提供するように構成されている。幾つかの実施形態においては、送信機124は、ユーザからの受信された要求に応答して、ユーザにアプリケーションのアプリケーションログを提供するように構成されている。
【0025】
送信機124は要求を車両130に送信するように構成されている。幾つかの実施形態においては、送信機124は要求の優先度レベルに基づいて車両130に要求を送信するように構成されている。
【0026】
幾つかの実施形態においては、送信機124は、サーバ120が車両130との十分な接続性を有しているときはいつでも車両130に要求を送信するように構成されている。幾つかの実施形態においては、送信機124は、車両130が新しい要求を受信することができ且つ送信機124が車両130との十分な接続性を有している限り、車両130に定期的に要求を送信するように構成されている。幾つかの実施形態においては、送信機124は、車両130に要求を、5つの要求、20個の要求、または、何等かの他の数の要求のグループのようにまとめて送信するように構成されている。幾つかの実施形態においては、送信機124は、車両130からの要求の受信確認を要求するように構成されている。所定期間の間、車両からの受信確認を受信しなかったことに応答して、送信機124は要求を再送信するように構成されている。
【0027】
車両130は、車両130の内部ステータスおよび車両130の周囲の外部環境の両方を検出するためのセンサを含んでいる。幾つかの実施形態においては、センサには、カメラ、光検出と測距(LiDAR)センサ、電波検出と測距(RADAR)センサ、音響航法と測距(SONAR)センサ、加速度計、ステアリングホイール位置、速度計、全地球測位システム(GPS)、慣性測定ユニット(IMU)、または他の適切なセンサが含まれる。車両130は、車両130に格納されているアプリケーションを作動させるように構成されているECUを含んでいる。幾つかの実施形態においては、車両130は、アプリケーションと共に格納されている命令に基づいて、データを収集および出力するためのトリガーイベントを決定するように構成されている。幾つかの実施形態においては、車両130は、アプリケーションと共に格納されている命令に基づいて、収集および出力するデータの継続時間およびタイプを決定するように構成されている。
【0028】
アプリケーションは、トリガーイベントの検出された発生に応答して、データ収集コマンドを起動することができる。幾つかの実施形態においては、データ収集コマンドは、アプリケーションの「クラッシュ」、アプリケーションにおいて検出された異常、または他の適切な検出された出来事などのようなトリガーイベントに応答して生成される。幾つかの実施形態においては、アプリケーションが急ブレーキまたは急加速を検出すると、アプリケーションは、トリガーイベントの条件が満たされたと決定する。幾つかの実施形態においては、アプリケーションは対象物検出アプリケーションであり、アプリケーションが、道路上に落ちている対象物、緊急車両、事故に巻き込まれた車両、道路上の動物、如何なる種類の道路上には通常はない対象物、または他の適切な対象物などのような特定の対象物を検出すると、アプリケーションは、トリガーイベントの条件が満たされたと判定する。幾つかの実施形態においては、アプリケーションが車両130の診断情報から機能不全を検出すると、アプリケーションは、トリガーイベントの条件が満たされたと判定する。幾つかの実施形態においては、車両130は、アプリケーションと関連付けられているトリガーイベントを検出することに応答して、ユーザへの通知を生成するように構成されている。幾つかの実施形態においては、通知は、例えば、UI110を通してユーザに直接送信される。幾つかの実施形態においては、通知は、サーバ120を通してユーザに送信される。幾つかの実施形態においては、通知は可聴通知または可視通知を含んでいる。幾つかの実施形態においては、通知は、ユーザの介在なしにUI110に自動的に通知を表示させるように構成されている。
【0029】
車両130は、アプリケーションにより生成されたデータ収集コマンド、またはUI110若しくはサーバ120からのデータ収集要求を受信したことに応答して、受信した要求にデータ要求IDを割り当てるように構成され、または、要求は、データ要求の元のシステムまたはプログラムに依存しないように処理される。要求をデータ要求の元のシステムまたはプログラムに依存しないようにすることは、車両130が種々のユーザおよびシステムからの広範囲の要求を受信して処理する機能を拡張することを支援する。車両130のECUは、データ要求を処理し、車両130において利用可能な何れのセンサからの何れのタイプの情報がデータ要求を満たすことができるかを判定するためのプロセッサを含んでいる。車両130は更に、センサからのデータを格納するためのメモリを含んでいる。幾つかの実施形態においては、プロセッサは、何れかの格納されているデータが、データ要求を満たすことができるかどうかを判定するためにメモリにアクセスする。車両130は更に、データ要求を満たすと考えられるデータをサーバ120またはUI110に送信することができる。幾つかの実施形態においては、プロセッサは、データ要求の受信した優先度レベルに基づいて、優先度の順序で受信した要求を満たすことを試みるように構成されている。幾つかの実施形態においては、車両130は、要求の受信した優先度レベルに基づいて、サーバ120またはUI110に優先的にデータを送信するように構成されている。
【0030】
図2は、幾つかの実施形態に従う、カスタマイズされたデータを収集するためのシステム200の図である。幾つかの実施形態においては、システム200は、自動車などの車両の内部に完全に含まれている。幾つかの実施形態においては、システム200を含んでいる車両は車両130(図1)である。システム200は少なくとも1つのECUを含んでいる。図2の例のように、システム200は、第1ECU210、第2ECU220、および第3ECU230を含んでいる。システム200は更に、第1ECU210と通信している少なくとも1つのセンサ240を含み、センサ240は、第1ECU210の機能に関するデータを取り込むように構成されている。例えば、幾つかの実施形態においては、センサ240は前方カメラを含んでおり、第1ECU210は、前方カメラからの画像データを使用する画像認識アプリケーションおよび自律運転アプリケーションを実施することを支援するように構成されている。システムは更に、第2ECU220と通信している少なくとも1つのセンサ250を含み、センサ250は、第2ECU220の機能に関するデータを取り込むように構成されている。例えば、幾つかの実施形態においては、センサ250は、ユーザと車両のインフォテインメントシステムとの間の相互作用を取り込むように構成されており、第2ECU220は車両のインフォテインメントシステムを制御するように構成されている。システム200は更に、第3ECU230と通信している少なくとも1つのセンサ260を含み、センサ260は、第3ECU230の機能に関するデータを取り込むように構成されている。例えば、幾つかの実施形態においては、センサ260は加速度計を含んでおり、第3ECU230は車両のモータまたはエンジン動作を制御するように構成されている。
【0031】
幾つかの実施形態においては、第1ECU210、第2ECU220、および第3ECU230は単一のECUに統合されている。幾つかの実施形態においては、第1ECU210、第2ECU220、または第3ECU230の1つは分離され、他の2つのECUは共に統合されている。幾つかの実施形態においては、第1ECU210、第2ECU220、および第3ECU230のそれぞれは分離されている。すべてのECUは、OS218、228、および238を使用して互いに通信可能である。幾つかの実施形態においては、システム200は4つ以上のECUを含んでいる。幾つかの実施形態においては、システム200は2つ以下のECUを含んでいる。幾つかの実施形態においては、QNX(登録商標)などのような同じタイプのOSが、OS218、228、および238として使用される。幾つかの実施形態においては、異なるタイプのOSがOS218、228、および238として使用される。例えば。OS218はQNXであり、OS228はオートモーティブグレードリナックス(AGL(登録商標))であり、OS238はeMCOS(登録商標)である。幾つかの実施形態においては、第1ECU210、第2ECU220、および第3ECU230は、イーサネット(登録商標)、コントローラエリアネットワーク(CAN)バスなどのようなインタフェースを介して互いに接続される。
【0032】
第1ECU210はアプリケーション216を含んでいる。幾つかの実施形態においては、アプリケーション216は、車両製造者により第1ECU210において生成および/または設置される。幾つかの実施形態においては、アプリケーション216は、サードパーティにより第1ECU210において生成または設置される。幾つかの実施形態においては、アプリケーション216は、OTA更新を介して、UI110により設置または更新される。アプリケーション216は、OS218を使用して、センサ240、第2ECU220、および第3ECU230などのような、車両の他の構成要素とデータを交換することができる。幾つかの実施形態においては、アプリケーションプログラミングインタフェース(API)が、OS218とアプリケーション216との間の通信を促進するために使用される。
【0033】
アプリケーション216は、データ収集コマンドを生成するための、1つ以上のトリガーイベントに関する情報を含んでいる。アプリケーション216は更に、アプリケーション216またはデータ収集ユニット236によるトリガーイベントの検出に応答して収集されるデータのタイプについての情報を含んでいる。アプリケーション216は更に、データの、車両の外部への送信よりも前に、収集に続いて、収集されたデータがどのように処理されるかについての情報を含んでいる。幾つかの実施形態においては、アプリケーション216は更に、トリガーイベントの検出に応答して生成されたデータ収集コマンドの優先度レベルに関する優先度情報を含んでいる。幾つかの実施形態においては、トリガーイベントの発生の検出に応答して、アプリケーション216は、データ収集コマンド400(図4)と類似しているデータ収集コマンドを生成するように構成されている。幾つかの実施形態においては、トリガーイベントに関する情報、収集されるデータのタイプについての情報、収集されたデータがどのように処理されるかについての情報、および優先度情報を、OTA更新を介してUI110によって更新することができる。
【0034】
幾つかの実施形態においては、トリガーイベントは、アプリケーション216の故障またはクラッシュなどのようなアプリケーション216内の出来事である。幾つかの実施形態においては、トリガーイベントは、急ブレーキまたは急加速などのようなアプリケーション216の外部の出来事である。幾つかの実施形態においては、トリガーイベントは、センサ240により取り込まれたデータから対象物を検出することを含んでいる。当業者は、上記のトリガーイベントの例は単なる例にすぎず、異なるタイプのトリガーイベントも本開示の範囲内であるということを理解するであろう。
【0035】
幾つかの実施形態においては、アプリケーション216は、アプリケーションログをデータ収集コマンドと共にデータ収集ユニット236に転送するように構成されている。アプリケーションログは、アプリケーション216の動作に関する情報を含んでいる。幾つかの実施形態においては、アプリケーションログは更にセンサ240からの情報を含んでいる。
【0036】
アプリケーション216は、OS238と通信可能なOS218を使用して、データ収集コマンドをデータ収集ユニット236に転送するように構成されている。OS218は車両のオペレーティングシステムである。幾つかの実施形態においては、OS218はイーサネット、CANバスなどのような有線接続を介してOS238と通信する。幾つかの実施形態においては、OS218はOS238と無線で通信する。
【0037】
第2ECU220は第1ECU210と類似しており、類似している要素は、「10」だけ大きい同一の参照番号を有している。幾つかの実施形態においては、第2ECU220は、第1ECU210上で実施されるアプリケーション216とは異なる機能を有しているアプリケーション226を実施するように構成されている。
【0038】
第3ECU230は、OS238を使用して、第1ECU210および第2ECU220から情報を受信するように構成されている。つまり、第1ECU210のOS218および第2ECU220のOS228は、第3ECU230のOS238とのインタフェースを取る。幾つかの実施形態においては、情報は第3ECU230に無線で転送される。幾つかの実施形態においては、情報は、イーサネット、CANバスなどのような有線接続を介して第3ECU230に転送される。
【0039】
第3ECU230はアプリケーション232を含んでいる。アプリケーション232は、アプリケーション216に関して上述した方法と類似の態様で、データ収集コマンドおよびアプリケーションログを生成することができる。
【0040】
第3ECU230はデータ収集ユニット(DCU)236を含んでいる。DCU236は、アプリケーションと総称されるアプリケーション216、アプリケーション226および/またはアプリケーション232により生成されたデータ要求に基づいて、センサと総称されるセンサ240、センサ250および/またはセンサ260からデータを収集するように構成されている。アプリケーションのそれぞれは、アプリケーションと同じECUと関連付けられているセンサからデータを収集することに限定されない。アプリケーションのそれぞれは、アプリケーションがアクセスする権限を与えられている任意のセンサからデータを収集することができる。幾つかの実施形態においては、所定のセンサは、プライバシー、安全性、または他の懸念事項のために限定的なアクセス権を有している。
【0041】
更にDCU236は、受信したデータ収集コマンドに基づいてデータを収集するために、例えばアプリケーション216、226または232からアプリケーションログにアクセスすることができる。幾つかの実施形態においては、DCU236は、データ収集コマンドを生成したアプリケーションとは異なるアプリケーションに関するアプリケーションログから情報を収集する。例えば、幾つかの実施形態においては、DCU236は、アプリケーション216からデータ収集コマンドを受信し、データ収集コマンドはDCU236にアプリケーション226のアプリケーションログからデータを収集するように指示する。幾つかの実施形態においては、DCU236は、データ収集コマンドを生成したアプリケーションはアプリケーションログにアクセスすることが許可されていないという判定に応答して、アプリケーションログから情報を取り出すというデータ収集コマンドにおける指示を無効にするように構成されている。幾つかの実施形態においては、DCU236は、データ収集コマンドを生成したアプリケーションに与えられた許可に基づいて、エラーレベルなどのような、アプリケーションログの選択されたレベルのみからのデータの収集を許可するが、アプリケーションログの他のレベルからのデータについての要求を無効にするように構成されている。
【0042】
センサは、カメラ、ライダーセンサ、レーダーセンサ、ソナーセンサ、加速度計、全地球測位システム(GPS)、慣性測定ユニット(IMU)、または他の適切なセンサの少なくとも1つを含んでいる。当業者は、幾つかの実施形態においては、センサが、複数の異なるタイプのセンサを含む複数のセンサを含むということを理解するであろう。センサは、車両の動作の間にデータを収集するように構成されている。センサからのデータは、OSと総称されるOS218、OS228および/またはOS238を通してDCU236に転送される。幾つかの実施形態においては、OS218の性能オーバーヘッドを抑制するために、センサからのデータをOS218を介することなくDCU236に転送することができる。センサからのデータは、時間、車両の場所、車両の向き、車両のステータス、センサのステータス、センサのパラメータ若しくはセンサ較正データに関するメタデータ、またはデータがセンサによって収集されるときの他の適切なメタデータを含んでいる。
【0043】
DCU236は、データ収集コマンドをアプリケーションから受信するように構成されている。データ収集コマンドは、何れのタイプのデータを収集すべきかに関する情報と、データを収集するための時間範囲に関する情報とを含んでいる。データ収集コマンドはまた、アプリケーション設計者または他のユーザなどのようなユーザにデータを送信する前に、収集されたデータを処理するための命令を含んでいる。幾つかの実施形態においては、データ収集コマンドは、データ収集コマンドを実行するための優先度レベルを示す優先度情報を含んでいる。幾つかの実施形態においては、DCU236は、他のデータ収集コマンドがDCU236内で未処理であることに基づいて、データ収集コマンドにおける優先度レベルを無効にすることができる。幾つかの実施形態においては、データ収集コマンドは、データ収集コマンドの発信元に関する情報と、どのセンサからDCU236がデータを取り込むべきかに関する情報とを含んでいる。幾つかの実施形態においては、データ収集コマンドは、データ収集コマンド400(図4)と類似している情報を含んでいる。幾つかの実施形態においては、データ収集コマンドが、収集されたデータに対して実行される処理のタイプを示さないことに応答して、DCU236はデフォルト処理を実施するように構成されている。幾つかの実施形態においては、デフォルト処理には、データのサイズ変更、データのトリミング、データ圧縮、または他の適切なデフォルト処理が含まれる。
【0044】
DCU236はメモリユニット237を含んでいる。幾つかの実施形態においては、メモリユニット237は、ダイナミックRAM(DRAM)などのようなランダムアクセスメモリ(RAM)、フラッシュメモリ、または他の適切なメモリを含んでいる。メモリユニット237は、データ収集コマンドの遂行の実施中に情報を格納するように構成されている。データ収集コマンドを遂行するための情報は、センサからの情報、データ収集コマンドにおける命令に基づく中間処理済みデータ、メタデータ、センサなどのような外部構成要素とのインタフェースをDCU236が取るための命令、および/またはデータ収集コマンドの遂行中に生成された他の情報を含んでいる。
【0045】
DCU236は更に、メモリユニット237内のバッファ領域238を含んでいる。バッファ領域238は、センサからのデータと、アプリケーション216、232および226からのアプリケーションログとを受信するように構成されている。幾つかの実施形態においては、センサからのデータおよびアプリケーションログは、車両の動作の間にバッファ領域238に自動的に転送される。幾つかの実施形態においては、センサからのデータは、データが検出されたときの時間および車両の場所などのようなメタデータを含んでいる。バッファ領域238は、センサからのデータおよびアプリケーションログを格納するように構成されている。データ収集コマンドを受信したことに応答して、DCU236は、データ収集コマンドを実行するために使用可能なデータを取り出すために、バッファ領域238に格納されているセンサからのデータおよびアプリケーションログを調査することができる。
【0046】
バッファ領域238の限られた容量のために、幾つかの例においては、試みられたデータの取り出しよりも前にデータが長時間収集されてきたので、DCU236が得ようとするデータは、バッファ領域238において以前に少なくとも部分的に上書きされている。幾つかの実施形態においては、バッファ領域238はリングバッファのデータ構造を有しているので、古いデータは新しいデータにより自動的に上書きされる。幾つかの実施形態においては、バッファ領域238は、キーバリューストア(KVS)、リレーショナルデータベースなどのようなデータベースのデータ構造を有しており、古いデータは、データ収集ユニット236により定期的にデータベースから消去される。幾つかの実施形態においては、データ収集コマンドを遂行するためのすべてのデータより少ないデータがバッファ領域238に存在していないという判定に応答して、DCU236は、要求されたデータを収集するために、センサの1つ以上にアクセスするように構成されている。幾つかの実施形態においては、DCU236は、バッファ領域238においてデータ収集コマンドを遂行するためのすべてのデータを識別しなかったことに応答して、データ収集コマンドを無効にするように構成されている。幾つかの実施形態においては、DCU236は、データ収集コマンドを遂行するためのすべてのデータより少ないデータが利用可能であったとしても、バッファ領域238において利用可能なデータの収集および処理を進めるように構成されている。幾つかの実施形態においては、DCU236は、データ収集コマンドを遂行するためのすべてのデータがバッファ領域238において存在するようになるまで、データ収集コマンドを保持するように構成されている。幾つかの実施形態においては、DCU236は、未処理のデータ収集コマンドに関する、バッファ領域238におけるデータの上書きを防止するように構成されている。
【0047】
DCU236は更に、データ収集コマンドを優先度の順序で格納するように構成されている優先度キュー239を含んでいる。幾つかの実施形態においては、データ収集コマンドの優先度レベルは、データ収集コマンド内の情報に基づいて決定される。幾つかの実施形態においては、DCU236は、データ収集コマンドの優先度を、データ収集コマンドの発信元に基づいて、すなわち、何れのユーザまたはアプリケーションがデータ収集コマンドを生成したか、データ収集コマンドが受信された時間、データ収集コマンドにより要求されるデータのタイプ、またはデータ収集コマンドについての優先度レベルを設定するための他の適切な基準に基づいて設定する。幾つかの実施形態においては、DCU236は、データ収集コマンドにおける優先度レベルが、DCU236により決定された優先度レベルとは異なると判定したことに応答して、データ収集コマンドにおける優先度レベルを無効にする。優先度キュー239に格納されているデータ収集コマンドは優先度の順序で処理される。DCU236は更に、幾つかの実施形態においては、送信機(図示せず)に、データ収集コマンドに対応する処理されるデータを優先度の順序で送信することを指示するように構成されている。幾つかの実施形態においては、DCU236が、データ収集コマンドを遂行するためのデータがバッファ領域238に存在しないと判定したことに応答して、優先度キュー239におけるデータ収集コマンドの優先度レベルが後の処理について下げられる。
【0048】
幾つかの実施形態においては、DCU236は更に、データ収集コマンドを遂行するためのアプリケーションログデータを取り出すためにアプリケーションにアクセスするように構成されている。幾つかの実施形態においては、アプリケーションは、データ収集コマンドを実行するためのアプリケーションログデータをデータ収集コマンドと共にDCU236に転送する。幾つかの実施形態においては、DCU236は、アプリケーションの1つが、データ収集コマンドを遂行するために他のアプリケーションにアクセスすることが許可されているかどうかを判定するように構成されている。第1アプリケーションが第2アプリケーションにアクセスすることが許可されていないという判定に応答して、幾つかの実施形態においては、DCU236はデータ収集コマンドを無効にするように構成されている。幾つかの実施形態においては、DCU236は、第1アプリケーションが第2アプリケーションにアクセスできないという判定に応答して、第2アプリケーションからのアプリケーションログデータなしでデータ収集コマンドを処理する。
【0049】
幾つかの実施形態においては、DCU236は更に、データ収集コマンドを実行するためのシステムログデータを取り出すために、OS218、228および238にアクセスするように構成されている。システムログを指し示すデータソースID405(図4)のようなデータソースIDを有するデータ収集コマンド400(図4)のようなデータ収集コマンドをアプリケーションが送信すると、DCU236は、OSからシステムログにアクセスし、後処理パラメータ410(図4)などのような後処理指示に基づいてシステムログを処理し、システムログを収集されたデータとしてサーバ120に転送する。幾つかの実施形態においては、システムログは、OS218、228および238により生成されるLinux(登録商標)OSのシスログ(syslog)である。幾つかの実施形態においては、システムログは、OS218、228および238により生成されるDiagnostic Log and Trace(DLT)ログ(診断ログとトレースログ)である。
【0050】
DCU236は更に、データ収集コマンドにおける命令データに基づいて、収集されたデータを処理するように構成されている。命令データは、収集されたデータに対して実行される所定の動作を示している。DCU236は、送信機にデータ収集コマンドの結果をユーザに送信することを指示する前に、データ収集コマンドに従って、収集されたデータを処理するように構成されている。幾つかの実施形態においては、この処理動作は、画像トリミング、画像のサイズ変更、H.264などのようなビデオ符号化、pngまたはJPEGなどのような画像符号化、圧縮zip、例えば、Google Protocol Buffer(グーグルプロトコルバッファ)、ROSトピックなどを使用するデータシリアル化、または他の適切な動作を含んでいる。
【0051】
幾つかの実施形態においては、データ収集コマンドにおける命令データは、ツリー構造などのようなデータ構造を有している。ツリー構造は、カメラからの画像データなどのような、処理される収集されたデータに対応しているルートノードと、サーバ120(図1)またはUI110(図1)などのような外部装置に転送される出力データに対応しているリーフノードと、ルートノードおよびリーフノード以外であり且つデータの処理のユニットに対応している内部ノードとを備えている。幾つかの実施形態においては、内部ノードは、データサイズ変更処理、トリミング処理、H.264符号化などのようなビデオ符号化、JPEG符号化などのような画像符号化、ZIP圧縮などのようなデータ圧縮、または他の適切な動作の何れかに対応している。各リーフノードおよび内部ノードは、ルートノードまたは内部ノードのうちのノードに対応している単一の親ノードを有している。各ルートノードおよび内部ノードは、内部ノードおよびリーフノードのうちの少なくとも1つの子ノードを有している。各ノードは、他のノードとの少なくとも1つの親子関係を有している。親子関係とは、親ノードに対応している処理のユニットが、子ノードに対応している処理のユニットにデータを出力するということを意味している。幾つかの実施形態においては、命令データは有向グラフの構造を有している。ツリー構造またはグラフ構造を有することにより、ユーザは、データの順次処理に加えて、例えば、図6において示されているように、データの並行処理に分岐させることができる命令データを柔軟に定義することができる。幾つかの実施形態においては、各ノードは、処理のタイプを識別する処理ユニットIDと、その処理のためのパラメータとを備えている。幾つかの実施形態においては、処理ユニットIDは、「画像圧縮JPEG」、「画像トリミング」、「画像サイズ変更」などのような処理ユニットの名前を表しているテキストフォーマットを有している。幾つかの実施形態においては、処理ユニットIDは、処理の特定のユニットに唯一的に割り当てられる汎用固有識別子(UUID)を有している。命令データに応答して、DCU236は、命令データに対応する収集されたデータの処理を実行する。追加的な説明が、図6と関連して下記に提供される。
【0052】
幾つかの実施形態においては、アプリケーションは、何れのタイプの処理がDCU236により利用可能かについての情報を受信するためにDCU236に問い合わせるように構成されている。幾つかの実施形態においては、DCU236は、問い合わせに応答して、処理ユニットIDのリストを送る。幾つかの実施形態においては、アプリケーションは、DCU236から受信した情報におけるキーワードを識別することに基づいて自動的に更新することができる。例えば、「png」または「jpeg」のようなキーワードと共に、「トリミング」、「サイズ変更」または「圧縮」のようなキーワードは、アプリケーションが、実行される動作を識別し、収集されたデータに対して実行される所望の動作を自動的に選択することを可能にする。このレベルの精巧さを有するようにアプリケーションを作成することは、最初にユーザによる大量の作業を生じさせることになるが、アプリケーションが車両に設置されてしまえば、アプリケーションを更新することをユーザが回避することを支援する。
【0053】
幾つかの実施形態においては、DCU236は、アプリケーションからの問い合わせ、またはDCU236内で利用可能なあるタイプの処理動作についてのオプションを要求する受信したデータ要求からの問い合わせを受信するように構成されている。例えば、DCU236は、DCU236が実施することができるデータ圧縮のタイプに関する問い合わせを受信することができる。DCU236は、例えば、利用可能な圧縮タイプと関連付けられている圧縮ID情報を含むテーブルを用いて応答するように構成されている。幾つかの実施形態においては、アプリケーションは、DCU236からの受信された情報のキーワード識別に基づいて自動的に更新することができる。幾つかの実施形態においては、DCU236からの情報はユーザに送信され、ユーザは、DCU236内で利用可能なオプションに基づいて、特定の動作タイプを有するアプリケーションまたはデータ要求を更新することができる。
【0054】
DCU236は、ツリー構造または有向グラフ構造を有している命令データを使用してデータを処理する。DCU236によるツリー構造処理の非限定的な例が、図6において下記に記述される。図6の非限定的な例においては、画像データ605はルートノードに対応しており、処理610、615、620および630のユニットは、内部ノードに対応しており、アップロード625および635はリーフノードに対応している。DCU236は、ユーザにより所望されるフォーマットでデータを生成するために、ツリー構造または有向グラフ構造に対応する順序で種々の動作を実行することができる。DCU236は、いくつかの初期処理をすでに経たデータを処理することができる。例えば、DCU236は、トリミングプロセスをすでに経た画像のサイズを変更することができる。DCU236は、以前に処理されたデータに対して複数の動作を実行することができる。例えば、DCU236は、トリミングされた画像の複数回の圧縮を実行することができる。幾つかの実施形態においては、DCU236は、その後の処理動作の間は、以前に処理された2つのデータを組み合わせることはできない。例えば、幾つかの実施形態においては、DCU236は、トリミングされた画像およびサイズが変更された画像を単一の動作では圧縮することができない。代わりに、DCU236は、トリミングされた画像およびサイズが変更された画像を別々に圧縮することができる。
【0055】
幾つかの実施形態においては、データを処理するための命令は、命令がどのように実施されるべきかについての情報を含んでいる。幾つかの実施形態においては、データ収集コマンドにおける後処理パラメータ410(図4)などのようなパラメータは、処理のユニットのために使用されるパラメータを含んでいる。例えば、命令が画像のサイズ変更を示している幾つかの実施形態においては、データ収集コマンドにおけるサイズ変更処理のユニットに対応しているノードは、サイズが変更される画像の所望のサイズを含んでいる。命令が画像のトリミングを示している幾つかの実施形態においては、データ収集コマンドにおけるトリミング動作のユニットに対応しているノードは、トリミング対象の長方形の左上の点と右下の点の(x、y)位置を含んでいる。当業者は、これらは単なる例にすぎず、この開示は、収集されたデータの処理を実施するための広く多様な命令をカバーしているということを認識するであろう。
【0056】
DCU236はまた、車両内の送信機に、各リーフノードに対応している処理されたデータをUI110(図1)またはサーバ120(図1)などのような外部装置に送信することを指示することができる。幾つかの実施形態においては、処理されたデータは、対応するメタデータと共に送信される。幾つかの実施形態においては、処理されたデータは、対応するメタデータと共に、処理されたデータおよびメタデータが送信されるまでメモリユニット237に格納される。幾つかの実施形態においては、処理されたデータおよびメタデータは、送信の後にメモリユニット237から消去される。幾つかの実施形態においては、処理されたデータおよびメタデータは、データが受信されたという外部装置からの確認を受信した後にメモリユニット237から消去される。幾つかの実施形態においては、DCU236は、データ収集コマンドにおける優先度情報、またはデータ収集コマンドの解析の間にDCU236により決定される優先度情報に基づいて、処理されたデータおよびメタデータの送信の優先度を決定するように構成されている。
【0057】
幾つかの例においては、車両内でデータを処理することは、車両から送信されるデータの量を削減し、このことは、車両と、UI110(図1)またはサーバ120(図1)などのような外部装置との間のデータの輻輳を低減すると共に、車両の電力消費を低減することを支援する。電力消費を低減することは、車両が電欠になるリスクを低減することを支援する。例えば、電気車両(EV)のバッテリが枯渇するリスクが低減される。幾つかの実施形態においては、DCU236は、車両の充電状態(SOC)が第1閾値未満の場合には、処理されたデータを送信せずに、処理されたデータを保持するように構成されている。幾つかの実施形態においては、DCU236は、車両のSOCが、第1閾値よりも低い第2閾値未満の場合には、収集されたデータを処理せずに、収集されたデータを格納するように構成されている。幾つかの実施形態においては、DCU236は、車両のSOCが、第2閾値よりも低い第3閾値未満の場合には、対応するデータを収集せずに、アプリケーションからの命令、または受信したデータ要求を格納するように構成されている。SOCが低い間、電力を消費する動作を回避することにより、車両が電源を枯渇させるリスクが低減される。
【0058】
幾つかの例においては、車両内でデータを処理することは、車両から送信されるデータの量を増大する。増大したデータの量は、受信した情報に基づいて、アプリケーションを更新するかどうか、アプリケーションをどのように更新するかを決定するためにアプリケーション設計者が利用可能なより良好な情報をもたらす。
【0059】
車両と外部装置との間のデータの輻輳を低減することはまた、車両が、車両内のアプリケーション、OS、または他の装置を更新または最適化するために使用できる情報を受信できることを確実にすることを支援する。例えば、OTA更新を介した、自動運転システムなどのようなアプリケーションのソフトウェアの更新は、乗員に対して車両が安全且つ快適に運転されることを支援する。例えば、交通情報の更新は、車両内のカーナビゲーションシステムが、車両の走行ルートを決定することを支援する。例えば、マップの更新は、車両内のカーナビゲーションシステムが、車両の走行ルートを決定することを支援する。例えば、マップの更新は、車両内の自動運転システムが車両を安全に走行させることを支援する。車両と外部装置との間のデータの輻輳を低減することは、ソフトウェアの更新、交通の更新、マップの更新などのようなデータが、車両内のアプリケーションおよび構成要素による使用のために車両により適切に受信されることを確実にすることを支援する。
【0060】
システム200は、センサデータ、アプリケーションログ、またはシステムログなどのようなデータを収集するかどうか、何れのタイプのデータを収集するかを決定するために、ユーザからのデータ収集コマンドと共にアプリケーションを利用することができる。システム200は、ユーザが新しいアプリケーションを開発しまたは既存のアプリケーションを更新することができるように所望のフォーマットでデータをユーザに提供するために、収集されたデータを処理することができる。システム200は、アプリケーションのプログラミング言語と、ユーザにより所望されるデータ構造とに依存しない。その結果、システム200は、受信したデータの意味を決定するためにユーザが特殊な装置または知識を使用することを低減または回避するために、ユーザにカスタマイズされたデータを提供することができる。幾つかの実施形態においては、システム200はまた、ユーザに提供される瑣末なデータを削減し、このことは、新しいアプリケーションを開発しまたは既存のアプリケーションを更新するためのユーザ時間を節約する。その結果、より高い信頼性を有している向上されたアプリケーションが、他のシステムよりも早く車両のオペレータにより容易に利用可能になる。
【0061】
図3は、幾つかの実施形態に従う、カスタマイズされたデータを収集する方法300のフローチャートである。幾つかの実施形態においては、方法300は、システム100(図1)またはシステム200(図2)を使用して実施される。方法300は、アプリケーション、OS、およびDCUなどのような装置への参照を含んでいる。当業者は、これらの装置は、本開示の理解を支援するための単なる例にすぎず、本開示の範囲を限定することは意図されていないということを認識するであろう。更に、当業者は、例えば、DCUによる処理のために、UI110(図1)またはサーバ120(図2)などのような外部装置からデータ要求を受信するように方法300を修正できるということを理解するであろう。
【0062】
方法300は、アプリケーションが、トリガーイベントが発生したかどうかを判定する動作305を含んでいる。幾つかの実施形態においては、トリガーイベントは、アプリケーションの「クラッシュ」、アプリケーションにおいて検出された異常、または他の適切な検出された出来事を含んでいる。幾つかの実施形態においては、トリガーイベントは、車両内のまたは車両の周囲の環境における出来事を含んでいる。幾つかの実施形態においては、トリガーイベントは、ユーザからの要求の受信に基づいている。トリガーイベントの検出に応答して、方法300は動作310に進む。トリガーイベントを検出しないことに応答して、方法300は動作305に戻ってトリガーイベントの検出を待つ。
【0063】
方法300は更に、データ収集コマンドがアプリケーションにより生成される動作310を含んでいる。データ収集コマンドは、アプリケーション内の命令に基づいて生成される。データ収集コマンドは、収集するデータのタイプ、収集するデータの継続時間、収集するデータの頻度、収集されるデータのソース、データ収集コマンドを生成するアプリケーションに対する識別情報、および、収集されたデータをどのように処理するかについての処理指示を含んでいる。幾つかの実施形態においては、データのタイプは、センサデータ、アプリケーションログデータ、またはシステムログデータの少なくとも1つを含んでいる。幾つかの実施形態においては、データ収集コマンドは更に、データ収集コマンドに対する優先度レベル情報を含んでいる。幾つかの実施形態においては、優先度レベルは、ユーザのアイデンティティに基づいて設定される。幾つかの実施形態においては、優先度レベルは、アプリケーションの機能に基づいて設定される。幾つかの実施形態においては、DCUは、データ収集コマンドにおける優先度レベルを無効にする。
【0064】
方法300は更に、アプリケーションがデータ収集コマンドをOSに送信する動作315を含んでいる。幾つかの実施形態においては、アプリケーションのプログラミング言語またはデータ構造は、DCUのプログラミング言語またはデータ構造とは異なっている。OSは、APIを使用して、データ収集コマンドにおける命令を実施するためにDCUにより使用可能になるように、アプリケーションからのデータ収集コマンドの通信を促進することができる。
【0065】
方法300は更に、OSがデータ要求をDCUに送信する動作320を含んでいる。データ要求をDCUに送信するためにOSを使用することは、方法300をアプリケーションのデータ構造およびプログラミング言語に依存させないことを支援する。これは、方法300が、広範なユーザにより開発されたアプリケーションを使用して多数のシステムにわたって実施される柔軟性を高める。
【0066】
方法300は更に、DCUがデータ収集コマンドを受信する動作325を含んでいる。方法300においては、DCUはデータ収集コマンドをOSから受信する。幾つかの実施形態においては、DCUはデータ収集コマンドをアプリケーションから直接受信する。幾つかの実施形態においては、DCUはデータ収集コマンドをUI110(図1)などのような外部装置から受信する。
【0067】
方法300は更に、データ収集コマンドが、優先度情報に基づくDCUによる処理のためにキューに追加される動作330を含んでいる。キューは、データ収集コマンドを満たすデータが収集されてDCUにより処理される順序を決定する。優先度レベルを含むことによって、高い値のデータ収集コマンドが低い値のデータ収集コマンドよりも迅速に対処されるように、DCUは優先度に基づく態様でデータ要求を遂行することができる。このことは、車両の性能を最適状態に維持することを支援する。幾つかの実施形態においては、データ収集コマンドの優先度レベルは、DCUがデータ収集コマンドを受信してからの時間が長くなるにつれて増大する。データ収集コマンドが優先度情報を含んでいない幾つかの実施形態においては、データ収集コマンドは、DCUがデータ要求を受信したときのタイムスタンプに基づいてキューに追加される。データ収集コマンドが優先度情報を含んでいない幾つかの実施形態においては、データ収集コマンドは、ユーザのアイデンティティ、または、データ収集コマンドを生成したアプリケーションの識別情報に基づいてキューに追加される。
【0068】
方法300は更に、キューは空かどうかをDCUが判定する動作335を含んでいる。キューが空であるという判定に応答して、方法300は動作335に戻って新しいデータ要求を受信することを待つ。キューは空でないという判定に応答して、方法300は動作340に進む。
【0069】
方法300は更に、DCUがキューから次の項目を選択する動作340を含んでいる。次の項目は、キューにおいて最も高い優先度レベルを有しているデータ収集コマンドである。
【0070】
方法300は更に、より低い優先度のデータ収集コマンドがキューから取り除かれる動作345を含んでいる。より低い優先度のデータ収集コマンドは、キューの利用可能な容量が閾値容量値未満になり且つデータ要求の優先度レベルが優先度閾値未満であることに応答してキューから取り除かれる。キューが利用可能な容量に近いときに低い優先度のデータ収集コマンドをキューから取り除くことは、高い優先度のデータ収集コマンドがキューに追加され得ることを確実にすることを支援する。幾つかの実施形態においては、動作345は省略される。例えば、DCUがキューに対して十分なメモリ容量を有していると判定される幾つかの実施形態においては、動作345が方法の性能を著しく改善することはないので、動作345は省略される。
【0071】
方法300は更に、重複するデータ収集コマンドがキューから除去される動作350を含んでいる。幾つかの実施形態においては、データ収集コマンドが、以前のデータ収集コマンドですでに要求されたデータを要求するときは、後から受信したデータ収集コマンドは動作350においてキューから除去される。幾つかの実施形態においては、データ収集コマンドが、以前のデータ収集コマンドと重なっているデータを収集することを要求しているときは、後から受信したデータ収集コマンドの重なっている部分は、動作350によりキューから除去される。例えば、幾つかの実施形態においては、第1データ収集コマンドは、センサのデータを時間t=100、102、104、106で要求し、後続のデータ収集コマンドは、同じセンサからのデータを時間t=102、103、104、105、106、107、108で要求すると、第1データ収集コマンドと重複する後続のデータ収集コマンドに対する情報の一部が除去され、それにより、修正された後続のデータ収集コマンドは、センサからのデータを時間t=103、105、107、108において収集することを要求するだけである。DCUは、キューにおけるデータ要求を調査し、データ要求の何れかが同じアプリケーションまたはユーザからであり且つデータの収集および処理について同じ命令を有しているかどうかを判定する。幾つかの実施形態においては、同じアプリケーションが異なる情報についての複数のデータ収集コマンドをDCUに送るので、アプリケーションまたはユーザのアイデンティティのみに基づいてデータ収集コマンドを除去することは、データ収集コマンドが適切に処理されないというリスクを増大する。重複するデータ収集コマンドをキューから除去することは、DCUによる不要な処理および送信を低減することを支援する。このことは、DCUを含む車両の電力消費およびデータの輻輳を低減する。
【0072】
方法300は更に、DCUがデータを収集して処理する動作355を含んでいる。DCUは、アプリケーションまたはユーザからのデータ要求により要求されたデータのタイプに基づいて、バッファ領域、1つ以上のセンサ、アプリケーション、またはメモリからデータを収集する。DCUがデータ収集コマンドの一部を除去した幾つかの実施形態においては、データ収集コマンドの残りの部分に関するデータのみが収集される。幾つかの実例においては、2つの重なっているデータ収集コマンド間の処理は異なっている。重なっているデータ収集コマンドが異なる処理指示を有している幾つかの実施形態においては、すべてのデータはデータ収集コマンドのそれぞれに従って処理される。以前のデータ収集コマンドと重なっているデータ収集コマンドの部分を省略することにより、DCUは処理負荷およびエネルギー消費を低減する。データ収集コマンドについて設定された全体のデータを依然として処理することにより、ユーザには所望のデータのすべてが依然として提供される。その後、DCUは、データ収集コマンドにおける命令に基づいて、収集されたデータを処理する。データの処理の詳細は、幾つかの実施形態に従って、上記に提供されている。更に、データの処理の非限定的な例が、図5A図5Bおよび図6において下記に詳細に記述される。
【0073】
方法300は更に、処理されたデータが、ユーザ、アプリケーションまたは外部装置に送信される動作360を含んでいる。幾つかの実施形態においては、処理されたデータは例えばUI110(図1)によりユーザに送信される。幾つかの実施形態においては、処理されたデータと共に通知が送信される。幾つかの実施形態においては、通知は可聴警告または可視警告を含んでいる。幾つかの実施形態においては、通知は、ユーザにより制御可能なモバイル装置に通知を自動的に表示させる。幾つかの実施形態においては、処理されたデータは格納のためにアプリケーションに送信され、通知は、処理されたデータにアプリケーションからアクセスするためにユーザに送信される。幾つかの実施形態においては、処理されたデータは格納のためにサーバ120(図1)などのような外部装置に送信される。幾つかの実施形態においては、処理されたデータは外部装置に送信され、通知は、処理されたデータに外部装置からアクセスするために、例えばUI110(図1)によりユーザに送信される。
【0074】
方法300は更に、DCUがメモリからデータを除去する動作365を含んでいる。幾つかの実施形態においては、データの除去は、収集された生データと、処理されたデータと関連付けられているメタデータだけでなく、処理されたデータの除去も含んでいる。幾つかの実施形態においては、データの除去は、データを格納しているメモリのセクションの識別と、新しいデータによって上書きされるようにメモリのこのセクション利用可能にすることとを含んでいる。データの除去は、新しいデータ要求を受信して処理するDCUの機能が低下し又は妨げられる容量にメモリが到達する事態を回避することを支援する。
【0075】
方法300は更に、データの収集、処理または送信の間にエラーが検出されたかどうかに関する判定がなされる動作370を含んでいる。幾つかの実施形態においては、エラーは、メモリに格納されているデータの一部が読み取れなくなること、またはメモリの一部への書き込み動作ができないことに応答して検出される。幾つかの実施形態においては、エラーは、DCUがアプリケーションまたは外部装置と適切にインタフェースを取ることができないことに応答して検出される。幾つかの実施形態においては、エラーは、HTTPエラー、データパケットの巡回冗長検査(CRC)エラーなどのネットワークエラーであり、DCUが効果的にデータの送受信をすることができないことを示している。例えば、幾つかの実施形態においては、ネットワークエラーは、動作360の間に、車両と、サーバ120またはUI110(図1)などのような外部装置との間の接続性が失われたことに応答して検出される。エラーが発生したという判定に応答して、方法300は動作375に進む。エラーは発生しなかったという判定に応答して、方法300は、キューが空かどうかを判定するために動作335に戻る。幾つかの実施形態においては、エラーが検出されないときは、エラーがなく首尾よく完了されたデータ収集コマンドはキューから除去され、エラーが検出されたときは、首尾よく完了せずにエラーにより終了したデータ収集コマンドは、キューから除去されずに、完了されていないデータ収集コマンドが再び処理されるようにキューに保管される。幾つかの実施形態においては、エラーは、DCUによりデータ要求が受信されたが処理されないことに応答して検出される。このタイプのエラーは、幾つかの実例においては、DCUが作動していないことまたはDCUがクラッシュしたことを示している。幾つかの実施形態においては、エラーは、データ要求がDCUにより誤って識別されることに応答して検出される。このタイプのエラーは、幾つかの実例においては、アプリケーションとOSとの間のAPIが、DCUとOSとの間のAPIとは異なるバージョンであることを示している。幾つかの実施形態においては、エラーは、無効な命令が含まれていることに応答して検出される。このタイプのエラーは、幾つかの例においては、アプリケーションに問題があること、またはユーザから受信したデータに問題があることを示している。幾つかの実施形態においては、エラーは、処理指示のツリーまたはグラフ構造が無効なコマンドを含んでいることに応答して検出される。このタイプのエラーは、幾つかの例においては、アプリケーションに問題があること、またはユーザから受信したデータに問題があることを示している。
【0076】
方法300は更に、エラーが、DCUからの送信用のエラーログに格納される動作375を含んでいる。幾つかの実施形態においては、エラーログは外部装置またはユーザによりアクセス可能である。幾つかの実施形態においては、エラーログは、各エラーが検出された後に、外部装置またはユーザに送信される。幾つかの実施形態においては、エラーログは、所定数の新しいエラーがエラーログに入力されると、まとめて外部装置またはユーザに送信される。エラーログを生成および報告することは、データ収集コマンドの更なる処理が抑制されるレベルまでDCUのメモリが劣化しているかどうかを判定することを支援する。
【0077】
幾つかの実施形態においては、方法300は追加的動作を含んでいる。例えば、幾つかの実施形態においては、方法300は、DCUが、データ収集コマンドにおける優先度情報を調査し、新たに受信したデータ収集コマンドをキューのどこに置くかを決定することを含んでいる。幾つかの実施形態においては、方法300は、異なる順序の動作を含んでいる。例えば、幾つかの実施形態においては、動作350は動作345よりも前に実行される。幾つかの実施形態においては、方法300の少なくとも1つの動作は省略される。例えば、幾つかの実施形態においては、動作345が省略される。幾つかの実施形態においては、方法300が、外部装置から受信したデータ収集コマンドを処理するために使用されるときは、動作305~320が省略される。
【0078】
図4は、幾つかの実施形態に従う、データ収集コマンド400の図である。幾つかの実施形態においては、データ収集コマンド400は、システム100(図1)、システム200(図2)、および/または方法300(図3)において使用可能である。幾つかの実施形態においては、データ収集コマンド400は、アプリケーション216、アプリケーション226、またはアプリケーション232(図2)などのようなアプリケーションにより生成される。幾つかの実施形態においては、データ収集コマンド400は、UI110(図1)などのようなUIを使用してユーザにより生成される。当業者は、データ収集コマンド400は単なる例としてのデータ収集コマンドにすぎず、異なるパラメータを有しているデータ収集コマンドも本開示の範囲内であるということを認識するであろう。
【0079】
データ収集コマンド400はイベント時間パラメータ401を含んでいる。イベント時間パラメータ401は、トリガーイベントが検出された時間を示している。データ収集コマンド400は更に時間範囲パラメータ402を含んでおり、時間範囲パラメータ402は、イベントパラメータ403に対する開始時間と、イベントパラメータ404に対する終了時間を示している。時間範囲パラメータ402は、トリガーイベントの検出に対して、データが収集されるべき継続時間を示している。イベントパラメータ403に対する開始時間は、データが収集されるべきトリガーイベントの検出よりも前の期間を示している。イベントパラメータ404に対する終了時間は、データが収集されるべきトリガーイベントの検出の後の期間を示している。幾つかの実施形態においては、時間範囲パラメータ402は更に、イベントパラメータ403に対する開始時間と、イベントパラメータ404に対する終了時間との間にデータがどのくらいの頻度で収集されるかを示している頻度パラメータ408を含んでいる。データ収集コマンド400はデータソースIDパラメータ405を含んでいる。データソースIDパラメータ405は、データ収集コマンド400を満たすためのデータを収集するために何れのセンサまたはアプリケーションを使用すべきかを示している。幾つかの実施形態においては、データソースIDパラメータ405は、センサおよび/またはアプリケーションの配列を含んでいる。幾つかの実施形態においては、データソースIDパラメータ405は、1つ以上のセンサのみを含んでいる。幾つかの実施形態においては、データソースIDパラメータ405は、1つ以上のアプリケーションのみを含んでいる。幾つかの実施形態においては、データソースIDパラメータ405は、少なくとも1つのセンサと、少なくとも1つのアプリケーションとを含んでいる。幾つかの実施形態においては、データソースIDパラメータ405はOSを含んでいる。データ収集コマンド400は更に優先度パラメータ406を含んでいる。優先度パラメータ406は、データ収集コマンド400により要求された優先度レベルを示している。上記で検討したように、幾つかの実施形態においては、DCU236(図2)などのようなDCUは優先度パラメータ406を無効にする。データ収集コマンド400は更に、要求者IDパラメータ407を含んでいる。要求者IDパラメータ407は、データ収集コマンド400のソースを示している。幾つかの実施形態においては、要求者IDパラメータ407は、データ収集コマンド400を生成したアプリケーションを示している。幾つかの実施形態においては、要求者IDパラメータ407は、データ収集コマンド400を生成したユーザのアイデンティティを示している。データ収集コマンド400は更に、後処理パラメータ410を含んでいる。後処理パラメータ410は、データがユーザに対して利用可能とされる前に、何れの処理が収集されたデータに対して実行されるべきかを示している。幾つかの実施形態においては、後処理パラメータ410は、収集されたデータの処理を実施するためのツリー構造を定義する。
【0080】
図5Aは、幾つかの実施形態に従う、データ収集コマンドについてのインタフェース記述言語(IDL)の例により表されているコード500Aの図である。コード500Aは、システム100(図1)またはシステム200(図2)などのような、データ収集コマンドに基づいてデータを収集および処理すると共に、データ収集コマンドの生成を実施するために使用されるシステムに依存しない。幾つかの実施形態においては、コード500Aは、JavaScript Open Notation(JSON:ジャバスクリプトオープンノーテーション)で記述されている。幾つかの実施形態においては、コード500Aは、異なるプログラミング言語で記述されている。コード500Aは優先度レベル情報510Aを含んでいる。コード500Aは更に、時間範囲情報520Aを含んでいる。コード500Aは更に、処理指示のツリー構造を表している後処理情報530Aを含んでいる。このツリー構造は後処理パラメータ410(図4)の非限定的な例である。コード500Aは更に、ログレベル情報540Aを含んでいる。ログレベル情報540Aは、データ収集コマンドを満たすために、データ収集コマンドが何れのタイプの情報を他のアプリケーションから取り出すべきかを示している。当業者は、コード500Aは単なる例にすぎず、データ収集コマンドについての追加情報および他のタイプのデータ構造も本開示の範囲内であるということを理解するであろう。
【0081】
図5Bは、幾つかの実施形態に従う、画像トリミングのためのコード500Bの図である。コード500Bは、トリミング処理のユニットのノードに含まれているパラメータを表している。コード500Bは、システム100(図1)またはシステム200(図2)などのような、データ収集コマンドに基づいてデータを収集および処理すると共に、データ収集コマンドの生成を実施するために使用されるシステムに依存しない。幾つかの実施形態においては、コード500BはJSONで記述されている。幾つかの実施形態においては、コードは異なるプログラミング言語で記述されている。幾つかの実施形態においては、コード500Bは、後処理情報530A(図5A)に対してなどのような、データ収集コマンドの一部として使用可能である。
【0082】
コード500Bはトリミングコーナー情報510Bを含んでいる。トリミングコーナー情報510Bは、トリミングされた画像の左上の角および右下の角の境界における場所を示している。コード500Bは更に、トリミングされた画像のサイズ変更後のx方向およびy方向におけるトリミングされた画像のサイズを示しているサイズ変更情報520Bを含んでいる。コード500Bは更に、画像のサイズ変更の間の補間のために使用されるアルゴリズムを示す補間情報530Bを示している。当業者は、コード500Bは単なる例にすぎず、画像トリミングのための追加情報および他のタイプのデータ構造も本開示の範囲内であるということを理解するであろう。当業者は、コード500Aは単なる例にすぎず、データ収集コマンドについての追加情報および他のタイプのデータ構造も本開示の範囲内であるということを理解するであろう。更に、当業者は、画像トリミングは単なる例にすぎず、追加的なタイプの処理も本開示の範囲内であるということを理解するであろう。
【0083】
図6は、幾つかの実施形態に従う、カスタマイズされたデータを生成するためにデータを処理する方法600のフローチャートである。幾つかの実施形態においては、方法600は、システム100(図1)またはシステム200(図2)を使用して実施される。幾つかの実施形態においては、方法600は、方法300(図3)の動作355の一部として実行される。方法600はツリー構造を有している。方法600では、ツリー構造の各子ノードは単一の親ノードを参照する。方法600では、複数の子ノードが親ノードを参照することができる。
【0084】
方法600は、画像データが受信される動作605を含んでいる。画像データは、ツリー構造においてルートノードとして知られている。画像データは、検出されたトリガーイベントに応答して収集される。幾つかの実施形態においては、画像データは、車両に取り付けられている1台以上のカメラから収集される。幾つかの実施形態においては、画像データは、バッファ領域238(図2)などのようなバッファ領域から画像データを取り出すことにより受信される。幾つかの実施形態においては、画像データは単一の画像を含んでいる。幾つかの実施形態においては、画像データは、アプリケーションまたはユーザから受信したデータ収集コマンドにおける命令に基づいて定義される時間範囲において取り込まれた複数の画像を含んでいる。
【0085】
方法600は更に、画像データがトリミングされる動作610を含んでいる。画像をトリミングすることは、方法600のツリー構造における後続の処理のために画像データの部分を選択する。画像の選択されていない部分は除去されて更なる処理から排除される。幾つかの実施形態においては、画像データは、アプリケーションまたはユーザからのデータ収集コマンドにおける命令に基づいてトリミングされる。幾つかの実施形態においては、画像は、データ収集コマンドにおける命令により予め定められた画像データの部分を除去するようにトリミングされる。
【0086】
方法600は更に、トリミングされた画像データのサイズが変更される動作615を含んでいる。サイズ変更は、動作610において生成された、トリミングされた画像に対して実行され、動作605において受信された元の画像データに対しては実行されない。幾つかの実施形態においては、画像データは、データ収集コマンドにおける命令に基づいてサイズが変更される。幾つかの実施形態においては、画像データは、データ収集コマンドにおける命令に基づいて、所定のピクセル数を有するようにサイズが変更される。幾つかの実施形態においては、画像データは、データ収集コマンドにおける命令に基づいて、定義された係数、例えば、1.5または0.75により画像データのサイズを調整することに基づいてサイズが変更される。幾つかの実施形態においては、データ要求における命令は更に、画像データのサイズ変更の間に使用されるアルゴリズムを含んでいる。
【0087】
方法600は更に、画像データのサイズが変更された第1画像が、pngロスレスアルゴリズムを使用して圧縮される動作620を含んでいる。圧縮は、動作615において生成されたサイズが変更された画像に対して実行され、動作610において生成されたトリミングされた画像、または動作605において受信した生画像データに対しては実行されない。圧縮は、データ収集コマンドにおける命令により定義されたアルゴリズムを使用して実行される。圧縮はまた、データ収集コマンドにおける命令に基づいて第1画像のみに対して実行される。
【0088】
方法600は更に、圧縮された第1画像がアップロードされる動作625を含んでいる。動作620では、ツリー構造におけるリーフノードとして知られている圧縮画像が生成される。圧縮された第1画像は、ユーザ、またはUI110(図1)若しくはサーバ120(図1)などのような外部装置への送信のためにキューにアップロードされる。幾つかの実施形態においては、圧縮された第1画像は、ユーザによりアクセス可能なメモリにアップロードされ、可聴警告または可視警告などのような通知が、メモリにアクセスするためにユーザに送信される。
【0089】
方法600は更に、サイズが変更された画像データが、H264アルゴリズムを使用して圧縮される動作630を含んでいる。圧縮は、動作615において生成されたサイズが変更された画像に対して実行され、動作610において生成されたトリミングされた画像、または、動作605において受信された生画像データに対しては実行されない。方法600では、サイズが変更された画像データの一部が、2つの異なるアルゴリズム、すなわち、動作620におけるpngロスレスと、動作630におけるH264とを使用して圧縮される。圧縮は、データ収集コマンドにおける命令により定義されたアルゴリズムを使用して実行される。圧縮はまた、データ収集コマンドにおける命令に基づいて、すべての画像データに対して実行される。
【0090】
方法600はまた、動作630からの圧縮された画像データがアップロードされる動作635を含んでいる。動作630では、ツリー構造におけるリーフノードとして知られている圧縮画像が生成される。圧縮された画像データは、ユーザ、またはUI110(図1)若しくはサーバ120(図1)などのような外部装置への送信のためにキューにアップロードされる。幾つかの実施形態においては、圧縮された画像データは、ユーザによりアクセス可能なメモリにアップロードされ、可聴警告または可視警告などのような通知が、メモリにアクセスするためにユーザに送信される。幾つかの実施形態においては、動作625と動作635とは組み合わされて実行され、通知は、両方の動作625および635が完了するまでユーザに送信されない。幾つかの実施形態においては、通知は、動作625または動作635の何れかが完了するとユーザに送信される。動作625および動作635は類似しているステップを含んでいるが、動作625および動作635のそれぞれは単一の親ノードを有している。つまり、動作625は動作620の親ノードを有しており、動作635は動作630の親ノードを有している。動作625および635は共通の親ノードを共有しない。幾つかの実施形態においては、動作620および動作630は、プロセッサ702の多くのコアを利用することにより並行して処理される。幾つかの実施形態においては、動作625と635および並行して処理される。
【0091】
幾つかの実施形態においては、方法600は追加的動作を含んでいる。例えば、幾つかの実施形態においては、多数のトリミング動作が、受信した画像データに対して実行される。幾つかの実施形態においては、方法600の少なくとも1つの動作は省略される。例えば、幾つかの実施形態においては、動作615は省略され、動作620および630は、動作610を親ノードとして使用して実行される。幾つかの実施形態においては、方法600における動作の順序が変えられる。例えば、幾つかの実施形態においては、動作625および635は同時に実行される。
【0092】
図7は、幾つかの実施形態に従う、カスタマイズされたデータの収集を実施するためのシステム700の図である。システム700はハードウェアプロセッサ702および非一時的コンピュータ可読格納媒体704を含み、コンピュータ可読格納媒体704は、コンピュータプログラムコード706、すなわち一組の実行可能な命令が符号化され、すなわちそれを格納している。コンピュータ可読格納媒体704はまた、UI110(図1)またはサーバ120(図1)などのような外部装置とのインタフェースを取るための命令707が符号化されている。プロセッサ702は、コンピュータ可読格納媒体704にバス708を介して電気的に結合されている。プロセッサ702はまた、I/Oインタフェース710にバス708により電気的に結合されている。ネットワークインタフェース712はまた、プロセッサ702にバス708を介して電気的に接続されている。ネットワークインタフェース712は、プロセッサ702およびコンピュータ可読格納媒体704がネットワーク714を介して外部要素に接続することができるようにネットワーク714に接続されている。プロセッサ702は、システム100(図1)、システム200(図2)、方法300(図3)または方法600(図6)において記述されているような動作の一部またはすべてを実行するためにシステム700が使用可能となるように、コンピュータ可読格納媒体504において符号化されているコンピュータプログラムコード706を実行するように構成されている。
【0093】
幾つかの実施形態においては、プロセッサ702は、中央演算処理装置(CPU)、グラフィックス処理ユニット(GPU)、マルチプロセッサ、分散型処理システム、特定用途向け集積回路(ASIC)、および/または適切な処理ユニットである。
【0094】
幾つかの実施形態においては、コンピュータ可読格納媒体704は、電子的、磁気的、光学的、電磁的、赤外線、および/または半導体システム(または装置若しくはデバイス)である。例えば、コンピュータ可読格納媒体704には、半導体メモリまたはソリッドステートメモリ、磁気テープ、リムーバブルコンピュータディスケット、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、剛体磁気ディスク、および/または光ディスクが含まれる。光ディスクを使用する幾つかの実施形態においては、コンピュータ可読格納媒体704には、コンパクトディスクリードオンリメモリ(CD-ROM)、コンパクトディスクリード/ライト(CD-R/W)、および/またはデジタルビデオディスク(DVD)が含まれる。
【0095】
幾つかの実施形態においては、格納媒体704は、システム100(図1)、システム200(図2)、方法300(図3)または方法600(図6)において記述されているような動作の一部またはすべてをシステム700に実行させるように構成されているコンピュータプログラムコード706を格納している。幾つかの実施形態においては、格納媒体704はまた、トリガーイベントパラメータ706、ツリーノードパラメータ718、データ処理パラメータ720、時間範囲パラメータ722、および/または、システム100(図1)、システム200(図2)、方法300(図3)または方法600(図6)において記述されているような動作の一部またはすべてを実行するための一組の実行可能な命令などのような、システム100(図1)、システム200(図2)、方法300(図3)または方法600(図6)において記述されているような動作の一部またはすべてを実行している間に生成される情報と共に、システム100(図1)、システム200(図2)、方法300(図3)または方法600(図6)において記述されているような動作の一部またはすべてを実行するために必要な情報を格納している。
【0096】
幾つかの実施形態においては、格納媒体704は、製造機械とのインタフェースを取るための命令707を格納している。命令707は、プロセッサ702が、システム100(図1)、システム200(図2)、方法300(図3)または方法600(図6)に記述されているような動作の一部またはすべてを効果的に実施するために、外部装置により読み取り可能な製造命令を生成することを可能にする。
【0097】
システム700はI/Oインタフェース710を含んでいる。I/Oインタフェース710は外部回路に結合されている。幾つかの実施形態においては、I/Oインタフェース710は、情報およびコマンドをプロセッサ702に伝達するためのキーボード、キーパッド、マウス、トラックボール、トラックパッド、および/またはカーソル方向キーを含んでいる。
【0098】
システム700はまた、プロセッサ702に結合されているネットワークインタフェース712を含んでいる。ネットワークインタフェース712は、システム700が、1つ以上の他のコンピュータシステムが接続されているネットワーク714と通信することを可能にする。ネットワークインタフェース712には、BLUETOOTH(ブルートゥース)(登録商標)、WIFI(登録商標)、WIMAX(登録商標)、GPRS(登録商標)、またはWCDMA(登録商標)などのような無線ネットワークインタフェース、または、ETHERNET(イーサネット)、USB、またはIEEE-1394などのような有線ネットワークインタフェースが含まれる。幾つかの実施形態においては、システム100(図1)、システム200(図2)、方法300(図3)または方法600(図6)において記述されているような動作のすべては、2つ以上のシステム700において実施され、トリガーイベント、ツリーノード、データ処理、および時間範囲などのような情報は、ネットワーク714を介して異なるシステム700間で交換される。
【0099】
本開示の1つの態様は車両に関する。車両はセンサを含んでいる。車両は更に、送信機を含んでいる。車両は更に、命令を格納するように構成されている非一時的コンピュータ可読媒体を含んでいる。車両は更に、非一時的コンピュータ可読媒体に接続されているプロセッサを含んでいる。プロセッサは、データ収集コマンドを受信または生成するために命令を実行するように構成されており、データ収集コマンドは、収集されたデータを処理するための処理指示を含んでおり、処理指示は、実行される多数の処理動作と、処理動作のそれぞれについての処理のタイプとを含んでいる。プロセッサは更に、データ収集コマンドに基づいて、センサ、アプリケーションログ、またはシステムログの少なくとも1つからデータを収集するために命令を実行するように構成されている。プロセッサは更に、処理指示に基づいて、収集されたデータを処理するために命令を実行するように構成されている。プロセッサは更に、処理されたデータを送信することを送信機に指示するために命令を実行するように構成されている。幾つかの実施形態においては、車両は更に、複数のセンサを含んでおり、センサは複数のセンサの1つであり、プロセッサは、受信したデータ収集コマンドに基づいて、複数のセンサからセンサを識別するために命令を実行するように構成されている。幾つかの実施形態においては、非一時的コンピュータ可読媒体は更に、非一時的コンピュータ可読媒体に格納され且つプロセッサにより実行されるアプリケーションを含んでおり、プロセッサは、トリガーイベントの発生の検出に応答して、データ収集コマンドを生成するように構成されている。幾つかの実施形態においては、非一時的コンピュータ可読媒体は、トリガーイベントを決定するための基準を格納するように構成されている。幾つかの実施形態においては、データ収集コマンドは、収集される情報の時間範囲についての指示を含んでいる。幾つかの実施形態においては、データ収集コマンドは優先度レベル情報を含んでいる。幾つかの実施形態においては、プロセッサは、データ収集コマンドにより定義されたツリー構造に基づいて、収集されたデータを処理するために命令を実行するように構成されている。幾つかの実施形態においては、データ収集コマンドは、処理動作の少なくとも1つを実行するためのアルゴリズムに関する情報を含んでいる。幾つかの実施形態においては、プロセッサは更に、第2データ収集コマンドを受信または生成し、第2データ収集コマンドに基づいて収集されるデータが、データ収集コマンドに基づいて収集されるデータと重なるかどうかを判定し、重なっているデータについてのデータ収集指示を第2データ収集コマンドから除去し、第2データ収集コマンドの全体を処理するために命令を実行するように構成されている。
【0100】
本開示の1つの態様は方法に関する。方法は、データ収集コマンドを受信することを含み、データ収集コマンドは、収集された収集データを処理するための処理指示を含んでおり、処理指示は、実行される多数の処理動作と、処理動作のそれぞれについての処理のタイプとを含んでいる。方法は更に、データ収集コマンドに基づいて、車両に接続されているセンサ、アプリケーションログ、またはシステムログの少なくとも1つからデータを収集することを含んでいる。方法は更に、処理指示に基づいて、収集されたデータを処理することを含んでいる。方法は更に、処理されたデータを送信することを送信機に指示することを含んでいる。幾つかの実施形態においては、方法は更に、データ収集コマンドに基づいて、車両に取り付けられた複数のセンサからセンサを選択することを含んでいる。幾つかの実施形態においては、方法は更に、アプリケーションを実行することを含み、アプリケーションを実行することは、トリガーイベントの発生の検出に応答して、データ収集コマンドを生成することを含んでいる。幾つかの実施形態においては、トリガーイベントは、アプリケーションのクラッシュと、アプリケーションの異常を検出することとを含んでいる。幾つかの実施形態においては、方法は更に、収集される情報の時間範囲についての命令を含むデータ収集コマンドを生成することを含んでいる。幾つかの実施形態においては、方法は更に、優先度レベル情報を含むデータ収集コマンドを生成することを含んでいる。幾つかの実施形態においては、収集されたデータを処理することは、データ収集コマンドにより定義されたツリー構造に基づいて、収集されたデータを処理することを含んでいる。幾つかの実施形態においては、方法は更に、処理動作の少なくとも1つを実行するためのアルゴリズムに関する情報を含むデータ収集コマンドを生成することを含んでいる。幾つかの実施形態においては、方法は更に、第2データ収集コマンドを受信または生成することと、第2データ収集コマンドに基づいて収集されるデータが、データ収集コマンドに基づいて収集されるデータと重なるかどうかを判定することと、重なっているデータについてのデータ収集指示を第2データ収集コマンドから除去することと、第2データ収集コマンドの全体を処理することとを含んでいる。
【0101】
本開示の1つの態様はシステムに関する。システムは、命令を格納するように構成されている非一時的コンピュータ可読媒体を含んでいる。システムは更に、非一時的コンピュータ可読媒体に接続されているプロセッサを含んでいる。プロセッサは、ユーザからの指示に基づいて、データ収集指示を受信するために命令を実行するように構成されており、データ収集指示は、トリガーイベント、収集されるデータのタイプ、およびデータが収集される時間範囲を含んでいる。プロセッサは更に、ユーザから処理指示を受信するために命令を実行するように構成されており、処理指示は、収集されたデータに対して実行される処理動作のツリー構造と、ツリー構造の各ノードについての処理のタイプとを備えている。プロセッサは更に、受信したデータ収集指示と、受信した処理指示とに基づいて、データ収集コマンドを生成するために命令を実行するように構成されている。プロセッサは更に、トリガーイベントの検出に応答して、車両のデータ収集ユニットへのデータ収集コマンドの送信を指示するために命令を実行するように構成されており、車両はセンサを有している。幾つかの実施形態においては、プロセッサは更に、データ収集コマンドの送信と併せて、アプリケーションログの送信を指示するために命令を実行するように構成されている。
【0102】
前述したものは、当業者が、本開示の態様をより良好に理解できるように、幾つかの実施形態の特徴の要点を述べている。当業者は、ここにおいて提示されている実施形態の、同じ目的を実行するためにおよび/または同じ利点を達成するために、他のプロセスおよび構造を設計または修正するための根拠として本開示を容易に使用できるということを認識すべきである。当業者はまた、そのような等価な構成は、本開示の思想および範囲から逸脱するものではなく、本開示の思想および範囲から逸脱することなく、ここにおいて種々の変更、置換、および修正を行うことができるということも認識すべきである。
図1
図2
図3
図4
図5A
図5B
図6
図7
【外国語明細書】