Main Content

Unreal Engine 環境でのビジョン センサーとレーダー センサーのシミュレーション

この例では、Epic Games® の Unreal Engine® シミュレーション環境を使用して Simulink® で追跡およびセンサー フュージョン用の合成データ シミュレーションを実装する方法について説明します。これはSimulink で合成レーダーおよびビジョン データを使用したセンサー フュージョンの例に忠実に従っています。

はじめに

Automated Driving Toolbox™ は、バーチャル ドライビング シナリオを作成、シミュレート、および可視化するためのツールを提供します。これらのシナリオを使用すると、まれなイベントや危険な可能性のあるイベントをシミュレートして、シナリオからレーダーとビジョンの合成検出を生成し、合成検出を使用して車両アルゴリズムをテストできます。この例では、3D シミュレーション環境を使用した Simulink での合成データ ワークフロー全体をカバーします。

モデルの設定と概要

この例を実行する前に、次の手順を使用してシナリオの道路、アクター、および軌跡が作成されています。

  1. Unreal Engine シミュレーションのウェイポイントの選択で説明している手法を使用して、Define Road Layouts Programmaticallyの 3D シーンの道路の部分から中心位置を抽出します。

  2. Driving Scenario Designerで、これらの抽出された位置が道路の中心値となる道路を作成します。

  3. Simulink で合成レーダーおよびビジョン データを使用したセンサー フュージョンで定義されているシナリオと同様の軌跡をもつ、道路上の複数の走行車両を定義します。

  4. ドライビング シナリオ デザイナーからシナリオ ファイル curved_road.mat を保存し、Scenario Reader ブロックを使用してそれらをモデルに読み込みます。

  5. Scenario Reader ブロックから車両の姿勢を出力し、ワールド座標に変換します。Cuboid to 3D Simulation ブロックを使用して、3D 車両ブロックに必要な X、Y、およびヨーに変換します。

Scenario Reader ブロックで提供されるアクターの姿勢は、シミュレーションの各タイム ステップにおける自車、先行車両、およびその他の車両の位置を定義するためにSimulation 3D Vehicle with Ground Followingブロックによって使用されます。

close;
if ~ispc
    error(['3D Simulation is supported only on Microsoft', char(174), ' Windows', char(174), '.']);
end

open_system('SimulateSensorsIn3DEnvironmentModel');

センサー検出のシミュレート

この例では、フロント バンパー上の 1 台のビジョン センサーと 6 台のレーダー センサーで 360 度の視野全体をカバーしている自車をシミュレートします。自車は、車両の前と後ろの両方に長距離レーダーを備えています。車両の右側と左側にはそれぞれ、2 台の短距離レーダーがあり、各レーダーが 90 度をカバーしています。両側にあるレーダーの一方のレーダーは、車両の真ん中から後ろをカバーしています。両側のもう一方のレーダーは、車両の真ん中から前をカバーしています。

Ego Sensors サブシステムには、前述のセンサーをモデル化する 1 つのSimulation 3D Vision Detection Generatorブロックと 6 つのSimulation 3D Probabilistic Radarブロックが含まれます。レーダー ブロックの出力は、Detection Concatenationブロックを使用して連結されます。次に、最上位モデルで、レーダーの出力とビジョンの出力を連結することで検出の単一ストリームが作成され、Multi-Object Trackerブロックによって融合されます。

open_system('SimulateSensorsIn3DEnvironmentModel/Ego Sensors')

確率レーダーはアクターの物理的寸法 (長さ、幅、高さなど) を "見る" だけでなく、アクターの "電気" サイズも感知します。アクターの電気サイズは、そのレーダー反射断面積 (RCS) と呼ばれています。シミュレーションでの車両の RCS パターンは、Simulation 3D Probabilistic Radar Configurationブロックを使用して定義されます。

このブロックを使用して、シミュレーションのすべてのアクターの RCS パターンを定義します。指定された RCS パターンをもたないアクターはすべて、既定の RCS 値を使用します。

追跡およびセンサー フュージョン

自車の一連のレーダーによって生成された検出は、Multi-Object Trackerブロックを使用して融合される前に、ヘルパー ブロック Detection Clustering を使用して前処理されます。Multi-Object Tracker は、対応する Simulink の例 (Simulink で合成レーダーおよびビジョン データを使用したセンサー フュージョン) で使用したのと同じパラメーターを使用して構成されます。Multi-Object Tracker ブロックからの出力は、確認済みのトラックのリストです。

表示

Bird's-Eye Scopeは、Simulink ツールストリップから開かれる、Simulink のモデルレベルの可視化ツールです。スコープを開いた後に、[信号の検出] をクリックして信号を設定します。次に、シミュレーションを実行して、エゴ アクター、レーダーとビジョンの検出、および追跡を表示します。次のイメージは、この例のスコープの表示を示しています。

シミュレーションが開始するときに、Unreal Engine シミュレーション環境を初期化するために数秒間必要です (特に、はじめて実行する場合)。この初期化が完了すると、別のウィンドウでシミュレーション環境が開きます。次のイメージは、前のイメージで示される鳥瞰図スコープのスナップショットに対応する、シミュレーション ウィンドウのスナップショットです。

シミュレートする車両は、シミュレーション ウィンドウに表示されます。シミュレーションによって生成される検出と追跡は、鳥瞰図スコープにのみ表示されます。

まとめ

この例では、ドライビング シナリオ デザイナー アプリで使用するために、3D シナリオから道路の中心を抽出する方法について学習しました。また、Simulink の 3D シミュレーション環境で使用するために、道路セグメントから作成された車両の軌跡をエクスポートする方法についても学習しました。さらに、Unreal Engine 環境で 1 つの確率カメラ モデルと複数の確率レーダー モデルを構成する方法、およびマルチオブジェクト トラッカーを使用して自車の周囲にある複数のセンサーからの検出を融合する方法について学習しました。トラッカーによって生成された確認済みの追跡は、その後アダプティブ クルーズ コントロール (ACC) や前方衝突警告 (FCW) などの制御アルゴリズムに使用できます。

close_system('SimulateSensorsIn3DEnvironmentModel');

参考

アプリ

ブロック

関連するトピック