村井研2期目(Arch)のWIP発表です. 実装: https://github.com/sk2sat/trochia
小型ハイブリッドロケット用フライトシミュレータの開発Arch B1 sksat親: macchan-san1
View Slide
モチベーション・COREという学生ロケットサークルに所属・開発中や安全審査で飛行のシミュレーションを行う・今使っているシミュレータは色々ダメ・作り直そう!2
学生ロケットとは?・大学の研究室やサークルによる小型ハイブリッドロケットの開発・打上・機体・電装・エンジンなど全て自作・能代や伊豆大島で打上実験3
シミュレーション・ロケットがどのように飛行するか?・設計時・安全審査に用いる4
既存のシミュレータ(FROGS)の問題点・扱える人が少ない・Matlab製 → ライセンスを持っていないメンバーがいる・メンテナンス性がとても悪い(関数に分けたりしてない)・使用時の手間が多い・計算が遅い5落下分散図 by 神Excel
目的・誰でも使えるようにしたい:not matlab・簡単に使えるようにしたい・「今の設計だとどれくらい飛ぶのか?」をもっと簡単に・シミュレーション担当以外でも使えるように・簡単・正確に可視化したい・高速化(できれば)6
先行事例・FROGS(COREで使用) ←・OpenRocket ←プロトタイプ検討には良いが...・ForRocket(他団体OBが開発)・OpenTsiolokvsky(IST)OSS文化があまり無い:そもそも少ない正解は物理 → reference implementationは無い7
今回開発したシミュレータ(trochia)・GitHubで公開: https://github.com/sk2sat/trochia/・C++17,LoC: 1300,マルチプラットフォーム対応・GitHub ActionsでWindows, Mac, Linux向けバイナリを自動ビルド・改良点・TOMLファイルによるパラメータ入力・落下分散図の出力スクリプト付属(FROGSからも使用可能)・数値積分の改良8
TOMLファイルによるパラメータ入力・複数条件で計算したい(ランチャ仰角,風向,風速,etc)・FROGS: 毎回条件を指定・trochia: config.tomlで範囲を指定,一括実行・ランチャ仰角70°〜85°,風向16方位,風速1〜7m/s,など・output/ランチャ仰角/風速/風向 に計算結果を出力9ランチャ仰角
落下分散図の出力・GHP(相対座標)をファイルに出力・簡単なスクリプトで緯度・経度に変換・国土地理院のAPIを使って可視化←正確・相対座標のGHPファイルさえあればいい・FROGSからも使用可能・移行期間中も使える10
数値積分・FROGS:回転運動は4次精度(RK4),並進運動は1次精度(オイラー法),時間刻み固定・trochia・デフォルトで全て4次精度・後からソルバを簡単に追加可能(C++のtemplateを使って抽象化)・時間刻みはconfig.tomlで指定(任意)11
評価12trochia FROGS OpenRocket配布形式 ソース・バイナリ ソース OpenRocket.jar実行に必要なもの 無し Matlab JREコマンドライン実行 ◯ △ ☓パラメータの入力 config.toml 配列に代入 GUIで入力計算・可視化に必要な操作数 3 2N ☓計算精度 デフォルト4次 1次+4次 4次N: 検討する仰角の数
評価(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
今後・風向風速制限表の自動生成 ←できました・空力周りのバグ修正・FROGSの結果と比較して妥当性検証・3月の伊豆大島共同打上実験を通しての妥当性検証・プラットフォーム毎の計算精度の検証,精度保証付き数値計算ライブラリの使用検討・燃焼試験データのオープンデータ化・高度11km以上の大気モデルの実装,ペイロード・多段ロケットの実装,パラメータ最適化,etc...14
参考文献・田辺英二.ロケットシステム(1999)・George P. Sutton. ; ロケット推進工学.望月晶訳.(1992)・import Avio.小型ハイブリッドロケットノウハウ vol.1.(2019)・伊里正男,藤野和建.数値計算の常識.(1985)15
以降予備スライド16
ハイブリッドロケットとは?・固体の燃料と液体の酸化剤を用いるロケット・固体燃料ロケットと液体燃料ロケットのいいとこ取り・大型化は難しく,実用例はまだスペースシップワンのみ・本質的に”爆発”しないため,比較的安全・学生でも開発・打上を行うことができる17
安全審査・比較的安全 != 安全こっちに飛んできたら死ぬ)・学生運営(経験者)が事前・直前に安全審査を行う・構造系・推進系・燃焼実験計画・搭載計器・シミュレーションについて審査・容赦無く落とされる(大抵第2,3次で合格)・1つでも落とされたらもちろん打てない18
シミュレーション審査・安定して飛行するか?・CD, CNαはCFDで計算・どこに落ちるか?・風の影響が大きい・落下可能域が設定されている・「打ったら落下可能域外に落ちる」風向・風速条件を出す19伊豆大島共同打上実験の落下可能域左:陸打ち 右:海打ち風向風速制限表の例
現行のシミュレータ(FROGS)・Matlab製 → インカレなので困ることがある・迫真のインデント無し・関数定義無し・入力はパラメータ一覧を配列に代入・落下分散図は神Excelにコピペしてプロット・回転はRK4だが並進は1次のオイラー法(!!)・色々とひどい20
GitHub Actionsによる自動ビルド・リリース21・ほとんどの人はWindows or Mac・Linuxで開発したい・cmakeでビルド・CIでWin,Mac,Linux向けにビルド