LoginSignup
4
6

More than 3 years have passed since last update.

Python航空機開発ライブラリIAEAを作成し始めた。ー第1章ー

Last updated at Posted at 2020-05-15

航空機開発ライブラリIAEA

はじめに

 初めまして新卒1年目エンジニアのmuratatatsuroです。これは、航空機を愛し、電動化に憧れ、自律・自動運転に取り憑かれ、pythonと最適化に漬けられた男による航空機開発ライブラリ(OSSにしたい)を構築するまでの1~2年間(おそらくそれくらいで出来るんじゃないかと思ってる)に渡る奮闘記の序章である。Learn or Die!!

作ろうと思った経緯

 大学院時代に電動化航空機と呼ばれる電気で駆動する航空機の概念設計と最適化について研究を行なっていた。しかし、大学院時代までは、統合設計とは名ばかりのエンジン最適化のみを行なっていたため、航空機も含めた最適化と設計ツールを作成し、他の人にも新時代を担う航空機に簡単に触れる環境を構築し、興味を持ってもらいたかった。これに加えて、自律走行や自動運転に興味があり、実際に設計した航空機(特にスモールスケールのもの)に対してシミュレーションレベルでの最適路探索を体験し、設計から運用シミュレーションまでの一気通貫の概念設計環境があったら面白いんではないかと考えた。

ライブラリの概要

 IAEA(Integrate Analytical Environment for Aircraft)は航空機とエンジンを統合的に概念設計できるPythonのライブラリである(まだ完成していないがそうなのである)。また、航空機とエンジン統合設計にとどまらず、進化計算系を含めた最適化フレームワークと最適化計算検証フレームワーク、これに加えて、SLAMや深層強化学習を組み合わせた自律走行支援を含めた2Dのフライトシミュレータを搭載している優れもの(?)になる。

 作成したライブラリは以下のGithubに公開している(正確には公開していく)。これが1年できっと素晴らしいものになる。
--すいませんrepositoryへのパスが間違っていたので訂正しました。(2020 5/16)
 IAEA Github repository
必要なライブラリはnumpyとmatplotlib,pandasの機械学習3種の神器のみである(のはず)。
 この航空機ライブラリを使えば、こんな航空機も作ってさらに性能とコンセプト図、経済性までも評価することが出来ちゃう!!

Normal

A320

Blended Wing Body

BWB

Air Taxi(Drone)

AT

Hyper Sonic

Hyper Sonic

航空機とエンジン形態

 本ライブラリで扱う航空機とエンジンについて説明する。航空機エンジンに妙に詳しいのは、大学院時代の研究室がジェットエンジン系であったからだ。

 今回のライブラリでは、従来型の航空機のみならず、空飛ぶ車翼胴一体型航空機超音速機に渡る幅広い種類と、エンジンに関してもターボエンジンだけでなく、バッテリー等を搭載したり、水素燃料ソーラーバッテリーを用いたものまで概念設計レベルで性能計算が出来るような仕様になる。(ここの部分に関しては、研究の際にほぼ実装してある。)それぞれの詳細については、実装した時に説明する感じでいきたい。

モジュール概要

 モジュールは大きく分けて7つある。仕様については、specification.pyに詳しく載せてあるので読んでみてほしい。

  1. 航空機性能計算
    • 空力性能(揚抗比)
    • 重量
    • 形状
  2. エンジン性能計算
    • 燃費・推力
    • 重量
    • 形状
  3. 最適化(進化計算)
    • 進化計算(多目的最適化)
      • NSGA2(Non-dominated Sort Genetic Algorithm 2)
      • PSO(Partial Swarm Optimization)
      • CMAES(Covariance Matrix Adaptive Evolution Strategy)
  4. 機械学習支援(ニューラルネットワーク)
  5. 最適化結果解析
    • 進化計算個体群の可視化
    • コスト計算(経済性)
    • 最適化結果ヒートマップ
    • 航空機・エンジン可視化
    • 自己組織化マップ(Self Organized Map)
  6. フライトシミュレーション環境(今のところは2Dを考えてるが、技術力があれば3Dにする)
  7. 自動運転支援(SLAMと深層強化学習)
    • SLAM(Simultaneous Localization and Mapping)
    • DeepRL(Deep Reinforcement Learning)

 理論的には怪しいが、一応騒音も研究テーマとして近しいので、騒音(環境適合性)の分野も最適化結果解析に入れたい。(願望)また、航空機データベース作成の際に、パラメータを入力しなければいけないが、Mask-RCNNを用いた画像セグメンテーションから値を抽出して自動化したいが、GPUがないので出来ない(泣)

実装の流れ

 結構小分けにして数式とか理論を含めて実装フローを見せていきたいと考えている。今の所考えているのは、

  1. 航空機とエンジンってなんだ?
  2. 航空機・エンジン統合設計における設計変数と目的関数って?
  3. 航空機を実際に描画してみよう!
  4. エンジンを実際に描画してみよう!
  5. 目的関数を求めるまでの流れを可視化してみよう!
  6. エンジンの性能計算(サイクル解析)
  7. エンジンの重量モデルって?
  8. 航空機の空力性能はどう求めるの?
  9. 航空機の重量モデルって?
  10. 航空機計算とエンジン計算を統合してみよう!
  11. 進化計算と多目的最適化
  12. 統合環境を多目的最適化してみよう!
  13. 最適化の結果を可視化してみよう!
  14. 航空機の経済性って?
  15. 統合環境の簡略化と高速化(ニューラルネットワーク)
  16. 2Dの障害物環境を作成してみよう!
  17. SLAMってなんだ?
  18. 深層強化学習Tutorial
  19. SLAMで自律走行
  20. 深層強化学習で最適経路探索

 てな感じで!1ヶ月に2投稿するレベルで開発しないと終わらない、、、長いですけどもし興味あったら読んでください〜〜

評価方法

 せっかく開発したけど大きく外れてたら意味ないよね?って声が聞こえてきそうですね。実際の航空機とエンジンの組み合わせ(現代においては狭胴機とターボファンエンジンの組み合わせが一般的)に対して性能計算と最適化を行い、公開されているデータと実際の最適化結果を比較してみたいと思う。外れすぎてたらモデルをチューニングしていきます!

開発経過

 基本的な仕様が完成しているのは、航空機とエンジンの性能計算モジュール、最適化手法モジュール、最適化結果可視化モジュール(航空機、エンジン可視化以外)、機械学習支援モジュールかなと言う感じ。ここら辺も綺麗に書き直していきます。

 現在は、航空機の描画クラスを作成中である。一例を示していく。

Drone 1
drone_center_1.png

Drone2
drone_edge_1.png

Normal
normal_1.png

BWB
BlendedWingBody.png!

Hydrogen・Hyper sonic
hydrogen_side_fuselage_another.png

丸いのがエンジンで、翼とか胴体の形もまあまあ再現できつつある感じ。ここからさらにグレードアップさせていきます。詳しくは、航空機描画の章で説明~~。

最後に

 皆さんも良かったら一緒にプログラムを作成してみてください。このライブラリ実装では、基本的には、微分、積分等の高度な数学などはあまり用いないで進んでいきたいと思います。また、性能計算の部分がボトルネックになる(特にエンジン性能計算や航空機形状を推定する部分)ので、その部分については、最適化モジュール実装後にCythonやC++によって実装し直す可能性があります。一緒にPythonを学ぶ方は、準備関係は以下の通りです。

参考文献

Wikipedia エアバスA320
NASA Langley Research Center Homepage
空飛ぶタクシー事業目指すJoby Aviationはトヨタ主導で650億円を調達
JAXA 航空宇宙技術部門

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6