人工衛星の軌道計算
本間 強
1957年10月4日に世界初の人工衛星「スプートニク1号」がソビエト連邦により打ち上げられました。この歴史的成功がアメリカ合衆国にスプートニク・ショックを引き起こし、その後アメリカとソ連の熾烈な宇宙開発競争が繰り広げられ、数々の人工衛星が打ち上げられました。日本では1993年11月23日にリレー衛星による米国からの初のTV伝送実験が行われ、その実験でケネディ大統領暗殺のビッグニュースが伝送され衛星通信の威力が示されました。当時、小生は茨城宇宙通信実験所で大型通信アンテナを衛星方向に指向制御するコンピュータの運用支援作業を行っていました。それ以来、人工衛星がどのように地球を周回するのか、大変興味を持ちました。50才代になり科学技術計算プログラミングができるパソコンが個人で購入できる環境となり、趣味でプログラム作りを勉強していましたが、小生の能力ではとうてい無理と思われるC言語による人工衛星の軌道計算に挑戦してみることにしました。
人工衛星の軌道は、軌道要素データ(NASAフォーマットと呼ばれる、元期、軌道傾斜角、昇交点赤経、離心率、近地点引数、平均近点離角、平均運動、平均運動の変化量)を用いて時々刻々の位置を計算することができます。この軌道要素データはNORAD(北アメリカ航空宇宙防衛司令部)から入手することができます。このホームページを見ると宇宙ゴミ(Debris)となった衛星を含め沢山の人工衛星が地球を周回していることが判ります。ちなみに静止衛星(geostationary)のところを見ますと2月13日現在で401個もの衛星が登録されており、単純に計算すると0.9度毎に衛星が配置されていることになります。軌道要素データの例(日本のJCSAT-2A衛星)は以下のようなものですが、人工衛星名と2行の数値データが並ぶ素っ気ないもので、通称 TLE(Two Line Element)データと呼ばれています。
単位は day )である。
(注2)摂動1は、平均運動の変化量 [rev/day^2] であり、元期からある時間経過した観測時点における方位角、
仰角、及び距離を求める場合の基となる。
人工衛星の軌道要素は下図のように定義されています。
軌道要素データを用いて衛星の位置を計算する手順は「CALSAT32のからくり」に詳しく解説されていますのでご覧ください。少々難解ですが計算手順は、@元期からの経過時間に応じて昇交点赤経と近地点離角の変化について補正し衛星軌道面内の衛星の位置を求め、A衛星軌道面内のXY座標を地球の重心を基準にした地心赤道座標(3次元のXYZ座標)に変換し、B最終的に観測地点から衛星方向の方位角、仰角及び距離を計算します。
TLEデータを用いて衛星の軌道を表示するソフトはウエブ上で計算表示するソフトを含め沢山ありますが、フリーソフトの Orbitronというソフトがお勧めです。このソフトは、NORADのウエブサイトからTLEデータを読み込み、実時間で1秒ごとに軌道を計算し世界地図上で衛星が現在どこの上空を周回しているのか表示してくれます。 Orbitronで国際宇宙ステーション(ISS)の軌道を表示させた例を下図に示します。
CALSAT32とOrbitronの2つのソフトを参考にして、暇をみつけながら約7年ほどかけてC言語による軌道計算プログラムを完成せました。コンパイラーは Windowsプログラムが簡単に作成できる C++ Builderを使いました。「何事も成せば成る」ものですね。小生作のソフトは Orbitron と同じく NORADのウエブサイトからTLEデータを読み込み、パソコン画面の世界地図上に1秒ごとの衛星、太陽、月の位置と衛星の可視範囲を実時間で表示します。しかし、衛星の動きは移動衛星でもそんなに早いわけではなく面白くないので、衛星の動きを約10倍の早さで計算し表示する機能付け加えて楽しんでおります。ロシアの長楕円軌道衛星(Molniya)や、日本の準天頂衛星(みちびき)は独特の軌道で地球を周回しています。小生作のソフトの概要を以下にご紹介します。
プログラムを起動しますと、最初に計算条件を設定する画面が現れます。この画面で、軌道要素データの読み込み先、観測する衛星の指定、観測点の設定、数値計算あるいはグラフィック表示の選択などの設定を行います。
軌道要素データの読み込みはインターネットから最新データを読み込みますので、インターネットに接続した状態で使用します。
「インターネットから読み込み」の下部にある「TLE選択読み込み」の右側の「▼」をクリックすると登録されているデータ種別が表示されますので、どれか一つを選択します。代表的な種別と収容されている衛星は次のとおりです。
次ページにvisualを選択した場合に表示されるリストを示します。この中から目的の衛星の番号を探し出し、「衛星番号設定」のところに手入力します。
観測点は手動で入力できるほか、世界中の主な都市を選択して緯度・経度を自動設定できます。
「計算方法指定」の部分では、グラフィック表示と数値計算結果の表示のどちらかを選択できます。 「グラフィック表示(実時間)」を選択するとパソコンの時計で1秒間隔の計算結果が表示されます。 「グラフィック表示(高速計算)」では、約10倍の速度(いわゆる早回し)で計算した衛星の動きを見ることが できます。
必要な項目の設定が完了しましたら、「計算開始」ボタンをクリックします。「計算方法指定」で指定した計算結果が表示されます。
「TLE選択」のところで「visual」を選択した場合に表示される画面です。この中から目的の衛星の番号(国際宇宙ステーションの場合、62 番)を「衛星番号設定」のところに手入力します。
国際宇宙ステーション「ISS」の軌道計算例 ( : 人工衛星の位置、黄色太線:可視範囲 )
ロシアの長楕円軌道衛星「Molniya 1-90」の軌道計算例
日本の準天頂衛星「みちびき」の軌道計算例
初期設定の「計算方法の指定」のところで「数値表示」を選択した場合、衛星一覧のほか、以下のような計算結果が表示されます。
軌道要素データの内容と、元期における衛星位置の計算結果
人工衛星の緯度・経度と観測点からみた衛星方向の方位角、仰角、距離の計算結果
人工衛星の軌道計算プログラムを作成するために参考とした資料は次のとおりです。
(1)人工衛星、太陽および月の軌道計算方法
人工衛星の軌道計算方法については、Webサイトで見つけた「CALSAT32のからくり」および「人工衛星位置推算の実際
(最終版)」に掲載されている資料を参考にしました。
URL: 「CALSAT32のからくり」
URL: 人工衛星位置推算の実際(最終版)
太陽と月の軌道計算方法については、Webサイトで見つけた「古天文の部屋」に掲載されている資料を参考にしました。
URL: 「古天文の部屋」
(2)NORADのサイトから TLEデータをインターネット経由オンラインで読み込む方法
粂井 康孝 氏 著 「猫でもわかるネットワークプログラミング」を参考にしました。
(3)衛星可視範囲の計算方法
「CALSAT32のからくり」掲載の資料を参考にしました。
(4)人工衛星、太陽および月をスプライト形式でグラフィック表示する方法
日高 徹 氏 著 「Delphi 2.0 ゲームプログラミングの応用50例(パワープログラミング編)」を参考にしました。
軌道計算プログラムは一応完成させましたが、今後以下の改善を試みていく予定です。
(1)観測する人工衛星の選択操作の改善
(2)同時に複数の人工衛星の軌道計算を行い表示させる機能
(3)月の満ち欠けに応じて月を表示させる機能
(4)衛星可視範囲を見やすくする改善
Windowsプログラムを簡単に作成できるプログラミングツールは以下のようなものがあります。自作ソフト作りにチャレンジ
してみませんか。
(1)C++ Builder XE2 Starter (パスカル言語の Delphiもあります。)
販売元:Embarcadero Technologies(元々はボーランド社であったが、買収された。)
URL: Embarcadero Technologies
(2)Visual Studio 2010 Express (Visual BASIC, Visual C++, Visual C# 等があり、無料でダウンロードできる。
Visual C# がお勧めです。)
提供元:マイクロソフト
URL: マイクロソフト
人工衛星の軌道は、軌道要素データ(NASAフォーマットと呼ばれる、元期、軌道傾斜角、昇交点赤経、離心率、近地点引数、平均近点離角、平均運動、平均運動の変化量)を用いて時々刻々の位置を計算することができます。この軌道要素データはNORAD(北アメリカ航空宇宙防衛司令部)から入手することができます。このホームページを見ると宇宙ゴミ(Debris)となった衛星を含め沢山の人工衛星が地球を周回していることが判ります。ちなみに静止衛星(geostationary)のところを見ますと2月13日現在で401個もの衛星が登録されており、単純に計算すると0.9度毎に衛星が配置されていることになります。軌道要素データの例(日本のJCSAT-2A衛星)は以下のようなものですが、人工衛星名と2行の数値データが並ぶ素っ気ないもので、通称 TLE(Two Line Element)データと呼ばれています。
JCSAT-2A
1 27399U 02015A 12037.42437757 -.00000166 00000-0 10000-3 0 7413
2 27399 0.0253 200.2757 0001939 124.1163 118.3407 1.00272564 36173
このTLEデータの意味は以下に示すとおりです。
JCSAT-2A (衛星の名称(最大24文字))
1行目 1 27399U 02015A 12037.42437757 -.00000166 00000-0 10000-3 0 7413
a bbbbbb ccdddeee ffgggggggggggg hhhhhhhhhh iiiiiiii jjjjjjjj kkkkl
2行目 2 27399 0.0253 200.2757 0001939 124.1163 118.3407 1.00272564 36173
m nnnnn oooooooo pppppppp qqqqqqq rrrrrrrr ssssssss tttttttttt uuuuv
a 行番号(1行目) m 行番号(2行目)
b 衛星固有の識別番号 n 衛星固有の識別番号
c 衛星打ち上げ年(西暦下2桁) o 軌道傾斜角 [deg]
d 打ち上げの通し番号 p 昇交点赤経 [deg]
e 同時打ち上げ衛星の識別 q 離心率
A : 単独、 B : 複数 r 近地点引数 [deg]
f 元期 年(西暦下2桁) s 平均近点離角 [deg]
g 元期 通年 [day] t 平均運動 [rev/day]
h 摂動1(平均運動の変化量)[rev/day^2] u 周回番号
i 摂動2 v チェックサム
j 摂動3
k エレメント番号
l チェックサム
(注1)元期(年)は軌道要素データ取得年であり、元期(通年)は軌道要素データを取得した期日(月日時分秒、単位は day )である。
(注2)摂動1は、平均運動の変化量 [rev/day^2] であり、元期からある時間経過した観測時点における方位角、
仰角、及び距離を求める場合の基となる。
人工衛星の軌道要素は下図のように定義されています。
i : 軌道傾斜角、 ω: 近地点離角、 Ω: 昇交点赤経
M : 平均近点角、 E: 離心近点角、 V: 真近点角
TLEデータを用いて衛星の軌道を表示するソフトはウエブ上で計算表示するソフトを含め沢山ありますが、フリーソフトの Orbitronというソフトがお勧めです。このソフトは、NORADのウエブサイトからTLEデータを読み込み、実時間で1秒ごとに軌道を計算し世界地図上で衛星が現在どこの上空を周回しているのか表示してくれます。 Orbitronで国際宇宙ステーション(ISS)の軌道を表示させた例を下図に示します。
CALSAT32とOrbitronの2つのソフトを参考にして、暇をみつけながら約7年ほどかけてC言語による軌道計算プログラムを完成せました。コンパイラーは Windowsプログラムが簡単に作成できる C++ Builderを使いました。「何事も成せば成る」ものですね。小生作のソフトは Orbitron と同じく NORADのウエブサイトからTLEデータを読み込み、パソコン画面の世界地図上に1秒ごとの衛星、太陽、月の位置と衛星の可視範囲を実時間で表示します。しかし、衛星の動きは移動衛星でもそんなに早いわけではなく面白くないので、衛星の動きを約10倍の早さで計算し表示する機能付け加えて楽しんでおります。ロシアの長楕円軌道衛星(Molniya)や、日本の準天頂衛星(みちびき)は独特の軌道で地球を周回しています。小生作のソフトの概要を以下にご紹介します。
プログラムを起動しますと、最初に計算条件を設定する画面が現れます。この画面で、軌道要素データの読み込み先、観測する衛星の指定、観測点の設定、数値計算あるいはグラフィック表示の選択などの設定を行います。
軌道要素データの読み込みはインターネットから最新データを読み込みますので、インターネットに接続した状態で使用します。
「インターネットから読み込み」の下部にある「TLE選択読み込み」の右側の「▼」をクリックすると登録されているデータ種別が表示されますので、どれか一つを選択します。代表的な種別と収容されている衛星は次のとおりです。
amature アマチュア衛星
geo 静止衛星
molniya ロシアの「モルニヤ」衛星
sbas 日本の「みちびき」衛星等
visual 国際宇宙ステーション等
次ページにvisualを選択した場合に表示されるリストを示します。この中から目的の衛星の番号を探し出し、「衛星番号設定」のところに手入力します。
観測点は手動で入力できるほか、世界中の主な都市を選択して緯度・経度を自動設定できます。
「計算方法指定」の部分では、グラフィック表示と数値計算結果の表示のどちらかを選択できます。 「グラフィック表示(実時間)」を選択するとパソコンの時計で1秒間隔の計算結果が表示されます。 「グラフィック表示(高速計算)」では、約10倍の速度(いわゆる早回し)で計算した衛星の動きを見ることが できます。
必要な項目の設定が完了しましたら、「計算開始」ボタンをクリックします。「計算方法指定」で指定した計算結果が表示されます。
「TLE選択」のところで「visual」を選択した場合に表示される画面です。この中から目的の衛星の番号(国際宇宙ステーションの場合、62 番)を「衛星番号設定」のところに手入力します。
国際宇宙ステーション「ISS」の軌道計算例 ( : 人工衛星の位置、黄色太線:可視範囲 )
ロシアの長楕円軌道衛星「Molniya 1-90」の軌道計算例
日本の準天頂衛星「みちびき」の軌道計算例
初期設定の「計算方法の指定」のところで「数値表示」を選択した場合、衛星一覧のほか、以下のような計算結果が表示されます。
軌道要素データの内容と、元期における衛星位置の計算結果
人工衛星の緯度・経度と観測点からみた衛星方向の方位角、仰角、距離の計算結果
人工衛星の軌道計算プログラムを作成するために参考とした資料は次のとおりです。
(1)人工衛星、太陽および月の軌道計算方法
人工衛星の軌道計算方法については、Webサイトで見つけた「CALSAT32のからくり」および「人工衛星位置推算の実際
(最終版)」に掲載されている資料を参考にしました。
URL: 「CALSAT32のからくり」
URL: 人工衛星位置推算の実際(最終版)
太陽と月の軌道計算方法については、Webサイトで見つけた「古天文の部屋」に掲載されている資料を参考にしました。
URL: 「古天文の部屋」
(2)NORADのサイトから TLEデータをインターネット経由オンラインで読み込む方法
粂井 康孝 氏 著 「猫でもわかるネットワークプログラミング」を参考にしました。
(3)衛星可視範囲の計算方法
「CALSAT32のからくり」掲載の資料を参考にしました。
(4)人工衛星、太陽および月をスプライト形式でグラフィック表示する方法
日高 徹 氏 著 「Delphi 2.0 ゲームプログラミングの応用50例(パワープログラミング編)」を参考にしました。
軌道計算プログラムは一応完成させましたが、今後以下の改善を試みていく予定です。
(1)観測する人工衛星の選択操作の改善
(2)同時に複数の人工衛星の軌道計算を行い表示させる機能
(3)月の満ち欠けに応じて月を表示させる機能
(4)衛星可視範囲を見やすくする改善
Windowsプログラムを簡単に作成できるプログラミングツールは以下のようなものがあります。自作ソフト作りにチャレンジ
してみませんか。
(1)C++ Builder XE2 Starter (パスカル言語の Delphiもあります。)
販売元:Embarcadero Technologies(元々はボーランド社であったが、買収された。)
URL: Embarcadero Technologies
(2)Visual Studio 2010 Express (Visual BASIC, Visual C++, Visual C# 等があり、無料でダウンロードできる。
Visual C# がお勧めです。)
提供元:マイクロソフト
URL: マイクロソフト
以上