【RC機をJSBSimでモデル化する】シリーズ#

  • ← 第1回: 機体諸元の準備
  • 第2回(本記事): Excel入力とXML生成

前回(第1回)で機体諸元を準備しました。今回は、JSBSim XML Generatorを使って、Excelに入力し、XMLを生成します。

200g級RC機の具体例を使った実践的な手順を解説します。

この記事で学べること#

  • JSBSim XML GeneratorのExcel入力方法
  • 200g級RC機の諸元入力(実例)
  • XML生成とファイル確認
  • 生成したXMLのトリム探索

対象読者#

  • 第1回(機体諸元の準備)を完了した方
  • JSBSim XML Generatorを使いたい方
  • 実践的な手順を知りたい方

Excel入力テンプレートを開く#

JSBSim XML Generatorをインストール済みの前提(未インストールの場合はA-2記事参照)。

Excelファイルの場所:

jsbsim-xml-generator/
  └── templates/
      └── aircraft_config.xlsx

Excelで aircraft_config.xlsx を開きます。


機体諸元の入力#

前回(第1回)で準備した諸元を、Excelに入力していきます。

基本情報#

シート: “BasicInfo”:

パラメータ備考
Aircraft NameMyRC200g機体名(任意)
AuthorYour Name作成者名(任意)

機体諸元#

シート: “Geometry”:

パラメータ単位
Wingspan1.2m
Wing Area0.4
Chord0.33m

ポイント: Chordは自動計算される場合もありますが、手動で入力してOKです。

質量・重心#

シート: “Mass”:

パラメータ単位
Empty Weight0.25kg
CG X0.09m
CG Y0.0m
CG Z0.0m

ポイント: CG Xは翼前縁からの距離。0.09mは翼弦長0.33mの約27%に相当します。

推進系#

シート: “Propulsion”:

パラメータ単位
Engine Typeelectric-
Max Thrust2.5N
Propeller Diameter0.23m (9インチ)
Propeller Pitch0.15m (6インチピッチ)

ポイント: 推力は機体重量(2.45N)の約10倍に設定。

空力パラメータ#

シート: “Aerodynamics”:

パラメータ備考
CL00.4ゼロ揚力係数
CLalpha5.0揚力傾斜(1/rad)
CD00.03ゼロ抗力係数
CDalpha0.5抗力傾斜
Cm00.0ピッチングモーメント

ポイント: 空力パラメータは典型値を使用。後でトリム探索で調整可能です。


XML生成#

Pythonスクリプト実行#

JSBSim XML GeneratorのPythonスクリプトを実行します。

cd jsbsim-xml-generator
python src/generate_aircraft.py templates/aircraft_config.xlsx output/

出力例:

Reading Excel file: templates/aircraft_config.xlsx
Generating JSBSim XML...
  Writing: output/MyRC200g/MyRC200g.xml
  Writing: output/MyRC200g/MyRC200g-set.xml
  Writing: output/MyRC200g/Engines/...
Done! Aircraft files generated in: output/MyRC200g/

生成ファイルの確認#

output/
  └── MyRC200g/
      ├── MyRC200g.xml           ← JSBSim FDMファイル
      ├── MyRC200g-set.xml       ← FlightGear設定ファイル
      ├── Engines/
      │   └── Electric_2.5N.xml
      └── Systems/
          └── FCS.xml

ポイント: すべてのファイルが生成されていることを確認しましょう。


生成XMLの確認#

生成したXMLファイルを確認します。詳細はC-2記事参照

簡易確認:

  1. MyRC200g.xml をテキストエディタで開く
  2. <metrics> セクションで翼幅・翼面積を確認
  3. <mass_balance> セクションで重量・重心位置を確認

:

<metrics>
  <wingarea unit="M2"> 0.4 </wingarea>
  <wingspan unit="M"> 1.2 </wingspan>
</metrics>

<mass_balance>
  <emptywt unit="KG"> 0.25 </emptywt>
  <location name="CG" unit="M">
    <x> 0.09 </x>
  </location>
</mass_balance>

ポイント: 入力した値が正しくXMLに反映されているか確認。


トリム探索#

生成したXMLが正しく動作するか、トリム探索でテストします。詳細はA-4記事参照

python tests/test_trim_manual.py output/MyRC200g/MyRC200g.xml 15

期待される出力:

Trim converged!
  Elevator: -0.02 deg
  Throttle: 0.35
  Alpha: 5.2 deg
  Pitch: 5.2 deg

収束しない場合:

  • 推力不足: Max Thrustを増やす
  • 重心位置不適切: CG Xを調整(翼弦長の25-30%)
  • 空力係数不適切: CL0, CLalphaを調整

まとめ#

200g級RC機の諸元をExcelに入力し、JSBSim XML Generatorで XMLを生成しました。トリム探索で動作確認も完了。

これで、FlightGearで飛ばす準備が整いました!


次のステップ#

XMLが生成できたら、次はFlightGearで実際に飛ばしてみましょう。

その他の関連記事:


参照資料#

本記事の執筆にあたり、以下の資料を参照しました:

オープンソースプロジェクト#

公式ドキュメント#

その他#

  • 筆者の過去調査データ(jsbsim_investigation, private repository)
    • 200g級RC機の諸元データ、トリム探索経験

© 2025 Yaaasoh. All Rights Reserved.

本記事の著作権はYaaasohに帰属します。引用部分については各引用元のライセンスが適用されます。