コンピューティング基盤部の三吉(sankichi92)です。
先月12月にアークエッジ・スペースの開発した衛星「AE1b」が国際宇宙ステーションから放出され、さらに、1月15日には「AE1c」と「AE1d」が打ち上げられ、これらの衛星の運用がはじまりました。
アークエッジ・スペースでは、衛星を効率的に運用するための管制システム1を自社で開発しています。 この記事では、非宇宙分野のソフトウェアエンジニア、特に Web 系エンジニアを対象に、衛星管制とは何か、また、衛星管制システムがどのようなものかを紹介します。
衛星管制とは
宇宙開発というとロケットのイメージが強いですが、ロケットの目的は人工衛星などのペイロードを宇宙に運ぶことです。 そして、人工衛星には、地球観測や通信、測位、探査といった宇宙で果たすミッションがあります。
衛星管制とは、衛星がそのミッションを実現するために必要な指令・監視を行うことを指します。 たとえば、地球観測ミッションでは、いつ・どこを撮影するかの指示を送信し、撮影したデータを取得できなければなりません。 また、ミッションの種類にかかわらず、衛星の姿勢、バッテリー状態、温度などを監視し、異常があれば検知して対策を講じる必要があります。
これらの通信を地上から効率的に行うための地上側のソフトウェア・ハードウェア群が、衛星管制システムです。 衛星から取得するデータは「テレメトリ」、衛星へ送る指示は「コマンド」(または「テレコマンド」)と呼ばれます。 衛星管制システムは、テレメトリ・コマンドを送受信するためのシステムともいえます。
衛星管制はサーバー運用に似ています。 サーバーの CPU やメモリ使用率、アプリケーションログは衛星でいうテレメトリに相当し、ネットワークを介して送信されるシェルコマンドや API 呼び出しがコマンドに相当します。 ネットワーク越しに対象の状態を監視し、必要に応じて操作を行うという点で、両者には共通点があります。 また、センサやアクチュエータを備えた組み込みシステムという観点では、IoT 機器にも近いといえるでしょう。
衛星がサーバーや IoT 機器と決定的に異なるのは、宇宙という特殊な環境に存在している点です。 つぎに、この違いがどのような制約をもたらすのか説明します。
衛星管制における通信の制約
宇宙にある衛星とは有線接続ができないため、通信は無線通信で行われます。 無線通信といっても、Wi-Fi や 4G、5G といった地上のデバイス向けの方式で直接通信することはできません。 衛星との通信は、地上局と呼ばれる宇宙機専用の無線局を介して行います。
アークエッジ・スペースでは、静岡県牧之原市に地上局を所有しています2。
衛星と直接通信するためには、衛星がアンテナの送受信可能な範囲に入る必要があります。 現在、当社が運用する衛星はすべて高度 2,000 km 以下の低軌道にあります3。 低軌道の衛星は約90分で地球を一周し、アンテナから見て地平線の向こう側にある間は通信ができません。 また、地球も自転しているため、(衛星の軌道や地上局の位置にもよりますが)毎回アンテナ上空を通過するとは限りません。 たとえば、牧之原局で AE1b と通信できるのは、1日数回であり、1回あたり約10分程度です。 さらに、(使用する電波の種類によるものの)衛星との通信は地上間の通信と比べて一般的に不安定であり、通信速度も低速です。 インターネットに常時接続されて安定した通信が可能なサーバーとは、この点が大きく異なります。 なお、地上局から衛星と通信可能なタイミングは「パス」と呼ばれ、アークエッジ・スペースの衛星管制システムでは、実際に通信を行うパスを「コンタクト」と呼んでいます。
また、当社の衛星通信は、Space Packet Protocol などの CCSDS (Consultative Committee for Space Data Systems) 勧告に基づくプロトコルスタックを採用しています。 通信プロトコルが TCP/IP ではない点も、地上のサーバー運用とは大きく異なる特徴です。
衛星管制システムの機能
ここからは、効率的なコンタクトを実現するために必要な衛星管制システムの主な機能について紹介します。
テレメトリ・コマンド処理
テレメトリの受信とコマンドの送信は、衛星管制システムにおいて必須の機能です。 これらを実現するには、CCSDS 勧告のプロトコルに従ったバイナリをエンコード・デコードするアプリケーションを用意する必要があります。 また、テレメトリやコマンドの内容は衛星ごとに異なるため、衛星固有の事情も考慮して処理しなければなりません。
アークエッジ・スペースでは、衛星に搭載するフライトソフトウェア「C2A」を開発しています。 また、C2A 搭載の衛星と通信するための地上側ソフトウェア「Gaia」も開発しており、C2A のコアと合わせて OSS として公開しています4。
衛星管制システムには、コマンド送信やテレメトリ可視化のためのユーザーインタフェースも必要です。 コマンド送信については、コマンドをシェルスクリプトのようにテキストファイルで記述するための DSL「opslang」も開発しています。
地上局ハードウェアの抽象化
アークエッジ・スペースの衛星管制システムは、地上局のハードウェア設備も含みます。 主要なハードウェアに、アンテナとモデムがあります。
衛星管制に使用する地上局のアンテナは、一般にパラボラアンテナが用いられ、指向性があります。 そのため、衛星の動きに合わせてアンテナを駆動する必要があります。
一方、モデムは、変復調器とも呼ばれ、コマンドを電波として送信できるように変換(変調)したり、受信した電波をデジタルデータへ復元(復調)したりするための装置です。 衛星で使用する電波の周波数などに応じてモデムの設定を変更したり、コンタクト中に衛星との通信を確立するためにモデムを操作したりする必要があります。
さらに、アンテナやモデムのメトリクスも取得し、これらのハードウェアが正常に動作しているか確認しなければなりません。
当社で保有しているアンテナおよびモデムは TCP/IP のインターフェースを備えています。 ただし、その上のレイヤはメーカー独自のプロトコルとなっているため、実際の衛星管制に必要な操作やメトリクスに合わせて抽象化が必要になります。 当社の衛星管制システムでは、これらのハードウェアについて、gRPC の API で操作したりメトリクスを取得したりできるようにしています。
パス予測とコンタクト予約管理
テレメトリ・コマンド処理アプリと地上局があっても、衛星の位置が分からなければ通信できません。 衛星の軌道情報をもとに地上局の可視範囲に入る時刻(パス)を予測し、実際にいつ通信を行うか(コンタクト)を管理する機能が必要です。
衛星の軌道情報は、TLE (Two-Line Elements) と呼ばれるテキストフォーマットで表現されます。 衛星は TLE で表現される軌道上で運動を続けるので、SGP4 といったアルゴリズムによって、特定の時刻に衛星がどこにいるかを計算できます5。 TLE は、CelesTrak や Space-Track といったサイトを利用するなどの方法で取得できます。
地上局の利用枠としてのパスが予測できれば、あとは設備予約 Web アプリとして実装するだけです。
衛星やコンタクトのメタデータ管理
上述の3つの機能があれば、衛星との通信は可能です。 しかし、当社では複数の衛星を同時に運用する必要があり、また、コンタクトごとに運用する内容も異なります。 必然的に、衛星管制システムには、これらのメタデータを管理し、コンタクトごとに適切な設定を各アプリケーションに渡す機能が求められます。
とはいえ、これは単純に管理画面を用意すればよく、ふつうの Web アプリの範囲です。
衛星管制システムの技術スタック
以下は、当社の衛星管制システムで利用している主要な技術の一覧です。 技術的には一般的な Web アプリケーションと大きな違いはありません。
- Rust
- tonic
- TypeScript
- Remix
- gRPC
- WebSocket
- Terraform
- ecspresso
- GitHub Actions
- Amazon ECS
- AWS Fargate
- Amazon ECS Anywhere
- Amazon Aurora Serverless v2 (PostgreSQL)
- Amazon Timestream for InfluxDB
- Amazon DynamoDB
- Amazon S3
- Amazon EventBridge Scheduler
- Grafana
- Sentry
- Twingate
- WireGuard
- Raspberry Pi
衛星運用の今後の展望
衛星管制システムの開発は、私のほか、小林(kobkaz)、藤田(shumon84)の3名で、2024年5月頃から開始しました。
現時点で上述の機能はカバーできているものの、まだまだ必要最低限の機能しかないというレベルです。 衛星へ送信するコマンドの計画やコンタクト中のコマンド送信は人間が行う必要があり、テレメトリ監視も多くを人間の目に頼っています。
アークエッジ・スペースでは、複数のミッションについて多数の衛星からなるコンステレーションの構築を目指しています。 数機程度であれば人間の手動運用でもなんとかなりますが、数十機、さらには数百機規模となるとスケールしません。 これを可能にするには、衛星管制のさらなる自動化・効率化が不可欠です。
さらに、衛星管制システムはあくまで衛星との効率的な通信を実現するためのものです。 衛星のミッションを達成するには、衛星から取得したデータを有効活用できなければなりません。 こうしたミッションデータを活用するためのシステムも必要ですが、こちらもまだまだ人の手に頼っているのが現状です。
これらの課題をソフトウェアの力で解決すべく、引き続き開発に取り組んでいます。
最後に、衛星コンステレーションの運用という、まだ確立された方法論が存在しない分野に挑戦する仲間を積極的に募集しています! 興味のある方はぜひ以下からご応募ください。
- 衛星運用システムと呼ばれることもあります。↩
- 地上局を所有せずとも、AWS Ground Station などの GSaaS (Ground Station as a Service) と呼ばれる地上局提供サービスを利用して衛星と通信することも可能です。↩
- 衛星の軌道には、赤道上高度 36,000 km の静止軌道などもあります。静止軌道の衛星は地球の自転と同期して公転するため、地球上からは常に同じ位置に静止して見えます。↩
- OSS 化戦略については「【学会発表】ソフトウェア技術による衛星開発・製造・運用におけるインターフェース調整コストの低減」を参照してください。↩
- 実際には外乱により軌道は刻々と変化していくので、TLE は日々更新されます。↩