このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
Unreal Engine を使用した未踏環境における UAV の安全な着陸のシミュレーション
この例では、Unreal Engine® を使用して、未踏環境における無人航空機 (UAV) の安全な着陸操作をシミュレートする方法を説明します。未踏環境で安全に動作するには、UAV は自律的に安全に着陸できる機能を備えている必要があります。UAV がバッテリーやナビゲーション システムの異常などの重大な異常を検出した場合、UAV は環境をスキャンし、安全な着陸ゾーンを決定し、障害物に衝突することなく安全に着陸できなければなりません。
この例では、LiDAR センサー データを使用して未踏環境のマップを作成し、マルチローター UAV 用の安全な着陸領域を決定します。
安全な着陸操作は、次の操作モードで構成されます。
Mission Mode — UAV はミッション ウェイポイントで指定された飛行経路を飛行します。
Emergency Mode — UAV は LiDAR センサーから収集された点群データから環境マップを作成します。
Hover and Detect Mode — UAV はホバリングし、マップを使用して安全な着陸ゾーンを特定します。
Land Mode — 安全な着陸ゾーンが決定されると、UAV は着陸します。
この例では、Simulink® モデルに組み込まれている Stateflow® チャートを使用して安全着陸操作モードを実装します。
次の手順に従って安全な着陸操作をシミュレートします。
Simulink® モデルで UAV ミッション ウェイポイントを指定します。
Unreal Engine® で Simulink モデルと Suburban シーンとのインターフェイスをとります。
LiDAR センサーを搭載した UAV を追加します。
緊急時間を指定します。
Simulink モデルを実行します。
モデルの概要
uavSafeLanding.slx
は次のサブシステムで構成されます。
Safe Landing Stateflow Chart — Stateflow チャートを使用して、安全な着陸操作のさまざまな操作モードを実装します。
3D Simulation Environment — Unreal Engine® を使用して 3D シミュレーション環境をレンダリングします。
3D Lidar Sensor — Unreal Engine® を使用してレンダリングされた 3D シミュレーション環境で任意の LiDAR センサーをシミュレートします。
Plant + Controller — UAV プラント モデルと位置コントローラーをシミュレートします。
Simulink モデルを開きます。
open_system("uavSafeLanding.slx")
NED フレームでミッション ウェイポイントを指定します。
mission = [41 15.3 0; 41 15.3 -50; 100 -100 -50; 100 -100 0];
Emergency Time ブロックの [Emergency time (s)] パラメーターを指定して、緊急モードがトリガーされる時間を秒単位で設定します。
Safe Landing Stateflow Chart
この例では、Stateflow® チャート ステートを使用して各安全着陸操作モードを表します。
チャートは次のステートで構成されます。
MissionMode — Mission Mode ステートを表します。このステートでは、UAV は緊急モードがトリガーされるまで、離陸時からのミッション ウェイポイントで指定された飛行経路を飛行します。UAV はWaypoint Followerブロックを使用して、現在の姿勢、前方注視距離、および指定されたミッション ウェイポイントに基づいて、Controller サブシステムの目的の姿勢を計算します。
EmergencyMode — Emergency Mode ステートを表します。Emergency Mode (
mode == 2
) は、[Emergency time (s)] パラメーターで指定された時間にトリガーされます。このモードでは、UAV は LiDAR センサーを使用して点群データを収集し、未踏環境のマップを作成します。マップの作成が完了すると、このモードはisMapDone
をtrue
に設定し、UAV は Hover and Detect Mode に遷移します。
HoverAndDetect — Hover and Detect Mode ステートを表します。このステートでは、UAV はホバリングし、生成されたマップを使用して安全な着陸エリアを決定します。詳細については、Determine Safe Landing Area for Aerial Vehicles (Lidar Toolbox)の例を参照してください。UAV が安全な着陸エリアを決定すると、このモードは
isDetected
をtrue
に設定し、Land Mode をトリガーします。次のマップでは、UAV (緑の点) と安全な着陸ゾーン (赤の点) が示されています。
LandMode — Land Mode ステートを表します。このステートでは、UAV は水平に移動し、着陸エリアの上でホバリングします。着陸エリアに到達した後、UAV は垂直に降下して着陸します。
3D Simulation Environment
このサブシステムは、Unreal Engine® 環境でシーンと UAV を構成します。sim3d.maps.Map.Server
から Suburban シーンをダウンロードして、Simulation 3D Scene Configurationブロックを構成します。Simulation 3D UAV Vehicleブロックでクワッドローター ビークルを選択します。このサブシステムの構成の詳細については、Simulate Simple Flight Scenario and Sensor in Unreal Engine Environmentの例を参照してください。
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","SimulationCommand","update"); 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 度の相対ピッチ回転があることに注意してください。
プラントおよびコントローラー
Plant + Controller
サブシステムは、クワッドローター プラント モデルとコントローラーで構成されます。クワッドローター プラントは、Guidance Modelブロックを使用した低次元化されたマルチローター UAV モデルを表し、制御と環境の入力に基づいて UAV の状態を推定します。このコントローラーは、外側の PID 位置コントローラーと内側の姿勢 PID コントローラーで構成されます。このコントローラーは、目的の位置、目的のヨー、および UAV の状態からロール、ピッチ、ヨー、および推力の制御コマンドを計算します。
UAV の安全な着陸のシミュレーション
シミュレーションを開始します。UAV は最初のウェイポイントから離陸し、後続のウェイポイントに移動します。UAV は、Emergency Mode が開始すると、安全な着陸ゾーンを計算して着陸します。
sim("uavSafeLanding.slx")
Warning: Method 'getInstance' is not defined for class 'CloneDetector.ExclusionEditorUIService' or is removed from MATLAB's search path.
ans = Simulink.SimulationOutput: logsout: [1x1 Simulink.SimulationData.Dataset] tout: [191701x1 double] SimulationMetadata: [1x1 Simulink.SimulationMetadata] ErrorMessage: [0x0 char]
まとめ
この例は、マルチローター 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