問題概要#
fdm.load_model('RC_UAV_200g') がFalseを返し、機体XMLが読み込まれない。XMLファイルは存在し、構文エラーもない。
原因#
JSBSimは独特のディレクトリ構造を要求します。
set_aircraft_path('X') で指定したディレクトリ内に、load_model('Y') で指定した名前のサブディレクトリが必要であり、その中に Y.xml が存在する必要があります。
XMLファイルを直接 aircraft/ 直下に配置している場合は読み込まれません。
参考: JSBSim Reference Manual - File Structure(Public Domain)
解決方法#
正しいディレクトリ構造#
project/
└─ aircraft/ ← set_aircraft_path('aircraft')
└─ RC_UAV_200g/ ← load_model('RC_UAV_200g') で指定
└─ RC_UAV_200g.xml間違った例#
project/
└─ aircraft/
└─ RC_UAV_200g.xml ← ❌ サブディレクトリに入れる必要がある修正コマンド#
mkdir -p aircraft/RC_UAV_200g
mv RC_UAV_200g.xml aircraft/RC_UAV_200g/参考: JSBSim公式ドキュメント - Directory Structure Requirements(Public Domain)
予防策#
機体XML生成スクリプトに、正しいディレクトリ構造を自動作成する機能を組み込みます:
import os
def save_aircraft_xml(model_name, xml_content):
# 正しいディレクトリ構造を自動作成
aircraft_dir = os.path.join('aircraft', model_name)
os.makedirs(aircraft_dir, exist_ok=True)
xml_path = os.path.join(aircraft_dir, f'{model_name}.xml')
with open(xml_path, 'w') as f:
f.write(xml_content)出力パス指定時にディレクトリ名とXMLファイル名を同じにする命名規則を徹底します。
参照資料#
- JSBSim Reference Manual(Public Domain): File Structure、Directory Requirements
- JSBSim公式ドキュメント(Public Domain): ディレクトリ構造の要求仕様
- JSBSim XML Generator(CC BY-NC-SA 4.0、自作プロジェクト): https://github.com/Yaaasoh/jsbsim-xml-generator
- 筆者の過去調査データ(private repository): JSBSimディレクトリ構造の失敗事例
関連記事#
- A-2-2: JSBSim XML Generatorクイックスタート【第2回】(XML生成の基礎)
- C-2: JSBSim XML出力の確認方法(XML検証)
© 2025 Yaaasoh. All Rights Reserved.