こんにちは、MIS.W51代プログラミング班のfrozrもといikarosといいます。
秋学期の活動にはまだ1回しか行けてないので(特に上級生にとっては)影の薄い存在ですが、水面下で精進していきたいと思います。
さて現在私は、下記の4つのサークルに入っています
(並びは入部順)
このうちProject IcarusとWASAにおいて飛行機設計を担当しています。
今回のテーマ「飛行機設計とシミュレーション技術」は主にその2つのサークルでは何を行っているのか?
そこではどんなプログラミングを行っているのか?の片りんをお見せできればと思います。
プログラムの設計への応用
飛行機設計において今や計算機による解析は不可欠です。
飛行機の全体像の設計はもちろんのこと、翼・プロペラ、駆動リンクのいたるところにおいて 空力および構造力学を用いた解析が行われています。
では少しどのようなソフトが使われているのか紹介したいと思います。
- xflr5 http://www.xflr5.com/xflr5.htm 現代人力飛行機の祖ともいえるMITのMark Drela氏が開発した翼解析ソフトXfoilおよびAVLを前身に 有志がGUI化して飛行機全体の設計も可能にしたフリーソフト これ一つで翼の設計から飛行機全体にかかる空力の解析・可視化を行うことができる 図.xflr5での人力飛行機の全体設計 図.xflr5での翼型の設計
-
crotor
ESOTECが開発したフリーのマルチプラットホーム対応のCUIプロペラ設計ソフト VLMとLarabieの方法という2つの種類でプロペラの効率や推力を計算してくれるもの 空気中かつ、ある程度低速のプロペラなら解析できるので
- SolidWorks http://www.solidworks.co.jp/ 図.SolidWorksで機械部品を設計した様子(公式からの図で僕の設計ではない…) 主に構造解析(機体に力をかけたときに機体が壊れないかどうかを調べること)をやるときに使うソフト 最先端の解析方法を用いることができ、実際の旅客機などにも用いられているほか自動車生産やロボット工学の部門でも活躍しているソフト 一応流体解析もできるが人力飛行機や模型飛行機においてはxflr5のほうが信頼性は高い お値段は一般契約だとかなり高い(確か年間60万)が、学生の間は約1万円/1年で使うことができ、総機の人は学校側から支給されています。 鳥人間においては開発元のDassault Software社がサークルに一定数のSolidWorksを支給しています。
その他のソフト
- Xfoil
- XGAG
- AutoCad
まとめ
人力飛行機の設計・検討プロセスにおいては、計算機による解析を行うことで、製作・風洞試験等の前に機体のおおよその性能を見積もることができる。 ただし、その見積もりも解析では機体を有限微小領域に区切ってNS方程式に対する近似計算を行うので、実際の値とはずれが生じる。 設計者は、その解析結果の信頼性を鑑みて設計を行わねばならない。
シミュレーション技術への応用
さてここまではコンピューターによってどのような解析を行ってきたのかということを見てきましたが、 後半はリアルタイムフライトシミュレーションについて実際にコードを書いていきたいと思います
※リアルタイムシミュレーション シミュレーションの計算と再生が同時に行われるタイプのシミュレーションのこと。 再生しながらユーザーのキー入力を受け付けることができる これとは対象に最初に条件や操作を設定して、計算をした後に再生するタイプのシミュレーションもある Ex.基礎実験1Aのスパコンの実験回における分子振動モデルのシミュレーション
- 環境
- Unity ver.5.4 Unityのエンジンは別に使用しないのでUnreal EngineでもDxLibでもそこらへんはお好みで
- Visual Studio 2015 C#がかければ何でもいいや
- 飛行機の運動方程式
飛行機に働く力は流体力学とかが絡んでくるので実際には運動方程式中に微分項とか出てきてかな~り面倒
面倒な要因は運動方程式が非線形性であることに由来する。数学的解析(適当に値を代入して方程式を満たすかどうか調べる)を頑張れば近似解は出てきますよって類のやつ
このかな~り面倒な計算を逐一やるシミュレーターもあるけど、それは本当のパイロットの育成に使うような企業用とか研究用のシミュレーターで、
普通の一般家庭にあるパソコンで実行できる代物ではないつまりですねふつーのパソコン上では
飛行機の運動方程式を解いて、リアルタイムシミュレーションをすることはできない
- 運動方程式の線形化 運動方程式をリアルタイムに普通に解くことができないなら、何らかの近似をかけてやらねばなりません。 ということで、計算を減らすために運動方程式を線形化してやろうということです。この運動方程式の線形化を考えるときに便利なのが微小攪乱運動方程式および安定微係数です。 このどちらも飛行機の安定性・操縦性を考えるときに使う方法・指標で、飛行機が水平に飛びかつ速度変化がほとんどないときにかなりの精度で成り立ちます。安定化微係数はxflr5等の解析によって算出することができます。 これを使うとスッキリと線形化された運動方程式を記述することができます。運動方程式を線形化する前に飛行機の各パラメーターについて定義していきます 飛行機の全質量をM、図の向きに飛行機の速度成分を進行方向速度u,横方向成分速度v,縦方向成分速度をwと定義し、角度をロール角をφ,ピッチング角をθ,ヨ―角をψとし、角速度を同順にP,Q,Rとします また飛行機速度と機体の向きとの差、迎角の縦方向成分をα、横方向成分をβとします また定常飛行時のθをθ_0と定義します また飛行機のピッチ方向(通常上下方向)と気流との角度をα、ヨー方向と気流との角度をβ エレベーター(水平尾翼)角をδe、ラダー(垂直尾翼)角をδr、エルロン角をδaとします すると飛行機の線形化された運動方程式は下の図のようになります。Ⅰ:飛行機ピッチ方向への線形化運動方程式 Ⅱ:飛行機のヨー・ロール方向への線形化運動方程式 この図において添え字付きの青文字が安定微係数、その他の青文字が初期条件として設定されるもの 緑文字はシミュレーション中の飛行機の現状態、赤文字はシミュレーションを進めるのに必要な情報です。 赤い文字のパラメーターがわかれば次のフレームの演算が可能になります
- C#上でプログラムを組む では実際にプログラムを組んでみましょう 今回飛行機のシミュレートモデルとしては、ロッキードP2V-7を用います では安定微係数をクラスとして以下のように記述しておきます 微分系は接頭辞にdをつけておきます それぞれの値は実測値 飛行機の速度等のパラメータを保存しておくクラスを用意しておきます そんでもって飛行機を制御して運動方程式を解いて、実際にモデルを動かすクラスを書いておしまい ここらへんは値来たぞ~運動方程式の解から加速度割り出すぞ~加速度出たら速度として足し算してそれをTransformにぶちこむぞ~って感じ この微小攪乱運動方程式を用いた手法での課題は、定常飛行条件下でしかうまくシミュレーションできないということ 失速という概念すらもないので激しく飛行機が動くようなシミュレーションでの精度はお察し。 というわけで今のところ私は、翼型などの特性曲線やCFD解析による機体周りの圧力分布をもとにシミュレーションする方法について模索しています。 ということで書くことがなくなってしまった。正直眠いです(執筆時刻 AM:2:20)
まとめ
飛行機の挙動をリアルタイムシミュレーションするには、なんらかの近似を加えなければならない。 その手法は様々であるが、今回は運動方程式を線形化することでその近似を行った。
参考文献:
Author:ikaros (twitter:@frozr_ikaros) ここわかんねぇよ!とかリプ送ると答えてくれるはず