|
CALSAT/CALSAT98/CALSAT32
衛星の位置計算との出会いはFO−20が打ち上げられた頃です。 1986年8月号のHAM Journalには、ふじ(JAS−1)の特集記事があります。 その中には従来の衛星追跡チャートのほかにパソコンを使った衛星の位置計算についての記事がありました。 当時の私は、衛星通信に興味を持ちながらも団地暮らしの状態でした。 さらには1階に住んでいたためロケーション的には最悪で、見えるのは目の前に立ちはだかるコンクリートの建物の隙間から見える小さな空でした。 コンクリートの建物で空の半分以上は見えませんが、東から南の90度の範囲は見通しが良く、夜空の星々はよく眺めていました。 この頃はHF帯のコンディションも良く、ベランダに出した小さなアンテナでも29MHz帯のFM電波がアメリカの西海岸、ハワイ、オセアニア、極東から飛び込んで来ていました。 団地暮らしはアマチュア無線には恵まれない環境でしたが、パソコンが安価に入手できる時代になっていました。 安価といっても当時のNECのPC9800シリーズは数十万の価格でした。 しかし、オモチャのようなMSX規格のパソコンが登場し、数万円で入手できるようになっていました。 MSXパソコンは今で考えればのんびりとしたCPU(Z80/クロック周波数:3.58MHz)と小さなメモリ(64kB)のパソコンですが、MSX−BASICという言語が使え、三角関数や倍精度浮動小数点演算などの機能を有していて数値計算にも十分に活用できるものでした。 しかし、MSXパソコンを購入してしばらくは、ゲーム、BASICやC言語(MSXパソコンでもC言語が使えた)で遊んでいました。 この頃ブームであったパケット通信のターミナルとしてもMSXパソコンを活用し、ハムログなどのプログラムをダウンロードしていました。 しばらくしてゲームにも飽き、パソコンの使い方やプログラミングツールの使い方への理解が進んできた頃、HAM Journalの記事に興味が戻ってきました。 ふたたび、空飛ぶアマチュア衛星はいつ、どこを飛んでいて、追跡チャートでは位置を求めることができない長楕円軌道の衛星の位置を目の前のMSXパソコンで計算できるのではないかと思い始めたのです。 衛星の位置が判ればコンクリートの囲まれた団地でも、空が見えれば眠っていたTS700(144MHzオールモード機)とその後に購入したパケット通信専用となっていたIC371(430MHzオールモード機)で衛星からの電波を受信できるのではないかと思いついたのです。 衛星の位置計算プログラムの開発はMSXパソコンのMSX−BASICで始まりました。 衛星の位置計算に関する知識はまったく無く、HAM Journalの記事を見ながら計算の方法を理解しようと始めましたが、一向に学習が進みません。 さらに、プログラムコードはPC9801のN88BASICで動くもので、なんとかMSX−BASICに書き直してはみたものの、計算結果が全く異なりお手上げ状態となりました。 やはり基本的な知識が無いままでは理解が進まず、衛星の位置計算についての本を探すことにしました。 まずは、HAM Journalの記事の参考文献にあった長谷川一郎「天文計算入門」恒星社、長沢工「天体の位置計算」地人書館をさっそく書店に出向き購入しました。 本は手に入れたものの困りました。 「天文計算入門」を開くといきなり球面三角形の計算です。 天体の位置の記述が多いため、天体までの距離を問題とすることがないためでしょう。 一方、「天体の位置計算」では、基本にベクトルを使った計算方法で記述されているので、パソコンで衛星の位置計算するためのプログラムコードを具体的に思い浮かべることができました。 基本的にはこの2冊の本から衛星の位置を求める方法についての方法を理解することができましたが、初めのうちはいろいろな事柄の理解がなかなか進まず、断片的な知識が結びつかずに時間がかかりました。 プログラムを作れるまでには結局10冊程度の本を購入したのですが、斉田博「天文の計算教室」地人書館も多くの問題が載っていて勉強になりました。
衛星の位置計算はいくつかの部分に分けることができます。 ・与えられた衛星の軌道要素は求めたその時点のものであり、軌道要素の元期からの経過時間に応じて昇交点赤経と近地点引数の変化について補正して計算時点での新たな軌道要素を求めます。 ・新たな軌道要素から衛星の軌道面内の衛星の位置を求めること、すなわち、軌道要素の平均近点角、離心率からケプラーの方程式を解いて真近点角を求めます。 いきなりケプラーの方程式が出ると とまどう方があるかもしれませんが、BASIC言語では数行のコードです。 真近点角と軌道長半径から幾何学的に軌道面内の衛星のXY座標を求めます。 ・この後の計算は座標変換です。衛星の軌道面内のXY座標を地球の重心を基準にした地心赤道座標と呼ばれる3次元のXYZ座標に変換することです。 この変換を行うには恒星時を求めることが必要で、春分点、地球の自転、協定世界時、日本標準時などの理解が必要になります。 ・最終的には自分の位置から見た衛星の位置、すなわち方位・仰角・距離に変換することです。 このためには地球上の自分がいる緯度・経度・高さの情報を地心赤道座標系に変換することや地球の扁平率などの地球が完全な球形ではないことを考慮した変換が必要です。 ・さらには衛星の速度とその方向、すなわち速度ベクトルと呼ばれるもので、観測点と衛星との相対的な距離変化によるドップラーシフトの値も重要です。 ・人工衛星を使った運用では、衛星からの可視範囲や日照範囲などの情報も重要です。
精密な位置計算ではもっと多くの歳差・摂動の計算や計算に使われる定数のモデルなどいろいろな問題がありますが、アマチュア的には理科年表に載っている数値で計算しても実用的な結果を得ることができます。 さらっと書きましたが、計算要素としては以上がすべてです。 実際の計算では、四則演算、べき乗計算、三角関数が使えれば計算プログラムを書くことができます。 必要な計算精度は倍精度小数点演算ができれば十分で、MSX−BASICで問題なく取り扱えるものでした。 こんなことが理解できるまでには、寄り道をしながら数年の歳月が必要でした。CALSAT(Ver 1.00)が完成したのは、1992年10月のことでした。 このプログラムの計算結果を検証するためには、他のプログラムとの計算結果の比較を行う必要があります。 しかし、MSXパソコンしか持っていない私にとっては難しいことでした。 このために行ったことは、CQ誌に載っていた衛星が赤道を横切る時間との比較です。 数値が一致するまでにはかなりのデバッグが必要でしたが、ある問題を解決したときに記事にある時間とCALSATの計算結果が一致しました。 また、実際にCALSATが示す時刻に衛星からのビーコンを受信できた時の感動は今でも忘れることはできません。 NECのPC9801が国民機と呼ばれる絶頂期、私もPC9801シリーズの廉価版を入手することができました。 MSXパソコンと比べると、とてつもなく速いパソコンです。 入手目的はワープロなどがサクサク使えるパソコンが必要であるためでしたが、もちろん衛星の位置計算に使うことも考えていました。 問題は衛星の位置計算を行うために使うプログラミング言語です。 PC9801シリーズにはN88BASICが付属していたので、これを利用することは当たり前のような状況でした。 しかし、私にとってはQuick BASICを使う機会が多かったため、MSX−BASICからQuick−BASICへの変換を考えました。 このような状況の中、CALSAT98(Ver 1.00/未公開版)が完成したのは、CALSATの完成から1ヶ月足らず後のことでした。 CALSATは自分としてはいろいろな意味で思い出深いプログラムとなりましたが、実用的にはCALSAT98(Ver 2.xxの公開版)が多くの方々にお使いいただいたプログラムとなりました。 PC9801シリーズの全盛期が過ぎ、DOS/Vが併存する時期がしばらく続きました。 この時期、CALSAT98のコードをDOS/V機で動作するQuick−BASICでコンパイルして配布することも可能でしたが、自分自身がDOS/Vを使う環境になかったために、幻のDOS/V版となりました。 その後かなりの時間、NECのPC9801とDOS/Vの競争時代がありました。 また、オペレーティングシステムもMS−DOSからWindows3.1やWindows95へ移行しつつありました。 この頃からWindowsのプログラムの開発の必要性を認識していましたが、なかなか学習が進みませんでした。 Windowsでのプログラミングにはいろいろな言語が用意されていますが、私はVisual−BASICをターゲットにしました。 それは、マイクロソフトが提供する基本的な言語であるからです。 Visual−BASICを初めて使ったのはVer 3でしたが、理解が進まず付属のマニュアルだけでなく市販の参考書の数が増えていきました。 その後、Ver 4、5にバージョンアップしましたが、実用的にはほとんど進歩が無い状況でした。 Visual−BASIC 6.0 を入手したときから状況が変化しました。 これまでの学習効果の積み重ねか、新しいバージョンが使いやすくなったのかは定かではありませんが、これまでの断片的な知識が結び付いてきて簡単なコーディングを進めることができるようになりました。 しかし、いよいよPC98xxシリーズの販売の終わってしまったという現実的な必要性があったのは確かです。 Visual−BASICの使い方の理解とプログラムのWindows版(CALSAT32)への移植が進み始めました。 しかし、実用的なプログラムに発展させるには、衛星の位置計算によって得られた数値をいかに分かり易く画面に表示するかです。 これまで開発してきたプログラム、CALSAT(MSX−BASIC版)、CALSAT98(PC98シリーズMS−DOS版)、CALSAT32(Windows版/2000年に公開)のいずれも、計算に関する部分は基本的には同じものです。 画面表示や操作性に関しては改良を重ね、CALSAT32では実際の運用に便利な機能を追加し、現在も進化中です。
|