[執筆途中]飛行機運動インタラクティブシミュレーション・PrimaryFlightDisplay

*執筆途中だが,最低限の情報を集約したので,公開ポリシーに則り公開。

 

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

 例によって、冒頭で述べておく。
  • この記事にて飛行機6自由度運動モデルをModelicaのアニメーション機能で姿勢儀の表示で可視化した.しかし,下記の課題を抱えていた.そこでこれらを解決すべく,インタラクティブシミュレーションを行う可視化ユーティリティを作成した.
    1. 機体の姿勢角状態・その動き方だけでなく,速度・高度・昇効率という数値情報も可視化したい.
    2. 一度実行完了したシミュレーションの結果再生だけでなく,結果を観ながらリアルタイムでinputを変化させてシミュレーションを実行したい.
  • 可視化ユーティリティをPythonの外部プログラムで作成した.このユーティリティは航空機のPrimary Flight Displayと呼ばれる計器表示を模した表示形式で飛行状態をユーザに与える.これとModelica_DeviceDriversライブラリを併せてモデルを組む事で,ビデオゲームの様にシミュレーションを現実時間と同期させて実行し,出力を見つつ入力を変化させる事が可能になる.作成したユーティリティは一通り意図通り動作しており,簡易かつ原始的ではあるが,Modelicaの飛行力学モデルを用いたフライトシミュレータを実現した.

可視化ユーティリティ

    ユーティリティの構成とデータ授受

    Modelicaコンポーネントインターフェイス

    Output表示の見方

    参考:B737旅客機用Primary Flight Display(出展:Wikipedia)

    ユーティリティプログラムの情報

     必要なものは3つは総てAircraftDynamics library内に収録しており,他に準備するものは後述のPython環境以外には無い.
    1. Pythonスクリプト:AircraftDynamics/Visualizers/pyPFD01.py
    2. *これを実行する為にはPython実行環境&NumPyライブラリのインストール,python pathの環境変数登録(Pythonインストール時に自動で為される)が必要.
    3. Modelicaコンポーネント:AircraftDynamics.Visualizers.interactive_pyPFD01_00
    4. pyPFD01.pyのkick-startとテキストファイルへのデータ書き出しを担うModelicaコンポーネント.
    5. データ仲介テキストデータ:AircraftDynamics/dataTemp/currentFlightStates00.csv
    6. 飛行状態を一時保持するテキストデータ.ユーザが本ユーティリティを使うにあたり,これに触れる必要は無い(中が空でも良い).

シミュレーションモデル

    Diagram

     注)本exampleモデルは前項のユーティリティに加え,筆者が公開している別ライブラリ「InteractiveSimulation」のコンポーネントを幾つか用いている.また別作者の「Modelica_DeviceDrives」のコンポーネントも使用.そのため,本モデルを動かす為には当該ライブラリも読み込んでおく必要である.

    実行

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

    モデル情報


課題:さらに実現させたい事

  • 速さ:テキストデータの更新頻度は0.02 [s] おきが限界.それより細かい時間刻みでテキストデータを更新しようとすると,動作が逆に緩慢になる.また,比較的高性能なPCでなければスムーズに動かない.筆者が携帯機として使用しているpocket PCのonemix3では動作が遅くなる.これはテキストファイルへのデータ書出し/読込をやめ,より直接的にデータをModelicaの実行ファイルとPythonスクリプトで受け渡す造りに改修する必要が有ると考えられる.
  • inputの直観的表示:舵位置を直観的に把握する表示を追加したい.フライトシミュレータのFlightgearにはHUDに舵位置,スロットル位置の表示が有り自分の捜査を把握し易い.
  • 同GUIを完了したシミュレーションのリプレイ(事後アニメーション)にも使えるようにする事.

後書き

    毎度同様、ほぼ冒頭で述べたことの繰り返しとなるが、
    • この記事にて飛行機6自由度運動モデルをModelicaのアニメーション機能で姿勢儀の表示で可視化した.しかし,それには課題を抱えていたため,それらを解決すべく,インタラクティブシミュレーションを行う可視化ユーティリティを作成した.
    • 可視化ユーティリティをPythonの外部プログラムで作成した.このユーティリティは航空機のPrimary Flight Displayと呼ばれる計器表示を模した表示形式で飛行状態をユーザに与える.これとModelica_DeviceDriversライブラリを併せてモデルを組む事で,ビデオゲームの様にシミュレーションを現実時間と同期させて実行し,出力を見つつ入力を変化させる事が可能になる.作成したユーティリティは一通り意図通り動作しており,簡易かつ原始的ではあるが,Modelicaの飛行力学モデルを用いたフライトシミュレータを実現した.

以上

コメント

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