数十年にわたるロボット工学の経験を持つこのチームは、安全で適応性に優れたソリューションを市場に提供できると確信しています。その安全面を実証することが重要な課題であり続けています。シミュレーション担当リードの Pete Melick 氏は次のように説明します。「高速道路を何マイルも走る間に、困難な状況に遭遇する確率は非常に低いものです。発生する可能性はあるが通常のトラックにはそれほど頻繁に発生しない、極端な状況のいかなる組み合わせにもトラックが耐えうることを統計学的に実証するのは、かなり困難です。文字通り何千万マイルもの走行が必要になります」
シミュレーションへのハイブリッドなアプローチ
そこで、チームは主要な検証ツールとしてシミュレーションを使うことを決めました。自動運転には 2 種類のシミュレーションがあり、それぞれ長所と短所があります。Ike は、この両方を使うことで、それぞれの長所を生かしています。ログ シミュレーションとは、実際の運転から自動化システムにデータを取り込むことです。実際の運転データを使用するメリットは、ログのデータには、実際のセンサーや実際の相互作用の微妙な不完全さがすべて含まれることです。ただし、閉ループ制御が可能ではないというデメリットもあります。言い換えれば、現実世界のログに記録されたシーンは、シミュレートする車の動きに応じて変えられないということです。自動運転トラックが速度を落としても、シミュレーション内のその他の車はその変化に反応しないため、シミュレーションはその効果の多くが失われます。

ログ シミュレーションで、シミュレートしている車の動き (青) が記録されている車 (赤) から逸脱している様子
バーチャル シミュレーションでは、ビデオ ゲームのように、創作したシナリオと、反応を返すアクターを使用します。バーチャル シナリオでは、ログ シミュレーションとは異なり、ほかの車が自動化システムの動きに反応できます。バーチャル シミュレーションはシナリオ単位で行います。各シナリオは、トラックが高速道路を走行している間に遭遇する可能性がある特定の状況を表します。バーチャル シミュレーションでは、シナリオを決定するパラメータをプロシージャルに変化させて、似ているが異なるシナリオを多数作成できます。こうしたシナリオのそれぞれをバリエーションと呼びます。バリエーションにより、考えられる無数の状況で自動化ソフトウェアをテストできます。
Ike では、別の自動運転企業 Nuro からコード ベースを事前に入手していたことが、シミュレーション開発に役立ちました。そのコード ベースは 2 年間の開発作業の成果であり、Melick 氏はそれをロボット工学向けの世界最高水準のインフラストラクチャと表現します。これには、ビジュアライゼーション、マッピング、オンボード インフラストラクチャ、クラウド インフラストラクチャ、機械学習、パイプラインのラベリング、ログ シミュレーションなどの基本的なテクノロジーが含まれています。チームは、これを出発点として、メンバー独自の専門知識を加えていきました。
Unreal Engine でのシナリオ設計
チームはバーチャル シミュレーション ツールの開発に Unreal Engine を使用することを決め、1 年かけて、多くの標準機能をニーズに合わせて拡張しました。Melick 氏によると、バーチャル シミュレーションに関わる人なら誰でも閉ループ制御とバリエーションのメリットを認識していますが、すべての人がこれらを同じ方法で導入しているわけではありません。
「私たちが他社と異なるのは、バーチャル シミュレーション ツールの主要コンポーネントとしてゲーム エンジンを取り入れた範囲です。Unreal Engine などのゲーム エンジンを使用している会社はほかにもありますが、他社は一定の距離を置き、単なる画像ジェネレーターとして別のシミュレーション ツールと併用しています」
プロセスの第一歩として、Ike は Unreal Engine のレベル エディタをカスタマイズしてシナリオ設計ツールにしました。
Ike のトラックは、LiDAR の強度と標高のデータから構成される高解像度のマップを使ってその位置を計算します。このデータが収集、処理されて、車線の中央や境界になります。同じマップ データが Landscape API を使って Unreal Engine にもストリーミングされるため、チームはこのデータを使ってシナリオを設計、実行できます。

Unreal Editor 内で Ike のマップ上のシナリオを設計
自動化システムに必要なマップ データは、オープン ソース形式のデータとして容易に手に入るものよりも、高い解像度が必要です。Ike は、必要なデータを収集するため、LiDAR スキャナーを 2 台装備した特殊なマッピング車を用意し、実際に高速道路を走らせています。この方法により、必要なデータを完全に社内で調達できるため、マッピングカーの走行が可能な場所ならどこでもシミュレーションできます。
マップのインポートが済めば、シナリオの設計に必要なほとんどの構成要素は標準で備わっています。時間または距離に基づくトリガー、アクターが辿るスプライン、効率的な環境クエリ システム、機能豊富でカスタマイズ可能な GUI、複雑な動きを自由に設計できるスクリプティング言語を利用できます。
「ゲーム エンジンは、現実さながらの生き生きとした世界を構築するためのツールです。レベル内でプレーヤーが判断を下し、世界が現実的な反応を示します」と Melick 氏は言います。「シナリオも同様です。ただし、プレーヤーがロボットである点だけが異なります」
このロボットは、どのようにシミュレーター内のアバターをコントロールすればいいのでしょうか。また、シミュレーターは、どのように必要なインプットをロボットに提供すればいいのでしょうか。Ike の自動化ソフトウェアは複数のコード モジュールから構成され、これらのモジュールは Google Protocol Buffer のメッセージで相互にやり取りします。チームは、Unreal Engine にわずかな変更を加え、同じメッセージを送受信できるようにしました。シミュレーター内のどのアクター、コンポーネントも、オンボード ソフトウェア モジュールと同様に、任意のメッセージのパブリッシュまたはサブスクライブが可能です。

Ike のログ ビューア (左) とシミュレーター (右) で再生されるシナリオ。アニメーション提供:Ike
現在の設定では、シミュレーターがモック オブジェクトの検知をパブリッシュし、これがトラッキング ソフトウェアに送られます。また、シミュレーターは、ステアリング、スロットル、ブレーキのコマンドをサブスクライブし、シミュレートしている車の動きをこれらのコマンドがコントロールします。
Ike は、Unreal Engine の AI Perception システムを使用して、シミュレート対象エージェントにインテリジェントな動きも加えています。たとえば、マップ内の車線や事前に定められたスプラインに沿っているとき、経路上の障害物を検知し、IDM ベースのスピード コントローラを使用して衝突を回避できます。
ブループリントの活用
チームは、設計担当者がシナリオの範囲を拡大できるよう、Unreal Engine のビジュアル スクリプティング システムであるブループリントに機能を公開しています。「私たちがどれだけスピーディに作業を進めても、シナリオ設計担当者の想像のスピードを越えることはできません」と Melick 氏は言います。「私たちは、設計の担当者が効率的に、反復可能な方法でシナリオを作成できるよう支える必要があります」
ブループリントを使用すれば、設計担当者が新たな挙動や演出を作成できます。たとえば、パラメータ化した期間と振幅に従い、アクターを左右に蛇行させることができます。あるいは、自律走行ソフトウェアに送られる検知結果にシミュレートしたノイズを加え、不完全な入力への感度をテストできます。さらに、キーボードで制御されるアクターをブループリントを使って作成し、C++ コードを 1 行も記述することなくシミュレート対象のトラックを操作することもできます。

シミュレートする自律走行の入力にブループリントでノイズを追加
ブループリントは、Ike のバリエーション システムにとっても重要です。設計担当者が可変パラメータを追加するには、アクターにコンポーネントを追加し、そのパラメータを変化させる影響を定義するブループリント関数を実装します。
「この方法で、シナリオのあらゆるプロパティを変えることができます」と Melick 氏は言います。「任意のアクターの位置、向き、速度、サイズを変えられます。また、アクターの目的地、望ましい車間距離、どの程度積極的に車線変更するかを変えることもできます。ブループリントで表現できるものなら何でも可能です」
シミュレーターとしてゲーム エンジンを使用することに対して、批判があることも Melick 氏は把握しています。その批判は、ゲーム エンジンを使ったシミュレーションは決定論的ではない、つまり同じシミュレーションを繰り返し実行した場合に結果がまったく同じになるという特性が認められないというものです。
「この想定は間違っています」と Melick 氏は言います。「Ike のシミュレーターは決定論的であり、スピーディで反復可能なオフライン テストが可能です。自律走行のシミュレーションにおける Unreal の活用には、まだ大きな可能性があります。現在、多くの刺激的なプロジェクトが進行中です。たとえば、バーチャル シミュレーションを反復可能な Hardware-in-the-Loop (HIL) テストに使用したり、実際の走行からバーチャル シナリオを自動的に生成したりするプロジェクトがあります」

Ike のシミュレーションでバーチャル車両を手動運転。アニメーション提供:Ike
運転手のいないトラックが高速道路を安全に走行するにはまだ時間がかかりそうですが、Ike が Unreal Engine でシナリオを作成するたびに、この目標に一歩近づくことになります。そう考えると心強く感じます。Unreal Engine の可能性をトレーニングやシミュレーションに活用する方法について関心を抱かれた場合は、お問い合わせください。