LEOコンステレーション通信 — Starlinkに代表される低軌道衛星群の通信技術

いま、夜空を見上げると「光の列」が流れるように動いていくのを目にすることがあります。それは SpaceX の Starlink 衛星群です。2020年代に入り、数千機の人工衛星を低軌道(LEO: Low Earth Orbit)に展開し、地球全体に高速・低遅延なインターネット接続を提供するという壮大な構想が現実のものになりつつあります。

従来の衛星通信といえば、高度約 36,000 km の静止軌道(GEO)に 1 機の大型衛星を配置し、地上の広い範囲をカバーする方式が主流でした。しかし GEO 方式には「片道 250 ms 以上の伝搬遅延」という本質的な限界があります。リアルタイムのビデオ会議やオンラインゲーム、自動運転への指令など、低遅延が求められるアプリケーションには不十分です。

LEO コンステレーション通信を理解すると、以下のような分野で強力な武器になります。

  • 次世代衛星通信システムの設計: Starlink、OneWeb、Amazon Kuiper などのメガコンステレーションがどのような設計思想に基づいているかを定量的に理解できる
  • 非地上ネットワーク(NTN)と 6G 通信: 3GPP で規格化が進む NTN において、LEO 衛星をセルラーネットワークの一部として組み込む際の課題と解法がわかる
  • リモートセンシングとデータ中継: 地球観測衛星のデータを即座に地上へ届けるための衛星間リンク(ISL)設計に直結する

本記事の内容

  • GEO 通信との比較による LEO 通信の利点と課題
  • コンステレーション設計の基本(ウォーカー配座)
  • 全球カバレッジに必要な最低衛星数の算出
  • ドップラーシフトの定量的評価と補償手法
  • ハンドオーバー設計の考え方
  • 衛星間リンク(ISL)とゲートウェイ設計
  • Starlink / OneWeb の技術概要
  • Python による LEO コンステレーションのカバレッジシミュレーションと遅延計算

前提知識

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

LEO 通信と GEO 通信の比較

GEO 通信の本質的限界

GEO(Geostationary Earth Orbit)衛星は地球の自転と同期して周回するため、地上から見ると空の一点に静止しているように見えます。この「静止」という性質は、アンテナの追尾が不要という大きな利点をもたらしますが、同時にいくつかの本質的な制約を伴います。

まず伝搬遅延を考えましょう。GEO の高度は約 35,786 km です。電波は光速 $c = 3 \times 10^8$ m/s で伝搬するため、地上局から衛星までの片道伝搬時間は次のようになります。

$$ \tau_{\text{GEO}} = \frac{h_{\text{GEO}}}{c} = \frac{35{,}786 \times 10^3}{3 \times 10^8} \approx 119 \; \text{ms} $$

これは衛星が天頂にある最良のケースです。実際には仰角が低い場合のスラント距離は大きくなり、さらに地上局 → 衛星 → 地上局の往復(RTT: Round Trip Time)では最低でも約 480 ms 以上になります。TCP の 3-way ハンドシェイクだけで 1.5 秒近くかかる計算です。

次に、自由空間伝搬損失(FSPL: Free Space Path Loss)を比較しましょう。FSPL は周波数 $f$ と距離 $d$ の関数として以下のように書けます。

$$ \text{FSPL} = \left(\frac{4\pi d f}{c}\right)^2 $$

デシベル表記では次のようになります。

$$ \text{FSPL [dB]} = 20 \log_{10}\left(\frac{4\pi d f}{c}\right) $$

同じ周波数で距離だけが異なる場合、GEO と LEO の FSPL の差は距離の比の二乗で決まります。

$$ \Delta \text{FSPL} = 20 \log_{10}\left(\frac{d_{\text{GEO}}}{d_{\text{LEO}}}\right) $$

たとえば GEO の高度 35,786 km に対して LEO が 550 km(Starlink の軌道高度)の場合を考えると、距離の比は以下のようになります。

$$ \frac{d_{\text{GEO}}}{d_{\text{LEO}}} \approx \frac{35{,}786}{550} \approx 65.1 $$

よって FSPL の差は次のとおりです。

$$ \Delta \text{FSPL} = 20 \log_{10}(65.1) \approx 36.3 \; \text{dB} $$

これは LEO 衛星の方がリンクバジェット上で約 36 dB も有利であることを意味します。36 dB の差は電力比で約 4,000 倍に相当するため、LEO 衛星は圧倒的に小さな送信電力で同等のリンク品質を確保できます。あるいは同じ送信電力であれば、はるかに広帯域の通信が可能になります。

LEO 通信の利点

ここまでの分析を整理すると、LEO 通信には以下の本質的な利点があります。

1. 低遅延

LEO(高度 300-2,000 km)の片道伝搬時間は約 1-7 ms です。地上局から衛星経由で別の地上局までの RTT は、典型的に 20-40 ms 程度になります。これは地上の光ファイバー通信と同等以下であり、光ファイバーが敷設されていない地域にとって革命的な意味を持ちます。

$$ \tau_{\text{LEO}} = \frac{h_{\text{LEO}}}{c} = \frac{550 \times 10^3}{3 \times 10^8} \approx 1.83 \; \text{ms} $$

2. 低パスロス

前述のとおり、GEO に対して約 30-40 dB のパスロス低減が得られます。これにより、ユーザ端末を小型化(アンテナの大きさを小さく)できます。Starlink のユーザ端末(通称「Dishy」)が直径約 50 cm のフェーズドアレーで済んでいるのは、この低パスロスの恩恵です。

3. 高い総システム容量

多数の衛星でカバーエリアを分割するため、周波数再利用が効率的に行えます。GEO 衛星 1 機で広域をカバーする場合と異なり、同じ周波数帯を異なる衛星のビームで繰り返し使用できます。

LEO 通信の課題

ただし、LEO には GEO にはない困難がつきまといます。

1. 衛星の高速移動によるハンドオーバー: LEO 衛星は約 90 分で地球を一周するため、1 機あたりの可視時間は典型的に 5-15 分程度です。ユーザから見ると、接続先の衛星が次々と変わるため、切れ目のない通信を維持するハンドオーバー機構が必須です。

2. 大きなドップラーシフト: 衛星の軌道速度は約 7.5 km/s に達し、ユーザに対する視線方向の相対速度に起因するドップラーシフトが大きくなります。Ku/Ka 帯では数百 kHz のシフトが生じます。

3. 多数の衛星が必要: GEO では 3 機で赤道帯をほぼ全球カバーできますが、LEO で全球をカバーするには数百から数千機の衛星が必要です。

4. 軌道維持と寿命: 低軌道では大気抵抗による軌道減衰が無視できず、定期的な軌道維持が必要です。衛星寿命は典型的に 5-7 年であり、継続的な打ち上げ補充が必要です。

これらの課題を克服するための技術が、以下のセクションで解説するコンステレーション設計、ドップラー補償、ハンドオーバー設計、そして衛星間リンクです。

ウォーカー配座によるコンステレーション設計

コンステレーション設計の基本的な問い

多数の LEO 衛星を宇宙空間に配置するとき、最も根本的な問いは「どの軌道にどのように衛星を並べるか」です。無秩序に配置すると、ある地域の上空に衛星が集中し、別の地域では通信が途切れるという事態が起きます。

この問いに対する古典的かつ強力な回答が ウォーカー配座(Walker Constellation) です。1970年代に John Walker が提案したこの配座は、軌道面と衛星を均等に配置することで、対称的かつ効率的なカバレッジを実現します。

ウォーカー配座の表記法

ウォーカー配座は $i : T/P/F$ という記法で記述されます。各パラメータの意味は以下のとおりです。

  • $i$: 軌道傾斜角(全軌道面で共通)
  • $T$: 衛星の総数
  • $P$: 軌道面の数
  • $F$: 位相パラメータ($0 \leq F < P$)

ここで $S = T / P$ が 1 軌道面あたりの衛星数です。

軌道面の配置: $P$ 個の軌道面が、昇交点赤経(RAAN)方向に等間隔で配置されます。$j$ 番目の軌道面($j = 0, 1, \dots, P-1$)の RAAN は次の式で与えられます。

$$ \Omega_j = \frac{360^\circ}{P} \times j $$

衛星の面内配置: 各軌道面内で $S$ 機の衛星が等間隔に並びます。$j$ 番目の軌道面における $k$ 番目の衛星($k = 0, 1, \dots, S-1$)の真近点角は次のように決まります。

$$ \nu_{j,k} = \frac{360^\circ}{S} \times k + \frac{360^\circ}{T} \times F \times j $$

この式の第 2 項が位相パラメータ $F$ の効果です。$F$ は隣接する軌道面間の衛星の「ずれ」を制御します。$F = 0$ なら全軌道面の衛星が同じ位相角から出発し、$F \neq 0$ なら面間でずれが生じます。このずれにより、地上のある点から見たときに複数の衛星が同時に視野に入りやすくなり、カバレッジの均一性が改善されます。

ウォーカー配座の例

Starlink の初期配置を簡略化したモデルで考えてみましょう。

  • 軌道高度: $h = 550$ km
  • 傾斜角: $i = 53°$
  • 衛星総数: $T = 1{,}584$
  • 軌道面数: $P = 72$
  • 位相パラメータ: $F = 17$

この場合、1 軌道面あたりの衛星数は $S = 1{,}584 / 72 = 22$ 機です。RAAN の間隔は $360° / 72 = 5°$ であり、面内の衛星間隔は $360° / 22 \approx 16.4°$ です。

ただし、傾斜角 53° のウォーカー配座だけでは高緯度地域(特に極域)のカバレッジが不足します。そのため Starlink は複数の軌道殻(orbital shell)を組み合わせています。たとえば傾斜角 70° や 97.6°(太陽同期軌道に近い)の殻を追加することで、極域を含む全球カバレッジを実現しています。

コンステレーションの設計パラメータが決まったところで、次に考えるべきは「この配置で地球全体を本当にカバーできるのか」という問題です。これを定量的に評価するために、カバレッジ計算の理論を見ていきましょう。

カバレッジ計算と最低衛星数の算出

単一衛星のカバレッジ

地上のユーザが衛星と通信するためには、衛星がユーザの仰角 $\varepsilon_{\min}$ 以上に見える必要があります。仰角が低すぎると、大気中の減衰が大きくなり、建物や地形による遮蔽も増えます。一般的に $\varepsilon_{\min} = 25°$-$40°$ が設計値として使われます。

衛星 1 機がカバーできる地表上の円形領域を考えましょう。地球の半径を $R_E = 6{,}371$ km、衛星の高度を $h$ とすると、衛星から見た地球の半角 $\rho$ は次のように求まります。

$$ \sin \rho = \frac{R_E}{R_E + h} $$

この $\rho$ は衛星から見て地球の「縁」がどの角度に位置するかを表しています。衛星が地平線ぎりぎり(仰角 $0°$)に見えるユーザまでの地表上の角距離(地心角)は $\rho$ そのものですが、最低仰角 $\varepsilon_{\min}$ を考慮すると、実効的なカバレッジ半角 $\theta_{\text{cov}}$ は小さくなります。

最低仰角 $\varepsilon_{\min}$ を持つユーザの地心角 $\theta_{\text{cov}}$ を求めるには、衛星・地球中心・ユーザの三角形における幾何関係を使います。衛星直下点からユーザまでの地心角を $\theta$、衛星におけるナディア角を $\eta$ とすると、次の関係式が成り立ちます。

$$ \varepsilon + \eta + \theta = 90° $$

$$ \frac{\sin \eta}{\sin \rho} = \cos \varepsilon $$

2つ目の式から $\eta$ を求め、1つ目の式から $\theta_{\text{cov}}$ を計算します。

$$ \eta = \arcsin\left(\cos \varepsilon_{\min} \cdot \sin \rho \right) $$

$$ \theta_{\text{cov}} = 90° – \varepsilon_{\min} – \eta $$

具体的に、Starlink($h = 550$ km, $\varepsilon_{\min} = 25°$)の場合を計算してみましょう。

まず $\rho$ を求めます。

$$ \sin \rho = \frac{6{,}371}{6{,}371 + 550} = \frac{6{,}371}{6{,}921} \approx 0.9205 $$

この値の逆正弦を取ると、地球の半角が求まります:

$$ \rho \approx 67.0° $$

次に $\eta$ を求めます。

$$ \sin \eta = \cos 25° \times \sin 67.0° = 0.9063 \times 0.9205 \approx 0.8342 $$

逆正弦を計算すると、ナディア角は次のようになります:

$$ \eta \approx 56.5° $$

したがって、カバレッジ半角は次のとおりです。

$$ \theta_{\text{cov}} = 90° – 25° – 56.5° = 8.5° $$

この $\theta_{\text{cov}} = 8.5°$ は地表上の距離に換算すると約 $6{,}371 \times 8.5° \times (\pi / 180°) \approx 945$ km の半径に対応します。

全球カバレッジに必要な最低衛星数

球面を半径 $\theta_{\text{cov}}$ の球面冠(spherical cap)で覆い尽くすのに必要な最小数を求める問題は、球面被覆問題(sphere covering problem)に対応します。厳密解は知られていませんが、良い近似が得られます。

1つの球面冠の立体角は次のように計算されます。

$$ \Omega_{\text{cap}} = 2\pi (1 – \cos \theta_{\text{cov}}) $$

ここで $\theta_{\text{cov}}$ はラジアンで代入します。全球の立体角は $4\pi$ ステラジアンですから、カバーに必要な衛星数の下限は以下のようになります。

$$ N_{\min} = \left\lceil \frac{4\pi}{2\pi (1 – \cos \theta_{\text{cov}})} \right\rceil = \left\lceil \frac{2}{1 – \cos \theta_{\text{cov}}} \right\rceil $$

Starlink の例($\theta_{\text{cov}} = 8.5°$)では、次のようになります。

$$ 1 – \cos 8.5° = 1 – 0.9890 = 0.0110 $$

$$ N_{\min} = \left\lceil \frac{2}{0.0110} \right\rceil = \lceil 181.8 \rceil = 182 $$

実際には球面冠同士の重なりが避けられないため、この値は理論的な下限に過ぎません。実用的なウォーカー配座では、重なりを考慮して 2-3 倍程度の衛星数が必要になります。Starlink の初期殻が 1,584 機であるのは、冗長性を確保し、複数衛星が同時に見えるようにするための設計です。

なお、仰角の要件を緩和すると必要衛星数は劇的に減ります。$\varepsilon_{\min} = 10°$ にすると $\theta_{\text{cov}} \approx 18.5°$ となり、$N_{\min} = \lceil 2 / (1 – \cos 18.5°) \rceil \approx 39$ 機で済みます。しかし、低仰角では大気減衰やマルチパスの影響が大きくなるため、通信品質とのトレードオフになります。

カバレッジの理論がわかったところで、次は LEO 衛星の「高速移動」がもたらす最大の課題の1つ — ドップラーシフトについて考えていきます。

ドップラーシフトの影響と補償

LEO 衛星のドップラーシフト

地上から見て高速で移動する LEO 衛星との通信では、ドップラー効果により受信周波数が変動します。衛星が近づくときは周波数が高くなり、遠ざかるときは低くなります。この現象は救急車のサイレンの音程変化と同じ原理です。

ドップラーシフト $\Delta f$ は、衛星とユーザ間の視線方向の相対速度 $v_r$(radial velocity)に比例します。

$$ \Delta f = \frac{v_r}{c} f_0 $$

ここで $f_0$ は搬送波周波数、$c$ は光速です。

LEO 衛星の軌道速度 $v_s$ は、万有引力と遠心力の釣り合いから求まります。

$$ v_s = \sqrt{\frac{\mu}{R_E + h}} $$

ここで $\mu = 3.986 \times 10^{14} \; \text{m}^3/\text{s}^2$ は地球の標準重力パラメータです。

Starlink($h = 550$ km)の場合に計算してみましょう。

$$ v_s = \sqrt{\frac{3.986 \times 10^{14}}{6{,}921 \times 10^3}} = \sqrt{5.759 \times 10^7} \approx 7{,}589 \; \text{m/s} \approx 7.59 \; \text{km/s} $$

視線方向の相対速度 $v_r$ は、衛星の通過経路とユーザの位置関係に依存します。衛星がユーザの真上(天頂)を通過する場合、最大の $v_r$ は衛星が仰角 $\varepsilon$ の位置にあるときに生じます。幾何学的に解析すると、仰角 $\varepsilon$ における視線方向速度は次のように表されます。

$$ v_r = v_s \cos\left(\varepsilon + \eta\right) $$

ここで $\eta$ は衛星から見たナディア角で、前節の幾何関係から $\varepsilon + \eta + \theta = 90°$ を満たします。

衛星が地平線近く($\varepsilon \to \varepsilon_{\min}$)にあるときに $v_r$ は最大になり、天頂通過時($\varepsilon = 90°$)には $v_r = 0$ になります。

最大ドップラーシフトの数値例

Starlink($h = 550$ km、$f_0 = 12$ GHz、Ku 帯)で仰角 $\varepsilon_{\min} = 25°$ のときの最大ドップラーシフトを求めます。

前節の計算結果から $\eta \approx 56.5°$ なので、次のようになります。

$$ v_r = 7{,}589 \times \cos(25° + 56.5°) = 7{,}589 \times \cos 81.5° $$

$\cos 81.5° \approx 0.1478$ を代入すると、次のとおりです。

$$ v_r \approx 7{,}589 \times 0.1478 \approx 1{,}122 \; \text{m/s} $$

したがって、ドップラーシフトは次のように計算されます。

$$ \Delta f = \frac{1{,}122}{3 \times 10^8} \times 12 \times 10^9 \approx 44.9 \; \text{kHz} $$

つまり、Ku 帯で最大約 $\pm 45$ kHz のドップラーシフトが生じます。Ka 帯($f_0 = 20$ GHz)ではさらに大きく、約 $\pm 75$ kHz に達します。

衛星が頭上を通過する一回のパスで、ドップラーシフトは $+\Delta f_{\max}$ から $-\Delta f_{\max}$ まで連続的に変化します。特に天頂付近を通過するときのドップラー変化率(ドップラーレート)が最も大きくなり、受信機の追従能力に対する厳しい要求となります。

ドップラー補償の手法

ドップラーシフトを補償しないと、受信信号が復調器のフィルタ帯域外に出てしまい、通信が途切れます。主な補償手法は以下の 3 つです。

1. 地上端末での事前補償(プリコンペンセーション)

衛星のエフェメリス(軌道暦)情報をもとに、予測されるドップラーシフトを事前に計算し、送信周波数をずらして補償します。衛星のエフェメリスは TLE(Two-Line Element)やより精密な SP3 フォーマットで配信されます。

2. 受信機でのキャリア追跡ループ

受信機内の周波数追跡ループ(PLL: Phase-Locked Loop や AFC: Automatic Frequency Control)により、受信キャリアの周波数変動をリアルタイムで追跡します。LEO 通信では、追跡ループの引き込み範囲(pull-in range)と追跡帯域幅を十分に広くする必要があります。

3. 差動補償(衛星側での補償)

衛星自身が各ビームまたはユーザ群ごとにドップラー補償を行う方法です。衛星に搭載されたプロセッサがビーム内のドップラーの平均値を推定し、送信周波数を調整します。これにより、地上端末に求められる補償量を軽減できます。

Starlink では、これらの手法を組み合わせて使用しています。特に、衛星側でセルごとの一括ドップラー補償を行い、残留ドップラーを地上端末の PLL で追跡するという階層的なアプローチが採られています。

ドップラーシフトの問題が解決できたとして、次に直面するのは「衛星が次々と入れ替わる」ことへの対処 — すなわちハンドオーバー設計です。

ハンドオーバー設計

ハンドオーバーの種類

LEO コンステレーション通信では、衛星の高速移動に伴い、頻繁にハンドオーバー(handover / handoff)が発生します。携帯電話のセルラーネットワークにおけるハンドオーバーと本質的には同じですが、LEO 通信特有の課題があります。

ハンドオーバーは以下のように分類されます。

1. 衛星間ハンドオーバー(Satellite Handover)

ユーザが接続中の衛星が可視範囲外に移動し、新しい衛星に接続を切り替える操作です。LEO コンステレーションでは、これが最も頻繁に発生するハンドオーバーです。

2. ビーム間ハンドオーバー(Beam Handover / Spotbeam Handover)

同一衛星の異なるスポットビーム間でのハンドオーバーです。衛星が移動するにつれ、ユーザをカバーするビームが切り替わります。Starlink のような多ビーム衛星では、1 機の衛星が数十から数百のスポットビームを形成しており、ビーム間ハンドオーバーは衛星間ハンドオーバーよりもさらに頻繁に発生します。

3. ゲートウェイ間ハンドオーバー(Gateway Handover)

衛星がフィーダリンクを接続しているゲートウェイ地球局を切り替える操作です。衛星がゲートウェイの可視範囲外に移動した場合に発生します。

ハンドオーバー頻度の推定

ハンドオーバーの頻度を定量的に見積もってみましょう。LEO 衛星の軌道周期 $T_{\text{orb}}$ はケプラーの第三法則から次のように求まります。

$$ T_{\text{orb}} = 2\pi \sqrt{\frac{(R_E + h)^3}{\mu}} $$

Starlink($h = 550$ km)の場合、次のようになります。

$$ T_{\text{orb}} = 2\pi \sqrt{\frac{(6{,}921 \times 10^3)^3}{3.986 \times 10^{14}}} \approx 5{,}765 \; \text{s} \approx 96.1 \; \text{min} $$

衛星がユーザの可視範囲を横切る時間(可視時間)$T_{\text{vis}}$ は、カバレッジ半角 $\theta_{\text{cov}}$ を使って概算できます。最も単純なモデルでは、衛星が直下点でユーザの上空を真っ直ぐ通過する場合を考えると、次のとおりです。

$$ T_{\text{vis}} \approx \frac{2\theta_{\text{cov}}}{360°} \times T_{\text{orb}} $$

$\theta_{\text{cov}} = 8.5°$ の場合、次のようになります。

$$ T_{\text{vis}} \approx \frac{2 \times 8.5°}{360°} \times 5{,}765 \approx 272 \; \text{s} \approx 4.5 \; \text{min} $$

つまり、最悪の場合(衛星が直上を通過するケース)には約 4.5 分ごとに衛星間ハンドオーバーが発生します。実際にはユーザの視野内に複数の衛星が存在し、最適な衛星を選択的に使うため、ハンドオーバーの間隔はこれよりやや長くなりますが、オーダーとしては数分に一度という高頻度です。

シームレスハンドオーバーの実現

この高頻度のハンドオーバーを通信の中断なく実現するには、いくつかの技術が必要です。

Make-Before-Break 方式: 現在の衛星との接続を維持したまま、新しい衛星との接続を確立し、準備ができてから切り替えます。これにより、瞬断を最小化(理想的にはゼロに)できます。

予測的ハンドオーバー: 衛星の軌道は高精度で予測可能であるため、どのタイミングでどの衛星にハンドオーバーすべきかを事前に計画できます。これはセルラーネットワークの移動予測とは異なり、確定的なスケジューリングが可能という LEO 通信の大きな利点です。

マルチコネクティビティ: ユーザ端末が同時に複数の衛星と接続を維持し、パケットレベルで最適な経路を選択する方式です。5G NR の技術である DAPS(Dual Active Protocol Stack)ハンドオーバーの概念を衛星通信に応用したものです。

ハンドオーバー設計が通信の「途切れなさ」を保証するのに対し、通信の「効率」を大きく左右するのが衛星間リンク(ISL)です。次にこの技術を見ていきましょう。

衛星間リンク(ISL)とゲートウェイ設計

ISL の必要性

衛星間リンク(ISL: Inter-Satellite Link)は、衛星同士が直接通信する技術です。ISL がなければ、衛星は受信したデータを必ず地上のゲートウェイ局に中継(ベントパイプ方式)しなければならず、通信は常に「ユーザ → 衛星 → ゲートウェイ → インターネット → ゲートウェイ → 衛星 → 相手ユーザ」という経路をたどります。

この場合、ゲートウェイが見えない海洋上空や極域では中継ができず、通信が途絶えます。また、遠距離の通信では複数回の地上-衛星間往復が必要になり、遅延が増大します。

ISL があれば、データを衛星間で直接転送できるため、地上のゲートウェイに依存しない柔軟なルーティングが可能になります。特に長距離通信では、光ファイバーよりも ISL 経由の方が低遅延になるケースがあります。

光ファイバーと ISL の遅延比較

なぜ衛星経由が光ファイバーより速くなり得るのでしょうか? これは一見直感に反しますが、理由は単純です。

光ファイバー中の光の速度は、ファイバーの屈折率 $n \approx 1.47$ により真空中の光速の約 68% に低下します。

$$ v_{\text{fiber}} = \frac{c}{n} \approx \frac{3 \times 10^8}{1.47} \approx 2.04 \times 10^8 \; \text{m/s} $$

一方、宇宙空間での電波(または光通信の場合の自由空間レーザー光)は真空中の光速 $c = 3 \times 10^8$ m/s で伝搬します。

$$ \frac{c}{v_{\text{fiber}}} = n \approx 1.47 $$

つまり、ISL は光ファイバーに対して約 47% の速度優位があります。さらに、光ファイバーは地形に沿って敷設されるため迂回が生じますが、ISL は衛星間を(ほぼ)直線で結べます。

たとえば、東京からロンドンまでの通信を考えると、大圏距離は約 9,560 km ですが、海底光ファイバーケーブルの実経路長は迂回のために約 20,000 km 以上になります。

$$ \tau_{\text{fiber}} \approx \frac{20{,}000 \times 10^3}{2.04 \times 10^8} \approx 98 \; \text{ms}(片道) $$

一方、ISL 経由ではホップ数にもよりますが、大圏に近い経路が取れるため次のように概算できます。

$$ \tau_{\text{ISL}} \approx \frac{9{,}560 \times 10^3 \times 1.1}{3 \times 10^8} \approx 35 \; \text{ms}(片道) $$

ここで係数 1.1 は ISL 経路の迂回分です。この見積もりでは、ISL 経由の方が約 60 ms 以上高速です。金融取引などミリ秒単位の遅延が価値を持つ分野では、この差は非常に大きな意味を持ちます。

ISL の種類

ISL は大きく 2 種類に分けられます。

1. 面内 ISL(Intra-plane ISL)

同一軌道面内の前後の衛星と結ぶリンクです。同一面内の衛星同士は相対速度がほぼゼロ(同じ軌道速度で同じ方向に移動)であるため、リンクの維持が容易です。

2. 面間 ISL(Inter-plane ISL / Cross-link)

異なる軌道面の衛星と結ぶリンクです。隣接する軌道面の衛星との相対速度は一般にゼロではないため、アンテナ追尾や周波数追跡が必要です。特に、昇交点(赤道を南から北に横切る点)と降交点の近くでは面間の衛星の相対速度が大きくなり、極域付近では逆行する衛星同士が高速ですれ違うため、ISL の確立が困難になります。

Starlink は当初 ISL を搭載していませんでしたが、2021年以降の衛星(v1.5 以降)ではレーザー ISL を搭載しています。レーザー ISL は電波方式に比べて以下の利点があります。

  • 周波数調整の規制が不要(光は ITU の電波規則の対象外)
  • 極めて狭いビーム幅で高いアンテナ利得を実現
  • 大容量(数 Gbps から数十 Gbps)

ゲートウェイ設計

ISL があっても、最終的にはデータをインターネットのバックボーンに接続する必要があります。その接点がゲートウェイ(地上局)です。

ゲートウェイの配置設計では、以下の要因を考慮します。

カバレッジの連続性: コンステレーション内の全ての衛星が常にいずれかのゲートウェイを「見える」ように配置する必要があります。ISL がある場合は、この制約は緩和されます(他の衛星経由でゲートウェイに到達できるため)。

帯域幅の容量計画: ゲートウェイはコンステレーション全体のトラフィックを地上ネットワークに橋渡しするボトルネックです。Starlink では Ka 帯でゲートウェイとのフィーダリンクを運用し、各ゲートウェイは複数の衛星に同時に対応します。

冗長性と多様性: 気象条件(特に降雨減衰)への耐性を確保するため、地理的に分散した複数のゲートウェイを配置します。Starlink は 2026 年現在、世界中に数百のゲートウェイを運用しています。

ゲートウェイのリンクバジェット: ゲートウェイ側はユーザ端末と異なり大型のパラボラアンテナ(典型的に直径 2-3 m)を使用できるため、高い EIRP と G/T を実現できます。これにより、ユーザリンクとは独立に高いスループットのフィーダリンクを構成します。

ここまでで LEO コンステレーション通信を支える主要な技術要素を概観しました。次に、これらの技術を実際に統合している代表的なシステム — Starlink と OneWeb — の技術的特徴を比較してみましょう。

Starlink と OneWeb の技術概要

Starlink

SpaceX の Starlink は、2026 年現在で最大規模の LEO コンステレーションです。その技術的特徴を整理します。

軌道設計: 複数の軌道殻で構成されます。主殻は高度 550 km・傾斜角 53° に 1,584 機を配置し、追加殻として高度 540 km(傾斜角 53.2°)、570 km(傾斜角 70°)、560 km(傾斜角 97.6°)などを持ちます。合計で約 4,400 機(第一世代承認分)に加え、第二世代として約 30,000 機の追加が申請されています。

通信方式: ユーザリンクは Ku 帯(10.7-12.7 GHz ダウンリンク、14.0-14.5 GHz アップリンク)を使用し、ゲートウェイとのフィーダリンクは Ka 帯(17.8-18.6 GHz, 18.8-19.3 GHz ダウンリンク、27.5-29.1 GHz, 29.5-30.0 GHz アップリンク)を使用します。

ビーム形成: 各衛星はフェーズドアレーアンテナを搭載し、多数のスポットビームを電子的に形成・制御します。ビームの指向を動的に変更できるため、需要の高い地域にビームを集中させることが可能です。

ユーザ端末: フェーズドアレーアンテナ(第二世代端末は長方形、約 30 cm × 25 cm)を使用し、機械的な駆動部なしに衛星を追尾します。端末の消費電力は約 40-75 W です。

ISL: v1.5 以降の衛星にレーザー ISL を搭載しています。各衛星は 4 つのレーザー端末を持ち、面内の前後 2 機と面間の 2 機にリンクを張ります。これにより、地上ゲートウェイがなくても衛星間でデータを転送できます。

OneWeb

OneWeb は、Starlink とは異なるアプローチで LEO ブロードバンドを実現しています。

軌道設計: 高度 1,200 km・傾斜角 87.9°(極軌道に近い)に 648 機を配置します。Starlink より高い軌道高度を選択したことで、1 機あたりのカバレッジ面積が大きくなり、全球カバレッジに必要な衛星数を抑えています。ただし、遅延は Starlink より大きくなります(片道約 4 ms)。

通信方式: ユーザリンクは Ku 帯を使用し、ゲートウェイとのフィーダリンクは Ka 帯を使用します。この点は Starlink と類似しています。

端末設計: OneWeb は当初、エンドユーザへの直接サービスではなく、通信事業者やサービスプロバイダへの卸売りモデルを採用しています。そのため、ユーザ端末は Starlink のような一般消費者向けの小型端末ではなく、やや大型のアンテナ(直径 60 cm 程度のパラボラまたはフラットパネル)を想定しています。

ISL: 初期の衛星には ISL を搭載していませんが、次世代衛星への搭載が計画されています。ISL がない現状では、各衛星はベントパイプ方式で動作し、常にゲートウェイの可視範囲内にいる必要があります。

両システムの比較

パラメータ Starlink OneWeb
軌道高度 550 km 1,200 km
衛星数(初期) ~4,400 648
傾斜角 53° / 70° / 97.6° 等 87.9°
片道遅延 ~2 ms ~4 ms
ISL レーザー(v1.5以降) 将来搭載予定
ユーザリンク Ku 帯 Ku 帯
フィーダリンク Ka 帯 Ka 帯
衛星質量 ~260 kg(v1.5) ~150 kg
設計寿命 ~5 年 ~5 年

Starlink は低軌道・大量衛星・ISL搭載による低遅延と柔軟性を重視し、OneWeb は中高度・少数衛星による低コストとシンプルさを重視しています。両者のトレードオフは、LEO コンステレーション設計における普遍的な設計選択を反映しています。

ここまでの理論を踏まえて、Python で LEO コンステレーションのカバレッジと遅延をシミュレーションしてみましょう。

Python による LEO コンステレーションシミュレーション

シミュレーションの概要

ここでは、以下の 3 つのシミュレーションを Python で実装します。

  1. ウォーカー配座の 3D 可視化: コンステレーションの空間配置を確認する
  2. カバレッジマップの生成: 地表上の各点から見える衛星数を計算し、全球カバレッジを評価する
  3. 遅延計算とドップラーシフトの時間変化: 衛星通過時の遅延とドップラーの変動を可視化する

ウォーカー配座の生成と3D可視化

まず、ウォーカー配座のパラメータから各衛星の位置を計算し、3D で可視化します。

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# --- 定数 ---
R_E = 6371.0  # 地球半径 [km]
MU = 3.986e5  # 地球標準重力パラメータ [km^3/s^2]

def walker_constellation(h, inc_deg, T, P, F):
    """
    ウォーカー配座 i:T/P/F の衛星位置をECI座標で返す
    h: 軌道高度 [km]
    inc_deg: 傾斜角 [deg]
    T: 衛星総数
    P: 軌道面数
    F: 位相パラメータ
    """
    r = R_E + h
    inc = np.radians(inc_deg)
    S = T // P  # 1軌道面あたりの衛星数

    positions = []
    for j in range(P):
        raan = 2 * np.pi * j / P  # 昇交点赤経
        for k in range(S):
            # 真近点角
            nu = 2 * np.pi * k / S + 2 * np.pi * F * j / T
            # 軌道面内の位置(PQW座標系)
            x_pqw = r * np.cos(nu)
            y_pqw = r * np.sin(nu)
            # ECI座標への変換(円軌道を仮定)
            x = (np.cos(raan) * x_pqw
                 - np.sin(raan) * np.cos(inc) * y_pqw)
            y = (np.sin(raan) * x_pqw
                 + np.cos(raan) * np.cos(inc) * y_pqw)
            z = np.sin(inc) * y_pqw
            positions.append([x, y, z])
    return np.array(positions)

# --- Starlinkモデル(簡略版: 72面 x 22機 = 1584機) ---
h = 550  # 軌道高度 [km]
inc = 53  # 傾斜角 [deg]
T = 1584  # 衛星総数
P = 72    # 軌道面数
F = 17    # 位相パラメータ

sats = walker_constellation(h, inc, T, P, F)

# --- 3D可視化 ---
fig = plt.figure(figsize=(10, 10))
ax = fig.add_subplot(111, projection='3d')

# 地球の描画
u = np.linspace(0, 2 * np.pi, 60)
v = np.linspace(0, np.pi, 30)
xe = R_E * np.outer(np.cos(u), np.sin(v))
ye = R_E * np.outer(np.sin(u), np.sin(v))
ze = R_E * np.outer(np.ones_like(u), np.cos(v))
ax.plot_surface(xe, ye, ze, alpha=0.15, color='cyan')

# 衛星の描画
ax.scatter(sats[:, 0], sats[:, 1], sats[:, 2],
           s=1, c='red', alpha=0.6)

ax.set_xlabel('X [km]')
ax.set_ylabel('Y [km]')
ax.set_zlabel('Z [km]')
ax.set_title(f'Walker {inc}:{T}/{P}/{F}  h={h} km')
lim = R_E + h + 200
ax.set_xlim([-lim, lim])
ax.set_ylim([-lim, lim])
ax.set_zlim([-lim, lim])
plt.tight_layout()
plt.show()

このコードを実行すると、地球の周囲に 1,584 機の衛星が規則的に配置された 3D プロットが表示されます。衛星が 72 本の軌道面に沿って環状に分布し、傾斜角 53° の効果で中緯度帯に密集していることが視覚的に確認できます。高緯度(北極・南極付近)には衛星が少ないことも見て取れ、追加の軌道殻が必要な理由がわかります。

カバレッジマップの生成

次に、地表上のグリッド点から各衛星への仰角を計算し、カバレッジマップを生成します。

import numpy as np
import matplotlib.pyplot as plt

# --- 定数 ---
R_E = 6371.0
MU = 3.986e5

def walker_constellation(h, inc_deg, T, P, F):
    """ウォーカー配座の衛星位置を返す(前掲と同じ)"""
    r = R_E + h
    inc = np.radians(inc_deg)
    S = T // P
    positions = []
    for j in range(P):
        raan = 2 * np.pi * j / P
        for k in range(S):
            nu = 2 * np.pi * k / S + 2 * np.pi * F * j / T
            x_pqw = r * np.cos(nu)
            y_pqw = r * np.sin(nu)
            x = (np.cos(raan) * x_pqw
                 - np.sin(raan) * np.cos(inc) * y_pqw)
            y = (np.sin(raan) * x_pqw
                 + np.cos(raan) * np.cos(inc) * y_pqw)
            z = np.sin(inc) * y_pqw
            positions.append([x, y, z])
    return np.array(positions)

def latlon_to_ecef(lat_deg, lon_deg):
    """緯度経度 → ECEF座標"""
    lat = np.radians(lat_deg)
    lon = np.radians(lon_deg)
    x = R_E * np.cos(lat) * np.cos(lon)
    y = R_E * np.cos(lat) * np.sin(lon)
    z = R_E * np.sin(lat)
    return np.array([x, y, z])

def count_visible_sats(lat_deg, lon_deg, sat_positions, elev_min_deg):
    """指定地点から仰角elev_min以上で見える衛星数を返す"""
    user = latlon_to_ecef(lat_deg, lon_deg)
    # 衛星への方向ベクトル
    diff = sat_positions - user  # (N, 3)
    dist = np.linalg.norm(diff, axis=1)
    # 天頂方向(地表法線)
    zenith = user / np.linalg.norm(user)
    # 仰角の計算
    cos_zenith_angle = np.dot(diff, zenith) / dist
    elev_rad = np.pi / 2 - np.arccos(np.clip(cos_zenith_angle, -1, 1))
    elev_deg = np.degrees(elev_rad)
    return np.sum(elev_deg >= elev_min_deg)

# --- コンステレーション生成 ---
sats = walker_constellation(h=550, inc_deg=53, T=1584, P=72, F=17)

# --- カバレッジマップの計算 ---
lat_grid = np.arange(-90, 91, 2)
lon_grid = np.arange(-180, 181, 4)
coverage = np.zeros((len(lat_grid), len(lon_grid)))

for i, lat in enumerate(lat_grid):
    for j, lon in enumerate(lon_grid):
        coverage[i, j] = count_visible_sats(lat, lon, sats, elev_min_deg=25)

# --- 可視化 ---
fig, ax = plt.subplots(figsize=(14, 7))
im = ax.pcolormesh(lon_grid, lat_grid, coverage,
                    cmap='YlOrRd', shading='auto')
cbar = fig.colorbar(im, ax=ax, label='Number of visible satellites')
ax.set_xlabel('Longitude [deg]')
ax.set_ylabel('Latitude [deg]')
ax.set_title('LEO Constellation Coverage (Walker 53:1584/72/17, h=550km, elev>=25°)')
ax.set_xlim([-180, 180])
ax.set_ylim([-90, 90])
ax.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()

このカバレッジマップからいくつかの重要な特徴が読み取れます。

  1. 中緯度帯(緯度 ±30°-50° 付近)で可視衛星数が最大になる: これは傾斜角 53° の軌道面が中緯度帯で最も密集するためです。衛星は最高緯度(北緯・南緯 53°)付近で折り返すように見えるため、この緯度帯に衛星が集中します。

  2. 赤道上では可視衛星数がやや少ない: 軌道面が赤道を斜めに横切るため、赤道上空の衛星密度は中緯度帯に比べて低くなります。ただし、通信が途絶えるほどではなく、複数の衛星が常に見えています。

  3. 高緯度帯(緯度 ±60° 以上)で急激にカバレッジが低下する: 傾斜角 53° の軌道では、緯度 53° より高い地点からは衛星が真上を通過することがなく、低仰角でのみ衛星が見えます。仰角 25° 以上の条件では、緯度 65° を超えるとカバレッジがゼロになる場合があります。これが、Starlink が追加の高傾斜角殻を必要とする理由です。

なお、このシミュレーションはある瞬間のスナップショットであり、衛星は常に移動しているため、時間平均すると上記の傾向はやや平滑化されます。しかし、設計上の基本的な特性は維持されます。

遅延計算とドップラーシフトの時間変化

最後に、1 機の衛星がユーザの上空を通過する際の遅延とドップラーシフトの時間変化をシミュレーションします。

import numpy as np
import matplotlib.pyplot as plt

# --- 定数 ---
R_E = 6371.0e3  # [m]
MU = 3.986e14   # [m^3/s^2]
c = 3e8          # 光速 [m/s]
f0 = 12e9        # 搬送波周波数 12 GHz (Ku帯)

h = 550e3        # 軌道高度 [m]
r_orb = R_E + h
v_s = np.sqrt(MU / r_orb)  # 軌道速度 [m/s]
T_orb = 2 * np.pi * np.sqrt(r_orb**3 / MU)  # 軌道周期 [s]

# --- ユーザ位置(赤道上、経度0度に固定) ---
user_lat = 0.0
user_lon = 0.0
user_ecef = np.array([R_E * np.cos(np.radians(user_lat)),
                       0.0,
                       R_E * np.sin(np.radians(user_lat))])

# --- 衛星軌道(赤道面を傾斜角53°で横切る簡略モデル) ---
inc = np.radians(53)
t = np.linspace(-400, 400, 2000)  # 通過前後の時間 [s]
omega_orb = 2 * np.pi / T_orb      # 角速度 [rad/s]

# 衛星がt=0でユーザ直上を通過するように設定
theta_offset = np.radians(user_lat)
theta = omega_orb * t

# ECI座標での衛星位置(簡略化: 地球自転を無視)
sat_x = r_orb * np.cos(theta) * 1.0  # 軌道面のx成分
sat_y = r_orb * np.cos(theta) * 0.0
sat_z = r_orb * np.sin(theta) * np.sin(inc)
sat_x_eci = r_orb * (np.cos(theta))
sat_y_eci = r_orb * (np.sin(theta) * np.cos(inc))
sat_z_eci = r_orb * (np.sin(theta) * np.sin(inc))

# --- 衛星-ユーザ間の距離と仰角 ---
dx = sat_x_eci - user_ecef[0]
dy = sat_y_eci - user_ecef[1]
dz = sat_z_eci - user_ecef[2]
dist = np.sqrt(dx**2 + dy**2 + dz**2)

# 仰角計算
zenith = user_ecef / np.linalg.norm(user_ecef)
cos_zenith_angle = (dx * zenith[0] + dy * zenith[1] + dz * zenith[2]) / dist
elev_rad = np.pi / 2 - np.arccos(np.clip(cos_zenith_angle, -1, 1))
elev_deg = np.degrees(elev_rad)

# 可視条件: 仰角 > 10°
visible = elev_deg > 10

# --- 片道遅延 ---
delay_ms = dist / c * 1000  # [ms]

# --- ドップラーシフト ---
# 視線方向の相対速度(距離の時間微分)
dt = t[1] - t[0]
v_radial = np.gradient(dist, dt)  # [m/s]
doppler_khz = -(v_radial / c) * f0 / 1e3  # [kHz](マイナス: 近づく→正のシフト)

# --- 可視範囲のみプロット ---
t_vis = t[visible]
delay_vis = delay_ms[visible]
doppler_vis = doppler_khz[visible]
elev_vis = elev_deg[visible]

fig, axes = plt.subplots(3, 1, figsize=(12, 10), sharex=True)

# 仰角
axes[0].plot(t_vis, elev_vis, 'b-', linewidth=1.5)
axes[0].set_ylabel('Elevation [deg]')
axes[0].set_title('LEO Satellite Pass: Elevation, Delay, Doppler Shift')
axes[0].axhline(y=25, color='r', linestyle='--', label='Min elev = 25°')
axes[0].legend()
axes[0].grid(True, alpha=0.3)

# 片道遅延
axes[1].plot(t_vis, delay_vis, 'g-', linewidth=1.5)
axes[1].set_ylabel('One-way delay [ms]')
axes[1].grid(True, alpha=0.3)

# ドップラーシフト
axes[2].plot(t_vis, doppler_vis, 'r-', linewidth=1.5)
axes[2].set_ylabel('Doppler shift [kHz]')
axes[2].set_xlabel('Time [s]')
axes[2].axhline(y=0, color='k', linestyle='-', alpha=0.3)
axes[2].grid(True, alpha=0.3)

plt.tight_layout()
plt.show()

# --- 数値サマリ ---
print(f"軌道速度: {v_s:.1f} m/s ({v_s/1e3:.2f} km/s)")
print(f"軌道周期: {T_orb:.1f} s ({T_orb/60:.1f} min)")
print(f"最小片道遅延: {np.min(delay_vis):.2f} ms")
print(f"最大片道遅延: {np.max(delay_vis):.2f} ms")
print(f"最大ドップラーシフト: {np.max(np.abs(doppler_vis)):.1f} kHz")
print(f"可視時間: {(t_vis[-1] - t_vis[0]):.0f} s ({(t_vis[-1]-t_vis[0])/60:.1f} min)")

このシミュレーション結果から、LEO 衛星通過時の通信パラメータの動的な変化が明確に見て取れます。

  1. 仰角の時間変化: 衛星は低仰角から現れ、天頂付近を通過して再び低仰角に沈みます。山型のプロファイルを描き、天頂通過時に最大仰角(理想的には 90°)に達します。可視時間は約 5-8 分程度です。

  2. 片道遅延の変化: 遅延は仰角と逆相関し、天頂通過時に最小値(約 1.8 ms)、低仰角時に最大値(約 3-4 ms)をとります。これは距離(スラント距離)の変化を直接反映しています。GEO の片道遅延 119 ms と比較すると、1-2 桁小さい値です。

  3. ドップラーシフトの変化: 衛星接近時は正のドップラーシフト、遠ざかる時は負のドップラーシフトとなり、天頂通過の瞬間にゼロを横切ります。最大シフトは低仰角時に約 30-45 kHz(Ku 帯 12 GHz の場合)に達します。特に注目すべきは天頂通過時のドップラー変化率(傾き)が最も大きいことで、受信機のキャリア追跡ループにとって最も厳しい条件がこの瞬間に発生します。

必要最低衛星数の仰角依存性

最後に、最低仰角の要件と必要衛星数の関係をグラフ化します。

import numpy as np
import matplotlib.pyplot as plt

R_E = 6371.0  # [km]

def min_satellites(h, elev_min_deg):
    """カバレッジ理論に基づく最低衛星数の下限を計算"""
    rho = np.arcsin(R_E / (R_E + h))
    elev_min = np.radians(elev_min_deg)
    eta = np.arcsin(np.cos(elev_min) * np.sin(rho))
    theta_cov = np.pi / 2 - elev_min - eta
    if theta_cov <= 0:
        return np.inf
    n_min = 2.0 / (1.0 - np.cos(theta_cov))
    return np.ceil(n_min)

# --- 異なる軌道高度での計算 ---
altitudes = [350, 550, 800, 1200]
colors = ['#e74c3c', '#e67e22', '#2ecc71', '#3498db']
elev_range = np.arange(5, 55, 1)

fig, ax = plt.subplots(figsize=(10, 6))
for h_km, color in zip(altitudes, colors):
    n_vals = [min_satellites(h_km, e) for e in elev_range]
    ax.semilogy(elev_range, n_vals, '-', color=color,
                linewidth=2, label=f'h = {h_km} km')

ax.set_xlabel('Minimum elevation angle [deg]')
ax.set_ylabel('Minimum number of satellites')
ax.set_title('Required Satellites vs Minimum Elevation Angle')
ax.legend()
ax.grid(True, alpha=0.3, which='both')
ax.set_xlim([5, 55])
ax.set_ylim([10, 1e4])
plt.tight_layout()
plt.show()

このグラフから、以下の重要なトレードオフが読み取れます。

  1. 仰角要件を厳しくするほど、必要な衛星数が急増する: 仰角 10° から 40° に引き上げると、必要衛星数は約 1 桁増加します。この関係は $(1 – \cos\theta_{\text{cov}})^{-1}$ の急峻な増加を反映しています。

  2. 高い軌道高度ほど少ない衛星数で済む: 軌道高度 1,200 km(OneWeb)は 550 km(Starlink)に比べ、同じ仰角条件で必要衛星数が半分以下になります。OneWeb が 648 機で全球をカバーできるのに対し、Starlink が 1,584 機(主殻のみ)必要とするのは、この軌道高度の差によるものです。

  3. 低軌道の利点と衛星数のジレンマ: 低軌道であるほど遅延とパスロスは有利になりますが、必要衛星数は増加します。この根本的なトレードオフが、LEO コンステレーション設計の最も重要な設計判断の 1 つです。

LEO コンステレーション通信のリンクバジェット

ここまでの議論を統合して、LEO コンステレーション通信のリンクバジェットの特徴を整理しておきましょう。リンクバジェットは衛星通信システム設計の基本ツールであり、送信側から受信側までの信号電力の収支を計算するものです。

ダウンリンクの基本方程式

受信側での搬送波対雑音比 $C/N_0$ は次のように書けます。

$$ \frac{C}{N_0} = \text{EIRP} – \text{FSPL} – L_{\text{atm}} + \frac{G}{T} – k $$

ここで各項の単位は dBW(または dBW/K, dBW/Hz 等を適切に対応させたもの)で、以下の意味を持ちます。

  • $\text{EIRP}$: 衛星の等価等方放射電力 [dBW]
  • $\text{FSPL}$: 自由空間伝搬損失 [dB]
  • $L_{\text{atm}}$: 大気損失(降雨、ガス吸収等)[dB]
  • $G/T$: 受信アンテナ利得対雑音温度比 [dB/K]
  • $k = -228.6$ dBW/K/Hz: ボルツマン定数

LEO 通信特有のポイントとして、FSPL が衛星のパス中に大きく変動することが挙げられます。天頂通過時(最短距離)と低仰角時(最長距離)の FSPL 差は次のように計算できます。

天頂時のスラント距離は $d_{\min} = h = 550$ km、仰角 25° 時のスラント距離 $d_{\max}$ は幾何関係から求まります。

$$ d_{\max} = \sqrt{(R_E + h)^2 – R_E^2 \cos^2\varepsilon} – R_E \sin\varepsilon $$

$\varepsilon = 25°$ の場合、次のとおりです。

$$ d_{\max} = \sqrt{6{,}921^2 – 6{,}371^2 \times \cos^2 25°} – 6{,}371 \times \sin 25° $$

計算を進めると $d_{\max} \approx 1{,}530$ km となります。したがって、FSPL の変動幅は次のとおりです。

$$ \Delta \text{FSPL} = 20 \log_{10}\left(\frac{d_{\max}}{d_{\min}}\right) = 20 \log_{10}\left(\frac{1{,}530}{550}\right) \approx 8.9 \; \text{dB} $$

この約 9 dB の変動を吸収するために、LEO 通信では適応符号化変調(ACM: Adaptive Coding and Modulation)が不可欠です。衛星が高仰角にあるときは高次変調(16APSK, 32APSK 等)で高スループットを実現し、低仰角時には低次変調(QPSK 等)に切り替えて信頼性を確保します。

もう 1 つの LEO 特有の要因は、大気損失 $L_{\text{atm}}$ の仰角依存性です。低仰角ほど電波が大気中を通過する距離(エアマス)が長くなり、特に降雨時の減衰が増大します。Ka 帯(30 GHz 付近)では、仰角 25° での降雨減衰が天頂時の約 2.4 倍($1/\sin 25° \approx 2.37$)になるため、フィーダリンクの設計では降雨マージンの確保が重要です。

このように、LEO コンステレーションのリンクバジェットは「動的なリンクバジェット」であり、衛星の位置(仰角)に応じてリアルタイムに変化します。GEO 衛星では静的なリンクバジェット設計で十分でしたが、LEO では動的な適応が本質的に求められるのです。

LEO コンステレーション通信の課題と将来展望

周波数調整の課題

数千機の LEO 衛星が同じ周波数帯を使用すると、GEO 衛星への干渉が問題になります。ITU(国際電気通信連合)の無線通信規則では、非静止衛星システム(NGSO)は静止衛星システム(GSO)に対して有害な干渉を与えてはならないとされています(ITU Radio Regulations Article 22)。

これを満たすための主な手法は以下の 2 つです。

排除ゾーン(Exclusion Zone): LEO 衛星のビームが GEO 衛星の方向(GEO 弧方向)を指す場合、そのビームの送信を一時的に停止します。具体的には、LEO 衛星のビーム方向と GEO 弧の角度差が一定値以下になったときにビームをオフにします。

電力密度マスク(PFD Mask): 地表上における LEO 衛星からの電力束密度を、仰角に応じた上限値以下に抑える規制です。これにより、GEO 受信局が受ける干渉電力を制限します。

スペースデブリと持続可能性

数万機の衛星を低軌道に展開することは、宇宙環境への影響も無視できません。衛星の設計寿命は約 5 年であり、その後は意図的に軌道を下げて大気圏再突入させる必要があります(デオービット)。Starlink 衛星はイオン推進器(クリプトン Hall スラスタ)を搭載しており、寿命末期に自律的にデオービットする設計です。

万が一推進器が故障した場合でも、高度 550 km では大気抵抗により数年以内に自然減衰して再突入します。これは高度 1,200 km の OneWeb に比べて大きな利点で、高高度では自然減衰に数十年を要するため、故障衛星がデブリとして長期間残存するリスクがあります。

将来の技術動向

LEO コンステレーション通信は急速に進化しており、以下の技術動向が注目されます。

V 帯(40-75 GHz)の活用: 現在主流の Ku/Ka 帯に加え、より広い帯域が確保できる V 帯の利用が計画されています。V 帯は降雨減衰が大きいため、適応変調と空間ダイバーシチの組み合わせが鍵になります。

光フィーダリンク: ゲートウェイとのフィーダリンクにレーザー光通信を使用する構想です。電波に比べて桁違いに広い帯域が得られるため、ゲートウェイのボトルネックを解消できます。

3GPP NTN 統合: 5G NR の非地上ネットワーク(NTN)として LEO 衛星を組み込む標準化が進んでいます。これにより、一般的なスマートフォンが衛星と直接通信できるようになり、地上セルラーネットワークとのシームレスな統合が実現します。

まとめ

本記事では、LEO コンステレーション通信の基本原理から設計手法、そして実システムの技術概要までを解説しました。

  • LEO 通信の本質的利点: 低遅延(片道 1-7 ms)と低パスロス(GEO 比で約 36 dB の改善)が、次世代衛星ブロードバンドを可能にしている
  • ウォーカー配座: $i : T/P/F$ の 4 パラメータでコンステレーションの空間配置を系統的に設計できる
  • カバレッジと衛星数のトレードオフ: 仰角要件と軌道高度の選択が必要衛星数を決定し、$N_{\min} \sim 2/(1 – \cos\theta_{\text{cov}})$ の関係で急増する
  • ドップラーシフト: Ku 帯で最大 $\pm 45$ kHz 程度のシフトが生じ、プリコンペンセーションと受信機追跡ループで補償する
  • ハンドオーバー: 数分ごとに発生する衛星間ハンドオーバーを Make-Before-Break 方式と予測的スケジューリングで処理する
  • 衛星間リンク(ISL): 衛星間を直接接続することで、光ファイバーを凌ぐ低遅延の長距離通信が実現し得る
  • Starlink vs OneWeb: 低軌道・大量衛星 vs 中高度・少数衛星という設計哲学の違いが、LEO コンステレーション設計の普遍的なトレードオフを体現している

LEO コンステレーション通信は、衛星通信のパラダイムを「少数の大型 GEO 衛星」から「多数の小型 LEO 衛星」へと転換させる技術です。その設計には、軌道力学、電波工学、通信理論、ネットワーク工学を横断する知識が必要であり、まさに宇宙通信工学の集大成と言えます。

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