(57)【要約】ドメイン固有言語またはＳＤＬ（シナリオ記述言語）を使用して、環境内におけるオブジェクト（例えば、自律走行車）の相互作用をテストおよび検証するためのシミュレーションにおけるシナリオを迅速に列挙することができる。シミュレーションにおけるシナリオを、１つまたは複数のプリミティブを使用して定義する。プリミティブを使用して、インスタンス化されるためのオブジェクト（例えば、ボディサイズ、位置、向き、速度など）、および／またはシミュレーションにおいてオブジェクトによって実行される動作（時間間隔だけ待つ、目標位置、特定のオブジェクトに追従するなど）を定義する。ＳＤＬは、プリミティブを結合して組み合わせることによって、およびいくつかの実施例において、どのシナリオが作成されるかを、意味ある情報を提供する組み合わせに対応するそれらに制限することによって、多数のシナリオの簡単な作成を可能にする。加えて、ＳＤＬによって、特定のシナリオを地図内のすべての可能な位置にわたって自動的にインスタンス化することができるよう、インスタンス化が地図特徴について知らずにいることを可能にする。
2020502615.tif 000002
【特許請求の範囲】
【請求項１】
シミュレーション環境におけるシナリオを生成するためのコンピューターに実装される方法であって、
前記シナリオにおいてインスタンス化されるための少なくとも第１のプリミティブを定義する命令を受け取るステップであって、前記第１のプリミティブが自律走行車に対応する、ステップと、
前記第１のプリミティブに割り当てられる１つまたは複数の値に関連付けられた命令を受け取るステップと、
前記１つまたは複数の値に少なくとも部分的に基づいて、前記第１のプリミティブに関する順列のセットを作成するステップであって、各順列が前記１つまたは複数の値のうちの異なる値に関連付けられる、ステップと、
地図内において前記順列の各々をインスタンス化して複数のシナリオを生成するステップであって、各シナリオが前記順列のセットのうちの順列に対応する、ステップと、
前記複数のシナリオのうちのシナリオに関連付けられた情報を決定するステップであって、前記情報は、前記自律走行車に関連付けられた、前記シミュレーション環境において作成された前記シナリオを与えられた自律的コントローラーがどのように応答するかを記述する、ステップと
を含むことを特徴とするコンピューターに実装される方法。
【請求項２】
前記第１のプリミティブは、寸法の定義されたセット、姿勢、または前記シミュレーション環境において前記第１のプリミティブを描画するためのメッシュを有するもののうちの１つまたは複数に関連付けられることを特徴とする請求項１に記載のコンピューターに実装される方法。
【請求項３】
前記姿勢は、慣性座標系、地図ベースの座標系、または走路ベースの座標系によって定義されることを特徴とする請求項２に記載のコンピューターに実装される方法。
【請求項４】
前記第１のプリミティブは、前記第１のプリミティブが前記シナリオにおいてどのように振る舞うかを示すエンティティ挙動に関連付けられることを特徴とする請求項２に記載のコンピューターに実装される方法。
【請求項５】
前記命令は、前記第１のプリミティブと少なくとも第２のプリミティブとの間のアソシエーションを定義するシーケンスをさらに含み、前記シーケンスが逐次順に実行される多数のステップを含むことを特徴とする請求項１に記載のコンピューターに実装される方法。
【請求項６】
前記第２のプリミティブは、第２のエンティティに対応することを特徴とする請求項５に記載のコンピューターに実装される方法。
【請求項７】
前記第２のエンティティは、静的エンティティまたは動的エンティティであることを特徴とする請求項６に記載のコンピューターに実装される方法。
【請求項８】
前記第２のプリミティブは、条件、動作、障害、またはノイズに対応することを特徴とする請求項５に記載のコンピューターに実装される方法。
【請求項９】
シミュレーション環境におけるシナリオを生成するためのシステムであって、
１つまたは複数のプロセッサと、
前記１つまたは複数のプロセッサによって実行可能な命令を格納する１つまたは複数の非一時的なコンピューター読み取り可能な媒体であって、前記命令は、
前記シミュレーション環境における少なくとも１つのシナリオにおいてインスタンス化されるためのプリミティブセットを定義する命令を受け取ることと、
前記プリミティブセットのうちの個々のプリミティブ間のアソシエーションを定義する第１のシーケンスを受け取ることと、
前記シミュレーション環境内において前記第１のシーケンスをインスタンス化して第１のシナリオを生成することと、
前記第１のシナリオに関連付けられた情報を決定することであって、前記情報は、前記シミュレーション環境において作成された前記少なくとも１つのシナリオを与えられた自律的コントローラーがどのように応答するかを記述する、決定することと
を含む動作を実行するよう前記１つまたは複数のプロセッサをプログラムする、１つまたは複数の非一時的なコンピューター読み取り可能な媒体と
を備えたことを特徴とするシステム。
【請求項１０】
前記第１のシーケンスは、少なくとも１つのサブシーケンスを含むことを特徴とする請求項９に記載のシステム。
【請求項１１】
前記第１のシーケンスは、線形時相論理を使用して定義されることを特徴とする請求項９に記載のシステム。
【請求項１２】
前記動作は、
前記第１のシーケンスに関連付けられた直積を受け取ることであって、前記直積が２つ以上の変数、および前記２つ以上の変数のうちの各変数に関連付けられた２つ以上の可能な値を含み、前記２つ以上の変数のうちの各変数が前記プリミティブセットのうちのプリミティブに関連付けられる、受け取ることと、
前記２つ以上の変数のうちの各変数に関連付けられた前記２つ以上の可能な値の各可能な組み合わせを含む順列のセットを作成することと、
前記シミュレーション環境内において前記順列のセットのうちの各順列をインスタンス化することであって、各順列が新しいシナリオに対応する、インスタンス化することと、
新しい各シナリオについての結果を決定することであって、前記結果が成功または不成功である、決定することと
をさらに含むことを特徴とする請求項９に記載のシステム。
【請求項１３】
前記動作は、
前記プリミティブセットのうちの個々のプリミティブ間の異なるアソシエーションを定義する第２のシーケンスを受け取ることと、
前記シミュレーション環境内において前記第２のシーケンスをインスタンス化して第２のシナリオを生成することと
をさらに含むことを特徴とする請求項９に記載のシステム。
【請求項１４】
前記動作は、前記第１のシーケンスおよび前記第２のシーケンスを実質的に同時にインスタンス化することをさらに含むことを特徴とする請求項１３に記載のシステム。
【請求項１５】
前記第１のシナリオに関連付けられた情報を決定することは、前記シミュレーション環境において作成された前記少なくとも１つのシナリオを与えられた前記自律的コントローラーがどのように応答するかを検証することを含むことを特徴とする請求項９に記載のシステム。
【請求項１６】
前記第１のシナリオに関連付けられた情報を決定することは、前記シミュレーション環境において作成された前記少なくとも１つのシナリオを与えられた前記自律的コントローラーの作動空間を決定することを含むことを特徴とする請求項９に記載のシステム。
【請求項１７】
前記第１のシナリオに関連付けられた情報を決定することは、前記シミュレーション環境において作成された前記少なくとも１つのシナリオを与えられた前記自律的コントローラーがどのように応答するかを考慮して前記自律的コントローラーの作動または設計の少なくとも一方を改善するためのフィードバックを生成することを含むことを特徴とする請求項９に記載のシステム。
【請求項１８】
実行されたときに、１つまたは複数のプロセッサに、
少なくとも１つのシミュレートされるシナリオを生成するためのシーケンスの一部として、プリミティブの可能な組み合わせのサブセットを受け取ることと、
順列のセットを作成することであって、各順列が前記プリミティブの可能な組み合わせのサブセットからのプリミティブの１つの可能な組み合わせを含む、作成することと、
地図内において前記順列のセットのうちの各順列をインスタンス化することであって、各順列がシミュレートされるシナリオに対応する、インスタンス化することと、
各シミュレートされるシナリオについての結果を決定することであって、前記結果が成功または不成功である、決定することと
を含む動作を実行させる命令のセットを有することを特徴とする非一時的なコンピューター読み取り可能な媒体。
【請求項１９】
前記動作は、
前記順列のセットのうちの２つ以上の順列が同じ結果に関連付けられることを決定することと、
前記２つ以上の順列が冗長であることを決定することと、
将来のインスタンス化において前記２つ以上の順列のうちの各順列の代わりに前記２つ以上の順列のうちのただ１つの順列をインスタンス化することと
をさらに含むことを特徴とする請求項１８に記載の非一時的なコンピューター読み取り可能な媒体。
【請求項２０】
前記地図内において前記プリミティブの各順列をインスタンス化することは、実質的に同時に並列して実行されることを特徴とする請求項１８に記載の非一時的なコンピューター読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シナリオを生成する方法およびシステムに関し、より詳細には、シミュレーション環境における、シナリオを生成する方法およびシステムに関する。
【背景技術】
【０００２】
関連出願の相互参照
本ＰＣＴ国際出願は、２０１７年１月１３日に出願された「ＳＣＥＮＡＲＩＯ  ＤＥＳＣＲＩＰＴＩＯＮ  ＬＡＮＧＵＡＧＥ」と題する米国出願第１５／４０５６４９号明細書に関し、２０１６年１０月１４日に出願された米国仮出願第６２／４０８６４１号明細書の利益を主張し、内容全体が参照によって本明細書に組み込まれる。
【０００３】
指定された開始条件を与えられた環境におけるオブジェクト同士の相互作用を、一般に、シナリオと呼ぶことができる。システムの様々なパラメーター、例えばロバスト性などを、システムからの入力を与えられたシナリオの結果（すなわち、最終結果）に基づいて、カテゴライズすることができる。しばしば、特定のシナリオの物理的なテストまたは検証は、実行可能でも可能でもない。十分に単純なシナリオに対して、必要に応じて物理的な近似を含む、テストまたは検証の目的のために解析解を得ることができることが可能である。しかしながら、状況があまりに複雑になると、解析解は、実行可能でないことがある。上記の状況において、テストおよび検証は、シミュレーションの使用を通して行われる。
【発明の概要】
【０００４】
一実施例として、シミュレーションは、自律走行車のための操作ソフトウェアをテストするために使用されている。交通および歩行者の中でソフトウェアを安全にテストすることが不可能であるので、シミュレーションが必要である。加えて、まったく同じ条件を使用して、上記のテストを繰り返すことは、事実上不可能である。例えば、自律走行車が、安全上の懸念と繰り返すことができることとの両方のために、幹線道路上の酔っ払った運転手を何度も回避する状況を、正確に再現することは、ほぼ不可能であろう。さらにまた、物理的なテストは、また、テストをすることができるシナリオの実行可能な回数についての制限を提示する（例えば、数百万回、ある結果をテストして出すことは、実現可能でないことがある）。したがって、今述べたシミュレーションは、自律走行車が遭遇することがあり得るシナリオを正確に再生するために、世界および世界の中の障害物を再現することを試みる。
【図面の簡単な説明】
【０００５】
本明細書において説明される技法を、例として、同様の番号が同様の要素を示す、添付の図面を参照して、今から説明するものである。
【０００６】
【図１】シナリオ記述言語を使用してシナリオがどのように定義されるかを説明するブロック図の一例を例示する図である。
【図２】シナリオ記述言語を使用して作成することができるシナリオ例を示す図である。
【図３】描画されたシナリオ例を例示する図である。
【図４Ａ】シナリオ記述言語を使用してユーザーによって定義されるようなプリミティブを結合して組み合わせることによって作成される多くのシナリオのうち第１のシナリオ例を示す図である。
【図４Ｂ】図４Ａのように多くのシナリオのうち第２のシナリオ例を示す図である。
【図４Ｃ】図４Ａのように多くのシナリオのうち第３のシナリオ例を示す図である。
【図４Ｄ】図４Ａのように多くのシナリオのうち第４のシナリオ例を示す図である。
【図４Ｅ】図４Ａのように多くのシナリオのうち第５のシナリオ例を示す図である。
【図５】シナリオ記述言語を使用してシナリオを定義するためにおよび／またはシナリオ記述言語を使用して定義されたシナリオをシミュレートするために使用することができるコンピューティングシステムの例を例示する図である。
【図６】シミュレーション環境においてシナリオを構成する処理の例を例示する図である。
【図７】シナリオ記述言語を使用してユーザーによって定義されるようなプリミティブを結合して組み合わせることによって多数のシナリオを生成する処理の例を例示する図である。
【図８】有用な情報を提供するシナリオを決定し有用な情報を提供しない他のシナリオを取り除く処理の例を例示する図である。
【発明を実施するための形態】
【０００７】
以下の詳細な説明は、シミュレーションを構成する際に使用するドメイン固有言語を作成する技法に向けられる。説明される技術は、一般に、様々なシミュレーション環境に適用できることが可能であるが、簡潔にする目的のために、詳細な説明は、自動車を含む実施例に向けられる。上述したように、多くの産業が、テストおよび検証のために、シミュレーション環境を使用する。制限でない実施例として、シミュレーションを使用して、自律走行車上に実行されるソフトウェア（すなわち、自律的なコントローラー）を検証して、ソフトウェアが上記の自律走行車を安全に制御することができることを保証することができる。追加および／または代替の実施例において、シミュレーションを使用して、ソフトウェアに基づいて走行する自律走行車の制約について学習することができる。例えば、シミュレーションを使用して、路面状態、環境騒音、欠陥部品などを考慮して、自律走行車の作動空間（すなわち、自律的なコントローラーが自律走行車を効果的に制御するパラメーターのエンベロープ）を理解することができる。さらに、シミュレーションは、自律走行車の作動および設計を改善するためのフィードバックを生成するのに役立つことができる。例えば、いくつかの例において、シミュレーションは、自律的コントローラーにおいて必要とされる冗長性の量を決定するために、またはシミュレーションを通して学習されることに基づいて自律的コントローラーの挙動をどのように変更するかを決定するために、役立たせることができる。さらにまた、追加および／または代替の実施例において、シミュレーションは、自律走行車のハードウェア設計、例えば自律走行車上におけるセンサーの配置を最適化することなどの情報を提供するのに役立たせることができる。
【０００８】
テストおよび検証を実行するためにシミュレーション環境を作成する場合、様々および特定の実施例を用いて、環境を具体的に列挙することが可能である。上記の環境の各インスタンス化は、一意的であり、定義し得る。すべての可能なシナリオを手動で列挙することは、途方もない時間を必要とすることあり得るし、もしすべての可能なシナリオが構成されないならば、様々なシナリオが、未テストになり得る。加えて、多数のシナリオを記述することができるけれども、シナリオの追加があらゆる追加の役立つ情報を提供するという保証はない。例えば、交差点におけるシミュレートされる自動車の開始する位置の違いが増えていくことは、コンピューターコードの特定のセットを与えられるシナリオにおいて応答する自律走行車の能力について、あるとしても追加の大して役に立たない情報を提供するしかできない。
【０００９】
本明細書において説明される技法は、ユーザーに、シミュレートされるためのシナリオを、簡潔に、高水準に記述することできるようにするドメイン固有言語に向けられる。ドメイン固有言語は、シミュレーション環境においてシナリオをインスタンス化するために、コンピューティングシステムによって実行できることが可能である。一実施例において、ドメイン固有言語を使用して、役立ちそうにないシナリオを取り除くことができるよう、役立つシナリオの結果を定義することができる。こうして、ドメイン固有言語を使用して、どれが役立つ情報を提供するであろうかをシミュレートする、限られた数のシナリオを決定することができる。そして、役立つ情報を提供すると決定されたシナリオを、シミュレーション環境においてインスタンス化することができる。上記のドメイン固有言語は、検証およびテストのために役立つ情報を提供する特定のシナリオにわたって最適化することによって、計算の複雑性、メモリ要件、および処理時間を減らす。
【００１０】
少なくとも１つの実施例において、シミュレーション環境を、例えば地図など、環境と相互作用するプリミティブの使用を通して構成することができる。プリミティブは、制限はしないが、（静的か動的かのいずれかであることが可能である）エンティティ、エンティティ挙動、作動、条件、ノイズ、障害などを含むことができる。少なくとも１つの実施例において、シナリオは、地図と相互作用する１つまたは複数のプリミティブを含むことができる。いくつかの実施例において、エンティティを、座標系（例えば、２次元または３次元の座標系）、例えば、慣性座標系、走路に基づく座標系、または地図に基づく座標系などに関連付けることができて、エンティティの位置および／または速度を記述することができる。上記のシナリオを、ＳＤＦ（Ｓｃｅｎａｒｉｏ  Ｄｅｆｉｎｉｔｉｏｎ  Ｆｏｒｍａｔ）において列挙することができる。加えて、以下に詳細に説明するように、プリミティブを、線形時相論理を介して接続することができる。制限でない実施例として、ある寸法および速度を有しており、さらに、指定された寸法および速度を有するシミュレートされるテスト自律走行車の前に、車道に沿って予め決められた距離にあるよう位置付けされている１つのエンティティ、例えば、自動車として、１つのシナリオを、定義することができる。
【００１１】
上述したように、ＳＤＦは、無数のシナリオを列挙することが可能である。しかしながら、作成することができるシナリオの多くは、非物理的であるか、または他のシナリオと比較して、情報の利益を僅かに提供するかのいずれかである。例えば、シナリオを作成するために、プリミティブの未熟な使用は、プリミティブエンティティが互いに交わるシナリオをもたらすことができる。上記のシナリオは、非物理的であろう。加えて、上述したように、上のシナリオを開始する位置の変化が増えていくことは、他のシナリオと比較して、役立つデータを提供しないことがある。
【００１２】
以下に説明するように、ドメイン固有言語を使用して、コマンドをほとんど使用することなく、多数のシナリオを容易にインスタンス化することができるよう、高水準のシナリオを指定することができる。したがって、多数のシナリオを、環境に関連付けられたパラメーター空間を網羅的かつ効率的に探索することができる。少なくとも１つの実施例において、今述べたことは、シナリオのインスタンス化の間において相違だけを指定する必要があるよう、シナリオを「テンプレート化」することによって達成することができる。シナリオを作成するためのドメイン固有言語、またはＳＤＬ（シナリオ記述言語）の使用を通して、有用を提供するシナリオがインスタンス化されるよう、プリミティブシナリオを、容易に列挙することができる。少なくとも１つの実施例において、ＳＤＬは、高水準の定義セットを使用して環境におけるプリミティブの明記を可能にする、ドメイン固有言語である。いくつかの実施例において、ＳＤＬは、ユーザー定義されたやり方において、プリミティブを結合して組み合わることを可能にする。一実施例において、ＳＤＬの使用は、シミュレーションを介してテストされる実現可能な興味深いシナリオセットを提供する。
【００１３】
上述したように、プリミティブを、例えば地図内など、環境内においてインスタンス化することができる。少なくとも１つの実施例において、ＳＤＬは、例えば、地図のトポロジーまたは「セマンティック座標（ｓｅｍａｎｔｉｃ  ｃｏｏｒｄｉｎａｔｅｓ）」に関してプリミティブをインスタンス化することによって、地図座標とは独立したやり方において表現することができる場所に、自動的な地図上のインスタンス化を可能にする。制限でない実施例として、ＳＤＬにより、（ユーザーに、特定の２次元または３次元の座標を入力することを必要とするのとは対照的に）プリミティブのインスタンス化がＴ字路におけるものであることをユーザーが指定することを可能にする。地図のトポロジーを使用して高水準のシナリオを定義することによって、ユーザーは、地図について何も知る必要がない。加えて、例えば、交差点の種類に関してインスタンス化を定義することによって、与えられた種類のすべての交差点を、同様のプリミティブを用いて実質的に同時にインスタンス化することができる。ＳＤＬを使用すると、テストシナリオの簡潔な定義を有することが可能であり、コンピューターコードに、高度に読み取り可能であることを可能にし、地図データが更新されるたびに、テストシナリオの大規模なスイートの迅速な更新を可能にする。だから、ＳＤＬは、システムを開発するときユーザーに頻繁にテストを実行することを可能にするだけでなく、条件にわたる「網羅的で列挙的な」探索を実行することを可能にする。加えて、メモリおよび処理要件を、有用な情報を提供するシナリオにわたって反復することによる繰り返し処理を制限することによって、減らす。さらなる詳細は、図１〜８を参照して以下に提供する。
【００１４】
プリミティブ
上述したように、ＳＤＬは、プリミティブセットに基づいて構成される、高水準のシナリオを容易に定義することを可能にする。少なくとも１つの実施例において、プリミティブを、地図内など、環境内においてインスタンス化することができる。地図は、２次元または３次元であることが可能である。２次元および／または３次元の地図は、例えば、制限でないが、（例えば交差点などの）トポロジー、街路、山脈、道路、地形、および一般的な環境などの、環境についての情報を提供することが可能なあらゆる数のデータ構造であることが可能である。説明の目的のために、プリミティブは、シミュレーション環境の特定の側面を定義する。プリミティブの制限でない例は、座標系、条件、動作、エンティティ、エンティティ挙動、ノイズ、障害などを含む。
【００１５】
座標系を利用して、シナリオにおけるエンティティの位置および／または速さ（もしくは速度）を記述することができる。座標系は、慣性座標系、走路ベースの座標系、または地図ベースの座標系などを含むことができる。慣性座標系は、何らかの局所的または大域的な座標系に関する座標系であることが可能である。走路ベースの座標系は、例えば道路の断片などの走路上における何らかの位置に関する座標系であることが可能である。地図ベースの座標系は、上述したようなセマンティック座標を利用することができる。
【００１６】
少なくとも１つの実施例において、様々なプリミティブは、コンピューティングシステム上において実行可能なシミュレーションアプリケーションに命令を提供することができる。以下に説明するシミュレーションアプリケーションを、本明細書において、「シミュレーター」と呼ぶことができる。
【００１７】
少なくとも１つの実施例において、条件プリミティブは、条件プリミティブに関連付けられた条件が満たされるまで遅延させられる、何らかの動作の実行または他の何らかの条件の評価の実行を引き起こすことができる。条件プリミティブは、制限でないが、「ｗａｉｔ」条件、「ｗａｉｔ  ｆｏｒ」条件、「ｄｉｓｔａｎｃｅ  ｂｅｔｗｅｅｎ  ｏｒ  ｎｅａｒ」条件、「ｓｐｅｅｄ」条件、「ｉｎ  ｒｅｇｉｏｎ」条件などを含むことができる。加えて、および／または、代替えとして、「ｉｎｖｅｒｓｉｏｎ  ｍｏｄｉｆｉｅｒ」条件は、条件を反対にすることができる。さらに、条件は、プリミティブとしての多数の条件を組み合わせることができるよう、ブール演算子、例えば、制限でないが、ａｎｄ、ｏｒ、ｎｏｔ、ｘｏｒ、ｎｏｒ、ｎａｎｄなどを含むこともできる。以下に説明する条件の名前は、制限でなく、条件を、追加および／または代替の実施例において、同じ名前または異なる名前によって呼ぶことができることに注意すべきである。
【００１８】
「ｗａｉｔ」条件は、何らかの動作の実行または他の何らかの条件の評価の実行を、開始するまでに指定された時間間隔だけ遅延させるよう、シミュレーターに命令することができる。すなわち、時間間隔が経過すると、「ｗａｉｔ」条件を、満たすことができる。「ｗａｉｔ  ｆｏｒ」条件は、別の条件が満たされるまで、あらゆる動作をとらないよう、シミュレーターに命令することができる。すなわち、別の条件が満たされると、「ｗａｉｔ  ｆｏｒ」条件を、満たすことができる。
【００１９】
「ｄｉｓｔａｎｃｅ  ｂｅｔｗｅｅｎ  ｏｒ  ｎｅａｒ」条件は、２つのエンティティの間の距離が何らかのユーザー指定された値を下回るまで、何らかの動作の実行または他の何らかの条件の評価の実行を、遅延させるよう、シミュレーターに命令することができる。すなわち、指定されたエンティティ間の距離が距離の閾値以内になったと決定されると、「ｄｉｓｔａｎｃｅ  ｂｅｔｗｅｅｎ  ｏｒ  ｎｅａｒ」条件を、満たすことができる。少なくとも１つの実施例において、指定されたエンティティ間の距離が距離の閾値以内になると、２つのエンティティ間の距離が何らかのユーザー指定された値を下回ったことを示すブールシグナリング（Ｂｏｏｌｅａｎ  ｓｉｇｎａｌｉｎｇ）を、シミュレーターに伝えることができる。
【００２０】
「ｓｐｅｅｄ」条件は、エンティティの速さ（または速度）が指定された値よりも小さく（もしくは大きく）なるまで、または指定された値に達するまで、何らかの動作の実行または他の何らかの条件の評価の実行を遅延させるよう、シミュレーターに命令することができる。すなわち、エンティティの速さ（または速度）が指定された値よりも小さく（もしくは大きく）なると、または指定された値に達すると、「ｓｐｅｅｄ」条件を、満たすことができる。少なくとも１つの実施例において、エンティティの速さ（または速度）が指定された値よりも小さく（もしくは大きく）なると、または指定された値に達すると、エンティティの速さ（または速度）が指定された値よりも小さく（もしくは大きく）なったこと、または指定された値に達したことを示すブールシグナリングを、シミュレーターに伝えることができる。
【００２１】
「ｉｎ  ｒｅｇｉｏｎ」条件は、エンティティが指定された領域内にある間、何らかの動作の実行または他の何らかの条件の評価の実行を遅延させるよう、シミュレーターに命令することができる。すなわち、少なくともエンティティの一部が指定された領域に対応するシーン（例えば、環境）の空間の容積内にあることに基づいて、「ｉｎ  ｒｅｇｉｏｎ」条件を、満たすことができる。少なくとも１つの実施例において、少なくともエンティティの一部が指定された領域に対応するシーン（例えば、環境）の空間の容積内にあることに基づいて、エンティティが指定された領域内にあることを示すブールシグナリングを、シミュレーターに伝えることができる。
【００２２】
少なくとも１つの実施例において、動作プリミティブに対応する動作は、シーケンスのインスタンス化の間に遭遇すると、シミュレーターが実行することができる。動作は、トリガーをオンまたはオフにすることを含むことができる。さらにまた、動作は、例えば、テストの最後に、成功または失敗を識別することを含むことができる。少なくとも１つの実施例において、動作は、呼び出されるとシミュレーターに関連付けられたディスプレイにメッセージを提供するために、ログ（表示）メッセージを生成することを含むことができる。さらに、動作は、エンティティを作成および／または破壊すること、および／またはエンティティ（例えば、サイズ、形状、型など）を変更することを含むことができる。少なくとも１つの実施例において、動作は、遠隔操作の動作（すなわち、仮想オペレーターからコマンドを伝えること）を容易にすることを含むことができる。
【００２３】
少なくとも１つの実施例において、エンティティのプリミティブは、シーンのエンティティに対応することができる。エンティティの例は、自動車、歩行者、バイク、建物などを含むことができる。各エンティティは、与えられた寸法、型、姿勢、およびシミュレートされる環境におけるエンティティとして描画するためのメッシュに関連付けることができる。寸法は、エンティティの長さ、幅、および高さに対応することができる。エンティティの型は、エンティティが静的（動かない）でも動的（動く）でも示すことができる。静的なエンティティの例は、建物を含むことができる。動的なエンティティの例は、自動車、歩行者、バイクなどを含むことができる。
【００２４】
エンティティのプリミティブに関連付けられた姿勢は、座標系（例えば、慣性座標系、走路ベースの座標系、地図ベースの座標系など）における対応するエンティティの場所および／または向きを示すことができる。例えば、エンティティの姿勢を、座標（ｘ，ｙ）および角度オフセット（偏揺れ）を使用して、２次元慣性座標系において記述することができる。同様に、３次元座標系におけるエンティティの姿勢を、向き（横揺れ、縦揺れ、偏揺れ）だけでなく、座標（ｘ，ｙ，ｚ）により記述することができる。または、エンティティの姿勢を、走路ベースの座標系において、座標（ｓ，ｔ，［ｙａｗ＿ｏｆｆｓｅｔ］）を用いて記述することができ、ここで、「ｓ」は、走路の軌道に沿ったオフセットであり、「ｔ」は、走路の軌道と垂直のオフセットであり、ｙａｗ＿ｏｆｆｓｅｔは、走路に沿った走行の方向に関連する。地図ベースの座標系において、姿勢を、セマンティック座標によって定義することができる。セマンティック座標は、他の知られた姿勢に関するエンティティの姿勢に対応することができる。
【００２５】
エンティティ挙動のプリミティブは、エンティティが環境においてどのように振る舞うかを示すことができる。エンティティ挙動のプリミティブは、制限しないが、「止まる」挙動、「動く」挙動、「道路を辿る」挙動、「道路を横切る」挙動、「エンティティに追従する」挙動などを含むことができる。「止まる」挙動は、エンティティを動かすことを止めるよう、シミュレーターに示すことができる。「動く」挙動は、慣性座標に基づいてエンティティを動かすよう、シミュレーターに示すことができる。いくつかの実施例において、「動く」挙動は、速さ（または速度）に関連付けることができる。「道路を辿る」挙動は、地図内の道路に沿ってエンティティを動かし続けるよう、シミュレーターに示すことができる。いくつかの実施例において、「道路を辿る」挙動は、もしエンティティが交差点に接近したならば、エンティティをどのようにナビゲートするかを（すなわち、どの分岐を選ぶかを）シミュレーターに示すことができる。いくつかの実施例において、「道路を辿る」挙動は、速さ（または速度）に関連付けることができる。「道路を横切る」挙動は、地図の道路を横方向に横切ってエンティティを動かすよう、シミュレーターに示すことができる。いくつかの実施例において、「道路を横切る」挙動は、速さ（または速度）に関連付けることができる。「エンティティに追従する」挙動は、第２のエンティティに追従するよう第１のエンティティを動かすべきであることを、シミュレーターに示すことができる。少なくとも１つの実施例において、「エンティティに追従する」挙動は、速さ（または速度）、および第１のオブジェクトと第２のオブジェクトとの間の距離であるオフセット値に関連付けることができる。
【００２６】
上述したエンティティ挙動の名前は、制限でなく、追加および／または代替の実施例において、エンティティ挙動を、同じ名前または異なる名前によって呼ぶことができること注意すべきである。さらにまた、代替の実施例において、エンティティ挙動を、それ自体のプリミティブの代わりにエンティティのプリミティブに、マッピングする、またはその他のやり方により関連付けることができる。
【００２７】
ノイズは、環境におけるガウス雑音または他の遮蔽を表すことができる。すなわち、ノイズプリミティブは、シミュレートされる環境において特定のノイズを生じるよう、シミュレーターに示すことができる。
【００２８】
障害は、エンティティおよび／または環境に関連付けられた不具合を表すことができる。例えば、制限でない実施例として、障害は、エンティティに関連付けられたセンサーの不具合、エンティティに関連付けられたタイヤの不具合、またはエンティティに関連付けられた別のコンポーネントの不具合を表すことができる。障害プリミティブは、シミュレートされる環境においてそれぞれの障害を生じるよう、シミュレーターに示すことができる。
【００２９】
前述の段落は、座標系、条件、動作、エンティティ、エンティティ挙動、ノイズ、障害などを含む、プリミティブの制限でない実施例を説明したが、本明細書において説明されるようなシナリオを生成するために、追加および／または代替のプリミティブを使用することができることに注意すべきである。
【００３０】
シナリオ記述言語
図１は、一実施例における、ＳＤＬを用いてシナリオがどのように生成されるかを大まかに例示するブロック図１００である。示すように、プリミティブ１１０は、エンティティ１１２と、動作１１４と、条件１１６と、他のあらゆるプリミティブ型１１８（例えば、エンティティ挙動、ノイズ、障害など）を含むことができる。シナリオは、シナリオ記述言語１２０を使用して、高水準に定義することができる。シナリオ記述言語１２０は、前述のプリミティブ１１０に基づいてシナリオの容易な作成を可能にする。シナリオ記述言語１２０は、ユーザーに、１つまたは複数のプリミティブ１１０についての仕様を定義することを可能にする。例えば、ユーザーは、エンティティ挙動をエンティティ１１２に割り当てることによりエンティティのある速さ（または速度）を指定するだけでなく、ある寸法、姿勢を有するエンティティ１１２を（例えば、走路座標、慣性座標、またはセマンティック座標を使用して）定義することもできる。少なくとも１つの実施例において、少なくとも１つのプリミティブを、「自律走行車」として指定することができ、自律的なコントローラーに関連付けられて、シミュレーションの出力が上記の自律的コントローラーによって制御されるだろう自律走行車の挙動を検証するようにすることができる。
【００３１】
加えて、シナリオ記述言語１２０は、例えば、線形時相論理を使用して、あるプリミティブを互いにどのように関連付けるかを、ユーザーが指定することを可能にする。一実施例において、ユーザーは、シーケンスを指定することによって、プリミティブ間のアソシエーションを定義する。シーケンスは、多数のステップを含み、シミュレーターによって逐次順に実行することができる。少なくとも１つの実施例において、シーケンスは、シーケンスの１つのステップが別のシーケンスのステップであるよう、互いに入れ子にすることができる。制限でない実施例として、シーケンスは、「ｗａｉｔ  ｆｏｒ」条件と、後続する「ｗａｉｔ」条件と、後続する「追従」挙動を含むことができる。
【００３２】
シナリオ記述言語１２０は、ユーザーによって定義されたやり方において組み合わされるプリミティブ１１０を使用して、１つまたは複数のシナリオ１２２ａ〜１２２ｎを作成することができる。プリミティブ１１０が各シナリオ１２２ａ〜１２２ｎのために組み合わされるやり方を、上述したように、線形時相論理によって定義することができる。少なくとも１つの実施例において、各シナリオ１２２ａ〜１２２ｎを、例えば結果１２４ａ〜１２４ｎなどの結果に関連付けることができる。結果は、シミュレーション環境において作成されたシナリオが与えられると、自律的コントローラーがどのように応答すべきかを示すことができる。各々の結果を使用して、自律的コントローラーが、シミュレーション環境において、作成されたシナリオが与えられた結果に矛盾しない応答（例えば、成功）か、結果に矛盾する応答（例えば、失敗）かをするのを、決定することができる。
【００３３】
高水準のシナリオ１２２ａ〜１２２ｎの各々を、シミュレーションにおいて、プロセッサ（例えば、ＧＰＵ（グラフィックス処理ユニット）など）を使用して、上記のシミュレーションを実行する多数のコンピューターを使用して、または組み合わせて、実質的に同時および／または並列に実行することができる。だから、多くの結果を、実質的に同時に生成することができる。
【００３４】
図２は、ユーザーが作成することができる例示的なシナリオ２００のブロック図を例示する。例示的なシナリオ２００は、図１を参照して上述したシナリオ１２２ａ〜１２２ｎのうちいずれか１つに対応することができる。開始位置２１０を、図２に示すが、上記の開始位置２１０を、定義する必要はない。シナリオ２００の開始時に、ユーザーは、シミュレーターによってインスタンス化されるための１つまたは複数のプリミティブ２２０を指定および定義することができる。すなわち、ユーザーは、シナリオのプリミティブ２２０を定義する命令を提供することができる。図２に例示する例において、上記のプリミティブは、試験自動車２２２と、観察自動車２２６とを含む。試験自動車２２２を、サイズ、交差点に関する位置、速さ（または速度）、動きの方向（時計回り（ＣＷ））などを有するとして定義することができる。試験自動車２２２は、プリミティブ２２４として表される挙動（「交差点に向かう」）に関連付けることができる。さらに、観察自動車２２６を、サイズ、交差点に関する位置、速さ（または速度）、動きの方向（反時計回り（ＣＣＷ））などを有するとして定義することができる。一連の接続として示すが、プリミティブ２２０を、あらゆる順においてインスタンス化すること、または実質的に同時にインスタンス化することができる。
【００３５】
さらに例示するように、ひとたびインスタンス化されると、シミュレーターに、シーケンス２２８を実行するように命令することができる。上述したように、シーケンス２２８は、線形時相論理を使用して、プリミティブ２２０間のアソシエーションを定義することができる。プリミティブ２２０およびシーケンス２２８は、図１を参照して上述したシナリオ記述言語１２０に対応することができる、シナリオ記述言語２３０によって定義することができる。シーケンス２２８は、オプションとして、シーケンス開始２３２を有することができる。上記のシーケンス開始２３２は、シーケンス２２８が開始されようとしていることを、シミュレーターに示すことができる。制限でない実施例において、シーケンス２２８を、「ｗａｉｔ  ｆｏｒ」条件２３４、「ｗａｉｔ」条件２３６、および「エンティティに追従する」挙動２３８として定義することができる。上記のシーケンス２２８に関連付けられた命令は、最初に試験自動車２２２が交差点に接近するのを待ち、１秒待ち、次に試験自動車２２２が観察自動車２２６に追従するよう、シミュレーターに命令する。
【００３６】
図３は、シミュレーターにおいて実行されるだろう、図２において定義されたシナリオ例３００を示す。示すように、大きい方のブロックは、例えば地図などの環境に位置付けられた、試験自動車２２２を表し、小さい方のブロックは、観察自動車２２６を表す。ブロックの上方の線３２０は、試験自動車２２２の動きを表す。示すように、試験自動車２２２は、シーケンス２２８によって規定されたように、交差点３１０に接近し、待ち、次に、観察自動車２２６に追従し始める。
【００３７】
直積
上の実施例は、どのようにＳＤＬによりユーザーが単一のシナリオを容易に指定することができるようにするかを示したが、さらに、ＳＤＬは、ユーザーによって、より高水準の（すなわち、より一般的な）記述を与えられた多数のシナリオを、ユーザーに、即座に生成することができるようにする。高水準のユーザー記述に基づく多数のシナリオの今述べた作成は、直積と呼ばれる。直積は、テストシナリオを生成するために組み合わされる値を定義する、任意の個数の名づけられた引数を受け入れる。名づけられた各引数は、変数に対応することができる。変数の制限でない実施例は、道路上の車線における位置、時間、路面状態などを含むことができる。いくつかの実施例において、変数は、プリミティブに関連付けることができる。すなわち、プリミティブは、異なるシナリオを生成するために変化させることができる、いくつかの側面に関連付けることができる。名づけられた各引数は、対応する変数についての可能な値のリストを受け取る。少なくとも１つの実施例において、可能な値のリストの可能な値は、可能な値の範囲であることが可能である。そして、値のすべての組み合わせに対して割り当てられたパラメーターを保有する反復変数が、割り当てられる。各反復を、より特定的なシナリオに関連付けることができ、各シナリオを、テストおよび検証のためのシミュレーションにおける使用に対して出力することができる。
【００３８】
式１を、上述した直積の制限でない実施例として、以下に提供する。  
式１
パラメーター（変数１＝［値１，値２］，変数２＝［値３，値４］）
【００３９】
式１において、パラメーター（）は、直積に対応する。変数１および変数２は、変数の例である。直積は、上で説明されたように、任意の数の変数を有することができる。各変数は、１つまたは複数の可能な値を含むことができる。式１において、値１および値２は、変数１のための可能な値であり、値３および値４は、変数２のための可能な値である。シミュレーターは、値の異なる組み合わせに基づいて、異なるシナリオを生成することができる。すなわち、シミュレーターは、可能な値からなる各可能な組み合わせの順列を作成することができる。例えば、表１は、式１の直積に基づいてシナリオの制限でない実施例を生成することができることを示す。
【００４０】
【表１】
2020502615.tif 000003
【００４１】
制限でない実施例として、図２および図３に関して上に説明されたシナリオについて考察する。上記のシナリオにおいて、「ｗａｉｔ」条件２３６は、１秒の値に関連付けられる。しかしながら、上述した結合する組み合わせを達成するために、「ｗａｉｔ」条件２３６に関連付けられた時間を、変化させることができる。例えば、時間は、１秒または５秒の値であるすることができる。シナリオにおける第２の変数は、観察自動車２２６の速さ（または速度）に対応することができる。例えば、観察自動車２２６の速さ（または速度）を、変化させることができる。観察自動車２２６は、時速１０マイル（ｍｐｈ）または３０ｍｐｈで走行していることが可能である。上述した結合する組み合わせに従うと、第１のシナリオは、観察自動車２２６が１０ｍｐｈで走行しているときに、１秒の値に関連付けられた「ｗａｉｔ」条件２３６に対応することができ、第２のシナリオは、観察自動車２２６が１０ｍｐｈで走行しているときに、５秒の値に関連付けられた「ｗａｉｔ」条件２３６に対応することができ、第３のシナリオは、観察自動車２２６が３０ｍｐｈで走行しているときに、１秒の値に関連付けられた「ｗａｉｔ」条件２３６に対応することができ、第４のシナリオは、観察自動車２２６が３０ｍｐｈ）で走行しているときに、５秒の値に関連付けられた「ｗａｉｔ」条件２３６に対応することができる。
【００４２】
図４Ａ〜４Ｅは、直積の能力を示す。制限でない実施例として、開始する位置の範囲と、インスタンス化されるための数々の他のプリミティブ（例えば、関連付けられた寸法、速度、およびカテゴリを有するエンティティ）の範囲とをユーザーが指定する、直積について考察する。例えば、直積の第１の変数は、開始する位置に対応することができ、異なる開始する位置に関連付けられた可能な値が、第１の変数に関連付けられ、直積の第２の変数は、数々のプリミティブに対応することができ、数々のプリミティブに関連付けられた可能な値が、第２の変数に対応することができる。
【００４３】
図４Ａ〜４Ｅに示すように、多数のシナリオを、単一の直積によって作成することができ、すべては、単一のＴ字路と、単一の試験自動車２２２とを有することによってカテゴライズされる。図４Ａによって表されるシナリオ４００は、第１の開始する位置において、試験自動車２２２を含む。２人の歩行者４０２Ａ、４０２Ｂが存在し、他の自動車は存在しない。図４Ｂによって表されるシナリオ４０４は、第２の開始する位置において、試験自動車２２２を含み、２つの他の自動車４０６Ａ、４０６Ｂが存在する。図４Ｃによって表されるシナリオ４０８は、第３の開始する位置において、試験自動車２２２を含み、１つの他の自動車４１０が存在する。図４Ｄによって表されるシナリオ４１２は、第４の開始する位置において、試験自動車２２２を含み、他の自動車または歩行者は存在しない。図４Ｅによって表されるシナリオ４１４は、第５の開始する位置において、試験自動車２２２を含み、１つの他の自動車４１６が存在する。先に注意したように、多くの他のシナリオの中のシナリオの各々を、コンピューターコードの単一のラインを使用して作成することができる。
【００４４】
少なくとも１つの実施例において、直積に含まれる変数を、検証およびテストのためにどのシナリオが作成されるかを制限するよう、最適化することができる。追加および／または代替の実施例において、生成された値の組み合わせをフィルタリングして、検証およびテストのためにどのシナリオが作成されるかを制限するために、発見的手法を利用することができる。少なくとも１つの実施例において、直積に含まれる変数の組み合わせを、「有用なシナリオ」に関連付けるために決定された変数に制限することができ、機械学習アルゴリズムによって決定することができる。
【００４５】
機械学習は、受け取ったデータから学習する１つまたは複数のプログラムということができる。例えば、機械学習メカニズムは、例示的な入力から作成されるデータモデルを構築し、変更し、または利用することができ、データモデルを使用して、予測または決定を行う。現在の実施形態において、機械学習メカニズムを使用して、シナリオおよび／または値の組み合わせが冗長な結果を出力するかどうかを予測することができる。すなわち、機械学習メカニズムは、（事前定義された基準ごとに）どのシナリオが合格（すなわち、成功）であるか、または不合格（すなわち、不成功）であるかに関連付けられたデータをレバレッジすることができ、どのシナリオセットが集合的に合格であり、または不合格であるかを決定することができる。上述の決定に基づいて、機械学習メカニズムは、シナリオセットのシナリオは冗長であると決定することができる。データモデルを、教師あり学習アルゴリズム（例えば、人工ニューラルネットワーク、ベイジアン統計、サポートベクトルマシン、決定木、分類器、ｋ−最近傍など）、教師なし学習アルゴリズム（例えば、人工ニューラルネットワーク、相関ルール学習、階層的クラスタリング、クラスタ分析など）、半教師あり学習アルゴリズム、ディープラーニングアルゴリズムなどを使用してトレーニングすることができる。
【００４６】
少なくとも１つの実施例において、検証およびテストのためにどのシナリオが作成されるかを制限することにより、必要とされる計算の回数を減らすことができる。すなわち、検証およびテストのためにどのシナリオが作成されるかを制限することにより、有用な情報を出力する可能性が高いシナリオに実行される、必要とされる計算の回数を減らすことができる。
【００４７】
コンピューター化されたシステム
手短に図５を参照すると、コンピューター化されたシステム５００は、本明細書において説明される技法を実装することができる例示的なコンピューター化されたシステムとして示す。コンピューター化されたシステム５００は、ストレージ５６０と、プロセッサ５７０と、メモリ５４０と、オペレーティングシステム５２０とを有する、コンピューターシステム５１０を示す。ストレージ５６０、プロセッサ５７０、およびオペレーティングシステム５２０は、通信インフラストラクチャ５５０を介して、通信可能に結合することができる。オプションとして、コンピューターシステム５１０は、Ｉ／Ｏデバイス５３０を介してユーザーと、および通信インフラストラクチャ５５０を介してネットワーク５８０と対話することができる。オペレーティングシステム５２０は、アプリケーション５０２を制御するために、他のコンポーネントと対話することができる。アプリケーション５０２は、上で説明されたＳＤＬに基づいてシナリオを生成するよう、プロセッサ５７０によって実行できることが可能である、シミュレーションアプリケーション５０４と、シミュレーション環境において作成されたシナリオに応答するよう、プロセッサ５７０によって実行できること可能である、自律的コントローラー５０６とを含むことができる。少なくとも１つの実施例において、自律的コントローラー５０６は、上で説明したように、さらに、自律走行車上において実行されるソフトウェアに対応する。したがって、自律的コントローラー５０６の応答は、自律走行車が実際の環境においてどのように応答する可能性が高いかを表すことができる。
【００４８】
本明細書において説明されるシステムおよび方法は、ソフトウェアもしくはハードウェア、またはあらゆる組み合わせにおいて実装することができる。本明細書において説明されるシステムおよび方法は、物理的もしくは論理的に互いに別々であることが可能であり、またはそうでなくてよい１つまたは複数のコンピューティングデバイスを使用して、実装することができる。方法を、オンプレミス型ハードウェア、オンプレミス型仮想システム、またはホスティング型プライベートインスタンスのいずれかとして配置されるコンポーネントによって実行することができる。加えて、本明細書において説明される方法の様々な側面は、他の機能に組み合わせる、または結合させることができる。
【００４９】
本明細書において説明される技法を実装するための例示的なコンピューター化されたシステムを、図５に示す。プロセッサまたはコンピューターシステムは、本明細書において説明される技法のうちいくつかまたはすべてを特に実行するよう、構成することができる。いくつかの実施例において、本明細書に説明される技法を、１つまたは複数のコンピューターまたはプロセッサによって、部分的または全体的に自動化することができる。本明細書において説明される技法を、ハードウェア、ファームウェア、および／またはソフトウェアのいずれかの組み合わせを使用して実装することができる。本方法（またはあらゆる部分もしくは機能）を、ハードウェア、ソフトウェア、ファームウェア、または組み合わせを使用して実装することができ、１つまたは複数のコンピューターシステムまたは他の処理システムにおいて実装することができる。いくつかの実施例において、示されたシステム要素は、単一のハードウェアデバイスに組み合わせることができ、または多数のハードウェアデバイスに分離することができる。もし多数のハードウェアデバイスを使用するならば、ハードウェアデバイスを、物理的に互いに接近して、または互いに遠く離して配置することができる。説明され、例示される方法の実施例は、実例であり、制限でないことを意図する。例えば、方法のステップのうちいくつかまたはすべてを、異なる実施例において、組み合わせ、再配置し、および／または省略することができる。
【００５０】
例示的な一実施例において、本明細書に説明される技法を、オペレーティングシステム（Ｏ／Ｓ）５２０を介して本明細書に説明される機能性を実施することが可能な１つまたは複数のコンピューターシステムに向けることができる。例示的なコンピューティングシステムは、制限しないが、あらゆるオペレーティングシステム、例えば、制限しないが、Ｍｉｃｒｏｓｏｆｔ（商標）Ｗｉｎｄｏｗｓ（商標）などを実行するＰＣ（パーソナルコンピューター）システムであるすることができる。しかしながら、本明細書において説明される技法は、これらのプラットフォームに制限されない。代わりに、本明細書において説明される技法は、あらゆる適切なオペレーティングシステムを実行するあらゆる適切なコンピューターシステム上に実装することができる。さらに、本明細書において説明される技法の他のコンポーネント、例えば、制限しないが、コンピューティングデバイス、通信デバイス、モバイルフォン、テレフォニーデバイス、電話、ＰＤＡ（パーソナルデジタルアシスタント）、ＰＣ（パーソナルコンピューター）、ハンドヘルドＰＣ、ｉＴＶ（対話型テレビジョン）、ＤＶＤ（デジタルビデオレコーダー）、クライアントワークステーション、シンクライアント、シッククライアント、プロキシサーバー、ネットワーク通信サーバー、リモートアクセスデバイス、クライアントコンピューター、サーバーコンピューター、ルーター、ウェブサーバー、データ、メディア、オーディオ、ビデオ、テレフォニーまたはストリーミング技術サーバーなどは、コンピューティングデバイスを使用して実装することができる。サービスを、例えば、制限はしないが、ｉＴＶ（対話型テレビジョン）、ＶＯＤ（ビデオオンデマンドシステム）を使用して、およびＤＶＲ（デジタルビデオレコーダー）、または他のオンデマンド視聴システムを介して、オンデマンドにより提供することができる。
【００５１】
コンピューティングシステム５１０は、１つまたは複数のプロセッサ５７０を含むことができる。プロセッサ５７０は、例えば、制限しないが、通信バス、クロスオーバーバー、またはネットワークなどの通信インフラストラクチャ５５０に接続することができる。処理およびプロセッサは、同じ物理的はロケーションに配置する必要はない。言い換えると、処理は、例えば、ＬＡＮまたはＷＡＮ接続を介した１つまたは複数の地理的に遠くのプロセッサにおいて実行することができる。コンピューティングシステムは、ディスプレイユニット上の表示のために、通信インフラストラクチャからグラフィックス、テキスト、および他のデータを転送することができるディスプレイインターフェースを含むことができる。
【００５２】
さらに、コンピューティングシステム５１０は、制限はしないが、メインメモリ、ＲＡＭ（ランダムアクセスメモリ）、およびセカンダリメモリなどを含む、メモリ５４０を含むことができる。セカンダリメモリは、例えば、ハードディスクドライブ、および／または例えばコンパクトディスクドライブＣＤ−ＲＯＭなどのリムーバブルストレージドライブを含むことができる。リムーバブルストレージドライブは、リムーバブルストレージユニットから読み取ること、および／またはリムーバブルストレージユニットに書き込むことができる。理解することができるように、リムーバブルストレージユニットは、コンピュータソフトウェアおよび／またはデータを格納しているコンピューター使用可能な記憶媒体を含むことができる。いくつかの実施例において、マシンアクセス可能な媒体は、コンピューターによってアクセス可能なデータを格納するのに使用されるあらゆるストレージデバイスということができる。マシンアクセス可能な媒体の例は、例えば、制限はしないが、磁気ハードディスク、フロッピーディスク、ＣＤ−ＲＯＭ（コンパクトディスクリードオンリメモリ）もしくはＤＶＤ（デジタル多用途ディスク）などの光ディスク、磁気テープ、および／またはメモリチップなどを含むことができる。
【００５３】
さらに、プロセッサ５７０は、例えばデータを格納するための１つまたは複数のデータストレージデバイスなどのストレージ５６０を含むことができ、またはストレージ５６０と通信するように作動可能に結合することができる。上記のデータストレージデバイスは、制限でない実施例として、（内臓型ハードディスクおよびリムーバブルディスクを含む）磁気ディスク、光磁気ディスク、光ディスク、リードオンリーメモリ、ランダムアクセスメモリ、および／またはフラッシュストレージを含むことができる。さらに、コンピュータープログラム命令およびデータを有形に具現するのに適したストレージデバイスは、例えば、ＥＰＲＯＭ、ＥＥＰＲＯＭ、およびフラッシュメモリデバイスなどの半導体メモリデバイス、例えば、内臓型ハードディスクおよびリムーバブルディスクなどの磁気ディスク、光磁気ディスク、ならびにＣＤ−ＲＯＭおよびＤＶＤ−ＲＯＭディスクを含む、すべての形の不揮発性メモリを含むことができる。プロセッサおよびメモリは、ＡＳＩＣ（特定用途向け集積回路）によって補完すること、またはＡＳＩＣに組み込むことができる。
【００５４】
加えて、および／または代替えとして、ストレージ５６０は、コンピューター化されたデータストレージシステムであることが可能である。データストレージシステムは、非リレーショナルデータストア、または例えばＭｙＳＱＬ（商標）もしくは他のリレーショナルデータベースなどのリレーショナルデータストアを含むことができる。他の物理的および論理的データベース型を、使用することができる。データストアは、例えば、Ｍｉｃｒｏｓｏｆｔ  ＳＱＬ  Ｓｅｒｖｅｒ（商標）、Ｏｒａｃｌｅ（商標）、ＩＢＭ  ＤＢ２（商標）、ＳＱＬＩＴＥ（商標）、またはリレーショナルもしくは別のやり方のあらゆる他のデータベースソフトウェアなどの、データベースサーバーであることが可能である。データストアは、構文タグを識別する情報、および構文タグに基づいて操作するのに必要なあらゆる情報を格納することができる。いくつかの実施例において、処理システムは、オブジェクト指向プログラミングを使用することができ、オブジェクトにデータを格納することができる。今述べた実施例において、コンピューティングシステム５１０は、リレーショナルデータベースにデータオブジェクトを格納するために、ＯＲＭ（オブジェクト−リレーショナルマッパー）を使用することができる。本明細書において説明されるシステムおよび方法を、あらゆる個数の物理的なデータモデルを使用して実装することができる。一実施例において、ＲＤＢＭＳを、使用することができる。今述べた例において、ＲＤＢＭＳのテーブルは、座標を表す列を含むことができる。経済システムの場合において、会社、製品などを表すデータを、ＲＤＢＭＳのテーブルに格納することができる。テーブルは、それらの間の事前定義された関係を有することができる。さらに、テーブルは、座標に関連付けられた付属物を有することができる。
【００５５】
代替の例示的な例において、メモリ５４０は、コンピュータープログラムまたは他の命令をコンピューティングシステム５１０にロードすることを可能にするための他の類似のデバイスを含むことができるセカンダリメモリを含むことができる。上記のデバイスは、例えば、リムーバブルストレージユニットおよびインターフェースを含むことができる。上記の例は、（例えば、制限しないが、ビデオゲームデバイスに見出されるものなどの）プログラムカートリッジおよびカートリッジインターフェース、（例えば、制限しないが、ＥＰＲＯＭ（ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）またはＰＲＯＭ（プログラマブルＰＲＯＭ）および関連付けられたソケット、ならびにソフトウェアおよびデータをリムーバブルストレージユニットからコンピューターシステムに転送することを可能にすることができる、他のリムーバブルストレージユニットおよびインターフェースなどの）リムーバブルメモリチップを含むことができる。
【００５６】
さらに、コンピューティングシステム５１０は、Ｉ／Ｏ（入力／出力）デバイス５３０を含むことができる。Ｉ／Ｏデバイス５３０の例は、例えば、制限しないが、マウス、または例えばデジタイザなどの他のポインティングデバイス、およびキーボード、または他のデータ入力デバイス（図示せず）などの入力デバイスを含むことができる。Ｉ／Ｏデバイス５３０の別の例は、例えば、制限しないが、ディスプレイおよびディスプレイインターフェースなどの出力デバイスを含むことができる。さらにまた、Ｉ／Ｏデバイス５３０は、制限はしないが、通信インターフェース、ケーブル、および通信経路などを含むことができる。今述べたデバイスは、制限はしないが、ネットワークインターフェースカード、およびモデムを含むことができる。通信インターフェースは、ソフトウェアおよびデータをコンピューターシステムと外部デバイスとの間において転送することを可能にすることができる。
【００５７】
１つまたは複数の実施例において、本実施例は、例えばネットワーク５８０など、１つまたは複数のコンピュータネットワークの環境において実施される。ネットワーク５８０は、プライベートネットワーク、もしくはパブリックネットワーク（例えば、以下で説明されるような、インターネット）、または両方の組み合わせを含むことができる。ネットワーク５８０は、ハードウェア、ソフトウェア、または両方の組み合わせを含む。
【００５８】
電気通信指向の観点から、ネットワーク５８０は、通信設備によって相互接続されたハードウェアノードのセットとして説明することができ、１つまたは複数のプロセス（ハードウェア、ソフトウェア、または組み合わせ）が、上記の各ノードにおいて機能する。プロセスは、プロセス間通信経路を使用して、それらの間の通信経路を介して、互いに相互通信を行い、情報を交換することができる。今述べた経路上に、適切な通信プロトコルを、使用する。
【００５９】
本実施例に従った例示的なコンピューターおよび／または電気通信ネットワーク環境は、ハードウェア、ソフトウェア、またはハードウェアおよびソフトウェアの組み合わせを含むことができるノードを含むことができる。ノードは、通信ネットワークを介して相互接続されることができる。各ノードは、ノード内に組み込まれるプロセッサによって実行可能な１つまたは複数の処理を含むことができる。例えば、単一の処理が、多数のプロセッサによって実行されることができ、または多数の処理は、単一のプロセッサによって実行されることができる。加えて、ノードの各々は、ネットワークと外部世界との間のインターフェースポイントを提供することができ、サブネットワークの集まりを含むことができる。
【００６０】
例示的な実施例において、プロセスは、あらゆる通信プロトコルを通して通信をサポートするプロセス間通信経路を通して、互いに通信することができる。経路は、順次的または並列に、連続的または断続的に機能することができる。経路は、多くのコンピューターによって使用される標準的な並列命令セットに加えて、通信ネットワークに関して本明細書において説明される、通信規格、プロトコル、または技術のいずれかを使用することができる。
【００６１】
ノードは、処理機能を実行することが可能なあらゆるエンティティを含むことができる。例とともに使用されることができる上記のノードの例は、（例えば、パーソナルコンピューター、ワークステーション、サーバー、もしくはメインフレームなどの）コンピューター、（ＰＤＡ（パーソナルデジタルアシスタント）、処理能力を有するモデムセルフォン、ＢｌａｃｋＢｅｒｒｙ（商標）デバイスを含む無線電子メールデバイスなどの）ハンドヘルド無線デバイスおよび有線デバイス、（例えば、スキャナ、プリンター、ファクシミリ機、もしくは多機能文書マシンなどの）文書処理デバイス、または説明されたようなプロセッサの集まりがそれらに接続される（例えば、ローカルエリアネットワークもしくはワイドエリアネットワークなどの）複雑なエンティティを含む。例えば、本明細書において説明される本技法についての文脈において、ノード自体が、ＷＡＮ（ワイドエリアネットワーク）、ＬＡＮ（ローカルエリアネットワーク）、ＶＰＮ（仮想プライベートネットワーク）などのプライベートネットワーク、またはネットワークの集まりであることができる。
【００６２】
ノード間の通信は、通信ネットワークによって可能にされることができる。ノードは、通信ネットワークと連続的または断続的に接続されることができる。例として、本明細書において説明される本技法についての文脈において、通信ネットワークは、適切な帯域幅および情報セキュリティを提供するデジタル通信インフラストラクチャであることが可能である。
【００６３】
通信ネットワークは、あらゆる型の規格、プロトコル、または技術を使用する、あらゆる周波数における、有線通信能力、無線通信能力、または両方の組み合わせを含むことができる。加えて、本実施例において、通信ネットワークは、プライベートネットワーク（例えば、ＶＰＮ）、またはパブリックネットワーク（例えば、インターネット）であることが可能である。
【００６４】
通信ネットワークによって使用される例示的な無線プロトコルおよび技術の非包括的なリストは、Ｂｌｕｅｔｏｏｔｈ（商標）、ＧＰＲＳ（汎用パケット無線サービス）、ＣＤＰＤ（セルラデジタルパケットデータ）、ＭＳＰ（モバイルソリューションプラットフォーム）、ＭＭＳ（マルチメディアメッセージングサービス）、ＷＡＰ（ワイヤレスアプリケーションプロトコル）、ＣＤＭＡ（符号分割多元接続）、ＳＭＳ（ショートメッセージサービス）、ＷＭＬ（ワイヤレスマークアップ言語）、ＨＤＭＬ（ハンドヘルドデバイスマークアップ言語）、ＢＲＥＷ（無線用バイナリランタイム環境）、ＲＡＮ（無線アクセスネットワーク）、およびＰＳ−ＣＮ（パケット交換コアネットワーク）を含むことができる。様々な世代の無線技術も含まれる。通信ネットワークによって使用される主に有線プロトコルおよび技術の例示的な非包括的なリストは、ＡＴＭ（非同期転送モード）、ＥＩＧＲＰ（拡張インテリアゲートウェイルーティングプロトコル）、ＦＲ（フレームリレー）、ＨＤＬＣ（ハイレベルデータリンク制御）、ＩＣＭＰ（インターネット制御メッセージプロトコル）、ＩＧＲＰ（インテリアゲートウェイルーティングプロトコル）、ＩＰＸ（ネットワーク間パケット交換）、ＩＳＤＮ、ＰＰＰ（ポイントツーポイントプロトコル）、ＴＣＰ／ＩＰ（伝送制御プロトコル／インターネットプロトコル）、ＲＩＰ（ルーティング情報プロトコル）、およびＵＤＰ（ユーザーデータグラムプロトコル）を含む。当業者が認識するように、あらゆる他の知られたまたは予想される無線または有線プロトコルおよび技術が使用されることができる。
【００６５】
本明細書において説明される本技法の実施例は、本明細書における作動を実行するための装置を含むことができる。装置は、所望の目的のために特別に構成されることができ、またはそれは、デバイス内に記憶されたプログラムによって選択的にアクティブ化または再構成される汎用デバイスを含むことができる。
【００６６】
１つまたは複数の実施例において、本実施例は、マシン実行可能命令において具現される。命令は、命令を用いてプログラムされる処理デバイス、例えば、汎用または専用プロセッサに、本明細書において説明される本技法のステップを実行させるために使用されることができる。代替えとして、本明細書において説明される本技法のステップは、ステップを実行するための配線論理を含む特定のハードウェアコンポーネントによって、またはプログラムされるコンピュータコンポーネントおよびカスタムハードウェアコンポーネントのあらゆる組み合わせによって実行されることができる。例えば、本明細書において説明される本技法は、以下で説明されるように、コンピュータープログラム製品、アプリケーションなどとして提供されることができる。環境において、実施例は、命令がその上に記憶されたマシン読み取り可能な媒体を含むことができる。命令は、例示的な本実施例に従って処理または方法を実行するよう、あらゆる１つまたは複数のプロセッサ（または他の電子デバイス）をプログラムするために使用されることができる。加えて、本明細書において説明される本技法は、ダウンロードされ、コンピュータープログラム製品上に記憶されることもできる。ここで、プログラムは、搬送波または他の伝搬媒体内に具現されるデータ信号によって、通信リンク（例えば、モデムまたはネットワーク接続）を介して、リモートコンピューター（例えば、サーバー）から要求しているコンピューター（例えば、クライアント）に転送されることができ、最終的に、上記の信号は、後続の実行のためにコンピューターシステム上に記憶されることができる。
【００６７】
方法は、コンピューターまたはあらゆる命令実行システムによって使用するための、またはそれらと関連したプログラムコードを提供する、コンピューター使用可能なまたはコンピューター読み取り可能な記憶媒体から入手可能なコンピュータープログラム製品に実装することができる。コンピューター使用可能なまたはコンピューター読み取り可能な記憶媒体は、コンピューターもしくは命令実行システム、装置、またはデバイスによって使用するための、またはそれらと関連したプログラムを含むこと、または記憶することができる、あらゆる装置であることができる。アプリケーション５０２は、ファンクション、タスク、アクティビティなどを実行するように指定されたコンピュータープログラム製品であることが可能である。いくつかの実施例において、アプリケーション５０２は、１つまたは複数のモジュールを含むことができ、それらは、一般に、それらが指定された入力を使用して有用なデータまたは他の出力を生成することができるように機能する。
【００６８】
対応するプログラムコードを記憶および／または実行するのに適したデータ処理システムは、メモリ要素などのコンピューター化されたデータストレージデバイスに直接的または間接的に結合された少なくとも１つのプロセッサを含むことができる。（制限はしないが、キーボード、ディスプレイ、ポインティングデバイスなどを含む）Ｉ／Ｏ（入力／出力）デバイスが、システムに結合されることができる。データ処理システムが、介在するプライベートまたはパブリックネットワークを通して、他のデータ処理システム、またはリモートプリンターもしくはストレージデバイスに結合されることを可能にするために、ネットワークアダプタがシステムに結合されることもできる。ユーザーとの対話を提供するために、ＬＣＤ（液晶ディスプレイ）などのディスプレイデバイス、または情報をユーザーに表示するための別の種類のモニター、ならびにユーザーがそれによって入力をコンピューターに提供することができる、キーボード、およびマウスまたはトラックボールなどの入力デバイスを用いて、特徴がコンピューター上において実施されることができる。
【００６９】
コンピュータープログラムは、コンピューターにおいて直接的または間接的に使用されることができる命令のセットであることができる。本明細書において説明されるシステムおよび方法は、コンパイラ型またはインタープリタ型言語を含む、Ｆｌａｓｈ（商標）、ＪＡＶＡ（商標）、Ｃ＋＋、Ｃ、Ｃ＃、Ｐｙｔｈｏｎ、Ｖｉｓｕａｌ  Ｂａｓｉｃ（商標）、ＪａｖａＳｃｒｉｐｔ（商標）ＰＨＰ、ＸＭＬ、ＨＴＭＬなどのプログラミング言語、またはプログラミング言語の組み合わせを使用して実装することができ、スタンドアロンプログラム、またはモジュール、コンポーネント、サブルーチン、もしくはコンピューティング環境において使用するのに適した他のユニットを含むあらゆる形において配備されることができる。ソフトウェアは、制限はしないが、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むことができる。プログラミングモジュール間のインターフェースを実施する際に、ＳＯＡＰ／ＨＴＴＰなどのプロトコルが使用されることができる。本明細書において説明されるコンポーネントおよび機能性は、仮想化または非仮想化環境において動作する、ソフトウェア開発に適したあらゆるプログラミング言語を使用する、制限しないが、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（商標）、Ａｐｐｌｅ（商標）Ｍａｃ（商標）、ｉＯＳ（商標）、Ｕｎｉｘ（商標）／Ｘ−Ｗｉｎｄｏｗｓ（商標）、Ｌｉｎｕｘ（商標）などの異なるバージョンを含む、あらゆるデスクトップオペレーティングシステム上に実装することができる。システムは、Ｒｕｂｙ  ｏｎ  Ｒａｉｌｓなどのウェブアプリケーションフレームワークを使用して実装することができるだろう。
【００７０】
命令からなるプログラムの実行に適したプロセッサは、制限はしないが、汎用および専用マイクロプロセッサ、ならびにあらゆる種類のコンピューターの唯一のプロセッサまたは多数のプロセッサもしくはコアのうち１つを含む。プロセッサは、例えば、リードオンリーメモリ、ランダムアクセスメモリ、その両方、または本明細書において説明されるデータストレージデバイスのあらゆる組み合わせなどのコンピューター化されたデータストレージデバイスから、命令およびデータを受け取り、記憶することができる。プロセッサは、電子デバイスの作動および実行を制御するように作動する、あらゆる処理回路または制御回路を含むことができる。
【００７１】
本明細書において説明されるシステム、モジュール、および方法は、ソフトウェア要素またはハードウェア要素のあらゆる組み合わせを使用して実装することができる。本明細書において説明されるシステム、モジュール、および方法は、単独で、または互いに組み合わさって作動する、１つまたは複数の仮想マシンを使用して実装することができる。物理的なコンピューティングマシンプラットフォームを、ハードウェアコンピューティングプラットフォームまたはホスト上において実行する仮想化ソフトウェアの制御下で実行される仮想マシンにカプセル化するために、あらゆる適用可能な仮想化ソリューションが使用されることができる。仮想マシンは、仮想システムハードウェアおよびゲストオペレーティングシステムソフトウェアの両方を有することができる。
【００７２】
本明細書において説明されるシステムおよび方法は、データサーバなどのバックエンドコンポーネントを含むコンピューターシステム、またはアプリケーションサーバもしくはインターネットサーバなどのミドルウェアコンポーネントを含むコンピューターシステム、またはグラフィカルユーザインターフェースもしくはインターネットブラウザを有するクライアントコンピューターなどのフロントエンドコンポーネントを含むコンピューターシステム、またはあらゆる組み合わせにおいて実装することができる。システムのコンポーネントは、通信ネットワークなど、デジタルデータ通信のあらゆる形態または媒体によって接続されることができる。通信ネットワークの例は、例えば、ＬＡＮ、ＷＡＮ、ならびにインターネットを形成するコンピューターおよびネットワークを含む。
【００７３】
本明細書において説明される技法の１つまたは複数の例は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースまたはプログラマブル家電製品、ミニコンピューター、メインフレームコンピューターなどを含む、他のコンピューターシステム構成を用いて実施されることができる。本明細書において説明される技法は、ネットワークを通してリンクされたリモート処理デバイスによってタスクが実行される分散コンピューティング環境において実施されることもできる。
【００７４】
「コンピュータープログラム媒体」および［コンピューター読み取り可能な媒体］という用語は、例えば、制限しないが、リムーバブルストレージデバイス、ハードディスクドライブ内に取り付けられたハードディスクなどの媒体を一般に指すために使用されることができる。これらのコンピュータープログラム製品は、ソフトウェアをコンピューターシステムに提供することができる。本明細書において説明される技法は、上記のコンピュータープログラム製品を対象とすることができる。
【００７５】
「一実施例」、「実施例」、「様々な実施例」などに対する言及は、そのように説明される本明細書において説明される技法の例が、特定の特徴、構造、または特性を含むことができることを示すことができるが、あらゆる実施例が、必ずしも特定の特徴、構造、または特性を含むわけではない。「一実施例において」または「例示的な実施例において」という句が繰り返し使用される場合、それは、同じ実施例であるすることもできるが、必ずしも同じ実施例に言及しているわけではない。
【００７６】
説明および請求項において、「結合される」および「接続される」という語が、それらの活用形とともに、使用されることができる。これらの語は、互いに同義語として意図されることはできないことを理解すべきである。むしろ、特定の実施例において、「接続される」は、２つ以上の要素が、互いに物理的または電気的に直接接触していることを示すために使用されることができる。「結合される」は、２つ以上の要素が、物理的または電気的に直接接触していることを意味することができる。しかしながら、「結合される」は、２つ以上の要素が、互いに直接接触していないが、それでもなお互いに協力または相互作用することを意味することもできる。
【００７７】
アルゴリズムは、ここでは、および一般に、所望の結果をもたらす動作または動作の自己矛盾のないシーケンスであると見なされることができる。これらは、物理的量の物理的操作を含む。必ずではないが、通常、これらの量は、記憶され、転送され、組み合わされ、比較され、および他のやり方により操作されることが可能な電気的または磁気的信号の形態をとる。主に共通使用の理由で、これらの信号をビット、値、要素、シンボル、文字、項、または数などと呼ぶことが時には便利であることが分かっている。しかしながら、これらおよび同様の語のすべては、適切な物理的量に関連付けられるべきであり、これらの量に適用される便利なラベルであるにすぎないことを理解すべきである。
【００７８】
他に別段の指摘がない限り、本明細書全体にわたって、「処理する」、「計算する」、「算出する」、または「決定する」などの語は、コンピューティングシステムのレジスタおよび／またはメモリ内の電子的など物理的量として表されるデータを、コンピューティングシステムのメモリ、レジスタ、または他の上記の情報ストレージ、送信デバイスまたはディスプレイデバイス内の物理的量として同様に表される他のデータにするように操作および／または変換する、コンピューターもしくはコンピューティングシステムまたは類似の電子的なコンピューティングデバイスの作動および／または処理に言及していることが理解されることができる。
【００７９】
同様に、「プロセッサ」という用語は、レジスタおよび／またはメモリからの電子データを処理して、電子データを、レジスタおよび／またはメモリ内に記憶されることができる他の電子データに変換する、あらゆるデバイスまたはデバイスの部分を指すことができる。「コンピューティングプラットフォーム」は、１つまたは複数のプロセッサを有することができる。本明細書において使用される場合、「ソフトウェア」処理は、例えば、タスク、スレッド、およびインテリジェントエージェントなど、仕事を経時的に実行するソフトウェアおよび／またはハードウェアエンティティを含むことができる。また、処理は、順次的または並列に、連続的または断続的に命令を実施するための多数の処理を指すことができる。本明細書において、「システム」および「方法」という語は、システムが１つまたは複数の方法を具現することができ、方法がシステムと見なされることができる限りにおいて、交換可能に使用される。
【００８０】
例示的な処理
図６〜８は、本明細書において説明されるＳＤＬを利用して、シミュレーション環境においてシナリオを構成する例示的な処理を例示する。図６〜８は、図１〜５の文脈において説明されるが、上記の文脈に制限しない。
【００８１】
図６は、シミュレーション環境においてシナリオを構成する例示的な処理６００を例示する。
【００８２】
ブロック６０２は、シミュレートされる環境におけるシナリオにおいてインスタンス化されるためのプリミティブを定義する命令を受け取ることを例示する。少なくとも１つの実施例において、ユーザーは、ＳＤＬを使用して、シナリオにおいてインスタンス化されるための１つまたは複数のプリミティブを定義することができる。シミュレーションアプリケーション５０４は、シナリオにおいてインスタンス化されるための１つまたは複数のプリミティブを定義する命令を受け取ることができる。上述したように、プリミティブは、シミュレーション環境の特定の側面を定義する。プリミティブの制限でない実施例は、座標系、条件、動作、エンティティ、エンティティ挙動、ノイズ、障害などを含む。少なくとも１つの実施例において、シミュレーションアプリケーション５０４は、１つまたは複数のプリミティブについての詳細を受け取ることができる。例えば、ユーザーは、ＳＤＬを使用して、エンティティ挙動をエンティティに割り当てることによりエンティティのある速さ（または速度）を指定するだけでなく、（例えば、走路座標、慣性座標、またはセマンティック座標を使用して）ある寸法、姿勢を有するエンティティ１１２を定義することができる。少なくとも１つの実施例において、少なくとも１つのプリミティブは、「自律走行車」として指定することができ、上述したようにシミュレーションの出力が自律的コントローラーによって制御される自律走行車の挙動を検証するよう、自律的コントローラー５０６に関連付けることができる。
【００８３】
ブロック６０４は、個々のプリミティブ間のアソシエーションを定義するシーケンスを定義する命令を受け取ることを例示する。上述したように、ＳＤＬは、あるプリミティブが、例えば、線形時相論理を使用して、互いにどのように関連付けられるかをユーザーが指定することを可能にする。一実施例において、ユーザーは、シーケンスを指定することによって、プリミティブ間のアソシエーションを定義する。上記の実施例において、シミュレーションアプリケーション５０４は、シーケンスを定義する命令を受け取ることができる。少なくとも１つの実施例において、シーケンスは、シミュレーションアプリケーション５０４によって逐次順に実行されることになる多数のステップを含むことができる。少なくとも１つの実施例において、シーケンスの１つのステップが別のシーケンスであるように、シーケンスは別のものを含むことができる。
【００８４】
ブロック６０６は、シナリオを生成するために、環境内においてシーケンスをインスタンス化することを例示する。少なくとも１つの実施例において、シミュレーションアプリケーション５０４は、シナリオを生成するために、環境内においてシーケンスをインスタンス化するための、１つまたは複数のプロセッサ（例えば、プロセッサ５７０）によって実行可能な命令を含むことができる。上述したように、いくつかの実施例において、環境は、地図であることが可能である。地図は、２次元または３次元であることが可能である。２次元および／または３次元の地図は、例えば、制限しないが、（例えば交差点などの）トポロジー、街路、山脈、道路、地形、および一般的な環境などの環境についての情報を提供することが可能なあらゆる個数のデータ構造であることが可能である。シナリオは、地図内においてシーケンスをインスタンス化するシミュレーションアプリケーション５０４に少なくとも部分的に基づいて生成することができる。
【００８５】
ブロック６０８は、シナリオに関連付けられた情報を決定することを例示する。地図内においてシーケンスをインスタンス化することに少なくとも部分的に基づいて、シミュレーション環境において作成されたシナリオを与えられた自律的コントローラー５０６がどのように応答するかに基づく様々な情報を、学習することができる。上述したように、さらに、自律的コントローラー５０６は、自律走行車上において実行されるソフトウェアに対応することができる。地図内においてシーケンスをインスタンス化することに少なくとも部分的に基づいて、自律的コントローラー５０６が上記の自律走行車を安全に制御することができることを検証するために、自律的コントローラー５０６がどのように応答するかに関する情報を、学習することができる。追加および／または代替の実施例において、地図内においてシーケンスをインスタンス化することに少なくとも部分的に基づいて、自律的コントローラー５０６に基づいて走行する自律走行車の制約についての情報を、学習することができる。例えば、地図内においてシーケンスをインスタンス化することに少なくとも部分的に基づいて、路面状態、周囲ノイズ、欠陥部品などを考慮して、自律走行車の作動空間を理解するために、シミュレーションを、使用することができる。また、情報は、自律走行車の作動および設計を改善するためのフィードバックを生成するために有用であることが可能である。例えば、いくつかの実施例において、地図内においてシーケンスをインスタンス化することに少なくとも部分的に基づいて、自律的コントローラー５０６において必要とされる冗長性の量を決定するための、または学習されたことに基づいて自律的コントローラー５０６の挙動をどのように変更するかを決定するための情報を、学習することができる。
【００８６】
図７は、シナリオ記述言語を使用してユーザーによって定義されたようなプリミティブを結合して組み合わせることによって多数のシナリオを生成する例示的な処理７００を例示する。
【００８７】
ブロック７０２は、プリミティブの可能な組み合わせのサブセットを定義する命令を受け取ることを例示する。上述したように、直積は、テストシナリオを生成するために組み合わされる値を定義する、あらゆる個数の名づけられた引数を受け入れる。名づけられた各引数は、変数に対応することができる。いくつかの実施例において、変数は、プリミティブに関連付けることができる。すなわち、プリミティブは、異なるシナリオを生成するために変化させることができるいくつかの側面に関連付けることができる。少なくとも１つの実施例において、名づけられた各引数は、対応する変数についての可能な値のリストを受け取る。少なくとも１つの実施例において、ユーザーは、名づけられた引数と、名づけられた各引数についての可能な値とを定義することができる。ユーザーによって定義された直積の制限でない実施例は、式１を参照して上に示す。シミュレーションアプリケーション５０４は、名づけられた引数と、名づけられた各引数についての可能な値とを受け取ることができる。
【００８８】
ブロック７０４は、プリミティブの各組み合わせの順列を作成することを例示する。シミュレーションアプリケーション５０４は、値のあらゆる組み合わせのために割り当てられたパラメーターを保有する反復変数を割り当てることができる。すなわち、シミュレーションアプリケーション５０４は、プリミティブに関連付けられた可能な値の組み合わせについての順列を生成することができる。直積からもたらされる順列の制限でない実施例は、表１を参照して上に示す。
【００８９】
ブロック７０６は、環境内において順列のうちの各順列をインスタンス化することを例示し、各順列はシナリオに対応する。少なくとも１つの実施例において、シミュレーションアプリケーション５０４は、多数のシナリオを生成するために、環境内において、直積を考慮して、シーケンスをインスタンス化するための、１つまたは複数のプロセッサ（例えば、プロセッサ５７０）によって実行可能な命令を含むことができる。上述したように、いくつかの実施例において、環境は、地図であることが可能である。各順列は、異なるシナリオを生成することができる。すなわち、可能な値の様々な順列を考慮して、地図内においてシーケンスをインスタンス化するシミュレーションアプリケーション５０４に少なくとも部分的に基づいて、多数のシナリオを、生成することができる。そして、各反復は、より特定的なシナリオに関連付けることができる。
【００９０】
ブロック７０８は、各シナリオについての結果を決定することを例示する。少なくとも１つの実施例において、シミュレーションアプリケーション５０４は、テストおよび検証のためのシミュレーションにおいて使用する各シナリオを出力することができる。上述したように、地図内において順列をインスタンス化することに少なくとも部分的に基づいて、シミュレーション環境において作成されたシナリオを与えられた自律的コントローラー５０６がどのように応答するかに基づく様々な情報を、学習することができる。少なくとも１つの実施例において、シミュレーションアプリケーション５０４は、自律的コントローラー５０６がどのように動作したか（すなわち、応答したか）を示すデータにアクセスすることができ、データを予め決定された結果（例えば、結果１２４ａ〜１２４ｎ）と比較することができる。自律的コントローラー５０６が予め決定された結果に一致して動作した（すなわち、自律的コントローラー５０６がすると仮定されたあらゆることをした）と決定されることに少なくとも部分的に基づいて、シミュレーションアプリケーション５０４は、自律的コントローラーが成功したことを決定することができる。自律的コントローラー５０６が予め決定された結果に一致せずに動作した（すなわち、自律的コントローラー５０６がすると仮定されなかったあることをした）と決定されることに少なくとも部分的に基づいて、シミュレーションアプリケーション５０４は、自律的コントローラーが失敗したことを決定することができる。したがって、地図内において順列をインスタンス化することに少なくとも部分的に基づいて、上述したように、自律的コントローラー５０６が各シナリオにどのように応答したかについての情報を、学習することができる。
【００９１】
図８は、有用な情報を提供するシナリオを決定し、有用な情報を提供しない他のシナリオを取り除く例示的な処理８００を例示する。
【００９２】
ブロック８０２は、２つ以上の順列が、同じ、類似する、または実質的に類似する結果に関連付けられることを決定することを例示する。図７を参照して上述したように、環境内において順列をインスタンス化することに少なくとも部分的に基づいて、シミュレーション環境において作成された（１つまたは複数の）シナリオを与えられた自律的コントローラー５０６がどのように応答するかに基づく様々な情報を、学習することができる。少なくとも１つの実施例において、シミュレーションアプリケーション５０４は、自律的コントローラー５０６がどのように動作したかを示すデータにアクセスすることができ、データを予め決定された結果（例えば、結果１２４ａ〜１２４ｎ）と比較することができる。自律的コントローラー５０６が予め決定された結果に一致して動作した（すなわち、自律的コントローラー５０６がすると仮定されたあらゆることをした）と決定されることに少なくとも部分的に基づいて、シミュレーションアプリケーション５０４は、自律的コントローラーが成功したことを決定することができる。自律的コントローラー５０６が予め決定された結果に一致せずに動作した（すなわち、自律的コントローラー５０６がすると仮定されなかったあることをした）と決定されることに少なくとも部分的に基づいて、シミュレーションアプリケーション５０４は、自律的コントローラーが失敗したことを決定することができる。
【００９３】
少なくとも１つの実施例において、シミュレーションアプリケーション５０４は、順列のうちの２つ以上のインスタンス化において自律的コントローラー５０６がどのように動作したかに関連付けられたデータが、順列のうちの２つ以上が同じ結果に関連付けられることを示すことを決定することができる。すなわち、シミュレーションアプリケーション５０４は、順列のうちの２つ以上が成功の結果または不成功の結果に関連付けられることを決定することができる。追加および／または代替の実施例において、シミュレーションアプリケーション５０４は、順列のうちの２つ以上が何らかの他の共有される結果（例えば、信頼レベル、推奨など）に関連付けられることを決定することができる。
【００９４】
ブロック８０４は、２つ以上の順列が冗長であることを決定することを例示する。シミュレーションアプリケーション５０４が順列のうちの２つ以上が同じ結果に関連付けられることを決定することに少なくとも部分的に基づいて、シミュレーションアプリケーション５０４は、２つ以上の順列が冗長であることを決定することができる。すなわち、少なくとも１つの実施例において、シミュレーションアプリケーション５０４は、順列のうちの２つ以上が、自律的コントローラー５０６がシナリオにおいて応答する能力について、あるとしても追加の大して有用でない情報を提供するだけの違いが増えていくことに関連付けることを決定することができる。
【００９５】
ブロック８０６は、将来のインスタンス化において、２つ以上の順列の代わりに、２つ以上の順列のうちの１つの順列をインスタンス化することを例示する。順列のうちの２つ以上が冗長であることをシミュレーションアプリケーション５０４が決定することに少なくとも部分的に基づいて、シミュレーションアプリケーション５０４は、２つ以上の順列のうちの１つまたは複数を取り除くことができる。すなわち、シミュレーションアプリケーション５０４は、２つ以上の順列についての代表的な順列を識別することができる。結果として、将来のインスタンス化において、２つ以上の順列の各々をインスタンス化する代わりに、代表的な順列を、インスタンス化することができる。したがって、シミュレーションアプリケーションは、検証およびテストのために有用な情報を提供する特定のシナリオにわたって最適化を行うことによって、計算の複雑性、メモリ要件、および処理時間を減らすために、有用な情報を提供すると決定されるシナリオをインスタンス化することができる。
【００９６】
実施例条項
Ａ．シミュレーション環境におけるシナリオを生成するためのコンピューターに実装される方法であって、コンピューターに実装される方法は、シナリオにおいてインスタンス化されるための少なくとも第１のプリミティブを定義する命令を受け取ることであって、第１のプリミティブが自律走行車に対応し、第１のプリミティブに割り当てられる１つまたは複数の値に関連付けられる命令を受け取ることと、１つまたは複数の値に少なくとも部分的に基づいて、第１のプリミティブに関する順列のセットを作成することであって、各順列が１つまたは複数の値のうちの異なる値に関連付けられ、複数のシナリオを生成するために地図内において順列の各々をインスタンス化することであって、各シナリオが順列のセットのうちの順列に対応し、複数のシナリオのうちのシナリオに関連付けられた情報を決定することであって、情報が、自律走行車に関連付けられた、シミュレーション環境において作成されたシナリオを与えられた自律的コントローラーがどのように応答するかを記述する、を含む。
【００９７】
Ｂ．段落Ａに記載のコンピューターに実装される方法であって、第１のプリミティブは、寸法の定義されたセット、姿勢、またはシミュレーション環境において第１のプリミティブを描画するためのメッシュを有するもののうちの１つまたは複数に関連付けられる。
【００９８】
Ｃ．段落Ｂに記載のコンピューターに実装される方法であって、姿勢は、慣性座標系、地図ベースの座標系、または走路ベースの座標系によって定義される。
【００９９】
Ｄ．段落ＢまたはＣに記載のコンピューターに実装される方法であって、第１のプリミティブは、第１のプリミティブがシナリオにおいてどのように振る舞うことになるかを示すエンティティ挙動に関連付けられる。
【０１００】
Ｅ．段落Ａ〜Ｄのいずれかに記載のコンピューターに実装される方法であって、命令は、第１のプリミティブと少なくとも第２のプリミティブとの間のアソシエーションを定義するシーケンスをさらに含み、シーケンスが逐次順に実行される多数のステップを含む。
【０１０１】
Ｆ．段落Ｅに記載のコンピューターに実装される方法であって、第２のプリミティブは、第２のエンティティに対応する。
【０１０２】
Ｇ．段落Ｆに記載のコンピューターに実装される方法であって、第２のエンティティは、静的エンティティまたは動的エンティティである。
【０１０３】
Ｈ．段落Ｅ〜Ｇのいずれかに記載のコンピューターに実装される方法であって、第２のプリミティブは、条件、動作、障害、またはノイズに対応する。
【０１０４】
Ｉ．プロセッサによって実行されると段落Ａ〜Ｈのいずれかに記載の方法を実行するようにコンピューターを構成する命令を用いて符号化された１つまたは複数のコンピューター読み取り可能な媒体。
【０１０５】
Ｊ．１つまたは複数のプロセッサと、１つまたは複数のプロセッサによって実行されると段落Ａ〜Ｈのいずれかに記載のコンピューターに実装される方法を実行するようコンピューターを構成する命令を用いて符号化された１つまたは複数のコンピューター読み取り可能な媒体とを有するデバイス。
【０１０６】
Ｋ．シミュレーション環境におけるシナリオを生成するためのコンピューターに実装される方法であって、コンピューターに実装される方法は、シナリオにおいてインスタンス化されるための少なくとも第１のプリミティブを定義する命令を受け取る手段であって、第１のプリミティブが自律走行車に対応し、第１のプリミティブに割り当てられる１つまたは複数の値に関連付けられる命令を受け取る手段と、１つまたは複数の値に少なくとも部分的に基づいて、第１のプリミティブに関する順列のセットを作成する手段であって、各順列が１つまたは複数の値のうちの異なる値に関連付けられ、複数のシナリオを生成するために地図内において順列の各々をインスタンス化する手段であって、各シナリオが順列のセットのうちの順列に対応し、複数のシナリオのうちのシナリオに関連付けられた情報を決定する手段であって、情報が、自律走行車に関連付けられた、シミュレーション環境において作成されたシナリオを与えられた自律的コントローラーがどのように応答するかを記述する、を含む。
【０１０７】
Ｌ．段落Ｋに記載のコンピューターに実装される方法であって、第１のプリミティブは、寸法の定義されたセット、姿勢、またはシミュレーション環境において第１のプリミティブを描画するためのメッシュを有するもののうちの１つまたは複数に関連付けられる。
【０１０８】
Ｍ．段落Ｌに記載のコンピューターに実装される方法であって、姿勢は、慣性座標系、地図ベースの座標系、または走路ベースの座標系によって定義される。
【０１０９】
Ｎ．段落ＬまたはＭに記載のコンピューターに実装される方法であって、第１のプリミティブは、第１のプリミティブがシナリオにおいてどのように振る舞うことになるかを示すエンティティ挙動に関連付けられる。
【０１１０】
Ｏ．段落Ｋ〜Ｎのいずれかに記載のコンピューターに実装される方法であって、命令は、第１のプリミティブと少なくとも第２のプリミティブとの間のアソシエーションを定義するシーケンスをさらに含み、シーケンスが逐次順に実行される多数のステップを含む。
【０１１１】
Ｐ．段落Ｏに記載のコンピューターに実装される方法であって、第２のプリミティブは、第２のエンティティに対応する。
【０１１２】
Ｑ．段落Ｐに記載のコンピューターに実装される方法であって、第２のエンティティは、静的エンティティまたは動的エンティティである。
【０１１３】
Ｒ．段落Ｏ〜Ｑのいずれかに記載のコンピューターに実装される方法であって、第２のプリミティブは、条件、動作、障害、またはノイズに対応する。
【０１１４】
Ｓ．シミュレーション環境におけるシナリオを生成するためのシステムであって、システムは、１つまたは複数のプロセッサと、１つまたは複数のプロセッサによって実行可能な命令を格納する１つまたは複数の非一時的なコンピューター読み取り可能な媒体とを有し、命令は、シミュレーション環境における少なくとも１つのシナリオにおいてインスタンス化されるためのプリミティブセットを定義する命令を受け取ることと、プリミティブセットのうちの個々のプリミティブ間のアソシエーションを定義する第１のシーケンスを受け取ることと、第１のシナリオを生成するためにシミュレーション環境内において第１のシーケンスをインスタンス化することと、第１のシナリオに関連付けられた情報を決定することであって、情報が、シミュレーション環境において作成された少なくとも１つのシナリオを与えられた自律的コントローラーがどのように応答するかを記述する、を含む動作を実行するよう１つまたは複数のプロセッサをプログラムする。
【０１１５】
Ｔ．段落Ｓに記載のシステムであって、第１のシーケンスは、少なくとも１つのサブシーケンスを含む。
【０１１６】
Ｕ．段落ＳまたはＴに記載のシステムであって、第１のシーケンスは、線形時相論理を使用して定義される。
【０１１７】
Ｖ．段落Ｓ〜Ｕのいずれかに記載のシステムであって、動作は、第１のシーケンスに関連付けられた直積を受け取ることであって、直積が２つ以上の変数と２つ以上の変数のうちの各変数に関連付けられた２つ以上の可能な値とを含み、２つ以上の変数のうちの各変数がプリミティブセットのうちのプリミティブに関連付けられ、２つ以上の変数のうちの各変数に関連付けられた２つ以上の可能な値の各可能な組み合わせを含む順列のセットを作成することと、シミュレーション環境内において順列のセットのうちの各順列をインスタンス化することであって、各順列が新しいシナリオに対応し、各新しいシナリオについての結果を決定することであって、結果が成功または不成功である、をさらに含む。
【０１１８】
Ｗ．段落Ｓ〜Ｖのいずれかに記載のシステムであって、動作は、プリミティブセットのうちの個々のプリミティブ間の異なるアソシエーションを定義する第２のシーケンスを受け取ることと、第２のシナリオを生成するためにシミュレーション環境内において第２のシーケンスをインスタンス化することとをさらに含む。
【０１１９】
Ｘ．段落Ｗに記載のシステムであって、動作は、第１のシーケンスおよび第２のシーケンスを実質的に同時にインスタンス化することをさらに含む。
【０１２０】
Ｙ．段落Ｓ〜Ｘのいずれかに記載のシステムであって、第１のシナリオに関連付けられた情報を決定することは、シミュレーション環境において作成された少なくとも１つのシナリオを与えられた自律的コントローラーがどのように応答するかを検証することを含む。
【０１２１】
Ｚ．段落Ｓ〜Ｙのいずれかに記載のシステムであって、第１のシナリオに関連付けられた情報を決定することは、シミュレーション環境において作成された少なくとも１つのシナリオを与えられた自律的コントローラーの作動空間を決定することを含む。
【０１２２】
ＡＡ．段落Ｓ〜Ｚのいずれかに記載のシステムであって、第１のシナリオに関連付けられた情報を決定することは、シミュレーション環境において作成された少なくとも１つのシナリオを与えられた自律的コントローラーがどのように応答するかを考慮して、自律的コントローラーの作動または設計の少なくとも一方を改善するためのフィードバックを生成することを含む。
【０１２３】
ＡＢ．実行されると１つまたは複数のプロセッサに、少なくとも１つのシミュレートされるシナリオを生成するためのシーケンスの一部としてプリミティブの可能な組み合わせのサブセットを受け取ることと、順列のセットを作成することであって、各順列がプリミティブの可能な組み合わせのサブセットからのプリミティブの１つの可能な組み合わせを含み、地図内において順列のセットのうちの各順列をインスタンス化することであって、各順列がシミュレートされるシナリオに対応し、各シミュレートされるシナリオについての結果を決定することであって、結果が成功または不成功である、を含む動作を実行させる命令のセットを有する非一時的なコンピューター読み取り可能な媒体。
【０１２４】
ＡＣ．段落ＡＢに記載の非一時的なコンピューター読み取り可能な媒体であって、動作は、順列のセットのうちの２つ以上の順列が同じ結果に関連付けられると決定することと、２つ以上の順列が冗長であると決定することと、将来のインスタンス化において２つ以上の順列のうちの各順列の代わりに２つ以上の順列のうちただ１つの順列をインスタンス化することとをさらに含む。
【０１２５】
ＡＤ．段落ＡＢまたはＡＣに記載の非一時的なコンピューター読み取り可能な媒体であって、地図内においてプリミティブの各順列をインスタンス化することは、実質的に同時に並列して実行される。
【０１２６】
結論
本明細書において説明される技法の１つまたは複数の実施例を説明したが、それらの様々な改変、追加、置換、および同等物は、本明細書において説明される技法の範囲内に含まれる。
【０１２７】
実施例の説明において、一部を形成する添付の図面に対する参照が行われ、図面は、特許請求される主題の具体的な例を実例として示している。他の例が使用されることができること、および例えば構造変更などの変更および改変が行われることができることが理解されるべきである。上記の例、変更または改変は、必ずしも、意図された特許請求される主題に関する範囲からの逸脱でない。本明細書におけるステップは、ある順序において提示されることができるが、いくつかの場合において、説明されるシステムおよび方法の機能を変更することなく、異なる時間に、または異なる順序において、ある入力が提供されるよう、順序付けは変更されることができる。開示される手順は、異なる順序で実行されることもできる。加えて、本明細書における様々な計算は、開示された順序において実行される必要はなく、計算の代わりの順序を使用する他の例が、容易に実施されることができる。並べ替えられるのに加えて、計算は、同じ結果を有するサブ計算に分解されることもできる。
【図１】
2020502615.tif 000004
【図２】
2020502615.tif 000005
【図３】
2020502615.tif 000006
【図４Ａ】
2020502615.tif 000007
【図４Ｂ】
2020502615.tif 000008
【図４Ｃ】
2020502615.tif 000009
【図４Ｄ】
2020502615.tif 000010
【図４Ｅ】
2020502615.tif 000011
【図５】
2020502615.tif 000012
【図６】
2020502615.tif 000013
【図７】
2020502615.tif 000014
【図８】
2020502615.tif 000015
【手続補正書】
【提出日】令和1年6月13日(2019.6.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
シミュレーション環境におけるシナリオを生成するための方法であって、
前記シナリオにおいてインスタンス化されるための少なくとも第１のプリミティブを定義する第１の命令を受け取るステップであって、前記第１のプリミティブが自律走行車に対応する、ステップと、
前記第１のプリミティブに割り当てられる１つまたは複数の値に関連付けられた第２の命令を受け取るステップと、
前記１つまたは複数の値に少なくとも部分的に基づいて、前記第１のプリミティブに関する順列のセットを作成するステップであって、前記順列のセットの各順列が前記１つまたは複数の値のうちの異なる値に関連付けられる、ステップと、
地図内において前記順列の各々をインスタンス化してシナリオセットを生成するステップであって、前記シナリオセットの各シナリオが前記順列のセットのうちの順列に対応する、ステップと、
前記シナリオセットのうちの個々のシナリオに関連付けられた情報を決定するステップであって、前記情報は、前記自律走行車に関連付けられた、前記シミュレーション環境において生成された前記個々のシナリオを与えられた自律的コントローラーがどのように応答するかを記述する、ステップと
を含むことを特徴とする方法。
【請求項２】
前記第１のプリミティブは、寸法の定義されたセット、姿勢、または前記シミュレーション環境において前記第１のプリミティブを描画するためのメッシュを有するもののうちの１つまたは複数に関連付けられることを特徴とする請求項１に記載の方法。
【請求項３】
前記姿勢は、慣性座標系、地図ベースの座標系、または走路ベースの座標系によって定義されることを特徴とする請求項２に記載の方法。
【請求項４】
前記第１のプリミティブは、前記第１のプリミティブが前記シナリオにおいてどのように振る舞うかを示すエンティティ挙動に関連付けられることを特徴とする請求項１ないし３のいずれか一項に記載の方法。
【請求項５】
前記第２の命令は、前記第１のプリミティブと少なくとも第２のプリミティブとの間のアソシエーションを定義するシーケンスをさらに含み、前記シーケンスが逐次順に実行される多数のステップを含むことを特徴とする請求項１ないし３のいずれか一項に記載の方法。
【請求項６】
前記第２のプリミティブは、第２のエンティティに対応し、前記第２のエンティティは、静的エンティティまたは動的エンティティであることを特徴とする請求項５に記載の方法。
【請求項７】
前記第２のプリミティブは、条件、動作、障害、またはノイズに対応することを特徴とする請求項５に記載の方法。
【請求項８】
前記第１の命令または前記第２の命令のうちの少なくとも１つは、線形時相論理を使用して定義されることを特徴とする請求項１ないし７のいずれか一項に記載の方法。
【請求項９】
実行されると１つまたは複数のプロセッサに請求項１ないし８のいずれか一項に記載の方法を実装させる命令を格納する非一時的なコンピューター読み取り可能な媒体。
【請求項１０】
シミュレーション環境におけるシナリオを生成するためのシステムであって、
１つまたは複数のプロセッサと、
請求項１ないし８のいずれか一項に記載の方法を実行する前記１つまたは複数のプロセッサによって実行可能な命令を格納する１つまたは複数の非一時的なコンピューター読み取り可能な媒体と
を備えたことを特徴とするシステム。
【国際調査報告】
2020502615.tif 000016
2020502615.tif 000017
2020502615.tif 000018