(57)【要約】自律車両を案内するための軌道を生成および実行するための技法が説明される。例では、自律車両に関連する第１のコンピュータシステムは、第１の動作周波数において、自律車両を現在のロケーションから目的のロケーションに案内するためのルートを生成することができる。第１のコンピュータシステムは、第２の動作周波数において、自律車両をルートに沿って案内するための命令をさらに決定することができ、第３の動作周波数において、命令およびリアルタイム処理されたセンサーデータに少なくとも部分的に基づいて、軌道を生成することができる。自律車両に関連付けられ、第１のコンピュータシステムと通信している第２のコンピュータシステムは、第４の動作周波数において、軌道を実行し、自律車両がルートに沿って移動することを引き起こすことができる。第１のコンピュータシステムと第２のコンピュータシステムとの分離は、向上された安全性、冗長性、および最適化を提供することができる。
2020509963.tif 000002
【特許請求の範囲】
【請求項１】
自律車両において実施されるシステムであって、前記システムは、
第１のコンピュータシステムであって、
１つまたは複数の第１のプロセッサと、
前記１つまたは複数の第１のプロセッサに通信可能に結合され、前記１つまたは複数の第１のプロセッサによって実行可能である命令を含む１つまたは複数の第１のモジュールを記憶する１つまたは複数の第１のコンピュータ可読記憶媒体であって、前記１つまたは複数の第１のモジュールは、
前記自律車両の現在のロケーションと前記自律車両の目的のロケーションとの間のルートを生成するように構成されたルートプランニングモジュールであって、前記ルートプランニングモジュールは、第１の動作周波数において動作する、ルートプランニングモジュールと、
前記ルートに基づいて命令を生成するように構成された判定モジュールであって、前記命令は、前記ルートの少なくとも一部分に沿って前記自律車両を案内するための一連のアクションを含み、前記判定モジュールは、第２の動作周波数において動作する、判定モジュールと、
軌道モジュールであって、
リアルタイム処理されたセンサーデータにアクセスすることと、
前記命令および前記リアルタイム処理されたセンサーデータに少なくとも部分的に基づいて、出力軌道を生成することであって、前記軌道モジュールは、第３の動作周波数において動作する、生成することと
を行うように構成された軌道モジュールと
を備える１つまたは複数の第１のコンピュータ可読記憶媒体と
を備える第１のコンピュータシステムと、
第２のコンピュータシステムであって、
１つまたは複数の第２のプロセッサと、
前記１つまたは複数の第２のプロセッサに通信可能に結合され、前記１つまたは複数の第２のプロセッサによって実行可能である命令を含む１つまたは複数の第２のモジュールを記憶する１つまたは複数の第２のコンピュータ可読記憶媒体であって、前記１つまたは複数の第２のモジュールは、前記自律車両が前記出力軌道に沿って運転することを引き起こすための１つまたは複数の信号を生成するように構成された実行モジュールであって、前記実行モジュールは、第４の動作周波数において動作する、実行モジュールを備える１つまたは複数の第２のコンピュータ可読記憶媒体と
を備える第２のコンピュータシステムと
を備えるシステム。
【請求項２】
前記１つまたは複数の第２のモジュールは、フォールバック決定モジュールを含み、前記フォールバック決定モジュールは、
前記第１のコンピュータシステムから、前記自律車両が安全操縦を実施することを引き起こすためのフォールバック軌道を受信することと、
所定の時間期間の間前記フォールバック軌道を記憶することと
を行うように構成され、
ここにおいて、前記フォールバック決定モジュールは、前記第４の動作周波数において動作する
請求項１に記載のシステム。
【請求項３】
前記フォールバック決定モジュールは、
フォールバックアクションを保証するイベントの発生を決定することと、
前記フォールバック軌道にアクセスすることと
を行うようにさらに構成された請求項２に記載のシステム。
【請求項４】
前記１つまたは複数の第２のモジュールは、フォールバック決定モジュールを含み、前記フォールバック決定モジュールは、
フォールバックアクションを保証するイベントの発生を決定することと、
前記自律車両が安全操縦を実施することを引き起こすためのフォールバック軌道を生成することと
を行うように構成され、
ここにおいて、前記フォールバック決定モジュールは、前記第４の動作周波数において動作する
請求項１に記載のシステム。
【請求項５】
前記実行モジュールは、
前記自律車両が安全操縦を実施することを引き起こすためのフォールバック軌道を受信することと、
前記フォールバック軌道を実行し、前記自律車両が前記安全操縦を実施することを引き起こすことと
を行うようにさらに構成された請求項１に記載のシステム。
【請求項６】
前記第４の動作周波数は、前記第１の動作周波数、前記第２の動作周波数、および前記第３の動作周波数よりも高い請求項１に記載のシステム。
【請求項７】
前記第３の動作周波数は、前記第１の動作周波数および前記第２の動作周波数よりも高く、
前記第３の動作周波数は、前記第４の動作周波数よりも低い
請求項１に記載のシステム。
【請求項８】
前記第１の動作周波数は、前記第２の動作周波数、前記第３の動作周波数、および前記第４の動作周波数よりも低い請求項１に記載のシステム。
【請求項９】
輸送可能なコンピュータシステムによって実装される方法であって、前記方法は、
前記輸送可能なコンピュータシステムの現在のロケーションを決定するステップと、
前記輸送可能なコンピュータシステムのための目的のロケーションを決定するステップと、
前記輸送可能なコンピュータシステムに関連する１つまたは複数のセンサーから、リアルタイム処理されたセンサーデータを受信するステップと、
第１の動作周波数において、前記輸送可能なコンピュータシステムを前記現在のロケーションから前記目的のロケーションに案内するためのルートを決定するステップと、
第２の動作周波数において、前記リアルタイム処理されたセンサーデータに少なくとも部分的に基づいて、前記輸送可能なコンピュータシステムを前記ルートの少なくとも一部分に沿って案内するための命令を決定するステップと、
第３の動作周波数において、前記リアルタイム処理されたセンサーデータおよび前記命令に少なくとも部分的に基づいて、軌道を生成するステップと、
第４の動作周波数において、前記軌道を実行し、前記輸送可能なコンピュータシステムが前記ルートに沿って移動することを引き起こすステップと
を備える方法。
【請求項１０】
前記ルートを決定する前記ステップは、前記輸送可能なコンピュータシステムに関連する第１のコンピュータシステムによって実施され、
前記輸送可能なコンピュータシステムを前記ルートの少なくとも前記一部分に沿って案内するための前記命令を決定する前記ステップは、前記第１のコンピュータシステムによって実施され、
前記軌道を生成する前記ステップは、前記第１のコンピュータシステムによって実施される
請求項９に記載の方法。
【請求項１１】
前記軌道を実行し、前記輸送可能なコンピュータシステムが前記ルートに沿って移動することを引き起こす前記ステップは、前記輸送可能なコンピュータシステムに関連する第２のコンピュータシステムによって実施され、前記第２のコンピュータシステムは、前記第１のコンピュータシステムとは異なる請求項１０に記載の方法。
【請求項１２】
前記命令はポリシーを備え、前記リアルタイム処理されたセンサーデータに少なくとも部分的に基づいて、前記軌道を生成するステップは、前記ポリシーに基づいて、前記軌道を生成するステップを備える請求項９に記載の方法。
【請求項１３】
前記第２の動作周波数において、前記輸送可能なコンピュータシステムがフォールバックアクションを実施することを引き起こすためのフォールバック命令を生成するステップと、
前記第３の動作周波数において、前記フォールバック命令に基づいて、フォールバック軌道を生成するステップと、
実質的に同じ時間において前記軌道とともに前記フォールバック軌道を出力するステップと
をさらに備える請求項９に記載の方法。
【請求項１４】
フォールバックアクションを保証するイベントの発生を決定するステップと、
前記第４の動作周波数において、前記輸送可能なコンピュータシステムが前記フォールバックアクションを実施することを引き起こすためのフォールバック軌道を生成するステップと、
前記フォールバック軌道を実行し、前記輸送可能なコンピュータシステムが前記フォールバックアクションを実施することを引き起こすステップと
をさらに備える請求項９に記載の方法。
【請求項１５】
プロセッサによって実行されたとき、請求項９乃至１４のいずれか一項が具陳する方法を実施するようにコンピュータを構成する命令で符号化された１つまたは複数のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、軌道生成および実行アーキテクチャに関する。
【背景技術】
【０００２】
関連出願の相互参照
本特許出願は、その全体が参照により本明細書に組み込まれる、２０１７年３月１日に出願された米国仮特許出願第６２／４６５，７２４号明細書の利益を主張する、２０１７年６月２３日に出願された米国特許出願第１５／６３２，２０８号明細書からの優先権出願利益を主張する。
【０００３】
様々な静的および／または動的オブジェクトを含む環境を通して自律車両を案内するために、そのような自律車両によって様々な方法、装置、およびシステムが利用される。たとえば、自律車両は、ルートプランニング（route planning）方法、装置、およびシステムを利用し、他の動いている車両（自律またはそれ以外）、動いている人々、固定建築物などがある密集エリアを通して自律車両を案内する。いくつかの例では、環境中の他のオブジェクトの挙動および道路コンディションは、予測不可能であることがある。
【図面の簡単な説明】
【０００４】
発明を実施するための形態は、添付図を参照しながら説明される。図中で、参照番号の最左桁は、参照番号が最初に現れる図を識別する。異なる図中での同じ参照番号の使用は、同様または同等の構成要素または特徴を表す。
【０００５】
【図１】本明細書で説明されるように、軌道を生成および実行し、自律車両を制御するための例示的なアーキテクチャを示す図である。
【図２】本明細書で説明されるように、軌道を生成および実行し、自律車両を制御するための例示的なプロセスを描く図である。
【図３】本明細書で説明されるように、フィードバックデータを生成し、フィードバックデータを使用し、アーキテクチャの態様を更新するための例示的なプロセスを描く図である。
【図４】本明細書で説明されるように、フォールバック軌道を生成するための例示的なプロセスを描く図である。
【図５】本明細書で説明されるように、フォールバック軌道を実行するための例示的なプロセスを描く図である。
【図６】本明細書で説明される技法を実装するための例示的なコンピュータシステムのブロック図を描く図である。
【発明を実施するための形態】
【０００６】
本開示は、軌道を生成および実行し、自律車両を制御するための方法、装置、およびシステムについて説明する。少なくとも１つの例では、本開示は、軌道を生成および実行し、自律車両を制御するためのアーキテクチャについて説明する。アーキテクチャは、異なる周波数において動作する様々なレイヤを含むことができる。加えて、アーキテクチャは、軌道を生成および改良するように構成されたコンピュータシステムと、軌道を実行するように構成された別々の別個の車両制御デバイスとを含むことができる。そのような分離は、本明細書で説明されるように、向上された安全性、冗長性、および最適化を提供することができる。加えて、そのような分離は、アーキテクチャの個々の構成要素に関連する問題をトラブルシューティングするのに有用であることができる。その上、そのような分離は、アーキテクチャの構成要素のための安全性証明（safety certification）を取得するのに有用であることができる。
【０００７】
本明細書で説明される方法、装置、およびシステムは、いくつかの方法で実装されることができる。例示的な実装形態が、後続の図を参照しながら以下で提供される。自律車両のコンテキストにおいて説明されるが、本明細書で説明される方法、装置、およびシステムは、産業用ロボットまたは無人航空機など、自律制御または半自律制御を要求する様々なシステムに適用されることができる。たとえば、方法、装置、およびシステムは、製造組立ラインコンテキストにおいて、航空測量コンテキストにおいてなどで利用されることができる。加えて、本明細書で説明される技法は、（たとえば、センサーを使用してキャプチャされた）実データ、（たとえば、シミュレータによって生成された）シミュレートされたデータ、またはその２つの任意の組合せとともに使用されることができる。
【０００８】
図１は、本明細書で説明されるように、軌道を生成および実行し、自律車両を制御するための例示的なアーキテクチャ１００を示す。たとえば、アーキテクチャ１００は、本明細書で説明されるシステム、方法、および装置の態様を実装するための様々なハードウェアおよび／またはソフトウェアを含むコンピュータシステム１０２を含むことができる。たとえば、コンピュータシステム１０２は、ルートプランニングモジュール１０４、判定モジュール１０６、軌道モジュール１０８、データ入力モジュール１１０、およびデータストア１１２を含むことができる。加えて、アーキテクチャ１００は、本明細書で説明されるシステム、方法、および装置の態様を実装するための様々なハードウェアおよび／またはソフトウェアを含む車両制御デバイス１１４を含むことができる。いくつかの例では、車両制御デバイス１１４は、実行モジュール１１６、フォールバック決定モジュール１１８、およびデータ入力モジュール１２０を含むことができる、別々の別個のコンピュータシステムであることができる。いくつかの例では、コンピュータシステム１０２は、車両制御デバイス１１４を備えることができる。
【０００９】
いくつかの例では、コンピュータシステム１０２および車両制御デバイス１１４は、自律車両１２２または任意の他のタイプの輸送可能なコンピュータシステムにおいて実施されることができる。他の例では、コンピュータシステム１０２は、自律車両１２２から離れて置かれることができ、車両制御デバイス１１４は、自律車両１２２において実施されることができる。いくつかの事例では、本明細書で説明されるように、コンピュータシステム１０２は、自律車両１２２にプランニング機能性を提供することができ、車両制御デバイス１１４は、実行機能性を自律車両１２２に提供することができる。
【００１０】
上記で説明されたように、コンピュータシステム１０２は、ルートプランニングモジュール１０４、判定モジュール１０６、軌道モジュール１０８、データ入力モジュール１１０、およびデータストア１１２を含むことができる。少なくとも１つの例では、モジュールの個々のモジュール（たとえば、ルートプランニングモジュール１０４、判定モジュール１０６、および軌道モジュール１０８）は、異なる動作周波数を有することができる。図１に示されているように、ルートプランニングモジュール１０４は、第１の動作周波数（たとえば、ｆ１）を有することができ、判定モジュール１０６は、第２の動作周波数（たとえば、ｆ２）を有することができ、軌道モジュール１０８は、第３の動作周波数（たとえば、ｆ３）を有することができる。少なくとも１つの例では、第１の周波数は、最低周波数（たとえば、１０ヘルツ）であることができ、第３の周波数は、最高周波数（たとえば、１００ヘルツ）であることができる。すなわち、少なくとも１つの例では、ルートプランニングモジュール１０４は、軌道モジュール１０８よりも低い速さでデータを処理することができる、判定モジュール１０６よりも低い速さでデータを処理することができる。異なる周波数は、個々のモジュールが、更新されたデータを受信する周波数、および／または個々のモジュールがデータを処理および出力する必要がある時間期間に基づいて、アーキテクチャ１００が、計算リソースをモジュールに分配することを可能にすることができる。
【００１１】
ルートプランニングモジュール１０４は、第１のロケーション（たとえば、現在のロケーション）から第２のロケーション（たとえば、目的のロケーション）に移動するための最も効率的なルートを決定するように構成されることができる。この説明では、ルートは、２つのロケーションの間を移動するための一連の中間地点であることができる。非限定的な例として、中間地点は、街路、交差点、全地球測位システム（ＧＰＳ）座標などを含む。少なくとも１つの例では、ルートプランニングモジュール１０４は、自律車両１２２を第１のロケーションから第２のロケーションに案内するためのルートを識別するために、マップの上で、グラフ探索など、探索を実施することができる。この説明では、マップは、限定はされないが、（交差点などの）トポロジー、街路、山脈、道路、地形、および全般的な環境など、環境についての情報を提供することが可能である、２次元または３次元でモデル化された任意の数のデータ構造であることができる。少なくとも１つの例では、ルートプランニングモジュール１０４は、自律車両を第１のロケーションから第２のロケーションに案内するためのルートを識別するために、グラフトラバーサルアルゴリズム（graph traversal algorithm）を利用することができる。グラフトラバーサルアルゴリズムは、重み付けされていないグラフ（たとえば、幅優先探索、深さ優先探索、グリーディ最良優先（greedy best first）、Ａ＊探索など）、および／または重み付けされたグラフ（たとえば、ダイクストラアルゴリズム、重み付けされたＡ＊探索など）のためのアルゴリズムを含むことができる。
【００１２】
いくつかの例では、ルートプランニングモジュール１０４は、自律車両１２２を第１のロケーションから第２のロケーションに案内するための２つまたはそれ以上の候補ルートを識別することができる。そのような例では、ルートプランニングモジュール１０４は、ルートプランニング制約に基づいて、２つまたはそれ以上の候補ルートをランク付けすることができる。ルートプランニング制約は、交通規則、移動時間、移動距離などを含むことができる。少なくとも１つの例では、ルートプランニングモジュール１０４は、最高位の候補ルートが、自律車両１２２を第１のロケーションから第２のロケーションに案内するためのルートであると決定することができる。ルートプランニングモジュール１０４は、ルートに対応する一連の中間地点を判定モジュール１０６に出力することができる。
【００１３】
少なくとも１つの例では、判定モジュール１０６は、ルート（たとえば、一連の中間地点）を受信することができ、自律車両１２２をルートの少なくとも一部分に沿って第１のロケーションから第２のロケーションに案内するための命令を生成することができる。少なくとも１つの例では、判定モジュール１０６は、自律車両１２２を一連の中間地点中の第１の中間地点から一連の中間地点中の第２の中間地点にどのように案内すべきかを決定することができる。いくつかの例では、命令は、軌道または軌道の一部分であることができる。そのような例では、判定モジュール１０６は、一連のアクション（たとえば、道路に沿って運転する、加速する、車線を変更する、左に曲がるなど）を生成し、自律車両１２２をルートに沿って案内することができる。軌道の非限定的な例は、「自律車両を１０メートル／秒で運転する」であることができる。他の例では、命令はポリシーであることができる。ポリシーは、自律車両１２２上のセンサーから受信されたリアルタイム処理されたセンサーデータに基づいて自律車両１２２の軌道を決定するために使用されることができる。ポリシーの非限定的な例は、「５メートル空けて前方の車に追従する」であることができる。
【００１４】
少なくとも１つの例では、判定モジュール１０６は、制約に鑑みて、自律車両１２２を第１のロケーションから第２のロケーションに案内するための命令を決定するために、１つまたは複数のモデルおよび／またはアルゴリズムを利用することができる。たとえば、少なくとも１つの例では、判定モジュール１０６は、どの命令を選択するべきかを決定するより前に、１つまたは複数の候補命令を決定し、潜在的命令の各々の性能を評価するために、時相論理（たとえば、線形時相論理（ＬＴＬ）、信号時相論理（ＳＴＬ）、間隔時相論理（ＩＴＬ：interval temporal logic）、計算ツリー論理（ＣＴＬ）プロパティ仕様言語（ＰＳＬ：property specification language）、ヘネシーミルナー論理（ＨＭＬ：Hennessy-Milner logic）など）と、探索アルゴリズム（たとえば、ポリシーツリー探索（policy tree search）、モンテカルロツリー探索（ＭＣＴ）、全数探索など）との組合せを利用することができる。判定モジュール１０６に関連する追加の詳細は、その全体が参照により本明細書に組み込まれる、関連出願第１５／６３２１４７号に記載されている。判定モジュール１０６は、命令を軌道モジュール１０８に出力することができる。
【００１５】
少なくとも１つの例では、判定モジュール１０６は、フォールバック命令を決定することができる。フォールバック命令は、以下で説明される、フォールバックアクションを保証するイベントが発生したとき、自律車両１２２が従うべきである命令であることができる。そのような例では、判定モジュール１０６は、フォールバック命令を軌道モジュール１０８および／またはフォールバック決定モジュール１１８に提供することができる。いくつかの例では、判定モジュール１０６は、判定モジュール１０６が、命令を軌道モジュール１０８に提供する（すなわち、判定モジュール１０６が、２つの命令を軌道モジュール１０８に提供することができる）ことと同時に、フォールバック命令を軌道モジュール１０８および／またはフォールバック決定モジュール１１８に提供することができる。他の例では、判定モジュール１０６は、判定モジュール１０６が、命令を軌道モジュール１０８に提供するときとは異なる時間に、フォールバック命令を軌道モジュール１０８および／またはフォールバック決定モジュール１１８に提供することができる。
【００１６】
いくつかの例では、判定モジュール１０６は、命令を出力するための限られた時間の量を有することができる。すなわち、少なくとも１つの例では、判定モジュール１０６は、命令をリクエストする割込みを受信することができ、判定モジュール１０６は、割込みを受信したことに応答して、命令を提供することができる。その上、ルートを処理し、命令を生成することは、計算コストが高くなることがある。したがって、少なくとも１つの例では、判定モジュール１０６は、上記で説明されたように、ルートプランニングモジュール１０４よりも高い周波数において動作することができる。少なくとも１つの例では、判定モジュール１０６は、軌道モジュール１０８によって実施されるリアルタイム判定実行のために要求される周波数よりも低い周波数において動作することができる。非限定的な例として、判定モジュール１０６は、１０ヘルツにおいて動作することができるのに対して、ルートプランニングモジュール１０４は、１ヘルツにおいて動作することができ、軌道モジュール１０８は、３０ヘルツにおいて動作することができる。
【００１７】
軌道モジュール１０８は、命令を受信することができ、環境中で識別されたオブジェクトに基づいて、命令を最適化することができる。少なくとも１つの例では、軌道モジュール１０８は、リアルタイム処理されたセンサーデータにアクセス、リアルタイム処理されたセンサーデータを受信、および／または決定し、自律車両１２２が移動している環境中のオブジェクトを決定することができる。少なくとも１つの例では、軌道モジュール１０８は、リアルタイム処理されたセンサーデータに鑑みて、命令を処理することができる。
【００１８】
命令が軌道である例では、軌道モジュール１０８は、軌道を最適化するために、モデルおよび／またはアルゴリズム、制約、および／またはコストを活用することができる。たとえば、軌道モジュール１０８は、軌道を改良するために、限定はされないが、差動動的プログラミング（differential dynamic programming）、内点最適化（interior point optimization）、順次２次プログラミング（sequential quadratic programming）などを含むモデルおよび／またはアルゴリズムを利用することができる。少なくとも１つの例では、制約は、限定はされないが、コスト、快適さ、安全性、交通規則などを含むことができる。少なくとも１つの例では、コストは、限定はされないが、性能（たとえば、速さ）、横方向加速度を最小限に抑えること、車線における位置決めなどを含むことができる。少なくとも１つの例では、モデルおよび／またはアルゴリズムは、双方向性を含むことができる。そのような例では、自律車両１２２の速度は、最適化され、正、負、または０値を含むことができる。少なくとも１つの例では、自律車両１２２の回転は、ユークリッド行列を使用して説明されることができる。その結果、異なるタイプの中間地点（たとえば、道路、交差点、ロータリーなど）を有する軌道を最適化するために、同じモデルおよび／またはアルゴリズムが使用されることができる。軌道を処理することに少なくとも部分的に基づいて、リアルタイム処理されたセンサーデータに鑑みて、軌道モジュール１０８は、出力軌道を生成することができる。
【００１９】
命令がポリシーである例では、軌道モジュール１０８は、ポリシーおよびリアルタイム処理されたセンサーデータに基づいて、軌道を生成するために、モデルおよび／またはアルゴリズム、制約、および／またはコストを活用することができる。たとえば、軌道モジュール１０８は、ポリシーに基づいて軌道を生成するために、限定はされないが、差動動的プログラミング、内点最適化、順次２次プログラミングなどを含むモデルおよび／またはアルゴリズムを利用することができる。この説明では、軌道は出力軌道と呼ばれることができる。
【００２０】
上記で説明されたように、軌道モジュール１０８は、リアルタイム処理されたセンサーデータにアクセス、リアルタイム処理されたセンサーデータを受信、および／または決定することができる。軌道モジュール１０８は、出力軌道を生成するために、リアルタイム処理されたセンサーデータを活用することができる。軌道モジュール１０８は、判定モジュール１０６よりも詳細な自律車両１２２のモデルを利用することができる。そのような詳細なモデルを利用する処理は、計算コストが高くなることがある。加えて、軌道モジュール１０８は、リアルタイム処理されたセンサーデータを受信した後、所定の時間の量内に出力軌道を出力することができる。たとえば、少なくとも１つの例では、軌道モジュール１０８は、出力軌道をリクエストする割込みを受信することができ、軌道モジュール１０８は、割込みを受信したことに応答して、出力軌道を提供することができる。いくつかの例では、軌道モジュール１０８は、障害物（たとえば、別の車両、歩行者など）またはコンディションを考慮するために、判定モジュール１０６が軌道を出力しなければならないよりも少ない出力軌道を出力するための時間を有することができる。したがって、軌道モジュール１０８は、上記で説明されたように、ルートプランニングモジュール１０４および／または判定モジュール１０６よりも高い周波数において動作することができる。
【００２１】
少なくとも１つの例では、軌道モジュール１０８は、フォールバック命令を判定モジュール１０６から受信することができる。そのような例では、軌道モジュール１０８は、上記で説明されたのと実質的に同様の様式でフォールバック命令を処理することに基づいて、出力フォールバック軌道を生成することができる。いくつかの例では、上記で説明されたように、軌道モジュール１０８は、同じ時間において出力軌道および出力フォールバック命令を出力することができる。
【００２２】
データ入力モジュール１１０は、入力を自律車両１２２上の１つまたは複数のセンサーから受信することができる。少なくとも１つの例では、自律車両１２２は、画像セグメンテーションおよび／または分類のための光検出および測距（ＬＩＤＡＲ）データをキャプチャするためのＬＩＤＡＲセンサーと、セグメンテーションおよび／または分類のための視覚データをキャプチャするためのカメラセンサーと、環境中のオブジェクトの範囲、角度、および／または速度をキャプチャするための無線検出および測距（ＲＡＤＡＲ）センサーと、環境中のオブジェクトの音響情報をキャプチャするための音声ナビゲーションおよび測距（ＳＯＮＡＲ）センサーとなどを含むことができる１つまたは複数のセンサーを有することができる。少なくとも１つの例では、データ入力モジュール１１０は、上記で説明されたセンサー（たとえば、ＬＩＤＡＲセンサー、カメラセンサー、ＲＡＤＡＲセンサー、ＳＯＮＡＲセンサーなど）の各々からデータを受信することができ、データを処理し、オブジェクトを識別し、環境中のオブジェクトについての情報を決定することができる。加えて、自律車両１２２は、超音波トランスデューサ、ホイールエンコーダ、マイクロフォン、慣性測定ユニット（ＩＭＵ）、加速度計、ジャイロスコープ、磁力計、温度センサー、湿度センサー、光センサー、全地球測位システム（ＧＰＳ）センサーなどを含むことができる。データ入力モジュール１１０は、１つまたは複数のセンサーから受信されたデータを処理し、特定の時間における自律車両１２２の状態を決定することができる。すなわち、データ入力モジュール１１０は、１つまたは複数のセンサーから受信されたデータを処理し、特定の時間における自律車両１２２の位置、特定の時間における自律車両１２２の向き、特定の時間における自律車両１２２の速度などを決定することができる。少なくとも１つの例では、１つまたは複数のセンサーおよびデータ入力モジュール１１０は、セグメンテーションおよび分類など、データ分析を実施するための知覚システムに関連付けられることができる。以下で説明されるように、そのようなデータ（たとえば、リアルタイム処理されたセンサーデータ）は、出力軌道を生成するために軌道モジュール１０８によって使用されることができる。加えて、そのようなデータ（たとえば、リアルタイム処理されたセンサーデータ）は、ルートをプランニングするためにルートプランニングモジュール１０４によって、および／または命令を生成するために判定モジュール１０６によって使用されることができる。
【００２３】
データストア１１２は、データを、それが編成、更新、およびアクセスされることができるように記憶することができる。少なくとも１つの例では、データストア１１２は、モデル１２４、制約１２６、ポリシー１２８、論理規則１３０、システム識別データ１３２、予測データ１３４、マップ１３６などを含むことができる。モデル１２４は、自律車両１２２のモデル、環境中の他のオブジェクトのモデル、判定モデルなどを含むことができる。
【００２４】
任意の数の車両モデルが、本明細書で説明されるシステムおよび方法とともに使用されることができる。いくつかの例では、可能なアクションおよび／または予測されたステアリング角度の粗い離散化を有する車両モデルが、使用されることができる。特定の車両モデルの選定は、自律車両によって実行されることができる可能な軌道を生成するように行われることができる。
【００２５】
一例では、各道路世界（road world）エンティティの状態ｉは、ｗi＝［ｐx，ｐy，θ，ｖ，ψ］によって定義されることができ、ここで、（ｐx，ｐy）は車両の慣性座標であり、θはそれのベアリング（bearing）であり、ｖはそれの線速度である。さらに、道路世界制御入力は、
【００２６】
【数１】
2020509963.tif 000003
【００２７】
であるような、加速度ａおよびステアリング角度レート
【００２８】
【数２】
2020509963.tif 000004
【００２９】
のうちの１つまたは複数を備えることができるが、任意の数の他の制御入力が企図される。
【００３０】
続いて、そのような例では、プランニングエージェント（たとえば、自律車両）の動力学は、
【００３１】
【数３】
2020509963.tif 000005
【００３２】
のようにモデル化されることができ、ここで、Ｌは車両ホイールベース長である。いくつかの例では、０．１秒の固定された時間ステップが、学習のためにおよびすべての実験のために使用されることができるが、任意の他の時間ステップが企図される。理解されることができるように、いくつかの例では、自律車両の動力学は、モデル１２４のうちの１つとして記憶されることができる。制約１２６は、コスト、快適さ、安全性、交通規則などを含むことができる。ポリシー１２８は、マニュアルポリシー、学習されたポリシー、制御ポリシー、オプションポリシーなどを含むことができる。例示的なポリシーは、限定はされないが、他の車両から維持すべき最小距離、最大加速度レート、運転規則（たとえば、車線内にとどまる、二重黄線（double yellow line）を越えないなど）および同様のものを含む。論理規則１３０は、道理に基づく（reasoned）交通規則などを含むことができる。システム識別データ１３２は、経時的な自律車両１２２についての情報を含むことができる。予測データ１３４は、将来の時間における自律車両１２２の１つまたは複数のスナップショットを含むことができ、および／または将来の時間における自律車両１２２に近接した他の動的オブジェクト（たとえば、他の車両）の挙動の予測を含むことができる。マップ１３６は、限定はされないが、（交差点などの）トポロジー、街路、山脈、道路、地形、および全般的な環境など、環境についての情報を提供することが可能である、２次元または３次元でモデル化されたデータ構造を含むことができる。
【００３３】
上記で説明されたように、車両制御デバイス１１４は、実行モジュール１１６、フォールバック決定モジュール１１８、およびデータ入力モジュール１２０を含むことができる、別々の別個のコンピュータシステムであることができる。いくつかの例では、車両制御デバイス１１４は、コンピュータシステム１０２に関連するデータ入力モジュール１１０および／またはデータストア１１２にアクセスすることができる。
【００３４】
実行モジュール１１６は、出力軌道を軌道モジュール１０８から受信することができ、自律車両１２２のステアリングおよびアクセラレーションを作動させるためのコマンドを算出し、自律車両１２２が出力軌道に追従することを可能にすることができる。少なくとも１つの例では、実行モジュール１１６は、出力軌道を受信することができ、ステアリング角度および速度を算出し、自律車両１２２が出力軌道に追従することを可能にすることができる。実行モジュール１１６が使用することができるアルゴリズムの非限定的な例が、以下に提供される。  
δ＝−Ｐ＊ｅｌａ                        （６）
ｅｌａ＝ｅ＋ｘｌａ＊ｓｉｎ（ΔΨ）      （７）
上記の式（６）および式（７）において、利得（たとえば、所定の一定値）はＰによって表され、横方向エラーはｅによって表され、ルックアヘッドエラーはｅｌａによって表され、ヘッディングエラーはΔΨによって表され、ルックアヘッド距離（パラメータ）はｘｌａによって表され、ステアリング角度はδによって表される。
【００３５】
フォールバック決定モジュール１１８は、フォールバック軌道にアクセス、フォールバック軌道を受信、および／または生成することができる。上記で説明されたように、フォールバック軌道は、自律車両１２２が、フォールバックアクションを保証するイベントの発生を決定したことに応答して追従すべきである軌道であることができる。少なくとも１つの例では、イベントは、コンピュータシステム１０２に関する問題であることができる。たとえば、コンピュータシステム１０２に関連するセンサーは故障することがあるか、または自律車両１２２の構成要素は誤動作することがある（たとえば、タイヤポップ（tire pop）、フロントガラス破損など）。または、イベントは、コンピュータシステム１０２からの通信の欠如、および／またはコンピュータシステム１０２の応答性に関連付けられることができる。いくつかの例では、イベントは、自律車両１２２のしきい値距離内にあるオブジェクト、自律車両１２２のしきい値距離内にあると予測されるオブジェクト、またはしきい値確率を超える事故（すなわち、衝突）の確率であることができる。しかも、少なくとも１つの例では、イベントは、自律車両１２２の占有ステータスに関連付けられることができる。自律車両１２２の占有ステータスは、自律車両１２２中の搭乗者がいつ無資格になる（incapacitate）か、搭乗者（または搭乗者に関連するオブジェクト）が自律車両１２２からいつ降ろされる（defenestrate）かなどを表すことができる。その上、イベントは、自律車両１２２に関連する運転可能な表面（drivable surface）のステータスに関連付けられることができる。運転可能な表面のステータスは、運転可能な表面がいつ無感覚（impassible）になったか（たとえば、橋がいつ崩壊したか、気象が無感覚のコンディションをいつ引き起こしたかなど）を表すことができる。さらに追加の例および／または代替の例では、イベントは、混乱しきい値を超えるコンピュータシステム１０２に関連する混乱のレベルに関連付けられることができる。たとえば、コンピュータシステム１０２は、リアルタイム処理されたセンサーデータを受信することができ、混乱のレベルを表すことができる、自律車両１２２を囲む環境中の１つまたは複数のオブジェクトを識別することが可能でないことがある。
【００３６】
少なくとも１つの例では、フォールバック軌道は、自律車両１２２を積極的に停車すること、路肩まで運転し停車することなど、安全操縦（safety maneuver）に対応することができる、フォールバックアクションに対応することができる。いくつかの例では、フォールバックアクションは、搭乗者にとって「スムーズ」でないことがあるが、イベントの発生に応答して、状況を安全にナビゲートすることができる。いくつかの例では、フォールバック決定モジュール１１８は、判定モジュール１０６および／または軌道モジュール１０８から出力フォールバック軌道を受信することができる。そのような例では、フォールバック決定モジュール１１８は、所定の時間期間の間、新しい出力フォールバック軌道が受信されるまでなど、出力フォールバック軌道を記憶することができる。他の例では、フォールバック決定モジュール１１８は、リアルタイム処理されたセンサーデータおよび／またはハードコーディングされた規則に少なくとも部分的に基づいて、フォールバック軌道を生成することができる。少なくとも１つの例では、フォールバック軌道は、イベントのタイプに基づいて決定されることができる。すなわち、異なるイベントは、異なるフォールバックアクションを保証することができる。
【００３７】
少なくとも１つの例では、フォールバック決定モジュール１１８は、自律車両１２２が障害物と衝突しようとしていると決定することができる。すなわち、フォールバック決定モジュール１１８は、オブジェクトが自律車両１２２のしきい値距離内にあると決定するために、リアルタイム処理されたセンサーデータを活用することができる。自律車両１２２が障害物と衝突しようとしていると決定したことに少なくとも部分的に基づいて、フォールバック決定モジュール１１８は、自律車両１２２がフォールバックアクションを実施することを引き起こすフォールバック軌道にアクセスおよび／または生成することができる。加えておよび／または代替として、少なくとも１つの例では、フォールバック決定モジュール１１８は、車両制御デバイス１１４が、出力軌道および／または他の通信をコンピュータシステム１０２から受信していないと決定することができる。すなわち、フォールバック決定モジュール１１８は、コンピュータシステム１０２が、非応答および／または非通信であると決定することができる。コンピュータシステム１０２が、非応答および／または非通信であると決定したことに少なくとも部分的に基づいて、フォールバック決定モジュール１１８は、そのような決定に応答して、フォールバック軌道にアクセスおよび／またはフォールバック軌道を生成することができる。
【００３８】
少なくとも１つの例では、フォールバック決定モジュール１１８は、フォールバック軌道を実行モジュール１１６に提供することができ、実行モジュール１１６は、自律車両１２２のステアリングおよびアクセラレーションを作動させるためのコマンドを算出し、自律車両１２２がフォールバック軌道に追従することを可能にすることができる。
【００３９】
データ入力モジュール１２０は、入力を自律車両１２２上の１つまたは複数のセンサーから受信することができる。少なくとも１つの例では、自律車両１２２は、セグメンテーションおよび／または分類のためのＬＩＤＡＲデータをキャプチャするためのＬＩＤＡＲセンサー、画像セグメンテーションおよび／または分類のための視覚データをキャプチャするためのカメラセンサー、環境中のオブジェクトの範囲、角度、および／または速度をキャプチャするためのＲＡＤＡＲセンサー、環境中のオブジェクトの音響情報をキャプチャするためのＳＯＮＡＲセンサーなどを含むことができる１つまたは複数のセンサーを有することができる。少なくとも１つの例では、データ入力モジュール１２０は、上記で説明されたセンサー（たとえば、ＬＩＤＡＲセンサー、カメラセンサー、ＲＡＤＡＲセンサー、ＳＯＮＡＲセンサーなど）の各々からデータを受信することができ、データを処理し、オブジェクトを識別し、環境中のオブジェクトについての情報を決定することができる。加えて、自律車両１２２は、超音波トランスデューサ、ホイールエンコーダ、マイクロフォン、ＩＭＵ、加速度計、ジャイロスコープ、磁力計、温度センサー、湿度センサー、光センサー、ＧＰＳセンサーなどを含むことができる。データ入力モジュール１２０は、１つまたは複数のセンサーから受信されたデータを処理し、特定の時間における自律車両１２２の状態を決定することができる。すなわち、データ入力モジュール１２０は、１つまたは複数のセンサーから受信されたデータを処理し、特定の時間における自律車両１２２の位置、特定の時間における自律車両１２２の向き、特定の時間における自律車両１２２の速度などを決定することができる。
【００４０】
そのようなデータ（たとえば、リアルタイム処理されたセンサーデータ）は、フォールバックアクションがいつ保証されるかを決定するために、および／またはフォールバック軌道を生成するためにフォールバック決定モジュール１１８によって使用されることができる。加えておよび／または代替として、そのようなデータ（たとえば、リアルタイム処理されたセンサーデータ）は、自律車両１２２が出力軌道および／またはフォールバック軌道に追従することを可能にするために、ステアリング角度および速度を算出するための実行モジュール１１６によって使用されることができる。
【００４１】
少なくとも１つの例では、実行モジュール１１６およびフォールバック決定モジュール１１８は、ルートプランニングモジュール１０４、判定モジュール１０６、および／または軌道モジュール１０８とは異なる第４の動作周波数（たとえば、ｆ４）を有することができる。少なくとも１つの例では、実行モジュール１１６およびフォールバック決定モジュール１１８は、最高周波数において動作し、実行モジュール１１６およびフォールバック決定モジュール１１８がほぼリアルタイムの判定を行うことを可能にすることができる。
【００４２】
コンピュータシステム１０２および車両制御デバイス１１４の追加の詳細が、図６に関して以下で提供される。
【００４３】
上記で説明されたように、少なくとも１つの例では、モジュールの個体は、異なる動作周波数を有することができる。たとえば、ルートプランニングモジュール１０４は、第１の動作周波数（たとえば、ｆ１）を有することができ、判定モジュール１０６は、第２の動作周波数（たとえば、ｆ２）を有することができ、軌道モジュール１０８は、第３の動作周波数（たとえば、ｆ３）を有することができ、実行モジュール１１６およびフォールバック決定モジュール１１８は、第４の動作周波数（たとえば、ｆ４）を有することができる。少なくとも１つの例では、上記で説明されたように、第１の周波数は、最低周波数（たとえば、１０ヘルツ）であることができ、第４の周波数は、最高周波数（たとえば、１００ヘルツ）であることができる。この構成は、個々のモジュールが、更新されたデータを受信する周波数、および／または個々のモジュールがデータを処理および出力する必要がある時間期間に基づいて、アーキテクチャ１００が、計算リソースをモジュールに分配することを可能にする。
【００４４】
加えて、上記で説明されたように、コンピュータシステム１０２は、車両制御デバイス１１４とは別々で別個であることができる。いくつかの例では、この構成は、安全性、冗長性、および最適化を向上させることができる。上記で説明されたように、少なくとも１つの例では、フォールバック決定モジュール１１８は、上記で説明されたように、フォールバックアクションを保証するイベントの発生を決定することができる。そのような例では、フォールバック決定モジュール１１８は、実行モジュール１１６によって実行されることができる、フォールバック軌道にアクセスおよび／またはフォールバック軌道を生成することができる。少なくとも１つの例では、フォールバック命令は、積極的に（しかし安全に）自律車両１２２を停車するための命令に対応することができる。他の例では、フォールバック命令は、何らかの他の安全操縦を実施することに対応することができる。
【００４５】
その上、上記で説明されたように、データ入力モジュール１２０は、センサーデータを１つまたは複数のセンサーから受信することができる。データ入力モジュール１２０は、１つまたは複数のセンサーから受信されたセンサーデータを処理し、局所的に自律車両１２２の状態を決定することができる。実行モジュール１１６は、ステアリング角度および速度を算出するために自律車両１２２の状態を利用し、コンピュータシステム１０２と通信する必要なしに、自律車両１２２が出力軌道に追従することを可能にすることができる。すなわち、実行モジュール１１６を実行している車両制御デバイス１１４を、１つまたは複数の他のモジュール（たとえば、ルートプランニングモジュール１０４、判定モジュール１０６、軌道モジュール１０８など）を実行しているコンピュータシステム１０２から分離することは、車両制御デバイス１１４がローカルに軌道を実行することを可能にすることよって、車両制御デバイス１１４によって消耗される計算リソースを節約することができる。
【００４６】
追加および／または代替の例では、コンピュータシステム１０２の、車両制御デバイス１１４からの分離は、トラブルシューティングに有用であることができる。たとえば、プログラマーは、コンピュータシステム１０２または車両制御デバイス１１４のいずれかに関連するエラー、不備、故障、欠陥などを識別することができる。したがって、プログラマーは、システム全体をトラブルシューティングする代わりに、コンピュータシステム１０２または車両制御デバイス１１４のいずれかをトラブルシューティングすることができる。
【００４７】
その上、コンピュータシステム１０２の、車両制御デバイス１１４からの分離は、車両制御デバイス１１４のより容易な安全性証明を可能にすることができる。すなわち、（コンピュータシステム１０２上の）プランニング機能性を（車両制御デバイス１１４上の）実行機能性から分離することによって、アーキテクチャ１００は、車両制御デバイス１１４上で実行するコードの量を最小限に抑え、安全性証明をより取得しやすくすることができる。
【００４８】
図２〜図５は、本開示の実施形態による例示的なプロセスを示す。これらのプロセスは、論理フローグラフとして示され、それらの各動作は、ハードウェア、ソフトウェア、またはそれらの組合せで実装されることができる一連の動作を表す。ソフトウェアのコンテキストでは、動作は、１つまたは複数のプロセッサによって実行されたとき、具陳される動作を実施する、１つまたは複数のコンピュータ可読記憶媒体に記憶されたコンピュータ実行可能命令を表す。概して、コンピュータ実行可能命令は、特定の機能を実施するかまたは特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、構成要素、データ構造および同様のものを含む。動作が説明される順序は、限定として解釈されることを意図されず、任意の数の説明される動作が、任意の順序でおよび／または並列に組み合わせられ、プロセスを実装することができる。
【００４９】
図２は、軌道を生成および実行し、自律車両を制御するための例示的なプロセス２００を描く。
【００５０】
ブロック２０２は、自律車両の現在のロケーションを決定することを示す。上記で説明されたように、データ入力モジュール１１０は、データを１つまたは複数のセンサーから受信することができ、データ（すなわち、リアルタイム処理されたセンサーデータ）を処理し、特定の時間における自律車両１２２の位置、特定の時間における自律車両１２２の向き、特定の時間における自律車両１２２の速度などを決定することができる。少なくとも１つの例では、ルートプランニングモジュール１０４は、リアルタイム処理されたセンサーデータを分析し、自律車両の現在の位置（pose）を決定することができる。少なくとも１つの例では、現在の位置に少なくとも部分的に基づいて、ルートプランニングモジュール１０４は、データストア１１２に記憶されたマップ１３６上の第１のロケーションに対応することができる、自律車両の現在のロケーションを決定することができる。
【００５１】
ブロック２０４は、自律車両のための目的のロケーションを決定することを示す。少なくとも１つの例では、ルートプランニングモジュール１０４は、目的のロケーションの指示を受信することができる。少なくとも１つの例では、目的のロケーションは、マップ１３６上の第２のロケーションに対応することができる。
【００５２】
ブロック２０６は、リアルタイム処理されたセンサーデータを受信することを示す。上記で説明されたように、データ入力モジュール１１０は、入力を自律車両１２２上の１つまたは複数のセンサーから受信することができる。少なくとも１つの例では、自律車両１２２は、セグメンテーションおよび／または分類のためのＬＩＤＡＲデータをキャプチャするためのＬＩＤＡＲセンサー、画像セグメンテーションおよび／または分類のための視覚データをキャプチャするためのカメラセンサー、環境中のオブジェクトの範囲、角度、および／または速度をキャプチャするためのＲＡＤＡＲセンサー、環境中のオブジェクトの音響情報をキャプチャするためのＳＯＮＡＲセンサーなどを含むことができる１つまたは複数のセンサーを有することができる。少なくとも１つの例では、データ入力モジュール１１０は、上記で説明されたセンサー（たとえば、ＬＩＤＡＲセンサー、カメラセンサー、ＲＡＤＡＲセンサー、ＳＯＮＡＲセンサーなど）の各々からデータを受信することができ、データを処理し、オブジェクトを識別し、環境中のオブジェクトについての情報を決定することができる。加えて、自律車両１２２は、超音波トランスデューサ、ホイールエンコーダ、マイクロフォン、ＩＭＵ、加速度計、ジャイロスコープ、磁力計、温度センサー、湿度センサー、光センサー、ＧＰＳセンサーなどを含むことができる。データ入力モジュール１１０は、１つまたは複数のセンサーから受信されたデータを処理し、特定の時間における自律車両１２２の状態を決定することができる。すなわち、データ入力モジュール１１０は、１つまたは複数のセンサーから受信されたデータを処理し、特定の時間における自律車両１２２の位置、特定の時間における自律車両１２２の向き、特定の時間における自律車両１２２の速度などを決定することができる。
【００５３】
少なくとも１つの例では、ルートプランニングモジュール１０４は、リアルタイム処理されたセンサーデータをデータ入力モジュール１１０から受信することができる。図２は、ルートプランニングモジュール１０４を、リアルタイム処理されたセンサーデータを受信するものとして示しているが、他のモジュール（たとえば、判定モジュール１０６および／または軌道モジュール１０８）の各々は、リアルタイム処理されたセンサーデータをデータ入力モジュール１１０から受信することができ、および／またはリアルタイム処理されたセンサーデータにルートプランニングモジュール１０４からアクセスすることができる。
【００５４】
ブロック２０８は、第１の動作周波数において、自律車両を現在のロケーションから目的のロケーションに案内するためのルートを決定することを示す。上記で説明されたように、第１の動作周波数において動作することができるルートプランニングモジュール１０４は、現在のロケーションから目的のロケーションに移動するための最も効率的なルートを決定するように構成されることができる。少なくとも１つの例では、ルートプランニングモジュール１０４は、マップ１３６にアクセスすることができ、マップ１３６の上で、グラフ探索など、探索を実施し、自律車両１２２を現在のロケーションから目的のロケーションに案内するためのルートを識別することができる。上記で説明されたように、少なくとも１つの例では、ルートプランニングモジュール１０４は、自律車両を現在のロケーションから目的のロケーションに案内するためのルートを識別するために、グラフトラバーサルアルゴリズムを利用することができる。そのようなルートは、道路ネットワークにおいてトラバースするための特定の道路に対応することができる。
【００５５】
上記で説明されたように、いくつかの例では、ルートプランニングモジュール１０４は、自律車両１２２を現在のロケーションから目的のロケーションに案内するための２つまたはそれ以上の候補ルートを識別することができる。そのような例では、ルートプランニングモジュール１０４は、ルートプランニング制約に基づいて、２つまたはそれ以上の候補ルートをランク付けすることができる。ルートプランニング制約は、交通規則、移動時間、移動距離、気象、交通量、個人的選好などを含むことができる。少なくとも１つの例では、ルートプランニングモジュール１０４は、最高位の候補ルートが、自律車両１２２を現在のロケーションから目的のロケーションに案内するためのルートであると決定することができる。ルートプランニングモジュール１０４は、ルートに対応する一連の中間地点を判定モジュール１０６に出力することができる。
【００５６】
ルートプランニングモジュール１０４は、ブロック２０２〜ブロック２０８に関連する動作を繰り返し実施し、更新されたルートに対応する新しい一連の中間地点を判定モジュール１０６に出力することができる。
【００５７】
ブロック２１０は、第２の動作周波数において、ルートに少なくとも部分的に基づいて、命令を決定することを示す。少なくとも１つの例では、第２の動作周波数において動作することができる判定モジュール１０６は、ルート（すなわち、一連の中間地点）を受信することができ、自律車両１２２をルートの少なくとも一部分に沿って現在のロケーションから目的のロケーションに案内するための命令を生成することができる。少なくとも１つの例では、判定モジュール１０６は、自律車両１２２を一連の中間地点中の第１の中間地点から一連の中間地点中の第２の中間地点にどのように案内すべきかを決定することができる。いくつかの例では、命令は軌道であることができる。そのような例では、判定モジュール１０６は、一連のアクション（たとえば、道路に沿って運転する、加速する、車線を変更する、左に曲がるなど）を生成し、自律車両１２２をルートに沿って案内することができる。他の例では、命令はポリシーであることができる。ポリシーは、自律車両１２２上のセンサーから受信されたリアルタイム処理されたセンサーデータに基づいて自律車両１２２の軌道を決定するために使用されることができる。
【００５８】
少なくとも１つの例では、判定モジュール１０６は、制約に鑑みて、自律車両１２２を第１のロケーションから第２のロケーションに案内するための命令を決定するために、１つまたは複数のモデルおよび／またはアルゴリズムを利用することができる。たとえば、少なくとも１つの例では、判定モジュール１０６は、上記で説明されたように、どの命令を選択するべきかを決定するより前に、１つまたは複数の候補命令を決定し、潜在的命令の各々の性能を評価するために、時相論理（たとえば、線形時相論理（ＬＴＬ）、信号時相論理（ＳＴＬ）、間隔時相論理（ＩＴＬ）、計算ツリー論理（ＣＴＬ）プロパティ仕様言語（ＰＳＬ）、ヘネシーミルナー論理（ＨＭＬ）など）と、探索アルゴリズム（たとえば、ポリシーツリー探索、モンテカルロツリー探索（ＭＣＴ）、全数探索など）との組合せを利用することができる。判定モジュール１０６は、命令を軌道モジュール１０８に出力することができる。
【００５９】
判定モジュール１０６は、更新されたルートに対応する更新された一連の中間地点を受信したことに基づいて、新しい命令を出力することができる。すなわち、判定モジュール１０６は、ブロック２１０に関連する動作を繰り返し実施することができる。
【００６０】
ブロック２１２は、第３の動作周波数において、リアルタイム処理されたセンサーデータおよび命令に少なくとも部分的に基づいて、軌道を生成することを示す。少なくとも１つの例では、第３の動作周波数において動作することができる軌道モジュール１０８は、命令を受信することができ、リアルタイム処理されたセンサーデータに基づいて、命令を最適化することができる。少なくとも１つの例では、軌道モジュール１０８は、（たとえば、データ入力モジュール１１０からの）リアルタイム処理されたセンサーデータにアクセス、受信、および／または決定し、自律車両１２２が移動している環境中のオブジェクトを決定することができる。少なくとも１つの例では、軌道モジュール１０８は、リアルタイム処理されたセンサーデータに鑑みて、命令を処理することができる。
【００６１】
命令が軌道である例では、軌道モジュール１０８は、軌道を最適化するために、モデルおよび／またはアルゴリズム、制約、および／またはコストを活用することができる。たとえば、軌道モジュール１０８は、上記で説明されたように、軌道を改良するために、限定はされないが、差動動的プログラミング、内点最適化、順次２次プログラミングなどを含むモデルおよび／またはアルゴリズムを利用することができる。軌道を処理することに少なくとも部分的に基づいて、リアルタイム処理されたセンサーデータに鑑みて、軌道モジュール１０８は、出力軌道を生成することができる。
【００６２】
命令がポリシーである例では、軌道モジュール１０８は、ポリシーおよびリアルタイム処理されたセンサーデータに基づいて、軌道を生成するために、モデルおよび／またはアルゴリズム、制約、および／またはコストを活用することができる。たとえば、軌道モジュール１０８は、ポリシーに基づいて軌道を生成するために、限定はされないが、差動動的プログラミング、内点最適化、順次２次プログラミングなどを含むモデルおよび／またはアルゴリズムを利用することができる。この説明では、軌道は出力軌道と呼ばれることができる。いくつかの例では、軌道は、遠ざかる地平線（receding horizon）として計算されることができる。そのような例では、計算された軌道は、たとえば、２ｍｓ〜１０ｓなど、将来への有限時間（a finite time into the future）をスパンすることができるが、任意の地平線時間（horizon time）が企図される。いくつかの例では、多数の軌道が、実質的に同時に決定されることができる。それらの例では、出力軌道は、最低コスト、制約違反なし、または同様のものを有する軌道として選択されることができる。
【００６３】
軌道モジュール１０８は、更新された命令を判定モジュール１０６から受信したことに基づいて、新しい軌道を生成することができる。すなわち、軌道モジュール１０８は、ブロック２１２に関連する動作を繰り返し実施することができる。
【００６４】
ブロック２１４は、第４の動作周波数において、軌道を実行することを示す。第４の動作周波数において動作することができる実行モジュール１１６は、出力軌道を軌道モジュール１０８から受信することができ、自律車両１２２のステアリングおよびアクセラレーションを作動させるためのコマンドを算出し、自律車両１２２が出力軌道に追従することを可能にすることができる。少なくとも１つの例では、実行モジュール１１６は、出力軌道を受信することができ、ステアリング角度および速度を算出し、自律車両１２２が出力軌道に追従することを可能にすることができる。
【００６５】
上記で説明されたように、実行モジュール１１６は、コンピュータシステム１０２とは別々の別個のコンピュータシステムであることができる、車両制御デバイス１１４に記憶されることができる。すなわち、コンピュータシステム１０２は、ブロック２０２〜ブロック２１２によって表される動作を実行することができ、車両制御デバイス１１４は、ブロック２１４によって表される動作を実行することができる。そのような分離は、上記で説明されたように、向上された安全性、冗長性、および最適化を提供することができる。加えて、そのような分離は、アーキテクチャの個々の構成要素に関連する問題をトラブルシューティングするのに有用であることができる。その上、そのような分離は、アーキテクチャの構成要素のための安全性証明を取得するのに有用であることができる。
【００６６】
図３は、フィードバックデータを生成し、フィードバックデータを使用し、アーキテクチャの態様を更新するための例示的なプロセス３００を描く。
【００６７】
ブロック３０２は、自律車両を現在のロケーションから目的のロケーションに案内するための軌道に関連する前の軌道を取り出すことを示す。少なくとも１つの例では、モジュール（たとえば、判定モジュール１０６、軌道モジュール１０８など）は、前の軌道を取り出すことができる。そのような軌道は、実行モジュール１１６に送られた直近の出力軌道であることができる。
【００６８】
ブロック３０４は、現在の軌道を決定することを示す。少なくとも１つの例では、モジュール（たとえば、判定モジュール１０６、軌道モジュール１０８など）は、自律車両が軌道の少なくとも一部分に沿って現在のロケーションから目的のロケーションに移動することを可能にするための軌道を決定することができる。いくつかの例では、現在の軌道は、自律車両上のセンサーのうちの１つまたは複数に少なくとも部分的に基づいて計算されることができる。非限定的な例として、後続のＧＰＳ測定は、現在の位置および速度を提供することができる。
【００６９】
ブロック３０６は、前の軌道と現在の軌道とを比較することを示す。少なくとも１つの例では、モジュール（たとえば、判定モジュール１０６、軌道モジュール１０８など）は、前の軌道と現在の軌道とを比較することができ、モジュールは、ブロック３０８に示されているように、前の軌道と実行された軌道とを比較することに少なくとも部分的に基づいて、フィードバックデータを生成することができる。非限定的な例として、比較は、現在の軌道の速度または位置のうちの１つまたは複数と、（たとえば、１つまたは複数のモデル１２４を使用して時間的に前へ進むことによって）前の軌道の現在時間への推定された発展との間の差を備えることができる。少なくとも１つの例では、前の軌道を現在の軌道と比較することによって、モジュールは、自律車両が、それが挙動することを予想されるように挙動しているかどうかを決定することができる。
【００７０】
ブロック３１０は、フィードバックデータに少なくとも部分的に基づいて、少なくとも１つのモジュールを更新することを示す。少なくとも１つの例では、モジュールは、ルートに基づいて命令を生成するために利用されるモデルおよび／またはアルゴリズムを更新するためにフィードバックデータを活用することができる、判定モジュール１０６に対応することができる。追加および／または代替の例では、モジュールは、判定モジュール１０６から受信された命令に基づいて軌道を生成するために利用されるモデルおよび／またはアルゴリズムを更新するためにフィードバックデータを活用することができる、軌道モジュール１０８に対応することができる。非限定的な例として、位置または速度のうちの１つまたは複数の差は、モデルにおける無効な推定（たとえば、摩擦、車両ステアリング、ブレーキングキャパシティ、トルクなど）を示すことができる。そのような差は、制御機構にフィードバックされ、モデルにおける差を考慮することができる。
【００７１】
図４は、フォールバック軌道を生成するための例示的なプロセス４００を描く。
【００７２】
ブロック４０２は、フォールバックアクションに関連するフォールバック命令を決定することを示す。上記で説明されたように、少なくとも１つの例では、判定モジュール１０６は、１つまたは複数のモデルおよび／またはアルゴリズムを利用するフォールバック命令を決定することができる。フォールバック命令は、イベントが発生したとき、自律車両１２２が従うべきである命令であることができる。少なくとも１つの例では、判定モジュール１０６は、判定モジュール１０６が、命令を軌道モジュール１０８に提供する（すなわち、判定モジュール１０６が、２つの命令を軌道モジュール１０８に提供することができる）ことと同時に、フォールバック命令を軌道モジュール１０８に提供することができる。
【００７３】
ブロック４０４は、リアルタイム処理されたセンサーデータを受信することを示す。上記で説明されたように、データ入力モジュール１１０は、自律車両１２２上の１つまたは複数のセンサー（たとえば、ＬＩＤＡＲセンサー、カメラセンサー、ＲＡＤＡＲセンサー、ＳＯＮＡＲセンサーなど）から入力を受信することができ、データを処理し、オブジェクトを識別し、環境中のオブジェクトについての情報を決定することができる。加えて、自律車両１２２は、超音波トランスデューサ、ホイールエンコーダ、マイクロフォン、ＩＭＵ、加速度計、ジャイロスコープ、磁力計、温度センサー、湿度センサー、光センサー、ＧＰＳセンサーなどを含むことができる。データ入力モジュール１１０は、１つまたは複数のセンサーから受信されたデータを処理し、特定の時間における自律車両１２２の状態を決定することができる。すなわち、データ入力モジュール１１０は、１つまたは複数のセンサーから受信されたデータを処理し、特定の時間における自律車両１２２の位置、特定の時間における自律車両１２２の向き、特定の時間における自律車両１２２の速度などを決定することができる。
【００７４】
ブロック４０６は、リアルタイム処理されたセンサーデータおよびフォールバック命令に少なくとも部分的に基づいて、フォールバック軌道を生成することを示す。少なくとも１つの例では、軌道モジュール１０８は、フォールバック命令を判定モジュール１０６から受信することができる。そのような例では、軌道モジュール１０８は、フォールバック命令を処理することに基づいて、出力フォールバック軌道を生成することができる。
【００７５】
フォールバック命令が軌道である例では、軌道モジュール１０８は、フォールバック軌道を最適化するために、モデルおよび／またはアルゴリズム、制約、および／またはコストを活用することができる。たとえば、軌道モジュール１０８は、上記で説明されたように、フォールバック軌道を改良するために、限定はされないが、差動動的プログラミング、内点最適化、順次２次プログラミングなどを含むモデルおよび／またはアルゴリズムを利用することができる。加えてまたは代替として、フォールバック軌道は、本明細書で詳細に説明されるように、出力軌道が決定される任意のやり方で決定されることができる。フォールバック軌道を処理することに少なくとも部分的に基づいて、リアルタイム処理されたセンサーデータに鑑みて、軌道モジュール１０８は、出力フォールバック軌道を生成することができる。
【００７６】
フォールバック命令がポリシーである例では、軌道モジュール１０８は、ポリシーおよびリアルタイム処理されたセンサーデータに基づいて、フォールバック軌道を生成するために、モデルおよび／またはアルゴリズム、制約、および／またはコストを活用することができる。たとえば、軌道モジュール１０８は、ポリシーに基づいてフォールバック軌道を生成するために、限定はされないが、差動動的プログラミング、内点最適化、順次２次プログラミングなどを含むモデルおよび／またはアルゴリズムを利用することができる。この説明では、フォールバック軌道は出力フォールバック軌道と呼ばれることができる。
【００７７】
ブロック４０８は、フォールバック軌道を一時的に記憶することを示す。軌道モジュール１０８は、出力フォールバック軌道を車両制御デバイス１１４に提供することができる。少なくとも１つの例では、フォールバック決定モジュール１１８は、出力フォールバック軌道を受信することができ、所定の時間期間の間、新しいフォールバック軌道が受信されるまでなど、出力フォールバック軌道を記憶することができる。
【００７８】
図５は、フォールバック軌道を実行するための例示的なプロセス５００を描く。
【００７９】
ブロック５０２は、フォールバックアクションを保証するイベントの発生を決定することを示す。上記で説明されたように、フォールバック決定モジュール１１８は、フォールバックアクションを保証するイベントの発生を決定することができる。フォールバックアクションを保証するイベントの様々な例が、上記で説明された。
【００８０】
ブロック５０４は、フォールバック軌道が記憶されているかどうかを決定することを示す。イベントの発生を決定したことに少なくとも部分的に基づいて、フォールバック決定モジュール１１８は、フォールバック軌道が記憶されているかどうかを決定することができる。上記で説明されたように、いくつかの例では、フォールバック決定モジュール１１８は、判定モジュール１０６および／または軌道モジュール１０８から出力フォールバック軌道を受信することができる。そのような例では、フォールバック決定モジュール１１８は、所定の時間期間の間、新しい出力フォールバック軌道が受信されるまでなど、出力フォールバック軌道を記憶することができる。
【００８１】
フォールバック軌道がフォールバック決定モジュール１１８に記憶されていないと決定したことに少なくとも部分的に基づいて、フォールバック決定モジュール１１８は、ブロック５０６に示されているように、新しいフォールバック軌道を生成するか、またはフォールバック決定モジュール１１８に関連するハードコーディングされた規則にアクセスすることができる。すなわち、フォールバック決定モジュール１１８は、リアルタイム処理されたデータにアクセスし、自律車両１２２がフォールバックアクションを実施することを引き起こすためのフォールバック軌道を決定することができる。または、フォールバック決定モジュール１１８は、どのように応答すべきかに関する命令を提供するハードコーディングされた規則にアクセスすることができる。いくつかの例では、フォールバック決定モジュール１１８は、新しいフォールバック軌道を生成するためにポリシーを活用することができる。たとえば、フォールバック決定モジュール１１８は、自律車両１１２が交差点の中央、横断歩道の中央などで停車すべきでないことを表すポリシーを利用することができる。
【００８２】
ブロック５０８は、新しいフォールバック軌道を実行し、自律車両がフォールバックアクションを実施することを引き起こすことを示す。少なくとも１つの例では、フォールバック決定モジュール１１８は、新しいフォールバック軌道を実行モジュール１１６に提供することができ、実行モジュール１１６は、自律車両１２２のステアリングおよびアクセラレーションを作動させるためのコマンドを算出し、自律車両１２２がフォールバック軌道に追従することを可能にすることができる。
【００８３】
フォールバック軌道がフォールバック決定モジュール１１８に記憶されていると決定したことに少なくとも部分的に基づいて、フォールバック決定モジュール１１８は、ブロック５１０に示されているように、フォールバック軌道にアクセスすることができる。ブロック５１２は、フォールバック軌道を実行し、自律車両がフォールバックアクションを実施することを引き起こすことを示す。少なくとも１つの例では、フォールバック決定モジュール１１８は、フォールバック軌道を実行モジュール１１６に提供することができ、実行モジュール１１６は、自律車両１２２のステアリングおよびアクセラレーションを作動させるためのコマンドを算出し、自律車両１２２がフォールバック軌道に追従することを可能にすることができる。
【００８４】
図６は、図１を参照しながら上記で説明された、軌道プランニングおよび実行のためのアーキテクチャに関連する追加の詳細を示す。図６は、本開示が全体的にまたは部分的に実装されることができる環境６００を示す。環境６００は、ストレージ６０４、１つまたは複数のプロセッサ６０６、メモリ６０８、およびオペレーティングシステム６１０を備える１つまたは複数のコンピュータシステム６０２を描く。ストレージ６０４、プロセッサ６０６、メモリ６０８、およびオペレーティングシステム６１０は、通信インフラストラクチャ６１２上で通信可能に結合されることができる。随意に、コンピュータシステム６０２は、入出力（Ｉ／Ｏ）デバイス６１４を介してユーザまたは環境と、ならびに通信インフラストラクチャ６１２を介してネットワーク６１６上の１つまたは複数の他のコンピュータシステムと対話することができる。オペレーティングシステム６１０は、他の構成要素と対話し、１つまたは複数のアプリケーション６１８を制御することができる。
【００８５】
少なくとも１つの例では、図６に示されているコンピュータシステム６０２は、分散されることができる。いくつかの事例では、コンピュータシステム６０２の少なくとも一部分は、図１を参照しながら上記で説明されたコンピュータシステム１０２に対応することができる。さらに、コンピュータシステム６０２は、本明細書で説明されるように、軌道プランニングを実施するようにモジュール１０４、１０６、１０８、および１１０を実装するように、任意のハードウェアおよび／またはソフトウェアを実装することができる。加えて、コンピュータシステム６０２の少なくとも一部分は、図１を参照しながら上記で説明された車両制御デバイス１１４に対応することができる。さらに、コンピュータシステム６０２は、本明細書で説明されるように、軌道実行を実施するようにモジュール１１６、１１８、および１２０を実装するように、任意のハードウェアおよび／またはソフトウェアを実装することができる。
【００８６】
本明細書で説明されるシステムおよび方法は、ソフトウェアもしくはハードウェアまたはそれらの任意の組合せで実装されることができる。本明細書で説明されるシステムおよび方法は、物理的にまたは論理的に互いとは別々であることもないこともある１つまたは複数のコンピュータシステムを使用して実装されることができる。方法は、構内ハードウェア、構内仮想システム、またはホステッドプライベートインスタンス（hosted-private instance）のいずれかとして配置された構成要素によって実施されることができる。加えて、本明細書で説明される方法の様々な態様は、他の機能に組み合わせられるかまたはマージされることができる。
【００８７】
図６に示されているコンピュータシステムを参照すると、プロセッサまたはコンピュータシステムは、本明細書で説明される方法の一部または全部を特に実施するように構成されることができる。いくつかの実施形態では、方法は、１つまたは複数のコンピュータまたはプロセッサによって部分的にまたは完全に自動化されることができる。本明細書で説明されるシステムおよび方法は、ハードウェア、ファームウェアおよび／またはソフトウェアのいずれかの組合せを使用して実装されることができる。本明細書で説明される本システムおよび方法（またはそれらの任意の部分もしくは機能）は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せを使用して実装されることができ、１つまたは複数のコンピュータシステムまたは他の処理システムで実装されることができる。いくつかの実施形態では、示されているシステム要素は、単一のハードウェアデバイスに組み合わせられるか、または多数のハードウェアデバイスに分離されることができる。多数のハードウェアデバイスが使用される場合、ハードウェアデバイスは、物理的に互いに近接してまたは互いから離れて置かれることができる。説明および示される方法の実施形態は、例示的であることが意図され、限定であることは意図されない。たとえば、方法のステップの一部または全部は、異なる実施形態において組み合わせられ、並べ替えられ、および／または省略されることができる。
【００８８】
例示的な一実施形態では、本明細書で説明されるシステムおよび方法は、本明細書で説明される機能性を遂行することが可能な１つまたは複数のコンピュータシステムに向けられることができる。例示的なコンピュータシステムは、限定はされないが、ＯＳ  Ｘ（商標）、ｉＯＳ（商標）、Ｌｉｎｕｘ（商標）、Ａｎｄｒｏｉｄ（商標）、およびＭｉｃｒｏｓｏｆｔ（商標）Ｗｉｎｄｏｗｓ（商標）など、限定はされないが、任意のオペレーティングシステムを走らせるパーソナルコンピュータ（ＰＣ）システムであることができる。しかしながら、本明細書で説明されるシステムおよび方法は、これらのプラットフォームに限定されないことがある。代わりに、本明細書で説明されるシステムおよび方法は、任意の適切なオペレーティングシステムを走らせる任意の適切なコンピュータシステム上で実装されることができる。限定はされないが、コンピュータシステム、通信デバイス、モバイルフォン、スマートフォン、テレフォニーデバイス、電話、携帯情報端末（ＰＤＡ）、パーソナルコンピュータ（ＰＣ）、ハンドヘルドＰＣ、対話型テレビジョン（ｉＴＶ）、デジタルビデオレコーダ（ＤＶＤ）、クライアントワークステーション、シンクライアント、シッククライアント、プロキシサーバ、ネットワーク通信サーバ、リモートアクセスデバイス、クライアントコンピュータ、サーバコンピュータ、ルータ、ウェブサーバ、データ、メディア、オーディオ、ビデオ、テレフォニーまたはストリーミング技術サーバなど、本明細書で説明されるシステムおよび方法の他の構成要素は、コンピュータシステムを使用して実装されることもできる。サービスは、たとえば、限定はされないが、対話型テレビジョン（ｉＴＶ）、ビデオオンデマンドシステム（ＶＯＤ）を使用して、およびデジタルビデオレコーダ（ＤＶＲ）、または他のオンデマンド視聴システムを介してオンデマンドで提供されることができる。
【００８９】
コンピュータシステムは、１つまたは複数のプロセッサを含むことができる。プロセッサは、限定はされないが、通信バス、クロスオーバーバー、またはネットワークなど、通信インフラストラクチャに接続されることができる。プロセスおよびプロセッサは、同じ物理的ロケーションに置かれる必要はない。言い換えれば、プロセスは、たとえば、ＬＡＮまたはＷＡＮ接続上の１つまたは複数の地理的に遠いプロセッサにおいて実行されることができる。コンピュータシステムは、ディスプレイユニット上での表示のために通信インフラストラクチャからグラフィックス、テキスト、および他のデータをフォワーディングすることができるディスプレイインターフェースを含むことができる。
【００９０】
コンピュータシステムは、限定はされないが、メインメモリ、ランダムアクセスメモリ（ＲＡＭ）、および２次メモリなどを含むこともできる。２次メモリは、たとえば、ハードディスクドライブ、および／またはコンパクトディスクドライブＣＤ−ＲＯＭなどのリムーバブルストレージドライブなどを含むことができる。リムーバブルストレージドライブは、リムーバブルストレージユニットから読み取られ、および／またはリムーバブルストレージユニットに書き込まれることができる。諒解されることができるように、リムーバブルストレージユニットは、コンピュータソフトウェアおよび／またはデータを記憶したコンピュータ使用可能記憶媒体を含むことができる。いくつかの実施形態では、機械アクセス可能媒体は、コンピュータによってアクセス可能なデータを記憶するために使用される任意のストレージデバイスを指すことができる。機械アクセス可能媒体の例は、たとえば、限定はされないが、磁気ハードディスク、フロッピーディスク、コンパクトディスク読取り専用メモリ（ＣＤ−ＲＯＭ）またはデジタル多用途ディスク（ＤＶＤ）のような光ディスク、磁気テープ、および／またはメモリチップなどを含むことができる。
【００９１】
プロセッサは、データを記憶するための１つまたは複数のデータストレージデバイスを含むか、またはそれと通信するように動作可能に結合されることもできる。そのようなデータストレージデバイスは、非限定例として、（内蔵ハードディスクおよびリムーバブルディスクを含む）磁気ディスク、光磁気ディスク、光ディスク、読取り専用メモリ、ランダムアクセスメモリ、および／またはフラッシュストレージを含むことができる。コンピュータプログラム命令およびデータを有形に実施するのに好適なストレージデバイスは、たとえば、ＥＰＲＯＭ、ＥＥＰＲＯＭ、およびフラッシュメモリデバイスなどの半導体メモリデバイス、内蔵ハードディスクおよびリムーバブルディスクなどの磁気ディスク、光磁気ディスク、ならびにＣＤ−ＲＯＭディスクおよびＤＶＤ−ＲＯＭディスクを含む、すべての形態の不揮発性メモリを含むこともできる。プロセッサおよびメモリは、ＡＳＩＣ（特定用途向け集積回路）によって補われるか、またはそれに組み込まれることができる。
【００９２】
コンピュータシステムは、コンピュータ化されたデータストレージシステムと通信していることがある。データストレージシステムは、ＭｙＳＱＬ（商標）または他のリレーショナルデータベースなど、非リレーショナルまたはリレーショナルデータストアを含むことができる。他の物理的データベースタイプおよび論理的データベースタイプが使用されることができる。データストアは、Ｍｉｃｒｏｓｏｆｔ  ＳＱＬ  Ｓｅｒｖｅｒ（商標）、Ｏｒａｃｌｅ（商標）、ＩＢＭ  ＤＢ２（商標）、ＳＱＬＩＴＥ（商標）などのデータベースサーバ、またはリレーショナルもしくはそれ以外の任意の他のデータベースソフトウェアであることができる。データストアは、構文タグを識別する情報、および構文タグ上で動作するために要求される任意の情報を記憶することができる。いくつかの実施形態では、処理システムは、オブジェクト指向プログラミングを使用することができ、データをオブジェクトに記憶することができる。これらの実施形態では、処理システムは、データオブジェクトをリレーショナルデータベースに記憶するためにオブジェクトリレーショナルマッパ（ＯＲＭ）を使用することができる。本明細書で説明されるシステムおよび方法は、任意の数の物理的データモデルを使用して実装されることができる。例示的な一実施形態では、リレーショナルデータベース管理システム（ＲＤＢＭＳ）が使用されることができる。それらの実施形態では、ＲＤＢＭＳにおけるテーブルは、座標を表す列を含むことができる。経済システムの場合、会社、製品などを表すデータが、ＲＤＢＭＳにおけるテーブルに記憶されることができる。テーブルは、それらの間のあらかじめ定義された関係を有することができる。テーブルは、座標に関連するアジャンクトを有することもできる。
【００９３】
代替の例示的な実施形態では、２次メモリは、コンピュータプログラムまたは他の命令がコンピュータシステムにロードされることを可能にするための他の同様のデバイスを含むことができる。そのようなデバイスは、たとえば、リムーバブルストレージユニットおよびインターフェースを含むことができる。そのようなものの例は、プログラムカートリッジおよび（たとえば、限定はされないが、ビデオゲームデバイスにおいて見つけられるものなどの）カートリッジインターフェース、（たとえば、限定はされないが、消去可能プログラマブル読取り専用メモリ（ＥＰＲＯＭ）、またはプログラマブル読取り専用メモリ（ＰＲＯＭ）および関連するソケットなどの）リムーバブルメモリチップ、ならびに他のリムーバブルストレージユニット、およびソフトウェアとデータがリムーバブルストレージユニットからコンピュータシステムに転送されることを可能にすることができるインターフェースを含むことができる。
【００９４】
コンピュータシステムは、限定はされないが、マイクロフォンなどのボイス入力デバイス、タッチスクリーン、カメラなどのジェスチャー認識デバイス、他のナチュラルユーザインターフェース、マウスまたはデジタイザなどの他のポインティングデバイス、およびキーボードまたは他のデータ入力デバイスなど、入力デバイスを含むこともできる。コンピュータシステムは、限定はされないが、ディスプレイ、およびディスプレイインターフェースなど、出力デバイスを含むこともできる。コンピュータシステムは、限定はされないが、通信インターフェース、ケーブルおよび通信路など、入出力（Ｉ／Ｏ）デバイスを含むことができる。これらのデバイスは、限定はされないが、ネットワークインターフェースカード、およびモデムを含むことができる。通信インターフェースは、ソフトウェアおよびデータが、コンピュータシステムと１つまたは複数の外部デバイスとの間で転送されることを可能にすることができる。
【００９５】
１つまたは複数の実施形態では、コンピュータシステムは、自動車システムに動作可能に結合されることができる。そのような自動車システムは、手動式、半自律的、または完全自律的のいずれかであることができる。そのような実施形態では、入出力デバイスは、限定はされないが、アクセラレーション、ブレーキング、およびステアリングなど、自動車機能を制御するための、１つまたは複数の画像キャプチャデバイス、コントローラ、マイクロコントローラ、および／または他のプロセッサを含むことができる。さらに、そのような実施形態における通信インフラストラクチャは、コントローラエリアネットワーク（ＣＡＮ）バスを含むこともできる。
【００９６】
１つまたは複数の実施形態では、コンピュータシステムは、任意の機械視覚ベースシステムに動作可能に結合されることができる。たとえば、そのような機械ベース視覚システムは、限定はされないが、手動式、半自律的、または完全自律的工業または農業ロボット、家庭用ロボット、検査システム、セキュリティシステムなどを含む。すなわち、本明細書で説明される実施形態は、１つの特定のコンテキストに限定されず、機械視覚を利用する任意の適用例に適用可能であることができる。
【００９７】
１つまたは複数の実施形態では、本実施形態は、コンピュータネットワークの環境中で実践されることができる。ネットワークは、プライベートネットワーク、または公衆ネットワーク（たとえば、以下で説明されるように、インターネット）、またはその両方の組合せを含むことができる。ネットワークは、ハードウェア、ソフトウェア、またはその両方の組合せを含むことができる。
【００９８】
電気通信指向の視点から、ネットワークは、通信設備によって相互接続されたハードウェアノードのセットとして説明されることができ、１つまたは複数のプロセス（ハードウェア、ソフトウェア、またはそれらの組合せ）が、各そのようなノードにおいて機能する。プロセスは、相互通信し、プロセス間通信経路を使用するそれらの間の通信経路を介して互いに情報を交換することができる。これらの経路上で、適切な通信プロトコルが使用される。
【００９９】
本実施形態による例示的なコンピュータおよび／または電気通信ネットワーク環境は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組合せを含むことができるノードを含むことができる。ノードは、通信ネットワークを介して相互接続されることができる。各ノードは、ノードに組み込まれたプロセッサによって実行可能な１つまたは複数のプロセスを含むことができる。たとえば、単一のプロセスが多数のプロセッサによって走らされることができるか、または多数のプロセスが単一のプロセッサによって走らされることができる。加えて、ノードの各々は、ネットワークと外界との間のインターフェースポイント（interface point）を提供することができ、サブネットワークの集合を組み込むことができる。
【０１００】
例示的な実施形態では、プロセスは、任意の通信プロトコルを通して通信をサポートするプロセス間通信経路を通して互いに通信することができる。経路は、順次または並列に、連続的にまたは間欠的に機能することができる。経路は、多くのコンピュータによって使用される標準並列命令セット（standard parallel instruction set）に加えて、通信ネットワークに関して本明細書で説明される、通信規格、プロトコルまたは技術のいずれかを使用することができる。
【０１０１】
ノードは、処理機能を実施することが可能な任意のエンティティを含むことができる。実施形態とともに使用されることができるそのようなノードの例は、説明されたように、（パーソナルコンピュータ、ワークステーション、サーバ、またはメインフレームなどの）コンピュータ、（携帯情報端末（ＰＤＡ）、処理能力をもつモデムセルフォン、Ｂｌａｃｋｂｅｒｒｙ（商標）デバイスを含むワイヤレス電子メールデバイスなどの）ハンドヘルドワイヤレスデバイスおよびワイヤラインデバイス、（スキャナ、プリンタ、ファクシミリ機、または多機能ドキュメントマシンなどの）ドキュメント処理デバイス、またはプロセッサの集合がそれに接続された（ローカルエリアネットワークまたはワイドエリアネットワークなどの）複素エンティティ（complex entity）を含む。たとえば、本開示のコンテキストでは、ノード自体は、ワイドエリアネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、（仮想プライベートネットワーク（ＶＰＮ）などの）プライベートネットワーク、またはネットワークの集合であることができる。
【０１０２】
ノード間の通信は、通信ネットワークによって可能にされることができる。ノードは、通信ネットワークと連続的にまたは間欠的にのいずれかで接続されることができる。例として、本開示のコンテキストでは、通信ネットワークは、十分な帯域幅および情報セキュリティを提供するデジタル通信インフラストラクチャであることができる。
【０１０３】
通信ネットワークは、任意のタイプの規格、プロトコルまたは技術を使用する、任意の周波数における、ワイヤライン通信能力、ワイヤレス通信能力、またはその両方の組合せを含むことができる。追加として、本実施形態では、通信ネットワークは、プライベートネットワーク（たとえば、ＶＰＮ）または公衆ネットワーク（たとえば、インターネット）であることができる。
【０１０４】
通信ネットワークによって使用される例示的なワイヤレスプロトコルおよび技術の非包括的リストは、Ｂｌｕｅｔｏｏｔｈ（商標）、汎用パケット無線サービス（ＧＰＲＳ）、セルラーデジタルパケットデータ（ＣＤＰＤ）、モバイルソリューションプラットフォーム（ＭＳＰ）、マルチメディアメッセージング（ＭＭＳ）、ワイヤレスアプリケーションプロトコル（ＷＡＰ）、符号分割多元接続（ＣＤＭＡ）、ショートメッセージサービス（ＳＭＳ）、ワイヤレスマークアップ言語（ＷＭＬ）、ハンドヘルドデバイスマークアップ言語（ＨＤＭＬ）、ワイヤレスのためのバイナリランタイム環境（ＢＲＥＷ）、無線アクセスネットワーク（ＲＡＮ）、およびパケット交換コアネットワーク（ＰＳ−ＣＮ）を含むことができる。様々な世代ワイヤレス技術も含まれる。通信ネットワークによって使用される主にワイヤラインプロトコルおよび技術の例示的な非包括的リストは、非同期転送モード（ＡＴＭ）、拡張型内部ゲートウェイルーティングプロトコル（ＥＩＧＲＰ）、フレームリレー（ＦＲ）、ハイレベルデータリンク制御（ＨＤＬＣ）、インターネット制御メッセージプロトコル（ＩＣＭＰ）、内部ゲートウェイルーティングプロトコル（ＩＧＲＰ）、インターネットワークパケット交換（ＩＰＸ）、ＩＳＤＮ、ポイントツーポイントプロトコル（ＰＰＰ）、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）、ルーティング情報プロトコル（ＲＩＰ）およびユーザデータグラムプロトコル（ＵＤＰ）を含む。当業者なら認識するように、任意の他の知られているまたは予期されるワイヤレスまたはワイヤラインプロトコルおよび技術が使用されることができる。
【０１０５】
本開示の実施形態は、本明細書における動作を実施するための装置を含むことができる。装置は、所望の目的のために特別に構築されることができるか、またはそれは、コンピュータシステムに記憶されたプログラムによって選択的にアクティブにされたまたは再構成された汎用コンピュータシステムを備えることができる。
【０１０６】
１つまたは複数の実施形態では、本実施形態は機械実行可能命令で実施される。命令は、命令を用いてプログラムされた、処理デバイス、たとえば、汎用または専用プロセッサが、本開示のステップを実施することを引き起こすために使用されることができる。代替として、本開示のステップは、ステップを実施するためのハードワイヤード論理を含んでいる特定のハードウェア構成要素によって、またはプログラムされたコンピュータ構成要素とカスタムハードウェア構成要素の任意の組合せによって実施されることができる。たとえば、本開示は、上記で略述されたように、コンピュータプログラム製品として提供されることができる。この環境では、実施形態は、それに記憶された命令を有する機械可読媒体を含むことができる。命令は、任意の１つまたは複数のプロセッサ（または他の電子デバイス）を、例示的な本実施形態によるプロセスまたは方法を実施するようにプログラムするために使用されることができる。追加として、本開示は、ダウンロードされ、コンピュータプログラム製品に記憶されることもできる。ここで、プログラムは、通信リンク（たとえば、モデムまたはネットワーク接続）を介して、搬送波または他の伝搬媒体で実施されたデータ信号として、リモートコンピュータ（たとえば、サーバ）から要求元コンピュータ（たとえば、クライアント）に転送されることができ、最終的に、そのような信号は、後続の実行のためにコンピュータシステムに記憶されることができる。
【０１０７】
方法は、コンピュータまたは任意の命令実行システムによる使用のための、またはそれに関するプログラムコードを提供するコンピュータ使用可能記憶媒体またはコンピュータ可読記憶媒体からアクセス可能なコンピュータプログラム製品で実装されることができる。コンピュータ使用可能記憶媒体またはコンピュータ可読記憶媒体は、コンピュータもしくは命令実行システム、装置、またはデバイスによる使用のための、またはそれに関するプログラムを含んでいるまたは記憶することができる任意の装置であることができる。
【０１０８】
対応するプログラムコードを記憶および／または実行するのに好適なデータ処理システムは、メモリ要素など、コンピュータ化されたデータストレージデバイスに直接または間接的に結合された少なくとも１つのプロセッサを含むことができる。（限定はされないが、キーボード、ディスプレイ、ポインティングデバイスなどを含む）入出力（Ｉ／Ｏ）デバイスが、システムに結合されることができる。ネットワークアダプタがシステムに結合され、データ処理システムが、介在プライベートまたは公衆ネットワークを通して、他のデータ処理システムまたはリモートプリンタまたはストレージデバイスに結合されることを可能にすることもできる。ユーザとの対話を提供するために、特徴は、ＬＣＤ（液晶ディスプレイ）などのディスプレイデバイス、または情報をユーザに表示するための別のタイプのモニタと、ユーザがそれによってコンピュータに入力を与えることができるキーボードおよびマウスまたはトラックボールなどの入力デバイスとをもつコンピュータ上で実装されることができる。
【０１０９】
コンピュータプログラムは、コンピュータにおいて直接または間接的に使用されることができる命令のセットであることができる。本明細書で説明されるシステムおよび方法は、ＣＵＤＡ、ＯｐｅｎＣＬ、Ｆｌａｓｈ（商標）、ＪＡＶＡ（商標）、Ｃ＋＋、Ｃ、Ｃ＃、Ｐｙｔｈｏｎ、Ｖｉｓｕａｌ  Ｂａｓｉｃ（商標），ＪａｖａＳｃｒｉｐｔ（商標）、ＰＨＰ、ＸＭＬ、ＨＴＭＬなどのプログラミング言語を使用して、またはコンパイラ型言語もしくはインタープリタ型言語を含むプログラミング言語の組合せを使用して実装されることができ、スタンドアロンプログラムとして、またはモジュール、構成要素、サブルーチン、もしくはコンピューティング環境中で使用するのに好適な他のユニットとしてを含む、任意の形態で展開されることができる。ソフトウェアは、限定はされないが、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むことができる。ＳＯＡＰ／ＨＴＴＰなどのプロトコルは、プログラミングモジュール間のインターフェースを実装する際に使用されることができる。本明細書で説明される構成要素および機能性は、限定はされないが、異なるバージョンのＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（商標）、Ａｐｐｌｅ（商標）Ｍａｃ（商標）、ｉＯＳ（商標）、Ｕｎｉｘ（商標）／Ｘ−Ｗｉｎｄｏｗｓ（商標）、Ｌｉｎｕｘ（商標）などを含む、ソフトウェア開発に好適な任意のプログラミング言語を使用して、仮想化されたまたは仮想化されていない環境において実行する任意のデスクトップオペレーティングシステム上で実装されることができる。システムは、Ｒｕｂｙ  ｏｎ  Ｒａｉｌｓなど、ウェブアプリケーションフレームワークを使用して実装されることができる。
【０１１０】
命令のプログラムの実行のための好適なプロセッサは、限定はされないが、汎用マイクロプロセッサおよび専用マイクロプロセッサ、ならびに任意の種類のコンピュータの唯一のプロセッサまたは多数のプロセッサもしくはコアのうちの１つを含む。プロセッサは、読取り専用メモリ、ランダムアクセスメモリ、その両方、または本明細書で説明されるデータストレージデバイスの任意の組合せなど、コンピュータ化されたデータストレージデバイスから命令およびデータを受信し、記憶することができる。プロセッサは、電子デバイスの動作および性能を制御するように動作可能な任意の処理回路または制御回路を含むことができる。
【０１１１】
本明細書で説明されるシステム、モジュール、および方法は、ソフトウェア要素またはハードウェア要素の任意の組合せを使用して実装されることができる。本明細書で説明されるシステム、モジュール、および方法は、単独でまたは互いに組み合わせて動作する１つまたは複数の仮想マシンを使用して実装されることができる。任意の適用可能な仮想化ソリューションは、ハードウェアコンピューティングプラットフォームまたはホスト上で走る仮想化ソフトウェアの制御下で実行される仮想マシンに、物理的計算機プラットフォームをカプセル化するために使用されることができる。仮想マシンは、仮想システムハードウェアとゲストオペレーティングシステムソフトウェアの両方を有することができる。
【０１１２】
本明細書で説明されるシステムおよび方法は、データサーバなどのバックエンド構成要素を含む、またはアプリケーションサーバもしくはインターネットサーバなどのミドルウェア構成要素を含む、またはグラフィカルユーザインターフェースもしくはインターネットブラウザを有するクライアントコンピュータなどのフロントエンド構成要素を含むコンピュータシステム、またはそれらの任意の組合せで実装されることができる。コンピュータシステムの構成要素は、通信ネットワークなど、デジタルデータ通信の任意の形態または媒体によって接続されることができる。通信ネットワークの例は、たとえば、ＬＡＮ、ＷＡＮ、ならびにインターネットを形成するコンピュータおよびネットワークを含む。
【０１１３】
本開示の１つまたは複数の実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースまたはプログラマブルコンシューマーエレクトロニクス、ミニコンピュータ、メインフレームコンピュータなどを含む、他のコンピュータシステム構成を用いて実践されることができる。本明細書で説明されるシステムおよび方法は、タスクが、ネットワークを通してリンクされたリモート処理デバイスによって実施される分散コンピューティング環境中で実践されることもできる。
【０１１４】
「コンピュータプログラム媒体」および「コンピュータ可読媒体」という用語は、概して、限定はされないが、リムーバブルストレージドライブ、ハードディスクドライブにインストールされたハードディスクなど、メディアを指すために使用されることができる。これらのコンピュータプログラム製品は、ソフトウェアをコンピュータシステムに提供することができる。本明細書で説明されるシステムおよび方法は、そのようなコンピュータプログラム製品に向けられることができる。
【０１１５】
「一実施形態」、「実施形態」、「例示的な実施形態」、「様々な実施形態」などへの言及は、本開示の実施形態が、特定の特徴、構造、または特性を含むことができるが、あらゆる実施形態が、特定の特徴、構造、または特性を必ずしも含むとは限らないことを表すことができる。さらに、「一実施形態では」または「例示的な実施形態では」という句の繰り返される使用は、それらがそうすることはできるが、同じ実施形態を必ずしも指すとは限らない。同様に、「事例」への言及は、本開示の様々な事例が、特定の特徴、構造、または特性を含むことができるが、あらゆる事例が、特定の特徴、構造、または特性を必ずしも含むとは限らないことを表すことができる。さらに、「いくつかの事例では」という句の繰り返される使用は、それがそうすることはできるが、同じ事例を必ずしも指すとは限らない。
【０１１６】
発明を実施するための形態および請求項において、「結合された」および「接続された」という用語は、それらの派生物とともに、使用されることができる。これらの用語は、互いに対して類義語として意図されることができないことを理解されたい。そうではなく、特定の実施形態では、「接続された」は、２つまたはそれ以上の要素が、互いに直接物理的または電気的に接触していることを表すために使用されることができる。「結合された」は、２つまたはそれ以上の要素が、直接物理的または電気的に接触していることを意味することができる。しかしながら、「結合された」は、２つまたはそれ以上の要素が、互いに直接接触していないが、それでもなお、互いに協働または対話することを意味することもできる。
【０１１７】
アルゴリズムは、ここでおよび概して、所望の結果につながる自己矛盾のない一連のアクションまたは動作であると考えられることができる。これらは、物理量の物理的マニピュレーションを含む。通常、必ずしもそうではないが、これらの量は、記憶される、転送される、組み合わせられる、比較される、およびそれ以外にマニピュレートされることが可能な電気信号または磁気信号の形態をとる。主に一般的な用法という理由で、これらの信号を、ビット、値、要素、シンボル、文字、用語、数または同様のものと呼ぶことが時々好都合とわかっている。しかしながら、これらおよび同様の用語のすべては、適切な物理量に関連するものであり、これらの量に適用される好都合なラベルにすぎないことを理解されたい。
【０１１８】
別段に明記されていない限り、本明細書全体にわたって、「処理すること」、「算出すること」、「計算すること」、「決定すること」または同様のものなどの用語は、コンピュータシステムのレジスタおよび／またはメモリ内の電子量などの物理量として表されるデータを、コンピュータシステムのメモリ、レジスタまたは他のそのような情報ストレージ、送信デバイスもしくはディスプレイデバイス内の物理量として同様に表される他のデータにマニピュレートおよび／または変換する、コンピュータもしくはコンピュータシステム、または同様の電子コンピュータシステムのアクションおよび／またはプロセスを指すことが諒解されることができる。
【０１１９】
同様にして、「プロセッサ」という用語は、レジスタおよび／またはメモリからの電子データを処理し、その電子データを、レジスタおよび／またはメモリに記憶されることができる他の電子データに変換する任意のデバイスまたはデバイスの部分を指すことができる。非限定的な例として、「プロセッサ」は、中央処理ユニット（ＣＰＵ）またはグラフィックス処理ユニット（ＧＰＵ）であることができる。「コンピューティングプラットフォーム」は、１つまたは複数のプロセッサを備えることができる。本明細書で使用される場合、「ソフトウェア」プロセスは、たとえば、タスク、スレッド、およびインテリジェントエージェントなどの作業を経時的に実施するソフトウェアエンティティおよび／またはハードウェアエンティティを含むことができる。また、各プロセスは、順次または並列に、連続的にまたは間欠的に命令を遂行するための多数のプロセスを指すことができる。「システム」および「方法」という用語は、システムが１つまたは複数の方法を実施することができ、方法がシステムと見なされることができる限り、互換的に本明細書で使用される。
【０１２０】
１つまたは複数の実施形態が説明されてきたが、それらの様々な改変、追加、置換および等価物が、本開示の範囲内に含まれる。
【０１２１】
実施形態の説明では、例として、請求される主題の特定の実施形態を図示する、本出願の一部を形成する添付の図面への参照が行われる。他の実施形態が使用されることができること、および構造的変更など、変更または改変が行われることができることを理解されたい。そのような実施形態、変更または改変は、必ずしも、意図された請求される主題に関する範囲からの逸脱であるとは限らない。本明細書のステップは、ある順序で提示されることができるが、いくつかの場合には、順序付けは、いくつかの入力が、説明されるシステムおよび方法の機能を変更することなしに、異なる時間にまたは異なる順序で提供されるように変更されることができる。開示される手順は、異なる順序で実行されることもできる。加えて、本明細書における様々な算出は、開示される順序で実施される必要はなく、算出の代替順序付けを使用する他の実施形態が、容易に実装されることができる。並べ替えられることに加えて、算出は、同じ結果をもつ副算出（sub-computation）に分解されることもできる。
【０１２２】
上記の説明は、説明される技法の例示的な実装形態を記載するが、他のアーキテクチャが、説明される機能性を実装するために使用されることができ、本開示の範囲内にあることを意図される。その上、責任の特定の分散が、説明の目的で上記で定義されているが、様々な機能および責任が、状況に応じて、異なるやり方で分散および分割されることがある。
【０１２３】
その上、主題は、構造的特徴および／または方法論的アクションに固有の言語で説明されてきたが、添付の請求項において定義されている主題が、説明される特定の特徴またはアクションに必ずしも限定されるとは限らないことを理解されたい。そうではなく、特定の特徴およびアクションは、請求項を実装する例示的な形態として開示される。
例示的な節
【０１２４】
Ａ．自律車両において実施されるシステムであって、システムは、第１のコンピュータシステムであって、１つまたは複数の第１のプロセッサと、１つまたは複数の第１のプロセッサに通信可能に結合され、１つまたは複数の第１のプロセッサによって実行可能である命令を含む１つまたは複数の第１のモジュールを記憶する１つまたは複数の第１のコンピュータ可読記憶媒体であって、１つまたは複数の第１のモジュールは、自律車両の現在のロケーションと自律車両の目的のロケーションとの間のルートを生成するように構成されたルートプランニングモジュールであって、ルートプランニングモジュールは、第１の動作周波数において動作する、ルートプランニングモジュールと、ルートに基づいて命令を生成するように構成された判定モジュールであって、命令は、ルートの少なくとも一部分に沿って自律車両を案内するための一連のアクションを含み、判定モジュールは、第２の動作周波数において動作する、判定モジュールと、軌道モジュールであって、リアルタイム処理されたセンサーデータにアクセスすることと、命令およびリアルタイム処理されたセンサーデータに少なくとも部分的に基づいて、出力軌道を生成することであって、軌道モジュールは、第３の動作周波数において動作する、生成することとを行うように構成された軌道モジュールとを備える１つまたは複数の第１のコンピュータ可読記憶媒体とを備える第１のコンピュータシステムと、第２のコンピュータシステムであって、１つまたは複数の第２のプロセッサと、１つまたは複数の第２のプロセッサに通信可能に結合され、１つまたは複数の第２のプロセッサによって実行可能である命令を含む１つまたは複数の第２のモジュールを記憶する１つまたは複数の第２のコンピュータ可読記憶媒体であって、１つまたは複数の第２のモジュールは、自律車両が出力軌道に沿って運転することを引き起こすための１つまたは複数の信号を生成するように構成された実行モジュールであって、実行モジュールは、第４の動作周波数において動作する、実行モジュールを備える１つまたは複数の第２のコンピュータ可読記憶媒体とを備える第２のコンピュータシステムとを備えるシステム。
【０１２５】
Ｂ．１つまたは複数の第２のモジュールは、フォールバック決定モジュールを含み、フォールバック決定モジュールは、第１のコンピュータシステムから、自律車両が安全操縦を実施することを引き起こすためのフォールバック軌道を受信することと、所定の時間期間の間フォールバック軌道を記憶することとを行うように構成され、ここにおいて、フォールバック決定モジュールは、第４の動作周波数において動作するパラグラフＡが具陳するシステム。
【０１２６】
Ｃ．フォールバック決定モジュールは、フォールバックアクションを保証するイベントの発生を決定することと、フォールバック軌道にアクセスすることとを行うようにさらに構成されたパラグラフＢが具陳するシステム。
【０１２７】
Ｄ．１つまたは複数の第２のモジュールは、フォールバック決定モジュールを含み、フォールバック決定モジュールは、フォールバックアクションを保証するイベントの発生を決定することと、自律車両が安全操縦を実施することを引き起こすためのフォールバック軌道を生成することとを行うように構成され、ここにおいて、フォールバック決定モジュールは、第４の動作周波数において動作するパラグラフＡ〜Ｃのいずれかが具陳するシステム。
【０１２８】
Ｅ．実行モジュールは、自律車両が安全操縦を実施することを引き起こすためのフォールバック軌道を受信することと、フォールバック軌道を実行し、自律車両が安全操縦を実施することを引き起こすこととを行うようにさらに構成されたパラグラフＡ〜Ｄのいずれかが具陳するシステム。
【０１２９】
Ｆ．第４の動作周波数は、第１の動作周波数、第２の動作周波数、および第３の動作周波数よりも高いパラグラフＡ〜Ｅのいずれかが具陳するシステム。
【０１３０】
Ｇ．第３の動作周波数は、第１の動作周波数および第２の動作周波数よりも高く、第３の動作周波数は、第４の動作周波数よりも低いパラグラフＡ〜Ｆのいずれかが具陳するシステム。第１の動作周波数は、第２の動作周波数、第３の動作周波数、および第４の動作周波数よりも低い請求項１に記載のシステム。
【０１３１】
Ｈ．輸送可能なコンピュータシステムによって実装される方法であって、方法は、輸送可能なコンピュータシステムの現在のロケーションを決定するステップと、輸送可能なコンピュータシステムのための目的のロケーションを決定するステップと、輸送可能なコンピュータシステムに関連する１つまたは複数のセンサーから、リアルタイム処理されたセンサーデータを受信するステップと、第１の動作周波数において、輸送可能なコンピュータシステムを現在のロケーションから目的のロケーションに案内するためのルートを決定するステップと、第２の動作周波数において、リアルタイム処理されたセンサーデータに少なくとも部分的に基づいて、輸送可能なコンピュータシステムをルートの少なくとも一部分に沿って案内するための命令を決定するステップと、第３の動作周波数において、リアルタイム処理されたセンサーデータおよび命令に少なくとも部分的に基づいて、軌道を生成するステップと、第４の動作周波数において、軌道を実行し、輸送可能なコンピュータシステムがルートに沿って移動することを引き起こすステップとを備える方法。
【０１３２】
Ｉ．ルートを決定するステップは、輸送可能なコンピュータシステムに関連する第１のコンピュータシステムによって実施され、輸送可能なコンピュータシステムをルートの少なくとも一部分に沿って案内するための命令を決定するステップは、第１のコンピュータシステムによって実施され、軌道を生成するステップは、第１のコンピュータシステムによって実施されるパラグラフＨが具陳する方法。
【０１３３】
Ｊ．軌道を実行し、輸送可能なコンピュータシステムがルートに沿って移動することを引き起こすステップは、輸送可能なコンピュータシステムに関連する第２のコンピュータシステムによって実施され、第２のコンピュータシステムは、第１のコンピュータシステムとは異なるパラグラフＩが具陳する方法。
【０１３４】
Ｋ．命令はポリシーを備え、リアルタイム処理されたセンサーデータに少なくとも部分的に基づいて、軌道を生成するステップは、ポリシーに基づいて、軌道を生成するステップを備えるパラグラフＩ〜Ｊのいずれかが具陳する方法。
【０１３５】
Ｌ．第２の動作周波数において、輸送可能なコンピュータシステムがフォールバックアクションを実施することを引き起こすためのフォールバック命令を生成するステップと、第３の動作周波数において、フォールバック命令に基づいて、フォールバック軌道を生成するステップと、実質的に同じ時間において軌道とともにフォールバック軌道を出力するステップとをさらに備えるパラグラフＩ〜Ｊのいずれかが具陳する方法。
【０１３６】
Ｍ．フォールバックアクションを保証するイベントの発生を決定するステップと、第４の動作周波数において、輸送可能なコンピュータシステムがフォールバックアクションを実施することを引き起こすためのフォールバック軌道を生成するステップと、フォールバック軌道を実行し、輸送可能なコンピュータシステムがフォールバックアクションを実施することを引き起こすステップとをさらに備えるパラグラフＩ〜Ｌのいずれかが具陳する方法。
【０１３７】
Ｎ．１つまたは複数のプロセッサと、１つまたは複数のプロセッサに通信可能に結合され、１つまたは複数のプロセッサによって実行可能である命令を含む１つまたは複数のモジュールを記憶する１つまたは複数のコンピュータ可読記憶媒体であって、１つまたは複数の第１のモジュールは、システムの現在のロケーションとシステムの目的のロケーションとの間のルートを生成するように構成されたルートプランニングモジュールであって、ルートプランニングモジュールは、第１の動作周波数において動作する、ルートプランニングモジュールと、ルートに基づいて命令を生成するように構成された判定モジュールであって、命令は、ルートに沿ってシステムを案内するための一連のアクションを含み、判定モジュールは、第２の動作周波数において動作する、判定モジュールと、軌道モジュールであって、リアルタイム処理されたセンサーデータにアクセスすることと、命令およびリアルタイム処理されたセンサーデータに少なくとも部分的に基づいて、出力軌道を生成することであって、軌道モジュールは、第３の動作周波数において動作する、生成することとを行うように構成された軌道モジュールと、システムが出力軌道に沿って動くことを引き起こすための１つまたは複数の信号を生成するように構成された実行モジュールであって、実行モジュールは、第４の動作周波数において動作する、実行モジュールとを備える１つまたは複数のコンピュータ可読記憶媒体とを備えるシステム。
【０１３８】
Ｏ．ルートプランニングモジュール、判定モジュール、および軌道モジュールは、システムの第１のコンピュータシステムに関連付けられ、実行モジュールは、第１のコンピュータシステムとは別々であるシステムの第２のコンピュータシステムに関連付けられるパラグラフＮが具陳するシステム。
【０１３９】
Ｐ．１つまたは複数のモジュールが、第２のコンピュータシステムに関連付けられたフォールバック決定モジュールであって、フォールバック決定モジュールは、フォールバックアクションを保証するイベントの発生を決定することと、システムがフォールバックアクションを実施することを引き起こすためのフォールバック軌道にアクセスすることと、フォールバック軌道が実行されることを引き起こし、システムがフォールバックアクションを実施することを引き起こすこととを行うように構成されたフォールバック決定モジュールをさらに備えるパラグラフＯが具陳するシステム。
【０１４０】
Ｑ．イベントは、システムのしきい値距離内のオブジェクト、システムのしきい値距離内にあると予測されるオブジェクト、第１のコンピュータシステムと第２のコンピュータシステムとの間の通信の不在、混乱しきい値を上回るシステムに関連する混乱レベル、システムのセンサーに関連する故障、システムに関連する構成要素の誤動作、システムに関連する占有ステータスの変化、軌道に関連する運転可能な表面のステータスの変化、またはしきい値確率を超える衝突の確率を備えるパラグラフＰが具陳するシステム。
【０１４１】
Ｒ．第１の動作周波数は、第２の動作周波数未満であり、第２の動作周波数は、第３の動作周波数未満であり、第３の動作周波数は、第４の動作周波数未満であるパラグラフＮ〜Ｑのいずれかが具陳するシステム。
【０１４２】
Ｓ．判定モジュールは、実行された軌道にアクセスすることと、実行された軌道を出力軌道と比較することと、実行された軌道と出力軌道とを比較することに少なくとも部分的に基づいて、フィードバックデータを生成することと、フィードバックデータに少なくとも部分的に基づいて、モデルまたはアルゴリズムのうちの１つまたは複数を更新することとを行うようにさらに構成されたパラグラフＮ〜Ｑのいずれかが具陳するシステム。
【０１４３】
上記で説明された例示的な節は、特定の一実装形態に関して説明されたが、本明細書のコンテキストでは、例示的な節の内容は、方法、デバイス、システム、および／またはコンピュータ記憶媒体を介して実装されることもできることを理解されたい。
【図１】
2020509963.tif 000006
【図２】
2020509963.tif 000007
【図３】
2020509963.tif 000008
【図４】
2020509963.tif 000009
【図５】
2020509963.tif 000010
【図６】
2020509963.tif 000011
【国際調査報告】
2020509963.tif 000012
2020509963.tif 000013
2020509963.tif 000014
2020509963.tif 000015
2020509963.tif 000016