スペースにおけるLisp: 自律宇宙船制御の高みと低み

宇宙探査の歴史は、ハードウェア―ロケット、ランダー、ローバー―を通じて語られることが多い。しかし、これらの機械を制御するソフトウェアこそが、最も激しい技術的および政治的な闘いが繰り広げられる場所である。そのような話の一つは、柔軟性と高レベル抽象で知られる言語Lispを、NASAのジェット推進研究所(JPL)のミッションクリティカルなシステムに統合しようとした試みである。

マーズにおける自律性への探求

1988年、火星でローバーを操作する課題は、残酷な制約によって定義された:往復40分の光の遅延時間。このレイテンシにより、リアルタイムの遠隔操作は不可能だった;オペレーターがローバーの進行方向にある岩を見つけて、それを避けるためのコマンドを送信する頃には、ローバーはすでに衝突しているかもしれなかった。

これを解決するため、ガレットと彼のチームは自律性のレベルを高めることに焦点を当てた。目標は、ローバーに目的地を与え、その後自分でそこに到達する経路を見つけ出せるようにすることだった。この作業は、次のプロトタイプシリーズで行われた:

  • FANG (Futuristic Autonomous Navigation Gizmo): 屋内および屋外テストに使用される中型の重いロボット。
  • Tooth: 靴箱サイズのロボット。
  • Robbie: ステレオビジョンを使用してナビゲーションを行った世界初のロボットとなった、巨大なSUVサイズの六輪の怪物。
  • The Rocky Series: Sojourner ローバーに最終的につながったプロトタイプの系統。

NASAのソフトウェアのほとんどがC、Pascal、またはBasicで書かれていた中、ガレットのチームはLispを活用した。1980年代後半、PythonやJavaが登場する以前、Lispは研究者が素早くイテレーションできる高レベル抽象を提供した。

ガレットはこのアプローチを、あらゆる問題をコンパイラ問題に変換することだと説明している。メモリが限られた小型ロボットに対しては、チームはロボット専用のカスタム言語をLispで設計し、それを組み込みコードにコンパイルしていた。より大きなロボットでは、Lispはハードウェア上で直接実行された。

しかし、この選択は大きな抵抗に遭遇した。NASAにおける主流の見解は、ガベージコレクション―予期せずプロセスを停止させる可能性がある―および高いメモリ消費により、Lispを疑わしいものとして見ていた。リアルタイム応答が重要な組み込み環境では、これらは災害的なリスクと見なされた。

政治的な分断:自律性 vs. 制御

技術的な意見の相違は、しばしばより深い政治的対立を隠している。JPLでは、ガレットの研究志向のグループと、より伝統的な運用グループの間で領域争いが生じた。

伝統的なアプローチは、『低自律性』に依存していた。オペレーターがローバーが従うべき正確な経路を記述するものだった。これはロボットが『暴走する』リスクを減らしたが、人間スタッフに巨大な運用負担を強いた。一方、ガレットのアプローチは、人間をループから完全に取り除こうとした。

ガレットが指摘するように、これは単なる技術的議論ではなく、生計のかかった衝突だった。宇宙船の手動操作に役割を依存している人々のインフラストラクチャは、彼らの仕事を自動化して無くそうとする技術を自然に支持する傾向がなかった。

Deep Space 1とRemote Agent

高自律性のLispアプローチはSojournerローバーに採用されなかったものの、NASAのニュー・ミレニアム・プログラムによって二度目のチャンスを得た。このプログラムは、規模の経済によってミッションコストを削減できる技術を実証することを目的としていた。

これにより、Remote Agentが生まれた。Deep Space 1(DS1)ミッション用の自律飛行コントローラーである。このシステムはいくつかのコンポーネントからなりの内の3つはLispで書かれていた。ガレットの具体的な貢献は、「エグゼクティブ」であり、入力データと予期せぬ事態に基づいて宇宙船の瞬間瞬間の行動を決定するソフトウェアだった。

信頼性を確保するため、エグゼクティブはレースコンディションやデッドロックなどの一般的なマルチスレッド問題を防ぐように設計されたカスタム言語でプログラムされた。この言語の安全性は、形式的正しさの証明と、飛行と同一のハードウェアでの広範な地上テストによって裏付けられた。

1億5000万マイルのデバッグセッション

形式的証明にもかかわらず、Remote Agentは3日間の飛行実験中に失敗した。地球から1億5000万マイル離れた宇宙船は、意思決定を停止した。

宇宙船上で動作するLisp REPL(Read-Eval-Print Loop)を基盤に構築されていたため、チームには独自の能力があった:Deep Space Networkを介してS式(Lispコード)を直接マシンに送信することができた。マネージャのサインオフと70メートルアンテナ伝送という厳しいプロセスを経て、チームはシステム状態のダンプを要求した。

バックトレースから、言語が防ぐように設計されていたレース条件が明らかになった。この失敗は、開発者が言語の安全な構造を使って特定の機能を実装できず、代わりに低レベルのLisp構造を呼び出すことで安全保証を回避したために発生した。この「安全でない」脱出ハッチがデッドロックを引き起こした。

学んだ教訓

REPLを使用して、チームは手動でイベントを注入し、システムの「 wedged 」状態を解除することで、ミッションの目的を達成することができた。しかし、この経験は長く残る痕を残した。自律性プロジェクトはすぐに中止され、高レベルLispアプローチは周縁化された。

この経験を振り返って、ガレットはLispのようなツールの価値は普遍的な優位性ではなく、ユーザーの思考様式との「インピーダンスマッチ」にあると示唆している。ガレットにとって、Lispがコードをデータとして扱う方法とその強力な抽象は完璧に合致していた。たとえNASAの制度的にはミスフィットであっても。

最終的に、宇宙におけるLispの物語は、形式的証明はその仮定ほどしか強くないことを思い出させ、そして最も洗練された技術的解決策でも、人間の誤りと組織的政治の組み合わせによって軌道から外れ得ることを示している。

Sources