・SpaceXの宇宙船には、デュアルコアx86プロセッサが搭載されている。
・Linuxの他、Windows上で動作するグラフィカルプログラミングツールであるLabVIEWを使用。
・SpaceX社のプログラマーはC++(時にはPython)を好んで使用する。
・ロケットのコードは数十万行に及ぶ。
2002年、ロケット開発のコスト削減を目的にスタートしたSpaceX社は、今や宇宙産業を席巻しています。現在、SpaceX社は、再利用可能なロケット、グローバル通信ネットワーク、惑星間輸送システムの構築など、数多くのプログラムを推進しています。
スーパー・ドラコ(ハイパーゴリック推進剤の液体燃料ロケットエンジン)とマーリン(ケロシン系燃料のエンジン)の2種類のロケットエンジンを自社で製造しています。SpaceXの大ファンとして、宇宙船「ドラゴン」とロケット「ファルコン」を動かしているハードウェアとソフトウェアは何なのか、考えてみました。
ソフトウェアとハードウェアの詳細については、アメリカ政府が機密扱いにしているため、実際のところは分からないことがほとんどです。ファルコン9やファルコンヘビーのような先進的なロケットは、基本的に宇宙へ向かうミサイルです。その技術は悪用される可能性が高く、悪の手に落ちれば深刻な被害をもたらすからです。
しかし、限られたデータでも、SpaceX社でどのようなハードウェアやソフトウェアが使われているのか、また、極限の宇宙環境を考慮して、チームが現在どのような課題に直面しているのかについては、かなりよく分かりました。
放射線の影響によるハードウェアの問題
ソフトウェアもハードウェアも、振動や高温など過酷な環境に置かれます。地球周回軌道に乗ると、状況はさらに悪化します。例えば、ドラゴンは、120℃(太陽に面している時)から-150℃(太陽光が地球に遮られている時)まで、膨大な量の熱と寒さに対処しています。
しかし、電子機器にとって大きな問題のひとつは放射線です。地球の磁場、太陽から放出される高エネルギー粒子、太陽系外からの粒子などからのものです。
これらの粒子は、ビット反転を引き起こす可能性があります。これは、高エネルギーの粒子が宇宙船機器のプロセッサやメモリにぶつかることで発生します。粒子がメモリにぶつかると、「1」が「0」になったり、逆に「0」が「1」になったりして、メモリの特定の部分が破損してしまうことがあります。
粒子がプロセッサにぶつかると、計算結果がまったく不正確になることがあります。たった1ビットの反転のために、プロセッサは宇宙船に深刻な影響を与える可能性があるのです。
1996年、アリアン5【ヨーロッパのロケット】の処女飛行である501【シリアルナンバー】がそれを物語っています。ビット反転はしなかったものの、64ビットの数値を16ビットのアドレスに入れようとしたソフトウェアが数値を切り捨ててしまい、まったく違う結果になってしまったのです。ロケットは打ち上げから37秒後に飛行経路を外れ、最終的には自動飛行終了システムによって自壊しました。結果として、単純なソフトウェアのバグにより、3億7000万ドル以上の損失が発生したのです。
話を戻すと、SpaceX社の宇宙船に搭載されているソフトウェアは、最も単純なエラー検出コードであるパリティビット【データ内の「1」の個数が偶数か奇数かを表す目印】を挿入することで、このビット反転を簡単に検出・修正できます。また、電子機器を放射線から完全に守ることはできないと考え、それを念頭に置いて宇宙船を製造しているのです。
使用しているハードウェア
SpaceX社は、高価な耐放射線強化を施した部品を使用するのではなく、既製品の部品を使用しています。SpaceX社の宇宙船認証の元ディレクターであるジョン・ムラトーレ氏によると、各ドラゴン宇宙船には3台のフライトコンピュータが搭載されています。これらのコンピュータは、それぞれデュアルコアx86プロセッサで動作しています。
このシステムでは、プロセッサのマルチコア機能を利用することはありません。その代わり、2つのコアでそれぞれの計算を個別に行い、結果を比較します。そのため、デュアルコアプロセッサを搭載した3台のフライトコンピュータは、6台の独立したコンピュータとして機能し、互いの計算を定期的に検証しています。
フライトコンピュータの1台が(放射線により)異なる値を出力した場合、他のコンピュータがそれを検出します。この場合、誤作動したプロセッサは自動的に再起動され、さらなるエラーを防ぐことができます。他のプロセッサのメモリをコピーして、同じプログラムを実行し、他のシステムが実行しているものに追いつくようにします。これを再同期と言います。
もし、3台のフライトコンピュータが同時に放射線にやられたらどうでしょう、とても起こりえないことですが。ドラゴンは、このような極端な状況にも対応できるように設計されています。この3台のフライトコンピュータ以外にも、ドラゴン宇宙船には18のシステムが搭載されており、これらも3重冗長化コンピュータを使用しているため、プロセッサの数は54になります。そして、これは宇宙船1機の場合です。
ファルコン9は、エンジンごとに3台のフライトコンピュータと3重冗長化コンピュータを搭載しており、全体で30個のプロセッサを搭載しています。これは2012年のデータですので、SpaceX社はさらに多くのプロセッサを宇宙船などに搭載し、着陸に対応している可能性があります。
SpaceX社がAmazonで誰でも買えるような普通のハードウェアモジュールを使っているのは、非常に珍しいことだと思います。これは、耐放射線強化を施した部品を広範囲に使用する必要がないためです。NASAもSpaceXも、放射線が宇宙船にどんな影響を与えるかを研究しています。どのような影響が出るかが分かれば、それを補うことができます。
これは放射線耐性設計と呼ばれるもので、耐放射線強化を施した設計とは大きく異なるものです。NASAでも、どこでも耐放射線強化を施した部品を使うわけではありません。例えば、ISS(国際宇宙ステーション)では、一部の基本的な制御には従来のノートパソコンを使用し、耐放射線強化を施した部品と放射線耐性部品の両方を組み合わせて使用しています。
ファルコンヘビーのセンターコアのオクタウェブをタンクに嵌合
画像出典:スペースX
ただし、SpaceX社がどのようにロケットの部品を選んでいるかというと、2つの条件があります。
・一つ目は非常に明白です。すべての部品が、そのタスクを処理するのに十分な能力を持っていること。
・その特定の部品のために、利用可能なツールであること。
既製品のハードウェアは、開発者のほとんどが知っているソフトウェアとツールを使用します。一方、耐放射線強化を施した部品は、ほとんどの人が知らない特定のプログラミング言語でしか動作しません。
さらに、既製品のハードウェアは安価であり、SpaceX社はこれらのシステムを広範囲にテストすることができます。ムラトーレ氏はかつて、ある段階で40台以上のフライトコンピュータがテストと開発のためにエンジニアの机の上に置かれていたと話したことがあります。高価なハードウェアでは、これを簡単に行うことはできません。
すべてを制御するソフトウェア
SpaceX社はLinuxオペレーティングシステムを使用しています。Linuxはほとんどすべてのデスクトップで動作し、宇宙船の動力源にもなっています。エンジニアが開発プロセスを合理化しながら、付属の堅牢なアプリケーションを使用できるようにするためです。
SpaceX社のプログラマーは、C++を好んで使用しています。最も人気のあるプログラミング言語のひとつであるため、同社は多くの優秀なプログラマーを雇って、すでに書かれたコードのテストや新しいコードを書かせることができます。また、大規模なC++のエコシステムからも恩恵を受けています。
gcc(CおよびC++コンパイラ)やgdb(デバッガ)など、開発者がすでに知っている既存のツールを使えば良いため、カスタムソフトを開発する必要がありません(時間と余分な作業の節約になります)。
ゲーム開発者は、処理能力やメモリが制約される特殊な環境向けにコードを書く経験が豊富なので、通常、SpaceX社に適しています。
SpaceX社は、Linuxの他に、Windows上で動作するグラフィカルプログラミングツールであるLabVIEWを使用しています。これは、エンジニアが飛行中のドラゴンとファルコンから取得する遠隔測定をよりよく可視化するのに役立ちます。この可視化により、データ分析アルゴリズムの構築、複雑なロジックの図上での表現、あらゆるベンダーの計測ハードウェアの統合が簡単にできるようになりました。地上チームでは、重要な指標を追跡するために使用しているほか、Matlabを解析ツールとして使用しています。
LabVIEWのインターフェース
SpaceX社はまた、宇宙船間で最大限のコードを共有しようとしています。これにはどんな利点があるのでしょうか?あるモジュールのバグ修正は、他のモジュールにも簡単に反映させることができるのです。
モニタリングとロギング
SpaceX社のエンジニアやアナリストは、思いつく限りの指標を追加するよう奨励されています。これらのログはすべて収集され、安全マージンの範囲内にないものがあればアラームを発するソフトウェアによって調査されます。
これらのデータはすべて、その時点で実行されていたプログラムとともに取り込まれ、保存されます。ロケットに何か問題が発生した場合、会社は同じ環境を再生してさらに調査し、問題を解決することができます。
さらに、SpaceX社は継続的インテグレーションを利用して、プログラマーが書いたコード全体を自動的にテストしています。実際、ファルコン9のすべての部品にボルトで固定された試験台があり、潜在的な問題を把握するために飛行全体をシミュレートすることができます。
ロケットのコードは、数十万行に及びます。SpaceX社のエンジニアは、コンピュータの中間シミュレーションをランダムに停止させ、その反応を観察する「糸を切る」タスクを実行します。
SpaceX社、テキサス州マクレガー
SpaceX社は、テキサス州マクレガーにロケット開発・試験施設を構えています。2012年現在、マクレガーの施設には7つの試験台があり、1日18時間、週6日稼働しています。生産量は急速に伸びており、今後数年間は膨大なマニフェストを持つため、SpaceX社はさらに多くの試験台を建設しています。