ホーム » 一般 » 月とコンピュータ

SAKURA Internet Inc.

アーカイブ

月とコンピュータ

アポロ11号が月面着陸を果たしたのは1969年7月のことです。昨年はちょうど40周年にあたり、さまざまなイベントが各地で行われました。私(鷲北)は、バンダイが発売を発表した「大人の超合金:アポロ11号&サターンV型ロケット」を予約して、ずいぶん待ったのですが本日ようやく到着し、組み立てることができました。自宅には置く場所がないので、研究所の一角に置かせてもらっています。

手前の本はセットには含まれていません

…と、これだけではブログのネタにならないので、今回はアポロ宇宙船がどうやって月に着陸したのか、搭載されていたコンピュータについてのお話をしてみたいと思います。

昨年の40周年のときには、Google Codeでアポロ宇宙船搭載コンピュータをコントロールしていたプログラムのダンプリストが公開されたというニュースが話題になりました。

(2019年6月13日追記: 上記のgoogle codeで公開されていたプログラムは現在はなくなってしまいました。代わりに以下のGitHubをご紹介します。

アポロ宇宙船に搭載されたコンピュータはAGC(Apollo Guidance Computer、アポロ誘導コンピュータ)と呼ばれます。「その性能はファミコン以下だった」と揶揄されることも多く、そんなものでよく月まで行けたなと言われることもしばしばですが、実際はどれぐらいの性能を持ち、どうやって月まで行ったのでしょうか。その詳細について説明していきましょう。

1960年代のコンピュータ事情

アポロ計画の概要についてはWikipediaの記事を読んでいただくのが一番ですので、ばっさり省略します。ここでは本稿で関連のある、コンピュータに関する事項だけ紹介します。

アポロ11号が月に降り立ったのは1969年のことですが、宇宙船や機材の開発は1960年代初頭から始まりました。当時のコンピュータはトランジスタが主流で、汎用コンピュータの大きさは部屋一杯になるほど巨大な装置でした。トランジスタでコンピュータを作っていては、重量制限の厳しい宇宙船には到底乗せられません。そこで1958年に発明されたばかりのICを採用し、低い歩留まりに悩みながらもなんとかAGCを完成させました。実はAGCは、ICを採用することでポータブル化に成功した最初期のコンピュータでもあるのです。

アポロ宇宙船には、2台のAGCが搭載されました。ひとつは司令船に乗せられ、月へ向かい周回軌道に乗ること、および月から地球へ戻ってくること、この行程における航法・誘導を担当しました。もうひとつは着陸船に乗せられ、月への着陸と、帰還時の離陸および司令船とのランデブーに使用されました。月着陸船(LM)に搭載されたので、LGC(LM Guidance Computer)とも呼ばれます。

AGCが担当した航法・誘導という仕事とは、第一に宇宙船の位置と姿勢、軌道を計測すること、第二にロケット噴射をコントロールして軌道を変更することでした。第一の計測は、IMU(Inertial Measurement Unit)という装置から送り込まれるデータを処理することです。IMUは高性能のジャイロ・コンパスと加速度計からなり、上下左右のない宇宙空間で絶対座標を提供する非常に重要な装置でした。ジャイロ・コンパスは時間が経つにつれ誤差が累積してしまうので、AGCは望遠鏡と連動するようになっていました。宇宙飛行士がコマンドを与えると、AGCは目印となる星を望遠鏡に捉えます。宇宙飛行士は正しく星が見えていることを確認し、マークボタンを押します。星を使って誤差を修正するこの方法は、大海原で航法士が星を見ながら航海した方法と同じです。六分儀を使って行った航法術を、宇宙飛行士はAGCを使って行ったのです。

第二の軌道変更も重要な任務のひとつです。宇宙船は手動で操縦することもできますが、軌道変更の際のロケット噴射は正確無比に行う必要があったため、通常はコンピュータ制御のもと自動的に行われました。具体的にはAGCの自己計測や地球からのレーダー計測によって算出した現在軌道から、必要なロケット噴射のタイミング、方向、継続時間を計算し、1/100秒単位で設定した時刻に噴射・停止を実施するというものです。これらの噴射の準備は全自動というわけにはいきませんでした。なぜなら全部の制御を自動化するための技術開発が間に合わなかったからです。アポロ計画では地上で計算されたパラメータを宇宙飛行士がキーボードから入力するという手段が取られました。多くの行程は打ち上げ前に何カ月もかけて練られた計画に沿って行われるので、あらかじめ決められた数値を順に入力するだけでよいのですが、軌道の誤差修正やトラブル時の対応には、その場で計算を行い設定する必要があります。これらを間違いなく実行するために、非常に細かな作業がルーチン化され、徹底的な訓練を通じて間違いなく実施されるようになっていたのです。

月への着陸

月周回軌道に到達したアポロ宇宙船は、月着陸船と司令船のふたつに分かれます。司令船には1名が残って周回軌道から支援し、着陸船に乗り移った2名が月面着陸に挑みます。月周回軌道は高度60マイル(約111キロメートル。1ノーティカルマイルは1852メートル)ですが、月着陸は高度50000フィート(約15キロメートル)から始まります。

月着陸は3つの行程に分れています。

  1. ブレーキングフェーズ。 ロケットを水平方向に噴射して軌道速度から着陸速度へ減速します
  2. アプローチフェーズ。高度7000フィートまで降下したら、着陸船を水平から斜め40度~60度に起こし、減速と高度調整を行います
  3. ランディングフェーズ。高度は500フィート、着陸地点を見極め、垂直に降下します

この3つの工程には12分半程度しかかかりません。ブレーキングフェーズ開始時の着陸船の速度は1.7km/s、地球上の音速に換算すると5倍ほどの超高速です。いかに優秀な宇宙飛行士といえども、このような着陸をすべて手動で行うことはできません。そこでLGCとの連携作業が必要になります。

LGCはそれぞれの行程ごとに専用のルーティンを用意して対応しています。NASAは略語が大好きな組織として有名ですが、プログラムの名前も相当なものです。ブレーキングフェーズを担当するプログラムはP63といいます。P63は着陸船を高度50000フィートから7000フィートの目標点(月面上空)へ導きます。目標点に到達すると、自動的に次のプログラムP64が起動します。

P64はアプローチフェーズを担当します。アプローチフェーズでは船体が50度程度に引き起こされます。実はブレーキングフェーズの間、着陸船の窓は月面ではなく宇宙空間の方を向いています。着陸船の窓はとても小さく、視界は足元の方に限定されているので、アプローチフェーズになって初めて宇宙飛行士は着陸予定地点を見ることができるのです。この時点で、着陸までの残り時間は4分を切っています。

P64は宇宙飛行士に重要な情報—AGCが着陸船を月面のどこに導いているかを知らせようとします。現代の飛行機やスペースシャトルのような宇宙船であれば、そのような情報はHUD(Head-Up Display)を通じて表示されるでしょう。ところが1960年代当時にはそんなものは存在しません。代わりに用意されたのがLPD(Landing Point Designator)でした。

着陸地点を見極める

着陸船の操縦士側の窓ガラスには、照準のような線が刻まれています。写真の中央に見える三角形のガラス部分がその窓です。

着陸船の操縦席の様子

よく見ると黄色と白の線が引かれ、目盛が振られているのがわかります。この線は分厚い窓ガラスの内側と外側にそれぞれ描かれていて、操縦士が視線を合わせて両方が重なるようにすると、月面の一点に照準できるようになっているのです。目盛に描かれた数値のうち、縦軸は着陸船の角度に対応しています。LGCはLPD値として、角度をディスプレイに表示します。副操縦士はそれを読み上げて操縦士に伝えます。操縦士はLPD値の交点を見ると、そこがLGCが目指す着陸地点となるのです。なんともアナログな仕組みですね!

しかし実際のLGCの制御と着陸船の操縦は、実にデジタルな方法で実現されていました。操縦桿はすべてフライ・バイ・ワイヤ、つまり入力信号をいったんコンピュータが受けて解釈し、ロケットエンジンにコマンドを伝えて噴射する方式になっています。これはすなわち、操縦モードを切り替えることで操縦桿の働きを変更することができるということです。通常のモードでは、右手の操縦桿はピッチ、ロール、ヨーを操作しますが、P64実行時には「着陸地点を前後左右に変更する」モードになります。宇宙飛行士がLPDを見て、着陸地点に大きな岩が転がっていることに気付いたとしましょう。それを右に避けたいときは、操縦桿を右に倒します。指示を解釈したLGCは着陸予定地点を再計算し、適切なロケット噴射を自動で行ってくれます。着陸船は1回のクリック操作で前後方向に2度、左右方向に0.5度ずつ軌道を修正できるようになっていました。

宇宙船の降下速度も左手の操縦桿で調整できます。これらの入力はLGCが処理して、ロケットに対して適切な推力を発生するようコマンドに変換して送ります。これにより宇宙飛行士は、船体角度(ロール、ピッチ、ヨーの3つが複雑に絡み合っています)や移動速度(XYZ軸ごとに別々に考えなければいけません)、月の重力の影響をいちいち計算することなく、ヘリコプターのように着陸船を操縦できるように工夫されていました。

アプローチフェーズが終わり、高度500フィートに到達するといよいよ着陸です。最終アプローチではロケット噴射を調節して垂直降下を行うP66や、手動誘導モードであるP67というプログラムが用意されています。手動モードといってもLGCの補助がなくなるわけではありません。LGCは常に操縦をアシストしていて、宇宙飛行士の指定する高度や速度を維持するよう、ロケット噴射を調整しているのです。

人間とコンピュータの共同作業

LGCは全自動で月面着陸を行うだけの性能を持っていました。それなのになぜ人間が介在する仕組みを作ったのでしょうか? 理由は月面の様子に応じて柔軟に対応する能力までは、コンピュータに与えることができなかったからです。月の着陸予定点は慎重に選ばれましたが、それでも高度100キロメートルの上空から撮った写真しか利用できません。月面に降下してみて初めて、着陸の障害になるクレーターや岩石の存在に気づくかもしれないのです。月面の様子を観察し、すばやく対応するためには宇宙飛行士の操縦がどうしても欠かせませんでした。

たとえばアポロ11号では、無線の不具合とコンピュータの過負荷が原因で、大きく着陸地点を外してしまいました。その結果LGCは平坦な場所を飛び越して、岩の多い場所へ誘導し始めてしまいます。アームストロング船長はそれに気付いて、ただちに手動操縦へ切り替え、安全な場所を選び直して着陸したのです。

アポロ12号ではピンポイント着陸を目指し、無事に達成していますが、予定地点にはやはり岩があったため、数百フィート手前を選んで着陸を行いました。これもまた、宇宙飛行士の目視による判断の結果でした。

AGCの性能を、現代風に言い換えるとこんな感じです。CPUは合計5600個のNORゲートから成ります。動作クロックの基準になるのは2.048MHzのクロックで、これを4相の1.024MHzに分割して主クロックとしていました。ワード長は16bit、メモリはROMが36キロワード、RAMが2キロワードでした。バイトに換算するとROMが72KB、RAMが4KBとなります。AGCがサポートする周辺機器は、操縦桿やDSKYと呼ばれるディスプレイ/キーボード装置、その他数え切れないほどのスイッチ類がありますが、特徴はやはりロケットエンジンでしょう。司令船を動かすSPSや着陸船の着陸用、離陸用ロケットエンジン、姿勢制御用のRCSのすべてをコントロールできるのですから、ファミコンとの比較は無意味であると納得していただけるのではないかと思います。

Computer History Museumで見たDSKY

参考文献

アポロ着陸船がどのようにして着陸を行ったかを記した論文を、PDFで読むことができます。

冒頭ではGoogle Codeの記事を挙げました。着陸船のソースコードは次のリンクで読めます。

ソースコードのコメントを見ると、上記論文中に登場するフローチャートにある式が(多少変形されていますが)使われていることが分ります。

月着陸船のマニュアルもPDFで公開されています。

その他、本記事の執筆には以下のページを参考にしました。


1件のコメント

コメントは停止中です。