静止軌道(GEO)の設計と遷移軌道の計算

静止軌道(Geostationary Orbit, GEO)は、地球の自転と同期して衛星が地上から静止して見える特殊な軌道です。通信衛星、気象衛星、放送衛星に不可欠な軌道であり、軌道力学の基本的な応用例です。

本記事では、ケプラーの第3法則から静止軌道の条件を導出し、静止遷移軌道(GTO)からのΔV計算までを解説します。

本記事の内容

  • 静止軌道の条件と軌道半径の導出
  • ケプラーの第3法則からの計算
  • 静止遷移軌道(GTO)の設計
  • 軌道傾斜角の変更に必要なΔV
  • Pythonでの計算と軌道可視化

前提知識

この記事を読む前に、以下の記事を読んでおくと理解が深まります。

静止軌道の条件

衛星が地上から静止して見えるためには、以下の3条件を同時に満たす必要があります。

  1. 周期が地球の自転周期と一致: $T = T_{\oplus} = 86{,}164.1 \, \text{s}$(恒星日)
  2. 軌道傾斜角がゼロ: $i = 0°$(赤道面上の軌道)
  3. 円軌道: $e = 0$(離心率ゼロ)

条件1のみを満たす軌道を対地同期軌道(Geosynchronous Orbit, GSO)と呼びます。静止軌道はGSOの特殊な場合です。

ここで $T_{\oplus} = 86{,}164.1 \, \text{s}$ は恒星日(地球が恒星に対して1回転する時間)であり、太陽日($86{,}400 \, \text{s}$)とは約 $3$ 分 $56$ 秒異なります。

静止軌道半径の導出

ケプラーの第3法則

ケプラーの第3法則は、軌道の周期 $T$ と半長軸 $a$ の関係を与えます。

$$ \boxed{T^2 = \frac{4\pi^2}{\mu} a^3} $$

ここで $\mu = GM_{\oplus}$ は地球の重力パラメータです。

$$ \mu = GM_{\oplus} = 3.986 \times 10^{14} \, \text{m}^3/\text{s}^2 $$

軌道半径の計算

$T = T_{\oplus}$ として半長軸 $a$ を求めます。

$$ a^3 = \frac{\mu T_{\oplus}^2}{4\pi^2} $$

数値を代入します。

$$ a^3 = \frac{3.986 \times 10^{14} \times (86{,}164.1)^2}{4\pi^2} $$

分子を計算します。

$$ T_{\oplus}^2 = (86{,}164.1)^2 = 7.424 \times 10^9 \, \text{s}^2 $$

$$ \mu T_{\oplus}^2 = 3.986 \times 10^{14} \times 7.424 \times 10^9 = 2.960 \times 10^{24} \, \text{m}^3 $$

分母を計算します。

$$ 4\pi^2 = 39.478 $$

したがって

$$ a^3 = \frac{2.960 \times 10^{24}}{39.478} = 7.496 \times 10^{22} \, \text{m}^3 $$

立方根を取ると

$$ a = (7.496 \times 10^{22})^{1/3} = 4.2164 \times 10^7 \, \text{m} $$

$$ \boxed{a_{\text{GEO}} \approx 42{,}164 \, \text{km}} $$

地球の赤道半径 $R_{\oplus} = 6{,}378 \, \text{km}$ を引くと、高度は

$$ h_{\text{GEO}} = a_{\text{GEO}} – R_{\oplus} \approx 42{,}164 – 6{,}378 = 35{,}786 \, \text{km} $$

静止軌道速度

円軌道速度の公式 $v = \sqrt{\mu / r}$ より

$$ v_{\text{GEO}} = \sqrt{\frac{\mu}{a_{\text{GEO}}}} = \sqrt{\frac{3.986 \times 10^{14}}{4.2164 \times 10^7}} $$

$$ \boxed{v_{\text{GEO}} \approx 3.075 \, \text{km/s}} $$

角速度

$$ \omega_{\text{GEO}} = \frac{2\pi}{T_{\oplus}} = \frac{2\pi}{86{,}164.1} \approx 7.292 \times 10^{-5} \, \text{rad/s} $$

これは地球の自転角速度と一致します。

力のバランスによる別の導出

静止軌道では、万有引力と遠心力が釣り合います。

$$ \frac{GMm}{r^2} = m\omega^2 r $$

$m$ を消去して $r$ について解きます。

$$ r^3 = \frac{GM}{\omega^2} = \frac{\mu}{\omega^2} $$

$$ r = \left(\frac{\mu}{\omega^2}\right)^{1/3} $$

$\omega = 2\pi / T_{\oplus}$ を代入すると

$$ r = \left(\frac{\mu T_{\oplus}^2}{4\pi^2}\right)^{1/3} $$

これはケプラーの第3法則から得た結果と完全に一致します。

静止遷移軌道(GTO)

GTOの概要

地球低軌道(LEO)から直接GEOに投入するのではなく、通常は中間的な楕円軌道(静止遷移軌道, Geostationary Transfer Orbit, GTO)を経由します。

GTOは次の特徴を持つ楕円軌道です。

  • 近地点: LEO高度付近(例: $r_p \approx R_{\oplus} + 200 \, \text{km} = 6{,}578 \, \text{km}$)
  • 遠地点: GEO高度($r_a = a_{\text{GEO}} = 42{,}164 \, \text{km}$)
  • 半長軸: $a_{\text{GTO}} = (r_p + r_a) / 2$

GTOの軌道要素

$$ a_{\text{GTO}} = \frac{r_p + r_a}{2} = \frac{6{,}578 + 42{,}164}{2} = 24{,}371 \, \text{km} $$

離心率は

$$ e_{\text{GTO}} = \frac{r_a – r_p}{r_a + r_p} = \frac{42{,}164 – 6{,}578}{42{,}164 + 6{,}578} = \frac{35{,}586}{48{,}742} \approx 0.730 $$

ΔVの計算

LEOからGTOへの投入(第1噴射)

ビサ方程式 $v^2 = \mu\left(\frac{2}{r} – \frac{1}{a}\right)$ を使います。

LEOでの円軌道速度:

$$ v_{\text{LEO}} = \sqrt{\frac{\mu}{r_p}} = \sqrt{\frac{3.986 \times 10^{14}}{6.578 \times 10^6}} \approx 7.784 \, \text{km/s} $$

GTO近地点での速度:

$$ v_{p,\text{GTO}} = \sqrt{\mu\left(\frac{2}{r_p} – \frac{1}{a_{\text{GTO}}}\right)} $$

$$ v_{p,\text{GTO}} = \sqrt{3.986 \times 10^{14} \left(\frac{2}{6.578 \times 10^6} – \frac{1}{2.4371 \times 10^7}\right)} $$

$$ = \sqrt{3.986 \times 10^{14} \times (3.041 \times 10^{-7} – 4.103 \times 10^{-8})} $$

$$ = \sqrt{3.986 \times 10^{14} \times 2.631 \times 10^{-7}} $$

$$ \approx \sqrt{1.0484 \times 10^{8}} \approx 10.239 \, \text{km/s} $$

第1噴射のΔV:

$$ \Delta V_1 = v_{p,\text{GTO}} – v_{\text{LEO}} \approx 10.239 – 7.784 = 2.455 \, \text{km/s} $$

GTOからGEOへの投入(第2噴射)

GTO遠地点での速度:

$$ v_{a,\text{GTO}} = \sqrt{\mu\left(\frac{2}{r_a} – \frac{1}{a_{\text{GTO}}}\right)} $$

$$ v_{a,\text{GTO}} = \sqrt{3.986 \times 10^{14} \left(\frac{2}{4.2164 \times 10^7} – \frac{1}{2.4371 \times 10^7}\right)} $$

$$ = \sqrt{3.986 \times 10^{14} \times (4.743 \times 10^{-8} – 4.103 \times 10^{-8})} $$

$$ = \sqrt{3.986 \times 10^{14} \times 6.40 \times 10^{-9}} $$

$$ \approx \sqrt{2.551 \times 10^{6}} \approx 1.597 \, \text{km/s} $$

GEOでの円軌道速度:

$$ v_{\text{GEO}} = \sqrt{\frac{\mu}{r_a}} = \sqrt{\frac{3.986 \times 10^{14}}{4.2164 \times 10^7}} \approx 3.075 \, \text{km/s} $$

第2噴射のΔV:

$$ \Delta V_2 = v_{\text{GEO}} – v_{a,\text{GTO}} \approx 3.075 – 1.597 = 1.478 \, \text{km/s} $$

合計ΔV

$$ \boxed{\Delta V_{\text{total}} = \Delta V_1 + \Delta V_2 \approx 2.455 + 1.478 = 3.933 \, \text{km/s}} $$

軌道傾斜角の変更

実際のロケット打ち上げでは、射場の緯度により初期軌道傾斜角が $0°$ ではありません(例: 種子島 $i \approx 30°$、ケープカナベラル $i \approx 28.5°$)。GEOに投入するには軌道面を変更する必要があります。

軌道面変更のΔV

速度 $v$ で飛行中に傾斜角を $\Delta i$ だけ変更するのに必要なΔVは

$$ \boxed{\Delta V_{\text{plane}} = 2v \sin\left(\frac{\Delta i}{2}\right)} $$

遠地点での軌道面変更が有利な理由

$\Delta V_{\text{plane}}$ は速度 $v$ に比例します。GTO遠地点では速度が遅い($v_{a,\text{GTO}} \approx 1.6 \, \text{km/s}$)ため、近地点($v_{p,\text{GTO}} \approx 10.2 \, \text{km/s}$)で行うよりもはるかに少ないΔVで済みます。

実際には、第2噴射(GTO→GEO)と軌道面変更を同時に行います。

複合マヌーバのΔV

遠地点で速度増加と軌道面変更を同時に行う場合、ΔVはベクトル合成により

$$ \Delta V = \sqrt{v_{a,\text{GTO}}^2 + v_{\text{GEO}}^2 – 2 v_{a,\text{GTO}} \, v_{\text{GEO}} \cos(\Delta i)} $$

$\Delta i = 28.5°$ の場合

$$ \Delta V = \sqrt{1.597^2 + 3.075^2 – 2 \times 1.597 \times 3.075 \times \cos(28.5°)} \approx 1.837 \, \text{km/s} $$

これは軌道面変更を別々に行う場合よりも効率的です。

Pythonでの実装

静止軌道の計算と可視化

import numpy as np
import matplotlib.pyplot as plt

# --- 定数 ---
mu = 3.986e14        # 地球の重力パラメータ [m^3/s^2]
R_earth = 6.378e6    # 地球赤道半径 [m]
T_sidereal = 86164.1 # 恒星日 [s]

# --- 静止軌道半径の計算 ---
a_geo = (mu * T_sidereal**2 / (4 * np.pi**2))**(1/3)
h_geo = a_geo - R_earth
v_geo = np.sqrt(mu / a_geo)

print("=== 静止軌道(GEO)のパラメータ ===")
print(f"軌道半径: {a_geo/1e3:.1f} km")
print(f"軌道高度: {h_geo/1e3:.1f} km")
print(f"軌道速度: {v_geo/1e3:.3f} km/s")
print(f"周期:     {T_sidereal:.1f} s = {T_sidereal/3600:.2f} hr")

# --- LEO → GTO → GEO のΔV計算 ---
h_leo = 200e3  # LEO高度 200 km
r_leo = R_earth + h_leo
r_geo = a_geo

# LEO円軌道速度
v_leo = np.sqrt(mu / r_leo)

# GTO
a_gto = (r_leo + r_geo) / 2
e_gto = (r_geo - r_leo) / (r_geo + r_leo)

# GTO近地点速度
v_p_gto = np.sqrt(mu * (2/r_leo - 1/a_gto))

# GTO遠地点速度
v_a_gto = np.sqrt(mu * (2/r_geo - 1/a_gto))

# ΔV
dv1 = v_p_gto - v_leo         # LEO → GTO
dv2 = v_geo - v_a_gto         # GTO → GEO
dv_total = dv1 + dv2

print(f"\n=== ΔV計算(LEO {h_leo/1e3:.0f}km → GEO) ===")
print(f"GTO半長軸:   {a_gto/1e3:.1f} km")
print(f"GTO離心率:   {e_gto:.4f}")
print(f"LEO速度:     {v_leo/1e3:.3f} km/s")
print(f"GTO近地点速度: {v_p_gto/1e3:.3f} km/s")
print(f"GTO遠地点速度: {v_a_gto/1e3:.3f} km/s")
print(f"GEO速度:     {v_geo/1e3:.3f} km/s")
print(f"ΔV1 (LEO→GTO): {dv1/1e3:.3f} km/s")
print(f"ΔV2 (GTO→GEO): {dv2/1e3:.3f} km/s")
print(f"ΔV合計:      {dv_total/1e3:.3f} km/s")

# --- 軌道傾斜角変更のΔV ---
inclinations = np.linspace(0, 60, 100)  # deg
dv_plane_perigee = 2 * v_p_gto * np.sin(np.radians(inclinations) / 2)
dv_plane_apogee = 2 * v_a_gto * np.sin(np.radians(inclinations) / 2)

# 複合マヌーバ(遠地点で同時に軌道面変更 + 円軌道化)
dv_combined = np.sqrt(v_a_gto**2 + v_geo**2 -
                      2 * v_a_gto * v_geo * np.cos(np.radians(inclinations)))

# --- 可視化 ---
fig, axes = plt.subplots(2, 2, figsize=(14, 12))

# (1) 軌道の図
theta = np.linspace(0, 2*np.pi, 500)

# 地球
earth_x = R_earth * np.cos(theta) / 1e6
earth_y = R_earth * np.sin(theta) / 1e6

# LEO
leo_x = r_leo * np.cos(theta) / 1e6
leo_y = r_leo * np.sin(theta) / 1e6

# GEO
geo_x = r_geo * np.cos(theta) / 1e6
geo_y = r_geo * np.sin(theta) / 1e6

# GTO(楕円)
theta_gto = np.linspace(0, 2*np.pi, 500)
p_gto = a_gto * (1 - e_gto**2)
r_gto = p_gto / (1 + e_gto * np.cos(theta_gto))
gto_x = r_gto * np.cos(theta_gto) / 1e6
gto_y = r_gto * np.sin(theta_gto) / 1e6

axes[0, 0].fill(earth_x, earth_y, color='skyblue', alpha=0.5, label='Earth')
axes[0, 0].plot(leo_x, leo_y, 'g-', linewidth=1.5, label=f'LEO ({h_leo/1e3:.0f} km)')
axes[0, 0].plot(gto_x, gto_y, 'r--', linewidth=1.5, label='GTO')
axes[0, 0].plot(geo_x, geo_y, 'b-', linewidth=2, label=f'GEO ({h_geo/1e3:.0f} km)')

# 噴射ポイント
axes[0, 0].plot(r_leo/1e6, 0, 'r^', markersize=12, label=f'ΔV₁ = {dv1/1e3:.2f} km/s')
axes[0, 0].plot(-r_geo/1e6, 0, 'bs', markersize=12, label=f'ΔV₂ = {dv2/1e3:.2f} km/s')

axes[0, 0].set_xlabel('x [× 10⁶ m]', fontsize=11)
axes[0, 0].set_ylabel('y [× 10⁶ m]', fontsize=11)
axes[0, 0].set_title('LEO → GTO → GEO Transfer', fontsize=13)
axes[0, 0].set_aspect('equal')
axes[0, 0].legend(fontsize=8, loc='upper right')
axes[0, 0].grid(True, alpha=0.3)

# (2) 軌道傾斜角変更のΔV
axes[0, 1].plot(inclinations, dv_plane_perigee/1e3, 'r-', linewidth=1.5,
                label='At perigee')
axes[0, 1].plot(inclinations, dv_plane_apogee/1e3, 'b-', linewidth=1.5,
                label='At apogee')
axes[0, 1].plot(inclinations, dv_combined/1e3, 'g--', linewidth=2,
                label='Combined (apogee)')

# 主要射場をマーク
for name, inc, color in [('Tanegashima', 30, 'red'),
                          ('Cape Canaveral', 28.5, 'blue'),
                          ('Kourou', 5.2, 'green')]:
    dv_c = np.sqrt(v_a_gto**2 + v_geo**2 -
                    2 * v_a_gto * v_geo * np.cos(np.radians(inc)))
    axes[0, 1].axvline(x=inc, color=color, linestyle=':', alpha=0.5)
    axes[0, 1].annotate(f'{name}\nΔi={inc}°\nΔV={dv_c/1e3:.2f} km/s',
                        xy=(inc, dv_c/1e3), fontsize=7,
                        xytext=(inc+3, dv_c/1e3+0.5),
                        arrowprops=dict(arrowstyle='->', color=color))

axes[0, 1].set_xlabel('Inclination Change [deg]', fontsize=11)
axes[0, 1].set_ylabel('ΔV [km/s]', fontsize=11)
axes[0, 1].set_title('ΔV for Plane Change', fontsize=13)
axes[0, 1].legend(fontsize=9)
axes[0, 1].grid(True, alpha=0.3)

# (3) LEO高度による合計ΔVの変化
h_leos = np.linspace(200e3, 2000e3, 100)
dv_totals = []
for h in h_leos:
    r_l = R_earth + h
    v_l = np.sqrt(mu / r_l)
    a_t = (r_l + r_geo) / 2
    v_p = np.sqrt(mu * (2/r_l - 1/a_t))
    v_a = np.sqrt(mu * (2/r_geo - 1/a_t))
    dv = (v_p - v_l) + (v_geo - v_a)
    dv_totals.append(dv)

axes[1, 0].plot(h_leos/1e3, np.array(dv_totals)/1e3, 'b-', linewidth=2)
axes[1, 0].set_xlabel('LEO Altitude [km]', fontsize=11)
axes[1, 0].set_ylabel('Total ΔV [km/s]', fontsize=11)
axes[1, 0].set_title('Total ΔV vs LEO Altitude (to GEO)', fontsize=13)
axes[1, 0].grid(True, alpha=0.3)

# (4) ケプラー第3法則の可視化
a_range = np.linspace(R_earth, 5*a_geo, 500)
T_range = 2 * np.pi * np.sqrt(a_range**3 / mu)

axes[1, 1].plot(a_range/1e6, T_range/3600, 'b-', linewidth=2)
axes[1, 1].axhline(y=T_sidereal/3600, color='r', linestyle='--', alpha=0.7,
                    label=f'Sidereal day = {T_sidereal/3600:.2f} hr')
axes[1, 1].axvline(x=a_geo/1e6, color='r', linestyle='--', alpha=0.7)
axes[1, 1].plot(a_geo/1e6, T_sidereal/3600, 'ro', markersize=10,
                label=f'GEO: a = {a_geo/1e3:.0f} km')
axes[1, 1].set_xlabel('Semi-major axis [× 10⁶ m]', fontsize=11)
axes[1, 1].set_ylabel('Period [hours]', fontsize=11)
axes[1, 1].set_title("Kepler's Third Law: T² ∝ a³", fontsize=13)
axes[1, 1].legend(fontsize=10)
axes[1, 1].grid(True, alpha=0.3)

plt.tight_layout()
plt.show()

静止軌道の運用上の考慮事項

ステーションキーピング

静止軌道上の衛星は、以下の摂動により軌道がずれていきます。

  • 南北方向: 太陽・月の重力により軌道傾斜角が年間約 $0.75°$ 増加
  • 東西方向: 地球の非球形($J_{22}$ 項、三軸不等)により経度方向にドリフト

これを補正するために定期的な軌道修正(ステーションキーピング)が必要です。年間のΔVは南北方向で約 $50 \, \text{m/s}$、東西方向で約 $2 \, \text{m/s}$ です。

静止軌道スロット

静止軌道は赤道上空の一本の円上に限られるため、衛星の経度位置(スロット)はITU(国際電気通信連合)により管理されています。軌道上の衛星密度が増加しており、限られた軌道資源の有効活用が課題です。

まとめ

本記事では、静止軌道(GEO)の設計と遷移軌道の計算について解説しました。

  • 静止軌道の条件: $T = T_{\oplus}$(恒星日)、$i = 0°$、$e = 0$
  • 軌道半径: ケプラーの第3法則より $a_{\text{GEO}} \approx 42{,}164 \, \text{km}$(高度 $\approx 35{,}786 \, \text{km}$)
  • 軌道速度: $v_{\text{GEO}} \approx 3.075 \, \text{km/s}$
  • GTO→GEO遷移: $\Delta V_{\text{total}} \approx 3.9 \, \text{km/s}$(LEO 200 kmから)
  • 軌道面変更: 遠地点で行うのが効率的。$\Delta V = 2v\sin(\Delta i/2)$

次のステップとして、以下の記事も参考にしてください。