北朝鮮の衛星打ち上げロケット（通称：ｼﾞｼﾞﾂｼﾞｮｳﾉﾐｻｲﾙ）のスペック予想から軌道を作ってみる

![Logo](https://github.com/istellartech/OpenTsiolkovsky/wiki/img/OpenTsiolkovsky_Logo_small.png)

拙作[OpenTsiokovsky](https://github.com/istellartech/OpenTsiolkovsky)はロケットの軌道計算をするためのオープンソースソフトウェアです。
OpenTsiolkovskyは（v0.1では）3段ロケットの地球低軌道までのロケット軌道計算が出来ます。試しに話題性としても良い、北朝鮮の衛星打ち上げロケットの軌道計算をしてみます。公開されている情報が正しいのかの検証にちょっとは役立つかも。

# 前置き
北朝鮮の人工衛星打ち上げはこれまで5回行っているらしい。（Wikipedia情報）

1. 1回目が1998年にテポドン1号（正式名称：白頭山1号）。東側に打ち上げて、日本上空を飛んだ。北朝鮮は自称では打ち上げ成功と言っているが、NORADが人工衛星では無いと宣言しているので失敗。
1. 2回目が2009年に通称テポドン2号（正式名称；銀河2号、英語名：Unha-2）これも東側に打ったことから日本が大反発。北朝鮮のロケット打ち上げを大問題として、「事実上の弾道ミサイル」という珍妙な名前を付ける。北朝鮮は打ち上げ成功で宇宙から将軍様の歌が電波で流れていると宣伝。おそらく人工衛星として機能はしなかったが、軌道投入には成功。各国は衛星が機能してないから失敗と見なしているが、ロケット屋さんとしては打ち上げ成功に見える。
1. 3回目が2012年に銀河3号。日本からの反発が強かったために南側打ち上げに変更。空中爆発で失敗。こればかりは北朝鮮も自称成功とは言えなかった模様。
1. 4回目は3回目のリベンジ戦。打ち上げに成功。
1. 5回目が2016年に光明星4号（人工衛星の名前とロケットの名前が一緒になって報道、おそらく銀河3号と同じロケット）。これも南打ち、これは確実に成功。

こうして見ると5回中3回は成功していると見ると、そこそこの成功率なので、技術レベルは高い。今をときめく米国SpaceXもFalcon1のころは5回中2回の成功ですし。

ロケットのスペックが公開されてなく正確なものは全然わからないので、かなりいい加減に推定してみます。

[憂慮する科学者同盟というところが出している解析（PDF）](http://www.ucsusa.org/assets/documents/nwgs/Wright-Analysis-of-NK-launcher-3-18-09.pdf)
を参考にして、銀河3号の軌道を銀河2号のスペックで計算してみます（ほんとうに適当だなあ）。通称だと銀河2号も銀河3号もテポドン2号と呼ばれているので区別しにくいですが、能力的におそらく改良型ぐらいには違うロケットのはずです。

PDFを参考に打ち上げ場所、1段目のロケットスペック、2段目のスペック、3段目のスペックを「param_unha.json」というファイルにJSON形式と呼ばれる形式で入れていきます。テキストエディタで開くとテキストになっているのでその中の数字などをいじってきます。

# 軌道生成
いつもはMacでソフト作っているのですが、Windowsでやってみます。[OpenTsiolkovsky Github Releases](https://github.com/istellartech/OpenTsiolkovsky/releases)　←ここからzipをダウンロード。
コマンドラインで動かすソフトなので、.exeをダブルクリックしても黒い画面が一瞬でて閉じます。これは中では同じフォルダにある「param.json」というファイルに書かれている条件で軌道計算をしたということになります。すぐ閉じてしまうと悲しいので、コマンドプロンプト(cmd.exe)を使っていきます。スタートメニューからcmd.exeで検索してコマンドプロンプトを立ち上げ、ダウンロードしたフォルダまで移動。

![unha-1.png](https://qiita-image-store.s3.amazonaws.com/0/40132/9cb3d244-48ce-e04b-6679-6e2eb735ba34.png)

フォルダまで移動したら、実行。

    OpenTsiolkovsky.exe

とするとダブルクリックした時と同じように「param.json」の条件で計算されます。
これだと面白く無いので、テポドン2号で計算してみます。
![unha-2.png](https://qiita-image-store.s3.amazonaws.com/0/40132/c4dc3783-41f7-cc6c-7c4b-b1106cd4c0d1.png)


    OpneTsiolkovsky.exe param_unha.json

のようにスペースを一つあけて、引数にパラメータファイルを指定。
数字が表示されながら計算されていきます。落下地点の緯度経度が表示されるのですが、3段目が０になっていて、落下していないので、軌道投入に成功しているのがわかります。このままだと軌道の数字の羅列がcsv形式で作られているだけなので、Google Earthで軌道可視化します。

## 可視化
pythonスクリプトでcreat_kml.pyというファイルを同梱しています。これを使います。windowsにpythonはインストールされている前提で、（インストールしてない人は[Anaconda](https://www.continuum.io/downloads)からダウンロードとインストール）コマンドプロンプト上で

    pip install simplekml
    python create_kml param_unha.json

とするとoutputフォルダにcsvとkmlファイルが出てきているはずです。

![unha-4.png](https://qiita-image-store.s3.amazonaws.com/0/40132/e21110d0-d05a-5109-bcce-83fc7306beae.png)

![unha-3.png](https://qiita-image-store.s3.amazonaws.com/0/40132/d50464b2-d121-b049-f3c2-a0acd8a0895c.png)

## Google Earthで見て楽しい
仮定に仮定を重ねまくっているので報道で出ている落下地点とズレているし、投入された軌道も微妙に違うけど、そこを細かくやりくりするのはプロの仕事なので、ちゃちゃっと適当な軌道としてはそこそこかなぁ。

![unha-5.png](https://qiita-image-store.s3.amazonaws.com/0/40132/07de60a5-c7a4-b970-b870-10d3d7fbd230.png)
![unha-6.png](https://qiita-image-store.s3.amazonaws.com/0/40132/0b4381ad-6685-1344-c9a4-cb60ddae3c56.png)

## まとめ
こんな流れで使っていくソフトです、って紹介でした。
モデルロケット用の計算ソフトはOpenRocketっていう素晴らしいソフトがありますが、もっと真面目なロケットの軌道計算のソフトっていうと高いソフトで中身が弄りにくいやつぐらいしかありません。
使用用途はかなり限定的ですが、オープンイノベーション的に宇宙開発が促進するだろうし、一般の人まで遠すぎる世界がちょっと専門の人用のツールが整備されることでオープンになるべきだ、ということでOpenTsiokovskyをオープンソースで公開しています。

## ちなみに
「人工衛星や探査機の軌道計算」と「ロケットの軌道計算」は名前こそ同じものですが、中身が違います。人工衛星では地球の偏平具合とか重力ポテンシャルの局所性とか宇宙空間でのほとんどない空気抵抗や磁場や太陽風をマジメに計算してます。（詳しく知らないけど教科書的には、してるはずです）
ロケットはそんな細かいことより、エンジンの燃焼がコンマ数秒予測より違うとかの方が軌道に効くので、モデリング（運動方程式）が比較的シンプルです。