問題概要#

JSBSimシミュレーション開始後、わずか0.1秒程度で高度・速度・姿勢がNaNになり、即座に発散する。機体XMLファイルは正しく読み込まれているが、シミュレーションが継続できない。

原因#

Cmq(ピッチレート減衰係数)が機体XMLのPITCH軸に定義されていないことが原因です。

Cmqはピッチ運動の安定性を決定する絶対必須パラメータです。この値が欠落すると、JSBSimの数値積分が不安定になり、シミュレーションは数値的に発散します。

参考: JSBSim Reference Manual - Aerodynamic Coefficients(Public Domain)

解決方法#

機体XMLのaerodynamicsセクション、PITCH軸に以下のfunctionを追加します:

<function name="aero/moment/Pitch_rate">
  <description>Cmq: pitch rate damping</description>
  <product>
    <property>aero/qbar-psf</property>
    <property>metrics/Sw-sqft</property>
    <property>metrics/cbarw-ft</property>
    <value>-12.0</value>  <!-- Cmq推奨値 -->
    <property>aero/ci2vel</property>
    <property>velocities/q-rad_sec</property>
  </product>
</function>

推奨値: -12.0 /rad(Rascalベース、小型固定翼機の典型値)

検証方法: XMLファイルを開き、Pitch_rateまたはCmqで検索します。見つからなければ、上記のfunctionを追加する必要があります。

参考: JSBSim Reference Manual - Pitch Moment Coefficients(Public Domain)

予防策#

機体XML作成時に、PITCH軸・ROLL軸・YAW軸の動安定微係数(Cmq, Clp, Cnr等)をテンプレートとして必ず含めます。

特にCmqは省略不可です。初回シミュレーション実行前に、以下のチェックリストで確認します:

  • PITCH軸にPitch_rateまたはCmqが定義されているか
  • Cmq値が負の値(-5.0 ~ -20.0 /rad)であるか
  • ROLL軸にClpが定義されているか
  • YAW軸にCnrが定義されているか

参照資料#

  • JSBSim Reference Manual(Public Domain): 空力係数セクション
  • JSBSim XML Generator(CC BY-NC-SA 4.0、自作プロジェクト): https://github.com/Yaaasoh/jsbsim-xml-generator
  • 筆者の過去調査データ(private repository): Cmq欠落によるNaN発散事例

関連記事#


© 2025 Yaaasoh. All Rights Reserved.