(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-11-25
(45)【発行日】2022-12-05
(54)【発明の名称】自律車両のソフトウェア検証
(51)【国際特許分類】
B60W 60/00 20200101AFI20221128BHJP
G08G 1/00 20060101ALI20221128BHJP
G06F 11/36 20060101ALI20221128BHJP
【FI】
B60W60/00
G08G1/00 A
G06F11/36 164
(21)【出願番号】P 2020533203
(86)(22)【出願日】2019-01-08
(86)【国際出願番号】 US2019012713
(87)【国際公開番号】W WO2019136447
(87)【国際公開日】2019-07-11
【審査請求日】2020-08-12
(32)【優先日】2018-01-08
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】317015065
【氏名又は名称】ウェイモ エルエルシー
(74)【代理人】
【識別番号】100079108
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100126480
【氏名又は名称】佐藤 睦
(72)【発明者】
【氏名】モーリー,フランクリン
(72)【発明者】
【氏名】バーオー,オマー
(72)【発明者】
【氏名】フェアフィールド,ナサニエル
(72)【発明者】
【氏名】クレーリー,マイナー
【審査官】佐々木 佳祐
(56)【参考文献】
【文献】特開2017-173309(JP,A)
【文献】米国特許出願公開第2017/0270236(US,A1)
【文献】特開2003-034200(JP,A)
【文献】米国特許出願公開第2018/0341571(US,A1)
【文献】米国特許出願公開第2016/0368492(US,A1)
【文献】米国特許出願公開第2008/0091352(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
B60W 10/00-10/30
B60W 30/00-60/00
G08G 1/00-99/00
G06F 11/36
(57)【特許請求の範囲】
【請求項1】
自律運転モードで車両を操作するための自律制御ソフトウェアを検証する方法であって、
1つ以上のプロセッサによって、運転シナリオを通じて前記自律制御ソフトウェアを1回実行して、前記自律制御ソフトウェアの前記
運転シナリオの結果を観察することと、
前記1つ以上のプロセッサによって、前記運転シナリオを通じて検証モデルを複数回実行して、前記複数回の各々について前記検証モデルの前記
運転シナリオの結果を観察することと、
前記1つ以上のプロセッサによって、前記自律制御ソフトウェアの制御下にある仮想車両が前記1回の間に対象物と衝突したことを、前記自律制御ソフトウェアの前記
運転シナリオの前記結果が示すかどうかに基づいて、前記自律制御ソフトウェアが前記運転シナリオに合格したかどうかを判定することと、
前記1つ以上のプロセッサによって、前記検証モデルの制御下にある仮想車両が前記複数回のうちのいずれか1回で対象物と衝突したことを、前記検証モデルの前記
運転シナリオの結果が示すかどうかに基づいて、前記検証モデルが前記運転シナリオに合格したかどうかを判定することと、
前記1つ以上のプロセッサによって、前記判定に基づいて、前記自律制御ソフトウェアを検証することと、を含む、方法。
【請求項2】
前記運転シナリオは、運転シナリオの所与のカテゴリの複数の運転シナリオのうちの1つであり、前記自律制御ソフトウェアを検証することは、前記所与のカテゴリの前記複数の運転シナリオのすべてにわたって前記自律制御ソフトウェアおよび前記検証モデルの性能を評価することに基づく、請求項1に記載の方法。
【請求項3】
前記1つ以上のプロセッサによって、前記自律制御ソフトウェアが合格したいくつかの前記運転シナリオを、複数回のうち少なくとも1回合格したいくつかのシナリオと比較することをさらに含み、前記自律制御ソフトウェアを検証することは前記比較にさらに基づく、請求項2に記載の方法。
【請求項4】
前記運転シナリオを通じて前記検証モデルを複数回実行することは、所定の1組のタイプの応答において識別された応答のタイプごとに1回前記
運転シナリオを実行することを含む、請求項1に記載の方法。
【請求項5】
前記複数回の各々は、前記複数のうちの第1のものはブレーキ応答を含み、前記複数のうちの第2のものは右旋回の応答を含み、前記複数のうちの第3のものは左旋回の応答を含み、前記複数のうちの第4のものはブレーキおよび右旋回の応答を含み、前記複数のうちの第5のものはブレーキおよび左旋回の応答を含むように、前記検証モデルの前記応答が異なることに対応する、請求項1に記載の方法。
【請求項6】
前記自律制御ソフトウェアが前記運転シナリオに合格したかどうかを判定することは、前記対象物との任意の衝突の重症度レベルにさらに基づく、請求項1に記載の方法。
【請求項7】
前記自律制御ソフトウェアを検証することは、前記重症度レベルにさらに基づく、請求項6に記載の方法。
【請求項8】
前記検証モデルが前記運転シナリオに合格したかどうかを判定することは、前記対象物との任意の衝突の重症度レベルにさらに基づく、請求項1に記載の方法。
【請求項9】
前記自律制御ソフトウェアを検証することは、前記重症度レベルにさらに基づく、請求項8に記載の方法。
【請求項10】
前記1つ以上のプロセッサによって、前記
運転シナリオ内で前記仮想車両および前記対象物がそれぞれの現在の軌跡をたどり続けた場合に、前記仮想車両が前記対象物と衝突する前の前記
運転シナリオ内の所定の秒数に対応する、前記自律制御ソフトウェアまたは前記検証モデルに前記
運転シナリオ内の前記仮想車両の制御を与えるためのハンドオーバー時間を識別することをさらに含み、前記ハンドオーバー時間は、前記運転シナリオを通じて前記検証モデルを実行し、前記運転シナリオを通じて前記自律制御ソフトウェアを実行するために使用される、請求項1に記載の方法。
【請求項11】
前記ハンドオーバー時間は、前記運転シナリオを通じて前記自律制御ソフトウェアを実行するために使用される、請求項10に記載の方法。
【請求項12】
前記1つ以上のプロセッサによって、前記ハンドオーバー時間の確認のために、前記
運転シナリオおよび前記ハンドオーバー時間を人間オペレータに提供することをさらに含む、請求項10に記載の方法。
【請求項13】
自律運転モードで車両を操作するための自律制御ソフトウェアを検証するためのシステムであって、
運転シナリオを通じて前記自律制御ソフトウェアを1回実行して、前記自律制御ソフトウェアの前記
運転シナリオの結果を観察し、
前記運転シナリオを通じて検証モデルを複数回実行して、前記複数回の各々について前記検証モデルの前記
運転シナリオの結果を観察し、
前記自律制御ソフトウェアの制御下にある仮想車両が前記1回の間に対象物と衝突したことを、前記自律制御ソフトウェアの前記
運転シナリオの前記結果が示すかどうかに基づいて、前記自律制御ソフトウェアが前記運転シナリオに合格したかどうかを判定し、
前記検証モデルの制御下にある仮想車両が前記複数回のうちのいずれか1回で対象物と衝突したことを、前記検証モデルの前記
運転シナリオの結果が示すかどうかに基づいて、前記検証モデルが前記運転シナリオに合格したかどうかを判定し、
前記判定に基づいて、前記自律制御ソフトウェアを検証する、ように構成された1つ以上のプロセッサを有する1つ以上のコンピューティングデバイスを含む、システム。
【請求項14】
前記運転シナリオは、運転シナリオの所与のカテゴリの複数の運転シナリオのうちの1つであり、前記自律制御ソフトウェアを検証することは、前記所与のカテゴリの前記複数の運転シナリオのすべてにわたって前記自律制御ソフトウェアおよび前記検証モデルの性能を評価することに基づく、請求項13に記載のシステム。
【請求項15】
前記1つ以上のプロセッサは、前記自律制御ソフトウェアが合格したいくつかの前記運転シナリオを、複数回のうち少なくとも1回合格したいくつかのシナリオと比較するようにさらに構成されており、前記自律制御ソフトウェアを検証することは前記比較にさらに基づく、請求項14に記載のシステム。
【請求項16】
前記1つ以上のプロセッサは、前記対象物との任意の衝突の重症度レベルにさらに基づいて、前記自律制御ソフトウェアが前記運転シナリオに合格したかどうかを判定するようにさらに構成されている、請求項13に記載のシステム。
【請求項17】
前記1つ以上のプロセッサは、前記対象物との任意の衝突の重症度レベルにさらに基づいて、前記検証モデルが前記運転シナリオに合格したかどうかを判定するようにさらに構成されている、請求項13に記載のシステム。
【請求項18】
前記1つ以上のプロセッサは、前記
運転シナリオ内で前記仮想車両および前記対象物がそれぞれの現在の軌跡をたどり続けた場合に、前記仮想車両が前記対象物と衝突する前の前記
運転シナリオ内の所定の秒数に対応する、前記自律制御ソフトウェアまたは前記検証モデルに前記
運転シナリオ内の前記仮想車両の制御を与えるためのハンドオーバー時間を識別するようにさらに構成されており、前記ハンドオーバー時間は、前記運転シナリオを通じて前記検証モデルを実行し、前記運転シナリオを通じて前記自律制御ソフトウェアを実行するために使用される、請求項13に記載のシステム。
【請求項19】
前記自律制御ソフトウェアをさらに含む、請求項13に記載のシステム。
【請求項20】
前記検証モデルをさらに含む、請求項13に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2018年1月8日に出願された、米国特許出願第15/864,239号の継続出願であり、その開示は参照により本明細書に組み込まれる。
【背景技術】
【0002】
ある場所から別の場所への乗客または物品の輸送を支援するために、例えば人間の運転手を必要としない車両などの自律車両を使用することができる。そのような車両は、乗客が集荷や目的地など何らかの初期入力を提供し得る完全な自律モードで動作する場合があり、車両は、例えば、車両、歩行者、自転車乗用者など他の道路利用者に応答し、相互作用することを必要とする可能性のあるルートを決定し、それをたどることによって、それ自体をその場所に操作する。これらの車両が自律モードで動作するために使用する自律制御ソフトウェアは、車両が他の対象物と相互作用しているエリアで車両を制御するために、そのようなソフトウェアが実際に使用される前に、テストされ、検証されることが重要である。
【発明の概要】
【0003】
本開示の一態様は、自律運転モードで車両を操作するための自律制御ソフトウェアを検証する方法を提供する。この方法は、運転シナリオを通じて自律制御ソフトウェアを1回実行して、自律制御ソフトウェアのシナリオの結果を観察することと、運転シナリオを通じて検証モデルを複数回実行して、複数回の各々について検証モデルのシナリオの結果を観察することと、自律制御ソフトウェアの制御下にある仮想車両が1回の間に別の対象物と衝突したことを、自律制御ソフトウェアのシナリオの結果が示すかどうかに基づいて、自律制御ソフトウェアが運転シナリオに合格したかどうかを判定することと、検証モデルの制御下にある仮想車両が複数回のうちのいずれか1回で別の対象物と衝突したことを、検証モデルのシナリオの結果が示すかどうかに基づいて、検証モデルが運転シナリオに合格したかどうかを判定することと、判定に基づいて、自律制御ソフトウェアを検証することと、を含む。
【0004】
一例では、運転シナリオは、運転シナリオの所与のカテゴリの複数の運転シナリオのうちの1つであり、自律制御ソフトウェアを検証することは、所与のカテゴリの複数の運転シナリオのすべてにわたって自律制御ソフトウェアおよび検証モデルの性能を評価することに基づく。この例では、方法は、自律制御ソフトウェアが合格したいくつかの運転シナリオを、複数回のうち少なくとも1回合格したいくつかのシナリオと比較することもさらに含み、自律制御ソフトウェアを検証することは比較にさらに基づく。別の例では、運転シナリオを通じて検証モデルを複数回実行することは、所定の1組の一般的なタイプの応答において識別された応答のタイプごとに1回シナリオを実行することを含む。別の例では、複数回の各々は、複数のうちの第1のものはブレーキ応答を含み、複数のうちの第2のものは右旋回の応答を含み、複数のうちの第3のものは左旋回の応答を含み、複数のうちの第4のものはブレーキおよび右旋回の応答を含み、複数のうちの第5のものはブレーキおよび左旋回の応答を含むように、検証モデルの応答が異なることに対応する。別の例では、自律制御ソフトウェアが運転シナリオに合格したかどうかを判定することは、別の対象物との任意の衝突の重症度レベルにさらに基づく。この例では、自律制御ソフトウェアを検証することは、重症度レベルにさらに基づく。別の例では、検証モデルが運転シナリオに合格したかどうかを判定することは、別の対象物との任意の衝突の重症度レベルにさらに基づく。この例では、自律制御ソフトウェアを検証することは、重症度レベルにさらに基づく。別の例では、方法は、シナリオ内で両方の対象物がそれぞれの現在の軌跡をたどり続けた場合に、仮想車両が別の対象物と衝突する前のシナリオ内の所定の秒数に対応する、自律制御ソフトウェアまたは検証モデルにシナリオ内の仮想車両の制御を与えるためのハンドオーバー時間を識別することも含み、ハンドオーバー時間は、運転シナリオを通じて検証モデルを実行し、運転シナリオを通じて自律制御ソフトウェアを実行するために使用される。この例では、ハンドオーバー時間は、運転シナリオを通じて自律制御ソフトウェアを実行するために使用される。加えて、または代替的に、方法は、ハンドオーバー時間の確認のために、シナリオおよびハンドオーバー時間を人間オペレータに提供することも含む。
【0005】
本開示のさらなる態様は、自律運転モードで車両を操作するための自律制御ソフトウェアを検証するためのシステムを提供する。このシステムは、運転シナリオを通じて自律制御ソフトウェアを1回実行して、自律制御ソフトウェアのシナリオの結果を観察し、運転シナリオを通じて検証モデルを複数回実行して、複数回の各々について検証モデルのシナリオの結果を観察し、自律制御ソフトウェアの制御下にある仮想車両が1回の間に別の対象物と衝突したことを、自律制御ソフトウェアのシナリオの結果が示すかどうかに基づいて、自律制御ソフトウェアが運転シナリオに合格したかどうかを判定し、検証モデルの制御下にある仮想車両が複数回のうちのいずれか1回で別の対象物と衝突したことを、検証モデルのシナリオの結果が示すかどうかに基づいて、検証モデルが運転シナリオに合格したかどうかを判定し、判定に基づいて、自律制御ソフトウェアを検証する、ように構成された1つ以上のプロセッサを有する1つ以上のコンピューティングデバイスを含む。
【0006】
一例では、運転シナリオは、運転シナリオの所与のカテゴリの複数の運転シナリオのうちの1つであり、自律制御ソフトウェアを検証することは、所与のカテゴリの複数の運転シナリオのすべてにわたって自律制御ソフトウェアおよび検証モデルの性能を評価することに基づく。この例では、1つ以上のプロセッサは、自律制御ソフトウェアが合格したいくつかの運転シナリオを、複数回のうち少なくとも1回合格したいくつかのシナリオと比較するように構成され、自律制御ソフトウェアを検証することは比較にさらに基づく。別の例では、1つ以上のプロセッサは、別の対象物との任意の衝突の重症度レベルにさらに基づいて、自律制御ソフトウェアが運転シナリオに合格したかどうかを判定するようにさらに構成されている。別の例では、1つ以上のプロセッサは、別の対象物との任意の衝突の重症度レベルにさらに基づいて、検証モデルが運転シナリオに合格したことを判定するようにさらに構成されている。別の例では、1つ以上のプロセッサは、シナリオ内で両方の対象物がそれぞれの現在の軌跡をたどり続けた場合に、仮想車両が別の対象物と衝突する前のシナリオ内の所定の秒数に対応する、自律制御ソフトウェアまたは検証モデル制御を与えるためのハンドオーバー時間を識別するようにさらに構成されており、ハンドオーバー時間は、運転シナリオを通じて検証モデルを実行し、運転シナリオを通じて自律制御ソフトウェアを実行するために使用される。別の例では、システムは、自律制御ソフトウェアも含む。別の例では、システムは、検証モデルも含む。
【図面の簡単な説明】
【0007】
【
図1】典型的な実施形態に係る例示的な車両の機能図である。
【
図3】本開示の態様に係る車両の例示的な外観図である。
【
図4】本開示の態様に係る例示的なシステムの絵図である。
【
図5】本開示の態様に係る、
図4のシステムの機能図である。
【
図6】本開示の態様に係るシナリオの例示的な表現である。
【
図7】本開示の態様に係る可能な応答の例示的な図である。
【
図8】本開示の態様に係る例示的なフロー図である。
【発明を実施するための形態】
【0008】
概要
この技術は、自律運転モードで車両を制御するための自律制御ソフトウェアを検証することに関する。自律制御ソフトウェアを検証または部分的に検証するための1つのアプローチは、自律制御ソフトウェアが自律車両を、理想的な人間の運転手が異なるタイプの状況で同じブレーキ、加速、およびステアリング機能を備えた車両を制御するのがより優れているとは言わないまでも同じくらい優れているかどうかを評価することを伴い得る。これを達成するために、自律制御ソフトウェアは、シミュレーションまたはシナリオの結果に基づいて、この理想的な人間の運転手の検証モデルと比較され得る。人間は一般に予測不可能であるので、1組の特性を確立することによって、検証モデルが生成され得る。これらの特性は、刺激、知覚反応時間、動きまたは「移動」時間、および制御の性能に関連し得る。言い換えると、検証モデルは、理想的な人間が、衝突を回避するために、どのように気づき、反応し、最終的に(例えば、ブレーキをかける、旋回する、または他の何らかのアクションをとることによって)応答するかについての検証モデルを含み得る。この点について、検証モデルは、実際には多くの状況で人間の運転手と同等であるかそれ以上に実行することが予想され得る。
【0009】
シナリオは、不適切に挙動している別の対象物への応答をテストする状況として生成され得る。この点について、シナリオは、単に車両が走り回るだけでなく、車両および任意の他の対象物の安全のために車両の応答が重要である状況である。
【0010】
人または自律車両によって観察された実際の運転イベントから、または人間オペレータによって想像される状況から、異なるシナリオが生成され得る。各シナリオの重要な特徴は、「ハンドオーバー時間」、または自律制御ソフトウェアおよび検証モデルにシナリオ内の車両の制御が与えられた時間である。ハンドオーバー時間は、そのシナリオの状況に応じてシナリオごとに自動的に選択され、その後、人間オペレータによって確認または手動調整されてもよい。人間によるレビューを伴うハンドオーバー時間のためにより単純な検証モデルを使用すると、不要な複雑さおよび計算が削減され、大きいデータセットに対してより一貫した結果を提供することができる。
【0011】
次に、性能を評価するために、シナリオを通じて自律制御ソフトウェアおよび検証モデルが実行され得る。自律制御ソフトウェアは、衝突がない場合、または衝突があり、傷害の可能性が非常に低い場合、シナリオに「合格」する可能性がある。検証モデルの性能を評価するとき、検証モデルは、複数の異なる応答の各々の下で同じシナリオを実行し得る。検証モデルが複数の異なる応答のうちのいずれか1つを使用して合格した場合、検証モデルは、そのシナリオに合格したと見なされ得る。加えて、シナリオに合格するための要件は、検証モデルと比較して自律制御ソフトウェアでは異なる場合がある。例えば、要件は、検証モデルよりも自律制御ソフトウェアの方が厳しい場合がある。
【0012】
次に、検証モデルと比較して自律制御ソフトウェアの性能を評価するために、シナリオの結果が比較され得る。一例では、自律制御ソフトウェアは、検証モデルと少なくとも同じ数のシナリオに合格するなど、いくつかの要件を満たす必要がある場合がある。自律制御ソフトウェアがシナリオのすべてのカテゴリについてこれらの要件を満たすことができる場合、自律制御ソフトウェアは、検証モデルに関して検証されたと見なされ得る、または、他の検証プロセスも使用されている場合は検証モデルに関して少なくとも部分的に検証されたと見なされ得る。言い換えると、要件を満たすことは、自律制御ソフトウェアが、自律制御ソフトウェアおよび検証モデルが実行されたシナリオの検証モデルと少なくとも同じくらい優れていることを示し得る。この点について、自律制御ソフトウェアは、シミュレーションだけでなく、実際の運転状況での使用に十分であると考えられ得る。代替的に、自律制御ソフトウェアがあるシナリオグループについてこれらの要件を満たすことができない場合、結果をさらに詳細に評価して、自律制御ソフトウェアを必要に応じて微調整する方法を決定することができる。
【0013】
本明細書で説明する特徴は、自律車両の自律制御ソフトウェアを検証する安全で効果的な方法を提供し得る。例えば、自律制御ソフトウェアは、実際の人の生命および財産を危険にさらすことなく数百ないし数千ものシナリオでテストできるだけでなく、自律制御ソフトウェアが実際に「安全」であることを確認するためのベンチマークと比較することもできる。加えて、これらのシナリオを使用すると、各シナリオを手動で作成し、実行するのにかかるのが数か月ではなく、何千ものテストを数時間で実行できるので、自律制御ソフトウェアの評価が大幅に加速する可能性がある。さらに、シナリオは、安全性が常に保証されているわけではない状況で安全性についての高い基準を提供し、単にそのような応答を観察してそれらが有効かどうかを「推測」するのではなく、自律制御ソフトウェアの応答を評価するためのベンチマークを提供する。そのようなテストがないと、検証されていない自律制御ソフトウェアを使用した人や財産への傷害のリスクが高すぎる可能性がある。
【0014】
例示的なシステム
図1に示されるように、本開示の一態様による車両100は、様々な構成要素を含む。本開示のいくつかの態様は、特定のタイプの車両に関連して特に有用であるが、車両は、限定はしないが、乗用車、トラック、オートバイ、バス、レクリエーション用車両などを含む任意のタイプの車両でよい。車両は、1つ以上のプロセッサ120、メモリ130、および汎用コンピューティングデバイスに典型的に存在する他のコンポーネントを含むコンピューティングデバイス110などの1つ以上の制御コンピューティングデバイスを有し得る。
【0015】
メモリ130は、1つ以上のプロセッサ120によってアクセス可能である情報を記憶し、その情報には、プロセッサ120によって実行または別様に使用され得る命令134およびデータ132が含まれる。メモリ130は、プロセッサによってアクセス可能である情報を記憶することができる任意のタイプのメモリであってもよく、それらには、コンピューティングデバイス可読媒体、またはハードドライブ、メモリカード、ROM、RAM、DVD、もしくは他の光ディスク、ならびに他の書き込み可能および読み取り専用メモリなどの電子デバイスを使って読み取ることができるデータを記憶する他の媒体が含まれる。システムおよび方法は、上記の異なる組み合わせを含んでもよく、それによって、命令およびデータの様々な部分が、様々なタイプの媒体に記憶される。
【0016】
命令134は、プロセッサにより直接的に(マシンコードなど)または間接的に(スクリプトなど)実行される任意の一連の命令であってもよい。例えば、命令は、コンピューティングデバイス可読媒体上のコンピューティングデバイスコードとして記憶されてもよい。その点について、「ソフトウェア」、「命令」、および「プログラム」という用語は、本明細書では、互換的に使用され得る。命令は、プロセッサによる直接処理のためのオブジェクトコード形式で、または要求に応じて解釈されるか、もしくは予めコンパイルされる独立したソースコードモジュールのスクリプトもしくはコレクションを含む、任意の他のコンピューティングデバイス言語で記憶されてもよい。命令の機能、方法、およびルーチンについては、以下でさらに詳細に説明される。
【0017】
データ132は、命令134に従ってプロセッサ120によって検索、記憶、または修正されてもよい。例えば、特許請求の範囲の主題は、いかなる特定のデータ構造にも限定されないが、データは、コンピューティングデバイスレジスタ内に、すなわち、複数の異なるフィールドおよびレコードを有する表、XMLドキュメント、またはフラットファイルとしてリレーショナルデータベース内に記憶されてもよい。データはまた、任意のコンピューティングデバイス可読形式でフォーマットされてもよい。
【0018】
1つ以上のプロセッサ120は、市販されているCPUなど任意の従来のプロセッサであってもよい。代替的に、1つ以上のプロセッサは、ASICまたは他のハードウェアベースプロセッサなどの専用デバイスであってもよい。
図1は、プロセッサ、メモリ、およびコンピューティングデバイス110の他の要素を同じブロック内にあるものとして機能的に例示しているが、プロセッサ、コンピューティングデバイス、またはメモリは、実際には、同じ物理的な筐体内に記憶されていてもいなくてもよい、複数のプロセッサ、コンピューティングデバイス、またはメモリを含むことができることは、当業者により、理解されるであろう。例えば、メモリは、ハードドライブ、またはコンピューティングデバイス110の筐体とは異なる筐体内に設置された他の記憶媒体であってもよい。したがって、プロセッサまたはコンピューティングデバイスへの言及は、並行に動作してもしなくてもよいプロセッサまたはコンピューティングデバイスまたはメモリの集合体への言及を含むことを理解されたい。
【0019】
コンピューティングデバイス110は、上述したプロセッサおよびメモリ、ならびにユーザ入力150(例えば、マウス、キーボード、タッチスクリーン、および/またはマイクロフォン)、および様々な電子ディスプレイ(例えば、スクリーン、または情報を表示するように動作可能である任意の他の電気デバイスを有するモニタ)など、コンピューティングデバイスと接続して通常使用されるすべてのコンポーネントであってもよい。この例では、車両は、内部の電子ディスプレイ152、ならびに1つ以上のスピーカー154を含み、情報または音響映像体験を提供する。この点について、内部の電子ディスプレイ152は、車両100の車内に位置付けられてもよく、コンピューティングデバイス110によって使用されて、車両100内の乗員に情報を提供してもよい。
【0020】
コンピューティングデバイス110はまた、以下に詳細に説明するクライアントコンピューティングデバイスおよびサーバコンピューティングデバイスなど他のコンピューティングデバイスとの通信を容易にするために、1つ以上の無線ネットワーク接続156を含んでもよい。無線ネットワーク接続には、ブルートゥース、ブルートゥースローエネルギー(LE)、携帯電話接続などの短距離通信プロトコル、ならびにインターネット、World Wide Web、イントラネット、仮想プライベートネットワーク、ワイドエリアネットワーク、ローカルネットワーク、1つ以上の企業に専用の通信プロトコルを使用するプライベートネットワーク、イーサネット、WiFi、およびHTTPを含む様々な構成およびプロトコル、ならびに上記の様々な組み合わせが含まれてもよい。
【0021】
一例では、コンピューティングデバイス110は、自律運転コンピューティングシステムの制御コンピューティングデバイスであってもよく、または車両100に組み込まれていてもよい。この自律運転コンピューティングシステムは、以下でさらに説明するように、メモリ130の自律制御ソフトウェアに従って車両100の動きを制御するために、車両の様々なコンポーネントと通信することが可能であり得る。例えば、
図1に戻ると、コンピューティングデバイス110は、メモリ130の命令134に従って、車両100の動き、速度などを制御するために、減速システム160、加速システム162、ステアリングシステム164、シグナリングシステム166、ルーティングシステム168、測位システム170、知覚システム172、および動力システム174(すなわち、車両のエンジンまたはモーター)など、車両100の様々なシステムと通信することができる。また、これらのシステムは、コンピューティングデバイス110の外部にあるものとして示されているが、実際には、これらのシステムもまた、車両100を制御するための自律運転コンピューティングシステムとして再度、コンピューティングデバイス110の中に組み込まれてもよい。
【0022】
一例として、コンピューティングデバイス110は、車両の速度を制御するために、車両のブレーキ、アクセルペダル、および/またはエンジンもしくはモーターなど、減速システム160および/または加速システム162の1つ以上のアクチュエータと相互作用し得る。同様に、ステアリングホイール、ステアリングシャフト、ならびに/またはラックアンドピニオンシステムのピニオンおよびラックなど、ステアリングシステム164の1つ以上のアクチュエータは、車両100の方向を制御するために、コンピューティングデバイス110によって使用され得る。例えば、乗用車またはトラックなどの車両100が道路上で使用するために構成されている場合、ステアリングシステムは、車両の向きを変えるために車輪の角度を制御するための1つ以上のアクチュエータを含んでもよい。シグナリングシステム166は、例えば、必要に応じて方向指示器またはブレーキライトを点灯させることによって、車両の意図を他の運転手または車両に知らせるために、コンピューティングデバイス110によって使用され得る。
【0023】
ルーティングシステム168は、ある場所までのルートを決定し、それをたどるために、コンピューティングデバイス110によって使用され得る。この点について、ルーティングシステム168および/またはデータ132は、例えば、車道の形状および標高、車線境界線、交差点、横断歩道、速度制限、交通信号、建物、標識、リアルタイム交通情報、植生、または他のそのような対象物および情報を識別する高精密地図などの詳細な地図情報を記憶し得る。
【0024】
図2は、交差点202および204を含む、車道の区分に関する地図情報200の例である。この例では、地図情報200は、車線境界線210、212、214、信号機220、222、横断歩道230、歩道240、一時停止標識250、252、および譲れの標識260の形状、場所、ならびに他の特性を識別する情報を含む。本明細書では、地図情報は、画像ベースの地図として図示されているが、地図情報は、完全に画像ベースである必要はない(例えば、ラスタ)。例えば、地図情報は、1つ以上の道路グラフ、または道路、車線、交差点、およびこれらの特徴間の接続などの情報のグラフネットワークを含み得る。各特徴は、グラフデータとして記憶されてもよく、地理的場所などの情報と関連付けられてもよく、いずれにせよ、他の関連する特徴にリンクされ、例えば、一時停止標識は、道路や交差点などにリンクされてもよい。いくつかの例では、関連付けられたデータは、道路グラフのグリッドベースのインデックスを含んで、ある道路グラフの特徴の効率的な検索を可能にし得る。
【0025】
測位システム170は、地図上または地球上の車両の相対的または絶対的位置を判定するために、コンピューティングデバイス110によって使用され得る。例えば、測位システム170は、デバイスの緯度、経度、および/または標高の位置を判定するためのGPS受信機を含むことができる。レーザベースの位置決めシステム、慣性支援GPS、またはカメラベースの位置決めなどの他の位置特定システムもまた、車両の場所を特定するために使用することができる。車両の場所は、緯度、経度、および標高などの絶対的な地理的位置だけでなく、多くの場合、より少ないノイズでその絶対的な地理的位置を判定することができる、車両のすぐ周りにある他の自動車に対する場所などの相対的な位置情報を含むことができる。
【0026】
測位システム170はまた、車両の方向および速度、またはそれらの変化を決定するための加速度計、ジャイロスコープ、または別の方向/速度検出デバイスなど、コンピューティングデバイス110と通信する他のデバイスを含んでいてもよい。単なる例として、加速デバイスは、重力の方向、または重力に対して垂直な平面に対する車両の縦揺れ、偏揺れ、または横揺れ(またはそれらの変化)を判定することができる。このデバイスはまた、速度の増減、およびそのような変化の方向を追跡することもできる。本明細書で説明したように、場所および向きのデータのデバイスの提供は、コンピューティングデバイス110、他のコンピューティングデバイス、および上記の組み合わせに自動的に提供され得る。
【0027】
知覚システム172はまた、他の車両、道路内の障害物、交通信号、標識、樹木などの車両の外部にある対象物を検出するために1つ以上のコンポーネントを含む。例えば、知覚システム172は、レーザ、ソナー、レーダー、カメラ、および/またはコンピューティングデバイス110が処理することができるデータを記録する任意の他の検出デバイスを含んでもよい。車両がミニバンなどの乗客車両である場合には、ミニバンは、屋根または他の都合のよい場所に搭載されるレーザまたは他のセンサを含んでもよい。例えば、
図3は、車両100の例示的な外観図である。この例では、屋上にある筐体310およびドーム状筐体312は、ライダーセンサ、ならびに各種のカメラおよびレーダーユニットを含んでもよい。さらに、車両100の前端部に設置された筐体320、ならびに車両の運転手側および助手席側の筐体330,332は、各々、ライダーセンサを記憶することができる。例えば、筐体330は、運転手ドア360の前部に設置されている。車両100はまた、車両100の屋根の上にさらに設置されたレーダーユニットおよび/またはカメラのための筐体340、342も含む。追加のレーダーユニットおよびカメラ(図示せず)は、車両100の前端および後端に、および/または屋根もしくは屋上にある筐体310に沿った他の位置に設置され得る。
【0028】
コンピューティングデバイス110は、様々な構成要素を制御することによって車両の方向および速度を制御してもよい。例として、コンピューティングデバイス110は、詳細な地図情報およびルーティングシステム168からのデータを使用して、車両を目的地に完全に自律的にナビゲートし得る。コンピューティングデバイス110は、測位システム170を使用して車両の場所を判定し、知覚システム172を使用して、対象物を検出し、その場所に安全に到着するために必要である場合、対象物に対して応答することができる。そうするために、コンピューティングデバイス110は、車両を、(例えば、加速システム162により、エンジンに提供される燃料または他のエネルギーを増加させることによって)加速させ、(例えば、エンジンに供給される燃料を低減させ、ギヤを切り替え、および/または減速システム160によりブレーキをかけることによって)減速させ、(例えば、ステアリングシステム164により、車両100の前輪または後輪の向きを変えることによって)方向を変更させ、(例えば、シグナリングシステム166の方向指示器を点灯することによって)係る変更を伝えさせてもよい。このため、加速システム162および減速システム160は、車両のエンジンと車両の車輪との間に様々な構成要素を含む、動力伝達装置の一部であり得る。再び、これらのシステムを制御することによって、コンピューティングデバイス110はまた、車両を自律的に操縦するために、車両の動力伝達装置を制御してもよい。
【0029】
車両100のコンピューティングデバイス110はまた、輸送サービスの一部であるコンピューティングデバイスならびに他のコンピューティングデバイスなど他のコンピューティングデバイスとの間で情報を受信または転送することもできる。
図4および
図5は、それぞれ、例示的なシステム400の絵図および機能図であり、システムは、ネットワーク460を介して接続された複数のコンピューティングデバイス410、420、430、440、および記憶システム450を含む。システム400は、車両100、および車両100と同じまたは同様に構成され得る車両100A、100Bも含む。簡潔にするため、いくつかの車両およびコンピューティングデバイスのみを図示しているが、典型的なシステムは、これよりもはるかに多くのものを含み得る。
【0030】
図4に示されるように、コンピューティングデバイス410、420、430、440の各々は、1つ以上のプロセッサ、メモリ、データ、および命令を含むことができる。そのようなプロセッサ、メモリ、データ、および命令は、コンピューティングデバイス110の1つ以上のプロセッサ120、メモリ130、データ132、および命令134と同様に構成されてもよい。
【0031】
ネットワーク460および仲介ノードは、ブルートゥース、ブルートゥースLE、インターネット、World Wide Web、イントラネット、仮想プライベートネットワーク、ワイドエリアネットワーク、ローカルネットワーク、1つ以上の企業に専用の通信プロトコルを使用するプライベートネットワーク、イーサネット、WiFi、およびHTTP、ならびに上記の様々な組み合わせなどの短距離通信プロトコルを含む様々な構成およびプロトコルを含んでもよい。そのような通信は、モデムおよび無線インターフェースなどの、他のコンピューティングデバイスとの間でデータを送受信することができる任意のデバイスによって容易に行われ得る。
【0032】
一例では、1つ以上のコンピューティングデバイス110は、他のコンピューティングデバイスとの間でデータを受信、処理、および送信する目的で、ネットワークの異なるノードと情報を交換する、例えば、負荷分散サーバファームなど、複数のコンピューティングデバイスを有する1つ以上のサーバコンピューティングデバイスを含んでもよい。例えば、1つ以上のコンピューティングデバイス410は、ネットワーク460を介して、車両100のコンピューティングデバイス110、または車両100Aの同様のコンピューティングデバイス、ならびにコンピューティングデバイス420、430、440と通信することが可能である1つ以上のサーバコンピューティングデバイスを含んでもよい。例えば、車両100、100Aは、サーバコンピューティングデバイスによって様々な場所に発送することができる車両群の一部であり得る。この点について、サーバコンピューティングデバイス410は、車両100および車両100Aなどの車両が自律運転モードで動作するために使用し得る自律制御ソフトウェアを検証するために使用できる検証コンピューティングシステムとして機能し得る。加えて、サーバコンピューティングデバイス410は、ネットワーク460を使用して、コンピューティングデバイス420、430、440のディスプレイ424、434、444などのディスプレイ上に、ユーザ422、432、442などのユーザに情報を送信および提示することができる。この点について、コンピューティングデバイス420、430、440は、クライアントコンピューティングデバイスと見なされてもよい。
【0033】
図4に示すように、各クライアントコンピューティングデバイス420、430、440は、ユーザ422、432、442が使用することを意図されたパーソナルコンピューティングデバイスであってもよく、1つ以上のプロセッサ(例えば、中央処理装置(CPU))、データおよび命令を記憶するメモリ(例えば、RAMおよび内蔵ハードドライブ)、ディスプレイ424、434、444などのディスプレイ(例えば、画面を有するモニタ、タッチスクリーン、プロジェクタ、テレビ、または情報を表示するように動作可能である他のデバイス)、およびユーザ入力デバイス426、436、446(例えば、マウス、キーボード、タッチスクリーン、またはマイクロフォン)を含む、パーソナルコンピューティングデバイスと接続して通常使用されるすべてのコンポーネントを有し得る。クライアントコンピューティングデバイスはまた、ビデオストリームを記録するためのカメラ、スピーカー、ネットワークインターフェースデバイス、およびこれらの要素を互いに接続するために使用されるすべての構成要素を含んでもよい。
【0034】
クライアントコンピューティングデバイス420、430、および440は、各々、フルサイズのパーソナルコンピューティングデバイスを含んでもよいが、代替的に、インターネットなどのネットワークを介してサーバとデータを無線で交換することが可能であるモバイルコンピューティングデバイスを含んでもよい。ほんの一例として、クライアントコンピューティングデバイス420は、携帯電話、または無線対応PDA、タブレットPC、ウェアラブルコンピューティングデバイスもしくはシステムなどのデバイス、またはインターネットもしくは他のネットワークを介して情報を取得することができるネットブックであってもよい。別の例では、クライアントコンピューティングデバイス430は、
図4に示されるように、腕時計として示されるウェアラブルコンピューティングシステムであってもよい。一例として、ユーザは、小型キーボード、キーパッド、マイクロフォンを使用して、カメラを用いた映像信号、またはタッチスクリーンを使用して、情報を入力し得る。
【0035】
いくつかの例では、クライアントコンピューティングデバイス440は、以下でさらに説明するように、シナリオの結果、ハンドオーバー時間、および検証情報をレビューするために管理者またはオペレータによって使用される操作ワークステーションであり得る。
図4および
図5には操作ワークステーション440が1つのみ示されているが、典型的なシステムには、任意の数のそのようなワークステーションが含まれてもよい。さらに、操作ワークステーションはデスクトップコンピュータとして図示されているが、操作ワークステーションは、ラップトップ、ネットブック、タブレットコンピュータなど様々なタイプのパーソナルコンピューティングデバイスを含み得る。
【0036】
メモリ130と同様に、記憶システム450は、ハードドライブ、メモリカード、ROM、RAM、DVD、CD-ROM、書き込み可能メモリ、および読み出し専用メモリなどの、サーバコンピューティングデバイス410によりアクセス可能である情報を記憶することができる、任意のタイプのコンピュータ化された記憶装置であり得る。さらに、記憶システム450は、データが、同じまたは異なる地理的位置に物理的に設置され得る複数の異なる記憶デバイス上に記憶される分散型記憶システムを含んでもよい。記憶システム450は、
図4および
図5に示すように、ネットワーク460を介してコンピューティングデバイスに接続されてもよく、かつ/またはコンピューティングデバイス110、410、420、430、440などのいずれかに直接接続されるか、もしくは組み込まれてもよい。
【0037】
記憶システム450は、以下でより詳細に説明されるように、様々なタイプの情報を記憶することができる。この情報は、本明細書で記載する特徴のうちのいくつかまたはすべてを実行するために、1つ以上のサーバコンピューティングデバイス410などのサーバコンピューティングデバイスによって検索または別様にアクセスされ得る。例えば、記憶システム450は、理想的な人間の運転手の予想される挙動を表す検証モデルを記憶してもよい。検証モデルは、1組の特性を確立することによって生成され得る。これらは、例えば、理想的な人間の運転手と同様に、足や手を動かして車両のブレーキング、加速、および/またはステアリングの挙動を変更することにより、視覚的または聴覚的刺激に反応するための応答時間に関する。検証モデルは、仮想車両の挙動方法を決定するための1組のルールも含み得る。これらのルールは、仮想車両の経路、仮想車両の速度、仮想車両が異なる対象物にどのように反応するかなどの挙動を定義し得る。1組の特性および1組のルールは、あたかも理想的な人間が仮想車両を制御しているかのように、検証モデルが仮想車両を制御する(すなわち、ブレーキ、旋回など)ことを可能にし得る。そのようなデータは、既存の人間の応答(または反応)の研究から入手でき、または実験を実行して実際の人間の挙動をテストすることから生成され得る。この点について、検証モデルは、実際には多くの状況で人間の運転手と同等であるかそれ以上に実行することが予想され得る。
【0038】
しかしながら、典型的な人間の運転手とは異なり、検証モデルは、(例えば、車両の死角または別の対象物の背後にあるため)隠れている対象物であっても、自律車両よりもその環境内でより多くの情報を知覚すると想定され得る。言い換えると、検証モデルの知覚は「完全」でさえあり、自律車両に予想されるものよりも優れている場合がある。これにより、検証モデルは、これ以上ないほどに超人間的な性能でありながら、少なくとも名目上の人間と同等の能力を持つことが可能であり得る。例えば、検証モデルの場合、反応時間や旋回などの運転挙動は、非常に人間に似ている可能性があり、知覚はほとんど「超人間的」であり得る。代替的に、検証モデルの知覚は、例えば約300フィートなど、ある距離までしか完全ではなく、それを超えると、検証モデルは完全ではないか、知覚がない場合がある。さらなる代替として、検証モデルの知覚は、特定の視野に制限されるか、または検証モデルの知覚は、典型的な人間の運転手の死角または閉塞されたエリアを含まない。もちろん、これらは単なる例であり、挙動や知覚を含むモデルの特徴は、人間の性能をより厳密にモデル化する、または超人間的である可能性がある。
【0039】
検証モデルに加えて、記憶システム450は、複数のシナリオを記憶することもできる。シナリオは、例えば、スピード違反、一時停止標識または赤信号無視、でたらめな運転など、不適切に挙動している別の対象物への応答をテストする状況として生成されてもよい。この点について、シナリオは、単に車両が走り回るだけでなく、車両の応答が車両および任意の他の対象物の安全のために重要である状況である。各シナリオは、道路の形状、場所、方向などの特性を定義する道路情報など、仮想車両の環境を定義する情報を含み得る。加えて、各シナリオは、車両、歩行者、自転車乗用者、植生、縁石、車線境界線、歩道、横断歩道、建物などの対象物の形状、場所、向き、速度などの対象物の特性を定義する対象物情報も含み得る。さらに、各シナリオは、仮想車両の形状、場所、向き、速度などを含む、車両100に対応する仮想車両の特性を含み得る。加えて、各シナリオの環境および他の対象物は、実世界のログデータ(例えば、車両100の知覚システム172などの知覚システムによって生成されたセンサーデータ)、シミュレーションで作成された純粋な合成対象物もしくはセンサーデータ、またはこれらの任意の組み合わせを含み得る。
【0040】
各シナリオは、「ハンドオーバー時間」または自律制御ソフトウェアおよび検証モデルにシナリオ内の仮想車両を制御する制御が与えられた時間と関連付けられ得る。ハンドオーバー時間は、そのシナリオの状況に応じて、シナリオごとに自動的に選択されてもよい。いくつかの事例では、ハンドオーバー時間は、例えば操作ワークステーション440を使用して、人間オペレータによってさらに確認または手動調整されてもよい。一例では、所与のシナリオについて、自律車両が、シナリオ内で、約5秒など、将来のある所定の期間に、車両、歩行者、自転車乗用者など、別の対象物と衝突する場合、これは、ハンドオーバー時間として選択されてもよい。この例は、自律車両と他の対象物の両方が現在の経路をたどり続けることを想定している(実際のシナリオではそうではない場合でも)。次に、このハンドオーバー時間は、妥当であると確認されるか、人間オペレータによって調整され得る。人間によるレビューを伴うハンドオーバー時間のためにより単純な検証プロセスを使用すると、不要な複雑さおよび計算が削減され、大きいデータセットに対してより一貫した結果を提供することができる。
【0041】
ハンドオーバー時間は、異なるアプローチを使用して決定されてもよい。例えば、ハンドオーバー時間は、人間の運転手が衝突を回避するために快適にブレーキをかけることができなくなった時点など、人間の運転手が挙動を停止する可能性が低い時点に対応し得る。代替的に、ハンドオーバー時間は、人間の運転手の知覚が完全ではなくなるか、または何らかの特定の閾値よりも低くなる時点に対応し得る。また別の例では、あるシナリオにより自律制御ソフトウェアが仮想車両の衝突を引き起こす場合、同じ状況での検証モデルのハンドオーバー時間は数秒早くなる可能性がある。もちろん、これらの例のいずれも、妥当であると確認されるか、人間オペレータによって調整され得る。
【0042】
さらなる例として、自律制御ソフトウェアの知覚または検証モデルに基づいて、ハンドオーバー時間を決定することができる。例えば、対象物が緊急応答を必要とするような挙動をしている場合でも、不完全な知覚を持つ検証モデルまたは自律制御ソフトウェアは、対象物をすぐに見たり観察したりしない可能性がある。したがって、ハンドオーバー時間は、検証モデルまたは自律制御ソフトウェアがその対象物を観察する、または実際に観察すべき時点に対応する場合がある。例えば、駐車中の車両の後ろから車道に歩行者が歩いて入ってくる場合、完全な知覚を持つ検証モデルは人に早く反応し始める可能性がある。その検証モデルまたは自律制御ソフトウェアは、歩行者が駐車中の車両の後ろにいても歩行していることを観察することができるからである。しかしながら、不完全な知覚を持つ検証モデルまたは自律制御ソフトウェアは、後で反応する可能性がある。その検証モデルまたは自律制御ソフトウェアは、駐車中の車両の後ろから出てくるまで歩行者を見たり観察したりすることができないからである。ハンドオーバー時間がオペレータによって手動で設定されるとき、オペレータは、例えば、人が駐車中の車両の後ろから出てくるときにハンドオーバー時間を設定することによって、不完全な知覚を手動でエンコードすることもできる。
【0043】
図6は、地図情報200に対応する道路の区分に関するシナリオの例600を提供する。この例では、交差点602および604は、それぞれ交差点202および204に対応する。この点、車線境界線210、612、614、信号機620、622、横断歩道630、歩道640、一時停止標識650、652、および譲れの標識660の形状、場所、ならびに他の特性は、車線境界線210、212、214、信号機220、222、横断歩道230、歩道240、一時停止標識250、252、および譲れの標識260の形状、場所、ならびに他の特性に対応する。
【0044】
例600では、車両100または車両100Aに対応する仮想自律車両610が交差点604に接近している。第2の仮想車両620も交差点604に接近している。このシナリオは、車両620が一時停止標識650を無視する可能性があるので、仮想車両620の「挙動が悪い」ことを含み得る。このシナリオでは、仮想自律車両610および仮想車両620が現在の速度で次の5秒間(すなわち、将来の所定の期間まで)継続した場合、仮想車両は互いに衝突することになる。したがって、例600は、ハンドオーバー時間のシナリオを表す。
【0045】
シナリオは、様々な方法でアレンジしてもよい。例えば、シナリオは、カテゴリにグループ化されているか、そうでなければカテゴリに関連付けられ、これらのカテゴリは、より大きいカテゴリグループに一緒にグループ化されてもよい。例えば、交差点の一時停止標識で右折するシナリオは、1つのカテゴリであり得る。別の例として、例600は、仮想車両が向きを変えずに交差点を通過している他のシナリオで1つのカテゴリにグループ化されてもよい。同様に、一時停止標識に関するすべてのカテゴリは、一時停止標識シナリオのカテゴリグループに一緒にグループ化され得る。加えて、所与のカテゴリまたはカテゴリグループ内のシナリオは各々、わずかに異なる。例えば、仮想自律車両および他の車両の速度および位置は、他の車両の挙動だけでなく、異なるシナリオにわたって変更されてもよい。曲がり角または交差点の形状も変更されてもよい。人または自律車両によって観察された実際の運転イベントから、または人間オペレータによって想像される状況から、異なるシナリオが生成され得る。シナリオをカテゴリにグループ化することにより、自律制御ソフトウェアが以下で説明するように十分に実行されない場合、自律制御ソフトウェアの問題がどこにあるかがより容易に明らかになる可能性がある。
【0046】
加えて、記憶システム450は、自律運転モードで車両を操作するために車両100などの車両によって使用される自律制御ソフトウェアを記憶することもできる。記憶システム450に記憶されたこの自律制御ソフトウェアは、まだ検証されていないバージョンであり得る。検証されると、自律制御ソフトウェアは、例えば、自律運転モードで車両100を制御するためにコンピューティングデバイス110によって使用されるように、車両100のメモリ130に送信されてもよい。
【0047】
例示的な方法
上述し、図に例示した動作に加えて、様々な動作が、ここで説明される。以下の動作は、以降に説明された正確な順序で実行される必要はないことを理解されたい。むしろ、様々なステップが、異なる順序で、または同時に処理されてもよく、ステップもまた、追加または省略されてもよい。
【0048】
車両100のコンピューティングデバイス110による使用のためにメモリ130に記憶される自律制御ソフトウェアを検証するために、検証モデル、シナリオ、およびハンドオーバー時間は各々構築され、または決定されなければならない。上記のように、検証モデルは、上述のように、1組の特性を使用して、サーバコンピューティングデバイス410などのサーバコンピューティングデバイス、および/または操作ワークステーション440など1つ以上の操作ワークステーションによって生成され得る。シナリオは、車両100または車両100Aなどの車両の実際の運転体験を使用し、上述のように、適切なハンドオーバー時間を決定して生成され得る。この情報は、上述のように、記憶システム450に記憶され得る。
【0049】
次に、サーバコンピューティングデバイス410は、記憶システム450に記憶された自律制御ソフトウェアを検証するために、記憶システム450にアクセスすることができる。例えば、サーバコンピューティングデバイス410は、性能を評価するために、カテゴリごと、カテゴリグループごとに、記憶システム450のシナリオを通じて、自律制御ソフトウェアおよび検証モデルの各々を実行し得る。一度に1つのカテゴリおよび/またはカテゴリグループを使用して自律制御ソフトウェアを検証することは、すべてのカテゴリのすべてのシナリオを一度に実行するのではなく、自律制御ソフトウェアをどのように改善できるかを識別する機会を提供し得る。例えば、自律制御ソフトウェアおよび検証ソフトウェアは、例600のシナリオ、および例600と同じカテゴリまたはカテゴリグループ内の任意の他のシナリオを通じて実行されてもよい。
【0050】
所与のシナリオを通じて自律制御ソフトウェアを実行すると、シナリオの詳細を使用してシミュレーションが生成され得る。例えば、必要に応じて、シナリオの環境および対象物は、知覚システム172などの知覚システムが、自律制御ソフトウェアに従って動作するであろう車両100のコンピューティングデバイス110に提供することが予想されるセンサーデータに変換され得る。代替的に、シナリオがセンサーデータをすでに含む場合、シナリオは単に「再生」され得る。いずれの場合でも、自律制御ソフトウェアは、自律制御ソフトウェアが実際に車両100上で実行されているかのようにシナリオを「体験」または処理する。言い換えれば、自律制御ソフトウェアは、シナリオのすべての詳細ではなく、知覚システム172がシナリオについて検出することができるであろう情報のみが提供される。例えば、例600に戻ると、サーバコンピューティングデバイス410は、自律制御ソフトウェアが、詳細な地図情報200、ならびに仮想自律車両610の知覚システムによって検出される任意の情報へのアクセスを与えられるように、シナリオを実行し得る。
【0051】
自律制御ソフトウェアは、仮想自律車両が従うべきシナリオごとに1つの応答のみを選択し得る。もちろん、自律制御ソフトウェアによって決定される応答は、そのソフトウェアのプログラミングに従って決定される。これらの応答の実際の特性は、例えば、仮想車両の機能(ブレーキ、加速、ステアリング制御など)や、自律車両ソフトウェアがそのような応答を実行する方法などを含む任意の数の変数によって決定され得る。したがって、シミュレーションは、選択された、またはむしろ決定されたタイプの応答が与えられると、シナリオの予想される結果を提供し得る。この予想される結果は、仮想自律車両の最終ポーズ、シナリオ内の任意の他の車両または対象物の最終ポーズ、応答時間、任意の対象物との衝突の有無などの情報を含み得る。
【0052】
次に、自律制御ソフトウェアの性能を評価するか、むしろ、自律制御ソフトウェアが所与のシナリオに「合格」したか「不合格」になったかを判定するために、予想される結果が使用され得る。例えば、自律制御ソフトウェアは、衝突がない場合、衝突はなく、仮想車両と別の対象物(衝突があった可能性がある)との間に少なくとも何らかの最小バッファ距離(約2フィートなど)がある場合、衝突はなく、車両が衝突を回避するために危険な操作(車道からの離脱、スピード違反、対向車線に向かっての運転、縦方向もしくは横方向への高加速やジャークの使用、または他の危険な操作など)を行う必要がなかった場合、衝突はなく、シナリオでの潜在的な衝突への反応を開始する反応時間が遅すぎない場合(シナリオに応じて一瞬、1秒、数秒を超えるなど)、衝突はあるが、傷害の可能性が非常に低い場合、または任意の他のそのような考慮事項の場合、シナリオに合格し得る。
【0053】
傷害の可能性の分析は、車両衝突の既知の保険数理技術および計算を使用して、予想される傷害の結果を決定し、定量化するために、仮装車両の衝突位置、衝突角度、ならびにまたは衝突時の仮装車両および仮装車両が衝突した対象物の速度など、所与のシナリオの結果の特性を使用して、衝突の属性を識別することを伴い得る。この点について、傷害の重症度のAIS分類(自動車医学促進協会発行)、または道路車両の機能安全に関するISO26262規格で定義されている重症度のクラスなどの傷害重症度システムを使用して、「合格」または「不合格」の基準を識別するのに役立つように、予想される傷害の結果を定量化することができる。例として、表2の重症度のクラスの定義を使用すると、S0またはS1の重症度レベルの衝突は「合格」と見なされ得る。他のすべての衝突は「不合格」と見なされ得る。下記の表1は、略式傷害スコアシステムの例示的な表現を提供し、表2は、前述のESレベルと表1のAISスコアコードとの間のマッピングを提供する。
【表1】
【表2】
【0054】
シナリオを通じて自律制御ソフトウェアを実行することに加えて、検証モデルを、シナリオを通じて実行して、自律制御ソフトウェアがシナリオに合格するかどうかを決定することもできる。しかしながら、検証モデルを、知覚システム172によってコンピューティングデバイス110に提供されるデータに限定するのではなく、検証モデルには、シナリオに関するすべての情報が提供される。この点について、検証モデルは、上記のように完全な知覚を有し、したがって、シナリオに関する自律制御ソフトウェアよりも多くの情報が提供される。代替的に、検証モデルの知覚は、上記の例のいずれかと同様に制限される場合がある。
【0055】
加えて、検証モデルの性能を評価するとき、検証モデルは、検証モデルの1組の特性および1組のルールを使用して、所定の1組の一般的なタイプの応答のすべてまたはサブセットの下で同じシナリオを実行し得る。言い換えると、検証モデルは、実際には、自律制御ソフトウェアに「取って代わる」。
図7の例700に例示されるように、これらの一般的な応答のカテゴリは、ブレーキング(経路Aによって表される)、右旋回(経路Bによって表される)、左旋回(経路Cによって表される)、ブレーキングおよび右旋回(経路Dによって表される)、またはブレーキングおよび左旋回(経路Eによって表される)を含み得る。他のタイプの応答は、何もしない(すなわち、加速/減速または方向を変更しない)、加速、または左または右旋回しながらの加速、または異なるレートでの旋回、ブレーキングまたは加速など、他のタイプの反応も含み得る。
【0056】
この場合も、検証モデルは、例えば、特定のシナリオまたはシナリオのカテゴリについて人間オペレータによって選択された、所定の1組のまたは所定のサブセットのそのような応答における異なる応答の各々を使用してシナリオを通じて実行される。言い換えると、例600のシナリオは、所定の1組が例700における可能な経路A~Eに対応する一般的なタイプの応答を含むと想定すると、シナリオは、5つの可能な経路の各々について1回実行される。この点について、検証モデルは、各シナリオでのブレーキング、右旋回、左旋回、ブレーキングと右旋回、またはブレーキングと左旋回を含む、所定の1組における各タイプの応答を試す機会を有する。
【0057】
この場合も、これらの応答の実際の特性は、例えば、仮想車両の機能(ブレーキング、加速、ステアリング制御など)、ならびに検証モデルの1組の特性および1組のルールに従って検証モデルがそのような応答を実行する方法を含む、任意の数の変数によって決定され得る。1組のルールは、いくつかのシナリオ、シナリオのカテゴリ、またはすべてのシナリオに対して調整または具体的に選択され得る。例えば、1組のルールは、モデルがあるシナリオにおいて他の対象物を無視するか、あるシナリオにおいてすべての対象物を等しく回避しようとするか、または他のタイプの対象物(縁石、中央分離帯など)よりもあるシナリオにおけるいくつかの対象物(人、自転車乗用者、または他の車両など)を回避しようとするかを定義し得る。これらの1組のルールは、例えば、仮想モデルが一定の速度を維持すべきかどうか、モデルが特定の速度を維持すべきかどうか(時速約25マイル)、またはモデルが自律制御ソフトウェアによって決定されたものと同じ速度計画を使用すべきかどうかなど、シナリオに応答する前の仮想車両の速度を定義してもよい。1組のルールは、シナリオに応答する前にモデルが特定のジオメトリに従うべきかどうか、モデルが常に同じジオメトリに従うかべきかどうか(例えば、常に直進するかどうか)、またはモデルが自律制御ソフトウェアによって決定されたものと同じジオメトリを使用すべきかどうかを定義することもできる。
【0058】
いくつかの場合には、検証モデルのあるタイプの応答の特定の特性、ならびに仮想車両の加速(横方向および前方)も、1組のルールによって定義され得る。例えば、検証モデルは、最初に非常に強くブレーキをかけ(減速)し始め、しかし、仮想車両があるレベルの減速または速度に達すると、検証モデルは、ゆっくりブレーキをかけ得るように、1組のルールまたはシナリオにおいてブレーキングの特定の傾斜をエンコードすることができる。
【0059】
例示的な所定の1組は、一般的なタイプの応答を5つしか含んでいないが、この1組は、何もしない(すなわち、加速/減速または方向を変更しない)、加速する、または左もしくは右旋回しながら加速するなど、異なるまたは他のタイプの応答を含んでいてもよい。別の例として、人間オペレータは、所定の1組の応答の全体またはサブセットを使用するのではなく、検証モデルを「最良の」挙動でエンコードしてもよく、検証モデルがシナリオを実行し、検証モデルに従って所与のシナリオに最良の応答を予測し、検証モデルは、常に、同じ応答を使用し(例えば、常にまっすぐ進み続ける)、または所与のシナリオについて自律車両ソフトウェアによって決定された同じ経路(すなわち、同じジオメトリ)を検証モデルがたどるが、検証モデルは、仮想車両の速度を変更する方法または変更するかどうかを決定してもよい。
【0060】
検証モデルが応答のうちの所与の1つを使用してシナリオに合格したか不合格になったかは、自律制御ソフトウェアの場合と同じまたは同様のルールを使用して決定され得る。一例として、検証モデルは、例えば、上記の例のように、衝突がない場合、衝突はなく、仮想車両と別の対象物との間に少なくとも何らかの最小バッファ距離がある場合、衝突はなく、車両が衝突を回避するために危険な操作を行う必要がなかった場合、衝突はなく、シナリオでの潜在的な衝突への反応を開始する反応時間が遅すぎない場合、のいずれかに基づいてシナリオに合格し得る。検証モデルが異なる応答のいずれか1つを使用してシナリオに合格した場合、検証モデルは、そのシナリオに合格したと見なされ得る。この点について、自律制御ソフトウェアは、検証モデルがテストされる5回ごとに1回テストされる。
【0061】
次に、検証モデルと比較して自律制御ソフトウェアの性能を評価するために、シナリオの結果が比較され得る。一例では、自律制御ソフトウェアは、検証モデルと少なくとも同じ数のシナリオに合格するなど、いくつかの要件を満たす必要がある場合がある。加えて、検証モデルと比較して、比較の結果と自律制御ソフトウェアのより有用な分析により大きな有用性を提供するために、所与のカテゴリまたはカテゴリグループの結果は、個々のシナリオの評価、集約またはグループ化したものによって、その所与のカテゴリまたはカテゴリグループの検証モデルと比較して、自律制御ソフトウェアがどのように実行されるかかを決定することによって評価され得る。例えば、カテゴリまたはカテゴリグループに「合格する」ために、自律制御ソフトウェアの結果が検証モデルの結果と比較され得る。
【0062】
一例として、所与のカテゴリに合格するために、自律制御ソフトウェアは、所与のカテゴリ内の検証モデルと同等であるかそれ以上の数のシナリオで衝突を回避する、それらのシナリオについて検証モデルによって達成された平均バッファ距離以上である所与のカテゴリのシナリオのすべてまたはサブセットにわたって平均バッファ距離を達成する、それらのシナリオについて検証モデルによって達成された潜在的な衝突への反応を開始するための平均反応時間以上である所与のカテゴリのシナリオのすべてまたはサブセットにわたって潜在的な衝突への反応を開始するための平均反応時間を達成する、検証モデルによって達成された平均性能メトリック以下である所与のカテゴリのシナリオのすべてまたはサブセットにわたって平均性能メトリック(横方向の最大加速または減速、縦方向の最大加速または減速、またはジャークなど)を達成する、それらのシナリオについて検証ソフトウェアが仮想車両に実行させる操作よりも安全またはより安全である、所与のカテゴリのシナリオのすべてまたはサブセットにわたって仮想車両に操作を実行させる、それらのシナリオの検証ソフトウェアよりも、所与のカテゴリのシナリオのすべてまたはサブセットにわたって、S2またはS3など、ある重症度レベル以上の衝突がない、の要件のうちの1つ以上を達成することが必要とされ得る。シナリオの所与のカテゴリの操作の「安全性」は、仮想車両によって実行される各タイプの操作(例えば、車線内にとどまる、車線から離れる、道路から離れるなど)にペナルティまたはスコア値を割り当て、自律制御ソフトウェアと検証モデルの両方の複数のシナリオにわたる合計スコアを合計することによって評価され得る。この例では、検証モードに対する自律制御ソフトウェアの性能を決定しする、またはむしろ、所与のカテゴリのシナリオについての自律制御ソフトウェアの結果が、所与のカテゴリのシナリオについての検証モデルの性能と同じくらいかそれよりも安全かどうかを決定するために、それらの合計スコアの値が比較されてもよい。上記のように、カテゴリおよびカテゴリグループ内のこの細分性は、自律制御ソフトウェアをどこでどのように改善できるかのよりよい理解を提供し得る。
【0063】
同様に、所与のカテゴリグループに合格するために、自律制御ソフトウェアは、所与のカテゴリのシナリオにわたって評価するのではなく、所与のカテゴリの前述の要件のうちの1つ以上を達成することが必要とされ、要件は、カテゴリまたはカテゴリグループ内のすべてのシナリオにわたって評価され得る。この一部として、このプロセスを簡略化するために、カテゴリグループのこれらの要件を評価するときに、カテゴリグループ内の複数のカテゴリの、衝突の数、平均バッファ距離、平均反応時間、平均性能メトリック、操作の安全性の合計スコア、ある重症度レベル以上の衝突の数などが追加または平均化され得る。この場合も、上記のように、カテゴリおよびカテゴリグループ内のこの細分性は、自律制御ソフトウェアをどこでどのように改善できるかのよりよい理解を提供し得る。
【0064】
自律制御ソフトウェアが、評価の実施方法に応じて、すべてのシナリオ、カテゴリ、および/またはカテゴリグループについて前述の要件を満たすことができる場合、自律制御ソフトウェアは、検証モデルに関して検証されたと見なされ得る、または他の検証プロセスも使用されている場合は検証モデルに関して少なくとも部分的に検証されたと見なされ得る。言い換えると、要件を満たすことは、自律制御ソフトウェアが、自律制御ソフトウェアおよび検証モデルが実行されたシナリオの検証モデルと少なくとも同じくらい優れていることを示し得る。代替的に、自律制御ソフトウェアがシナリオのあるカテゴリについて前述の要件を満たすことができない場合、結果をさらに詳細に評価して、自律制御ソフトウェアを必要に応じて微調整する方法を決定することができる。シナリオを再実行し、自律制御ソフトウェアを必要に応じて評価することができる。
【0065】
検証モデルは、1回のみ、検証モデルが更新されるたびに、定期的に、または自律制御ソフトウェアがシナリオを通じて実行されるたびに、シナリオを通じて実行され得る。自律制御ソフトウェアがシナリオを通じて実行されるたびにシナリオを通じて検証モデルを実行することにより、自律車両制御ソフトウェアを検証するときに、検証モデルへの任意の最近の変更が考慮されることが保証される。
【0066】
図8は、コンピューティングデバイス410のプロセッサなどの1つ以上のプロセッサによって実行され得る自律制御ソフトウェアを検証するためのいくつかの例の例示的なフロー
図800を含む。例えば、ブロック810において、運転シナリオを通じて自律制御ソフトウェアが1回実行されて、自律制御ソフトウェアのシナリオの結果が観察される。ブロック820において、運転シナリオを通じて検証モデルが複数回実行されて、複数回の各々について検証モデルのシナリオの結果が観察される。ブロック830において、自律制御ソフトウェアの制御下にある仮想車両が1回の間に別の対象物と衝突したことを、自律制御ソフトウェアのシナリオの結果が示すかどうかに基づいて、自律制御ソフトウェアが運転シナリオに合格したかどうかが判定される。ブロック840において、検証モデルの制御下にある仮想車両が複数回のうちのいずれか1回で別の対象物と衝突したことを、検証モデルのシナリオの結果が示すかどうかに基づいて、検証モデルが運転シナリオに合格したかどうかが判定される。ブロック850において、判定に基づいて、自律制御ソフトウェアが検証される。
【0067】
特段の記述がない限り、前述の代替例は、相互に排他的ではないが、独自の利点を達成するために様々な組み合わせで実施することができる。上述した特徴のこれらおよび他の変形ならびに組み合わせは、特許請求の範囲によって定義される主題から逸脱せずに利用され得るため、前述の実施形態の説明は、特許請求の範囲によって定義された主題を限定するものとしてではなく、例示するものとしてみなされるべきである。加えて、本明細書に説明された実施例、ならびに「など」、「含む」などとして表現された語句の提供は、特許請求の範囲の主題を特定の例に限定するものと解釈されるべきではなく、むしろ、それらの例は、多くの可能性のある実施形態のうちの単なる1つを例示することが意図されている。さらに、異なる図面中の同じ参照番号は、同じまたは類似の要素を識別することができる。