(57)【要約】  本開示の態様は、車両を自律的に操作するための自律制御ソフトウェアを検証することに関する。例えば、運転シナリオを通じて自律制御ソフトウェアが実行されて、自律制御ソフトウェアの結果が観察される。運転シナリオを通じて検証モデルが複数回実行されて、複数回の各々についてモデルの結果が観察される。ソフトウェアの制御下にある仮想車両が１回の間に別の対象物と衝突したことを、ソフトウェアの結果が示すかどうかに基づいて、ソフトウェアが運転シナリオに合格したかどうかが判定される。モデルの制御下にある仮想車両が複数回のうちのいずれか１回で別の対象物と衝突したことを、モデルの結果が示すかどうかに基づいて、検証モデルが運転シナリオに合格したかどうかが判定される。判定に基づいて、ソフトウェアが検証される。【選択図】図７
2021509646.tif 000002
【特許請求の範囲】
【請求項１】
自律運転モードで車両を操作するための自律制御ソフトウェアを検証する方法であって、
運転シナリオを通じて前記自律制御ソフトウェアを１回実行して、前記自律制御ソフトウェアの前記シナリオの結果を観察することと、
前記運転シナリオを通じて検証モデルを複数回実行して、前記複数回の各々について前記検証モデルの前記シナリオの結果を観察することと、
前記自律制御ソフトウェアの制御下にある仮想車両が前記１回の間に別の対象物と衝突したことを、前記自律制御ソフトウェアの前記シナリオの前記結果が示すかどうかに基づいて、前記自律制御ソフトウェアが前記運転シナリオに合格したかどうかを判定することと、
前記検証モデルの制御下にある仮想車両が前記複数回のうちのいずれか１回で別の対象物と衝突したことを、前記検証モデルの前記シナリオの結果が示すかどうかに基づいて、前記検証モデルが前記運転シナリオに合格したかどうかを判定することと、
前記判定に基づいて、前記自律制御ソフトウェアを検証することと、を含む、方法。
【請求項２】
前記運転シナリオは、運転シナリオの所与のカテゴリの複数の運転シナリオのうちの１つであり、前記自律制御ソフトウェアを検証することは、前記所与のカテゴリの前記複数の運転シナリオのすべてにわたって前記自律制御ソフトウェアおよび前記検証モデルの性能を評価することに基づく、請求項１に記載の方法。
【請求項３】
前記自律制御ソフトウェアが合格したいくつかの前記運転シナリオを、複数回のうち少なくとも１回合格したいくつかのシナリオと比較することをさらに含み、前記自律制御ソフトウェアを検証することは前記比較にさらに基づく、請求項２に記載の方法。
【請求項４】
前記運転シナリオを通じて前記検証モデルを複数回実行することは、所定の１組の一般的なタイプの応答において識別された応答のタイプごとに１回前記シナリオを実行することを含む、請求項１に記載の方法。
【請求項５】
前記複数回の各々は、前記複数のうちの第１のものはブレーキ応答を含み、前記複数のうちの第２のものは右旋回の応答を含み、前記複数のうちの第３のものは左旋回の応答を含み、前記複数のうちの第４のものはブレーキおよび右旋回の応答を含み、前記複数のうちの第５のものはブレーキおよび左旋回の応答を含むように、前記検証モデルの前記応答が異なることに対応する、請求項１に記載の方法。
【請求項６】
前記自律制御ソフトウェアが前記運転シナリオに合格したかどうかを判定することは、前記別の対象物との任意の衝突の重症度レベルにさらに基づく、請求項１に記載の方法。
【請求項７】
前記自律制御ソフトウェアを検証することは、前記重症度レベルにさらに基づく、請求項６に記載の方法。
【請求項８】
前記検証モデルが前記運転シナリオに合格したかどうかを判定することは、前記別の対象物との任意の衝突の重症度レベルにさらに基づく、請求項１に記載の方法。
【請求項９】
前記自律制御ソフトウェアを検証することは、前記重症度レベルにさらに基づく、請求項８に記載の方法。
【請求項１０】
前記シナリオ内で両方の対象物がそれぞれの現在の軌跡をたどり続けた場合に、前記仮想車両が前記別の対象物と衝突する前の前記シナリオ内の所定の秒数に対応する、前記自律制御ソフトウェアまたは前記検証モデルに前記シナリオ内の前記仮想車両の制御を与えるためのハンドオーバー時間を識別することをさらに含み、前記ハンドオーバー時間は、前記運転シナリオを通じて前記検証モデルを実行し、前記運転シナリオを通じて前記自律制御ソフトウェアを実行するために使用される、請求項１に記載の方法。
【請求項１１】
前記ハンドオーバー時間は、前記運転シナリオを通じて前記自律制御ソフトウェアを実行するために使用される、請求項１０に記載の方法。
【請求項１２】
前記ハンドオーバー時間の確認のために、前記シナリオおよび前記ハンドオーバー時間を人間オペレータに提供することをさらに含む、請求項１０に記載の方法。
【請求項１３】
自律運転モードで車両を操作するための自律制御ソフトウェアを検証するためのシステムであって、
運転シナリオを通じて前記自律制御ソフトウェアを１回実行して、前記自律制御ソフトウェアの前記シナリオの結果を観察し、
前記運転シナリオを通じて検証モデルを複数回実行して、前記複数回の各々について前記検証モデルの前記シナリオの結果を観察し、
前記自律制御ソフトウェアの制御下にある仮想車両が前記１回の間に別の対象物と衝突したことを、前記自律制御ソフトウェアの前記シナリオの前記結果が示すかどうかに基づいて、前記自律制御ソフトウェアが前記運転シナリオに合格したかどうかを判定し、
前記検証モデルの制御下にある仮想車両が前記複数回のうちのいずれか１回で別の対象物と衝突したことを、前記検証モデルの前記シナリオの結果が示すかどうかに基づいて、前記検証モデルが前記運転シナリオに合格したかどうかを判定し、
前記判定に基づいて、前記自律制御ソフトウェアを検証する、ように構成された１つ以上のプロセッサを有する１つ以上のコンピューティングデバイスを含む、システム。
【請求項１４】
前記運転シナリオは、運転シナリオの所与のカテゴリの複数の運転シナリオのうちの１つであり、前記自律制御ソフトウェアを検証することは、前記所与のカテゴリの前記複数の運転シナリオのすべてにわたって前記自律制御ソフトウェアおよび前記検証モデルの性能を評価することに基づく、請求項１３に記載のシステム。
【請求項１５】
前記１つ以上のプロセッサは、前記自律制御ソフトウェアが合格したいくつかの前記運転シナリオを、複数回のうち少なくとも１回合格したいくつかのシナリオと比較するようにさらに構成されており、前記自律制御ソフトウェアを検証することは前記比較にさらに基づく、請求項１４に記載のシステム。
【請求項１６】
前記１つ以上のプロセッサは、前記別の対象物との任意の衝突の重症度レベルにさらに基づいて、前記自律制御ソフトウェアが前記運転シナリオに合格したかどうかを判定するようにさらに構成されている、請求項１３に記載のシステム。
【請求項１７】
前記１つ以上のプロセッサは、前記別の対象物との任意の衝突の重症度レベルにさらに基づいて、前記検証モデルが前記運転シナリオに合格したかどうかを判定するようにさらに構成されている、請求項１３に記載のシステム。
【請求項１８】
前記１つ以上のプロセッサは、前記シナリオ内で両方の対象物がそれぞれの現在の軌跡をたどり続けた場合に、前記仮想車両が前記別の対象物と衝突する前の前記シナリオ内の所定の秒数に対応する、前記自律制御ソフトウェアまたは前記検証モデルに前記シナリオ内の前記仮想車両の制御を与えるためのハンドオーバー時間を識別するようにさらに構成されており、前記ハンドオーバー時間は、前記運転シナリオを通じて前記検証モデルを実行し、前記運転シナリオを通じて前記自律制御ソフトウェアを実行するために使用される、請求項１３に記載のシステム。
【請求項１９】
前記自律制御ソフトウェアをさらに含む、請求項１３に記載のシステム。
【請求項２０】
前記検証モデルをさらに含む、請求項１３に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１８年１月８日に出願された、米国特許出願第１５／８６４，２３９号の継続出願であり、その開示は参照により本明細書に組み込まれる。
【背景技術】
【０００２】
ある場所から別の場所への乗客または物品の輸送を支援するために、例えば人間の運転手を必要としない車両などの自律車両を使用することができる。そのような車両は、乗客が集荷や目的地など何らかの初期入力を提供し得る完全な自律モードで動作する場合があり、車両は、例えば、車両、歩行者、自転車乗用者など他の道路利用者に応答し、相互作用することを必要とする可能性のあるルートを決定し、それをたどることによって、それ自体をその場所に操作する。これらの車両が自律モードで動作するために使用する自律制御ソフトウェアは、車両が他の対象物と相互作用しているエリアで車両を制御するために、そのようなソフトウェアが実際に使用される前に、テストされ、検証されることが重要である。
【発明の概要】
【０００３】
本開示の一態様は、自律運転モードで車両を操作するための自律制御ソフトウェアを検証する方法を提供する。この方法は、運転シナリオを通じて自律制御ソフトウェアを１回実行して、自律制御ソフトウェアのシナリオの結果を観察することと、運転シナリオを通じて検証モデルを複数回実行して、複数回の各々について検証モデルのシナリオの結果を観察することと、自律制御ソフトウェアの制御下にある仮想車両が１回の間に別の対象物と衝突したことを、自律制御ソフトウェアのシナリオの結果が示すかどうかに基づいて、自律制御ソフトウェアが運転シナリオに合格したかどうかを判定することと、検証モデルの制御下にある仮想車両が複数回のうちのいずれか１回で別の対象物と衝突したことを、検証モデルのシナリオの結果が示すかどうかに基づいて、検証モデルが運転シナリオに合格したかどうかを判定することと、判定に基づいて、自律制御ソフトウェアを検証することと、を含む。
【０００４】
一例では、運転シナリオは、運転シナリオの所与のカテゴリの複数の運転シナリオのうちの１つであり、自律制御ソフトウェアを検証することは、所与のカテゴリの複数の運転シナリオのすべてにわたって自律制御ソフトウェアおよび検証モデルの性能を評価することに基づく。この例では、方法は、自律制御ソフトウェアが合格したいくつかの運転シナリオを、複数回のうち少なくとも１回合格したいくつかのシナリオと比較することもさらに含み、自律制御ソフトウェアを検証することは比較にさらに基づく。別の例では、運転シナリオを通じて検証モデルを複数回実行することは、所定の１組の一般的なタイプの応答において識別された応答のタイプごとに１回シナリオを実行することを含む。別の例では、複数回の各々は、複数のうちの第１のものはブレーキ応答を含み、複数のうちの第２のものは右旋回の応答を含み、複数のうちの第３のものは左旋回の応答を含み、複数のうちの第４のものはブレーキおよび右旋回の応答を含み、複数のうちの第５のものはブレーキおよび左旋回の応答を含むように、検証モデルの応答が異なることに対応する。別の例では、自律制御ソフトウェアが運転シナリオに合格したかどうかを判定することは、別の対象物との任意の衝突の重症度レベルにさらに基づく。この例では、自律制御ソフトウェアを検証することは、重症度レベルにさらに基づく。別の例では、検証モデルが運転シナリオに合格したかどうかを判定することは、別の対象物との任意の衝突の重症度レベルにさらに基づく。この例では、自律制御ソフトウェアを検証することは、重症度レベルにさらに基づく。別の例では、方法は、シナリオ内で両方の対象物がそれぞれの現在の軌跡をたどり続けた場合に、仮想車両が別の対象物と衝突する前のシナリオ内の所定の秒数に対応する、自律制御ソフトウェアまたは検証モデルにシナリオ内の仮想車両の制御を与えるためのハンドオーバー時間を識別することも含み、ハンドオーバー時間は、運転シナリオを通じて検証モデルを実行し、運転シナリオを通じて自律制御ソフトウェアを実行するために使用される。この例では、ハンドオーバー時間は、運転シナリオを通じて自律制御ソフトウェアを実行するために使用される。加えて、または代替的に、方法は、ハンドオーバー時間の確認のために、シナリオおよびハンドオーバー時間を人間オペレータに提供することも含む。
【０００５】
本開示のさらなる態様は、自律運転モードで車両を操作するための自律制御ソフトウェアを検証するためのシステムを提供する。このシステムは、運転シナリオを通じて自律制御ソフトウェアを１回実行して、自律制御ソフトウェアのシナリオの結果を観察し、運転シナリオを通じて検証モデルを複数回実行して、複数回の各々について検証モデルのシナリオの結果を観察し、自律制御ソフトウェアの制御下にある仮想車両が１回の間に別の対象物と衝突したことを、自律制御ソフトウェアのシナリオの結果が示すかどうかに基づいて、自律制御ソフトウェアが運転シナリオに合格したかどうかを判定し、検証モデルの制御下にある仮想車両が複数回のうちのいずれか１回で別の対象物と衝突したことを、検証モデルのシナリオの結果が示すかどうかに基づいて、検証モデルが運転シナリオに合格したかどうかを判定し、判定に基づいて、自律制御ソフトウェアを検証する、ように構成された１つ以上のプロセッサを有する１つ以上のコンピューティングデバイスを含む。
【０００６】
一例では、運転シナリオは、運転シナリオの所与のカテゴリの複数の運転シナリオのうちの１つであり、自律制御ソフトウェアを検証することは、所与のカテゴリの複数の運転シナリオのすべてにわたって自律制御ソフトウェアおよび検証モデルの性能を評価することに基づく。この例では、１つ以上のプロセッサは、自律制御ソフトウェアが合格したいくつかの運転シナリオを、複数回のうち少なくとも１回合格したいくつかのシナリオと比較するように構成され、自律制御ソフトウェアを検証することは比較にさらに基づく。別の例では、１つ以上のプロセッサは、別の対象物との任意の衝突の重症度レベルにさらに基づいて、自律制御ソフトウェアが運転シナリオに合格したかどうかを判定するようにさらに構成されている。別の例では、１つ以上のプロセッサは、別の対象物との任意の衝突の重症度レベルにさらに基づいて、検証モデルが運転シナリオに合格したことを判定するようにさらに構成されている。別の例では、１つ以上のプロセッサは、シナリオ内で両方の対象物がそれぞれの現在の軌跡をたどり続けた場合に、仮想車両が別の対象物と衝突する前のシナリオ内の所定の秒数に対応する、自律制御ソフトウェアまたは検証モデル制御を与えるためのハンドオーバー時間を識別するようにさらに構成されており、ハンドオーバー時間は、運転シナリオを通じて検証モデルを実行し、運転シナリオを通じて自律制御ソフトウェアを実行するために使用される。別の例では、システムは、自律制御ソフトウェアも含む。別の例では、システムは、検証モデルも含む。
【図面の簡単な説明】
【０００７】
【図１】典型的な実施形態に係る例示的な車両の機能図である。
【図２】本開示の態様に係る地図情報の一例である。
【図３】本開示の態様に係る車両の例示的な外観図である。
【図４】本開示の態様に係る例示的なシステムの絵図である。
【図５】本開示の態様に係る、図４のシステムの機能図である。
【図６】本開示の態様に係るシナリオの例示的な表現である。
【図７】本開示の態様に係る可能な応答の例示的な図である。
【図８】本開示の態様に係る例示的なフロー図である。
【発明を実施するための形態】
【０００８】
概要
この技術は、自律運転モードで車両を制御するための自律制御ソフトウェアを検証することに関する。自律制御ソフトウェアを検証または部分的に検証するための１つのアプローチは、自律制御ソフトウェアが自律車両を、理想的な人間の運転手が異なるタイプの状況で同じブレーキ、加速、およびステアリング機能を備えた車両を制御するのがより優れているとは言わないまでも同じくらい優れているかどうかを評価することを伴い得る。これを達成するために、自律制御ソフトウェアは、シミュレーションまたはシナリオの結果に基づいて、この理想的な人間の運転手の検証モデルと比較され得る。人間は一般に予測不可能であるので、１組の特性を確立することによって、検証モデルが生成され得る。これらの特性は、刺激、知覚反応時間、動きまたは「移動」時間、および制御の性能に関連し得る。言い換えると、検証モデルは、理想的な人間が、衝突を回避するために、どのように気づき、反応し、最終的に（例えば、ブレーキをかける、旋回する、または他の何らかのアクションをとることによって）応答するかについての検証モデルを含み得る。この点について、検証モデルは、実際には多くの状況で人間の運転手と同等であるかそれ以上に実行することが予想され得る。
【０００９】
シナリオは、不適切に挙動している別の対象物への応答をテストする状況として生成され得る。この点について、シナリオは、単に車両が走り回るだけでなく、車両および任意の他の対象物の安全のために車両の応答が重要である状況である。
【００１０】
人または自律車両によって観察された実際の運転イベントから、または人間オペレータによって想像される状況から、異なるシナリオが生成され得る。各シナリオの重要な特徴は、「ハンドオーバー時間」、または自律制御ソフトウェアおよび検証モデルにシナリオ内の車両の制御が与えられた時間である。ハンドオーバー時間は、そのシナリオの状況に応じてシナリオごとに自動的に選択され、その後、人間オペレータによって確認または手動調整されてもよい。人間によるレビューを伴うハンドオーバー時間のためにより単純な検証モデルを使用すると、不要な複雑さおよび計算が削減され、大きいデータセットに対してより一貫した結果を提供することができる。
【００１１】
次に、性能を評価するために、シナリオを通じて自律制御ソフトウェアおよび検証モデルが実行され得る。自律制御ソフトウェアは、衝突がない場合、または衝突があり、傷害の可能性が非常に低い場合、シナリオに「合格」する可能性がある。検証モデルの性能を評価するとき、検証モデルは、複数の異なる応答の各々の下で同じシナリオを実行し得る。検証モデルが複数の異なる応答のうちのいずれか１つを使用して合格した場合、検証モデルは、そのシナリオに合格したと見なされ得る。加えて、シナリオに合格するための要件は、検証モデルと比較して自律制御ソフトウェアでは異なる場合がある。例えば、要件は、検証モデルよりも自律制御ソフトウェアの方が厳しい場合がある。
【００１２】
次に、検証モデルと比較して自律制御ソフトウェアの性能を評価するために、シナリオの結果が比較され得る。一例では、自律制御ソフトウェアは、検証モデルと少なくとも同じ数のシナリオに合格するなど、いくつかの要件を満たす必要がある場合がある。自律制御ソフトウェアがシナリオのすべてのカテゴリについてこれらの要件を満たすことができる場合、自律制御ソフトウェアは、検証モデルに関して検証されたと見なされ得る、または、他の検証プロセスも使用されている場合は検証モデルに関して少なくとも部分的に検証されたと見なされ得る。言い換えると、要件を満たすことは、自律制御ソフトウェアが、自律制御ソフトウェアおよび検証モデルが実行されたシナリオの検証モデルと少なくとも同じくらい優れていることを示し得る。この点について、自律制御ソフトウェアは、シミュレーションだけでなく、実際の運転状況での使用に十分であると考えられ得る。代替的に、自律制御ソフトウェアがあるシナリオグループについてこれらの要件を満たすことができない場合、結果をさらに詳細に評価して、自律制御ソフトウェアを必要に応じて微調整する方法を決定することができる。
【００１３】
本明細書で説明する特徴は、自律車両の自律制御ソフトウェアを検証する安全で効果的な方法を提供し得る。例えば、自律制御ソフトウェアは、実際の人の生命および財産を危険にさらすことなく数百ないし数千ものシナリオでテストできるだけでなく、自律制御ソフトウェアが実際に「安全」であることを確認するためのベンチマークと比較することもできる。加えて、これらのシナリオを使用すると、各シナリオを手動で作成し、実行するのにかかるのが数か月ではなく、何千ものテストを数時間で実行できるので、自律制御ソフトウェアの評価が大幅に加速する可能性がある。さらに、シナリオは、安全性が常に保証されているわけではない状況で安全性についての高い基準を提供し、単にそのような応答を観察してそれらが有効かどうかを「推測」するのではなく、自律制御ソフトウェアの応答を評価するためのベンチマークを提供する。そのようなテストがないと、検証されていない自律制御ソフトウェアを使用した人や財産への傷害のリスクが高すぎる可能性がある。
【００１４】
例示的なシステム
図１に示されるように、本開示の一態様による車両１００は、様々な構成要素を含む。本開示のいくつかの態様は、特定のタイプの車両に関連して特に有用であるが、車両は、限定はしないが、乗用車、トラック、オートバイ、バス、レクリエーション用車両などを含む任意のタイプの車両でよい。車両は、１つ以上のプロセッサ１２０、メモリ１３０、および汎用コンピューティングデバイスに典型的に存在する他のコンポーネントを含むコンピューティングデバイス１１０などの１つ以上の制御コンピューティングデバイスを有し得る。
【００１５】
メモリ１３０は、１つ以上のプロセッサ１２０によってアクセス可能である情報を記憶し、その情報には、プロセッサ１２０によって実行または別様に使用され得る命令１３４およびデータ１３２が含まれる。メモリ１３０は、プロセッサによってアクセス可能である情報を記憶することができる任意のタイプのメモリであってもよく、それらには、コンピューティングデバイス可読媒体、またはハードドライブ、メモリカード、ＲＯＭ、ＲＡＭ、ＤＶＤ、もしくは他の光ディスク、ならびに他の書き込み可能および読み取り専用メモリなどの電子デバイスを使って読み取ることができるデータを記憶する他の媒体が含まれる。システムおよび方法は、上記の異なる組み合わせを含んでもよく、それによって、命令およびデータの様々な部分が、様々なタイプの媒体に記憶される。
【００１６】
命令１３４は、プロセッサにより直接的に（マシンコードなど）または間接的に（スクリプトなど）実行される任意の一連の命令であってもよい。例えば、命令は、コンピューティングデバイス可読媒体上のコンピューティングデバイスコードとして記憶されてもよい。その点について、「ソフトウェア」、「命令」、および「プログラム」という用語は、本明細書では、互換的に使用され得る。命令は、プロセッサによる直接処理のためのオブジェクトコード形式で、または要求に応じて解釈されるか、もしくは予めコンパイルされる独立したソースコードモジュールのスクリプトもしくはコレクションを含む、任意の他のコンピューティングデバイス言語で記憶されてもよい。命令の機能、方法、およびルーチンについては、以下でさらに詳細に説明される。
【００１７】
データ１３２は、命令１３４に従ってプロセッサ１２０によって検索、記憶、または修正されてもよい。例えば、特許請求の範囲の主題は、いかなる特定のデータ構造にも限定されないが、データは、コンピューティングデバイスレジスタ内に、すなわち、複数の異なるフィールドおよびレコードを有する表、ＸＭＬドキュメント、またはフラットファイルとしてリレーショナルデータベース内に記憶されてもよい。データはまた、任意のコンピューティングデバイス可読形式でフォーマットされてもよい。
【００１８】
１つ以上のプロセッサ１２０は、市販されているＣＰＵなど任意の従来のプロセッサであってもよい。代替的に、１つ以上のプロセッサは、ＡＳＩＣまたは他のハードウェアベースプロセッサなどの専用デバイスであってもよい。図１は、プロセッサ、メモリ、およびコンピューティングデバイス１１０の他の要素を同じブロック内にあるものとして機能的に例示しているが、プロセッサ、コンピューティングデバイス、またはメモリは、実際には、同じ物理的な筐体内に記憶されていてもいなくてもよい、複数のプロセッサ、コンピューティングデバイス、またはメモリを含むことができることは、当業者により、理解されるであろう。例えば、メモリは、ハードドライブ、またはコンピューティングデバイス１１０の筐体とは異なる筐体内に設置された他の記憶媒体であってもよい。したがって、プロセッサまたはコンピューティングデバイスへの言及は、並行に動作してもしなくてもよいプロセッサまたはコンピューティングデバイスまたはメモリの集合体への言及を含むことを理解されたい。
【００１９】
コンピューティングデバイス１１０は、上述したプロセッサおよびメモリ、ならびにユーザ入力１５０（例えば、マウス、キーボード、タッチスクリーン、および／またはマイクロフォン）、および様々な電子ディスプレイ（例えば、スクリーン、または情報を表示するように動作可能である任意の他の電気デバイスを有するモニタ）など、コンピューティングデバイスと接続して通常使用されるすべてのコンポーネントであってもよい。この例では、車両は、内部の電子ディスプレイ１５２、ならびに１つ以上のスピーカー１５４を含み、情報または音響映像体験を提供する。この点について、内部の電子ディスプレイ１５２は、車両１００の車内に位置付けられてもよく、コンピューティングデバイス１１０によって使用されて、車両１００内の乗員に情報を提供してもよい。
【００２０】
コンピューティングデバイス１１０はまた、以下に詳細に説明するクライアントコンピューティングデバイスおよびサーバコンピューティングデバイスなど他のコンピューティングデバイスとの通信を容易にするために、１つ以上の無線ネットワーク接続１５６を含んでもよい。無線ネットワーク接続には、ブルートゥース、ブルートゥースローエネルギー（ＬＥ）、携帯電話接続などの短距離通信プロトコル、ならびにインターネット、Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ、イントラネット、仮想プライベートネットワーク、ワイドエリアネットワーク、ローカルネットワーク、１つ以上の企業に専用の通信プロトコルを使用するプライベートネットワーク、イーサネット、ＷｉＦｉ、およびＨＴＴＰを含む様々な構成およびプロトコル、ならびに上記の様々な組み合わせが含まれてもよい。
【００２１】
一例では、コンピューティングデバイス１１０は、自律運転コンピューティングシステムの制御コンピューティングデバイスであってもよく、または車両１００に組み込まれていてもよい。この自律運転コンピューティングシステムは、以下でさらに説明するように、メモリ１３０の自律制御ソフトウェアに従って車両１００の動きを制御するために、車両の様々なコンポーネントと通信することが可能であり得る。例えば、図１に戻ると、コンピューティングデバイス１１０は、メモリ１３０の命令１３４に従って、車両１００の動き、速度などを制御するために、減速システム１６０、加速システム１６２、ステアリングシステム１６４、シグナリングシステム１６６、ルーティングシステム１６８、測位システム１７０、知覚システム１７２、および動力システム１７４（すなわち、車両のエンジンまたはモーター）など、車両１００の様々なシステムと通信することができる。また、これらのシステムは、コンピューティングデバイス１１０の外部にあるものとして示されているが、実際には、これらのシステムもまた、車両１００を制御するための自律運転コンピューティングシステムとして再度、コンピューティングデバイス１１０の中に組み込まれてもよい。
【００２２】
一例として、コンピューティングデバイス１１０は、車両の速度を制御するために、車両のブレーキ、アクセルペダル、および／またはエンジンもしくはモーターなど、減速システム１６０および／または加速システム１６２の１つ以上のアクチュエータと相互作用し得る。同様に、ステアリングホイール、ステアリングシャフト、ならびに／またはラックアンドピニオンシステムのピニオンおよびラックなど、ステアリングシステム１６４の１つ以上のアクチュエータは、車両１００の方向を制御するために、コンピューティングデバイス１１０によって使用され得る。例えば、乗用車またはトラックなどの車両１００が道路上で使用するために構成されている場合、ステアリングシステムは、車両の向きを変えるために車輪の角度を制御するための１つ以上のアクチュエータを含んでもよい。シグナリングシステム１６６は、例えば、必要に応じて方向指示器またはブレーキライトを点灯させることによって、車両の意図を他の運転手または車両に知らせるために、コンピューティングデバイス１１０によって使用され得る。
【００２３】
ルーティングシステム１６８は、ある場所までのルートを決定し、それをたどるために、コンピューティングデバイス１１０によって使用され得る。この点について、ルーティングシステム１６８および／またはデータ１３２は、例えば、車道の形状および標高、車線境界線、交差点、横断歩道、速度制限、交通信号、建物、標識、リアルタイム交通情報、植生、または他のそのような対象物および情報を識別する高精密地図などの詳細な地図情報を記憶し得る。
【００２４】
図２は、交差点２０２および２０４を含む、車道の区分に関する地図情報２００の例である。この例では、地図情報２００は、車線境界線２１０、２１２、２１４、信号機２２０、２２２、横断歩道２３０、歩道２４０、一時停止標識２５０、２５２、および譲れの標識２６０の形状、場所、ならびに他の特性を識別する情報を含む。本明細書では、地図情報は、画像ベースの地図として図示されているが、地図情報は、完全に画像ベースである必要はない（例えば、ラスタ）。例えば、地図情報は、１つ以上の道路グラフ、または道路、車線、交差点、およびこれらの特徴間の接続などの情報のグラフネットワークを含み得る。各特徴は、グラフデータとして記憶されてもよく、地理的場所などの情報と関連付けられてもよく、いずれにせよ、他の関連する特徴にリンクされ、例えば、一時停止標識は、道路や交差点などにリンクされてもよい。いくつかの例では、関連付けられたデータは、道路グラフのグリッドベースのインデックスを含んで、ある道路グラフの特徴の効率的な検索を可能にし得る。
【００２５】
測位システム１７０は、地図上または地球上の車両の相対的または絶対的位置を判定するために、コンピューティングデバイス１１０によって使用され得る。例えば、測位システム１７０は、デバイスの緯度、経度、および／または標高の位置を判定するためのＧＰＳ受信機を含むことができる。レーザベースの位置決めシステム、慣性支援ＧＰＳ、またはカメラベースの位置決めなどの他の位置特定システムもまた、車両の場所を特定するために使用することができる。車両の場所は、緯度、経度、および標高などの絶対的な地理的位置だけでなく、多くの場合、より少ないノイズでその絶対的な地理的位置を判定することができる、車両のすぐ周りにある他の自動車に対する場所などの相対的な位置情報を含むことができる。
【００２６】
測位システム１７０はまた、車両の方向および速度、またはそれらの変化を決定するための加速度計、ジャイロスコープ、または別の方向／速度検出デバイスなど、コンピューティングデバイス１１０と通信する他のデバイスを含んでいてもよい。単なる例として、加速デバイスは、重力の方向、または重力に対して垂直な平面に対する車両の縦揺れ、偏揺れ、または横揺れ（またはそれらの変化）を判定することができる。このデバイスはまた、速度の増減、およびそのような変化の方向を追跡することもできる。本明細書で説明したように、場所および向きのデータのデバイスの提供は、コンピューティングデバイス１１０、他のコンピューティングデバイス、および上記の組み合わせに自動的に提供され得る。
【００２７】
知覚システム１７２はまた、他の車両、道路内の障害物、交通信号、標識、樹木などの車両の外部にある対象物を検出するために１つ以上のコンポーネントを含む。例えば、知覚システム１７２は、レーザ、ソナー、レーダー、カメラ、および／またはコンピューティングデバイス１１０が処理することができるデータを記録する任意の他の検出デバイスを含んでもよい。車両がミニバンなどの乗客車両である場合には、ミニバンは、屋根または他の都合のよい場所に搭載されるレーザまたは他のセンサを含んでもよい。例えば、図３は、車両１００の例示的な外観図である。この例では、屋上にある筐体３１０およびドーム状筐体３１２は、ライダーセンサ、ならびに各種のカメラおよびレーダーユニットを含んでもよい。さらに、車両１００の前端部に設置された筐体３２０、ならびに車両の運転手側および助手席側の筐体３３０，３３２は、各々、ライダーセンサを記憶することができる。例えば、筐体３３０は、運転手ドア３６０の前部に設置されている。車両１００はまた、車両１００の屋根の上にさらに設置されたレーダーユニットおよび／またはカメラのための筐体３４０、３４２も含む。追加のレーダーユニットおよびカメラ（図示せず）は、車両１００の前端および後端に、および／または屋根もしくは屋上にある筐体３１０に沿った他の位置に設置され得る。
【００２８】
コンピューティングデバイス１１０は、様々な構成要素を制御することによって車両の方向および速度を制御してもよい。例として、コンピューティングデバイス１１０は、詳細な地図情報およびルーティングシステム１６８からのデータを使用して、車両を目的地に完全に自律的にナビゲートし得る。コンピューティングデバイス１１０は、測位システム１７０を使用して車両の場所を判定し、知覚システム１７２を使用して、対象物を検出し、その場所に安全に到着するために必要である場合、対象物に対して応答することができる。そうするために、コンピューティングデバイス１１０は、車両を、（例えば、加速システム１６２により、エンジンに提供される燃料または他のエネルギーを増加させることによって）加速させ、（例えば、エンジンに供給される燃料を低減させ、ギヤを切り替え、および／または減速システム１６０によりブレーキをかけることによって）減速させ、（例えば、ステアリングシステム１６４により、車両１００の前輪または後輪の向きを変えることによって）方向を変更させ、（例えば、シグナリングシステム１６６の方向指示器を点灯することによって）係る変更を伝えさせてもよい。このため、加速システム１６２および減速システム１６０は、車両のエンジンと車両の車輪との間に様々な構成要素を含む、動力伝達装置の一部であり得る。再び、これらのシステムを制御することによって、コンピューティングデバイス１１０はまた、車両を自律的に操縦するために、車両の動力伝達装置を制御してもよい。
【００２９】
車両１００のコンピューティングデバイス１１０はまた、輸送サービスの一部であるコンピューティングデバイスならびに他のコンピューティングデバイスなど他のコンピューティングデバイスとの間で情報を受信または転送することもできる。図４および図５は、それぞれ、例示的なシステム４００の絵図および機能図であり、システムは、ネットワーク４６０を介して接続された複数のコンピューティングデバイス４１０、４２０、４３０、４４０、および記憶システム４５０を含む。システム４００は、車両１００、および車両１００と同じまたは同様に構成され得る車両１００Ａ、１００Ｂも含む。簡潔にするため、いくつかの車両およびコンピューティングデバイスのみを図示しているが、典型的なシステムは、これよりもはるかに多くのものを含み得る。
【００３０】
図４に示されるように、コンピューティングデバイス４１０、４２０、４３０、４４０の各々は、１つ以上のプロセッサ、メモリ、データ、および命令を含むことができる。そのようなプロセッサ、メモリ、データ、および命令は、コンピューティングデバイス１１０の１つ以上のプロセッサ１２０、メモリ１３０、データ１３２、および命令１３４と同様に構成されてもよい。
【００３１】
ネットワーク４６０および仲介ノードは、ブルートゥース、ブルートゥースＬＥ、インターネット、Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ、イントラネット、仮想プライベートネットワーク、ワイドエリアネットワーク、ローカルネットワーク、１つ以上の企業に専用の通信プロトコルを使用するプライベートネットワーク、イーサネット、ＷｉＦｉ、およびＨＴＴＰ、ならびに上記の様々な組み合わせなどの短距離通信プロトコルを含む様々な構成およびプロトコルを含んでもよい。そのような通信は、モデムおよび無線インターフェースなどの、他のコンピューティングデバイスとの間でデータを送受信することができる任意のデバイスによって容易に行われ得る。
【００３２】
一例では、１つ以上のコンピューティングデバイス１１０は、他のコンピューティングデバイスとの間でデータを受信、処理、および送信する目的で、ネットワークの異なるノードと情報を交換する、例えば、負荷分散サーバファームなど、複数のコンピューティングデバイスを有する１つ以上のサーバコンピューティングデバイスを含んでもよい。例えば、１つ以上のコンピューティングデバイス４１０は、ネットワーク４６０を介して、車両１００のコンピューティングデバイス１１０、または車両１００Ａの同様のコンピューティングデバイス、ならびにコンピューティングデバイス４２０、４３０、４４０と通信することが可能である１つ以上のサーバコンピューティングデバイスを含んでもよい。例えば、車両１００、１００Ａは、サーバコンピューティングデバイスによって様々な場所に発送することができる車両群の一部であり得る。この点について、サーバコンピューティングデバイス４１０は、車両１００および車両１００Ａなどの車両が自律運転モードで動作するために使用し得る自律制御ソフトウェアを検証するために使用できる検証コンピューティングシステムとして機能し得る。加えて、サーバコンピューティングデバイス４１０は、ネットワーク４６０を使用して、コンピューティングデバイス４２０、４３０、４４０のディスプレイ４２４、４３４、４４４などのディスプレイ上に、ユーザ４２２、４３２、４４２などのユーザに情報を送信および提示することができる。この点について、コンピューティングデバイス４２０、４３０、４４０は、クライアントコンピューティングデバイスと見なされてもよい。
【００３３】
図４に示すように、各クライアントコンピューティングデバイス４２０、４３０、４４０は、ユーザ４２２、４３２、４４２が使用することを意図されたパーソナルコンピューティングデバイスであってもよく、１つ以上のプロセッサ（例えば、中央処理装置（ＣＰＵ））、データおよび命令を記憶するメモリ（例えば、ＲＡＭおよび内蔵ハードドライブ）、ディスプレイ４２４、４３４、４４４などのディスプレイ（例えば、画面を有するモニタ、タッチスクリーン、プロジェクタ、テレビ、または情報を表示するように動作可能である他のデバイス）、およびユーザ入力デバイス４２６、４３６、４４６（例えば、マウス、キーボード、タッチスクリーン、またはマイクロフォン）を含む、パーソナルコンピューティングデバイスと接続して通常使用されるすべてのコンポーネントを有し得る。クライアントコンピューティングデバイスはまた、ビデオストリームを記録するためのカメラ、スピーカー、ネットワークインターフェースデバイス、およびこれらの要素を互いに接続するために使用されるすべての構成要素を含んでもよい。
【００３４】
クライアントコンピューティングデバイス４２０、４３０、および４４０は、各々、フルサイズのパーソナルコンピューティングデバイスを含んでもよいが、代替的に、インターネットなどのネットワークを介してサーバとデータを無線で交換することが可能であるモバイルコンピューティングデバイスを含んでもよい。ほんの一例として、クライアントコンピューティングデバイス４２０は、携帯電話、または無線対応ＰＤＡ、タブレットＰＣ、ウェアラブルコンピューティングデバイスもしくはシステムなどのデバイス、またはインターネットもしくは他のネットワークを介して情報を取得することができるネットブックであってもよい。別の例では、クライアントコンピューティングデバイス４３０は、図４に示されるように、腕時計として示されるウェアラブルコンピューティングシステムであってもよい。一例として、ユーザは、小型キーボード、キーパッド、マイクロフォンを使用して、カメラを用いた映像信号、またはタッチスクリーンを使用して、情報を入力し得る。
【００３５】
いくつかの例では、クライアントコンピューティングデバイス４４０は、以下でさらに説明するように、シナリオの結果、ハンドオーバー時間、および検証情報をレビューするために管理者またはオペレータによって使用される操作ワークステーションであり得る。図４および図５には操作ワークステーション４４０が１つのみ示されているが、典型的なシステムには、任意の数のそのようなワークステーションが含まれてもよい。さらに、操作ワークステーションはデスクトップコンピュータとして図示されているが、操作ワークステーションは、ラップトップ、ネットブック、タブレットコンピュータなど様々なタイプのパーソナルコンピューティングデバイスを含み得る。
【００３６】
メモリ１３０と同様に、記憶システム４５０は、ハードドライブ、メモリカード、ＲＯＭ、ＲＡＭ、ＤＶＤ、ＣＤ−ＲＯＭ、書き込み可能メモリ、および読み出し専用メモリなどの、サーバコンピューティングデバイス４１０によりアクセス可能である情報を記憶することができる、任意のタイプのコンピュータ化された記憶装置であり得る。さらに、記憶システム４５０は、データが、同じまたは異なる地理的位置に物理的に設置され得る複数の異なる記憶デバイス上に記憶される分散型記憶システムを含んでもよい。記憶システム４５０は、図４および図５に示すように、ネットワーク４６０を介してコンピューティングデバイスに接続されてもよく、かつ／またはコンピューティングデバイス１１０、４１０、４２０、４３０、４４０などのいずれかに直接接続されるか、もしくは組み込まれてもよい。
【００３７】
記憶システム４５０は、以下でより詳細に説明されるように、様々なタイプの情報を記憶することができる。この情報は、本明細書で記載する特徴のうちのいくつかまたはすべてを実行するために、１つ以上のサーバコンピューティングデバイス４１０などのサーバコンピューティングデバイスによって検索または別様にアクセスされ得る。例えば、記憶システム４５０は、理想的な人間の運転手の予想される挙動を表す検証モデルを記憶してもよい。検証モデルは、１組の特性を確立することによって生成され得る。これらは、例えば、理想的な人間の運転手と同様に、足や手を動かして車両のブレーキング、加速、および／またはステアリングの挙動を変更することにより、視覚的または聴覚的刺激に反応するための応答時間に関する。検証モデルは、仮想車両の挙動方法を決定するための１組のルールも含み得る。これらのルールは、仮想車両の経路、仮想車両の速度、仮想車両が異なる対象物にどのように反応するかなどの挙動を定義し得る。１組の特性および１組のルールは、あたかも理想的な人間が仮想車両を制御しているかのように、検証モデルが仮想車両を制御する（すなわち、ブレーキ、旋回など）ことを可能にし得る。そのようなデータは、既存の人間の応答（または反応）の研究から入手でき、または実験を実行して実際の人間の挙動をテストすることから生成され得る。この点について、検証モデルは、実際には多くの状況で人間の運転手と同等であるかそれ以上に実行することが予想され得る。
【００３８】
しかしながら、典型的な人間の運転手とは異なり、検証モデルは、（例えば、車両の死角または別の対象物の背後にあるため）隠れている対象物であっても、自律車両よりもその環境内でより多くの情報を知覚すると想定され得る。言い換えると、検証モデルの知覚は「完全」でさえあり、自律車両に予想されるものよりも優れている場合がある。これにより、検証モデルは、これ以上ないほどに超人間的な性能でありながら、少なくとも名目上の人間と同等の能力を持つことが可能であり得る。例えば、検証モデルの場合、反応時間や旋回などの運転挙動は、非常に人間に似ている可能性があり、知覚はほとんど「超人間的」であり得る。代替的に、検証モデルの知覚は、例えば約３００フィートなど、ある距離までしか完全ではなく、それを超えると、検証モデルは完全ではないか、知覚がない場合がある。さらなる代替として、検証モデルの知覚は、特定の視野に制限されるか、または検証モデルの知覚は、典型的な人間の運転手の死角または閉塞されたエリアを含まない。もちろん、これらは単なる例であり、挙動や知覚を含むモデルの特徴は、人間の性能をより厳密にモデル化する、または超人間的である可能性がある。
【００３９】
検証モデルに加えて、記憶システム４５０は、複数のシナリオを記憶することもできる。シナリオは、例えば、スピード違反、一時停止標識または赤信号無視、でたらめな運転など、不適切に挙動している別の対象物への応答をテストする状況として生成されてもよい。この点について、シナリオは、単に車両が走り回るだけでなく、車両の応答が車両および任意の他の対象物の安全のために重要である状況である。各シナリオは、道路の形状、場所、方向などの特性を定義する道路情報など、仮想車両の環境を定義する情報を含み得る。加えて、各シナリオは、車両、歩行者、自転車乗用者、植生、縁石、車線境界線、歩道、横断歩道、建物などの対象物の形状、場所、向き、速度などの対象物の特性を定義する対象物情報も含み得る。さらに、各シナリオは、仮想車両の形状、場所、向き、速度などを含む、車両１００に対応する仮想車両の特性を含み得る。加えて、各シナリオの環境および他の対象物は、実世界のログデータ（例えば、車両１００の知覚システム１７２などの知覚システムによって生成されたセンサーデータ）、シミュレーションで作成された純粋な合成対象物もしくはセンサーデータ、またはこれらの任意の組み合わせを含み得る。
【００４０】
各シナリオは、「ハンドオーバー時間」または自律制御ソフトウェアおよび検証モデルにシナリオ内の仮想車両を制御する制御が与えられた時間と関連付けられ得る。ハンドオーバー時間は、そのシナリオの状況に応じて、シナリオごとに自動的に選択されてもよい。いくつかの事例では、ハンドオーバー時間は、例えば操作ワークステーション４４０を使用して、人間オペレータによってさらに確認または手動調整されてもよい。一例では、所与のシナリオについて、自律車両が、シナリオ内で、約５秒など、将来のある所定の期間に、車両、歩行者、自転車乗用者など、別の対象物と衝突する場合、これは、ハンドオーバー時間として選択されてもよい。この例は、自律車両と他の対象物の両方が現在の経路をたどり続けることを想定している（実際のシナリオではそうではない場合でも）。次に、このハンドオーバー時間は、妥当であると確認されるか、人間オペレータによって調整され得る。人間によるレビューを伴うハンドオーバー時間のためにより単純な検証プロセスを使用すると、不要な複雑さおよび計算が削減され、大きいデータセットに対してより一貫した結果を提供することができる。
【００４１】
ハンドオーバー時間は、異なるアプローチを使用して決定されてもよい。例えば、ハンドオーバー時間は、人間の運転手が衝突を回避するために快適にブレーキをかけることができなくなった時点など、人間の運転手が挙動を停止する可能性が低い時点に対応し得る。代替的に、ハンドオーバー時間は、人間の運転手の知覚が完全ではなくなるか、または何らかの特定の閾値よりも低くなる時点に対応し得る。また別の例では、あるシナリオにより自律制御ソフトウェアが仮想車両の衝突を引き起こす場合、同じ状況での検証モデルのハンドオーバー時間は数秒早くなる可能性がある。もちろん、これらの例のいずれも、妥当であると確認されるか、人間オペレータによって調整され得る。
【００４２】
さらなる例として、自律制御ソフトウェアの知覚または検証モデルに基づいて、ハンドオーバー時間を決定することができる。例えば、対象物が緊急応答を必要とするような挙動をしている場合でも、不完全な知覚を持つ検証モデルまたは自律制御ソフトウェアは、対象物をすぐに見たり観察したりしない可能性がある。したがって、ハンドオーバー時間は、検証モデルまたは自律制御ソフトウェアがその対象物を観察する、または実際に観察すべき時点に対応する場合がある。例えば、駐車中の車両の後ろから車道に歩行者が歩いて入ってくる場合、完全な知覚を持つ検証モデルは人に早く反応し始める可能性がある。その検証モデルまたは自律制御ソフトウェアは、歩行者が駐車中の車両の後ろにいても歩行していることを観察することができるからである。しかしながら、不完全な知覚を持つ検証モデルまたは自律制御ソフトウェアは、後で反応する可能性がある。その検証モデルまたは自律制御ソフトウェアは、駐車中の車両の後ろから出てくるまで歩行者を見たり観察したりすることができないからである。ハンドオーバー時間がオペレータによって手動で設定されるとき、オペレータは、例えば、人が駐車中の車両の後ろから出てくるときにハンドオーバー時間を設定することによって、不完全な知覚を手動でエンコードすることもできる。
【００４３】
図６は、地図情報２００に対応する道路の区分に関するシナリオの例６００を提供する。この例では、交差点６０２および６０４は、それぞれ交差点２０２および２０４に対応する。この点、車線境界線２１０、６１２、６１４、信号機６２０、６２２、横断歩道６３０、歩道６４０、一時停止標識６５０、６５２、および譲れの標識６６０の形状、場所、ならびに他の特性は、車線境界線２１０、２１２、２１４、信号機２２０、２２２、横断歩道２３０、歩道２４０、一時停止標識２５０、２５２、および譲れの標識２６０の形状、場所、ならびに他の特性に対応する。
【００４４】
例６００では、車両１００または車両１００Ａに対応する仮想自律車両６１０が交差点６０４に接近している。第２の仮想車両６２０も交差点６０４に接近している。このシナリオは、車両６２０が一時停止標識６５０を無視する可能性があるので、仮想車両６２０の「挙動が悪い」ことを含み得る。このシナリオでは、仮想自律車両６１０および仮想車両６２０が現在の速度で次の５秒間（すなわち、将来の所定の期間まで）継続した場合、仮想車両は互いに衝突することになる。したがって、例６００は、ハンドオーバー時間のシナリオを表す。
【００４５】
シナリオは、様々な方法でアレンジしてもよい。例えば、シナリオは、カテゴリにグループ化されているか、そうでなければカテゴリに関連付けられ、これらのカテゴリは、より大きいカテゴリグループに一緒にグループ化されてもよい。例えば、交差点の一時停止標識で右折するシナリオは、１つのカテゴリであり得る。別の例として、例６００は、仮想車両が向きを変えずに交差点を通過している他のシナリオで１つのカテゴリにグループ化されてもよい。同様に、一時停止標識に関するすべてのカテゴリは、一時停止標識シナリオのカテゴリグループに一緒にグループ化され得る。加えて、所与のカテゴリまたはカテゴリグループ内のシナリオは各々、わずかに異なる。例えば、仮想自律車両および他の車両の速度および位置は、他の車両の挙動だけでなく、異なるシナリオにわたって変更されてもよい。曲がり角または交差点の形状も変更されてもよい。人または自律車両によって観察された実際の運転イベントから、または人間オペレータによって想像される状況から、異なるシナリオが生成され得る。シナリオをカテゴリにグループ化することにより、自律制御ソフトウェアが以下で説明するように十分に実行されない場合、自律制御ソフトウェアの問題がどこにあるかがより容易に明らかになる可能性がある。
【００４６】
加えて、記憶システム４５０は、自律運転モードで車両を操作するために車両１００などの車両によって使用される自律制御ソフトウェアを記憶することもできる。記憶システム４５０に記憶されたこの自律制御ソフトウェアは、まだ検証されていないバージョンであり得る。検証されると、自律制御ソフトウェアは、例えば、自律運転モードで車両１００を制御するためにコンピューティングデバイス１１０によって使用されるように、車両１００のメモリ１３０に送信されてもよい。
【００４７】
例示的な方法
上述し、図に例示した動作に加えて、様々な動作が、ここで説明される。以下の動作は、以降に説明された正確な順序で実行される必要はないことを理解されたい。むしろ、様々なステップが、異なる順序で、または同時に処理されてもよく、ステップもまた、追加または省略されてもよい。
【００４８】
車両１００のコンピューティングデバイス１１０による使用のためにメモリ１３０に記憶される自律制御ソフトウェアを検証するために、検証モデル、シナリオ、およびハンドオーバー時間は各々構築され、または決定されなければならない。上記のように、検証モデルは、上述のように、１組の特性を使用して、サーバコンピューティングデバイス４１０などのサーバコンピューティングデバイス、および／または操作ワークステーション４４０など１つ以上の操作ワークステーションによって生成され得る。シナリオは、車両１００または車両１００Ａなどの車両の実際の運転体験を使用し、上述のように、適切なハンドオーバー時間を決定して生成され得る。この情報は、上述のように、記憶システム４５０に記憶され得る。
【００４９】
次に、サーバコンピューティングデバイス４１０は、記憶システム４５０に記憶された自律制御ソフトウェアを検証するために、記憶システム４５０にアクセスすることができる。例えば、サーバコンピューティングデバイス４１０は、性能を評価するために、カテゴリごと、カテゴリグループごとに、記憶システム４５０のシナリオを通じて、自律制御ソフトウェアおよび検証モデルの各々を実行し得る。一度に１つのカテゴリおよび／またはカテゴリグループを使用して自律制御ソフトウェアを検証することは、すべてのカテゴリのすべてのシナリオを一度に実行するのではなく、自律制御ソフトウェアをどのように改善できるかを識別する機会を提供し得る。例えば、自律制御ソフトウェアおよび検証ソフトウェアは、例６００のシナリオ、および例６００と同じカテゴリまたはカテゴリグループ内の任意の他のシナリオを通じて実行されてもよい。
【００５０】
所与のシナリオを通じて自律制御ソフトウェアを実行すると、シナリオの詳細を使用してシミュレーションが生成され得る。例えば、必要に応じて、シナリオの環境および対象物は、知覚システム１７２などの知覚システムが、自律制御ソフトウェアに従って動作するであろう車両１００のコンピューティングデバイス１１０に提供することが予想されるセンサーデータに変換され得る。代替的に、シナリオがセンサーデータをすでに含む場合、シナリオは単に「再生」され得る。いずれの場合でも、自律制御ソフトウェアは、自律制御ソフトウェアが実際に車両１００上で実行されているかのようにシナリオを「体験」または処理する。言い換えれば、自律制御ソフトウェアは、シナリオのすべての詳細ではなく、知覚システム１７２がシナリオについて検出することができるであろう情報のみが提供される。例えば、例６００に戻ると、サーバコンピューティングデバイス４１０は、自律制御ソフトウェアが、詳細な地図情報２００、ならびに仮想自律車両６１０の知覚システムによって検出される任意の情報へのアクセスを与えられるように、シナリオを実行し得る。
【００５１】
自律制御ソフトウェアは、仮想自律車両が従うべきシナリオごとに１つの応答のみを選択し得る。もちろん、自律制御ソフトウェアによって決定される応答は、そのソフトウェアのプログラミングに従って決定される。これらの応答の実際の特性は、例えば、仮想車両の機能（ブレーキ、加速、ステアリング制御など）や、自律車両ソフトウェアがそのような応答を実行する方法などを含む任意の数の変数によって決定され得る。したがって、シミュレーションは、選択された、またはむしろ決定されたタイプの応答が与えられると、シナリオの予想される結果を提供し得る。この予想される結果は、仮想自律車両の最終ポーズ、シナリオ内の任意の他の車両または対象物の最終ポーズ、応答時間、任意の対象物との衝突の有無などの情報を含み得る。
【００５２】
次に、自律制御ソフトウェアの性能を評価するか、むしろ、自律制御ソフトウェアが所与のシナリオに「合格」したか「不合格」になったかを判定するために、予想される結果が使用され得る。例えば、自律制御ソフトウェアは、衝突がない場合、衝突はなく、仮想車両と別の対象物（衝突があった可能性がある）との間に少なくとも何らかの最小バッファ距離（約２フィートなど）がある場合、衝突はなく、車両が衝突を回避するために危険な操作（車道からの離脱、スピード違反、対向車線に向かっての運転、縦方向もしくは横方向への高加速やジャークの使用、または他の危険な操作など）を行う必要がなかった場合、衝突はなく、シナリオでの潜在的な衝突への反応を開始する反応時間が遅すぎない場合（シナリオに応じて一瞬、１秒、数秒を超えるなど）、衝突はあるが、傷害の可能性が非常に低い場合、または任意の他のそのような考慮事項の場合、シナリオに合格し得る。
【００５３】
傷害の可能性の分析は、車両衝突の既知の保険数理技術および計算を使用して、予想される傷害の結果を決定し、定量化するために、仮装車両の衝突位置、衝突角度、ならびにまたは衝突時の仮装車両および仮装車両が衝突した対象物の速度など、所与のシナリオの結果の特性を使用して、衝突の属性を識別することを伴い得る。この点について、傷害の重症度のＡＩＳ分類（自動車医学促進協会発行）、または道路車両の機能安全に関するＩＳＯ２６２６２規格で定義されている重症度のクラスなどの傷害重症度システムを使用して、「合格」または「不合格」の基準を識別するのに役立つように、予想される傷害の結果を定量化することができる。例として、表２の重症度のクラスの定義を使用すると、Ｓ０またはＳ１の重症度レベルの衝突は「合格」と見なされ得る。他のすべての衝突は「不合格」と見なされ得る。下記の表１は、略式傷害スコアシステムの例示的な表現を提供し、表２は、前述のＥＳレベルと表１のＡＩＳスコアコードとの間のマッピングを提供する。
【表１】
2021509646.tif 000003
【表２】
2021509646.tif 000004
【００５４】
シナリオを通じて自律制御ソフトウェアを実行することに加えて、検証モデルを、シナリオを通じて実行して、自律制御ソフトウェアがシナリオに合格するかどうかを決定することもできる。しかしながら、検証モデルを、知覚システム１７２によってコンピューティングデバイス１１０に提供されるデータに限定するのではなく、検証モデルには、シナリオに関するすべての情報が提供される。この点について、検証モデルは、上記のように完全な知覚を有し、したがって、シナリオに関する自律制御ソフトウェアよりも多くの情報が提供される。代替的に、検証モデルの知覚は、上記の例のいずれかと同様に制限される場合がある。
【００５５】
加えて、検証モデルの性能を評価するとき、検証モデルは、検証モデルの１組の特性および１組のルールを使用して、所定の１組の一般的なタイプの応答のすべてまたはサブセットの下で同じシナリオを実行し得る。言い換えると、検証モデルは、実際には、自律制御ソフトウェアに「取って代わる」。図７の例７００に例示されるように、これらの一般的な応答のカテゴリは、ブレーキング（経路Ａによって表される）、右旋回（経路Ｂによって表される）、左旋回（経路Ｃによって表される）、ブレーキングおよび右旋回（経路Ｄによって表される）、またはブレーキングおよび左旋回（経路Ｅによって表される）を含み得る。他のタイプの応答は、何もしない（すなわち、加速／減速または方向を変更しない）、加速、または左または右旋回しながらの加速、または異なるレートでの旋回、ブレーキングまたは加速など、他のタイプの反応も含み得る。
【００５６】
この場合も、検証モデルは、例えば、特定のシナリオまたはシナリオのカテゴリについて人間オペレータによって選択された、所定の１組のまたは所定のサブセットのそのような応答における異なる応答の各々を使用してシナリオを通じて実行される。言い換えると、例６００のシナリオは、所定の１組が例７００における可能な経路Ａ〜Ｅに対応する一般的なタイプの応答を含むと想定すると、シナリオは、５つの可能な経路の各々について１回実行される。この点について、検証モデルは、各シナリオでのブレーキング、右旋回、左旋回、ブレーキングと右旋回、またはブレーキングと左旋回を含む、所定の１組における各タイプの応答を試す機会を有する。
【００５７】
この場合も、これらの応答の実際の特性は、例えば、仮想車両の機能（ブレーキング、加速、ステアリング制御など）、ならびに検証モデルの１組の特性および１組のルールに従って検証モデルがそのような応答を実行する方法を含む、任意の数の変数によって決定され得る。１組のルールは、いくつかのシナリオ、シナリオのカテゴリ、またはすべてのシナリオに対して調整または具体的に選択され得る。例えば、１組のルールは、モデルがあるシナリオにおいて他の対象物を無視するか、あるシナリオにおいてすべての対象物を等しく回避しようとするか、または他のタイプの対象物（縁石、中央分離帯など）よりもあるシナリオにおけるいくつかの対象物（人、自転車乗用者、または他の車両など）を回避しようとするかを定義し得る。これらの１組のルールは、例えば、仮想モデルが一定の速度を維持すべきかどうか、モデルが特定の速度を維持すべきかどうか（時速約２５マイル）、またはモデルが自律制御ソフトウェアによって決定されたものと同じ速度計画を使用すべきかどうかなど、シナリオに応答する前の仮想車両の速度を定義してもよい。１組のルールは、シナリオに応答する前にモデルが特定のジオメトリに従うべきかどうか、モデルが常に同じジオメトリに従うかべきかどうか（例えば、常に直進するかどうか）、またはモデルが自律制御ソフトウェアによって決定されたものと同じジオメトリを使用すべきかどうかを定義することもできる。
【００５８】
いくつかの場合には、検証モデルのあるタイプの応答の特定の特性、ならびに仮想車両の加速（横方向および前方）も、１組のルールによって定義され得る。例えば、検証モデルは、最初に非常に強くブレーキをかけ（減速）し始め、しかし、仮想車両があるレベルの減速または速度に達すると、検証モデルは、ゆっくりブレーキをかけ得るように、１組のルールまたはシナリオにおいてブレーキングの特定の傾斜をエンコードすることができる。
【００５９】
例示的な所定の１組は、一般的なタイプの応答を５つしか含んでいないが、この１組は、何もしない（すなわち、加速／減速または方向を変更しない）、加速する、または左もしくは右旋回しながら加速するなど、異なるまたは他のタイプの応答を含んでいてもよい。別の例として、人間オペレータは、所定の１組の応答の全体またはサブセットを使用するのではなく、検証モデルを「最良の」挙動でエンコードしてもよく、検証モデルがシナリオを実行し、検証モデルに従って所与のシナリオに最良の応答を予測し、検証モデルは、常に、同じ応答を使用し（例えば、常にまっすぐ進み続ける）、または所与のシナリオについて自律車両ソフトウェアによって決定された同じ経路（すなわち、同じジオメトリ）を検証モデルがたどるが、検証モデルは、仮想車両の速度を変更する方法または変更するかどうかを決定してもよい。
【００６０】
検証モデルが応答のうちの所与の１つを使用してシナリオに合格したか不合格になったかは、自律制御ソフトウェアの場合と同じまたは同様のルールを使用して決定され得る。一例として、検証モデルは、例えば、上記の例のように、衝突がない場合、衝突はなく、仮想車両と別の対象物との間に少なくとも何らかの最小バッファ距離がある場合、衝突はなく、車両が衝突を回避するために危険な操作を行う必要がなかった場合、衝突はなく、シナリオでの潜在的な衝突への反応を開始する反応時間が遅すぎない場合、のいずれかに基づいてシナリオに合格し得る。検証モデルが異なる応答のいずれか１つを使用してシナリオに合格した場合、検証モデルは、そのシナリオに合格したと見なされ得る。この点について、自律制御ソフトウェアは、検証モデルがテストされる５回ごとに１回テストされる。
【００６１】
次に、検証モデルと比較して自律制御ソフトウェアの性能を評価するために、シナリオの結果が比較され得る。一例では、自律制御ソフトウェアは、検証モデルと少なくとも同じ数のシナリオに合格するなど、いくつかの要件を満たす必要がある場合がある。加えて、検証モデルと比較して、比較の結果と自律制御ソフトウェアのより有用な分析により大きな有用性を提供するために、所与のカテゴリまたはカテゴリグループの結果は、個々のシナリオの評価、集約またはグループ化したものによって、その所与のカテゴリまたはカテゴリグループの検証モデルと比較して、自律制御ソフトウェアがどのように実行されるかかを決定することによって評価され得る。例えば、カテゴリまたはカテゴリグループに「合格する」ために、自律制御ソフトウェアの結果が検証モデルの結果と比較され得る。
【００６２】
一例として、所与のカテゴリに合格するために、自律制御ソフトウェアは、所与のカテゴリ内の検証モデルと同等であるかそれ以上の数のシナリオで衝突を回避する、それらのシナリオについて検証モデルによって達成された平均バッファ距離以上である所与のカテゴリのシナリオのすべてまたはサブセットにわたって平均バッファ距離を達成する、それらのシナリオについて検証モデルによって達成された潜在的な衝突への反応を開始するための平均反応時間以上である所与のカテゴリのシナリオのすべてまたはサブセットにわたって潜在的な衝突への反応を開始するための平均反応時間を達成する、検証モデルによって達成された平均性能メトリック以下である所与のカテゴリのシナリオのすべてまたはサブセットにわたって平均性能メトリック（横方向の最大加速または減速、縦方向の最大加速または減速、またはジャークなど）を達成する、それらのシナリオについて検証ソフトウェアが仮想車両に実行させる操作よりも安全またはより安全である、所与のカテゴリのシナリオのすべてまたはサブセットにわたって仮想車両に操作を実行させる、それらのシナリオの検証ソフトウェアよりも、所与のカテゴリのシナリオのすべてまたはサブセットにわたって、Ｓ２またはＳ３など、ある重症度レベル以上の衝突がない、の要件のうちの１つ以上を達成することが必要とされ得る。シナリオの所与のカテゴリの操作の「安全性」は、仮想車両によって実行される各タイプの操作（例えば、車線内にとどまる、車線から離れる、道路から離れるなど）にペナルティまたはスコア値を割り当て、自律制御ソフトウェアと検証モデルの両方の複数のシナリオにわたる合計スコアを合計することによって評価され得る。この例では、検証モードに対する自律制御ソフトウェアの性能を決定しする、またはむしろ、所与のカテゴリのシナリオについての自律制御ソフトウェアの結果が、所与のカテゴリのシナリオについての検証モデルの性能と同じくらいかそれよりも安全かどうかを決定するために、それらの合計スコアの値が比較されてもよい。上記のように、カテゴリおよびカテゴリグループ内のこの細分性は、自律制御ソフトウェアをどこでどのように改善できるかのよりよい理解を提供し得る。
【００６３】
同様に、所与のカテゴリグループに合格するために、自律制御ソフトウェアは、所与のカテゴリのシナリオにわたって評価するのではなく、所与のカテゴリの前述の要件のうちの１つ以上を達成することが必要とされ、要件は、カテゴリまたはカテゴリグループ内のすべてのシナリオにわたって評価され得る。この一部として、このプロセスを簡略化するために、カテゴリグループのこれらの要件を評価するときに、カテゴリグループ内の複数のカテゴリの、衝突の数、平均バッファ距離、平均反応時間、平均性能メトリック、操作の安全性の合計スコア、ある重症度レベル以上の衝突の数などが追加または平均化され得る。この場合も、上記のように、カテゴリおよびカテゴリグループ内のこの細分性は、自律制御ソフトウェアをどこでどのように改善できるかのよりよい理解を提供し得る。
【００６４】
自律制御ソフトウェアが、評価の実施方法に応じて、すべてのシナリオ、カテゴリ、および／またはカテゴリグループについて前述の要件を満たすことができる場合、自律制御ソフトウェアは、検証モデルに関して検証されたと見なされ得る、または他の検証プロセスも使用されている場合は検証モデルに関して少なくとも部分的に検証されたと見なされ得る。言い換えると、要件を満たすことは、自律制御ソフトウェアが、自律制御ソフトウェアおよび検証モデルが実行されたシナリオの検証モデルと少なくとも同じくらい優れていることを示し得る。代替的に、自律制御ソフトウェアがシナリオのあるカテゴリについて前述の要件を満たすことができない場合、結果をさらに詳細に評価して、自律制御ソフトウェアを必要に応じて微調整する方法を決定することができる。シナリオを再実行し、自律制御ソフトウェアを必要に応じて評価することができる。
【００６５】
検証モデルは、１回のみ、検証モデルが更新されるたびに、定期的に、または自律制御ソフトウェアがシナリオを通じて実行されるたびに、シナリオを通じて実行され得る。自律制御ソフトウェアがシナリオを通じて実行されるたびにシナリオを通じて検証モデルを実行することにより、自律車両制御ソフトウェアを検証するときに、検証モデルへの任意の最近の変更が考慮されることが保証される。
【００６６】
図８は、コンピューティングデバイス４１０のプロセッサなどの１つ以上のプロセッサによって実行され得る自律制御ソフトウェアを検証するためのいくつかの例の例示的なフロー図８００を含む。例えば、ブロック８１０において、運転シナリオを通じて自律制御ソフトウェアが１回実行されて、自律制御ソフトウェアのシナリオの結果が観察される。ブロック８２０において、運転シナリオを通じて検証モデルが複数回実行されて、複数回の各々について検証モデルのシナリオの結果が観察される。ブロック８３０において、自律制御ソフトウェアの制御下にある仮想車両が１回の間に別の対象物と衝突したことを、自律制御ソフトウェアのシナリオの結果が示すかどうかに基づいて、自律制御ソフトウェアが運転シナリオに合格したかどうかが判定される。ブロック８４０において、検証モデルの制御下にある仮想車両が複数回のうちのいずれか１回で別の対象物と衝突したことを、検証モデルのシナリオの結果が示すかどうかに基づいて、検証モデルが運転シナリオに合格したかどうかが判定される。ブロック８５０において、判定に基づいて、自律制御ソフトウェアが検証される。
【００６７】
特段の記述がない限り、前述の代替例は、相互に排他的ではないが、独自の利点を達成するために様々な組み合わせで実施することができる。上述した特徴のこれらおよび他の変形ならびに組み合わせは、特許請求の範囲によって定義される主題から逸脱せずに利用され得るため、前述の実施形態の説明は、特許請求の範囲によって定義された主題を限定するものとしてではなく、例示するものとしてみなされるべきである。加えて、本明細書に説明された実施例、ならびに「など」、「含む」などとして表現された語句の提供は、特許請求の範囲の主題を特定の例に限定するものと解釈されるべきではなく、むしろ、それらの例は、多くの可能性のある実施形態のうちの単なる１つを例示することが意図されている。さらに、異なる図面中の同じ参照番号は、同じまたは類似の要素を識別することができる。
【図１】
2021509646.tif 000005
【図２】
2021509646.tif 000006
【図３】
2021509646.tif 000007
【図４】
2021509646.tif 000008
【図５】
2021509646.tif 000009
【図６】
2021509646.tif 000010
【図７】
2021509646.tif 000011
【図８】
2021509646.tif 000012
【国際調査報告】
2021509646.tif 000013
2021509646.tif 000014