3D Sim環境構築(1) 導入

本記事の要約

  • MathWorksさんの公式ドキュメントに沿って、UAVの3Dシミュレーションの環境を構築しました。
  • 特に困ることなく、環境構築のベースは完成。今後は、自分たち向けに環境をカスタマイズしていきます。

技術猫たちのおしゃべり

それで、何から手を付けるんすか?

まずは3Dシミュレーションから始めましょうか。実際に物が動いてる方が茶坊主くんも楽しいでしょう?

あ、それ大事、超大事っす。さっそく取り掛かりましょう!

(実機を用意するより安上がり、は言わぬが華ですかね……)


はじめに

という訳で、おはようございます、こんにちは、こんばんわ。
サバトラ先輩です。

『UAV制御システム検証』を行う前準備として、MATLAB/Simulink × Unreal Engineを使った3Dシミュレーションを導入したいと思います。

本記事の摘要は以下の通りです。

  1. 3Dシミュレーションを使用する目的を簡単にまとめます。
  2. Mathworksさんのドキュメントを見たら、簡単に環境が構築できちゃいました。
  3. 導入作業をしたときに、気になったことだけメモします。

宜しければ見て行ってください。


3Dシミュレーション導入の目的

さて、そもそもの話になりますが、何故3Dシミュレーションの導入が制御システムの検証に必要なのでしょうか?
客観的な意見が欲しかったので、ここで一度ChatGPTさんに質問してみました。

まずメリットを一言でまとめると、『簡単に色んなシステムを試せること』でしょうか。実機での検証が困難な航空機において最適なメリットだと思います。
逆にデメリットを一言でまとめると、『現実の動作と誤差がある』ことになります。3Dシミュレーションで上手くいっても、現実で上手くいく保障は無いということですね。

これらのメリット・デメリットを制御システム的な観点から見ると、3Dシミュレーションは『システム挙動/シーケンス確認及びデバックに使えるが、実機のためのゲインチューニングには使えない』ということになります。
はい、そうです。勉強目的なら3Dシミュレーションは益しかありません。使わない理由がありませんね。

というわけで茶番のセッションでしたが、ここでは改めて3Dシミュレーションを導入することについて明記しました。
先述の通り細かいチューニングには意味がないので、『大まかな制御システムの挙動を確認する』目的で、以降は3Dシミュレーションを使っていくこととします。


MATLAB/Simulink × Unreal Engine

見出しの通り、本記事で使用する言語及びソフトウェアはMATLAB/Simulink及びUnreal Engineとなります。

MATLAB/Simulinkを使う理由は、筆者がこれに慣れているからです。
研究/開発分野では広く使われており、スタートアップに適した便利機能が満載なので、勉強目的にも適していると思います。

そして、Unreal Engineを使用する理由ですが、まずは以下のMathworksさん公式ドキュメントを見て頂ければと思います。
UAV Package Delivery(MathWorksさん公式)

このドキュメントには、作成したUAVモデルを3Dシミュレーションで飛行させるまでの流れが、既にまとめられています。
つまり、この記事でやりたいことは、上記ドキュメントに従えば簡単に実施できます

そして、上記ドキュメントのステップ5以降で実装されている3Dシミュレーションは、Unreal Engineを使用してレンダリングされているとのことです。
Simulation 3D UAV Vehicle(MathWorksさん公式)

これがUnreal Engineを使用する理由です。
……というのは半分冗談ですが、最終は導入が楽な手法を選ぶに越したことはないと思います。
ゲームエンジンではありますが、自動車などの3Dシミュレーションでの活用例も聞きますので、信頼性も申し分ないです。


3Dシミュレーション導入時の気づき

公式ドキュメントを見れば大体のことは分かるので、本記事では多くのことは語りません。
途中でQGroundControlのインストールは挟むものの、特に手順で迷うこともないと思います。
Unreal Engineに関して言えば、別途インストールの必要すらありません。

ただ、いくつかドキュメントからは分からなかった気づきがあるので、それを以下にまとめます。

  • QGroundControlで使用されるマップタイルが、標準ではBingのものになっている。著作権的観点から、今後は念のため、Japan-GSIのものを使用することにする。
  • Step7で、シミュレーション実施後にボタンを押すと、フライトプランがSimulink上のモデルに送信されることを確認。それまでは、GCS上のルートからは外れた飛行を行う。
  • シミュレーションを実施していないタイミングでフライトプランを送信しても、エラーが発生する。

次回記事の予定

もうできたんっすか! 軽早っすね!

とはいえ、今やったことは公式ドキュメントをなぞっただけです。これから次のことをやって、自分用にカスタマイズしなくてはいけません

  • UAVモデル&制御則の変更
  • Unreal Engineシーン(可視化状況)の調整
  • 障害物や風況などのフライト周辺環境を設定
  • フライトログの取得
  • 複数機同時飛行

ふーん、なるほどぉ。……でも、これも公式さんのドキュメントを見れば楽勝なんじゃないっすか?

だといいですね。まあとりあえず、次回は「UAVモデル&制御則の変更」に取り組むことにしましょう

次回は11/15(水)に更新予定っす。よろしくお願いしまっす!