NASAが1998年秋に打ち上げたMars Climate Orbiter。火星の大気や気候を観測するために作られたこの探査機は、1999年9月MOI(火星軌道投入)の際に行方不明になってしまった。
この原因は一言で言ってしまえば、単位の混同である。
探査機にはリアクションホイールという機器を積んでいて、探査機の回転数を許容範囲内に収めるよう制御している。
回転数を許容範囲に収めるために姿勢制御用スラスタを噴射するのだが、その際軌道も変わってしまうので軌道制御用スラスタを使って修正しなければならない。
この時、姿勢制御用スラスタの噴射量の値を用いてどれだけ軌道修正すれば良いかを計算する。
しかし予期せぬ問題があった。スラスタの噴射量は[pound・sec]で出力している一方、軌道修正ソフトは[N・sec]で計算してしまっていたのだ。
たとえば、1[pound・sec]の噴射を行ったとすると、それは4.45[N・sec]であるにも関わらず、1[N・sec]だと思って計算してしまう。それゆえ修正量が足らなくなってしまうのである。
最後には軌道のズレが積み重なり、地球と交信ができない火星の裏側にいる時に、火星に墜落してしまった。
Mars Climate Orbiterの失敗の原因は、6つに分けられる。
1つ目は、一番重大なことだが、「仕様のすり合わせが不十分だった」ということだ。
探査機のようなプロジェクトでは設計・運用などいくつものチームに分かれてプロジェクトを進めていくが、そのチーム内やチーム間でface to faceの意思疏通がしっかり行われていないと勘違いや情報伝達不足に陥りやすくなる。
2つ目は、「ソフトウェアどうしを結合しての試験が不十分だった」ということだ。
今回の不具合はプログラム内容にあったわけだから、地上での試験をしっかり行うことで防げたはずである。十分な試験を行わなかったか、試験を行っていても不具合を不具合のまま放置してしまっていたのだろう。
3つ目は、「MCOが太陽風の影響を大きく受けることを運用チームが知らなかった」ということだ。
Mars Climate Orbiterは太陽電池パドルが左右非対称で、太陽風の影響を受けやすい。設計チームはそのことを認識していたはずだが、運用チームにそのことが伝わっていなかった。
運用チームはMCOの前に打ち上げたMSV(Mars Voyager)(左右対称の太陽電池パドルをもち太陽風の影響は小さい)と同じような想定で運用を行っていたのだろう。
4つ目は、「AMDをオンボードで計算するように変更されていることを運用チームが知らなかった」ということだ。
MSVでは
5つ目は、「最初の4ヶ月間は初期バグのため地上で計算されていたが、その間は正しい計算だった」ということだ。
6つ目は、「軌道がずれていることに、気づいていたのに航法チームからミッション担当や設計者に報告されていなかった」ということだ。