機体データの作成
Tatさんの書かれた、フライトモデル解説を元にこちらにまとめてみました。
そのため、基本的にA6M2を題材に解説していきますが、誤訳誤記の指摘・加筆・修正等をお待ちしています。
フライトモデル全てを包含するトップレベルのタグです。
mass="3704" は airplane タグの属性であり、機体の総重量から燃料分を差し引いた値(あるいは乾燥重量)を米ポンド(Lb)で記述します。A6M2 は1680 kg なので 3704 lb になります。ちなみに1kg は約2.2046 lb です。A6M2 の場合、総重量は6,164lb ですが、これだととてももっさりな挙動になります。またフライトギア上の機体には武器も予備タンクもありませんから、乾燥重量としています。<airplane mass="3704">
<!-- ここに他のタグが全て列挙される -->
</airplane>
着陸時(アプローチ時)の機体の飛行パラメタを記述します。Yasim は JSBSim とは異なり、飛行特性を推定するために必要な航空力学上の詳細な係数を記述する必要がありません(従って比較的簡単にフライトモデルが記述できます)。このため、アプローチ時及び最高速時の機体の速度等様々なパラメタから、数百回のシミュレーションを行った上で飛行特性を推定します。
<approach speed="60" aoa="9">
<control-setting axis="/controls/engines/engine[0]/throttle" value="0.30"/>
<control-setting axis="/controls/engines/engine[0]/mixture" value="0.55"/>
<control-setting axis="/controls/engines/engine[0]/propeller-pitch" value="0.6"/>
<control-setting axis="/controls/engines/engine[0]/boost" value="0.0"/>
<control-setting axis="/controls/flight/flaps" value="1.0"/>
<control-setting axis="/controls/gear/gear-down" value="1"/>
</approach>
approach タグの属性として speed (60ノット), aoa (Angle of Attack: 迎え角) 9度を指定しています。アプローチ時の速度はストール速度、またはそれより若干速めに設定します。タグ内では、制御可能な操作機器の状態を記述します。 1.0は全開であることを、0.0 は全閉であることを示します。A6M2 ではそれぞれ以下の意味になります。
これらのパラメターを記述する際には、資料に記述された正確な値にこだわる必要はありません。ある程度の値を設定しておき、着陸時のストール直前の速度や最高速が資料等に記述されたものと一致するように調整すると良いでしょう。
最高速で飛行中の状態を approach タグと同様に記述します。ここでの速度は「真対気速度」です。従って計器から読み取れる速度ではなくカタログスペックを speed 属性に記述します。alt (altitude: 高度 )属性には 最高速で飛行する際の高度を ft 単位で指定します。
cruise タグ内の情報の意味は approach タグのものと同様です。最高速はカタログスペック通りに記述しても簡単に再現する事は難しいでしょう。従って、approach タグと同様に、テスト飛行と調整を繰り返す事となります。この際に注意すべき事は、計器速度と cruise の speed 属性に指定する真速は異なるということです。指示対気速度は高度が高くなるに従って真対気速度よりも遅い値を示します。 同じ真対気速度なら、指示対気速度は1000フィート上昇する毎に約2%づつ減っていきます。 例えば、4000フィート、QNH=29.92では、真対気速度と指示対気速度の誤差はおよそ8%です。このとき、指示対気速度で120ノットで飛んでいれば、それは真対気速度で約128ノットであることを意味します。<cruise speed="288" alt="14927">
<control-setting axis="/controls/engines/engine[0]/throttle" value="1.0"/>
<control-setting axis="/controls/engines/engine[0]/mixture" value="1.0"/>
<control-setting axis="/controls/engines/engine[0]/propeller-pitch" value="1.0"/>
<control-setting axis="/controls/engines/engine[0]/boost" value="1.0"/>
<control-setting axis="/controls/flight/flaps" value="0.0"/>
<control-setting axis="/controls/gear/gear-down" value="0"/>
</cruise>
パイロットの視点位置を記述します。この位置は3Dモデルの中心を (0, 0, 0) とした相対座標として表現したもので、単位はメートルです。
この座標の割り出しは、3D モデリングツールでパイロットの視点にカーソルを合わせ、その座標を記録する事で行います。各軸は以下のようになります。<cockpit x="-0.44" y="0" z="0.774"/>
機体胴体の形状を両端の座標、最大幅、先細り具合、最大幅となる位置とで示します。fuselage タグの属性を以下に示します。機体胴体とはエンジンカウル先端(プロペラ軸は含みません)から機体の最後尾までの筒として捉えられます。以下に fuselage タグの属性について説明します。
主翼の形状や特性を設定します。wing タグの属性では主翼の左半分の形状と抗力(ドラッグ)を指定します。この要素タグは一つしか使うことが出来ません。(しかし、後述するvstabタグを使えばさらに揚力を発生する面を追加することが出来ます。) また、後述のstallタグやflap,slat,spoilerタグを子要素で持つことが出来ます。 航空実用辞典-翼型 airfoil, wing sectionと翼wingも参考にしてください。
以下に A6M2 の wing タグを示します。wing タグ中では、失速時の挙動と、フラップ及びエルロンの設定をタグで記述します。これらのタグの説明は後述します。
<wing x="0.0" y="0.4" z="-0.35" taper="0.44" incidence="-0.5" length="5.6" chord="2.464" sweep="0.0" dihedral="6.5" camber="0.05" twist="-1.8" idrag="1.25">
<stall aoa="14" width="5" peak="1.5"/>
<flap0 start="0.0" end="0.4" lift="1.7" drag="1.9"/>
<flap1 start="0.4" end="1.0" lift="1.4" drag="1.1"/>
<control-input axis="/controls/flight/flaps" control="FLAP0"/>
<control-output control="FLAP0" prop="/surface-positions/flap-pos-norm"/>
<control-speed control="FLAP0" transition-time="7"/>
<control-input axis="/controls/flight/aileron" control="FLAP1" split="true"/>
<control-output control="FLAP1" side="left" prop="surface-positions/left-aileron-pos-norm"/>
<control-output control="FLAP1" side="right" prop="surface-positions/right-aileron-pos-norm"/>
<control-speed control="FLAP1" transition-time="1"/>
<control-input axis="/controls/flight/aileron-trim" control="FLAP1" split="true"/>
</wing>
水平尾翼の左側の形状や特性を記述します。hstab は wing オブジェクトであるため、記述内容は wing タグと同等ですが、水平尾翼の「効き具合」を示す effectiveness 属性が追加されています。また、wing と同様に右半分はミラーされることになります。なお、hstab オブジェクトは xml ファイルに1つしか記述できません。以下に A6M2 の例を示します。
ここで注目すべき所は flap0 の翼端が 1.1 を越えていることです。これはエレベータの幅が翼の幅よりも長い事を示しています。決して正しい数値ではないのですが、カタログスペックの値だと揚力が十分に得られない場合や、アプローチ時の迎え角が小さくなりすぎる時に1.0 以上の数値を記述することで、実機に近いアプローチ体勢を実現する事ができます。<hstab x="-4.73" y="0.22" z="0.46" taper="0.439" length="2.0" chord="1.43" sweep="-0.1" incidence="0.0" effectiveness="2.5">
<stall aoa="16" width="8" peak="1.5"/>
<flap0 start="0.0" end="1.1" lift="1.6" drag="1.6"/>
<control-input axis="/controls/flight/elevator" square="true" control="FLAP0"/>
<control-input axis="/controls/flight/elevator-trim" control="FLAP0"/>
<control-output control="FLAP0" prop="/surface-positions/elevator-pos-norm"/>
</hstab>
垂直尾翼の形状と特性とを記述します。hstab 同様に wing オブジェクトであるため、wing タグと同等の属性やサブ要素を記述します。hstab と同様に effectiveness 属性があります。wing タグや hstab タグと異なるところは、左右にミラーされないことです。これは複数の 垂直尾翼が存在する場合は、vstab タグを複数記述する必要があります。
<vstab x="-5.0" y="0" z="-0.6" taper="0.5" effectiveness="3.5" length="1.6" chord="1.65" sweep="0">
<stall aoa="15" width="14" peak="1.5"/>
<flap0 start="0" end="1" lift="1.6" drag="1.6"/>
<control-input axis="/controls/flight/rudder" square="true" control="FLAP0" invert="true"/>
<control-input axis="/controls/flight/rudder-trim" control="FLAP0" invert="true"/>
<control-output control="FLAP0" prop="/surface-positions/rudder-pos-norm" min="1" max="-1"/>
</vstab>
wing タグ内に記述される子要素で、失速時の挙動を表します。stall タグではこの失速時の挙動を以下に示す3つの属性で決定します。
stall タグと同様、 wing/hstab/vstab タグ内に記述することでエルロンやフラップなどの「舵」の位置、形状、及び効き具合を定義します。
<flap0 start="0.0" end="0.4" lift="1.7" drag="1.9"/>
<flap1 start="0.4" end="1.0" lift="1.4" drag="1.1"/>
舵の制御に用いるフライトギアのプロパティ名を定義します。wing, hstab, vstab, cruise 及び approach タグのサブ要素として記述することができます。control-input タグの必須属性は axis と contorl です。属性の説明は以下の通りです。
<control-input axis="/controls/flight/flaps" control="FLAP0"/>
各制御装置の状態を保存する為のフライトギアのプロパティを指定します。このタグにより書き出された値は、Nasal スクリプトや計器表示、アニメーション等で利用されます。指定されたプロパティに書き出される値は、control-input タグの属性や control-speed により加工された値となります。
フラップのアニメーションを行う時は、このプロパティを参照して、フラップの座標を計算しています。(A6M2/Model/a6m2b-anim.xml を参照してください)<control-output control="FLAP0" prop="/surface-positions/flap-pos-norm"/>
control-input で指定されたプロパティが変化した時の制御速度を指定します。例えば、']' キーを押してフラップを一段下げた場合に /controls/flight/flap は0.0から0.25に変化します。このとき control-speed で2秒と指定しておくと、フラップは2秒掛けて 0.25 の位置に移動する事になります。control-output で指定されたプロパティは 2秒間で 0 から 0.25 に徐々に変化します。A6M2 のフラップに対する control-speed は次のように記述されています。
この例ではフラップが下ろされた時に 1 秒掛けて指定された位置に移動することとなります。<control-speed control="FLAP1" transition-time="1"/>
プロペラ及びエンジンについて記述します。このタグは、<piston-engine>または<turbine-engine>の子要素を必要とします。
この例でも分かるように propeller タグ内には actionpt, piston-engine, control-input のサブ要素があります。以下では actionpt 及び piston-engine タグについて説明します。control-input に関しては、単発機であれば、この例の通りに記述して問題ありません。<propeller x="2.0" y="0" z="0" radius="1.56" mass="1175" moment="80" cruise-alt="15000" cruise-power="950" cruise-speed="288" cruise-rpm="1719" takeoff-power="940" takeoff-rpm="1700" gear-ratio="0.6875" fine-stop="0.9" min-rpm="550" max-rpm="1719" >
<actionpt x="2.36" y="0" z="0"/>
<control-input axis="/controls/engines/engine[0]/propeller-pitch" control="ADVANCE" />
<!-- turbo-mul and wastegate-mp are set to +250mmHg (1.33 bar) -->
<piston-engine eng-power="950" eng-rpm="2500" turbo-mul="1.333" wastegate-mp="39.372" supercharger="1" >
<control-input axis="/controls/engines/engine[0]/throttle" control="THROTTLE"/>
<control-input axis="/controls/engines/engine[0]/starter" control="STARTER"/>
<control-input axis="/controls/engines/engine[0]/magnetos" control="MAGNETOS"/>
<control-input axis="/controls/engines/engine[0]/mixture" control="MIXTURE"/>
<control-input axis="/controls/engines/engine[0]/boost" control="BOOST"/>
</piston-engine>
</propeller>
propeller タグのサブ要素であり、プロペラの位置情報を記述します。
ピストンエンジンの特性を記述します。先述したとおり、propeller タグのサブ要素として記述しなければなりません。
この項は翻訳が正確ではないかもしれないことに注意してください。
タービンエンジン(ターボプロップ)を定義します。この要素は、<propeller>タグの子要素でなければなりません。
(未翻訳)
07/12/01〜 -新規作成(フォーラムのフライトモデル解説に、自分が機体データの作成内に書いていた、docs/README.yasimの翻訳文を統合し、さらに追記) -sambar