(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-11
(45)【発行日】2024-07-22
(54)【発明の名称】レイテンシ決定およびCPU使用決定を使用する安全なシステム動作
(51)【国際特許分類】
G06F 11/34 20060101AFI20240712BHJP
B60W 60/00 20200101ALI20240712BHJP
B60W 50/04 20060101ALI20240712BHJP
G06F 11/07 20060101ALI20240712BHJP
【FI】
G06F11/34 176
B60W60/00
B60W50/04
G06F11/07 196
G06F11/07 140R
(21)【出願番号】P 2021535709
(86)(22)【出願日】2019-12-19
(86)【国際出願番号】 US2019067584
(87)【国際公開番号】W WO2020132305
(87)【国際公開日】2020-06-25
【審査請求日】2022-12-19
(32)【優先日】2018-12-19
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-12-19
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】518156417
【氏名又は名称】ズークス インコーポレイテッド
(74)【代理人】
【識別番号】110001243
【氏名又は名称】弁理士法人谷・阿部特許事務所
(72)【発明者】
【氏名】ロバート エドワード サマーズ
(72)【発明者】
【氏名】トーマス マイケル フラナガン
(72)【発明者】
【氏名】アンドリュー ルイス キング
(72)【発明者】
【氏名】アーパン サイラス ラジャン
【審査官】青木 重徳
(56)【参考文献】
【文献】特開2017-074887(JP,A)
【文献】特開2018-109900(JP,A)
【文献】米国特許出願公開第2018/0050704(US,A1)
【文献】矢嶋 純 ほか,攻撃検知後の自動車の安全な停車を可能にするCANセキュリティシステム,SCIS2016 [USB],日本,2016年01月21日,3F3-2,pp.1-6
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/34
B60W 60/00
B60W 50/04
G06F 11/07
(57)【特許請求の範囲】
【請求項1】
自律車両であって、
第1のコンポーネントと、
第2のコンポーネントと、
1つまたは複数のプロセッサーと、
複数の実行している機能を決定するために
周期的に前記1つまたは複数のプロセッサーに問い合わせることと、
前記
第1のコンポーネントにより行われる1つまたは複数の第1の処理
と前記
第2のコンポーネントにより行われる1つまたは複数の第2の処理
とを表すデータ構造に少なくとも部分的に基づいて、前記複数の実行している機能に関連付けられた一意的なノード識別子を決定することと、
前記一意的なノード識別子とタイムスタンプを関連付けることと、
前記一意的なノード識別子および前記タイムスタンプに少なくとも部分的に基づいて、前記第1の
コンポーネントの
負荷を特定する第1のCPU使用
と前記第2の
コンポーネントの
負荷を特定する第2のCPU使用
とを決定することと、
第1のしきい値のCPU使用以上である前記第1のCPU使用、または第2のしきい値のCPU使用以上である前記第2のCPU使用に少なくとも部分的に基づいて前記自律車両に関連付けられたイベントを決定することと、
前記イベントに少なくとも部分的に基づいて、安全な
動作において前記自律車両を制御することと
を含む作動を行うために、前記1つまたは複数のプロセッサーによって実行可能な命令を格納する1つまたは複数のコンピューター読み取り可能な媒体を格納するメモリーと
を備えたことを特徴とする自律車両。
【請求項2】
前記作動は、
CPU使用パケットとして前記一意的なノード識別子および前記関連付けられたタイムスタンプを格納することと、
異常な自律車両イベントに関連付けられた時間のインジケーションを受信することと、
前記時間を含む時間範囲に対応する複数の前記CPU使用パケットを検索すること
と、
前記複数の前記CPU使用パケットに少なくとも部分的に基づいて、前記時間範囲に対してCPU使用を決定することと
をさらに含むことを特徴とする請求項1に記載の自律車両。
【請求項3】
前記時間範囲は、1秒と4秒との間であり、
前記時間範囲に対して前記CPU使用を前記決定することは、前記時間範囲の間に実行され
た複数の機能のうちの1つまたは複数の機能に対してCPU使用を決定することを含み、
前記1つまたは複数の機能に対して前記CPU使用を前記決定することは、前記時間範囲において決定される前記複数の実行している機能の他に関する前記1つまたは複数の機能に関連付けられた使用の百分率を決定することを含む
ことを特徴とする請求項2に記載の自律車両。
【請求項4】
前記データ構造は、複数のノードを含み、前記複数のノードの個々は
、複数の機能のうちの機能を特定し、前記一意的なノード識別子のうちの関連付けられている1つを有する機能識別子を含むことを特徴とする請求項1に記載の自律車両。
【請求項5】
前記安全な
動作において前記自律車両を前記制御することは、
安全な停止になるように前記
自律車両を制御すること、
前記自律車両が停止させられている状態において前記
自律車両の特徴を無効にすること、
前記
自律車両の速さを減らすこと、または
しきい値の速さを下回る速さを維持するように前記
自律車両を制御すること
のうちの少なくとも1つを含むことを特徴とする請求項1に記載の自律車両。
【請求項6】
コンピューティングシステムにより行われる方法であって、
第1のサブシステムによって行われる第1の処理と第2のサブシステムによって行われる第2の処理とを表すデータ構造を生成するステップであって、前記データ構造は、複数のノードを含み、
各ノードは、それぞれの機能を表し、前記ノードの個々は、複数の機能のうちの機能を特定する機能識別子を含み、前記複数の機能は、前記第1の処理および前記第2の処理を含む、ステップと、
前記ノードとノード識別子を関連付けるステップであって、前記ノード識別子は、前記第1の処理および前記第2の処理において前記複数の機能の関係についての情報を含む、ステップと、
周期的に、サンプリングの時間にて前記第1のサブシステムおよび前記第2のサブシステムの実行している機能を決定するために
、1つまたは複数のプロセッサーに問い合わせるステップと、
前記
第1のサブシステムおよび前記第2のサブシステムの前記実行している機能に基づいて、複数のデータパケットを生成するステップであって、前記複数のデータパケットの個々は、前記サンプリングの時間にて動作している前記複数の機能のうちの機能に対応する前記ノード識別子のうちのノード識別子を含む、ステップと
を備えることを特徴とする方法。
【請求項7】
時間範囲を決定するステップと、
前記時間範囲に対して前記複数のデータパケットのうちのデータパケットを検索するステップと、
前記データパケットに少なくとも部分的に基づいて、前記ノード識別子に関連付けられた前記実行している機能の各々の前記時間範囲の間、
前記コンピューティングシステムの負荷を特定する相対的なCPU使用を決定するステップと、
前記相対的なCPU使用に少なくとも部分的に基づいて、前記第1のサブシステムの
負荷を特定する第1のCPU使用
と前記第2のサブシステムの
負荷を特定する第2のCPU使用
とを決定するステップと
をさらに備えることを特徴とする請求項6に記載の方法。
【請求項8】
前記第1のCPU使用が第1のしきい値のCPU使用より大きいこと、または前記第2のCPU使用が第2のしきい値のCPU使用より大きいことのうちの少なくとも1つを決定するステップであって、前記第1のしきい値および前記第2のしきい値のCPU使用は、前記時間範囲に先行する時間周期を介して前記第1の処理および前記第2の処理の統計的な解析に少なくとも部分的に基づいて決定される、ステップと、
前記第1のしきい値のCPU使用より大きい前記第1のCPU使用、または前記第2のしきい値のCPU使用より大きい前記第2のCPU使用に少なくとも部分的に基づくイベントを決定するステップと
をさらに備えることを特徴とする請求項7に記載の方法。
【請求項9】
前記イベントに少なくとも部分的に基づいて、安全な
動作において自律車両を制御するステップをさらに備えることを特徴とする請求項8に記載の方法。
【請求項10】
前記自律車両を制御するステップは、
安全な停止になるように前記
自律車両を制御するステップ、
前記自律車両が停止させられている状態において前記
自律車両の特徴を無効にするステップ、または
聞こえる出力または見える出力のうちの少なくとも1つを発するステップ
のうちの少なくとも1つを含むことを特徴とする請求項9に記載の方法。
【請求項11】
前記時間範囲は、第1の時間範囲であり、前記第1のサブシステムは、前記第1の時間範囲に対して第1の構成において構成され、
第2の時間範囲を決定するステップであって、前記第1のサブシステムは、前記第2の時間範囲に対して第2の構成において構成される、ステップと、
前記第2の時間範囲に対して前記複数のデータパケットのうちの第2のデータパケットを検索するステップと、
前記第2のデータパケットに少なくとも部分的に基づいて、前記ノード識別子に関連付けられた前記実行している機能の各々の前記第2の時間範囲の間、相対的なCPU使用を決定するステップと、
前記相対的なCPU使用に少なくとも部分的に基づいて、前記第1のサブシステムの第3のCPU使用を決定するステップと
さらに備えることを特徴とする請求項7ないし10のいずれか一項に記載の方法。
【請求項12】
前記第1のCPU使用および前記第3のCPU使用に少なくとも部分的に基づいて、前記第1の構成または前記第2の構成を含む車両構成を決定するステップと、
前記車両構成に従って自律車両を制御するステップと
をさらに備えることを特徴とする請求項11に記載の方法。
【請求項13】
複数の時間範囲を決定するステップと、
前記時間範囲の個々に対して前記複数のデータパケットのうちのデータパケットを検索するステップと、
前記データパケットに少なくとも部分的に基づいて、前記ノード識別子に関連付けられた前記実行している機能の各々の前記時間範囲の個々の間、相対的なCPU使用を決定するステップと、
前記相対的なCPU使用に少なくとも部分的に基づいて、前記時間範囲の個々に対して前記第1のサブシステムの第1のCPU使用および前記第2のサブシステムの第2のCPU使用を決定するステップと、
前記第1のサブシステムに対して第1のCPU使用範囲を決定するステップと、
前記第2のサブシステムに対して第2のCPU使用範囲を決定するステップと
をさらに備えることを特徴とする請求項6に記載の方法。
【請求項14】
前記第1のCPU使用を前記決定するステップ、または前記第2のCPU使用を前記決定するステップのうちの少なくとも1つは、前記時間範囲の前記個々に対して前記第1のCPU使用または前記第2のCPU使用のうち
の少なくとも1つの統計的な解析を行うことを含み、前記統計的な解析を前記行うステップは、前記CPU使用、平均CPU使用、または最大CPU使用を表す分布関数のうちの少なくとも1つを決定するステップを含むことを特徴とする請求項13に記載の方法。
【請求項15】
請求項6ないし14のいずれか一項の方法を行うために
前記1つまたは複数のプロセッサーによって実行可能である命令を格納する非一時的なコンピューター読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本PCT国際特許出願は、それらのすべての開示が参照によって本明細書に組み込まれる、2018年12月19日に出願された米国特許出願第16/225997号、および2018年12月19日に出願された米国特許出願第16/226128号の出願日の利益を主張する。
【背景技術】
【0002】
自律車両などの様々なシステムは、異なるデータを受信し、生成し、出力する、多くのコンピューティングシステムを含む。例えば、自律車両のケースにおいては、そのようなデータは、環境内を安全にナビゲートするために必要である。そのようなデータは、数個だけ名前を挙げれば、環境についての情報をキャプチャするセンサシステム、センサデータから環境内のオブジェクトについての情報を生成する認知(perception)システム、およびそれらのシステムに様々な動作を実行させる制御システム(例えば、車両をプランニングシステムによって生成されたルートに従わせる制御システム)を含み得る。これらのシステムの各々は、独自の処理および機能性を必要とする。しかしながら、いくつかの場合においては、システムの相互接続性および/または複雑性のために、動作のエラーの原因を識別することは、困難であることがあり得る。例えば、ソフトウェアは、更新され、および/またはシステムは、改変されるので、増加したレイテンシおよび/または増加したCPU使用の原因を識別し、トラブルシューティングすることは、困難であることがあり得る。いくつかの例においては、これらの短所は、1つまたは複数のシステムが、誤動作する原因になることがあり、それが、安全でない動作をもたらすことがある。
【0003】
詳細な説明は、添付の図面を参照して説明される。図面において、参照符号の最も左の数(複数可)は、参照符号が最初に現れる図面を特定する。異なる図面における同じ参照符号の使用は、類似のまたは同一のコンポーネントまたは特徴を示す。
【図面の簡単な説明】
【0004】
【
図1】本明細書において説明されている自律車両のような例示的な車両と、自律車両のシステムが安全なパラメータ内で動作していることを確認するための、およびシステムに影響する異常なイベントを決定することに応答して車両を安全な状態に移行させるための例示的なコンポーネントとを例示する。
【
図2A】本明細書において説明されているシステムの情報に対して測定されたレイテンシの集約を含む例示的なグラフを例示する。
【
図2B】本明細書において説明されている測定されたレイテンシの分布を含む例示的なグラフを例示する。
【
図3】本明細書において説明されている自律車両の多数のシステムにおいてスタック機能を識別するおよび追跡するための例示的なシナリオを例示する。
【
図4A】本明細書において説明されている2つの関連システムにわたる機能に対してCPU使用を示すフレームグラフを含む例示的なグラフを例示する。
【
図4B】本明細書において説明されている測定されたCPU使用の分布を含む例示的なグラフを例示する。
【
図5】本明細書において説明されているレイテンシおよびCPU使用技法を実装するための例示的なアーキテクチャのブロック図を描く。
【
図6】本明細書において説明されているレイテンシイベントを検出することに応答して安全な停止に移行するための例示的な方法を例示するフローチャートである。
【
図7】本明細書において説明されているシステムに対してレイテンシデータを生成するための例示的な方法を例示するフローチャートである。
【
図8】本明細書において説明されているCPU使用イベントを検出することに応答して安全な停止に移行するための例示的な方法を例示するフローチャートである。
【
図9】本明細書において説明されているシステムに対してCPU使用を決定し、自律車両に対してCPU使用に関する安全な動作手順を定義するための例示的な方法を例示するフローチャートである。
【発明を実施するための形態】
【0005】
本開示は、複雑なシステムについてのレイテンシおよびリソース使用を決定し、それゆえ応答を識別するための方法、装置、およびシステムを説明する。本明細書において説明される例示的な例において、上記の応答は、例えば、車両において異常なイベントを検出したことに応答して、車両を制御することを含み得る。例えば、自律車両は、数々のコンピューティングシステムを含むことがあり、各々は、異なるデータ入力を必要とし、異なるデータ出力を生成し、車両の適切で安全な動作のために一般に必要である。システムの相互接続性、ならびに実行される機能および生成されるデータの多さのために、すべてのシステムが適切に機能していることを保証することが、望ましい。
【0006】
いくつかのケースにおいては、データ(またはデータパケット)インスタンスからタグ情報を受け取ることによって、システムごと(またはサブシステムごと)のレイテンシが、決定されることができる。例えば、本明細書において説明される実施においては、システムは、一意的な識別子およびタイムスタンプ情報を用いて、生成されたデータにタグ付けし得る。例えば、タイムスタンプ情報は、生成されたデータを作成するために使用されたデータが受信された時間、データが生成された時間、および/またはデータがシステムによって出力された時間のうちの1つまたは複数を含み得る。その生成されたデータは、新しいデータの生成において使用されるので、例えば、データは、システムからシステム(またはサブシステムからサブシステム)に伝搬するので、一意的な識別子は、この下流データとさらに関連付けられ得る。いくつかの例においては、本明細書において説明される技法は、例えば、システムにおける入力データの受信と関連付けられたタイムスタンプ情報を、入力データを使用して生成された新しいデータの生成および/または出力と関連付けられたタイムスタンプ情報と比較することによって、システムレイテンシを決定するために、タグ情報を使用することができる。
【0007】
いくつかの例においては、本明細書において説明される技法に従って決定されるレイテンシは、予期されるまたは動作可能なレイテンシ範囲と比較されることができる。決定されたレイテンシが、動作可能なレイテンシ範囲の範囲内にある場合、車両は、適切に機能中であり得る。しかしながら、決定されたレイテンシが、動作可能なレイテンシ範囲の範囲外にある場合、本明細書において説明される技法は、レイテンシ関連イベントを識別し得る。さらに、いくつかの実施においては、本明細書において説明される技法は、イベントに応答して、安全な状態において車両を制御することができる。例えば、安全な状態において車両を制御することは、潜在的なデータを軽減するために、1つまたは複数のアクションを取ることを含み得る。そのようなアクションは、例えば、車両を減速させること、警告を発すること、および/または安全な停止軌道を実行することを含むことができる。
【0008】
本明細書において説明される技法は、予期されるまたは動作可能なレイテンシ範囲を決定するためにも、使用されることができる。例えば、いくつかの例においては、1つまたは複数のシステムのレイテンシは、時間の期間にわたって決定されることがあり、そのデータは、例えば、分布として、特徴付けられ得る。その分布を表す関数が、システムのための動作可能なレイテンシ範囲を識別するために、使用され得る。いくつかの例においては、動作可能な範囲は、統計的に有意な数のすべての測定されたレイテンシを含む、範囲であり得る。
【0009】
他の例においては、本明細書において説明される技法は、自律車両上における1つまたは複数のシステムについてのCPU使用情報を決定することができる。例えば、いくつかの実施は、車両上において動作するすべての処理を表す、データ構造を生成することを含む。データ構造は、各ノードが機能を表し、ブランチが処理内の機能を表す、1つまたは複数のプレフィックス木であることができる。いくつかの例においては、本明細書において説明される技法は、プレフィックス木内のノードが、一意機能識別子のうちの1つを含むように、各機能を一意機能識別子と関連付ける、シンボルテーブルを生成することもできる。いくつかの例は、また、一意的なノードIDをプレフィックス木内の各ノードと関連付け得る。
【0010】
本明細書において説明される例示的な技法は、周期的なサンプリング時間で、例えば、CPU上において動作する機能を決定するために、システムの動作をサンプリングすることもできる。いくつかの例においては、サンプリングは、サンプルごとに、オンCPU機能と関連付けられた一意的なノードIDを識別することができる。一意的なノードIDは、サンプリング時間に対応するタイムスタンプとも関連付けられ得る。例えば、読み出された一意的なノードIDおよびタイムスタンプを含む、サンプリングパケットが、記憶されることができる。今述べたサンプリングパケットは、限定されないが、与えられたどんな時間に対してでもどんな機能とでも関連付けられたスタックトレースを含む、どんな時間周期に対してもCPU使用を決定するのに使用されることができる。例えば、(タイムスタンプ情報によって決定されるような)時間周期と関連付けられたパケットを検索することによって、オンCPU機能と関連付けられたスタックトレースを再作成するために、一意的なノードIDが、使用されることができる。いくつかの例においては、時間周期は、上で説明されたような、レイテンシ関連イベントを含む、時間範囲であり得る。
【0011】
CPU使用情報は、システムについての予期されるCPU使用を決定するために、使用されることもできる。例えば、今しがた説明された例に従って決定されたCPU使用は、時間の期間にわたって、例えば、ランタイム、窓内の時間、または車両の動作可能時間にわたって、集約されることができる。動作可能なCPU使用範囲は、統計的に有意な数のサンプリングされた時間にわたって、システムが動作する、範囲であることができる。他の例においては、本明細書において説明される例は、リアルタイムまたは準リアルタイムで、CPU使用を決定し、決定されたCPU使用をしきい値範囲と比較することができる。いくつかの例においては、決定されたCPU使用が、しきい値範囲の範囲外にある場合、CPUベースのイベントが、決定されることができる。さらに、いくつかの実施においては、本明細書において説明される技法は、イベントに応答して、安全な状態において車両を制御することができる。例えば、安全な状態において車両を制御することは、イベントを軽減するために、1つまたは複数のアクションを取ることを含み得る。そのようなアクションは、例えば、車両を減速させること、警告を発すること、および/または安全な停止軌道を実行することを含むことができる。
【0012】
本明細書において説明される技法は、自律車両などの車両が、環境内のオブジェクトを回避しながら、環境内をナビゲートすることを可能にするために、データを活用することに関し得る。本明細書において説明される技法は、システムが、それらが必要とするデータを有すること、およびそれが環境内を走行するときに、車両の安全な動作を提供するパラメータ内で動作していることを保証するために、データおよびシステム機能性についての情報を利用することができる。さらに、本明細書において説明される技法は、それらがシステム機能の信頼性を高め得るので、従来の技術よりも高速および/または堅牢であり得る。すなわち、本明細書において説明される技法は、既存のナビゲーション技術に対する技術的改善を提供する。また、本明細書において説明される技法は、例えば、意図された目的地までの安全な通行をより正確に提供することによって、よりスムーズな乗り心地を提供し、安全性結果を改善することもできる。
【0013】
本開示が自律車両に関する、他の例においては、本明細書において説明される技法は、自律車両を環境内に配備する前に、システム機能を計画および/またはテストすることを支援することができる。例えば、本明細書において説明される技法は、新しいソフトウェアバージョン、新しいシステムもしくはサブシステムコンポーネント、または他の変更についての性能パラメータを比較するために、使用されることができる。この比較に基づいて、技法は、改善されたシステム設計および/または性能を可能にすることができる。さらに、この例においては、新しいソフトウェアまたはコンポーネントなどについてのデータは、新しいソフトウェアまたは新しいシステムコンポーネントなどを使用する車両の、安全な動作のための安全なパラメータまたは範囲を決定するために、使用されることができる。その後の性能は、例えば、決定されたパラメータに対して、測定され得る。
【0014】
本開示は、例において、自律車両を使用するが、本明細書において説明される技法は、自律車両における適用に限定されない。いくつかの例においては、本明細書において説明される技法は、性能パラメータ、例えば、数々の複雑なシステムのいずれかについてのレイテンシおよび/またはリソース使用を決定および/または特徴付けるために、使用されることができる。さらに、本明細書において説明される技法は、そのような複雑なシステムにおける、異常な機能、例えば、イベントを識別し、および/または軽減するために、使用され得る。いくつかの例においては、機能を実行し、および/またはメッセージを渡す、相互に関連するシステムを含む、任意の複雑なシステムが、説明される技法から利益を受け得る。非限定的な例として、本明細書において説明される技法は、空中および/または地上走行車両、ならびに他の完全または部分的な自律ロボットシステム上において、使用され得る。さらに、非自律車両も、例えば、実行可能なデータがないときの安全のために、本明細書において説明される技法から利益を受けることができる。
【0015】
図1~
図9は、本明細書において説明される技法と関連付けられた追加の詳細を提供する。
【0016】
図1は、例示的な車両102がその中を走行している、例示的な環境100を例示している。例示的な車両102は、米国運輸省道路交通安全局によって発行されたレベル5分類に従って動作するように構成された、自律車両などの、無人運転車両であることができる。レベル5分類は、全行程にわたってすべての安全上必須な機能を実行することが可能であり、運転手(または乗員)はいかなるときも車両を制御することを予期されない、車両について説明する。そのような例においては、車両102は、すべての駐車機能を含む、行程の開始から完了までのすべての機能を制御するように構成されることができるので、それは、運転手、ならびに/またはステアリングホイール、アクセルペダル、および/もしくはブレーキペダルなどの車両102を運転するための制御装置を含まなくてよい。これは、例であり、本明細書において説明されるシステムおよび方法は、複雑なサブシステム、および/またはシステム間通信を有する、任意のシステムに組み込まれ得る。非限定的な例として、そのようなシステムは、常に運転手によって手動で制御される必要がある車両から、部分的または完全に自律的に制御されるものにまでわたるそれらを含む、地上走行、空中走行、または水上走行車両を含み得る。いくつかの例においては、技法は、機能を実行する1つまたは複数のコンピューティングシステムを含む、任意のシステム内において実施されることができる。本明細書における説明から理解されるように、本開示は、車両に限定されない。
【0017】
例示的な車両102は、例えば、バン、スポーツ用多目的車、クロスオーバ車、トラック、バス、農業用車両、および/または建設用車両などの、任意の構成の車両であることができる。車両102は、1つもしくは複数の内燃機関、1つもしくは複数の電気モータ、水素動力、それらの任意の組み合わせ、ならびに/または他の任意の適切な動力源によって動力を供給されることができる。例示的な車両102は、4つの車輪を有するが、本明細書において説明されるシステムおよび方法は、より少ない数またはより多い数の車輪、タイヤ、および/またはキャタピラを有する車両に組み込まれることができる。例示的な車両102は、4輪操舵を有することができ、例えば、第1の方向に走行するときは、車両102の第1の端部が、車両102の前端であり、反対方向に走行するときは、第1の端部が、車両102の後端になるように、全方向において概ね等しい性能特性で、動作することができる。同様に、第2の方向に走行するときは、車両102の第2の端部が、車両の前端であり、反対方向に走行するときは、第2の端部が、車両102の後端になる。これらの例示的な特性は、例えば、駐車場および/または都市エリアなどの、狭い空間または混雑した環境において、より大きな操縦性を容易にし得る。
【0018】
例示的な車両102は、環境100内を走行し、データを収集するために、使用されることができる。例えば、車両102は、(本明細書においては、一括して、および/または他のラベルなしのセンサシステムとともに、センサシステム104と呼ばれる)第1のセンサシステム104aと、第2のセンサシステム104bとを含む、1つまたは複数のセンサシステムを含むことができる。センサシステム104は、例えば、LIDARセンサ、RADARセンサ、SONARセンサ、タイムオブフライト(time-of-flight)センサ、画像センサ、オーディオセンサ、赤外線センサ、位置センサなど、またはそれらの任意の組み合わせを含むことができる。センサシステム104は、環境100と関連付けられたセンサデータをキャプチャする、例えば、生成するために、配置され得る。例示された例においては、第1のセンサシステム104aは、第1のセンサデータ106を生成することがあり、第2のセンサシステム104bは、第2のセンサデータ108を生成し得る。例えば、第1のセンサシステム104aは、LiDARセンサを含むことができ、そのケースにおいては、第1のセンサデータ106は、ポイントクラウドを含むことがあり、第2のセンサシステム104bは、カメラを含むことができ、そのケースにおいては、第2のセンサデータ108は、画像データを含み得る。センサシステム104は、任意の数、タイプ、および/またはモダリティのセンサシステムを含み得るので、これらの例は、例示のためのものにすぎない。
【0019】
車両102は、1つまたは複数のコンピューティングシステムも含むことができる。例えば、
図1は、(本明細書においては、示されていない追加のコンピューティングシステムを含めて、一括して、コンピューティングシステム110、112、114と呼ばれる)第1のコンピューティングシステム110、第2のコンピューティングシステム112、および第3のコンピューティングシステム114を例示している。これらの3つの例示的なシステムが、例示されているが、車両は、より多い、より少ない、および/または他のシステムを含み得る。
図1においては、例示の目的で、別個のシステムとして描かれているが、そのようなコンピューティングシステムは、1つ、2つ、3つ、またはより多くのコンピューティングシステム上において動作する、仮想マシンまたはプロセスなどを含み得る。コンピューティングシステム110、112、114のうちの例示的なコンピューティングシステムは、ローカリゼーションシステム、認知システム、プランニングシステム、システムコントローラ、エミッタ、またはマッピングシステムなどのうちの1つまたは複数を含むことができる。(コンポーネントおよび/またはサブシステムであり得る)これらおよび他の例示的なシステムのいくつかは、
図5を参照することを含めて、本明細書においてさらに詳しく説明される。他の例においては、コンピューティングシステム110、112、114は、例えば、有線または無線接続を介して、車両102と通信する、システムを含むこともでき、またはシステムを代替として含むことができる。コンピューティングシステム110、112、114は、例えば、1つまたは複数の機能を実行することによって、1つまたは複数のプロセスを実行するように構成されることがあり、それらの機能を実行するために、データを使用し得る。例えば、
図1に例示されるように、第1のコンピューティングシステム110は、第1のセンサデータ106および第2のセンサデータ108を受信し、データ116を含む出力を生成するように構成され得る。同様に、第2のコンピューティングシステム112は、第2のセンサデータ108を受信し、データ118を含む出力を生成するように構成され得る。第3のコンピューティングシステム114は、第1のコンピューティングシステム110によって生成されたデータ116と、第2のコンピューティングシステム112によって生成されたデータ118とを受信し、データ120を含む出力を生成するように構成され得る。いくつかの例においては、データ120は、一般に
図1に示されるように、車両の動作を制御するための運転制御データであることができる。
【0020】
やはり
図1に例示されるように、本開示の実施においては、追加の情報は、車両102と関連付けられた、様々なタイプのデータと関連付けられることができる。例えば、システム内のデータは、受信、生成、および/または送信時に、タイムスタンプ情報および/または一意的な識別子の一方または両方を用いて、タグ付けされることができる。
図1に示されるように、第1のセンサシステム104aによって生成される、データ106のインスタンスは、第1のタイムスタンプ情報(t
1)124aと、第1の一意的なID(id
1)126aとを含む、関連付けられた第1タグ122aを有し得る。第1のタイムスタンプ情報124aは、データ106がキャプチャされた時間、例えば、第1のセンサシステム104aのセンサが読み出された時間、および/または第1のセンサシステム104aによって、データが送られた、例えば、送信または公開された時間を含み得る。第1の一意的なID126aは、データ106のインスタンスに固有である、整数または他の識別子であり得る。したがって、例えば、データ106は、第1のセンサシステム104aによって、周期的に生成されることがあり、データ106の各インスタンスは、異なる一意的なIDを有し得る。本開示全体においてさらに説明されるように、データ106のインスタンスは、様々なコンピューティングシステム内を伝搬するときに、タグ122a内に含まれる情報を使用して、追跡され得る。例示される例においては、第1のセンサシステム104aは、データ106およびタグ122aを、第1のデータパケット128aとして、出力することができる。
【0021】
データ106と同様に、第2のセンサシステム104bによって生成されるデータ108は、第2のタイムスタンプ情報(t2)124bと、第2の一意的なID(id2)126bとを含む、第2のタグ122bも含み得る。例えば、第2のタイムスタンプ情報124bは、データ108が第2のセンサシステム104bによってキャプチャされた時間、および/または、データが第2のセンサシステム104bから送られた、もしくは第2のセンサシステム104bによって公開された時間を含み得る。例えば、データ108は、データ108およびタグ122bを含む、データパケット128bとして、出力され得る。第2の一意的なID126bは、データ108の各インスタンスに固有である、整数または他の識別子であり得る。第1の一意的なID126aおよび第2の一意的なID126bは、例えば、順番に生成される整数であり得る。さらに、いくつかの例においては、タグ122に含まれる、一意的なID126および/または他の情報は、データのソースを識別することがあり、例えば、データ106の各インスタンスのソースとして、第1のコンピューティングシステム104aを識別し、および/またはデータ108の各インスタンスのソースとして、第2のコンピューティングシステム104bを識別し得る。非限定的な例として、最初の2、3、または4個の数字および/または英数字は、メッセージを生成したシステム、およびメッセージがいつ生成されたかなどと関連付けられて、提供し得る。
【0022】
図1は、データ106、108が自律車両102のシステム内を伝搬するときに、
タグがどのように付加および/または更新されるかも例示している。例えば、例示されるように、タグ122c、122dは、第1のコンピューティングシステム110によって生成されたデータ116と関連付けられ、タグ122eは、第2のコンピューティングシステム112によって生成されたデータ118と関連付けられ、タグ122f、122g、122hは、第3のコンピューティングシステム114によって生成されたデータ120と関連付けられる。例えば、データ116と関連付けられたタグ122c、122dは、それぞれのタグ122a、122b内に含まれる情報の一部または全部、ならびに第3のタイムスタンプ情報(t
3)124c、および第1のシステム識別情報(id
s1)130aを含むことができる。したがって、例示されるように、タグ122cは、第1の一意的なID126aと、第1のタイムスタンプ情報124aと、第3のタイムスタンプ情報124cと、システム識別情報130aとを含むことができる。同様に、タグ122dは、第2のタイムスタンプ情報124bと、第2の一意的なID126bと、第3のタイムスタンプ情報124cと、システム識別情報130aとを含むことができる。この例においては、第1のコンピューティングシステム110は、第1のセンサシステム104aからのデータ106と、第2のセンサシステム104bからのデータ108との両方を使用して、データ116を生成する。したがって、入力データ106および入力データ108とそれぞれ関連付けられる、タグ122aおよびタグ122bは、第1のコンピューティングシステム110によるこの処理、例えば、第3のタイムスタンプ情報124cおよびシステム識別情報130aを含む、タグ122c、122dの生成を示すように、更新され得る。
【0023】
図1の例においては、タグ122aからのすべての情報は、タグ122c内に保持されるものとして例示され、タグ122bからのすべての情報は、タグ122d内に保持されるものとして例示されている。しかしながら、他の実施においては、いくつかのデータは、コピーされなくて、または引き継がれなくてよい。非限定的な例として、タイムスタンプ情報124a、124bは、タグ122c、122dから省略されてよい。この例においては、省略されたタイムスタンプ情報124a、124bは、タグ122c、122dを介する代わりに、タグ122a、122bを介して、アクセス可能であり得る。さらに、タグ124a、124bは、同じ第3のタイムスタンプ情報(t
3)124cと、同じシステム識別情報(id
s1)とを含むものとして、例示されているが、その情報は、異なり得る。例えば、第3のタイムスタンプ情報126cは、データ106の受信、データ108の受信、データ116の生成、および/または生成されたデータ116の出力、例えば、公開のうちの1つまたは複数と関連付けられた、1つまたは複数のタイムスタンプを含むことができる。一例においては、第3のタイムスタンプ情報124cが、データ106またはデータ108が、第1のコンピューティングシステム110において受信された時間を含むとき、そのようなデータは、異なる時間に受信されることができ、したがって、タイムスタンプ情報124cは、2つのタグ122c、122dについて、異なる値を有し得る。同様に、第1のコンピューティングシステム110は、異なる時間に、第1のデータ106および第2のデータ108を使用することができる、数々の動作を実行し得る。これらの「処理」時間も、同様に、タイムスタンプ情報124cとして記憶されることができる。また、例においては、システム識別情報130aは、第1のコンピューティングシステムの単なる識別以上の、または識別以外のものを含み得る。例えば、システム識別情報130aは、第1のコンピューティングシステム110によって実行されるプロセスを示すことがあり、そのようなプロセスは、データ106、108について、異なり得る。実施においては、タイムスタンプ情報124cおよびシステム識別情報130aは、それらは、第1のコンピューティングシステム110によって追加されたので、またはさもなければ、第1のコンピューティングシステム110と関連付けられるので、同じであり得る。例示されていないが、データ116、および関連付けられたタグ122c、122dは、データパケットとして出力されることができる。
【0024】
データ118と関連付けられたタグ122eも、同様に、第4のタイムスタンプ情報(t4)124d、および第2のシステム識別情報(ids2)130bに加えて、(データ118は、第2のセンサシステム104bによって生成された、データ108を使用して生成されるので)第2のタイムスタンプ情報124bと、第2の一意的なID126bとを含む。第3のタイムスタンプ情報124cと同様に、第4のタイムスタンプ情報124dは、第2のコンピューティングシステム112と関連付けられた、1つまたは複数の時間についての情報を含むことができる。そのような時間は、データ108が、第2のコンピューティングシステム112において受信された時間、データ108が、第2のコンピューティングシステム112による作用を受けた、例えば、処理を施されなどした時間、データ118が、生成された時間、および/またはデータ118が、送信、出力、公開、もしくは他の方法で利用可能にされた時間のうちの1つまたは複数であり得る。さらに、第2のシステム識別情報130bは、一般に、第2のコンピューティングシステム112を識別し、および/または例えば、データ108に作用し得る、または他の方法でデータ108と関連付けられ得る、第2のコンピューティングシステム112における1つもしくは複数のプロセスもしくは機能についての情報を提供し得る。データ118およびタグ122eは、パケットとして、第2のコンピューティングシステム112によって出力されることができる。
【0025】
同様に、第3のコンピューティングシステム114は、例えば、車両102のシステム内における、データ106、108の伝搬または「フロー」を示すために、新しいタイムスタンプを更新または生成することができる。例えば、タグ122fは、一般に、タグ122cに対応することがあり、タグ122gは、一般に、タグ122dに対応することがあり、タグ122hは、一般に、タグ122eに対応し得る。しかしながら、それらのタグは、第5のタイムスタンプ情報(t5)124eと、第3のシステム識別情報(ids3)130cとをさらに含む。第5のタイムスタンプ情報124eは、データ116(もしくはデータを含むパケット)の受信、データ118の受信、データ120の生成、および/または上で述べられたように、車両102を制御するための制御データであり得る、生成されたデータ120の(例えば、データパケットとしての)出力のうちの1つまたは複数と関連付けられた、1つまたは複数のタイムスタンプを含むことができる。第3のシステム識別情報130cは、第3のコンピューティングシステム114、ならびに/またはデータ116および/もしくはデータ118を処理し得る、またはさもなければ、それらを使用し得る、コンポーネント、プロセス、および/もしくはそれらの態様を識別することができる。データ116と関連付けられた、上で説明されたタグと同様に、第5のタイムスタンプ情報124e、および第3のシステム識別情報は、同じものとして例示されているにもかかわらず、タグ122f、122g、122hのうちの1つまたは複数において、異なり得る。本開示全体において使用される場合、タグ122a、122b、122c、122d、122e、122f、122g、122h、および/または本明細書において説明される例に従って生成される他のタグのうちの2つ以上は、「タグ122」と呼ばれることがある。さらに、参照を容易にするために、本明細書においては、「タグ」という用語が、使用されるが、タグは、一般に、限定することなく、タイムスタンプ情報、一意的なID、または他の情報を含む、任意の情報を含むと理解され得る。言い換えると、「タグ」は、データに付加された、または他の方法でデータと関連付けられた、情報であり得る。同様に、タイムスタンプ情報の多数のオカレンスは、「タイムスタンプ情報124」と呼ばれることがあり、一意的なIDの多数のオカレンスは、「一意的なID126」と呼ばれることがあり、パケット128の多数のオカレンスは、「パケット128」と呼ばれることがある。
【0026】
今しがた説明されたアーキテクチャに従うと、データの各インスタンスは、タグ122を使用して、追跡され得る。例えば、順番に、タグ122a、122c、および122eは、第1のセンサシステム104aによる生成から、制御データ120としての出力まで、データ106のいくつかのインスタンスを追跡するために、使用され得る。同様に、順番に、タグ122b、122d、122gは、データ108のインスタンスについての第1のフローを例示することができ、順番に、タグ122b、122e、122hは、データ108の同じインスタンスについての第2のフローを例示することができる。
【0027】
本明細書でさらに詳述されるように、本開示の技法は、車両102の性能パラメータを決定し、特徴付け、および/または調査するために、データについての情報、例えば、タグ122を使用することができる。例えば、技法は、車両102のシステムと関連付けられたレイテンシを決定することができる。一例においては、第1のセンサシステム104aにおける、データ106の例示されたインスタンスと関連付けられたレイテンシは、第1のタイムスタンプ情報124aを使用して、決定されることができる。例えば、データ106と関連付けられたレイテンシは、データ106が第1のセンサシステム104aによってキャプチャされた時間と、パケット128aが第1のセンサシステム104aによって出力された時間との間の差であることがあり、それらの時間は、第1のタイムスタンプ情報124a内に含まれ得る。実装にて、第1のセンサシステム104aは、データ106の新しいインスタンスを含む新しいパケットを、例えば、第1のセンサシステム104aのフレームレートでなど、事前決定された周波数で、継続的にキャプチャし、出力し得る。データ106を含むパケットの各々は、例えば、整数であり得る、関連付けられた第1の一意的なID126を有することがあり、別々のレイテンシが、データ106の各インスタンスに基づいて、決定されることができる。
【0028】
別の非限定的な例においては、第1のコンピューティングシステム110のレイテンシは、タグ122cおよびタグ122dのいずれかまたは両方と関連付けられた、第3のタイムスタンプ情報124cを調査することによって、計算され得る。例えば、第1のコンピューティングシステム110と関連付けられたレイテンシは、データ116が第1のコンピューティングシステム110によって公開された時間と、第1のコンピューティングシステム110においてデータ106および/またはデータ108を受信することと関連付けられた時間との間の差として計算され得る。例えば、データ116は、タグ122cおよびタグ122dの両方を含むので、それらのタグは、データ116を生成するために使用される、それらのデータ106、108のインスタンスを決定するために、調査されることができる。それらのインスタンスについての情報、例えば、各々が第1のコンピューティングシステム110において受信された時間を使用して、第1のコンピューティングシステム110についてのレイテンシが、決定されることができる。いくつかの例においては、第1のコンピューティングシステム110のレイテンシは、データ116が公開された時間と、データ116を生成するために使用されるデータ106またはデータ108のいずれかのインスタンスが、第1のコンピューティングシステム110において受信された最早時間との間の差であることができる。
【0029】
上述のことから明らかであるべきこととして、レイテンシを決定するためのそのような技法は、レイテンシが、総実行時間を測定することによって決定されることができない、複雑な(例えば、非線形)システムに対して使用されることができる。さらに、上で例示および説明されたように、レイテンシは、個々のコンポーネント、コンポーネントの集まり、および/またはシステム全体(例えば、車両102のセンサ入力から車両制御までのレイテンシ)について、決定されることができる。一例においては、データの個々のインスタンスが、車両102全体を通して追跡されるので、個々のシステムはそうでないときでさえも、車両は事前決定されたレイテンシ内で機能していると決定することが可能なことがある。従来のシステムは、個々のサブシステムを検討することがあり、1つが、予期されるよりも高いレイテンシで機能している場合、システムは、不適切に動作していると決定されることがある。しかしながら、自律車両のような複雑なシステムは、1つのサブシステムにおいてレイテンシイベントを経験しても、依然として適切に機能することがある。例えば、車両が、きわめて混雑した交差点に接近する例について考える。交差点は、横断を待っている、または多数の方向に横断している大勢の歩行者、サイクリスト、建物、駐車中または移動中の車両、および他のオブジェクトを有し得る。これらの例においては、環境内においてオブジェクトを識別する、車両の1つまたは複数のシステムは、他のほとんどの動作状態よりも、はるかに長時間かかることがある。安全な走行を保証するために、すべてのオブジェクトを識別するのに必要な、増加した処理時間のため、レイテンシは、そのシステムにおいて予期される(またはテストされた)よりも高くなることがある。しかしながら、本明細書において説明される技法は、他のシステムは、通常よりも迅速に機能しており、したがって、車両の全体的なレイテンシは、安全な動作範囲内にあり得ると決定するために、使用され得る。
【0030】
いくつかの例においては、車両102は、車両の1つまたは複数のシステムの性能特性を決定するための機能を含む、診断システム132を含み得る。システムレイテンシは、1つの性能特性の例である。いくつかの例においては、診断システム132は、異常なイベントを、例えば、性能特性が、予期される性能範囲の範囲外にある、および/またはしきい値を上回る/下回るときを決定することができる。いくつかの例においては、診断システム132は、その異常なイベントを決定したことに応答して、車両102を制御することもできる。例示される例においては、診断システム132は、レイテンシ決定コンポーネント134と、レイテンシしきい値コンポーネント136と、安全状態コンポーネント138とを含む。
【0031】
レイテンシ決定コンポーネント134は、車両102の1つまたは複数のシステムによって生成されたデータと関連付けられた、タグ122を受信することができる。明確にするために、
図1は、第1のタグ情報122aおよび第3のタグ情報122cだけを受信する、レイテンシ決定コンポーネント134を例示しているが、実際には、レイテンシ決定コンポーネント134は、第2のタグ情報122b、第4のタグ情報122d、および第5のタグ情報122eを含むが、それらに限定されない、車両102におけるすべてのタグ情報を受信し得る。他の実施形態においては、レイテンシ決定コンポーネント134は、例えば、パケット128を含む、他の情報も受信することができ、または代替として他の情報を受信することができる。例示的な実施形態においては、レイテンシ決定コンポーネント134は、1つまたは複数のコンピューティングシステムと関連付けられたレイテンシを決定することができる。例えば、レイテンシ決定コンポーネント134は、一般に上で説明されたように、タグ122dを使用して、第2のコンピューティングシステム112についてのレイテンシを決定し得る。少なくともいくつかの例においては、レイテンシ決定コンポーネント134は、収集されたタグの統計的な解析を行い得る。非限定的な例として、タグ122は、(例えば、2秒、またはさもなければ、車両の速さなど、車両の機能に基づいて決定される)定義された時間の窓にわたって集約されることがあり、分布の統計的特性(平均、分散/標準偏差、最小、最大など)が、コンピューティングシステム110、112、114のうちのいずれか1つもしくは複数、および/またはそれらの組み合わせに対して、決定され得る。したがって、レイテンシ決定コンポーネントによって決定されるレイテンシは、例えば、データの単一のインスタンス、または多くのインスタンスの集約と関連付けられた、瞬間的なレイテンシであることができる。後者に関しては、決定されたレイテンシは、統計的な解析を使用して、決定されることができる。
【0032】
レイテンシしきい値コンポーネント136は、車両102のシステムの各々のためのレイテンシしきい値についての情報を含み得る。例えば、レイテンシしきい値コンポーネント136は、レイテンシ決定コンポーネント134によって決定されたレイテンシが、しきい値または予期されるレイテンシの範囲内に入るかどうかを、決定し得る。システムの1つについてのレイテンシが、予期される範囲の範囲外にあるとき、レイテンシしきい値コンポーネント136は、異常な性能イベントを決定し得る。本明細書においてさらに説明されるように、レイテンシしきい値コンポーネント136は、車両102のシステムのうちの1つまたは複数のためのレイテンシしきい値または範囲を決定するようにも構成され得る。例えば、レイテンシしきい値コンポーネント136は、1つまたは複数のシステムについての(統計データを含み得る)実際のレイテンシデータを示す、履歴データを受信し、履歴レイテンシに基づいて、許容可能な動作範囲を決定し得る。
【0033】
安全状態コンポーネント138は、例えば、レイテンシしきい値コンポーネント136が、異常なイベントを検出したときに、レイテンシしきい値コンポーネント136から、イベント情報を受信し、イベントに応答して、1つまたは複数の動作を始め得る。例示された例においては、安全状態コンポーネント138は、安全状態制御140を発行することによって、車両102を制御し得る。例えば、安全状態制御140は、安全な停止操作を実行するように、車両102を制御することができる。例示的な安全な停止操作は、例えば、車両102がそれに沿って道路脇まで安全にナビゲートすることができる、軌道142に従うように、車両102を制御することを含み得る。道路脇にひとたび着くと、車両102は、例えば、一部または全部の機能性が無効化された、安全な状態に置かれ得る。車両102は、例えば、異常なレイテンシイベントの原因を決定するために、および/またはイベントを是正するために、さらなる診断などが実施されるまで、この状態に留まり得る。
【0034】
車両102を軌道142に従わせる、安全状態制御140は、安全状態制御の一例にすぎない。他の例においては、車両102を完全な停止に導く代わりに、安全状態構成要素138は、減速させるように車両102を制御し得る。例えば、許容可能なレイテンシ範囲は、より遅い速さにおいて、より大きくなり得るので、例えば、より低い速さで走行することは、イベントに対してより大きい耐性を有し得る。
【0035】
したがって、
図1は、システムごとにレイテンシを決定するために実施され得る、例示的な技法を提供する。いくつかの例においては、レイテンシが、予期されるレイテンシ範囲の範囲外にあるとき、異常なレイテンシイベントが、識別されることができ、そのアクションに応答して、安全なアクションが、取られることができる。
【0036】
図2Aおよび
図2Bは、車両102のシステムの1つと関連付けられた、レイテンシデータの視覚化を提供する、グラフである。より具体的には、
図2Aは、コンピューティングシステム110、112、114のうちの1つなど、システムについてのレイテンシの集約を例示する、グラフ200aを示している。
図2Bは、
図2Aに例示されたレイテンシデータについての分布、および分布を表す累積分布関数を示す、グラフを含む。
【0037】
図2Aのグラフ200aは、集約されたデータ202を例示しており、それは、この例においては、単一のシステム、例えば、第1のコンピューティングシステム110と関連付けられた、レイテンシ情報だけを例示している。具体的には、
図2Aにおけるx軸204は、メッセージカウントを示す。この例においては、メッセージカウント内の各メッセージは、システムによって生成(および/または出力)されたデータのインスタンスと関連付けられる。グラフ200aのy軸206は、この例においては、ミリ秒単位の総レイテンシを示す。したがって、データ202は、一般に、システムによって生成された各パケット(またはデータ)についてのシステムレイテンシのプロットを示す。例えば、システムについてのレイテンシは、本明細書において説明されるように、一意的なIDおよびタイムスタンプ情報を使用して、決定されることができる。例えば、グラフ200aが、第1のコンピューティングシステム110を描いている場合、グラフ200aにプロットされたレイテンシは、データ106またはデータ108のインスタンスが、第1のコンピューティングシステム110において受信された時間と、データ116のインスタンスが、第1のコンピューティングシステム110によって、出力、例えば、公開された時間との間の差であり得る。例示されるように、例示されるシステムについての平均レイテンシは、約50msと約200msとの間のオーダにある。
【0038】
第2のグラフ200bは、同じデータ202を、分布208として例示している。より具体的には、第2のグラフ200bは、レイテンシ値と関連付けられた、測定されたパケット、例えば、メッセージの頻度を示している。例えば、レイテンシは、x軸210上にプロットされ、分布関数212、例えば、ガウス分布は、分布プロット208に適合させられる。分布関数212は、システムがそれの機能を実行するのにどれだけ長くかかるかについての、車両のランタイムに基づいた、統計的な解析を提供する。非限定的な例として、上記の統計的な解析は、平均、分散/標準偏差、最小、および最大などを含み得る。これらの動作パラメータについての知識は、多くの診断機能が、実行されることを可能にすることができる。例えば、予期される動作レイテンシが、分かっているときに、リアルタイムまたは準リアルタイムでレイテンシを追跡することは、車両が安全に動作することを保証することを可能にすることができる。
図1の例におけるように、(単一のタグの瞬間的なレイテンシであるか、および/または窓にわたる統計的な集約であるかにかかわらず)決定されたレイテンシは、動作範囲と比較されることができ、システムが、正常な動作パラメータの外にあるとき、車両は、安全な状態に従って、制御されることができる。いくつかの例においては、範囲は、いくつかの統計的に有意な数のレイテンシ測定が入る、範囲であり得る。したがって、分布関数212は、すべてのレイテンシ発生のうちの95%または99%または100%が、50msと200msとの間にあることを決定することがあり、その範囲を予期されるレイテンシ範囲として使用し得る。
【0039】
予期されるレイテンシ範囲を決定することは、他の目的のための有用なツールも提供し得る。例えば、システムに対する変更に対する影響が、レイテンシ範囲を使用して、調査されることができる。一例においては、グラフ200a、200bは、異なるソフトウェアバージョンについて生成され、それらのバージョンがシステムに対して有する影響を決定することができる。非限定的な例として、コンピューティングシステム110のアルゴリズムおよび/またはハードウェア変更は、コンピューティングシステム110、および/または車両102全体の両方について、異なるレイテンシ特性をもたらし得る。本明細書において説明される技法は、そのような変更の検査および特徴付けが、メッセージとシステムとの間の複雑な対話にもかかわらず、それらが車両102全体にどのように影響するかを決定することを可能にする。同様に、例えば、データをシステムに提供する、新しいセンサの影響が、決定されることができる。さらに、レイテンシ範囲情報は、システムによって生成されたデータに依存し得る、下流システムを設計することと関連して、使用されることができる。
【0040】
上述のことに従うと、レイテンシデータは、車両のシステムが適切に機能しているかどうかを決定するために、および/または車両の安全な動作のためのしきい値範囲を確立するために、使用され得る。しかしながら、追加の性能特性も、異常を識別するために、および/または車両102についての動作状態を理解するために、使用されることができる。例えば、
図3、
図4A、および
図4Bは、車両102などの車両についてのCPU使用を説明するために、使用される。
【0041】
図3は、コンピューティング環境における1つまたは複数のシステムと関連付けられた、CPU使用を決定することに向けられた、本開示の技法を例示する概略
図300である。より具体的には、
図3は、第1のコンピューティングシステム302および第2のコンピューティングシステム304について、CPU使用がどのように決定されることができるかの例である。いくつかの例においては、第1のコンピューティングシステム302は、コンピューティングシステム110、112、114のうちの1つに対応することがあり、第2のコンピューティングシステム304は、コンピューティングシステム110、112、114のうちの別のものに対応し得るが、そのようなことは、必須ではない。例えば、第1のコンピューティングシステム302および第2のコンピューティングシステム304は、センサシステム104、コンピューティングシステム110、112、114、および/または他の任意のシステムを含むが、それらに限定されない、任意のシステムであることができる。本明細書において説明される実施においては、第1のコンピューティングシステム302は、数々のプロセスおよび/または機能を実行するように構成されることがあり、第2のコンピューティングシステム304も、数々のプロセスおよび/または機能を実行するように構成され得る。例えば、第1のコンピューティングシステム302および第2のコンピューティングシステム304の各々は、1つまたは複数のプロセッサーによって実行可能な、異なる動作を実行するための命令を含むことがあり、その動作は、各々が1つまたは複数の機能を含む、1つまたは複数の処理を含み得る。本明細書において説明される実施においては、第1のコンピューティングシステム302と第2のコンピューティングシステム304は、別個のシステムであるが、それらは、より大きいシステム、例えば、車両102のサブシステムであり得る。したがって、第1のコンピューティングシステム302と第2のコンピューティングシステム304は、異なるデータを受信し、他のデータを生成および出力するように構成され得るが、2つのシステム302、304は、重複する機能を有し得る。言い換えると、第1のコンピューティングシステム302および第2のコンピューティングシステム304のどちらかまたは両方と関連付けられた機能性を実行するために、ある機能および/またはプロセスが、呼び出され得る。本明細書でさらに説明されるように、本開示の技法は、時間の個別セグメントの間に、CPUを使用する他のプロセス、機能などと対比して、プロセスまたは機能などのどれだけが、CPU上にあったかを決定することができる。
【0042】
図3は、CPU使用を決定するために、例示的な実施において使用される、シンボルテーブル306も含む。より具体的には、シンボルテーブル306は、コンピューティング環境内の各個別機能308、例えば、
図3の例における、第1のコンピューティングシステム302および/または第2のコンピューティングシステム304のどちらかまたは両方によって使用される各機能を、一意的な識別子310と関連付ける。いくつかの実施においては、機能の各々は、スタック、例えば、ソフトウェアスタック内における、スタックフレームを表し得る。シンボルテーブル306は、第1のコンピューティングシステム302および第2のコンピューティングシステム304の機能中に、例えば、各機能を、それが呼び出されたときに、シンボルテーブル306に追加し、ID310を関連付けることによって、生成され得る。車両102の例においては、多くの複雑な機能が、実行されており、大量のデータが、受信され、生成され、処理され、出力されている間、第1のコンピューティングシステム302および第2のコンピューティングシステム304を含む、コンピューティングシステムの大部分は、同じプロセスおよび機能を継続的に再実行している。したがって、例えば、シンボルテーブル306は、相対的に少ない時間内に、相対的に少ない追加を有し、迅速に安定化し得る。言い換えると、車両102のいくつかの例においては、車両102のどのコンピューティング機能も、秒のオーダで実行され得る。
【0043】
本明細書において説明される技法は、機能308を編成する、1つまたは複数のデータ構造を生成することもできる。例えば、
図3は、機能を含むスタックトレースの編成を、1つまたは複数のデータ構造として、例示している。より具体的には、
図3は、第1のプレフィックス木312の視覚化と、第2のプレフィックス木314の視覚化とを含む。第1のプレフィックス木312は、第1のコンピューティングシステム302と関連付けられた、すべてのスタック機能を例示し、第2のプレフィックス木314は、第2のコンピューティングシステム304と関連付けられた、すべてのスタック機能を例示する。第1のプレフィックス木312においては、機能は、第1のノード316(そのうちのいくつかは、第1のノード316a、316bなどと個別にラベル付けされる)として、例示され、第2のプレフィックス木314においては、機能は、第2のノード318(そのうちのいくつかは、第2のノード318a、318bなどと個別にラベル付けされる)として、例示される。第1のノード316および第2のノード318の各々は、シンボルテーブル306からの機能ID310を含むように、例示される。やはり例示されるように、第1のプレフィックス木312は、第1のノード318の各々と関連付けられた、一意的なノード識別子を含む。したがって、例えば、一意的なノード識別子(N
1)320aは、第1のノード316aと関連付けられ、一意的なノード識別子(N
2)320bは、第1のノード316bと関連付けられ、以降も同様である。本明細書においては、第1のプレフィックス木312における一意的なノード識別子のうちの2つ以上は、一意的なノード識別子320と呼ばれることがある。ノード316および一意的なノード識別子320のいくつかに対応する参照番号は、明確にするために、省略される。第2のプレフィックス木314は、同様に、ノード318の各々と関連付けられた、第2の一意的なノード識別子322(そのうちの1つは、個別に第2の一意的なノード識別子322aとして参照され、そのうちの多数は、一括して第2の一意的なノード識別子322として参照され得る)を含む。
【0044】
示されるように、その後、第1のプレフィックス木312は、第1のコンピューティングシステム302と関連付けられた、すべてのスタックトレースを、例えば、木のブランチとして視覚化する。したがって、例えば、第1のプロセスは、順番に、(第1のノード316aによって例示されるような)機能F4、続いて、(第1のノード316bによって例示されるような)機能F1、最後に、(第1のノード316cによって例示されるような)機能F3を含む。やはり例示されるように、第1のノード316aは、関連付けられた第1の一意的なノード識別子(N1)320aを有し、第1のノード316bは、関連付けられた第1の一意的なノード識別子(N2)320bを有し、第1のノード316cは、関連付けられた第1の一意的なノード識別子(N3)320cを有する。第1および第2の一意的なノード識別子320、322は、異なるプロセス(またはスタックトレース)における、同じ機能の間の曖昧性解消を可能にする、一意的な識別子を含み得る。例示として、第1のプレフィックス木312内のノード316cと、第2のプレフィックス木314内のノード318cは、ともに、機能F3を表す。しかしながら、本明細書において説明される技法は、一意的なノード識別子320cを第1のノード316cと、一意的なノード識別子322cを第2のノード318cと関連付けるので、ノード316c、318c、およびそれらが関連付けられるスタックトレースは、全く同じ機能(F3)を表すにもかかわらず、区別可能である。
【0045】
より具体的には、本明細書において説明される例においては、第1のコンピューティングシステム302および第2のコンピューティングシステム304と関連付けられた処理は、CPU使用によって、特徴付けられることができる。例えば、
図3は、CPUのサンプリングを例示する、タイムライン324も含む。サンプリングは、実行されているオンCPU機能と関連付けられた、例えば、一意的なノード識別子320、322によって指定される、ノードを、例えば、時間間隔t
1、t
2などで、周期的に決定することを含み得る。各ノードは、一意であるので、読み出されたノードがそれの一部であるスタックを、再作成することが可能である。読み出されたノードは、時間周期にわたって集約されて、時間周期に対して、他の機能と比べて、どの機能がオンCPUであったかを示すインジケーションを提供することができる。
【0046】
いくつかの例においては、そのようなデータ構造(例えば、プレフィックス木312、314)は、実行時に決定されることができる。そのような例においては、特定の時間におけるスタックトレースまたは現在実行中の機能のうちの1つまたは複数を決定するために、問い合わせが、1つまたは複数のプロセッサーに対して、実行されることができる。そのような問い合わせの結果は、そのような木を構築するために、使用され得る。いくつかのそのような例においては、異なる機能呼び出しが、数秒後には、大部分は同じになることがあり、そのような時間周期の後には、新しいノードが、生成されないようになる。いくつかの例においては、そのようなデータ構造は、(例えば、車両上または車両外のどちらかで)事前計算されることがあり、後のロギングのために使用される。
【0047】
やはり本明細書において説明されるように、技法は、時間、例えば、サンプリング時間を、呼び出される各機能と関連付けることができる。本明細書にて説明される実装においては、例えば、タイムスタンプは、ノード320、322の各々と関連付けられることがあり、タイムライン324は、タイムスタンプの関連付けられた時間を有する、機能の各々の呼び出しの視覚化を提供する。もちろん、タイムライン324は、もっぱら例示的な目的で、例示されている。いくつかの例示的な実施においては、第1のコンピューティングシステム302および/または第2のコンピューティングシステム304は、相対的に高い頻度で、関連付けられた機能を実行し得る。例えば、第1のコンピューティングシステム302および/または第2のコンピューティングシステム304は、例えば、マイクロ秒、ミリ秒のオーダで、またはより速く、例示されたスタックトレースのうちの1つまたは複数を実行することによって、データを生成するように構成され得る。したがって、例示されたタイムライン324は、ミリ秒のオーダにあることがあり、データは、はるかに長い時間の期間、例えば、秒、分、時間、または車両の耐用年数などにわたって、集約されることができる。さらに、タイムスタンプは、機能の各々と関連付けられるので、特定の時点が、検討され得る。
【0048】
いくつかの例においては、読み出されたノードおよびタイムスタンプは、例示326において示されるように、記憶されることができる。より具体的には、例示326は、一意的なノード識別子320、322を、識別子が読み出されたサンプル時間を意味するタイムスタンプ330と関連付けて記憶する、パケット328a、328b、328cを含む。したがって、本開示の例に従うと、第1のコンピューティングシステム302および第2のコンピューティングシステム304のすべての動作は、パケット328だけを使用して、決定可能である。少なくともいくつかの例、例えば、実行中プロセスを定期的な間隔でサンプリングするものにおいては、そのようなパケット328は、ノードID320、322を含むだけであり得る。したがって、本明細書において説明される技法は、CPU使用を一連のデータパケットとして記憶し、そのデータパケットは、タイムスタンプおよび/またはノードIDだけを含み得ることによって、車両の計算時間を短縮する。これらのパケットの生成および記憶は、システムについてのCPU使用データの即時の解釈および操作を可能にする。例えば、タイムスタンプは、ある時点におけるプロセスの調査を可能にする。これは、実行中のCPU使用を必要とし得る、CPU使用を定量化し、または他の方法で解釈するための、従来の技法と異なり得る。
【0049】
図4Aおよび
図4Bは、
図3において説明および例示された技法を使用して決定された、CPU使用の視覚化を示している。より具体的には、
図4は、
図3における第1のコンピューティングシステム302および第2のコンピューティングシステム304の各々と関連付けられたプロセスのCPU使用の視覚化である、グラフ400aを示している。例えば、グラフは、フレームグラフであり得る。グラフ400aにおいては、各ボックスは、スタック内の機能、例えば、機能308の1つを表し、スタックは、関連する機能に従って、例えば、
図3においてプレフィックス木312、314内に示されたプロセスに従って、y軸に沿って構築される。したがって、例えば、最下部のボックス402は、すべてのプロセス、例えば、車両102のすべてのプロセスを表す。ボックス402の真上の(例えば、それに接する)2つのボックス404、406は、第1のコンピューティングシステム302と関連付けられたすべての機能をそれぞれ表し、ボックス404は、第2のコンピューティングシステム304と関連付けられたすべての機能をそれぞれ表す。グラフ400aをさらに説明すると、ボックス408、410、412は、ボックス404上に積み上げられたものとして、例示される。ボックス408、410、412は、それぞれ、機能F
4、機能F
1、および機能F
3を例示する。理解されるように、ボックス408、410、412は、
図3に示されるノードN
1、N
2、N
3を有するスタックトレースを例示する。したがって、やはり理解されるように、グラフ400aの垂直部分は、木312、314と同じスタックトレースを表す。しかしながら、プレフィックス木312、314と異なり、グラフ400aは、他の機能と比べた、時間のある期間にわたる、各機能についてのCPU使用を例示する。
【0050】
図3を参照して上で説明されたように、本明細書において説明される技法に従った、コンピューティング動作の周期的なサンプリングは、個々のサンプリング時間において実行されるプロセスと関連付けられた、一意的なノードIDの識別を提供する。グラフ200aは、これらの一意的なノードIDの集約に基づいて、作成されることができる。例えば、各一意的なノードIDは、オンCPUであったいくつかのプロセスと関連付けられる。システムが2つの機能AおよびBだけを実行する、単純な例について考察する。サンプリング中に、機能Aが、機能Bの2倍の頻度で読み出される場合、グラフ400aのようなグラフにおいては、機能Aと関連付けられたボックスの幅は、機能Bのそれの2倍であり、それは、機能Aが、CPU使用の約66%を使用し、機能Bが、CPU使用の約33%を使用することを示す。すなわち、グラフは、相対的なCPU使用を示し、最も広いボックスは、CPU使用の100%を表す。したがって、
図4Aのグラフ400aは、(ボックス404は、ボックス406とほぼ同じ幅であるので)サンプリングが、第2のシステムプロセスと関連付けられた一意的なノードIDとほぼ同数の、第1のシステムプロセスと関連付けられた一意的なノードIDを返したことを示している。したがって、システムAおよびシステムBの各々は、CPU使用の約50%を担う。次に、ボックス404、406の上のボックスの幅は、X軸上の任意の位置における最上部の水平線が、何回読み出されたかに対応する。例を提供すると、上で述べられたように、ボックス408は、ノード(N
3)320cに対応し、ボックス410は、ノード(N
2)320bに対応し、ボックス412は、ノード(N
1)320aに対応する。したがって、グラフ400aによって表される時間窓においては、ノード320a、320b、320cは、ほぼ同じ回数サンプリングされ得る。しかしながら、ノード(N
3)320cは、ノード(N
2)320bによって表される機能の後、およびノード(N
1)320aによって表される機能の後に、スタックトレース内に存在するので、ノード(N
3)320cからの読み出しの可視化は、それが従属するスタックを含む。したがって、リーフノードは、
図4Aにおいては、それらが従属するいずれのブランチノードよりも高く例示される。理解されるように、異なる時間窓を取ることは、異なるCPU使用統計をもたらし、したがって、グラフ400aを変化させ得る。
【0051】
本明細書において説明される例においては、機能の各々についてのCPU使用は、固定されたレートでサンプリングすることによって、決定され得る。任意のサンプリングレートが、使用され得るが、車両のシステム、例えば、第1のコンピューティングシステム302および第2のコンピューティングシステム304によって使用される共通の周波数以外の、サンプリングレートを使用することが望ましいことがある。したがって、例えば、いくつかの実施においては、97Hzのサンプリング周波数が、使用され得る。理解されるように、第1のシステム302および第2のシステム304が動作している間に、CPUをサンプリングすると、プロセスの各々についてのCPU使用が、近似されることができる。さらに、ログに記録されたデータ(例えば、例示326)は、少量のデータを、時間の長い期間にわたって、含み得るので、計算(例えば、CPU)使用は、いずれかの選択された時間の窓の間のデータ記録後に、決定されることがあり、統計的な解析は、データの全体にわたって適用されるような、与えられた時間の窓の間のCPU使用に関して、実行され得る。
【0052】
いくつかの例においては、グラフ400aは、どのシステム、プロセス、および/または機能が、最も重い負担をCPUにかけているかを理解するために、使用され得る。さらに、本明細書において説明される技法は、タイムスタンプを機能の各々と関連付けるので、特定の時間の窓が、調査されることができる。例えば、診断システム132が、異常なレイテンシイベントを決定したとき、グラフ400aのようなフレームグラフが、レイテンシイベントに近接した時間について、生成されることができる。このようにして、技術者は、レイテンシの問題の原因をより容易に識別し得る。
【0053】
他の例においては、CPU分布情報が、車両102における安全性をさらに高めるために、使用され得る。例えば、
図4Bは、車両の1つまたは複数のシステムについてのCPU使用の分布を例示している。例えば、400bのCPU分布は、車両102上のすべてのシステムに対する、第1のコンピューティングシステム302の使用のパーセンテージを示し得る。非限定的な例として、いくつかの例においては、400bに例示されるCPU使用は、数々の個別の時間周期、例えば、2~3秒の時間周期について決定された、CPU使用であり得る。次に、時間のある長さ、例えば、車両102の全体的なランタイムにわたって、システムのこれらの個別のCPU使用をプロットすることによって、予期されるCPU使用のしきい値または範囲が、決定されることができる。例えば、
図4Bの例においては、グラフ400bに例示される分布414は、時間の99%にわたって、例示されたシステムが、CPUの約3%から約6%を使用することを例示している。したがって、
図2Bに例示される分布と同様に、
図4Bは、システムがそれ以内で動作することを予期されるしきい値(および/または公称動作条件との比較のために使用される他の統計情報)を提供するために、使用され得る。動作中に、システムがこの範囲の範囲外で動作していると決定された場合、例えば、リアルタイムまたは準リアルタイムで計算されたCPU使用が、範囲外にある場合、CPU使用イベントが、決定され得る。いくつかの例においては、CPU使用イベントは、
図1との関連において上で説明されたような、異常なレイテンシイベントと同じように、処理され得る。したがって、例示されていないが、診断システム132は、レイテンシ決定コンポーネント134に類似した、CPU使用決定コンポーネント、および/またはレイテンシしきい値コンポーネント136に類似した、CPU使用しきい値コンポーネントを含み得る。これらの例においては、安全状態コンポーネント138は、
図1との関連において上で説明されたようなレイテンシ、および今しがた説明されたようなCPU使用の両方についての情報を検討し得る。
【0054】
やはり上で述べられたように、本明細書において説明されるレイテンシ関連技法は、CPU使用関連の技法と併せて、使用され得る。例えば、異常なレイテンシイベントが、例えば、診断システム132によって、決定されたとき、タイムスタンプ124は、レイテンシイベントの時間を決定するために使用されることがあり、一意的な識別子126は、異常なレイテンシイベントの原因を決定するために使用され得る。したがって、例えば、本明細書において説明されるレイテンシ関連技法は、異常なイベントを識別し、イベントの位置を正確に示し得る。この情報を用いて、フレームグラフまたは他のCPU使用情報が、識別された時間およびその前後において、指し示されたシステムについて、生成され得る。この方法においては、レイテンシが、システムによって実行されるいくつかのプロセスに起因する限り、プロセスは、容易に識別されることができる。他の例においては、上で説明されたように、CPU使用は、異常なイベント、例えば、システムが正常または予期される動作範囲の範囲外で動作しているときを識別するために、独立して使用され得る。少なくともいくつかの例においては、そのようなイベントは、しきい値CPU使用範囲の範囲外にある、システム、サブシステム、またはプロセスなどの単一の発生と関連付けられ得る。他の例においては、イベントは、例えば、ある時間にわたって、予期される範囲またはしきい値の範囲外にあるCPU使用を決定する、データの統計的な集約と関連付けられ得る。
【0055】
さらに、本明細書において説明されるCPU使用決定技法は、他の診断および/またはシステム設計の目的で、使用されることができる。例えば、
図1、
図2A、および
図2Bを参照して、上で説明された技法と同様に、CPU使用は、システム変更を理解するために、使用されることができる。例えば、新しいソフトウェアバージョンおよび/または交換コンポーネントは、CPU使用に様々な影響を有することができ、CPU使用を決定するために本明細書において説明される技法は、これらのシステム変更の統計的な解析を可能にし得る。例えば、
図4Bに示される分布414は、1つのソフトウェアバージョンを実行する、1つの例示的なシステムについてのものであり得る。いくつかの例においては、ソフトウェアの異なるバージョンを実行する、同じシステムについて、類似の分布が、決定され得る。CPU使用に対する影響の違いが、分布から明らかになることがある。いくつかの例においては、車両における実施についてのバージョンが、比較に基づいて、決定され得る。いくつかの例においては、最低の平均CPU使用、または最小分散などを有するバージョンが、選択され得る。
【0056】
図5は、本明細書において説明される技法を実施するための、例示的なアーキテクチャ500のブロック図を示している。少なくとも1つの例においては、アーキテクチャ500は、
図1を参照して上で説明された、車両102に類似する(または同じである)ことができる、車両502を含むことができる。例示されたアーキテクチャ500においては、車両502は、自律車両であるが、しかしながら、車両502は、他の任意のタイプの車両であることができる。
【0057】
車両502は、1つまたは複数の車両コンピューティングシステム504と、1つまたは複数のセンサシステム506と、1つまたは複数のエミッタ508と、1つまたは複数の通信接続510と、(例えば、データを交換する、および/または電力を供給するために、車両502と物理的に結合するための)少なくとも1つの直接接続512と、1つまたは複数の運転モジュール514とを含むことができる。いくつかの例においては、車両502は、車両コンピューティングシステム504の追加のインスタンスを含むことができる。
【0058】
車両コンピューティングシステム504は、1つまたは複数のプロセッサー516と、1つまたは複数のプロセッサー516と通信可能に結合されたメモリー518とを含むことができる。例示される例においては、車両コンピューティングシステム504のメモリー518は、ローカリゼーションシステム520と、認知システム522と、プランニングシステム524と、1つまたは複数のシステムコントローラ526と、1つまたは複数のマップ528と、診断システム530とを記憶する。例においては、診断システム530は、上で説明された診断システム132と同じであることがあり、または診断システム132のそれと類似した機能を含み得る。例示の目的で、メモリー518内に存在するものとして描かれているが、ローカリゼーションシステム520、認知システム522、プランニングシステム524、1つもしくは複数のシステムコントローラ526、マップ528、および/または診断システム530は、追加的または代替的に、コンピューティングシステム504からアクセス可能である(例えば、車両502の異なるコンポーネント内に記憶される、および/または車両502からアクセス可能である(例えば、リモートに記憶される))ことができることが企図される。さらに、特定の特徴および機能性が、様々なシステムおよびコンポーネントに帰属させられ得るが、そのようなことは、例のためにすぎない。特徴および機能は、他のまたは追加のコンポーネントと関連付けられ、および/またはそれらによって実行され得る。さらに、特定のシステムまたはコンポーネントに帰属させられる、いくつかの機能は、多数のシステム/コンポーネントにわたって分散させ得る。
【0059】
少なくとも1つの例においては、ローカリゼーションシステム520は、車両502の位置を決定するために、センサシステム506からデータを受信するための機能性を含むことができる。いくつかの実施においては、ローカリゼーションシステム520は、環境の、例えば、マップ528の、三次元マップを含み、および/またはそれを要求/受信することができ、マップ内の自律車両の位置を継続的に決定することができる。いくつかの例においては、ローカリゼーションシステム520は、タイムオブフライトセンサなどからの画像データ、LIDARデータ、RADARデータ、SONARデータ、IMUデータ、GPSデータ、ホイールエンコーダデータ、またはそれらの任意の組み合わせなどを受信して、自律車両502の位置を正確に決定するために、SLAM(同時ローカリゼーションおよびマッピング)またはCLAMS(キャリブレーション、ローカリゼーション、およびマッピング)を使用することができる。いくつかの例においては、本明細書において説明されるように、候補軌道を生成するための自律車両の初期位置を決定するために、ローカリゼーションシステム520は、例えば、本明細書において説明される技法に従って、データを公開することによって、データを車両502の様々なコンポーネントに提供することができる。
【0060】
いくつかの例においては、認知システム522は、オブジェクト検出、セグメンテーション、および/または分類を実行するための機能性を含むことができる。例えば、認知システム522は、車両502に近接したエンティティの存在、および/またはエンティティタイプ(例えば、自動車、歩行者、サイクリスト、建物、木、路面、縁石、歩道、不明など)としてのエンティティの分類を示す、処理されたセンサデータを提供することができる。追加的および/または代替的な例においては、認知システム522は、検出されたエンティティおよび/またはエンティティが位置付けられた環境と関連付けられた、1つまたは複数の特性を示す、処理されたセンサデータを、例えば、公開することによって、提供することができる。いくつかの例においては、エンティティと関連付けられた特性は、x位置(グローバル位置)、y位置(グローバル位置)、z位置(グローバル位置)、方位、エンティティタイプ(例えば、分類)、エンティティの速度、エンティティの広がり(サイズ)などを含むことができるが、それらに限定されない。環境と関連付けられた特性は、環境内における別のエンティティの存在、環境内における別のエンティティの状態、時間帯、曜日、季節、気象条件、暗さ/明るさのインジケーションなどを含むことができるが、それらに限定されない。
【0061】
いくつかの例においては、プランニングシステム524は、環境内を通過するために車両502が従う経路を決定することができる。例えば、プランニングシステム524は、様々なルートおよび軌道、ならびに様々なレベルの詳細を決定することができる。例えば、プランニングシステム524は、第1の位置(例えば、現在位置)から第2の位置(例えば、目標位置)まで走行するためのルートを決定することができる。この説明の目的で、ルートは、2つの位置の間を走行するための、ウェイポイントのシーケンスであり得る。非限定的な例として、ウェイポイントは、街路、交差点、全地球測位システム(GPS)座標などを含むことができる。さらに、プランニングシステム524は、第1の位置から第2の位置までのルートの少なくとも一部に沿って、自律車両を案内するための、命令を生成することができる。少なくとも1つの例においては、プランニングシステム524は、ウェイポイントのシーケンス内の第1のウェイポイントから、ウェイポイントのシーケンス内の第2のウェイポイントまで、自律車両502をどのように案内するかを決定することができる。いくつかの例においては、命令は、軌道、または軌道の一部であることができる。いくつかの例においては、多数の軌道は、後退ホライズン技法に従って、実質的に同時に(すなわち、技術的な許容範囲内で)生成されることができる。後退ホライズンにおける多数の軌道のうちの、最も高い信頼レベルを有する単一の軌道が、車両を動作させるために、選択され得る。
【0062】
他の例においては、プランニングシステム524は、代替的または追加的に、環境内を通過するために車両502が従う経路を決定するために、例えば、サブスクリプションを介して受信された、認知システム522からのデータを使用することができる。例えば、プランニングシステム524は、環境と関連付けられたオブジェクトに関するデータを、認知システム522から受信することができる。このデータを使用して、プランニングシステム524は、環境内のこれらのオブジェクトを回避するように、第1の位置(例えば、現在位置)から第2の位置(例えば、目標位置)まで走行するためのルートを決定することができる。
【0063】
少なくとも1つの例においては、車両コンピューティングシステム504は、車両502のステアリング、推進、ブレーキ、安全性、エミッタ、通信、および他のシステムを制御するように構成されることができる、1つまたは複数のシステムコントローラ526を含むことができる。システムコントローラ526は、プランニングシステム524から提供される軌道に従って、動作するように構成され得る、車両502の運転モジュール516および/または他のコンポーネントの対応するシステムと通信し、および/またはそれらを制御することができる。本明細書において説明される技法においては、システムコントローラ526は、例えば、プランニングシステム524によって公開される、車両502がそれに沿って走行することができる、軌道についての情報を受信するようにサブスクライブすることができる。
【0064】
必須ではないが、いくつかの例においては、ローカリゼーションシステム520、認知システム522、プランニングシステム524、およびシステムコントローラ526は、順次作動することができる。例えば、ローカリゼーションシステム520は、データ、例えば、センサデータを受信し、センサデータを使用して、ローカリゼーションシステムデータを生成および出力することができる。その後、ローカリゼーションシステムデータは、認知システム522において、受信されることができ、認知システム522は、認知システムデータを生成するために、ローカリゼーションシステムデータを使用することができる。その後、認知システムデータは、プランニングシステム524において、受信されることができ、プランニングシステム524は、プランニングシステムデータを生成するために、認知システムデータを使用することができるなどである。しかしながら、他の例においては、データは、多くの異なる機能を実行するために、多数の異なるシステムにおいて受信され(それらによって使用され)得る。
【0065】
いくつかの例においては、マップ528は、リモートコンピューティングデバイス上に記憶されることができる。いくつかの例においては、マップ528は、特性(例えば、エンティティのタイプ、時間帯、曜日、季節など)に基づいて、記憶されることができる。多数のマップ528を記憶することは、類似のメモリー要件を有するが、マップ内のデータがアクセスされることができる速さを高めることができる。少なくともいくつかの例においては、マップ528、および/またはマップ528に関連する情報は、本明細書において説明される実施に従って、公開されることができる。例えば、車両コンピューティングシステム504、または他の何らかのシステムは、少なくとも部分的にマップ528によって通知される、道路のネットワークについての情報を公開することができる。
【0066】
診断システム530は、車両502の安全な動作のためのパラメータを決定し、車両502が安全なパラメータ内で動作していることを保証し、および/または車両が安全なパラメータ内で動作していないとき、車両を制御するように構成されることができる。例示されるように、診断システム530は、レイテンシコンポーネント532と、CPU使用コンポーネント534と、安全状態コンポーネント536とを含むことができる。診断システム530は、メモリー518内の単一ブロックとして例示されるが、別個の診断システム530が、システムおよび/もしくはコンポーネントの各々に含まれ、またはシステムおよび/もしくはコンポーネントの各々からアクセス可能であることができる。非限定的な例として、ローカリゼーションシステム520は、安全状態コンポーネント536および/または他の任意の安全状態コンポーネントとは独立に、独自の関連付けられた安全状態コンポーネントを有し得る。例えば、診断システム530の安全状態コンポーネントは、ローカリゼーションシステム520における異常な性能イベントに応答して、安全な停止を実行するように、または何らかの安全性関連のアクションを取るように、車両を構成し得る。同様に、異常なイベントは、ローカリゼーションシステム520とだけ関連付けられた、レイテンシコンポーネント532および/またはCPU使用コンポーネントによって決定され得る。
【0067】
いくつかの実施においては、レイテンシコンポーネント532は、システムレイテンシと関連付けられた機能を実行することができる。例えば、レイテンシコンポーネント532は、車両502と関連付けられたシステムのうちの1つまたは複数から、データの受信、作成、および/または出力と関連付けられた情報を受信することができる。いくつかの例においては、レイテンシコンポーネント532は、タグ122と関連付けられた情報など、タグ情報を受信することができる。この情報を使用して、レイテンシコンポーネント532は、システムのうちの1つまたは複数と関連付けられたレイテンシを計算することができる。例えば、レイテンシコンポーネント532は、例えば、センサの1つまたは他の何らかのデータ入力によって生成されたデータが、様々なシステムの中を伝搬し、最終的に、車両502を制御するために使用されるのに、どれくらいの時間がかかるかを追跡することによって、車両全体のレイテンシを決定することができる。他の例においては、レイテンシコンポーネント532は、車両502上のすべてのシステムの(または単一のシステムの)特定のサブセットについてのレイテンシを決定するために、使用されることができる。例えば、タグ122は、一意的な識別子126を蓄積するので、レイテンシコンポーネント532は、1つまたは複数の特定のデータインスタンスを追跡することによって、任意の1つまたは複数のシステムについてのレイテンシを生成することができる。さらに、タグ122は、タイムスタンプ情報124も含むことができるので、レイテンシコンポーネント532は、任意の時間の窓の間における、そのレイテンシを決定することもできる。レイテンシコンポーネント532は、いくつかの例においては、コンポーネントについての統計的情報を決定するために、時間の期間(例えば、2秒などの時間の窓)にわたって、レイテンシの統計的集約を実行することができる。
【0068】
レイテンシコンポーネント532は、車両502、または車両502の何らかのシステムが、適切に機能しているかどうかを決定するために、決定されたレイテンシ(または集約された情報の統計的属性)を、レイテンシしきい値またはレイテンシ範囲と比較することもできる。非限定的な例として、車両502上の各システム、例えば、ローカリゼーションシステム520、認知システム522、または各センサシステム506などは、レイテンシの異なる許容可能範囲、すなわち、第1のしきい値レイテンシ以上、および/または第2の(例えば、高い方の)しきい値レイテンシ以下の範囲を有し得る。いくつかの例においては、計算は、以前に収集された公称動作挙動の最小、最大、平均、分散/標準偏差などと、レイテンシを比較することを含み得る。本明細書において説明される実施においては、レイテンシコンポーネント532は、与えられたシステムについて決定されたレイテンシを、そのシステムの許容可能なレイテンシ範囲と比較することができる。計算されたレイテンシが、許容可能範囲の範囲内にあるとき、車両は、予期されるように機能していると見なされ得る。しかしながら、計算されたレイテンシが、許容可能なレイテンシ範囲の範囲外にあるとき、レイテンシコンポーネント532は、異常なレイテンシイベントを識別し得る。いくつかの例においては、異常なレイテンシイベントについての情報は、何らかの安全アクションを取るために、安全状態コンポーネント536に提供され得る。安全状態コンポーネント536は、以下でより詳細に説明される。
【0069】
レイテンシコンポーネント532は、許容可能なレイテンシ範囲を決定するようにも構成され得る。例えば、レイテンシコンポーネント532は、
図2Aに例示されるように、特定の1つまたは複数のシステムの拡張されたランタイムにわたって、データを受信し得る。そのようなデータを使用して、レイテンシ決定コンポーネントは、一般に
図2Bに例示されるような、受信されたデータと関連付けられた、分布関数を決定することができる。分布関数は、システムと関連付けられた、レイテンシの履歴を特徴付けることができ、この履歴は、システムについての安全な動作レイテンシ範囲を通知することができる。例えば、範囲は、すべての決定されたレイテンシのあるパーセンテージ、例えば、95%または100%を含む、範囲であり得る。
【0070】
診断システム530のCPU使用コンポーネント534は、車両502のシステムのCPU使用に関連する、機能性を含むことができる。例えば、CPU使用コンポーネント534は、システム/プロセス/機能が、許容可能な動作範囲の範囲外で動作しているときを決定するために、システムごと、プロセスごと、および/または機能ごとに、CPU使用を定量化することができる。例えば、CPU使用コンポーネント534は、
図3に例示されるスキーム300との関連において一般に説明される作動を実行するための、機能を生成することができる。いくつかの例においては、CPU使用コンポーネント534は、車両502、および/または車両502の1つもしくは複数のシステムによって実行される、すべてのプロセスおよび/または機能のデータ構造を生成することができる。例えば、CPU使用コンポーネント534は、車両502のシステムのうちの1つまたは複数と関連付けられたプロセスのログを再検討し、プロセスを表す構造、例えば、スタックトレースを生成するための、機能性を含むことができる。車両502の例として、システムの各々は、一般に、同じプロセスの多くを繰り返し実行する。例えば、ローカリゼーションシステム520は、環境内における車両の位置についてのデータを生成および出力するために、定期的に、センサデータを受信し、センサデータを処理し得る。この例は、ローカリゼーションシステム520と関連付けられた処理を大幅に簡素化しているが、ローカリゼーションシステム520は、ローカリゼーションシステム524の機能と関連付けられたログを、例えば、秒のオーダにある、相対的に短い時間の期間、追跡することだけによって、ローカリゼーションシステム520によって引き受けられるプロセスおよび機能のすべてについての、1つまたは複数の完全なスタックトレースが、実質的に編集され得るという、十分な規則性がある、それが引き受ける個別の数のプロセスおよび機能を有する。
【0071】
やはり
図3との関連において上で説明され、
図3に例示されるように、CPU使用コンポーネント534は、プロセスおよび/または機能と関連付けられたデータ構造を、複数のノードを含む木グラフとして特徴付け得る。ノードの各々は、機能の1つを表す、整数などの一意的なIDであり得る、関連付けられた特徴IDを有し得る。したがって、上で説明されたように、例えば、いくつかの機能は、システムのいたるところで、またはシステム間にわたって、多数のプロセスにおいて実行され得るので、ノードのいくつかは、同じ機能IDを有し得る。したがって、異なるプロセスにおける同じ機能を区別するために、CPU使用コンポーネント534は、木グラフ内における各ノードについての一意的なノードIDを生成することもできる。
【0072】
CPU使用コンポーネント534は、離散時間において、CPU上において動作する機能を決定することによって、CPU上における動作をサンプリングすることもできる。いくつかの例においては、CPU使用コンポーネント534は、(例えば、車両のシステムと関連付けられた標準的な周波数と区別するために)排他的に、約95Hzから約100Hzの間のレートでサンプリングし得るが、他の周波数も、使用され得る。サンプリングの結果として、CPU使用コンポーネント534は、各サンプルについて、オンCPU機能を識別するノードID、およびサンプルが獲得された時間と関連付けられたタイムスタンプを含む、データパケットを生成し得る。
【0073】
いくつかの実施においては、CPU使用コンポーネント534は、車両についてのCPU使用履歴を生成するために、サンプリングによって獲得された情報を使用することができる。例えば、CPU使用履歴は、
図4に例示されるグラフ400aなどのグラフとして、視覚化され得る。例えば、グラフは、CPUの全体的な使用に対する、システム、プロセス、および機能についてのCPU使用を識別するための有用なツールであることができる。さらに、本明細書において説明される技法は、例えば、一意的なノードIDによって識別される、実行される機能を、タイムスタンプと関連付ける、パケットを生成するので、CPU使用コンポーネント534は、特定の時間または時間の範囲についてのCPU使用を決定することもできる。非限定的な例として、システムが、不適切に機能していることを疑われるとき、CPU使用コンポーネント534は、その特定のシステムについてのCPU使用情報を生成することができる。同様に、特定の時間において、不適切な機能が、疑われるとき、CPU使用コンポーネント534は、例えば、時間周期に対応するタイムスタンプを有するパケットを検索し、関連付けられたノードIDからスタックトレースを構築することによって、特定の時間を含む時間周期に対してCPU使用を決定することができる。
【0074】
追加の実施においては、CPU使用コンポーネント534は、車両502、または車両502のいくつかのシステムが、適切に機能しているかどうかを決定するために、決定されたCPU使用を、CPU使用しきい値またはCPU使用範囲と比較することができる。非限定的な例として、車両502上における各システム、例えば、ローカリゼーションシステム520、認知システム522、および/または各センサシステム506などは、CPU使用の異なる許容可能範囲を有し得る。言い換えると、システムの各々は、CPU使用を分かち合わなければならないことがあり、したがって、各システムは、第1のしきい値使用以上である、および/または第2の(例えば、高い方の)しきい値使用以下である量で、CPUを使用することを予期されることがある。理解されるように、しきい値は、システムごとに様々であり得る。さらに、範囲および/または予期されるCPU使用は、動的であり得る。例えば、本明細書において説明されるシステムは、多くの相互に関連するサブシステムを含むことができるので、システム全体の全体的なCPU使用は、任意のサブシステムのCPU使用よりも重要なことがある。したがって、例えば、いくつかの例においては、多数(またはすべて)のサブシステムについての許容可能なCPU使用が、決定されることができる。したがって、例えば、与えられた時間周期について、いくつかのシステムは、他のシステムが、より少ないコンピューティングを実行している限り、相対的により高い許容可能なCPU使用を有し得る。
【0075】
本明細書において説明される実施においては、CPU使用コンポーネント534は、与えられたシステム(またはサブシステムもしくはプロセスもしくは機能)について決定されたCPU使用を、そのシステム(またはサブシステムもしくはプロセスもしくは機能)と関連付けられた許容可能なCPU使用範囲と比較することができる。計算されたCPU使用が、許容可能範囲の範囲内にあるとき、車両(またはシステムもしくはプロセスもしくは機能)は、予期されるように機能していると見なされ得る。しかしながら、計算されたCPU使用が、許容可能範囲の範囲外にあるとき、CPU使用コンポーネント534は、異常なCPU使用イベントを識別し得る。いくつかの例においては、異常なCPU使用イベントについての情報は、何らかの安全なアクションを取るように車両502を制御し得る、安全状態コンポーネント536に提供され得る。安全状態コンポーネント536は、以下でより詳細に説明される。
【0076】
CPU使用コンポーネント534は、許容可能なCPU使用範囲を決定するようにも構成され得る。例えば、CPU使用コンポーネント534は、1つまたは複数の特定のシステムの拡張されたランタイムにわたって、データを受信することがあり、そのようなデータを使用して、CPU使用コンポーネント534は、一般に
図4Bに例示されるような、受信されたデータと関連付けられた分布関数を決定することができる。少なくともいくつかの例においては、分布関数は、ログの全体について繰り返し決定されるような、時間の窓の間のCPU使用の統計的平均として、決定され得る。分布関数は、システムと関連付けられたCPU使用の履歴を特徴付けることができ、この履歴は、システムについての安全な動作CPU使用範囲を通知することができる。例えば、範囲は、すべての決定されたCPU使用測定のあるパーセンテージ、例えば、95%または100%を含む、範囲であり得る。
図4Bにおいては、範囲は、例えば、車両502上におけるすべてのCPU使用の約4.0%から約7.0%であり得る。
【0077】
安全状態コンポーネント536は、レイテンシコンポーネント532および/またはCPU使用コンポーネント534が、イベントの決定した発生を生成したことに応答して、1つまたは複数のアクションを決定および出力することができる。例えば、安全状態コンポーネント536は、車両の安全な停止を開始し得る。いくつかの実施においては、プランニングシステム524は、例えば、1つまたは複数の通常の運転軌道に加えて、フォールバック軌道として、安全軌道を生成し得る。したがって、レイテンシコンポーネント532が、1つもしくは複数のシステムのレイテンシが、予期されるもしくは安全な動作範囲の範囲外にあることを検出し、および/またはCPU使用コンポーネント534が、システム(またはプロセスもしくは機能)が、予期されるもしくは安全な動作CPU使用範囲の範囲外にある、CPUの量を使用していると決定したとき、安全状態コンポーネント536は、車両に、この安全な停止軌道を実行させることができる。他の実施においては、安全状態コンポーネント536は、例えば、ひとたび停止させた後に、車両が動くのを防止するために、車両502のある機能を無効化する戦略を実行することができる。
【0078】
いくつかの例においては、安全状態コンポーネント536は、車両に停止させるものとは異なるアクションを決定することができる。例えば、安全状態コンポーネント536は、検出されたイベントを軽減するために、1つまたは複数の軽減戦略に着手することができる。いくつかの例においては、そのような軽減戦略は、搭乗者、遠隔オペレータ、または他のエンティティへのアラートを作成することを含むことができる。例えば、アラートは、エンティティに支援を要求し得る。他の実施においては、安全状態コンポーネント536は、車両502のシステムおよび/または設定を再構成するためのアクションを取ることができる。例えば、安全状態コンポーネント536は、例えば、ネットワークトラフィックを低減させる試みにおいて、あるデータが受信および/または公開されることを防止することがあり、それによって、レイテンシを低減する。例えば、過剰なネットワークトラフィックは、過剰なレイテンシの一般的な原因となり得る。他の軽減戦略は、車両の速さを下げることを含み得る。例えば、レイテンシおよび/またはCPU使用と関連付けられたしきい値は、安全性関連であり得るので、車両は、より高いレイテンシを有する安全な動作を、より遅い速さにおいて、維持することができることがある。したがって、例えば、車両が、よりゆっくり移動しており、および/またはより大きいレイテンシが、許容可能であり得るとき、重要なデータが受信されるべき周期性は、延長され得る。同様に、車両が、よりゆっくり走行しているとき、許容可能なレイテンシは、より長くなり得る。
【0079】
上述の例は、車両の安全な制御を保証する目的で、車両が動作中に、レイテンシデータおよび/またはCPU使用データを生成することを例示したが、他の例示的な使用事例も、企図されている。例えば、レイテンシデータおよび/またはCPU使用データを生成するための、本明細書において説明される技法は、異なる車両および/または異なるソフトウェアバージョンの機能性を比較するためにも、使用され得る。いくつかの例においては、本明細書において説明される技法を使用して、多数のソフトウェアバージョンについての(レイテンシおよび/またはCPU使用データについての)度数分布データを生成することによって、診断システム530は、更新されたソフトウェアが、システムにどのように影響するかを、容易に決定することができる。したがって、診断システム530、およびそれと関連付けられた機能性は、車両の安全な動作のためばかりでなく、テストおよびシステム設計のためにも、有益なツールとして機能し得る。
【0080】
少なくとも1つの例においては、センサシステム506は、タイムオブフライトセンサ、位置センサ(例えば、GPS、コンパスなど)、慣性センサ(例えば、慣性計測ユニット(IMU)、加速度計、磁力計、ジャイロスコープなど)、LIDARセンサ、RADARセンサ、SONARセンサ、赤外線センサ、カメラ(例えば、RGB、IR、強度、深度など)、マイクロフォンセンサ、環境センサ(例えば、温度センサ、湿度センサ、光センサ、圧力センサなど)、超音波トランスデューサ、ホイールエンコーダなどを含むことができる。センサシステム506は、これらまたは他のタイプの各センサの多数のインスタンスを含むことができる。例えば、タイムオブフライトセンサは、車両502の隅、前部、後部、側面、および/または上部に配置された、個々のタイムオブフライトセンサを含むことができる。別の例として、カメラセンサは、車両502の外部および/または内部まわりの様々な位置に配置された、多数のカメラを含むことができる。センサシステム506は、例えば、本明細書において説明される例に従って、センサデータを公開することによって、コンピューティングシステム504に入力を提供することができる。
【0081】
車両502は、上で説明されたような、光および/または音を放出するための1つまたは複数のエミッタ508を含むこともできる。この例のエミッタ508は、車両502の搭乗者と通信するための内部オーディオおよびビジュアルエミッタを含む。例として、限定ではないが、内部エミッタは、スピーカ、ライト、サイン、ディスプレイスクリーン、タッチスクリーン、触覚型エミッタ(例えば、振動および/または力フィードバック)、ならびに機械的アクチュエータ(例えば、シートベルトテンショナ、シートポジショナ、ヘッドレストポジショナなど)などを含むことができる。この例におけるエミッタ508は、外部エミッタも含む。例として、限定ではないが、今述べた例の外部エミッタは、走行の方向を知らせるためのライト、または車両アクションの他のインジケータ(例えば、インジケータライト、サイン、ライトアレイなど)と、1つまたは複数が音響ビームステアリング技法を含み得る、歩行者または他の近くの車両と聞き取れるように通信する1つまたは複数のオーディオエミッタ(例えば、スピーカ、スピーカアレイ、ホーンなど)とを含む。
【0082】
車両502は、車両502と、1つまたは複数の他のローカルまたはリモートコンピューティングデバイスとの間の通信を可能にすることができる、1つまたは複数の通信接続510を含むこともできる。例えば、通信接続510は、車両502上の他のローカルコンピューティングデバイス、および/または運転モジュール514との通信を容易にすることができる。また、通信接続510は、車両が、他の近くのコンピューティングデバイス(例えば、他の近くの車両、交通信号など)と通信することを可能にすることができる。通信接続510は、車両502が、リモート遠隔操作コンピューティングデバイス、または他のリモートサービスと通信することも可能にすることができる。
【0083】
通信接続510は、コンピューティングシステム504を、別のコンピューティングデバイス、またはネットワーク542などのネットワーク(例えば、インターネット)に接続するための、物理的および/または論理的インターフェースを含むことができる。例えば、通信接続510は、IEEE 802.11規格によって定義された周波数を介するものなど、Wi-Fiベースの通信、Bluetoothなどの短距離無線周波数、セルラ通信(例えば、2G、5G、4G、4G LTE、5Gなど)、またはそれぞれのコンピューティングデバイスが他のコンピューティングデバイスとインターフェースを取ることを可能にする、任意の適切な有線もしくは無線通信プロトコルを可能にすることができる。
【0084】
上で述べられたように、直接接続512は、例えば、データを交換するために、および/または電力を供給するために、デバイスを車両502に物理的に結合することができる。いくつかの例においては、直接接続512は、例えば、1つまたは複数のクライアントコンピューティングシステムへのアクセスのポイントを提供することができる。
【0085】
車両502は、運転モジュール514を含むこともできる。いくつかの例においては、車両502は、単一の運転モジュール514を有することができる。少なくとも1つの例においては、車両502が、多数の運転モジュール514を有する場合、個々の運転モジュール514は、車両502の反対側の端部(例えば、前部および後部など)に位置付けられることができる。少なくとも1つの例においては、運転モジュール514は、運転モジュール514および/または車両502の周囲の状態を検出するための、1つまたは複数のセンサシステムを含むことができる。例として、限定ではないが、センサシステムは、運転モジュールの車輪の回転を感知するための、1つまたは複数のホイールエンコーダ(例えば、回転エンコーダ)、運転モジュールの方位および加速度を測定するための、慣性センサ(例えば、慣性計測ユニット、加速度計、ジャイロスコープ、磁力計など)、カメラまたは他の画像センサ、運転モジュールの周囲におけるオブジェクトを音響的に検出するための、超音波センサ、LIDARセンサ、RADARセンサなどを含むことができる。ホイールエンコーダなどの、いくつかのセンサは、運転モジュール514に固有であることができる。いくつかのケースにおいては、運転モジュール514上のセンサシステムは、車両502の対応するシステム(例えば、センサシステム506)と重複すること、またはそれを補完することができる。
【0086】
運転モジュール514は、高電圧バッテリ、車両を推進するためのモータ、バッテリからの直流を他の車両システムによる使用のための交流に変換するためのインバータ、(電気的であることができる)ステアリングモータおよびステアリングラックを含むステアリングシステム、油圧または電気アクチュエータを含むブレーキシステム、油圧および/または空気圧コンポーネントを含むサスペンションシステム、ブレーキ力を分散させて、トラクションの損失を軽減し、制御を維持するための安定性制御システム、HVACシステム、照明装置(例えば、車両の外部の周辺を照明するためのヘッドライト/テールライトなどの照明装置)、および1つまたは複数の他のシステム(例えば、冷却システム、安全システム、車載充電システム、DC/DCコンバータ、高電圧ジャンクション、高電圧ケーブル、充電システム、充電ポートなどの他の電気コンポーントなど)を含む、多くの追加の車両システムを含むことができる。加えて、運転モジュール514は、様々な車両システムの動作を制御するために、センサシステムからデータを受信し、前処理することができる、運転モジュールコントローラを含むことができる。いくつかの例においては、運転モジュールコントローラは、1つまたは複数のプロセッサーと、1つまたは複数のプロセッサーと通信可能に結合されたメモリーとを含むことができる。メモリーは、運転モジュール514の様々な機能性を実行するための、1つまたは複数のモジュールを記憶することができる。さらに、運転モジュール514は、それぞれの運転モジュールによる1つまたは複数の他のローカルまたはリモートコンピューティングデバイスとの通信を可能にする、1つまたは複数の通信接続も含む。
【0087】
やはり
図5に示されるように、車両502は、車両502のコンポーネントおよびシステムの各々が、それを介して情報を伝達し得る、バス538も含むことができる。バス538は、一般に、コンポーネントがそれを介してデータを送信および/または受信する、コンポーネントを表し得る。少なくとも1つの例においては、パブリッシャは、バス538に、情報を公開することができ、および/またはサブスクライバは、バス538を介して、情報を受信することができる。バス538は、1つまたは複数のプロトコルを使用して、車両502のシステムおよびコンポーネント間において、データおよび情報が、その上で送信されることができる、任意の通信ネットワークまたはプラットフォームであることができる。
図5の矢印540は、バス538に関連する、データの方向性を示し得る。したがって、非限定的な例として、安全状態コンポーネント536は、データ、例えば、安全停止メッセージをバス538に公開することができ、安全停止メッセージを受信するようにサブスクライブし得る、運転モジュール514は、公開されたメッセージを受信し、安全な停止を実施することができる。別の例においては、ローカリゼーションシステム520は、姿勢情報を公開することができ、プランニングシステム524は、車両がそれに沿って制御されるべき軌道を決定するために、姿勢情報を受信することができる。理解されるように、これらは、少数の非常に単純化された例にすぎず、様々なシステムおよびコンポーネントは、例えば、情報のトピックまたはタイプをサブスクライブすることによって、バス538に情報を公開し、および/またはバスから情報を受信することができる。バス538を介した、公開/サブスクリプションスキームが、
図5に例示されるが、他の通信アーキテクチャも、使用されることがあり、または他の通信アーキテクチャが、代替的に使用され得る。
【0088】
上で述べられたように、
図5は、1つまたは複数のリモートコンピューティングシステム544も例示している。例えば、リモートコンピューティングシステム544は、例えば、ネットワーク542を介して、車両502と通信する、1つまたは複数のコンピューティングデバイスであり得る。他の例においては、リモートコンピューティングシステム544は、例えば、直接接続512を介して、車両502に直接的に接続され得る。
【0089】
リモートコンピューティングシステム544は、プロセッサー546と、プロセッサー546と通信可能に結合されたメモリー548とを含むことができる。例示された例においては、リモートコンピューティングデバイス544のメモリー548は、レイテンシコンポーネント552と、CPU使用コンポーネント554と、安全状態コンポーネント556とを含む、診断システム550を記憶する。少なくとも1つの例においては、診断システム550は、診断コンポーネント530の少なくとも一部に対応することができ、レイテンシコンポーネント552は、レイテンシコンポーネント532に対応し、CPU使用コンポーネント554は、CPU使用コンポーネント534に対応し、および/または安全状態コンポーネント556は、安全状態コンポーネント536に対応する。例えば、診断システム550は、レイテンシコンポーネント552および/またはCPU使用コンポーネント554を使用して、車両の1つまたは複数のシステムと関連付けられた、異常なイベントを決定することができる。他の例においては、リモートコンピューティングシステム544は、レイテンシおよびCPU使用などの性能特性と関連付けられた、しきい値および/または予期される範囲を決定するために、例えば、診断システム550を使用して、タグ122および/またはCPU使用パケット328を受信し、および/またはそれらにアクセスすることができる。そのような決定をリモートコンピューティングデバイス上において行うことは、車上よりも好ましいことがある。さらに、リモートコンピューティングシステム544は、他の車両からも性能データを受信することがあり、それらの他の車両からのデータは、様々なシステムに対する統計的な解析に組み込まれ得る。さらに、安全状態コンポーネント556は、安全状態コンポーネント536の少なくとも一部に対応することができる。例えば、安全状態コンポーネント556は、レイテンシコンポーネント552および/またはCPU使用コンポーネント554の一方または両方によって、イベントが検出されたとき、車両502を安全なモードで動作させるための制御を発行し得る。レイテンシコンポーネント552は、レイテンシコンポーネント532を参照して上で説明された、他の診断および/またはシステムプランニング機能も実行することがあり、CPU使用コンポーネント554は、CPU使用コンポーネント534を参照して上で説明された、他の診断および/またはシステムプランニング機能も実行し得る。
【0090】
車両502のプロセッサー516、およびリモートコンピューティングシステム544のプロセッサー546は、本明細書において説明されるように、データを処理し、動作を実行するための命令を実行することが可能な、任意の適切なプロセッサーであり得る。例として、限定ではないが、プロセッサー516、546は、1つもしくは複数の中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、または電子データを処理して、その電子データを、レジスタおよび/もしくはメモリー内に記憶されることができる他の電子データに変換する、他の任意のデバイスもしくはデバイスの一部を含むことができる。いくつかの例においては、集積回路(例えば、ASICなど)、ゲートアレイ(例えば、FPGAなど)、および他のハードウェアデバイスも、それらがエンコードされた命令を実施するように構成される限り、プロセッサーと見なされることができる。
【0091】
メモリー518、548は、非一時的なコンピューター読み取り可能な媒体であり得る。メモリー518、548は、オペレーティングシステムと、本明細書において説明される方法、および様々なシステムに帰せられる機能を実施するための、1つまたは複数のソフトウェアアプリケーション、命令、プログラム、および/またはデータとを記憶することができる。様々な実施においては、メモリー518、548は、スタティックランダムアクセスメモリ(SRAM)、同期ダイナミックRAM(SDRAM)、不揮発性/フラッシュ型メモリー、または情報を記憶することが可能な他の任意のタイプのメモリーなど、任意の適切なメモリー技術を使用して、実施されることができる。本明細書において説明されるアーキテクチャ、システム、および個々の要素は、多くの他の論理的、プログラム的、および物理的コンポーネントを含むことができ、それらのうちの添付の図に示されるものは、本明細書における説明に関連する、例にすぎない。
【0092】
いくつかの例においては、本明細書において説明されるコンポーネントのいくつかまたはすべての態様は、任意のモデル、アルゴリズム、および/または機械学習アルゴリズムを含むことができる。例えば、いくつかの例においては、メモリー518、548内におけるコンポーネントは、ニューラルネットワークとして実施されることができる。
【0093】
本明細書において説明されるように、例示的なニューラルネットワークは、入力データに一連の接続されたレイヤを通過させて、出力を生成する、生物学から着想を得たアルゴリズムである。ニューラルネットワーク内の各レイヤは、別のニューラルネットワークを含むこともでき、または(畳み込みかどうかにかかわらず)任意の数のレイヤを含むことができる。本開示との関連において理解されることができるように、ニューラルネットワークは、学習されたパラメータに基づいて、出力が生成される、幅広いクラスのそのようなアルゴリズムを参照することができる、機械学習を使用することができる。
【0094】
ニューラルネットワークとの関連において説明されるが、任意のタイプの機械学習が、本開示と矛盾することなく、使用されることができる。例えば、機械学習アルゴリズムは、回帰アルゴリズム(例えば、最小2乗回帰(OLSR)、線形回帰、ロジスティック回帰、ステップワイズ回帰、多変量適応回帰スプライン(MARS)、局所推定散布図平滑化(LOESS))、インスタンスベースのアルゴリズム(例えば、リッジ回帰、最小絶対値縮小選択演算子(LASSO)、弾性ネット、最小角回帰(LARS))、決定木アルゴリズム(例えば、分類回帰木(CART)、反復2進木3(ID3)、カイ2乗自動相互作用検出(CHAID)、決定株、条件付き決定木)、ベイズアルゴリズム(例えば、ナイーブベイズ、ガウシアンナイーブベイズ、多項ナイーブベイズ、平均1依存性推定量(AODE)、BNN(Bayesian belief network)、ベイズネットワーク)、クラスタリングアルゴリズム(例えば、k平均、k中央値、期待値最大化(EM)、階層型クラスタリング)、連想ルール学習アルゴリズム(例えば、パーセプトロン、バックプロパゲーション、ホップフィールドネットワーク、放射状基底関数ネットワーク(RBFN))、深層学習アルゴリズム(例えば、深層ボルツマンマシン(DBM)、深層信念ネットワーク(DBN)、畳み込みニューラルネットワーク(CNN)、スタックドオートエンコーダ)、次元削減アルゴリズム(例えば、主成分分析(PCA)、主成分回帰(PCR)、部分最小2乗回帰(PLSR)、サモンマッピング、多次元尺度法(MDS)、射影追跡、線形判別分析(LDA)、混合判別分析(MDA)、2次判別分析(QDA)、フレキシブル判別分析(FDA))、アンサンブルアルゴリズム(例えば、ブースティング、ブートストラップ集約(バギング)、アダブースト、積層一般化(ブレンディング)、勾配ブースティングマシン(GBM)、勾配ブーステッド回帰木(GBRT)、ランダムフォレスト)、SVM(サポートベクタマシン)、教師あり学習、教師なし学習、半教師あり学習などを含むことができるが、それらに限定されない。
【0095】
アーキテクチャの追加の例は、ResNet50、ResNet101、VGG、DenseNet、およびPointNetなどの、ニューラルネットワークを含む。
【0096】
図6~
図9は、本開示の実施形態に従った、例示的な処理を例示している。これらの処理は、論理フローグラフとして例示されており、それの各動作は、ハードウェア、ソフトウェア、またはそれらの組み合わせで実施されることができる、動作のシーケンスを表す。ソフトウェアとの関連においては、動作は、1つまたは複数のプロセッサーによって実行されたとき、列挙された動作を実行する、1つまたは複数のコンピューター読み取り可能な媒体上に記憶された、コンピューター実行可能命令を表す。一般に、コンピューター実行可能命令は、特定の機能を実行し、または特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、コンポーネント、およびデータ構造などを含む。動作が記述される順序は、限定として解釈されることを意図されておらず、任意の数の記述される動作が、処理を実施するために、任意の順序で、および/または並列に組み合わされることができる。
【0097】
図6は、システムレイテンシと関連付けられたイベントが発生したと決定し、イベントに応答して、車両を安全な状態に置くための例示的な処理600を表している。例えば、処理600の一部または全部は、
図1に示される診断システム132によって、および/または
図5に例示されるコンポーネントのうちの1つもしくは複数によって、実行されることができる。例えば、処理600の一部または全部は、車両コンピューティングシステム504によって(例えば、診断システム530を使用して)、および/またはリモートコンピューティングシステム544によって(例えば、診断システム550によって)、実行されることができる。
【0098】
動作602において、処理600は、タグ情報を個々のサブシステムから受信することを含むことができ、タグ情報は、一意的なIDと、タイムスタンプ情報とを含む。例えば、本明細書において説明されるように、自律車両のシステムは、データパケットを生成し、下流における使用および/または追加の処理のために、それらのデータパケットを出力し得る。例においては、新しい、例えば、生成されたデータの各インスタンスは、一意的なIDを用いて、タグ付けされる。したがって、各一意的なIDは、システムに導入された、データの異なるインスタンス、例えば、個々のデータパケットを識別する。タイムスタンプ情報は、パケット(もしくはパケット内の基礎的なデータ)が生成された時間を指定するタイムスタンプ、および/または新しいデータがシステムによって出力された時間を指定するタイムスタンプを含み得る。
図1を参照して上で説明されたように、データが、1つまたは複数のシステム上において作動させられた、例えば、1つまたは複数のシステムによって処理されたとき、タイムスタンプ、およびシステム識別情報が、生成されたデータと関連付けられたタグに追加され得る。この例においては、タイムスタンプ情報は、データがシステムによって受信された1つまたは複数の時間を指定する、1つまたは複数のタイムスタンプを含み得る。したがって、
図1の例を使用すると、動作602は、例えば、診断システム132のレイテンシ決定コンポーネント134において、タグの1つであるタグ122aを受信することを含み得る。
【0099】
動作604において、処理600は、タグ情報に基づいて、1つまたは複数のサブシステムのレイテンシを決定することを含む。例えば、自律車両の1つまたは複数のサブシステムのレイテンシは、あるデータと関連付けられたタイムスタンプを、そのデータがサブシステム内を伝搬していくときに、比較することによって、決定されることができる。一例においては、
図1を具体的に参照すると、一意的なID126bは、データ108が生成/出力されるとき、データ108と関連付けられる。さらに、データ108が、車両の様々なシステム内を伝搬していくとき、それらのシステムは、元のタグを更新し、ならびに/または一意的なID126b、(そのシステムと関連付けられた)新しいタイムスタンプ情報、および(例えば、時間をシステムに関連付けるための)システム識別情報を含む、例えば、データ116およびデータ118のための、新しいタグと、データ108から間接的に生成されるデータ、例えば、データ116およびデータ118を使用する(したがって、データ108を間接的に使用する)データ120と関連付けられた追加のタグとを生成する。したがって、第1のコンピューティングシステム110と、第2のコンピューティングシステム112と、第3のコンピューティングシステム114とを含むシステムのレイテンシは、それらのシステムを通る(この例においては)データ108を追跡することによって、決定されることができる。もちろん、これは、例示のためだけに使用される、1つの単純な例であり、一意的な識別子とタイムスタンプとを含むタグを使用する、本明細書において説明される技法は、自律車両102などの複雑なシステムにわたって、レイテンシを容易に追跡することを可能にすることができる。本明細書において説明されるように、レイテンシは、瞬間的もしくは瞬間に近いレイテンシであることがあり、またはレイテンシは、時間窓にわたって収集されたデータ(もしくはタグ)に対して実行される、統計的な解析に従って、決定され得る。
【0100】
動作606において、処理600は、レイテンシが許容可能範囲の範囲内にあるかどうかを決定することを含むことができる。例えば、上で述べられたように、自律車両などの複雑なコンピューティングシステムは、一緒に働く数々のサブシステムを含み得る。適切な動作を保証するために、各サブシステムは、特定のレイテンシ範囲の範囲内で動作することを要求されることがある。例えば、サブシステムは、システムの追加の下流コンポーネントによるさらなる処理のために、タイムリにデータを出力することを要求されることがある。したがって、各サブシステムは、本明細書において説明される技法に従って決定され得る、独自のレイテンシ範囲を有し得るが、異なるサブシステムが、類似または同じ範囲を有することがある。
【0101】
動作606において、動作604において決定された受け取られたレイテンシが、許容可能範囲の範囲内にあると決定された場合、動作608において、処理600は、コマンド信号に従って、車両を制御することを含む。例えば、各サブシステムが、許容可能範囲の範囲内で動作している場合、システム、例えば、車両は、サブシステムと関連付けられた処理を使用して、制御され得る。
【0102】
あるいは、動作606において、例えば、レイテンシが、最小しきい値をはるかに下回ったため、または可能性がより高いのは、レイテンシが、最大レイテンシ許容値を上回ったため、動作604において決定されたレイテンシが、許容可能範囲の範囲外にあると決定された場合、動作610において、処理600は、サブシステムと関連付けられたイベントを決定することができる。上で述べられたように、車両のシステムが、データをタイムリに受信、処理、生成、および/または出力することに失敗することは、安全でない動作状態を生むことがある。
【0103】
したがって、動作612において、処理600は、安全な状態に従って、車両を制御することを含むことができる。例えば、動作606において、異常なレイテンシイベントが発生したと決定された場合、本明細書において説明される技法は、潜在的に安全でない状態を軽減するように、車両を制御することができる。本明細書において説明されるように、安全な状態を実施することは、レイテンシイベントが発生したことを伝達すること、重要でない機能を制限するためのアクション、例えば、過度なネットワークトラフィックおよび/もしくは処理を軽減するためのアクションを取ること、車両を減速させること、安全な停止軌道を実行すること、または車両の動作が無効化された状態に車両を置くことなどを含むが、それらに限定されない、任意の数のアクションを取ることを含むことができる。
【0104】
図7は、システムCPU使用と関連付けられたイベントが発生したと決定し、イベントに応答して、車両を安全な状態に置くための別の例示的な処理700を表している。例えば、処理700の一部または全部は、
図5に例示されるコンポーネントのうちの1つまたは複数によって、実行されることができる。例えば、処理700の一部または全部は、車両コンピューティングシステム504によって(例えば、診断システム530を使用して)、および/またはリモートコンピューティングシステム544によって(例えば、診断システム550によって)実行されることができる。
【0105】
動作702において、処理700は、1つもしくは複数の処理における機能を表す一意的なノードID、および/または一意的なノードIDと関連付けられたタイムスタンプ情報を受信することを含む。例えば、本明細書において説明されるように、自律車両によって実行される処理および/または機能は、データ構造、例えば、プレフィックス木として表されることがあり、データ構造内の個々のノードは、個々の機能と関連付けられ得る。例においては、各ノードも、関連付けられた一意的なノードIDを有し得る。したがって、各一意的なノードIDは、データ処理と関連付けられた機能を識別する。各ノードは、一意的なノードIDを有し、データ構造は、知られているので、関連付けられたスタックトレースは、一意的なノードIDだけから決定され得る。タイムスタンプ情報は、本明細書において説明される、サンプリング処理中に、一意的なノードIDがサンプリングされた時間を指定する、タイムスタンプを含み得る。
図3に例示されるように、一意的なノードIDおよびタイムスタンプは、パケット328として記憶されることができる。したがって、動作702は、例えば、診断システム530のCPU使用コンポーネント534において、パケット328を受信することを含み得る。
【0106】
動作704において、処理700は、一意的なノードIDに基づいて、時間周期に対して、1つまたは複数のシステムまたは機能のCPU使用を決定することを含む。例えば、時間周期における複数のサンプル時間の各々についての一意的なノードが、スタックトレースを再作成するために、使用されることがあり、したがって、CPUを占有する機能を識別する。このデータを全時間周期にわたって集計することは、他のすべての機能に対する、各機能についてのCPU使用の識別をもたらし得る。非限定的な例として、CPU使用のパーセンテージは、すべての呼び出しに対する、機能が呼び出された回数、および/または関連付けられたスタックトレースの決定に少なくとも部分的に基づいて、決定され得る。
【0107】
動作706において、処理700は、CPU使用が許容可能範囲の範囲内にあるかどうかを決定することを含むことができる。例えば、上で述べられたように、自律車両などの複雑なコンピューティングシステムは、一緒に働く(線的に動作しないことがある)数々のサブシステムを含み得る。適切な動作を保証するために、各サブシステムは、特定のCPU使用範囲の範囲内で動作することを要求されることがある。したがって、各サブシステムは、本明細書において説明される技法に従って決定され得る、独自のCPU使用範囲を有し得る。異なるサブシステムは、類似または同じCPU使用範囲を有し得る。
【0108】
動作706において、動作704において決定されたCPU使用が、許容可能範囲の範囲内にあると決定された場合、動作708において、処理700は、コマンド信号に従って、車両を制御することを含む。例えば、各サブシステムが、許容可能範囲の範囲内で動作している場合、システム、例えば、車両は、サブシステムと関連付けられた処理を使用して、制御され得る。
【0109】
あるいは、動作706において、例えば、CPU使用が、最小しきい値をはるかに下回ったため、または、可能性がより高いのは、CPU使用が、最大使用許容値を上回ったため、動作704において決定されたCPU使用が、許容可能なCPU範囲の範囲外にあると決定された場合、動作710において、処理700は、サブシステムと関連付けられたイベントを決定することができる。上で述べられたように、車両のシステムが、データをタイムリに受信、処理、生成、および/または出力することに失敗することは、安全でない動作状態を生むことがある。
【0110】
したがって、動作712において、処理700は、安全な状態に従って、車両を制御することを含むことができる。例えば、動作706において、異常なCPU使用イベントが発生したと決定された場合、本明細書において説明される技法は、潜在的に安全でない状態を軽減するように、車両を制御することができる。本明細書において説明されるように、安全な状態を実施することは、レイテンシイベントが発生したことを伝達すること、重要でない機能を制限するためのアクション、例えば、過度なネットワークトラフィックおよび/もしくは処理を軽減するためのアクションを取ること、車両を減速させること、安全な停止軌道を実行すること、または車両の動作が無効化された状態に車両を置くことなどを含むが、それらに限定されない、任意の数のアクションを取ることを含むことができる。
【0111】
図8は、本開示の例に従った、CPU使用を決定するための例示的な処理800を表している。例えば、処理800の一部または全部は、
図5に例示されるコンポーネントのうちの1つまたは複数によって、実行されることができる。例えば、処理800の一部または全部は、車両コンピューティングシステム504によって(例えば、CPU使用システム534を使用して)、および/またはリモートコンピューティングシステム544によって(例えば、CPU使用システム554によって)実行されることができる。
【0112】
動作802において、処理800は、1つまたは複数のコンピューティングシステムと関連付けられた処理を識別することを含み、処理の各々は、1つまたは複数の機能を含む。例えば、自律車両などの複雑なシステムは、異なるコンピューティング処理および機能を実行する、数々のサブシステムを含む。動作802は、これらの処理および個々の機能を識別し得る。
図3に例示される例においては、本明細書において説明される技法は、一意機能識別子を、車両によって実行される各コンピューティング機能と関連付ける、単純なテーブルを生成することができる。
【0113】
動作804において、処理800は、処理を表すデータ構造を生成することを含むことができ、データ構造は、機能を表すノードを含む。例えば、本明細書において説明される技法は、車両によって実行されるすべての処理および機能を特徴付ける、プレフィックス木などのデータ構造を生成することができる。プレフィックス木データ構造は、数々のブランチを含むことがあり、ブランチの各々は、ノードの各々がその中における機能またはスタックフレームを表す、スタックトレースを表す。やはり本明細書において説明される実施においては、データ構造は、一意機能識別子を、ノードとして記憶することができる。本明細書でさらに説明されるように、車両は、システム間の相対的に複雑な対話を含むが、機能は、多数のシステムにわたって同じであることができ、システムの各々は、同じ動作を繰り返し実行する。したがって、処理および機能の各々は、例えば、車両の動作を観測することによって、相対的に短い時間の期間で決定されることができ、実質的に完全なプレフィックス木が、それから生成されることができる。
【0114】
動作806において、処理800は、一意的なノードIDを各ノードと関連付けることができる。例えば、
図3に例示されるように、データ構造(例えば、プレフィックス木)が、ひとたび生成されると、本明細書において説明される技法は、各ノードに一意的なノードIDを割り当てることができる。例えば、一意的なノードIDは、一意の整数であり得る。いくつかの実施においては、一意的なノードIDは、本明細書においてさらに説明されるように、異なるシステムおよび/または処理における、同じ機能の間の曖昧性を解消するために、使用される。
【0115】
動作808において、処理800は、各サンプル時間において、CPU上で動作している機能を決定するために、コンピューティングシステムの動作をサンプリングすることができる。例えば、本明細書において説明される技法は、各サンプリングにおいて、ノードIDがCPU上にあると決定することができる。本明細書において説明される技法に従った、サンプリングの例は、
図3のタイムラインに沿って例示されている。やはり本明細書において説明されるように、サンプリングは、任意の周波数で行われることができるが、いくつかの実施においては、周波数は、車両の1つまたは複数のシステムの1つまたは複数の動作周波数とは異なる周波数として、選択され得る。
【0116】
本明細書において説明されるように、動作804において生成されたデータ構造を使用して、動作808において獲得されたサンプルが、CPUを利用する機能についての情報を生成するために、使用され得る。より具体的には、一意的なノードIDを使用して、オンCPU機能と関連付けられたスタックトレースは、サンプルが収集される時間全体および/またはそれの一部にわたって、再作成されることができる。例えば、CPU使用は、例4Aに例示され、上で説明された、フレームチャート400aなどのグラフを生成するために、使用されることができる。さらに、
図8は、直列に実行される、動作802、804、806、および808を示しているが、それらの動作の一部または全部は、並列に実行され得る。非限定的な例として、いくつかの例においては、本明細書において説明される技法は、サンプリングの結果に基づいて、機能を識別し、データ構造を構築し、および/または一意的なノードIDを割り当てることができる。例えば、車両上の多くの処理は、相対的に高い頻度で繰り返し得るので、すべての機能が、相対的に短い時間の期間にわたって、サンプリングされることがあり、データ構造は、サンプリングから少しずつ収集されることができる。
【0117】
動作810において、処理800は、各サンプルに対して、タイムスタンプ、および/または決定された機能に対応する一意的なノードIDを含む、データパケットを生成することができる。例えば、上で述べられたように、808において決定される機能は、対応する一意的なノードIDを有し、動作810は、その一意的なノードIDを、例えば、サンプルの時間に対応する、タイムスタンプと関連付けることができる。動作810において生成され得るデータパケットの例は、
図3に例示されている。
【0118】
動作812において、処理800は、コンピューティングシステムにおいて、異常、例えば、レイテンシイベントに対応する、時間の識別を受信することができる。例えば、上で説明された処理600は、レイテンシイベントを決定し、それらのレイテンシイベントに基づいたアクションを取るために、使用され得る。しかしながら、いくつかの実施においては、レイテンシの原因を判別することが有用であることがある。処理600の説明に関して、上で述べられたように、レイテンシイベントと関連付けられた時間が、決定されることができ、そのような時間は、812において受信され得る。もちろん、レイテンシイベントと関連付けられた時間は、一例にすぎない。他の例においては、動作812は、他の任意のイベントに対応する時間を受信し得る。または、時間は、例えば、処理800が、オンCPU処理およびシステムの系統的なチェックを実行することを可能にするために、ランダムまたは周期的なサンプリング時間であり得る。
【0119】
動作814において、処理800は、時間を含む時間範囲にわたって、データパケットを検索することを含むことができる。例えば、データパケットは、関連付けられたタイムスタンプを有するので、決定された範囲内にあるタイムスタンプを有するパケットが、調査のために、容易に検索され得る。いくつかの例においては、動作812において、特定の時間が、提供されるとき、約1秒から約4秒の時間フレームが、CPU使用を調査するための範囲として、決定されることがあり、動作814は、その時間範囲にわたって、データパケットを検索し得る。いくつかの例においては、範囲は、より長いまたはより短いことがある。しかしながら、理解されるように、本明細書において説明される技法は、任意の時間フレームにわたる、使用データの容易な検索を提供する。さらに、データは、車両外からアクセスされることができるので、異なる車両上における類似のシステムおよび/またはソフトウェアの性能が、本明細書において説明されるように、テストされ、および/または範囲もしくはイベントなどを決定するために、使用されることができる。
【0120】
動作816において、処理800は、時間範囲の間のCPU使用を決定することができる。例えば、本明細書においてさらに説明されるように、各一意的なノードIDは、サンプル時間に対応するリーフノードとして、扱われることができるので、814において検索されたパケット内に含まれる一意的なノードIDは、時間範囲の間のオンCPU処理を再作成するために、使用されることができる。さらに、そのリーフノードと関連付けられたスタックトレースを再作成するために、データ構造が、使用されることができる。いくつかの例においては、動作816は、時間範囲の間のCPU使用のフレームグラフまたは他の視覚化を生成することを含むことができる。なぜならば、本明細書において説明される技法は、任意の時間についての、または車両もしくは車両のサブシステムの動作についての、CPU使用についてのオンデマンド情報を提供することができるからである。したがって、本明細書において説明される技法は、例えば、診断およびトラブルシューティングを可能にすることができる。
【0121】
図9は、様々な性能特性についてのしきい値動作範囲を決定する処理900を例示している。例えば、処理900は、1つまたは複数のシステムについての予期されるもしくは目標レイテンシ範囲を決定するために、および/または1つまたは複数のシステムについての予期されるもしくは目標CPU使用範囲を決定するために、使用されることができる。いくつかの例においては、処理900は、
図5に例示されたコンポーネントのうちの1つまたは複数によって、実行されることができる。例えば、処理900の一部または全部は、車両コンピューティングシステム504によって(例えば、診断システム530を使用して)、および/またはリモートコンピューティングシステム544によって(例えば、診断システム550によって)、実行されることができる。
【0122】
動作902において、処理900は、1つまたは複数のコンピューティングシステムの性能特性についての性能データ、例えば、レイテンシデータまたはCPU使用データを受信することを含むことができる。例えば、動作902は、
図1および2Aとの関連を含む、上で説明された処理に従って決定された、レイテンシデータを受信することを含むことができる。代替的または追加的に、動作902は、
図3および4Aとの関連において説明されたように、CPU使用データを受信することを含むことができる。本明細書において説明される技法は、システムごとに、または1つもしくは複数の時間範囲にわたってなど、情報を検討することを可能にし得る。少なくとも1つの例においては、
図2Aに例示されたグラフ200aは、データを、それがシステム内を流れるときに、追跡することによって生成される、レイテンシデータの受信を例示している。レイテンシおよびCPU使用の特定の例が、性能特性として提供されるが、他の性能特性が、関心を引くこともあり、処理900に従って、受信および処理されることができる。
【0123】
動作904において、処理900は、時間の期間にわたる性能データの分布を生成することを含む。例えば、レイテンシデータの分布が、
図2Bに例示されており、CPU使用データの分布が、
図4Bに例示されている。もちろん、これらは、例を例示したものであり、他の分布は、様々であり得る。
【0124】
動作906において、処理900は、分布に少なくとも部分的に基づいて、1つまたは複数のコンピューティングシステムについての予期される動作範囲を決定することを含むことができる。例えば、予期される動作範囲は、動作パラメータ、例えば、レイテンシまたはCPU使用データが、その中にある可能性が高い、範囲であり得る。例えば、範囲は、システムが適切に機能しているときに、性能特性がその中に入る、何らかの統計的確実性に対応する範囲であり得る。本明細書において説明されるように、範囲は、異常なイベントを決定するために、使用されることがあり、それは、安全な動作を保証するように、車両を制御するために、使用されることができる。
【0125】
他の診断機能も、処理900に従って決定された範囲を使用して、実行され得る。例えば、ソフトウェアの異なるバージョン上で実行されるシミュレーションは、処理900を使用して、分析されることがあり、範囲が、バージョン間で比較される。したがって、新しいソフトウェアが、システムおよび/または車両全体の動作に対して有する、影響を決定することが可能であり得る。
【0126】
本明細書において説明される様々な技法は、コンピューター読み取り可能なストレージ内に記憶され、図に例示されるものなど、1つまたは複数のコンピューターまたは他のデバイスのプロセッサーによって実行される、コンピューター実行可能命令、またはプログラムモジュールなどのソフトウェアとの関連において、実施されることができる。一般に、プログラムモジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含み、特定のタスクを実行するための動作ロジックを定義し、または特定の抽象データ型を実施する。
【0127】
説明される機能を実施するために、他のアーキテクチャが、使用されることができ、それは、本開示の範囲内にあることを意図される。さらに、説明の目的で、責任の特定の分配が、上で定義されたが、様々な機能および責任は、状況に応じて、異なる方法で分配および分割され得る。
【0128】
同様に、ソフトウェアは、様々な方法で、異なる手段を使用して、記憶され、分散させることができ、上で説明された特定のソフトウェア記憶および実行構成は、多くの異なる方法で、多様化させることができる。したがって、上で説明された技法を実施するソフトウェアは、具体的に説明されたメモリーの形態に限定されずに、様々なタイプのコンピューター読み取り可能な媒体上に分散させることができる。
【0129】
例示的な箇条
A:例示的な自律車両は、第1のセンサデータを生成および出力するように構成された第1のセンサと、第2のセンサデータを生成および出力するように構成された第2のセンサと、処理されたデータを生成および出力するように構成された1つまたは複数の処理システムであって、処理されたデータは、第1のセンサデータまたは第2のセンサデータのうちの少なくとも一方に少なくとも部分的に基づく、1つまたは複数の処理システムと、車両コントローラと、1つまたは複数のプロセッサーと、以下を含む作動を、すなわち、車両コントローラにおいて、複数のメッセージを受信することであって、車両コントローラは、複数のメッセージに少なくとも部分的に基づいて、車両制御メッセージを生成および出力するように構成される、受信することと、複数のメッセージまたは1つもしくは複数の車両制御メッセージに少なくとも部分的に基づいて、車両コントローラまたは1つもしくは複数の処理システムのうちの少なくとも1つの少なくとも一方と関連付けられたレイテンシを決定することと、異常であるレイテンシに少なくとも部分的に基づいて、自律車両と関連付けられたイベントを決定することと、イベントに少なくとも部分的に基づいて、安全な状態にて動かすように自律車両を制御することと、を含む作動を行うための、1つまたは複数のプロセッサーによって実行可能な命令を記憶する、1つまたは複数のコンピューター読み取り可能な媒体を格納するメモリーとを含み、複数のメッセージは、第1のセンサデータの第1のインスタンスと関連付けられた第1の識別、第1のセンサデータの第1のインスタンスと関連付けられた第1のタイムスタンプ情報、第2のセンサデータの第2のインスタンスと関連付けられた第2の識別、第2のインスタンスと関連付けられた第2のタイムスタンプ情報、1つまたは複数の処理システムのうちの第1の処理システムと関連付けられた第1のシステム識別、および第1の処理システムと関連付けられた第1のシステムタイムスタンプ情報を含む、第1のメッセージと、第1の識別、第1のタイムスタンプ情報、第2の識別、第2のタイムスタンプ情報、1つまたは複数の処理システムのうちの第2の処理システムと関連付けられた第2のシステム識別、および第2の処理システムと関連付けられた第2のシステムタイムスタンプ情報を含む、第2のメッセージと、を含み、車両制御メッセージのうちの車両制御メッセージは、第1の識別、第2の識別、第1のタイムスタンプ情報、第2のタイムスタンプ情報、第1のシステム識別、第1のシステムタイムスタンプ情報、車両コントローラ識別情報、および車両コントローラと関連付けられた車両コントローラタイムスタンプ情報を含む、第1の情報と、第1の識別、第2の識別、第1のタイムスタンプ情報、第2のタイムスタンプ情報、第2のシステム識別、第2のシステムタイムスタンプ情報、車両コントローラ識別情報、および車両コントローラと関連付けられた車両コントローラタイムスタンプ情報を含む、第2の情報とを含む。
【0130】
B:レイテンシを決定することは、複数の車両制御メッセージのための第1のタグ情報および第2のタグ情報に対する統計的な解析を行うことを含む、例Aの自律車両。
【0131】
C:複数のメッセージまたは1つもしくは複数の車両制御メッセージは、第1の時間において生成され、作動は、第1の時間の前に、車両コントローラまたは1つもしくは複数の前処理システムのうちの少なくとも1つの少なくとも一方と関連付けられた、予期されるレイテンシ範囲を決定することと、レイテンシを予期されるレイテンシ範囲と比較することと、レイテンシが予期されるレイテンシ範囲の範囲外にあると決定したことに応答して、レイテンシを異常であると決定することとをさらに含む、例Aまたは例Bの自律車両。
【0132】
D:レイテンシを予期されるレイテンシ範囲と比較することは、平均レイテンシを予期される平均レイテンシと比較すること、最大レイテンシを予期される最大レイテンシと比較すること、またはレイテンシ分散を予期されるレイテンシ分散と比較することのうちの1つまたは複数を含む、例A乃至例Cのいずれか1つの自律車両。
【0133】
E:作動は、イベントと関連付けられた時間、およびイベントの原因としての第1のシステムまたは第2のシステムの一方の識別を決定することと、イベントと関連付けられた時間を含む時間範囲にわたって、イベントの原因によって実行される機能についてのCPU使用を決定することとをさらに含む、例A乃至例Dのいずれか1つの自律車両。
【0134】
F:例示的なシステムは、1つまたは複数のプロセッサーと、以下を含む作動を、すなわち、複数のメッセージを、制御システムにおいて、時間の期間にわたって、受信することであって、制御システムは、複数のメッセージに少なくとも部分的に基づいて、制御メッセージを出力するように構成される、受信することと、制御メッセージまたは複数のメッセージに少なくとも部分的に基づいて、レイテンシを決定することとを含む作動を行うための、1つまたは複数のプロセッサーによって実行可能な命令を記憶する、1つまたは複数のコンピューター読み取り可能な媒体を格納するメモリーと、を含み、複数のメッセージは、第1のセンサによって生成された第1のセンサデータと関連付けられた第1の識別、第1のセンサデータと関連付けられた第1のタイムスタンプ、第2のセンサによって生成された第2のセンサデータと関連付けられた第2の識別、システムの第1のサブシステムと関連付けられた第1のシステム識別、および第1のサブシステムと関連付けられた第1のサブシステムタイムスタンプを含む、第1のメッセージと、第1の識別、第1のタイムスタンプ、第2の識別、第2のタイムスタンプ、システムの第2のサブシステムと関連付けられた第2のサブシステム識別、および第2のサブシステムと関連付けられた第2のサブシステムタイムスタンプを含む、第2のメッセージとを含み、制御メッセージは、第1の識別、第2の識別、第1のタイムスタンプ、第2のタイムスタンプ、第1のサブシステム識別、第2のサブシステム識別、制御システム識別子、および制御システム識別を含む、関連付けられた情報を含む。
【0135】
G:レイテンシを決定することは、関連付けられた情報に対して統計的な解析を行うことを含み、統計的な解析を行うことは、レイテンシを表す分布関数、平均レイテンシ、または最大レイテンシのうちの少なくとも1つを決定することを含む、例Fのシステム。
【0136】
H:時間周期に対してレイテンシを決定することは、第2のサブシステムのレイテンシを決定することを含み、作動は、第2のサブシステムのためのレイテンシしきい値を決定することであって、レイテンシしきい値は、第2のサブシステムのためのレイテンシ範囲の上限を定義する、決定することと、第2のサブシステムのレイテンシが、レイテンシしきい値以上であることに少なくとも部分的に基づいて、イベントを決定することとをさらに含む、例Fまたは例Gのシステム。
【0137】
I:システムは、自律車両を含み、作動は、イベントに少なくとも部分的に基づいて、安全な状態にて動かすように自律車両を制御することをさらに含む、例F乃至例Hのいずれか1つのシステム。
【0138】
J:第1のサブシステム、第2のサブシステム、または制御システムのうちの少なくとも1つは、時間周期に対して、第1の構成で構成され、時間周期は、第1の時間周期であり、レイテンシは、第1のレイテンシであり、作動は、関連付けられた情報の第2の複数のインスタンスを受信することであって、第2の複数のインスタンスは、第1の時間周期と異なる第2の時間周期に対して生成された、第2の複数の制御メッセージと関連付けられ、第1のサブシステム、第2のサブシステム、または運転制御サブシステムのうちの少なくとも1つは、第2の時間周期に対して、第2の構成で構成される、受信することと、関連付けられた情報の第2の複数のインスタンスに少なくとも部分的に基づいて、第2の時間周期に対して第2のサブシステムの第2のレイテンシを決定することとをさらに含む、例F乃至例Iのいずれか1つのシステム。
【0139】
K:システムは自律車両を含み、作動は、第1のレイテンシおよび第2のレイテンシに少なくとも部分的に基づいて、第1の構成または第2の構成を含む、車両構成を決定することと、車両構成に従って、自律車両を制御することとをさらに含む、例F乃至例Jのいずれか1つのシステム。
【0140】
L:車両構成を決定することは、第1のレイテンシが、第2のレイテンシよりも低いと決定したことに応答して、車両構成が、第1の構成を含むと決定することを含む、例F乃至例Kのいずれか1つのシステム。
【0141】
M:作動は、レイテンシに少なくとも部分的に基づいて、レイテンシイベントを決定することと、レイテンシイベントに少なくとも部分的に基づいて、レイテンシイベントCPUと関連付けられた時間を含む時間範囲内における、1つまたは複数の機能についてのCPU使用を決定することとをさらに含む、例F乃至例Lのいずれか1つのシステム。
【0142】
N:作動は、第1のサブシステムまたは第2のサブシステムを、イベントと関連付けられたサブシステムとして決定することをさらに含み、CPU使用は、イベントと関連付けられたサブシステム上で動作する、1つまたは複数の機能と関連付けられた、CPU使用であり、CPU使用は、時間範囲内の複数のサンプル時間について、サンプル情報を検索することを含み、サンプル情報は、ノード識別子と、サンプル時間に対応するタイムスタンプとを含み、ノード識別子の各々は、1つまたは複数の機能のうちの機能を表す、例F乃至例Mのいずれか1つのシステム。
【0143】
O:例示的な非一時的なコンピューター読み取り可能な媒体は、命令を記憶し、命令は、以下を含む作動を、すなわち、システム内のコンポーネントによって生成された制御メッセージと関連付けられた情報を受信することであって、コンポーネントは、複数のメッセージに少なくとも部分的に基づいて、コンポーネントメッセージを生成するように構成される、受信することと、情報に少なくとも部分的に基づいて、コンポーネントまたはシステムのうちの1つまたは複数と関連付けられたレイテンシを決定することとを含む作動を行うために、1つまたは複数のプロセッサーによって実行可能であり、複数のメッセージは、第1のセンサによって生成された第1のセンサデータと関連付けられた第1の識別、第1のセンサデータと関連付けられた第1のタイムスタンプ、第2のセンサによって生成された第2のセンサデータと関連付けられた第2の識別、システムの第1のサブシステムと関連付けられた第1のシステム識別、および第1のサブシステムと関連付けられた第1のサブシステムタイムスタンプを含む、第1のメッセージと、第1の識別、第1のタイムスタンプ、第2の識別、第2のタイムスタンプ、システムの第2のサブシステムと関連付けられた第2のサブシステム識別、および第2のサブシステムと関連付けられた第2のサブシステムタイムスタンプを含む、第2のメッセージとを含み、コンポーネントメッセージと関連付けられた情報は、第1の識別、第2の識別、第1のタイムスタンプ、第2のタイムスタンプ、第1のサブシステム識別、第2のサブシステム識別、制御システム識別子、および制御システム識別を含む。
【0144】
P:レイテンシを決定することは、時間周期を表す情報に対して統計的な解析を行うことを含み、統計的な解析を行うことは、レイテンシを表す分布関数、平均レイテンシ、または最大レイテンシのうちの少なくとも1つを決定することを含む、例Oの非一時的なコンピューター読み取り可能な媒体。
【0145】
Q:時間周期に対してレイテンシを決定することは、システムの第2のコンポーネントのレイテンシを決定することを含み、作動は、第2のコンポーネントのためのレイテンシしきい値を決定することであって、レイテンシしきい値は、第2のコンポーネントのためのレイテンシ範囲の上限を定義する、決定することと、第2のコンポーネントのレイテンシが、レイテンシしきい値以上であることに少なくとも部分的に基づいて、イベントを決定することとをさらに含む、例Oまたは例Pの非一時的なコンピューター読み取り可能な媒体。
【0146】
R:システムは、自律車両を含み、作動は、イベントに少なくとも部分的に基づいて、安全な状態にて動かすように自律車両を制御することをさらに含む、例O乃至例Qのいずれか1つの非一時的なコンピューター読み取り可能な媒体。
【0147】
S:安全な状態にて動かすように自律車両を制御することは、安全な停止軌道を実行すること、聞こえる警告を出力すること、見える警告を出力すること、自律車両の速さを低下させること、またはしきい値速さを下回る速さを維持するように車両を制御することのうちの少なくとも1つを含む、例O乃至例Rのいずれか1つの非一時的なコンピューター読み取り可能な媒体。
【0148】
T:作動は、イベントと関連付けられた時間を決定することと、関連付けられた時間を有するデータパケットを、時間を含む時間範囲内において、検索することであって、データパケットは、ノード識別子と、サンプル時間に対応するタイムスタンプとを含み、ノード識別子は、1つまたは複数の機能のうちの機能と関連付けられる、検索することと、時間範囲の間の、1つまたは複数の機能と関連付けられたCPU使用を決定することと、最大CPU使用と関連付けられた、1つまたは複数の機能のうちのイベント機能を決定することとをさらに含む、例O乃至例Sのいずれか1つの非一時的なコンピューター読み取り可能な媒体。
【0149】
U:例示的な自律車両は、1つまたは複数の第1の処理を行うように構成された第1のコンポーネントと、1つまたは複数の第2の処理を行うように構成された第2のコンポーネントであって、1つまたは複数の第1の処理および1つまたは複数の第2の処理は、複数の機能を含む、第2のコンポーネントと、1つまたは複数のプロセッサーと、以下を含む作動を、すなわち、複数の実行している機能を決定するために頻度にて1つまたは複数のプロセッサーに問い合わせることと、1つまたは複数の第1の処理および1つまたは複数の第2の処理を表すデータ構造に少なくとも部分的に基づいて、複数の実行している機能に関連付けられた一意的なノード識別子を決定することと、一意的なノード識別子とタイムスタンプを関連付けることと、一意的なノード識別子およびタイムスタンプに少なくとも部分的に基づいて、第1のコンピューティングシステムの第1のCPU使用、および第2のコンピューティングシステムの第2のCPU使用を決定することと、第1のしきい値のCPU使用以上である第1のCPU使用、または第2のしきい値のCPU使用以上である第2のCPU使用に少なくとも部分的に基づいて、自律車両と関連付けられたイベントを決定することと、イベントに少なくとも部分的に基づいて、安全な状態において自律車両を制御することとを含む作動を行うために、1つまたは複数のプロセッサーによって実行可能な命令を格納する、1つまたは複数のコンピューター可能な媒体を格納するメモリーとを含む。
【0150】
V:作動は、CPU使用パケットとして一意的なノード識別子および関連付けられたタイムスタンプを格納することと、異常な車両イベントに関連付けられた時間のインジケーションを受信することと、時間を含む時間範囲に対応する、複数のCPU使用パケットを検索することと、複数のCPU使用パケットに少なくとも部分的に基づいて、時間範囲に対してCPU使用を決定することとをさらに含む、例Uの自律車両。
【0151】
W:時間範囲は、約1秒と約4秒との間であり、時間範囲に対してCPU使用を決定することは、時間範囲の間に実行された複数の機能のうちの1つまたは複数の機能に対してCPU使用を決定することを含み、1つまたは複数の機能に対してCPU使用を決定することは、時間範囲において決定される、複数の実行している機能の他に関する1つまたは複数の機能に関連付けられた使用の百分率を決定することを含む、例Uまたは例Vの自律車両。
【0152】
X:データ構造は、複数のノードを含み、複数のノードの個々は、複数の機能のうちの機能を特定し、一意的なノード識別子のうちの関連付けられている1つを有する機能識別子を含む、例U乃至例Wのいずれか1つの自律車両。
【0153】
Y:安全な状態において自律車両を制御することは、安全な停止になるように車両を制御すること、自律車両が停止させられている状態において、車両の特徴を無効にすること、車両の速さを減らすこと、またはしきい値の速さを下回る速さを維持するように車両を制御することのうちの少なくとも1つを含む、例U乃至例Xのいずれか1つの自律車両。
【0154】
Z:例示的なシステムは、第1の処理を行うように構成された第1のサブシステムと、第2の処理を行うように構成された第2のサブシステムであって、第1の処理および第2の処理は、複数の機能を含む、第2のサブシステムと、1つまたは複数のプロセッサーと、実行されたときにシステムに、第1の処理および第2の処理を表すデータ構造を生成することであって、データ構造は、複数のノードを含み、ノードの各々は、複数の機能のうちの機能を識別する、機能識別子を含む、生成することと、ノード識別子をノードと関連付けることであって、ノード識別子は、第1の処理および第2の処理における複数の機能の関係についての情報を含む、関連付けることと、第1のコンピューティングシステムおよび第2のコンピューティングシステムの実行中の機能を決定するために、ある頻度で、1つまたは複数のプロセッサーに問い合わせることと、サンプリングに基づいて、複数のデータパケットを生成することであって、複数のデータパケットの各々は、サンプリング時間において動作している複数の機能のうちの機能に対応するノード識別子のうちのノード識別子を含む、生成することと、を含む作動を実行させるコンピューター読み取り可能な命令を記憶するメモリーと、を含む。
【0155】
AA:作動は、時間範囲を決定することと、時間範囲の間に、複数のデータパケットのうちのデータパケットを検索することと、データパケットに少なくとも部分的に基づいて、ノード識別子と関連付けられた実行中の機能の各々の、時間範囲の間の相対的なCPU使用を決定することと、相対的なCPU使用に少なくとも部分的に基づいて、第1のサブシステムの第1のCPU使用および第2のサブシステムの第2のCPU使用を決定することとをさらに含む、例Zのシステム。
【0156】
BB:作動は、第1のCPU使用が、第1のしきい値CPU使用よりも大きいこと、または第2のCPU使用が、第2のしきい値CPU使用よりも大きいことのうちの少なくとも一方であると決定することであって、第1のしきい値および第2のしきい値CPU使用は、時間範囲に先行する時間周期にわたる、第1の処理および第2の処理の統計的な解析に少なくとも部分的に基づいて、決定される、決定することと、第1のCPU使用が、第1のしきい値CPU使用よりも大きいこと、または第2のCPU使用が、第2のしきい値CPU使用よりも大きいことに少なくとも部分的に基づいて、イベントを決定することと、をさらに含む例Zまたは例AAのシステム。
【0157】
CC:システムは、自律車両を含み、作動は、イベントに少なくとも部分的に基づいて、安全な状態において自律車両を制御することをさらに含む、例Z乃至例BBのいずれか1つのシステム。
【0158】
DD:安全な状態は、安全に停止するように車両を制御すること、自律車両が停止させられた状態において、車両の特徴を無効化すること、または聞こえる出力もしくは見える出力のうちの少なくとも一方を発することのうちの少なくとも1つを含む、例Z乃至例CCのいずれか1つのシステム。
【0159】
EE:時間範囲は、第1の時間範囲であり、第1のサブシステムは、第1の時間範囲の間、第1の構成で構成され、作動は、第2の時間範囲を決定することであって、第1のサブシステムは、第2の時間範囲の間、第2の構成で構成される、決定することと、第2の時間範囲の間に、複数のデータパケットのうちの第2のデータパケットを検索することと、第2のデータパケットに少なくとも部分的に基づいて、ノード識別子と関連付けられた実行中の機能の各々の、第2の時間範囲の間の相対的なCPU使用を決定することと、相対的なCPU使用に少なくとも部分的に基づいて、第1のサブシステムの第3のCPU使用を決定することと、をさらに含む例Z乃至例DDのいずれか1つのシステム。
【0160】
FF:システムは、自律車両を含み、作動は、第1のCPU使用および第3のCPU使用に少なくとも部分的に基づいて、第1の構成または第2の構成を含む、車両構成を決定することと、車両構成に従って、自律車両を制御することとをさらに含む、例Z乃至例EEのいずれか1つのシステム。
【0161】
GG:車両構成を決定することは、第3のCPU使用が第1のCPU使用よりも低いと決定したことに応答して、第2の構成を含む車両構成を決定することを含む、例Z乃至例FFのいずれか1つのシステム。
【0162】
HH:作動は、複数の時間範囲を決定することと、時間範囲の各々の間に、複数のデータパケットのうちのデータパケットを検索することと、データパケットに少なくとも部分的に基づいて、ノード識別子と関連付けられた実行中の機能の各々の、時間範囲の各々の間の相対的なCPU使用を決定することと、相対的なCPU使用に少なくとも部分的に基づいて、時間範囲の各々の間の、第1のサブシステムの第1のCPU使用および第2のサブシステムの第2のCPU使用を決定することと、第1のサブシステムのための第1のCPU使用範囲を決定することと、第2のサブシステムのための第2のCPU使用範囲を決定することと、をさらに含む例Z乃至例GGのいずれか1つのシステム。
【0163】
II:第1のCPU使用を決定すること、または第2のCPU使用を決定することのうちの少なくとも一方は、時間範囲の各々の間の、第1のCPU使用または第2のCPU使用のうちの少なくとも一方の統計的な解析を行うことを含み、統計的な解析を行うことは、CPU使用を表す分布関数、平均CPU使用、または最大CPU使用のうちの少なくとも1つを決定することを含む、例Z乃至例HHのいずれか1つのシステム。
【0164】
JJ:例示的な非一時的なコンピューター読み取り可能な媒体は、以下を含む作動を、すなわち、第1のシステム上において動作する第1の処理および第2のシステム上において動作する第2の処理を表すデータ構造を生成することであって、第1の処理および第2の処理は、複数の機能を含み、データ構造は、複数のノードを含み、ノードの各々は、複数の機能のうちの機能を識別する機能識別子を含む、生成することと、ノード識別子をノードと関連付けることであって、ノード識別子は、第1の処理および第2の処理における複数の機能の関係についての情報を含む、関連付けることと、第1のコンピューティングシステムおよび第2のコンピューティングシステムの実行中の機能を決定するために、ある頻度で、1つまたは複数のプロセッサーに問い合わせることと、問い合わせに基づいて、複数のデータパケットを生成することであって、複数のデータパケットの各々は、実行中の機能のうちの実行中の機能に対応する、ノード識別子のうちのノード識別子を含む、生成することとを含む作動を行うために、1つまたは複数のプロセッサーによって実行可能である命令を記憶する。
【0165】
KK:作動は、時間範囲を決定することと、時間範囲の間に、複数のデータパケットのうちのデータパケットを検索することと、データパケットに少なくとも部分的に基づいて、ノード識別子と関連付けられた実行中の機能の各々の、時間範囲の間の相対的なCPU使用を決定することと、相対的なCPU使用に少なくとも部分的に基づいて、第1のサブシステムの第1のCPU使用および第2のサブシステムの第2のCPU使用を決定することとをさらに含む、例JJの非一時的なコンピューター読み取り可能な媒体。
【0166】
LL:作動は、第1のCPU使用が、第1のしきい値CPU使用よりも大きいこと、または第2のCPU使用が、第2のしきい値CPU使用よりも大きいことのうちの少なくとも一方を決定することであって、第1のしきい値および第2のしきい値CPU使用は、時間範囲に先行する1つまたは複数の時間周期にわたる、第1の処理および第2の処理の機能の統計的な解析に少なくとも部分的に基づいて、決定される、決定すること、第1のCPU使用が、第1のしきい値CPU使用よりも大きいこと、または第2のCPU使用が、第2のしきい値CPU使用よりも大きいことに少なくとも部分的に基づいて、イベントを決定することをさらに含む、例JJまたは例KKの非一時的なコンピューター読み取り可能な媒体。
【0167】
MM:時間範囲は、第1の時間範囲であり、第1のサブシステムは、第1の時間範囲の間、第1の構成で構成され、作動は、第2の時間範囲を決定することであって、第1のサブシステムは、第2の時間範囲の間、第2の構成で構成される、決定することと、第2の時間範囲の間に、複数のデータパケットのうちの第2のデータパケットを検索することと、第2のデータパケットに少なくとも部分的に基づいて、ノード識別子と関連付けられた実行中の機能の各々の、第2の時間範囲の間の相対的なCPU使用を決定することと、相対的なCPU使用に少なくとも部分的に基づいて、第1のサブシステムの第3のCPU使用を決定することと、をさらに含む例JJ乃至例LLのいずれか1つの非一時的なコンピューター読み取り可能な媒体。
【0168】
NN:作動は、第3のCPU使用が、第1のCPU使用よりも低いことに少なくとも部分的に基づいて、第2の構成に従って、自律車両を制御することをさらに含む、例JJ乃至例MMのいずれか1つの非一時的なコンピューター読み取り可能な媒体。
【0169】
結び
本明細書において説明される技法の1つまたは複数の例が、説明されたが、それらの様々な改変、追加、置換、および均等物は、本明細書において説明される技法の範囲内に含まれる。
【0170】
例の説明において、特許請求される本発明の特定の例を例示として示す、本明細書の一部を形成する添付の図面に対する参照が、行われる。他の例が、使用されることができ、構造的な変更などの変更または改変が、行われることができることが、理解されるべきである。そのような例、変更、または改変は、意図された特許請求される本発明に関する範囲からの逸脱では必ずしもない。本明細書におけるステップは、ある順序で提示されることができるが、いくつかのケースにおいては、説明されるシステムおよび方法の機能を変更することなく、ある入力が、異なる時間において、または異なる順序で、提供されるように、順序は、変更されることができる。開示される手順は、異なる順序でも、実行されることができる。加えて、本明細書において説明される様々な計算は、開示される順序で、実行される必要はなく、計算の代替的な順序を使用する他の例が、容易に実施されることができる。並べ替えられることに加えて、いくつかの例においては、計算は、同じ結果を有するサブ計算に、分解されることもできる。