問題概要#
FlightGearで機体の動きがスムーズでなく、カクカクする。フレームレートが低い。機体XMLやPythonスクリプトの構文エラーはない。
原因#
JSBSim XMLの出力設定でFlightGearへの更新レート(rate属性)が低く設定されている(例: 10Hz)、またはPythonスクリプトでtime.sleep(dt) が欠落しているため、JSBSimが高速実行されてFlightGearが追いつかないことが原因です。
デフォルト値が低い場合があります。
参考: FlightGear公式ドキュメント - Frame Rate Optimization(Public Domain)
解決方法#
解決策1: 更新レートを60Hzに設定#
JSBSim XML:
<output name="flightgear" type="FLIGHTGEAR" port="5550" protocol="udp" rate="60"/>
↑↑解決策2: Pythonスクリプトにリアルタイム実行制御を追加#
import time
dt = 1.0 / 60.0 # 60Hz
for i in range(steps):
fdm.run()
time.sleep(dt) # ← リアルタイム実行に必要解決策3: FlightGear視覚効果を軽減(CPU/GPU負荷が高い場合)#
fgfs --aircraft=c172p \
--disable-random-objects \
--disable-ai-traffic \
--disable-sound \
--timeofday=noon参考: FlightGear公式ドキュメント - Command Line Options(Public Domain)
予防策#
機体XMLテンプレートのFlightGear出力設定にrate="60"をデフォルト値として含めます:
# XML生成スクリプト例
FLIGHTGEAR_UPDATE_RATE = 60
xml_output = f'''
<output name="flightgear" type="FLIGHTGEAR"
port="5550" protocol="udp" rate="{FLIGHTGEAR_UPDATE_RATE}"/>
'''Pythonシミュレーションスクリプトのテンプレートにtime.sleep(dt) をデフォルトで含めます。
参照資料#
- FlightGear公式ドキュメント(Public Domain): Frame Rate Optimization、Command Line Options
- 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更新レート設定事例
関連記事#
- C-2: JSBSim XML出力の確認方法(XML検証の基礎)
- C-1-2: FlightGear起動・基本操作(FlightGear基礎)
© 2025 Yaaasoh. All Rights Reserved.