問題概要#
FlightGearウィンドウは開くが、機体が静止したまま動かない。JSBSim側では正常にシミュレーションが進行しているが、FlightGearに反映されない。
原因#
JSBSim XMLの出力設定とFlightGear起動オプションで指定したUDPポート番号が一致していないことが原因です。
JSBSimはデータを送信しているが、FlightGearは別のポートでリッスンしているため、データが届きません。デフォルト値の5550番を使用しているつもりが、一方が5501番等になっている場合が多いです。
参考: FlightGear公式ドキュメント - Network Protocol(Public Domain)
解決方法#
1. FlightGear起動オプション確認#
--native-fdm=socket,in,60,,5550,udp
↑↑↑↑ ポート番号2. JSBSim XML確認#
<output name="flightgear" type="FLIGHTGEAR" port="5550" .../>
↑↑↑↑ ポート番号3. 両方を5550番に統一#
または任意の番号で一致させます。
4. 再起動順序#
- FlightGearを先に起動(30秒待機)
- JSBSimスクリプトを実行
参考: JSBSim Reference Manual - Output Configuration(Public Domain)
予防策#
起動スクリプト(.batまたは.sh)にポート番号を変数として定義し、FlightGear起動コマンドとJSBSim XML生成コードの両方で同じ変数を参照します:
# Python例
PORT = 5550
# FlightGear起動
subprocess.run(['fgfs', f'--native-fdm=socket,in,60,,{PORT},udp', ...])
# JSBSim XML生成
xml_output = f'<output name="flightgear" type="FLIGHTGEAR" port="{PORT}" .../>'ポート番号を一箇所で管理することで不一致を防止します。
参照資料#
- FlightGear公式ドキュメント(Public Domain): Network Protocol、native-fdmプロトコル仕様
- JSBSim Reference Manual(Public Domain): Output Configuration
- JSBSim XML Generator(CC BY-NC-SA 4.0、自作プロジェクト): https://github.com/Yaaasoh/jsbsim-xml-generator
- 筆者の過去調査データ(private repository): FlightGear UDP通信ポート不一致事例
関連記事#
- E-7: FlightGear起動順序ミス(接続失敗の別の原因)
- C-1-1: FlightGear概要・インストール(FlightGear基礎知識)
© 2025 Yaaasoh. All Rights Reserved.