惑星間軌道の設計 — パッチドコニック法による火星遷移軌道の計算

人類は1960年代から火星に探査機を送り続けていますが、「地球から火星にまっすぐ飛んでいく」ことはできません。なぜなら、惑星間空間は太陽の巨大な重力場が支配する世界であり、探査機は太陽のまわりを周回する軌道に乗って火星まで「滑空」する必要があるからです。さらに、打ち上げのタイミングは約26ヶ月に一度しか訪れません。この「打ち上げウィンドウ」を逃すと、2年以上待たなければなりません。

惑星間ミッションの軌道設計は、宇宙力学の最もスリリングな応用の一つです。探査機は地球の重力圏を脱出し、太陽のまわりを半周以上かけて巡航し、火星の重力圏に捕獲されます。この一連の過程を効率的に計算するための手法がパッチドコニック法(patched conic method)です。

パッチドコニック法を理解すると、以下の設計が可能になります。

  • 火星ミッションの$\Delta V$バジェット: 地球脱出から火星到着までに必要な推進量の見積もり
  • 打ち上げウィンドウの計算: 最適な打ち上げ時期と飛行時間の決定
  • 重力アシスト軌道: 木星や金星の重力を利用して燃料を節約する軌道の概念

本記事の内容

  • 地球から火星へ — 惑星間航行の基本概念
  • パッチドコニック近似と影響圏の概念
  • 出発双曲線(C3エネルギー)
  • 惑星間巡航(ホーマン遷移の拡張)
  • 到着双曲線
  • 打ち上げウィンドウ
  • Pythonでパッチドコニック法による火星遷移軌道の計算
  • $\Delta V$ バジェット
  • 重力アシストの概念

前提知識

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

地球から火星へ — 惑星間航行の基本

惑星間航行の難しさ

惑星間航行は地球軌道内での軌道遷移とは根本的に異なる2つの課題があります。

第1の課題: スケール — 地球から火星までの最短距離でも約5,460万km(0.37 AU)、最遠で約4億km(2.67 AU)です。LEOの軌道半径(約6,800 km)と比べると4桁以上のスケール差があります。探査機はこの距離を数ヶ月〜数年かけて飛行します。

第2の課題: 重力場の切り替わり — 探査機は地球の近くでは地球の重力が支配し、惑星間空間では太陽の重力が支配し、火星の近くでは火星の重力が支配します。一つの二体問題では全体を記述できません。

パッチドコニック法は、この「重力場の切り替わり」問題を巧妙に解決します。各領域で支配的な重力天体との二体問題を解き、境界で解をつなぎ合わせる(パッチする)のです。

惑星の軌道データ

計算に必要な地球と火星の基本データを整理します。

パラメータ 地球 火星
軌道半長軸 $a$ [AU] 1.000 1.524
離心率 $e$ 0.0167 0.0934
公転周期 [年] 1.000 1.881
重力パラメータ $\mu$ [km³/s²] 398,600 42,828
赤道半径 [km] 6,378 3,396
影響圏半径 [km] 924,600 577,200

火星の軌道離心率(0.0934)が地球(0.0167)よりかなり大きいことに注意してください。このため、火星の太陽からの距離は近日点で1.381 AU、遠日点で1.666 AUと大きく変動し、遷移軌道の設計に影響します。

惑星間航行の全体像がイメージできたところで、パッチドコニック法の核心である「影響圏」の概念を学びましょう。

パッチドコニック近似と影響圏

パッチドコニック法の考え方

パッチドコニック法では、宇宙空間を3つの領域に分割します。

領域1: 地球の影響圏内 — 探査機は地球の重力場のもとで運動します。地球を中心とした二体問題を解きます。太陽の重力は無視します。

領域2: 惑星間空間 — 探査機は太陽の重力場のもとで運動します。太陽を中心とした二体問題を解きます。地球と火星の重力は無視します。

領域3: 火星の影響圏内 — 探査機は火星の重力場のもとで運動します。火星を中心とした二体問題を解きます。太陽の重力は無視します。

各領域の境界(影響圏の表面)で、探査機の速度と位置を変換してつなぎ合わせます。イメージとしては、3つのパズルピース(円錐曲線=conic section)を境界で貼り合わせる(patch)ように軌道をつなぎます。

影響圏(Sphere of Influence, SOI)

影響圏は、ある惑星の重力が太陽の重力に対して「支配的」と言える領域の大きさです。定義はいくつかありますが、最も一般的なのはラプラスの影響圏です。

$$ r_{\text{SOI}} = a\left(\frac{m_{\text{planet}}}{m_{\text{Sun}}}\right)^{2/5} $$

ここで $a$ は惑星の軌道半長軸、$m_{\text{planet}}$ と $m_{\text{Sun}}$ はそれぞれの質量です。

この式の指数が $2/5$ であることに注目してください。単純な重力の等しい距離($1/2$ 乗)でも、ロッシュ限界の $1/3$ 乗でもなく、摂動論から導かれる $2/5$ 乗です。この指数は、惑星による摂動加速度と太陽による摂動加速度の比が1になる距離から導出されます。

地球と火星の影響圏半径を計算すると

$$ r_{\text{SOI, Earth}} = 1 \, \text{AU} \times \left(\frac{5.97 \times 10^{24}}{1.99 \times 10^{30}}\right)^{2/5} \approx 924{,}600 \, \text{km} \approx 0.00618 \, \text{AU} $$

$$ r_{\text{SOI, Mars}} = 1.524 \, \text{AU} \times \left(\frac{6.42 \times 10^{23}}{1.99 \times 10^{30}}\right)^{2/5} \approx 577{,}200 \, \text{km} \approx 0.00386 \, \text{AU} $$

惑星間の距離(0.37〜2.67 AU)に比べて影響圏の大きさ(0.004〜0.006 AU)は非常に小さいです。このため、パッチドコニック法では「影響圏の表面で惑星間軌道に接続する」という近似が成り立つのです。

影響圏の概念がわかったところで、次に探査機が地球の影響圏を脱出するための「出発双曲線」を考えましょう。

出発双曲線とC3エネルギー

地球脱出の幾何学

探査機が地球の影響圏を脱出するためには、地球に対する速度が脱出速度を超えている必要があります。脱出後の探査機は地球に対して双曲線軌道(エネルギーが正の軌道)を描きます。

LEOパーキング軌道(高度200 km、円軌道)から出発する場合、円軌道速度は

$$ v_{\text{LEO}} = \sqrt{\frac{\mu_E}{r_{\text{LEO}}}} = \sqrt{\frac{398600}{6578}} \approx 7.784 \, \text{km/s} $$

脱出後の余剰速度($v_\infty$)

探査機が地球の影響圏の端($r \to \infty$)に達したとき、地球に対してまだ残っている速度を余剰速度(hyperbolic excess velocity)$v_\infty$ と呼びます。エネルギー保存から

$$ \frac{1}{2}v_{\text{burn}}^2 – \frac{\mu_E}{r_{\text{LEO}}} = \frac{1}{2}v_\infty^2 $$

したがって、パーキング軌道での噴射速度は

$$ v_{\text{burn}} = \sqrt{v_\infty^2 + \frac{2\mu_E}{r_{\text{LEO}}}} = \sqrt{v_\infty^2 + v_{\text{esc}}^2} $$

必要なΔVは

$$ \Delta V_{\text{departure}} = v_{\text{burn}} – v_{\text{LEO}} = \sqrt{v_\infty^2 + v_{\text{esc}}^2} – v_{\text{LEO}} $$

ここで $v_{\text{esc}} = \sqrt{2}v_{\text{LEO}} \approx 11.01$ km/s は脱出速度です。

C3エネルギー

ロケット工学では、$v_\infty^2$ をC3エネルギー(characteristic energy)と呼びます。

$$ C_3 = v_\infty^2 \quad [\text{km}^2/\text{s}^2] $$

C3はロケットのペイロード能力を表す指標として広く使われます。各ロケットには「C3に対するペイロード質量」のグラフ(C3曲線)が公表されており、ミッション設計者はこれを参照して打ち上げ機を選定します。

$$ C_3 = 0 \quad \text{(地球脱出ちょうど)} $$

$$ C_3 > 0 \quad \text{(惑星間軌道へ)} $$

$$ C_3 < 0 \quad \text{(地球に束縛された軌道)} $$

典型的な火星ミッションの $C_3$ は 8〜16 km²/s² 程度です。これは $v_\infty \approx 2.8$〜$4.0$ km/s に対応します。

地球脱出の力学がわかったところで、次に惑星間空間での巡航軌道を計算しましょう。

惑星間巡航 — ホーマン遷移の拡張

太陽中心の遷移軌道

地球の影響圏を脱出した探査機は、太陽のまわりを公転する楕円軌道(遷移軌道)に乗ります。最も単純な遷移軌道は、地球軌道と火星軌道に内接・外接するホーマン遷移軌道です。

ホーマン遷移軌道の半長軸は、地球と火星の軌道半径の平均です。

$$ a_t = \frac{r_E + r_M}{2} = \frac{1.000 + 1.524}{2} = 1.262 \, \text{AU} $$

遷移軌道のエネルギーは

$$ \mathcal{E}_t = -\frac{\mu_{\odot}}{2a_t} $$

ここで $\mu_{\odot} = 1.327 \times 10^{11}$ km³/s² は太陽の重力パラメータです。

出発速度と到着速度

ビザビバ方程式を使って、遷移軌道の出発点(地球軌道, $r = r_E$)と到着点(火星軌道, $r = r_M$)での速度を計算します。

出発点での速度:

$$ v_{t,1} = \sqrt{\mu_{\odot}\left(\frac{2}{r_E} – \frac{1}{a_t}\right)} $$

到着点での速度:

$$ v_{t,2} = \sqrt{\mu_{\odot}\left(\frac{2}{r_M} – \frac{1}{a_t}\right)} $$

地球の公転速度は $v_E = \sqrt{\mu_{\odot}/r_E}$、火星の公転速度は $v_M = \sqrt{\mu_{\odot}/r_M}$ です。

余剰速度は、遷移軌道の速度と惑星の公転速度の差で決まります。

$$ v_{\infty, \text{dep}} = v_{t,1} – v_E \quad \text{(出発時、地球に対する余剰速度)} $$

$$ v_{\infty, \text{arr}} = v_{t,2} – v_M \quad \text{(到着時、火星に対する余剰速度、符号に注意)} $$

飛行時間

ホーマン遷移軌道の飛行時間は、楕円の半周期です。

$$ T_{\text{transfer}} = \pi\sqrt{\frac{a_t^3}{\mu_{\odot}}} $$

地球-火星のホーマン遷移では約259日(約8.5ヶ月)です。

打ち上げウィンドウとシノディック周期

ホーマン遷移が成立するためには、探査機が火星軌道に到着する瞬間に火星がそこにいなければなりません。このためには、出発時に地球と火星の位置関係が特定の角度(位相角)でなければなりません。

必要な位相角 $\phi$ は、飛行時間中に火星が公転する角度から決まります。

$$ \phi = \pi – n_M \cdot T_{\text{transfer}} $$

ここで $n_M$ は火星の平均運動(角速度)です。

地球と火星のシノディック周期(同じ位相関係が繰り返される周期)は

$$ T_{\text{syn}} = \frac{1}{1/T_E – 1/T_M} = \frac{1}{1 – 1/1.881} \approx 2.135 \, \text{年} \approx 780 \, \text{日} $$

つまり、最適な打ち上げ機会は約26ヶ月(2年2ヶ月)に一度しか訪れません。NASAの火星ミッションが約2年おきに打ち上げられるのは、この天体力学的な制約によるものです。

惑星間巡航の計算ができたので、次に火星に到着した際の力学を見ていきましょう。

到着双曲線

火星の影響圏への進入

探査機が火星の影響圏の表面に達すると、再び惑星(火星)中心の二体問題に切り替わります。影響圏表面での火星に対する相対速度が $v_{\infty, \text{arr}}$ で、これが火星に対する双曲線の余剰速度です。

火星周回軌道への投入

探査機を火星の周回軌道に投入するには、双曲線軌道の近火点でブレーキ噴射を行い、速度を周回軌道速度まで下げます。

近火点の半径を $r_p$(通常、火星表面から数百km)とすると、近火点での速度は

$$ v_p = \sqrt{v_{\infty, \text{arr}}^2 + \frac{2\mu_M}{r_p}} $$

目標の周回軌道(楕円または円)の近火点での速度 $v_{\text{orbit}}$ との差が必要なΔVです。

$$ \Delta V_{\text{insertion}} = v_p – v_{\text{orbit}} $$

エアロブレーキング

ΔVを推進剤で賄う代わりに、火星の薄い大気を利用して減速するエアロブレーキングも使われます。Mars Reconnaissance Orbiter(MRO)やExoMars Trace Gas Orbiter(TGO)は、到着後に数ヶ月かけてエアロブレーキングで軌道を調整しました。

到着の力学も理解できたので、いよいよPythonでパッチドコニック法の全体計算を実装しましょう。

Pythonでパッチドコニック法による火星遷移軌道の計算

定数と惑星パラメータ

import numpy as np
import matplotlib.pyplot as plt

# --- 定数 ---
AU = 1.496e8          # 1 AU [km]
mu_sun = 1.32712440018e11   # 太陽の重力パラメータ [km^3/s^2]
mu_earth = 3.986004418e5    # 地球の重力パラメータ [km^3/s^2]
mu_mars = 4.282837e4        # 火星の重力パラメータ [km^3/s^2]

# 惑星軌道(円軌道近似)
r_earth = 1.000 * AU       # 地球の軌道半径 [km]
r_mars = 1.524 * AU        # 火星の軌道半径 [km]

# 惑星の公転速度
v_earth = np.sqrt(mu_sun / r_earth)  # 地球の公転速度 [km/s]
v_mars = np.sqrt(mu_sun / r_mars)    # 火星の公転速度 [km/s]

# 影響圏
soi_earth = r_earth * (mu_earth / mu_sun)**(2/5)
soi_mars = r_mars * (mu_mars / mu_sun)**(2/5)

# パーキング軌道
r_park_earth = 6378.137 + 200     # LEO高度200km [km]
r_park_mars = 3396.2 + 300        # 火星周回高度300km [km]

print("=== 惑星パラメータ ===")
print(f"地球公転速度: {v_earth:.3f} km/s")
print(f"火星公転速度: {v_mars:.3f} km/s")
print(f"地球影響圏: {soi_earth:.0f} km ({soi_earth/AU:.5f} AU)")
print(f"火星影響圏: {soi_mars:.0f} km ({soi_mars/AU:.5f} AU)")

ホーマン遷移の計算

def hohmann_interplanetary(r1, r2, mu):
    """
    惑星間ホーマン遷移の計算

    Parameters:
        r1: 出発惑星の軌道半径 [km]
        r2: 到着惑星の軌道半径 [km]
        mu: 中心天体(太陽)の重力パラメータ

    Returns:
        dict: 遷移軌道のパラメータ
    """
    # 遷移軌道の半長軸
    a_t = (r1 + r2) / 2

    # 遷移軌道の離心率
    e_t = abs(r2 - r1) / (r2 + r1)

    # 飛行時間(半周期)
    T_transfer = np.pi * np.sqrt(a_t**3 / mu)

    # 出発点での速度(ビザビバ方程式)
    v_dep = np.sqrt(mu * (2/r1 - 1/a_t))

    # 到着点での速度
    v_arr = np.sqrt(mu * (2/r2 - 1/a_t))

    # 惑星の公転速度
    v_planet1 = np.sqrt(mu / r1)
    v_planet2 = np.sqrt(mu / r2)

    # 余剰速度
    v_inf_dep = abs(v_dep - v_planet1)
    v_inf_arr = abs(v_planet2 - v_arr)

    return {
        'a_t': a_t,
        'e_t': e_t,
        'T_transfer': T_transfer,
        'v_dep': v_dep,
        'v_arr': v_arr,
        'v_inf_dep': v_inf_dep,
        'v_inf_arr': v_inf_arr,
        'C3_dep': v_inf_dep**2,
        'C3_arr': v_inf_arr**2,
    }


# --- ホーマン遷移の計算 ---
hohmann = hohmann_interplanetary(r_earth, r_mars, mu_sun)

print("\n=== ホーマン遷移軌道 ===")
print(f"半長軸: {hohmann['a_t']/AU:.4f} AU")
print(f"離心率: {hohmann['e_t']:.4f}")
print(f"飛行時間: {hohmann['T_transfer']/86400:.1f} 日 ({hohmann['T_transfer']/(86400*365.25):.2f} 年)")
print(f"\n出発時 (地球影響圏脱出):")
print(f"  遷移軌道速度: {hohmann['v_dep']:.3f} km/s")
print(f"  地球公転速度: {v_earth:.3f} km/s")
print(f"  余剰速度 v∞: {hohmann['v_inf_dep']:.3f} km/s")
print(f"  C3: {hohmann['C3_dep']:.2f} km²/s²")
print(f"\n到着時 (火星影響圏進入):")
print(f"  遷移軌道速度: {hohmann['v_arr']:.3f} km/s")
print(f"  火星公転速度: {v_mars:.3f} km/s")
print(f"  余剰速度 v∞: {hohmann['v_inf_arr']:.3f} km/s")

ΔVバジェットの計算

def compute_delta_v_budget(hohmann_params, r_park_dep, r_park_arr,
                           mu_dep, mu_arr):
    """
    パッチドコニック法によるΔVバジェットの計算

    Returns:
        dict: ΔVの内訳
    """
    v_inf_dep = hohmann_params['v_inf_dep']
    v_inf_arr = hohmann_params['v_inf_arr']

    # --- 出発(地球脱出) ---
    # パーキング軌道速度
    v_park_dep = np.sqrt(mu_dep / r_park_dep)
    # 脱出速度
    v_esc_dep = np.sqrt(2 * mu_dep / r_park_dep)
    # 双曲線近地点速度
    v_hyp_dep = np.sqrt(v_inf_dep**2 + v_esc_dep**2)
    # 必要なΔV
    dv_departure = v_hyp_dep - v_park_dep

    # --- 到着(火星投入) ---
    # 捕獲軌道速度(300km円軌道)
    v_park_arr = np.sqrt(mu_arr / r_park_arr)
    # 脱出速度
    v_esc_arr = np.sqrt(2 * mu_arr / r_park_arr)
    # 双曲線近火点速度
    v_hyp_arr = np.sqrt(v_inf_arr**2 + v_esc_arr**2)
    # 必要なΔV
    dv_arrival = v_hyp_arr - v_park_arr

    # 合計
    dv_total = dv_departure + dv_arrival

    return {
        'dv_departure': dv_departure,
        'dv_arrival': dv_arrival,
        'dv_total': dv_total,
        'v_park_dep': v_park_dep,
        'v_esc_dep': v_esc_dep,
        'v_hyp_dep': v_hyp_dep,
        'v_park_arr': v_park_arr,
        'v_esc_arr': v_esc_arr,
        'v_hyp_arr': v_hyp_arr,
    }


# --- ΔVバジェットの計算 ---
budget = compute_delta_v_budget(hohmann, r_park_earth, r_park_mars,
                                mu_earth, mu_mars)

print("\n=== ΔVバジェット ===")
print(f"地球出発:")
print(f"  LEOパーキング軌道速度: {budget['v_park_dep']:.3f} km/s")
print(f"  脱出速度: {budget['v_esc_dep']:.3f} km/s")
print(f"  双曲線近地点速度: {budget['v_hyp_dep']:.3f} km/s")
print(f"  ΔV_departure: {budget['dv_departure']:.3f} km/s")
print(f"\n火星到着:")
print(f"  火星周回軌道速度: {budget['v_park_arr']:.3f} km/s")
print(f"  脱出速度: {budget['v_esc_arr']:.3f} km/s")
print(f"  双曲線近火点速度: {budget['v_hyp_arr']:.3f} km/s")
print(f"  ΔV_arrival: {budget['dv_arrival']:.3f} km/s")
print(f"\n合計ΔV: {budget['dv_total']:.3f} km/s")

遷移軌道の可視化

# --- 遷移軌道の可視化 ---
fig, ax = plt.subplots(figsize=(10, 10))

# 地球軌道
theta = np.linspace(0, 2*np.pi, 500)
ax.plot(r_earth * np.cos(theta) / AU, r_earth * np.sin(theta) / AU,
        'b-', linewidth=1.5, label='Earth orbit')

# 火星軌道
ax.plot(r_mars * np.cos(theta) / AU, r_mars * np.sin(theta) / AU,
        'r-', linewidth=1.5, label='Mars orbit')

# ホーマン遷移軌道(楕円の半分)
a_t = hohmann['a_t']
e_t = hohmann['e_t']
theta_transfer = np.linspace(0, np.pi, 200)
r_transfer = a_t * (1 - e_t**2) / (1 + e_t * np.cos(theta_transfer))
x_transfer = r_transfer * np.cos(theta_transfer) / AU
y_transfer = r_transfer * np.sin(theta_transfer) / AU

ax.plot(x_transfer, y_transfer, 'g-', linewidth=2.5, label='Transfer orbit')

# 出発・到着マーカー
ax.plot(x_transfer[0], y_transfer[0], 'bo', markersize=12, label='Departure (Earth)')
ax.plot(x_transfer[-1], y_transfer[-1], 'r^', markersize=12, label='Arrival (Mars)')

# 太陽
ax.plot(0, 0, 'y*', markersize=20, label='Sun')

# 到着時の火星の位置(位相角)
T_transfer = hohmann['T_transfer']
n_mars = np.sqrt(mu_sun / r_mars**3)  # 火星の平均運動
phi_mars = np.pi - n_mars * T_transfer  # 出発時の火星の位相角

# 出発時の火星位置
ax.plot(r_mars * np.cos(phi_mars) / AU,
        r_mars * np.sin(phi_mars) / AU,
        'rs', markersize=10, markerfacecolor='none', markeredgewidth=2,
        label=f'Mars at departure (φ={np.degrees(phi_mars):.1f}°)')

# 矢印で飛行方向を表示
mid = len(theta_transfer) // 2
ax.annotate('', xy=(x_transfer[mid+5], y_transfer[mid+5]),
            xytext=(x_transfer[mid], y_transfer[mid]),
            arrowprops=dict(arrowstyle='->', color='green', lw=2))

ax.set_xlabel('x [AU]')
ax.set_ylabel('y [AU]')
ax.set_title('地球-火星 ホーマン遷移軌道')
ax.set_aspect('equal')
ax.legend(loc='upper left', fontsize=9)
ax.grid(True, alpha=0.3)
ax.set_xlim(-2.0, 2.0)
ax.set_ylim(-2.0, 2.0)

plt.tight_layout()
plt.savefig('mars_hohmann_transfer.png', dpi=150, bbox_inches='tight')
plt.show()

この図から、地球-火星遷移軌道の幾何学的な構造が明確に見えます。

  1. 遷移軌道は地球軌道に内接し、火星軌道に外接する楕円 — 地球出発点が近日点、火星到着点が遠日点となっています。

  2. 出発時の火星の位置が重要 — 四角印で示された出発時の火星の位置は、火星の公転運動を考慮して、飛行時間後にちょうど到着点に火星が来るように設定されています。この位相角の条件が打ち上げウィンドウを決定します。

  3. 遷移軌道は太陽の半周分 — ホーマン遷移は太陽のまわりを半周する軌道で、地球と火星を最小エネルギーで結びます。

ΔVバジェットの可視化

# --- ΔVバジェットの棒グラフ ---
fig, ax = plt.subplots(figsize=(10, 6))

categories = [
    'LEO\nparking\norbit',
    'Earth\ndeparture\nΔV',
    'Mars\narrival\nΔV',
    'Total\nΔV'
]
values = [
    budget['v_park_dep'],
    budget['dv_departure'],
    budget['dv_arrival'],
    budget['dv_total']
]
colors = ['steelblue', 'darkorange', 'firebrick', 'purple']

bars = ax.bar(categories, values, color=colors, width=0.5, edgecolor='black')

for bar, val in zip(bars, values):
    ax.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 0.05,
            f'{val:.2f}', ha='center', va='bottom', fontsize=11, fontweight='bold')

ax.set_ylabel('Velocity [km/s]')
ax.set_title('地球-火星ミッション ΔVバジェット(ホーマン遷移)')
ax.grid(True, alpha=0.3, axis='y')

plt.tight_layout()
plt.savefig('mars_delta_v_budget.png', dpi=150, bbox_inches='tight')
plt.show()

このΔVバジェットから、惑星間ミッションの推進要件が定量的に理解できます。

  1. 地球出発ΔVは約3.6 km/s — LEOパーキング軌道から地球脱出+惑星間遷移軌道投入に必要な速度変化です。これは地球の深い重力井戸から脱出するコストを含んでいます。

  2. 火星到着ΔVは約2.1 km/s — 火星周回軌道への投入に必要です。火星の重力井戸は地球より浅い($\mu_M \approx \mu_E/10$)ため、到着ΔVは出発ΔVより小さくなります。

  3. 合計約5.7 km/s — これはLEOからの追加ΔVです。打ち上げロケットがLEOまでの約9.5 km/sを提供し、さらに上段(または探査機自身)が5.7 km/sを提供する必要があります。

重力アシストの概念

なぜ重力アシストが必要か

ホーマン遷移は最小エネルギーの軌道ですが、木星や土星など太陽系外縁部への旅には巨大なΔVが必要です。木星までのホーマン遷移のΔVは約6 km/s以上で、さらに遠い惑星ほど増大します。

重力アシスト(gravity assist、スイングバイ)は、惑星の重力場を利用して探査機の速度や方向を変える技術です。探査機は惑星の近くを通過する際に、惑星の公転運動からエネルギーを「借りる」ことができます。

力学的な原理

惑星に対する座標系で見ると、探査機は双曲線軌道を描いて惑星の近くを通り過ぎます。速さは変わりませんが、進行方向が変わります(方向転換角 $\delta$)。

$$ \delta = 2\arcsin\left(\frac{1}{1 + r_p v_\infty^2/\mu}\right) $$

しかし、太陽に対する座標系で見ると、この方向転換は速度の大きさの変化を引き起こします。惑星の公転速度 $v_p$ と余剰速度 $v_\infty$ のベクトル合成により、探査機は太陽に対して最大で $2v_\infty$ の速度変化を得ることができます。

ボイジャーの偉業

ボイジャー2号は、木星(1979)→ 土星(1981)→ 天王星(1986)→ 海王星(1989)という「グランドツアー」を重力アシストの連鎖で実現しました。木星の重力アシストだけで約10 km/sの速度増加を得ています。この軌道は約175年に一度しか成立しない惑星配置を利用したもので、まさに天の僥倖でした。

火星ミッションでの応用

火星ミッションでも、金星や地球自身の重力アシストが利用されることがあります。ESAのBepiColombo(水星探査機)は地球1回、金星2回、水星6回の重力アシストを行い、約7年かけて水星に到達する予定です。

# --- 重力アシストの方向転換角 ---
fig, ax = plt.subplots(figsize=(10, 6))

v_inf_range = np.linspace(1, 15, 100)  # [km/s]
planets = [
    ('Earth', mu_earth, 6578, 'blue'),
    ('Mars', mu_mars, 3696, 'red'),
    ('Jupiter', 1.2669e8, 75000, 'orange'),
]

for name, mu_p, r_p, color in planets:
    delta = 2 * np.degrees(np.arcsin(1 / (1 + r_p * v_inf_range**2 / mu_p)))
    ax.plot(v_inf_range, delta, color=color, linewidth=2, label=name)

ax.set_xlabel('v∞ [km/s]')
ax.set_ylabel('Deflection angle δ [deg]')
ax.set_title('重力アシストの方向転換角')
ax.legend()
ax.grid(True, alpha=0.3)
ax.set_ylim(0, 180)

plt.tight_layout()
plt.savefig('gravity_assist_deflection.png', dpi=150, bbox_inches='tight')
plt.show()

この図から、重力アシストの惑星による違いが明確に読み取れます。

  1. 木星が最も大きな方向転換を実現する — 巨大な質量($\mu_J \sim 300 \mu_E$)により、高い $v_\infty$ でも大きな方向転換が可能です。これが外惑星探査でほぼ必ず木星アシストが使われる理由です。

  2. 地球と火星は中程度の方向転換 — $v_\infty$ が数km/s以下の場合に有効です。地球アシストは火星ミッションでも使われることがあります(例: Mars Express)。

  3. $v_\infty$ が大きいほど方向転換角は小さい — 探査機の速度が速すぎると、惑星の重力の影響を受ける時間が短くなり、方向転換が不十分になります。

まとめ

本記事では、パッチドコニック法による惑星間遷移軌道の設計を解説しました。

  • パッチドコニック法: 宇宙空間を影響圏で区切り、各領域で二体問題の解(円錐曲線)をつなぎ合わせる手法。影響圏の半径は $r_{\text{SOI}} = a(m/M_\odot)^{2/5}$ で決まる
  • 出発双曲線とC3エネルギー: 地球脱出後の余剰速度 $v_\infty$ の2乗がC3。火星ミッションの典型的なC3は8〜16 km²/s²
  • ホーマン遷移: 最小エネルギーの惑星間遷移。地球-火星では飛行時間約259日、出発ΔV約3.6 km/s
  • 打ち上げウィンドウ: シノディック周期(約26ヶ月)ごとに最適な打ち上げ機会が訪れる
  • ΔVバジェット: 地球出発+火星到着で合計約5.7 km/s(LEO基準)。推進系の設計を決定する基本量
  • 重力アシスト: 惑星の重力で探査機の方向と速度を変える技術。木星が最も効果的

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