Main Content

Unreal Engine を使用した未踏環境における UAV の安全な着陸のシミュレーション

この例では、Unreal Engine® を使用して、未踏環境における無人航空機 (UAV) の安全な着陸操作をシミュレートする方法を説明します。未踏環境で安全に動作するには、UAV は自律的に安全に着陸できる機能を備えている必要があります。UAV がバッテリーやナビゲーション システムの異常などの重大な異常を検出した場合、UAV は環境をスキャンし、安全な着陸ゾーンを決定し、障害物に衝突することなく安全に着陸できなければなりません。

この例では、LiDAR センサー データを使用して未踏環境のマップを作成し、マルチローター UAV 用の安全な着陸領域を決定します。

安全な着陸操作は、次の操作モードで構成されます。

  1. Mission Mode — UAV はミッション ウェイポイントで指定された飛行経路を飛行します。

  2. Emergency Mode — UAV は LiDAR センサーから収集された点群データから環境マップを作成します。

  3. Hover and Detect Mode — UAV はホバリングし、マップを使用して安全な着陸ゾーンを特定します。

  4. Land Mode — 安全な着陸ゾーンが決定されると、UAV は着陸します。

この例では、Simulink® モデルに組み込まれている Stateflow® チャートを使用して安全着陸操作モードを実装します。

次の手順に従って安全な着陸操作をシミュレートします。

  1. Simulink® モデルで UAV ミッション ウェイポイントを指定します。

  2. Unreal Engine® で Simulink モデルと Suburban シーンとのインターフェイスをとります。

  3. LiDAR センサーを搭載した UAV を追加します。

  4. 緊急時間を指定します。

  5. Simulink モデルを実行します。

モデルの概要

uavSafeLanding.slx は次のサブシステムで構成されます。

  1. Safe Landing Stateflow Chart — Stateflow チャートを使用して、安全な着陸操作のさまざまな操作モードを実装します。

  2. 3D Simulation Environment — Unreal Engine® を使用して 3D シミュレーション環境をレンダリングします。

  3. 3D Lidar Sensor — Unreal Engine® を使用してレンダリングされた 3D シミュレーション環境で任意の LiDAR センサーをシミュレートします。

  4. Plant + Controller — UAV プラント モデルと位置コントローラーをシミュレートします。

Simulink モデルを開きます。

open_system("uavSafeLanding.slx") 

Emergency Time ブロックの [Emergency time (s)] パラメーターを指定して、緊急モードがトリガーされる時間を秒単位で設定します。

Safe Landing Stateflow Chart

この例では、Stateflow® チャート ステートを使用して各安全着陸操作モードを表します。

チャートは次のステートで構成されます。

  • MissionMode — Mission Mode ステートを表します。このステートでは、UAV は緊急モードがトリガーされるまで、離陸時からのミッション ウェイポイントで指定された飛行経路を飛行します。UAV はWaypoint Follower (UAV Toolbox)ブロックを使用して、現在の姿勢、前方注視距離、および指定されたミッション ウェイポイントに基づいて、Controller サブシステムの目的の姿勢を計算します。

  • EmergencyMode — Emergency Mode ステートを表します。Emergency Mode (mode == 2) は、[Emergency time (s)] パラメーターで指定された時間にトリガーされます。このモードでは、UAV は LiDAR センサーを使用して点群データを収集し、未踏環境のマップを作成します。マップの作成が完了すると、このモードは isMapDonetrue に設定し、UAV は Hover and Detect Mode に遷移します。

  • HoverAndDetect — Hover and Detect Mode ステートを表します。このステートでは、UAV はホバリングし、生成されたマップを使用して安全な着陸エリアを決定します。詳細については、Determine Safe Landing Area for Aerial Vehiclesの例を参照してください。UAV が安全な着陸エリアを決定すると、このモードは isDetectedtrue に設定し、Land Mode をトリガーします。次のマップでは、UAV (緑の点) と安全な着陸ゾーン (赤の点) が表示されています。abcdefg.png

  • LandMode — Land Mode ステートを表します。このステートでは、UAV は水平に移動し、着陸エリアの上でホバリングします。着陸エリアに到達した後、UAV は垂直に降下して着陸します。

3D Simulation Environment

このサブシステムは、Unreal Engine® 環境でシーンと UAV を構成します。sim3d.maps.Map.Server から Suburban シーンをダウンロードして、Simulation 3D Scene Configuration (UAV Toolbox)ブロックを構成します。Simulation 3D UAV Vehicle (UAV Toolbox)ブロックでクワッドローター ビークルを選択します。このサブシステムの構成の詳細については、Simulate Simple Flight Scenario and Sensor in Unreal Engine Environment (UAV Toolbox)の例を参照してください。

sim3d.maps.Map.server;
        MapName                        Description                    Version
    ________________    __________________________________________    _______

    "Suburban scene"    "a suburban area beyond the city's border"      "1"  
sim3d.maps.Map.download("Suburban scene");
Map is successfully downloaded and is up-to-date
sim3d.maps.Map.local;
        MapName                        Description                    Version
    ________________    __________________________________________    _______

    "Suburban scene"    "a suburban area beyond the city's border"      "1"  
set_param("uavSafeLanding/Simulation 3D Scene Configuration","SceneDesc","Suburban scene");

3D Lidar Sensor

Simulation 3D Lidar ブロックを使用して、LiDAR センサーを UAV に取り付けます。航空アプリケーションで一般的に使用される VLP-16 Velodyne LiDAR センサー [1] をモデル化するためにパラメーターを設定します。LiDAR センサーには、センサーが地面をスキャンできるように 90 度の相対ピッチ回転があることに注意してください。

LidarParams.jpglidarMount.png

プラントおよびコントローラー

Plant + Controller サブシステムは、クワッドローター プラント モデルとコントローラーで構成されます。クワッドローター プラントは、Guidance Model (UAV Toolbox)ブロックを使用した低次元化されたマルチローター UAV モデルを表し、制御と環境の入力に基づいて UAV の状態を推定します。このコントローラーは、外側の PID 位置コントローラーと内側の姿勢 PID コントローラーで構成されます。このコントローラーは、目的の位置、目的のヨー、および UAV の状態からロール、ピッチ、ヨー、および推力の制御コマンドを計算します。

PlandAndController.jpg

UAV の安全な着陸のシミュレーション

NED フレームでミッション ウェイポイントを指定します。

mission = [41 15.3 0; 41 15.3 -50; 100 -100 -50; 100 -100 0];

シミュレーションを開始します。UAV は最初のウェイポイントから離陸し、後続のウェイポイントに移動します。UAV は、Emergency Mode が開始すると、安全な着陸ゾーンを計算して着陸します。

sim("uavSafeLanding.slx")

Figure contains an axes object. The axes object contains an object of type scatter.

Figure contains an axes object. The axes object contains 3 objects of type scatter.

Figure UAV Animation contains an axes object. The axes object with xlabel North, ylabel West contains 5 objects of type patch, line.

まとめ

この例は、マルチローター UAV の安全な着陸操作の実装を示しています。LiDAR センサー データを使用して Unreal Engine® の未踏環境のマップが作成され、安全な着陸領域が決定されます。この例は、Stateflow® を使用して安全な着陸操作のさまざまなモードを実装する方法も示しています。

参考文献

[1] VLP-16 User Manual. https://velodynelidar.com/wp-content/uploads/2019/12/63-9243-Rev-E-VLP-16-User-Manual.pdf