たぶん動く...

多分GIS系の人。あくまで個人的見解であり、所属団体を代表するものではありません。

pythonで火星まで行ってみる(その2)

前回は軽く地球と火星の公転軌道を図示、地球と火星の距離を計算してみました。
今回はpythonのastropy, poliastroモジュールを使って地球から火星に至る探査機の軌道を計算してみたいと思います。
以下の本を参考にしていきます。

惑星探査機の軌道計算入門

惑星探査機の軌道計算入門

  • 作者:半揚 稔雄
  • 発売日: 2017/09/20
  • メディア: 単行本(ソフトカバー)

高校物理を学んでいれば理解しやすいと思います。軌道力学のとっかっかりには良い本です。

実行環境

とりあえず必要そうなものだけ。
python 3.8.0
astropy 4.0.1.post1
poliastro 0.14.0

打ち上げにベストなタイミングを計算する

火星に探査機を打ち上げるとき、いつ打ち上げてよいわけではありません。
探査機を打ち上げるときには、地球と火星の相対的な位置、ロケットの推進力などを考慮しなければなりません。 地球と火星が太陽と反対側の位置にあるとき、航行距離が最も遠く火星到達まで時間がかかることは、容易に想像できると思います。
また、探査機が重ければ重いほど、打ち上げに必要なエネルギーが大きくなることも想像できます。
ロケットの打ち上げエネルギーと地球ー火星間の軌道との関係を表す図にPorkchop Chartというものがあります。 Porkchop Chartとロケットの打ち上げ能力を鑑み、打ち上げ時期、Launch Windowが設定されます。
今回はそれを作成してみましょう。
poliastroモジュールで打ち上げ時期と到着時期を入力すればLambert問題を解いてくれて必要な打ち上げエネルギーと火星での到達速度を計算してくれます。

gist.github.com

出力された図について少し説明しますと、グラデーションのかかっている面?は打ち上げエネルギーを表しています。 打ち上げエネルギーは小さい(図で言うと暗い)ほど、打ち上げに必要なエネルギーが小さいとなります。
赤線が地球から火星到達までかかる日数、青線が火星到達時での速度となっています。
2020年の夏を打ち上げ時期と設定し、2021年の2月頃を到達時期と設定すると、だいたい7月中旬に打ち上げて2021年1月下旬に火星に到着する軌道が打ち上げエネルギー最小と出ているようです。
NASA Mars 2000の場合、公式サイト によると、2020年7月30日打ち上げ、2021年2月18日到着予定なので、上のPorkchop図は大きくは外してないのではないでしょうか。

打ち上げエネルギーについて考察すると、先に挙げた本 によれば、Perseveranceを打ち上げたAtlas V541より強力なAtlas V551の打ち上げエネルギーとペイロード質量の図が載っています。(P078参照)。
Persevaranceの重量が1トンくらい。フェアリングその他打ち上げ時の重量を3トンと仮定しても、火星に到達するのに十分な打ち上げエネルギーといえるのではないでしょうか。
また、青線の火星到達時の速度については、火星の周回軌道に乗るためには、約3.6 km/s が必要だそうで、それ以下の値になってそうです。

まとめと補足事項

今回はpoliastroを用いて打ち上げ時期を考えるためのPorkchop Chartを作成しました。
得られた数値的にはあまり大きく外していない結果が得られました。

今回は簡易的に計算しましたが、実際には地球と火星の公転面のズレ等が火星到着の時期がずれると考えられます。
またロケットの正確な打ち上げ能力のデータを入手できていないため、推測によるデータを使っています。
どなたかAtlasロケットとH2Aの正確な打ち上げ能力のデータが掲載されているサイトをご存じの方、コメント欄までお願いします。
またPorlchop Chartが使われる場面などを詳しく書いたサイトがありましたので参考文献に載せておきます。

参考文献

docs.poliastro.space

docs.poliastro.space

qiita.com