Main Content

UAV の荷物配送

この例では、インクリメンタルな設計反復の全体を説明しています。市街地環境のさまざまな場所における小型マルチコプターの離陸、飛行、および着陸のシミュレーションを実装する方法を学習します。

プロジェクトを開く

はじめに、ドキュメンテーションの [ライブ スクリプトを開く] をクリックするか、関数 openExample を使用して、ライブ スクリプト例を開いてサポート ファイルにアクセスします。

openExample('uav/UAVPackageDeliveryExample');

次に、Simulink™ プロジェクト ファイルを開きます。

prj = openProject('uavPackageDelivery.prj');

モデル アーキテクチャと技法

最上位モデルは、次のサブシステムとモデル参照で構成されています。

  1. Ground Control Station:飛行中の航空機の制御と監視に使用します。

  2. External Sensors - Lidar & Camera:以前に設計したシナリオ、またはフォトリアリスティックなシミュレーション環境との接続に使用します。これらにより、航空機の飛行中に環境から LiDAR の読み取り値が生成されます。

  3. On Board Computer:Autopilot から独立しているオンボード コンピューターで実行することを意図したアルゴリズムの実装に使用します。

  4. Multirotor:低忠実度および中忠実度のマルチコプター モードと、ガイダンス ロジックを含むフライト コントローラーを含みます。

このモデルの設計データは、"data" フォルダー内の Simulink™ データ ディクショナリ (uavPackageDeliveryDataDict.sldd) にあります。さらに、このモデルでは、Variant Subsystem を使用した個別の階層でのバリエーションの実装 (Simulink)を使用してモデルのさまざまな構成を管理しています。ベース ワークスペースに配置された変数によりこれらのバリアントが構成されるため、データ ディクショナリを変更する必要がありません。

例の手順の実行

[プロジェクト ショートカット] を使用して、例の手順を進めます。各ショートカットは、プロジェクトに必要な変数を設定します。

1. はじめに

プロジェクト ショートカット [Getting Started] をクリックすると、低忠実度のマルチローター プラント モデルを使用して、4 点のウェイポイントをもつミッション用のモデルが設定されます。uavPackageDelivery モデルを "実行" します。これにより、マルチローターの離陸、飛行、および着陸が 3-D プロットに表示されます。

UAVPackageDeliveryBasicMissionAnimation.png

このモデルでは、飛行中のアクティブなウェイポイントを判定するために、UAV Path Manager ブロックを使用しています。アクティブなウェイポイントは Stateflow™ チャート "Guidance Mode Selector" に渡され、必要な内部ループ制御コマンドが生成されます。

2.GCS への接続

基本ミッションに従う飛行が可能になったら、シミュレーションをグラウンド ステーション ソフトウェアと統合して、航空機のミッションをよりよく制御できます。このためには、Ground Control Station ソフトウェア QGroundControl をダウンロードしてインストールする必要があります。

このモデルでは、UAV Toolbox™ のmavlinkio を使用して、Simulink と QGroundControl との接続を確立しています。この接続は、 uavPackageDelivery/Ground Control Station/Get Flight Mission/QGC/MAVLink Interface 内の MATLAB® System ブロックとして実装されます。

Simulink と QGroundControl との接続をテストするには、次の手順に従います。

  1. プロジェクト ショートカット "Connecting to a GCS" をクリックします。

  2. QGroundControl を起動します。

  3. QGroundControl で、/utilities/qgc にある shortMission.plan という名前のミッション計画を読み込みます。

  4. シミュレーションを "実行" します。

  5. QGroundControl により、システムに接続していることが示されたら、ミッションをアップロードします。

航空機が離陸したら、以下に示すように QGC によって送信されたミッションに従う UAV の飛行が表示されます。

UAVPackageDeliveryQGCShortMissionResized.png

ウェイポイントを追加したり、既にミッションにあるウェイポイントを削除したりして、ミッションを変更できます。ミッションをアップロードすると、航空機はそれらの変更に応答するはずです。

3. 直方体シナリオの設定

航空機のモデルがグラウンド コントロール ステーションから飛び立てるようになったので、航空機が飛行する環境を検討します。この例では、uavScenario オブジェクトを使用して、直方体シナリオにいくつかの市街地ブロックがモデル化されています。このシナリオは、左下の図に示されている市街地ブロックに基づいています。

Scenario.png

このタイプのシナリオで航空機を安全に飛行させるには、LiDAR センサーなど、環境の情報をモデルに提供するセンサーが必要です。この例では、UAV シナリオに追加された uavLidarPointCloudGenerator オブジェクトと、uavSensor オブジェクトを使用します。LiDAR センサー モデルは、センサーの姿勢と環境内の障害物に基づいて、読み取り値を生成します。

ショートカット [Setting a Cuboid Scenario] をクリックして、モデルを "実行" します。モデルを実行すると、航空機が直方体環境を飛行するにつれて LiDAR の点群イメージが表示されます。

4. 障害物回避

環境内の障害物を回避するために、モデルは UAV が環境でミッションに従って飛行するときに使用可能なセンサー データを使用する必要があります。モデル コンフィギュレーションを変更するには、ショートカットの [Obstacle Avoidance] または [3D Obstacle Avoidance] をクリックします。直方体環境で建物に最も近い点を示すスコープが表示されます。ショートカット [Obstacle Avoidance] は、モデルが平面的な LiDAR 情報とVector Field Histogram (Navigation Toolbox)を使用し、現在の x-y 平面における UAV の方向を変更することにより障害物を回避するようにモデルを構成します。ショートカット [3D Obstacle Avoidance] は、モデルが 3D LiDAR 情報とObstacle Avoidanceを使用し、3D 空間における UAV の方向を変更することにより障害物を回避するようにモデルを構成します。

モデルを "実行" します。"Obstacle Avoidance" モードでは、モデルの実行に伴って航空機は荷下ろし場所まで建物の間を直線経路で飛行しようとしますが、経路上の障害物を回避するために経路を逸脱します。障害物までの距離の経時的変化を観察し、"3D Obstacle Avoidance" モードでの類似の動作を観察します。このモードでは UAV が高度を調整して障害物の上を飛行できるためです。

5.フォトリアリスティックなシミュレーション

これまでの環境はシンプルな直方体シナリオでした。環境の忠実度を上昇させるために、ショートカット [Photorealistic Simulation] をクリックします。これにより、航空機はより現実的な世界に配置されて飛行します。uavPackageDelivery/photorealisticSimulationEngi/SimulationEnvironmentVariant にある PhotorealisticQuadrotor バリアントがアクティブになります。このバリアントには、シミュレーション環境の構成に必要なブロックと、航空機に取り付けられるセンサーが含まれています。

モデルを "実行" します。航空機は手順 1 と 2 と同じミッションに従って飛行するように設定されます。航空機がミッションに従って飛行するにつれて、LiDAR の点群が更新され、正面カメラからのイメージが表示されます。

UAVPackageDeliveryUnrealBasicMissionResize.png

6.フォトリアリスティックなシミュレーション環境でのミッション全体に従う飛行

次に、ショートカット [Fly full mission] をクリックします。これにより、フォトリアリスティック環境内にミッションをアップロードするために、手順 2 の QGroundControl への接続が設定されます。次の手順に従って、シミュレーションを実行します。

  1. QGroundControl を起動します。

  2. QGroundControl で、/utilities/qgc にある shortMission.plan という名前のミッション計画を読み込みます。

  3. シミュレーションを "実行" します。

  4. QGroundControl により、システムに接続していることが示されたら、ミッションをアップロードします。

航空機が飛行を開始したら、ウェイポイントを追加したり、既にミッションにあるウェイポイントを削除したりして、QGroundControl でミッションを変更できます。ミッションをアップロードすると、航空機はそれらの変更に応答するはずです。飛行の全体にわたって、航空機がシナリオ内を飛行していることがわかります。

UAVPackageDeliveryUnrealQGCResize.png

7.フォトリアリスティックなシミュレーション環境での障害物回避飛行

次の目的は、QGroundControl で離陸と着陸の位置を指定し、障害物回避を使用して、経路上の障害物を迂回するように、ミッションに従って飛行することです。ショートカット [Fly full Obstacle Avoidance] または[Fly full 3D Obstacle Avoidance] をクリックし、次の手順に従ってシミュレーションを実行します。

  1. QGroundControl を起動します。

  2. QGroundControl で、/utilities/qgc にある oaMission.plan という名前のミッション計画を読み込みます。

  3. シミュレーションを "実行" します。

  4. QGroundControl により、システムに接続していることが示されたら、ミッションをアップロードします。

飛行の全体にわたって、航空機が QGroundControl で指示された経路に従おうとする一方、同時に環境内の建物との衝突を回避しようとしていることを確認します。[Fly full 3D Obstacle Avoidance] を使用した場合、UAV が低い建物を回避するのではなく、その上を飛行することを観察できます。

UAVPackageDelivery3DObstacleAvoidanceResize.png

飛行中のいくつかの時点では、UAV が建物の角を回って飛行していることがわかります。

UAVPackageDeliveryUnrealAroundCorner400.gif

8.高忠実度シミュレーションに向けた 6DOF プラント モデルの追加

最後の手順として、ショートカット [Adding a High Fidelity Plant] をクリックします。これにより、uavPackageDelivery/MultirotorModel/Inner Loop and Plant Model/High-FidelityModel にある、UAV モデルの高忠実度バリアントがアクティブになります。このバリアントには、内部ループ コントローラーと高忠実度プラント モデルが含まれています。

モデルを "実行" します。高忠実度モデルであるため、動作にわずかな変更がありますが、UAV は同じミッションに従って飛行します。

モデルの調査が完了したら、プロジェクト ファイルを閉じます。

close(prj);