Main Content

このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。

飛行機の飛行に Unreal Engine のビジュアライゼーションを使用する

この例では、Aerospace Simulation 3D ライブラリ ブロックを使用して Unreal Engine® の視覚化を追加する方法を示します。この例では、Sky Hogg 飛行機が事前に構築された空港シーンの上を飛行します。3D 視覚化を組み込んだ最終モデルを表示するには、SkyHoggSim3DExampleModel を開きます。

メモ: この例は Simulink Online ではサポートされていません。

Sky Hogg サンプルモデルから始める

軽量飛行機設計の例で使用されるモデル asbSkyHogg を開きます。

SkyHoggSim3DEM.png

このモデルは、Visualization サブシステムの FlightGear を使用して視覚化するように設定されています。この例では、Unreal Engine® を使用してその実装を置き換える方法を示します。

Visualization サブシステムを開き、In1 と Bus Selector1 以外のすべてを削除します。

シミュレーション 3D アニメーション ブロックの追加

ライブラリ ブラウザを使用して、Aerospace Blockset > Animation > Simulation 3D に移動します。

モデルへ:

  1. Simulation 3D Scene Configuration、Simulation 3D Aircraft、および Simulation 3D Sky Hogg Pack ブロックを追加します。

  2. Scope ブロックを追加し、航空機の高度ポートに取り付けます。

  3. シミュレーション 3D 航空機 WoW ポートを終了します。

WoW (Weight on Wheels) ポートは、左または右のメイン ギア タイヤが表面上にある場合 (つまり、高度がゼロの場合) は論理 true を返し、それ以外の場合は false を返します。この例では航空機が飛行しているため、このポートは使用されません。

Simulation 3D Aircraft ブロックの設定

Simulation 3D Aircraft ブロックをダブルクリックして開き、航空機パラメータ タブと 高度センサー タブの値を設定します。

航空機パラメータタブ

航空機パラメータタブで:

  • タイプパラメータをSky Hogg .に設定します

  • 希望の色を選択してください。

  • デフォルト名の SimulinkVehicle1 のままにします。

  • ブロックが Simulation 3D Scene Configuration ブロックのサンプル時間を使用できるようにするには、サンプル時間 の値を -1 のままにします。

入力ポートの初期条件は、初期値 グループで指定されます。それぞれ 11 行 3 列の配列である必要があります。Sky Hogg の各行に関連付けられた航空機コンポーネントは次のとおりです。

この例では、初期移動の値を [0 0 -2000; zeros(10, 3)] に変更し、初期回転の値を zeros(11, 3) のままにします。-2000 メートルの Z 値は、初期高度 (NED) の負の値です。

高度センサータブ

高度センサーはオプションであり、このタブの 高度センサーと WoW センサーを有効にする チェックボックスでオンとオフを切り替えることができます。このセンサーは、航空機の機体と各車輪から垂直に光線追跡を送信することで機能します。高度は、規定された有限の長さの光線が物体に当たった場合にのみ感知されます。Z オフセット値は、各光線の開始点を、航空機の本体の原点または車輪の中心から指定された垂直 (下方向) 距離に配置します。たとえば、フロント タイヤ半径 (m) に入力された Z オフセット値が、選択した航空機メッシュの実際のフロント タイヤ半径である場合、航空機の前輪タイヤが舗装路面に接しているときに返される 2 番目の高度値はゼロになります。

今のところはデフォルト設定のままにしておきます。

Simulation 3D Scene Configuration ブロックの設定

Simulation 3D Scene Configuration ブロックの構成を確認します。シーン ソースDefault Scenes に設定され、Airport シーンが選択されている必要があります。シーン ビュー の場合は、Simulation 3D Aircraft ブロックに入力された名前を使用します。デフォルトでは SimulinkVehicle1 です。サンプル時間1/60 程度で問題ありません。フレーム レートを上げるには、より小さい値を使用します。天気を試してみるには、天気 タブのコントロールを参照してください。Unreal Engine® の天候は現時点では単なる視覚的な空の効果であり、実際の風のベクトルや力などは存在しないことに注意してください。

シミュレーション 3D 航空機を Sky Hogg の移動と回転に接続する

残りの手順は、Simulation 3D Aircraft ブロックへの変換ポートと回転ポートの入力を構成することです。これらのポートは、Sky Hogg を使用する場合、すべてのタイム ステップで 11 バイ 3 の配列入力を想定しています。詳しい説明については、Simulation 3D Aircraft ブロックのリファレンス ページを参照してください。モデルでは制御面の動きが提供されていないため、BODY の値のみを変更します。

バスセレクターを再構成して、Xebody angles のみを出力するようにします。

Simulation 3D Sky Hogg Pack ブロックの出力ポートを Simulation 3D Aircraft ブロックの入力ポートに接続します。次に、バス セレクターからの Xe 信号をパック ブロックの Body_T 入力ポートに接続します。

回転するには、body angles バスを 1 行 3 列のベクトルに再構成する必要があります。これを実行するためのサブシステムを作成します。バス セレクターを使用して入力から 3 つの角度を取得し、それらを Vector Concatenate ブロックに送り込み、次に Reshape ブロックを使用して 2D 行ベクトルを出力します。

Visualization サブシステムは次のようになります。

FirstSkyHogg.png

シミュレーション

モデルを実行する準備ができました。

  • 実行 ボタンを押した後、3D 視覚化ウィンドウが初期化されるまで数秒待ちます。

  • 飛行機が空港の上を飛んでいるのが見えるはずです。

  • シミュレーションが開始したら、まず 3D ウィンドウ内で左クリックし、次に数字キー 0 から 9 を使用して、事前設定された 10 個のカメラ位置から選択することで、カメラ ビューを切り替えることができます。カメラ ビューの詳細については、「Simulink と Unreal Editor を使用してシーンをカスタマイズする」の「シミュレーションの実行」セクションを参照してください。

シミュレーションインタラクションの可視化の改善

高度の変化が非常に小さい(50 メートル)ため、3D ウィンドウで高度の増加を確認するのは困難です。説明のために、Gain ブロックを追加して、変換 Z 値を増やします。

プロペラの回転を追加する

このシーンはプロペラが回転していないため、あまり現実的ではありません。プロペラの回転は通常モデルでは計算されませんが、回転速度を選択することができます。1500 RPM、つまり 157 ラジアン/秒で回転させるには、ロール (phi) 角度の Ramp ブロックを追加します。変更された Sky Hogg Rotation サブシステムは次のようになります。

SkyHoggSim3DEM_VisualizationRotation.png

パック ブロック マスクを開き、プロペラの回転チェック ボックスをオンにして、OK をクリックしてマスクを閉じます。Propeller_R ポートが表示されます。Sky Hogg RotationProp_R ポートをこのポートに接続します。

最終的な Visualization サブシステムは次のようになります。

FinalSkyHogg.png

高度センサー光線

一見すると、高度センサー Scope ブロックは動作していないように見えます (-1 値を返します)。これは高度が光線の長さよりも大きいためです。Simulation 3D Aircraft ブロック マスクを開き、光線の長さ (m)2500 に変更します。光線を表示する場合は、ビューアでセンサー光線を表示するチェックボックスをオンにします。シミュレーションを再度実行します。2 つのスコープの高度出力により、それが確かに規定の場所にあることが検証されます。可視センサー光線が有効になっている場合、光線は地面に当たっているため赤色で表示されます。光線の長さを変えずに、光線が地面に到達しないため、光線は緑色で表示されます (表示される場合)。

シミュレーション 3D 可視化モデルの更新

次のサンプル モデルでは、これらの手順がすべて完了しています。

mdl = "SkyHoggSim3DExampleModel";
open_system(mdl);

参考

|

関連するトピック