人工衛星は一度打ち上げてしまうと通信によってしか干渉できないため、Windowsで言うブルースクリーンのようなシステムの致命的なエラーが発生すると通信機能まで停止して復帰できなくなる危険性があります。そうした障害の対策について、衛星システムエンジニアのクラーク・ウェイクランド氏が解説しました。

How to avoid a BSOD on your 2 billion dollar spacecraft | Clark Wakeland

https://clarkwakeland.com/blog/2024/avoiding-a-BSOD-on-your-satellite/



ウェイクランド氏の関わっている人工衛星のOSはFlight Software(FSW)というC言語で書かれた独自のカスタムOSですが、致命的なエラーへの対応は他のOSの場合と同じようにシステムを再起動させることで行うとのこと。しかし、宇宙空間を飛行している人工衛星の元へ行き、電源を操作するのは不可能です。

そこで活躍するのがウォッチドッグタイマーという仕組み。システムの動作の一環として「ウォッチドッグタイマーのリセット」を組み込むと、システムが停止した際にウォッチドッグタイマーが発動して復旧動作を行わせることが可能になります。

ウェイクランド氏の開発する人工衛星の場合、ウォッチドッグタイマーが約30秒間リセットされずに経過するとシステムがセーフモードに移行し、ほとんどの機能をシャットダウンして人工衛星が太陽電池パネルを太陽に向けて電力を生成することと、失われた通信を再度確立しようとすることに集中するようになっているとのこと。

ウェイクランド氏はさらに、人工衛星の開発終盤における全システムのテストであるクローズドループテストにおいてセーフモードが発生してしまった経験を語っています。クローズドループテストはその名の通り、システムにシミュレートされた軌道データを送信し、姿勢の応答データから新たな軌道データをシミュレートするクローズドループを通して衛星の制御を確かめるテストです。



クローズドループテストで衛星からの応答データを送り返すのに使用するメモリアドレスの決定が遅れたため、開発中は仮置きとして以前開発した衛星の時のメモリアドレスを使用していたそうです。そのまま仮置きである事が忘れられてしまい、レビュー会議でも見落とされ、クローズドループテストを行った際にアドレスが存在せずヌルポインターの例外が発生してシステムがクラッシュしました。

システムがセーフモードになっていても、システムを正常に再起動するには数十のコマンドを間違えないように入力する必要があるとのこと。事態の解決まで約12時間のトラブルシューティングが必要だったほか、高価なシステムのため仮にテストであってもセーフモードに入った際には発注者のアメリカ政府へ報告する必要があったとウェイクランド氏は述べています。