飛行機の運動をアニメーション描画(線形時不変・縦横分離)

記事を通して言いたいこと(結論)

 例によって、冒頭で述べておく。

  • この記事の飛行機6自由度運動モデルをModelicaのアニメーション機能で可視化した.実行環境はOpenModelica v1.13.動画を公開,リンクを付す.
  • ただし,このアニメーションはOpenModelicaの(本記事執筆時点の)最新ver 1.18 では表示が一部意図通りとならない.3Dモデルのstlファイルが読み込めずエラーが発生してしまう..dxf形式のファイルを用いると読み込み出来るが,色がModelicaコードで指示した通りとならず,真っ黒となってしまう.両者,原因は不明.

解析結果のアニメーション表示

 早速本題のアニメーションを観よう.尚,インプット(操舵,エンジン推力増減)のタイミングはこの記事のものから変更し,操作から操作の待機時間を短くしている.(後に結果Plotも示す.)

 アニメーション表示は観ての通り機首方位を含めて機体姿勢を示しており,恐らく解説はほぼ不要だろうが,1点だけ述べておく.機体の像の他に緑色の矢印も表示されており,これは機体の速度ベクトル(進行方向)の向きだ.飛行機では機首の向きと進行方向が異なる事は当然の事象で,その相違度合も飛行挙動を観る上で重要なため表示している.

 動画中の字幕にも表示してあるが,Elevator Up(操縦桿を引く),Elevator Down(操縦桿押す),Rudder right(ペダル右踏込),Rudder left(ペダル左踏込),Aileron Left(操縦桿左に倒す),Aileron Right(操縦桿右に倒す),Thrust Increase(スロットルレバーを押す)を順々に行った結果の飛行挙動である.


 Plot表示と比べて面白いのは,ピッチ角の長周期挙動が動画で可視化すると殆ど気にならない,遅い振動に見える事と,rudderとAileronを操作した時の複合的な動き(どちらも,roll, yawの混ざった動き)が解りやすい事あたりか.この辺り,Plotを見ただけでは評価し難いところ.

 この動画を一通り観て,挙動の一部に違和感を持たれた方が居るのではないだろうか?

 roll運動に伴う,機首が下がる挙動が無い点だ.リアル試行のフライトシミュレーションを動かせば必ず経験する事だが,飛行機はバンク角(水平線に対する左右の傾き)が増すと,機首が下がり降下する.質点の力学で説明出来る事象で,揚力が斜めを向き,機体を地上から見て鉛直方向に持ち上げる力の成分が減る為だ.(なので,バンクが大きい旋回では,水平を維持するためにかなり操縦桿を引く)その動作が本モデルでは再現出来ていない.

 理由は,縦と横の運動を完全に分離したモデルであるため.モーメント-角加速度(角度に関する第2階目の微分方程式,Angular Dynamics)に関して言えば,roll, yawの角速度はpitchのモーメントに影響しないし,pitch角速度はroll, yawのモーメントに影響しない.角速度-姿勢角に関して(角度に関する第1階目の微分方程式,Angular Kinematics)も同様で,roll, yaw角がpitch角速度に影響することは無く,pitch角がroll, yaw角速度に影響することも無い.

 角速度-姿勢角の縦・横連成の効果を入れる(Angular Kinematicsを省略無く記述する)事が次のステップだ.(DynamicsはKinematicsに比べると遥かに複雑で,Momentの発生因子事に多数の無次元モーメント微係数算出式を実装する必要がある.線形無次元化モデルから離れて,非線形有次元のモデルに手を掛けても,モーメントを発生させる因子事にモデルを作る必要があるのは変わらない.)

    3Dデータの読込・表示について

     冒頭でも述べたが,この3D CADファイルを読み込んだアニメーション表示はOpenModelica ver1.13でなければ意図通り(動画通り)表示される事を確認出来ていない.動画のシミュレーションでは,OpenVSP というNASA発のオープンソースの航空機概念設計特化CADで.stl出力したファイルを読み込んでいる.

     ver1.18でも動作しない訳ではないが,上述の.stlファイルは読み込めず,Blenderのインポート・エクスポート機能を用いてファイルを.dxfに変換する必要がある.さらに,それでも意図通りの表示にはならず,Modelicaのコードで色を指定しても真っ黒な表示となってしまう.

     この辺り,筆者は3Dモデルファイルの規格や内部構成といった事に明るくなく,解決策が判らない.対応として,OpenModelicaの基本機能とModelica Standard Libraryだけを使った表示用コンポーネントを新たに作成することと,思い切ってOpenModelicaを使うことを諦めPythonで可視化用簡易アプリを作成することの2通りを考えている.

シミュレーションモデル

    diagram

     実行モデルを簡単にだけ説明しておく.

     物理に関する造りはこの記事のものと同じ.それに,アニメーション表示実行用のコンポーネントを加えている.これは機体ダイナミクスのコンポーネントの外部に,必要に応じて置き,専用のconnectorを介してアニメーションに必要な情報を引き渡すようにしている.また,表示軸のオフセット(飛行機の解析では空中を初期位置にとる事が多い.)や読み込む3Dモデルの指示など,アニメーション表示のみに関する諸元をparameterを介して設定する.

    モデル情報

シミュレーション実行

 一応,参考までにinput, outputの時系列グラフも表示しておく.解説・考察のコメントは省略.

    Input

    1. uSignal_deltaE.y[1] (Elevator角変化)
    2. uSignal_deltaR.y[1] (Rudder角変化)
    3. uSignal_deltaA.y[1] (Aileron角変化)
    4. uSignal_deltaFracT.y[1] (推力(定格に対する比)変化)

    Variables

    1. Flight state angles
    2. AirplaneDyn.fltStates.psi (Heading angle)
    3. Planner flight trajectory
    4. AirplaneDyn.fltStates.alt (flight altitude)
    5. 3-D flight trajectory

後書き

 毎度同様、ほぼ冒頭で述べたことの繰り返しとなるが、

  • この記事の飛行機6自由度運動モデルをModelicaのアニメーション機能で可視化した.実行環境はOpenModelica v1.13.動画を公開,リンクを付す.
  • ただし,このアニメーションはOpenModelicaの(本記事執筆時点の)最新ver 1.18 では表示が一部意図通りとならない.3Dモデルのstlファイルが読み込めずエラーが発生してしまう..dxf形式のファイルを用いると読み込み出来るが,色がModelicaコードで指示した通りとならず,真っ黒となってしまう.両者,原因は不明.
  • 現在対応として,Modelica Standard Libraryだけを用いた表示機能の作成と,OpenModelicaから離れてPythonを用いて外部で可視化するアプリケーションを作成する事の2つを考えている.まずは前者にトライか.

以上

コメント

タイトルとURLをコピーしました