Upgrade to Pro — share decks privately, control downloads, hide ads and more …

小型ハイブリッド用フライトシミュレータの開発

sksat
February 03, 2020

 小型ハイブリッド用フライトシミュレータの開発

村井研2期目(Arch)のWIP発表です.
実装: https://github.com/sk2sat/trochia

sksat

February 03, 2020
Tweet

More Decks by sksat

Other Decks in Programming

Transcript

  1. 小型ハイブリッドロケット用
    フライトシミュレータの開発
    Arch B1 sksat
    親: macchan-san
    1

    View Slide

  2. モチベーション
    ・COREという学生ロケットサークルに所属
    ・開発中や安全審査で飛行のシミュレーションを行う
    ・今使っているシミュレータは色々ダメ
    ・作り直そう!
    2

    View Slide

  3. 学生ロケットとは?
    ・大学の研究室やサークルによる小型ハイブリッドロケットの開発・打上
    ・機体・電装・エンジンなど全て自作
    ・能代や伊豆大島で打上実験
    3

    View Slide

  4. シミュレーション
    ・ロケットがどのように飛行するか?
    ・設計時・安全審査に用いる
    4

    View Slide

  5. 既存のシミュレータ(FROGS)の問題点
    ・扱える人が少ない
    ・Matlab製 → ライセンスを持っていないメンバーがいる
    ・メンテナンス性がとても悪い(関数に分けたりしてない)
    ・使用時の手間が多い
    ・計算が遅い
    5
    落下分散図 by 神Excel

    View Slide

  6. 目的
    ・誰でも使えるようにしたい:
    not matlab
    ・簡単に使えるようにしたい
    ・「今の設計だとどれくらい飛ぶのか?」をもっと簡単に
    ・シミュレーション担当以外でも使えるように
    ・簡単・正確に可視化したい
    ・高速化(できれば)
    6

    View Slide

  7. 先行事例
    ・FROGS(COREで使用) ←
    ・OpenRocket ←プロトタイプ検討には良いが
    ...
    ・ForRocket(他団体OBが開発)
    ・OpenTsiolokvsky(IST)
    OSS文化があまり無い:そもそも少ない
    正解は物理 → reference implementationは無い
    7

    View Slide

  8. 今回開発したシミュレータ(trochia)
    ・GitHubで公開: https://github.com/sk2sat/trochia/
    ・C++17,LoC: 1300,マルチプラットフォーム対応
    ・GitHub ActionsでWindows, Mac, Linux向けバイナリを自動ビルド
    ・改良点
    ・TOMLファイルによるパラメータ入力
    ・落下分散図の出力スクリプト付属(
    FROGSからも使用可能)
    ・数値積分の改良
    8

    View Slide

  9. TOMLファイルによるパラメータ入力
    ・複数条件で計算したい(ランチャ仰角,風向,風速,
    etc)
    ・FROGS: 毎回条件を指定
    ・trochia: config.tomlで範囲を指定,一括実行
    ・ランチャ仰角70°〜85°,風向16方位,風速1〜7m/s,など
    ・output/ランチャ仰角/風速/風向 に計算結果を出力
    9
    ランチャ仰角

    View Slide

  10. 落下分散図の出力
    ・GHP(相対座標)をファイルに出力
    ・簡単なスクリプトで緯度・経度に変換
    ・国土地理院のAPIを使って可視化←正確
    ・相対座標のGHPファイルさえあればいい
    ・FROGSからも使用可能
    ・移行期間中も使える
    10

    View Slide

  11. 数値積分
    ・FROGS:回転運動は4次精度(RK4),並進運動は1次精度(オイラー法),時間刻み固定
    ・trochia
    ・デフォルトで全て4次精度
    ・後からソルバを簡単に追加可能(
    C++のtemplateを使って抽象化)
    ・時間刻みはconfig.tomlで指定(任意)
    11

    View Slide

  12. 評価
    12
    trochia FROGS OpenRocket
    配布形式 ソース・バイナリ ソース OpenRocket.jar
    実行に必要なもの 無し Matlab JRE
    コマンドライン実行 ◯ △ ☓
    パラメータの入力 config.toml 配列に代入 GUIで入力
    計算・可視化に必要な操作数 3 2N ☓
    計算精度 デフォルト4次 1次+4次 4次
    N: 検討する仰角の数

    View Slide

  13. 評価(2)
    ・計算時間の短縮
     ・検証環境:Arch Linux, AMD Ryzen 5 3600
     ・弾道落下時,地上風速
    1~7m/s,風向9,17方位を連続実行
     ・FROGS:1ケースあたり平均1.2s
     ・trochia :1ケースあたり平均0.2s
     ・5.6〜5.8倍の高速化
    13

    View Slide

  14. 今後
    ・風向風速制限表の自動生成 ←できました
    ・空力周りのバグ修正
    ・FROGSの結果と比較して妥当性検証
    ・3月の伊豆大島共同打上実験を通しての妥当性検証
    ・プラットフォーム毎の計算精度の検証,精度保証付き数値計算ライブラリの使用検討
    ・燃焼試験データのオープンデータ化
    ・高度11km以上の大気モデルの実装,ペイロード・多段ロケットの実装,パラメータ最適化,
    etc...
    14

    View Slide

  15. 参考文献
    ・田辺英二.ロケットシステム(
    1999)
    ・George P. Sutton. ; ロケット推進工学.望月晶訳.(
    1992)
    ・import Avio.小型ハイブリッドロケットノウハウ vol.1.(2019)
    ・伊里正男,藤野和建.数値計算の常識.(
    1985)
    15

    View Slide

  16. 以降予備スライド
    16

    View Slide

  17. ハイブリッドロケットとは?
    ・固体の燃料と液体の酸化剤を用いるロケット
    ・固体燃料ロケットと液体燃料ロケットのいいとこ取り
    ・大型化は難しく,実用例はまだスペースシップワンのみ
    ・本質的に”爆発”しないため,比較的安全
    ・学生でも開発・打上を行うことができる
    17

    View Slide

  18. 安全審査
    ・比較的安全 != 安全
    こっちに飛んできたら死ぬ
    )
    ・学生運営(経験者)が事前・直前に安全審査を行う
    ・構造系・推進系・燃焼実験計画・搭載計器・シミュレーションについて審査
    ・容赦無く落とされる(大抵第2,3次で合格)
    ・1つでも落とされたらもちろん打てない
    18

    View Slide

  19. シミュレーション審査
    ・安定して飛行するか?
    ・C
    D
    , C

    はCFDで計算
    ・どこに落ちるか?
    ・風の影響が大きい
    ・落下可能域が設定されている
    ・「打ったら落下可能域外に落ちる」風向・風速条件を出す
    19
    伊豆大島共同打上実験の落下可能域
    左:陸打ち 右:海打ち
    風向風速制限表の例

    View Slide

  20. 現行のシミュレータ(FROGS)
    ・Matlab製 → インカレなので困ることがある
    ・迫真のインデント無し・関数定義無し
    ・入力はパラメータ一覧を配列に代入
    ・落下分散図は神Excelにコピペしてプロット
    ・回転はRK4だが並進は1次のオイラー法(!!)
    ・色々とひどい
    20

    View Slide

  21. GitHub Actionsによる自動ビルド・リリース
    21
    ・ほとんどの人はWindows or Mac
    ・Linuxで開発したい
    ・cmakeでビルド
    ・CIでWin,Mac,Linux向けにビルド

    View Slide