SSVG 宇宙探査の旅

精密な飛行経路

English 

SSVGを開発するとき、探査機の飛行について考えていたのは次のようなことです。
・現実の探査機と同じように(2体問題軌道ではなく)飛行すること
・小惑星にランデブーできること
・惑星の衛星になれること
・惑星でスイングバイ(重力アシスト)が行えること


プログラミング言語はPythonを使うことを決めていたのですが、実現方法を考えているうちに jplephem というモジュールに出会いました。NASAが公開しているデータファイルを読み込ませれば、太陽とすべての惑星(および冥王星と地球の月)の位置と速度を、指定した時刻について求めることができる、という優れものです。


任意の時点で太陽や惑星の位置が分かるのであれば、探査機に働く引力が計算できるわけで、飛行経路を数値積分で求めるのは数値計算用の高度なライブラリがあるPythonでは難しくありません。この方法であれば、惑星の衛星になることや、スイングバイを行うことは自動的に実現できますし、惑星間空間での探査機の飛行も現実の探査機に近いものになることが期待できます。


残る課題は「小惑星にランデブーできること」なのですが、これが難関でした。小惑星の位置や速度を計算するデータファイルはNASAのオンラインサービスで作成できることが分かったのですが、なんとデータ形式が異なるため jplephem では扱えなかったのです。


この形式(Type 1)のデータを処理するソフトを探したのですが、結局見つけたのはデータ形式を記述した文書と、処理するソースコード(CやFORTRAN)だけでした。無いなら作ってしまえ、ということで、コードの主要部分をFORTRANから移植して新しいモジュールを作りました。(*)


これでツールがそろい、SSVGとして作り上げることができました。探査機の飛行経路の計算の正しさは、SSVGで小惑星にランデブーできてその状態を数百日の期間維持できることから、このソフトとして必要な程度には確認ができたと考えています。


(*) 2018年2月にNASAのオンラインサービス(HORIZONS)が提供するデータファイルの標準形式が Type 1 から Type 21 に変更になりました。SSVGはバージョン1.2.0から Type 21 のデータファイルも読むことができるようになっています。



whiskie14142/植月修志