Project Flight Simulation Applet
Project Flight Simulation Applet Airplane Flight Model Topics Simulation Start Operation Manual
TOP INDEX
Project
Project Flight Simulation Applet バナー
はじめに
飛行機はどう飛ぶのでしょうか?

これは、管理人の長年の興味の対象でした(今でもそうですが)。もともとは、大好きだった現用ジェット現用戦闘機のどれが一番強いのか?という疑問から来ています。

いろいろな書籍を読んでも、単に定性的な話に終始しているものが殆どで定量的に(数値的に)納得できるものはなかなかありません。

そこで自分でジェット戦闘機のフライトシミュレーターを作成してみることにしました。1997年の夏の事です。当時、管理人が使用していたPCはNECのPC-9821Xpという機械でした。CPUは80486DX4で、クロックは100MHzでした。

C言語で開発し、ジェットエンジンのモデルを除けばほぼ目鼻が付くところまで出来上がりました。丁度その頃、PON氏からDOS/Vの自作機を譲り受けたので、製作したプログラムと比較しようと思い、 Microsoft Flight Simulator 98 を購入しました。

Microsoft Flight Simulator 98 と自作のシミュレータの最大の違いは方向の安定性が格段に高くて振動の減衰が強い事でした。まあ、それはそれとして、管理人は市販のシミュレーターの世界に魅せられていきました。なんといっても世界が丸ごと一つ入っていて、世界中を飛びまわれるのですから!

高性能のPCを自作し、かなり沢山のフライトシミュレーターを購入しましたが、管理人のセンスに合っていたのでしょうか、やはりMicroSoft社のものが一番楽しめました。

Flight Simulator 2002ではインターネットから現実の気象をダウンロードするという衝撃を、Combat Fliight Simulatorでは通信対戦の楽しさを知り、Combat Flight Simulator 2 の零戦でフライトチーム404 Not Foundの仲間と共に夢のような飛行を楽しんできました。

嬉しいことに2004年の現在でもMicrosoft Flight Simulatorシリーズは現在でも着実に進化し続けています(Combat Flight Simulatorシリーズは3でこけたような気がしますが;笑)。

これらの遊びを通じて、管理人の興味は第2次世界大戦の戦闘機にも移っていく事になります。これらのシミュレーターは本当によく出来ていて、飛んでいるのがとても楽しいです。

しかし、本当に飛行機はゲームの中の飛行機のように飛ぶのでしょうか?

また、Conbat Flight Simulator 2で旋回戦をしている時、風景の見え方や敵機との位置関係などは分かりますが、実際に大空にどのような軌跡を描いているのかも知りたいと思っていました。

2002年の年末からJava言語を覚え、ホームページ上で動作するプログラムを製作する事が出来るようになり、2003年7月に11年間勤めた会社を退職して少し自分の時間が出来たので、再びこの疑問に挑戦することにしました。

1997年以降に新たに得た知識を反映してフライトモデルを一新し、飛行軌跡を表示する機能を追加しました。また、さまざまな点でシミュレーションが非常に困難になる遷音速、超音速の世界を避け(昔作成した分は入っていますが)、レシプロエンジンの飛行機に重点を絞りました。

ものを作る。ということはとても楽しい反面、とても苦しいことでもあります。趣味でやっているにもかかわらず、この2ヶ月間は塗炭の苦しみを舐めました。とりあえずある程度のレベルに達し、ここに公開できることをとても嬉しく思います。

もちろん管理人は航空力学の専門家ではなく、単なる一人の航空ファンに過ぎません。学生時代に物理学や数学が特別得意だった訳でもありませんので、飛行機はこう飛ぶなどと偉そうにいう気は全くありません。それでも、たとえ間違っているにせよ、これは一つの答えです。

このページのタイトルは、Flight Simulation Applet ではなくて Project Flight Simulation Applet です。Flight Simulation Appletはまだ完成していません。やりたいことはまだ沢山あり、時間が取れる限りプロジェクトは進んでいきます。

この開発において管理人自身が楽しんでいる何千分の1かでも、皆さんに楽しんでいただけたら、また、自分で勉強して何かを作るという楽しさが伝われば、と思います。

最後になりましたが、夫が職を失うという不安の中、約束の1ヵ月半が2ヵ月半になり、泣きながら管理人のこの作業を我慢してくれた家内に、心から感謝します。再就職活動をするから許してね。

いい仕事があったら誰か紹介してください(笑笑笑)。
活動計画
現在作業は一段落していますが、また時間がある時に少しずつ、以下の作業を実行していきます。これはまあ、ライフワークともいえるようなもので、何年というスパンで実行していくといった性質のものとなると思います。

1.フライトモデルの解説

Flight Simulation Appletで使用しているフライトモデルの全てについて詳細な解説を行います。シミュレーションの方法、そのモデルの物理的根拠、モデルに適用する飛行機のパラメーターの推定方法について、読者が自力で同じフライトモデルを実装できるレベルを目標とします。

もちろん、ある程度のレベルの数学を必要とします。物理学については、全て式やルックアップテーブルに展開されてしまうので、全く同じフライトモデルを実装するだけならあまり必要ありません。但し、理解の為には知識があった方が望ましいでしょう。これらの数学、物理学についても可能な限り記述し、自己完結する記事にしたいと思っています。

数学、物理学については殆どが高等学校レベルで、一部大学の一般教養レベルのものが必要となります。

2.飛行機の追加

Flight Simulation Applet では飛行機はパラメーターファイルとして記述され、パラメーターファイルを作成すればプログラムを変更することなく飛行機を追加することが出来ます。

飛行機パラメーターファイルのサンプルを見る

2003.11.06現在、Flight Simulaton Appletに登録されている飛行機 TEST PLANE はプログラム開発テスト用の1機種だけです。

この飛行機は、基本的には零式艦上戦闘機二一型なのですが、ジオメトリック(幾何学的な)パラメータを取得する為に3面図を方眼紙のトレーシングペーパーに写したときに横幅が14cmになり、換算が面倒くさいのでそのまま1cmを1mとしてしまいました。というわけでサイズが7/6倍になっています(笑)。そのままだと軽すぎるので適当に重くしてあります(が、慣性モーメントは資料から読み取った値のままで変更していません)。

計算が面倒くさいので、いい加減なパラメーターを入れてあるところがあったり、エンジンのモデルで2段過給器のロジックをテストしたパラメーターがそのまま残っていたりします(笑笑笑)。

パラメーターを推定するのは結構面倒くさいのでプログラム化する必要があると思っています。ただ、管理人はJavaでGUIアプリケーションの作り方を知らないので現在どういう形にするか検討中です。アプレットではファイルをセーブできないし、大昔に作ったC言語のパラメーター推定プログラムを改修するのも気が進みませんし...

とにかく、扱える飛行機を増やすのも課題の一つです。第2次世界大戦の有名な戦闘機や、セスナ社の軽飛行機等で飛べるようにしたいと思っています。

3.プログラムへの機能の追加

Flight Simulation Applet プログラムへの機能追加については、現在のところあまり考えていませんが、操縦席から見える自分の飛行機を描画し、パイロットの視界を制限することは時間があればやりたいと思っています。

プログラムの改修自体は1〜2日ですぐ出来ると思うのですが、データを効率良く作るツールが必要になりそうで、今回は見送りました。

また、Flight Simulation Applet で使用している自作の3Dグラフィックス・パッケージの性能があまり良くないのも辛いところです。

描画性能の関係で風景を改善する事は非常に難しいのですが、可能であれば、せめて空の色にグラデーションを掛けたいというのが切なる願いのひとつです。

4.フライトモデルの改良

現在のフライトモデルにはまだまだ付加されていない要素がいくつかあります。もしもあなたがベテランのフライトシミュレーターパイロットなら以下の項を読む前にFlight Simulation Appletで飛行してみて、どのような要素が盛り込まれていないか探してみてください(笑)。

(1)レシプロエンジン/プロペラのモデル

現在入っているレシプロエンジン/プロペラのモデルは簡易モデルです。零戦の栄エンジンの性能曲線と文献を10日間ぶっ続けで見て考えましたが、満足の行くモデルはできませんでした(作業が遅れた大きな原因の一つがこれです;笑)。

その為、飛行機の挙動に関する重要ないくつかの要素を含めることが出来ませんでした。時間も無限にあるわけではないので、忸怩たる思いで諦めました。

スロットル開度・プロペラ制御位置・混合気制御位置をパラメーターにして、パワー、推力およびエンジン回転数、燃料消費率を計算できるエンジン/プロペラのモデルが完成すると左右非対称および燃料消費による重心位置・質量・慣性モーメント変化の要素をフライトモデルに含む道が開けます。

(2)操舵翼面のヒンジモーメントの計算

Flight Simulation Appletは、マウス及びキーボードという、操舵に伴う力が発生しない入力デバイスを使用(他に使えるものが無いので仕方無くですが;笑)しており、トリムが不要なので舵のヒンジモーメント(つまり舵の重さ)を計算していません。

ジョイスティックなどのデバイスを使えるならヒンジモーメントを計算したいでしょうし、舵が重すぎて操縦桿を引けなくなる領域や、零戦に使われている剛性を落としたリンク等をシミュレートすることが出来るようになります。

もっとも、操舵翼面が油圧で駆動されている高速のジェット機などにはあまり関係ない話かもしれません。

(3)精度向上

その他、現在シミュレートされている要素の中にも精度の低い部分があります。特に、フラップのモデル、干渉による気流の変化、大横滑り状態の空力計算などについては、ぼちぼちと精度を上げていきたいと思っています。もちろん、なかなか難しいので精度が低くなっている訳なのですが。

(4)ダメージのモデル

強度上の制限を超えた場合に飛行機のある機能にダメージを受けたり、飛行自体を継続できなくなるような状況のシミュレートです。

過速および荷重倍数による飛行機自体の破壊、過速によるフラップ、着陸脚の破壊、着陸の衝撃による着陸脚の破壊については、パイロットの操縦に大きな影響を与えると思われます。モデル自体は簡単でもいいのでフライトモデルに付加したい要素です。

(5)空力弾性

実際の飛行機は剛体ではなく弾性体です(当たり前ですね;笑)。飛行機に当たる気流が速くなり風圧が強くなると変形して、それに伴って空力特性が変化します。大型の旅客機や爆撃機では、飛行中には主翼が地上に駐機している時より上に反っているのがはっきりと分かりますし、ジェット戦闘機の補助翼等では、空力弾性で主翼自体が捩れて効きが逆転したりすることがあるそうです。

これらをフライトモデルに組み込むためには、飛行機の材料力学や構造力学等まで関係してくる話となります。また、モデル自体は出来るとしても特定の飛行機のパラメーターを推定することは、専門家以外にはほぼ不可能に近いでしょう。

それでも、いつかはちょっとのぞいてみたい世界です。

(6)パイロットのモデル

これはまあ、本筋にはあまり関係ない話です。

市販のシミュレーターの標準の視界は、通常前方に固定されています。要するに飛行機に固定されているということです。人間の目は多少頭が揺れても注視しているポイントが視界の中心から外れることは殆どありません。自動車を運転していて、自動車が多少揺れても認識している風景が揺れているとはそれほど感じないはずです。歩いている時もまた然りです。この点について試したいみたいことがあります。

機体挙動によるパイロットの体の揺れを再現するのも面白そうです。これについては前述の注視点のロジックが実装されていることが前提となります。

ブラックアウトやGロック、レッドアウトについては、空中戦が出来ない以上、あまり関係ないので、よほど暇があれば実装することにしましょう(ということは永久に実装されないということですな)。

これらは、特に難しそうでもないし、やってみるのは面白そうなのですが本質的な興味からは外れるので優先度はかなり低くなります。

5.文献の整理と紹介

Flight Simulation Appletを製作するために参考にした書籍のみならず、管理人の持っている飛行機関係の書籍を整理して一覧にまとめていきたいと思っています。

Fligt Simulation Applet
概要
Flight Simulation Applet はJavaアプレットとして製作されたフライトシミュレーターです。JavaアプレットはJava言語で書かれたプログラムで、ホームページ上で動作する仕組みを持っています。

Flight Simulation Appletは飛行機の物理挙動をシミュレートしています。離陸、飛行、着陸を行うことが出来、飛行軌跡を表示することも出来ます。
実行/操作説明
シミュレーションを開始する 操作説明を参照する
注意事項
・Flight Simulation Applet プログラムは、その貧弱なグラフィックスにもかかわらず、3Dグラフィックスアクセラレータを使用できない為にかなりのマシンパワーを必要とします。

お使いのコンピューターによっては処理が実時間に追いつかないことがあります。シミュレーションのセッティングを2モード用意してありますので操作説明の「補助情報・体感情報・シンボル-シミュレーション時間パラメータ」および「設定メニューでの操作」の項目を参照してください

・Flight Simulation Applet プログラムはWindows 98SEおよびWindows me上のInternet Explorer 6.0 で動作確認されています。

・Flight Simulation Applet プログラムはそれほど大きなものではありませんが、回線によってはプログラムのロードに時間が掛かるかもしれません。ADSLであればおそらく大丈夫だと思います。電話回線ではどうなのか分かりません。ロード中は何も表示されなくなることがありますので、ちょっと気長にお待ちください。

・理由は分からないのですが、Sunの純正のJRE(Javaランタイム環境)をInternet Explorer上でオンに設定しておくと、数秒周期で処理が一瞬止まります(ガベージコレクションかもしれません)。

このシミュレーションを実行する時にはSunのJREをオフにしてInternet ExplorerのデフォルトのJVMを使用したほうが良いようです。これは、Java SDK(JDK)をインストールしていない方には関係ありません。

方法は、IE上でメニューの[ツール(T)]→[インターネットオプション(O)]]→[詳細設定]タブ→[Java(Sun)の[<applet>に Java* *を使用(再起動が必要)]チェックボックスをオフ。

・IE上でメニューの[ツール(T)]→[インターネットオプション(O)]]→[詳細設定]タブ→[Java JITコンパイラの使用]はチェックしておいた方が良いような気がします。

・Flight Simulation Applet プログラムは使用するコンピュータに損害を与えるために製作されたものではありませんし、そのような状況になることもちょっと考えられませんが、万が一お使いのコンピュータに損害を与えた場合でも製作者はその責を負いませんのでご了承下さい。
製作者
Takeshi Saji (Maker-One/Ayahito_404NF)
更新履歴
日付改訂内容
Ver.1.12003.11.04初版リリース
Airplane
飛行機
原始的な飛行機のパラメーター推定の図

TEST PLANE
Fligt Model
運動方程式

地道に少しずつでも...

1.シミュレーションの基礎
1.1. バネとおもりのシミュレーション 2003.12.05
1.2. 積分の方法 2004.01.XX
1.3. バネと錘のリアルタイムシミュレーション
1.4. 一次遅れとローパス・フィルタ
2.標準大気
2.1. 標準大気の計算式
3.慣性パラメーター
2.1. 慣性パラメーター
2.2. 変動する慣性パラメーターの記述
2.3. 慣性パラメーターの推定
4.運動方程式
4.1. 座標系の定義
4.4. 動座標系
4.5. オイラー角
4.6. 運動方程式
4.7. 慣性力
4.8. 重心座標系から機体座標系への変換
4.9. 運動方程式のシミュレーションの記述
5.流体力学の前提知識
5.1. レイノルズ数
5.2. マッハ数
5.3. 平板の摩擦抵抗係数
5.4. 揚力と抗力
5.5. 圧縮性
6.フライトモデル概要
6.1. 概要
6.2. 構成要素の記述
7.翼
7.1. 概要
7.2. 2次元翼
7.2.1. 翼形(2次元翼)の力学
7.2.2. 翼形の特性パラメーターの推定
7.3. 3次元翼
7.3.1. 3次元翼の幾何学
7.3.2. 3次元翼の力学概要
7.3.3. 翼面ブロックの定義
7.3.4. 翼基準座標系の定義
7.3.5. 揚力傾斜
7.3.6. 揚力係数
7.3.7. 抗力係数
7.3.8. 3次元翼の特性パラメーターの推定
7.4. 翼の力学のまとめ
7.5. 翼全体の特性パラメーターの推定
7.5. 失速係数
8.操舵翼面
8.1. 概要
8.3. 全遊動翼の幾何学
8.4. フラップの幾何学
8.5. フラップの一次近似
8.6. ポテンシャル理論による補正
8.7. フラップの力学
8.8. フラップの特性パラメーターの推定
9.胴体
9.1. 概要
9.2. 胴体モーメント
9.3. 胴体の抵抗
9.4. 胴体の特性パラメーターの推定
10.着陸装置
10.1. 概要
10.2. 地面反力
10.4. 摩擦力
10.3.1. タイヤと地面の幾何学
10.3.1. 制動装置とスリップ率
10.3.1. 制動力
10.3.2. 横力
10.4. 着陸装置の作動
10.5. 空気力
10.6. 着陸装置の特性パラメーターの推定
11.レシプロエンジン/プロペラ
11.1. 概要
11.2. 動力モデル
11.3. 推力の計算
11.4. プロペラ運動量理論
11.5. プロペラ後流
11.6. レシプロエンジン/プロペラの特性パラメータの推定
12.相互干渉
12.1. 概要
12.2. 主翼による吹降ろしの水平尾翼への影響
12.3. 主翼後流による水平尾翼の動圧低下
12.4. プロペラ後流による胴体・水平尾翼・垂直尾翼への影響
12.5. 主翼・水平尾翼失速による垂直尾翼への影響
12.6. 相互干渉の計算に必要なパラメーターの推定
13.計器
13.1. 指示対気速度
A.付録(数学)
A-1.初等関数・数学公式抜粋
A-2.線形代数(ベクトル・行列・座標変換)
B.付録(物理学)
B-1.国際単位系(SI)およびよく使われる単位 2003.11.25
B-3.物理定数
B-2.初等力学抜粋
C.付録(グラフィックス)
C-1.透視変換
C-2.水平線の位置
D.付録(プログラミング)
参考文献等
記号・変数名一覧
参考文献
Topics

TOP INDEX