[[FrontPage]]

** はじめに [#jbf8e153]
本ドキュメントではJSBSim 用フライトモデルの XML ファイルについて、Aeromatic で自動生成してから、とりあえず飛行可能な状態にするまでに必要な情報をT-4を例にして記述します。

** XML ファイルのツリー構造 [#pedfd111]
JSBSim のフライトモデルは XML のツリー構造により表現されています。以下にツリー構造を示します。
 <?xml version="1.0"?>
 <?xml-stylesheet type="text/xsl" href="http://jsbsim.sourceforge.net/JSBSim.xsl"?>
 <fdm_config>
   <fileheader>
   <metrics>
   <mass_balance>
   <ground_reactions>
   <propulsion>
   <flight_control>
   <aerodynamics>
 
* fdm_config タグ [#e4479e97]
JSBSim フライトモデルのトップタグです。このタグ内にすべてのフライトモデル情報が記述されます。

** fileheader タグ [#tc058b5c]
フライトモデルに関する情報を記述します。内包するタグには以下のものがあります。
- author タグ: フライトモデルの作者名
- filecreationdate: フライトモデルの作成日
- version: フライトモデルのバージョン
- description: 機体情報
- reference: 以下の属性により参考文献を示す
-- refID: リファレンス番号(ファイル内の通し番号)
-- author: 著者
-- title: 書籍/記事名
-- date: 発行日付

** metrics タグ [#w18286a1]
翼の寸法や面積、空力中心や視点を設定するタグの集合です。metrics タグに内包されるタグにはそれぞれ単位が指定されています。例えば 
 <chord unit="FT"> 7.87 </chord> 
は平均翼弦長を フィート単位で指定することとなります。フィート以外には "IN" (インチ), "M" (メートル) が使えます。T-4 の例は FT や IN を使いましたが、後で調整する時に単位変換をするのが面倒でした。新しく機体を作成する場合は、ac3d などの3Dモデル策説ツールと親和性の高い "M" を使うことをお勧めします。面積も FT2 ではなくM2 の方が判りやすいでしょう。

では内包するタグを順に説明して行きます。寸法や面積は資料から参照しますが、無ければ ac3d を用いて測ります。以下に T-4 における metrics タグの例を示します。
    <metrics>
        <wingarea  unit="FT2"> 226.05 </wingarea>
        <wingspan  unit="FT">   32.61 </wingspan>
        <wing_incidence>         2.00 </wing_incidence>
        <chord     unit="FT">    7.87 </chord>
        <htailarea unit="FT2">   61.40 </htailarea>
        <htailarm  unit="FT">    15.84 </htailarm>
        <vtailarea unit="FT2">   52.50 </vtailarea>
        <vtailarm  unit="FT">    12.04 </vtailarm>
 
        <!-- x:tail=positive; y:right=positive; z:up=positive -->
 
        <location name="AERORP" unit="IN"> <!-- 25% MAC @ 中心線より2.1m 外側-->
            <x> 23.62 </x>
            <y> 0.00 </y>
            <z> 12.60 </z> 
        </location>
        <location name="EYEPOINT" unit="IN"> <!-- パイロットの視点 -->
            <x> -120.47 </x>
            <y> 0 </y>
            <z> 30.70 </z>
        </location>
        <location name="VRP" unit="IN"> <!-- 機体のノーズ先端 (注: 後に気づいたのですが、これを (x, y, z) = (0, 0, 0) にすると3Dモデルの座標と一致するので、ギアや重心位置を記述するのに便利です ) -->
            <x> -230.70 </x>
            <y> 0 </y>
            <z> -6.3 </z>
        </location>
    </metrics>

*** wingarea タグ [#d37b0034]
主翼の面積を指定します。T-4 の場合 226.05平方フィート(21平方メートル)です。翼面積の資料が無い場合は ASC で求めるか、ac3d から [Surface Area] -> [Calculate Surface Area] で翼の表面積を求め、それを半分にした値を平方フィーとで記述します。(ac3d で求めたのは表面積ですので、翼面積のおよそ倍となります)。水平尾翼、垂直尾翼の面積も同様です。なお、ASC を利用する場合、Desired Static Margin はとりあえず 10 にしておきます。

*** wingspan タグ [#v35f4984]
主翼の幅(左右の翼端間の距離)を指定します。T-4 の場合は 32.61フィート(9.9メートル)です。

*** wing_incidence タグ [#ta4d1e8e]
主翼の取り付け角度を指定します。T-4 の場合は 2°です。

*** htailarea, vtailarea タグ [#y3ed6bb2]
水平尾翼、垂直尾翼の翼面積をそれぞれ平方フィートで指定します。水平尾翼は ac3d で Root Chord(翼根弦長) と Tip Chord(翼端弦長)を計測しCGC ツールにより計算した所 61.40 となりました。垂直尾翼面積は ASC では計算できないので、ac3d で求めた表面積の半分の値 52.50 に変更しました。

*** htailarm, vtailarm タグ [#p992f3dd]
主翼の空力中心から水平尾翼の空力中心までの距離です。水平尾翼は ASC で簡単に求められます。垂直尾翼の場合、上下対象ではないので中心線がありません。そこで胴体の中心を通る線を中心線と見立てて、ac3d で計測し、ASC の水平尾翼の欄に値を書き込んで求めます。

*** location タグ [#h4c5cfd2]
機体の基準点となる座標を3Dモデルの中心からのオフセットとしてインチで記述します。JSBSim の場合は相対的な位置関係が判ればいいので、ac3d で計測した座標を用います。(注: VRP タグで (x,y,z)=(0,0,0) と指定した場合は、ac3d 上の座標の値をそのまま利用できます。但し、ac3d の (x, y, z) が JSBSIm では (x, z, y) に写像されます。) metrics タグ内では以下の3つ座業を指定します。
- AERORP: ASC で求めた主翼の空力中心位置を指定します。主翼の前縁の延長戦と機体の中心線との交点(root LE)から ASC の Wing Aerodynamic Center aft of root LE が示す値だけ後方になります。T-4 の場合は root LE の座標が (-1.37, 0.0, 0.32) で(単位はメートル)、Wing Aerodynamic Center aft of root が 1.85m なので 中心座標から 0.52m (20.47インチ) 後方となります。
- EYEPOINT: パイロットの視点位置を3Dモデルから求めます。なお、この値を設定してもフライトギアの3Dコクピットが表示されるわけではありません。機体の設定ファイル(T-4-set.xml)に記述してください。
- VRP: 胴体の先端座標を指定します。

** mass_balance タグ [#u17d524e]
その名の通り重量バランスを記述するタグの集合です。以下にT-4 の例をしめし、内包するタグについて説明します。

 <mass_balance>
   <!-- by aeromatic; should be calculated properly -->
   <ixx unit="SLUG*FT2">      5888 </ixx>
   <iyy unit="SLUG*FT2">     13801 </iyy>
   <izz unit="SLUG*FT2">     16770 </izz>
   <ixy unit="SLUG*FT2">         0 </ixy>
   <ixz unit="SLUG*FT2">      -800 </ixz>
   <iyz unit="SLUG*FT2">         0 </iyz>
   <emptywt unit="LBS" >      8356 </emptywt>
   <location name="CG" unit="IN">
     <x> 26.37 </x>
     <y> 0.00 </y>
     <z> 12.60 </z>
   </location>
 
   <pointmass name="Pilot">
      <weight unit="LBS"> 180 </weight>
      <location name="POINTMASS" unit="IN">
         <x> -108.6 </x>
         <y> 0 </y>
         <z> 12 </z>
      </location>
    </pointmass>
 </mass_balance>

*** ixx, iyy, izz, ixy, iyz, izx タグ [#ga1d829c]
機体の慣性モーメントです。重量分布が判らないと正確には計算できないので、とりあえずそのままにしておいて構いません。元々の emtpy-weight が実際の値よりも大きい場合は各値を少し小さめに設定しておくと良いでしょう。:-p

*** empty-weight タグ [#ja2ff4eb]
Aeromatic は 最大離陸重量から乾燥重量を推測しますので修正が必要です。集めた仕様に書かれた乾燥重量をポンドで記述します。T-4の場合 8,536 ポンドになります。

*** location タグ [#y8a72a69]
機体の基準点をインチで記述します。mass_balance タグ内では重心位置のみを指定します。
- CG: 重心座標です。rootLE から ASC の Ideal CG aft of root LEだけ後方の座標となります。但し、実際の重心位置はここでは無いかもしれません。テストフライトで調整するとします。

*** pointmass タグ [#h34a3868]
パイロットやバラストウェイト、装備などの重量を指定します。T-4 のパイロット重量は以下のように指定しました。
 <pointmass name="Pilot">
  <weight unit="LBS"> 180 </weight>
  <location name="POINTMASS" unit="IN">
   <x> -108.6 </x>
   <y> 0 </y>
   <z> 12 </z>
  </location>
 </pointmass>

** ground_reactions タグ [#r275e8ca]
ランディングギアについて記述するタグの集合です。沢山のタグを含んでいますが、今回変更すべき箇所は <contact type="BOGEY"> タグ内のギアの位置情報のみです。"NOSE," "LEFT_MAIN," "RIGHT_MAIN" にそれぞれのタイヤの接地座標を記述します。

 <contact type="STRUCTURE"> の項目はコメントアウトしておいて問題ありません。

** propulsion タグ [#jb4eddd3]
エンジンに関する記述を行います。T-4 ではエンジンが2基あるので、このタグ内で2つの engine タグを記述します。

*** engine タグ [#f2376681]
file 属性 に Aeromatic で作成したエンジン名(JSBSim はこれに .xml を付けてエンジンファイルにアクセスします。)を指定します。T-4 の場合は F3-IHI-30.xml ですので F3-IHI-30 を指定します。内包するタグは location, orient, thruster, feed です。T-4 の例を以下に示します。

   <engine file="F3-IHI-30">
    <location unit="IN">
      <x> 98.42 </x>
      <y> -27.16 </y>
      <z>  -9.05 </z>
    </location>
    <orient unit="DEG">
      <pitch> 0.00 </pitch>
      <roll>   0.00 </roll>
      <yaw>   0.00 </yaw>
    </orient>
    <feed>0</feed>
    <thruster file="direct">
     <location unit="IN">
       <x> 153.15 </x>
       <y> -18.11 </y>
       <z>  -9.84 </z>
     </location>
     <orient unit="DEG">
       <pitch> 0.00 </pitch>
       <roll>  0.00 </roll>
       <yaw>   0.00 </yaw>
     </orient>
    </thruster>
  </engine>

*** location タグ [#x00bc724]
エンジンの重心位置を記述します。レシプロエンジンの場合はプロペラから少し後方になります。ジェットエンジンの場合はノズルの位置とエンジンの大きさとから推定することとなります。推定が難しい場合は吸気口とノズルの中心から1-2m 前方を指定しましょう。

*** orient タグ [#fc0a74dd]
推力線の傾きをpitch, roll, yaw の角度でそれぞれ指定します。ジェットエンジンの場合、X軸の後方が推力線の向きになりますから、そこからの角度となります。仕様がなければ 全て 0.00 で構いません。

*** thruster タグ [#q7765283]
推力発生装置(プロペラやジェットエンジンのノズル)に関する設定を行います。
ジェットエンジンの場合は file 属性に "direct" と書き、Engines フォルダに direct.xml というファイルを作成します。

 <?xml version="1.0"?>
 <!--
  Thrust is computed directly by the engine
 -->
 <direct name="Direct">
 </direct>

*** feed タグ [#x326561b]
エンジンに燃料を送り込む燃料タンクの番号を指定します。<feed>0</feed>とすれば tank 0 から燃料が注入されることになります。このタグを複数記述する事も可能です。

*** tank タグ [#xf8c1691]
燃料タンクの3Dモデル上の座標とタンク番号、容量を指定します。T-4の場合、以下のようになります。

 <tank type="FUEL" number="0">
  <location unit="IN">
   <x> -27.55 </x>
   <y> 10.00 </y>
   <z> -11.81 </z>
  </location>
  <capacity unit="LBS"> 2000.00 </capacity>
  <contents unit="LBS"> 1820.00 </contents>
 </tank>

capacity や contents は最大容量を示しています。FlightGear 起動時の搭載燃料容量は T-4-set.xml で指定します。
 
*** Flight_control タグ [#caae2fe7]
揚力、抗力などの空力データの集合です。ここを記述するには Xfoil や Digital Datcom+ などの解析ツールが必須です。また翼断面の形状や表面の粗さ等、多くの技術情報が必要となります。とりあえずはそのままにしておき、情報が集まり次第更新していくと良いでしょう。

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS