人工衛星運用におけるモニタリング
はじめに
こんにちは、Satellite System Automation Group所属の江波と申します。弊グループでは衛星をできる限り省コストで運用できるように、ソフトウェアエンジニアリングを活用した人工衛星運用の自動化に取り組んでいます。
そこで、本記事では弊グループで取り組んでいる人工衛星のモニタリングについて紹介したいと思います。
人工衛星の運用とは?
現在、弊社で製造された5機の人工衛星が地球を観測するために日夜グルグル回っております。運用では、衛星を操作するためのコマンディングを行ったり、衛星に搭載されているセンサ情報や衛星内部で動いているコンピュータのログを定期的に取得して稼働状況をモニタリングすることなどが挙げられます。
Webサービスの開発に携わったことがある方であればモニタリングについては馴染みのある話かもしれません。Webでは各種メトリクス(トラフィック量、レスポンス時間、負荷など)から正常に稼働しているかどうかを判断し、場合によってはシステムのロールバック、バグフィックスのパッチ適用などを行うかと思います。
人工衛星も同様に、搭載されているセンサーの情報を定期的に地上へ送信して衛星の健康状態を報告し続けることで、正常に稼働していることを確認します。ただし人工衛星の場合は打ち上げたら最後、物理的に確認しに行くことは不可能なため、継続的なモニタリングは非常に重要な立ち位置となっております。
モニタリング

Grafana上で可視化されたGyroセンサのグラフ
モニタリングには大きく分けて2つのモニタリングが存在し、一つは衛星側のモニタリング、もう一つがアンテナ側のモニタリングとなります。
衛星のモニタリング
人工衛星は周回軌道1周を回る間に各種センサの情報が蓄積されています。例えば、スタートラッカーと呼ばれる星の位置を利用した絶対的な姿勢情報を取得するセンサ、ジャイロセンサを用いた衛星の角運動量、衛星の稼働において最もクリティカルとなる電力の発電量や使用量といった情報などが挙げられます。

これらの情報を取得するには衛星に対して指令を送る必要があるため、地上局に設置されているアンテナ上空を通過する時間に、アンテナを衛星に追尾させて指令を送るためのUplink、そして情報を受信するDownlinkを行います。上空を通過する時間はおよそ10分程度しかないものの、1日で15~16回ほど通過するため一部の情報は分割して地上へ送られます。

送信された情報は一旦ストレージに格納され、前処理用のコンテナがトリガーされます。前処理が必要な理由としては、衛星から送られてくるデータは衛星画像やセンサー情報といった色々な情報が一つとなったバイナリ形式となっているので、それぞれ用途別にデータを分離します。分離されたデータはDBに格納され、センサなどの時系列情報はGrafanaを利用してダッシュボード上に可視化します。
アンテナのモニタリング

衛星にUplinkするにはまずアンテナを運営している基地局へ信号を送り、そしてアンテナから衛星に信号を送ります。
この時、そもそもアンテナに信号が届いているか、アンテナが衛星を追尾できているか、信号の強度が十分か、などを知る必要があります。
これらの情報に関しては基地局側で情報を取得するためのAPIが用意されているため前処理を行う必要はなく、衛星が地上局の上空を通る時間に対して取得をスケジューリングし、DBへ格納しています。そして、格納された情報はGrafanaによってダッシュボード上で可視化されます。
アラーティング

衛星内のコンピュータ上で動くプログラムのログも取得しており、各コマンディングが成功したかどうかを逐次確認できるようにしています。Errorによっては一定の時間内に対応が必要となるものもあるため、エラーが発生している場合はSlackへ直接アラーティングされるようになっております。この仕組みによって、運用メンバーへ通知が飛び、すぐに対応できるような体制となっています。
最後に
人工衛星の運用ってなんか難しそう!というイメージがありますが、Webアプリ・ソフトウェアの運用をされている方にとって今回の内容は結構身近な内容に聞こえたかもしれません。運用している物は違えど、運用に活用している技術はWebとほとんど同じです。各種メトリクスを監視し、適切にアラーティングを行うといった活動によって、健全な衛星運用が保たれます。
今後も弊チームの活動に関する記事を書いていこうと思いますので、ぜひまた読んで頂ければと思います!
Discussion