ftまで降下と同時に船の角度を92°から50°に引き上げます。ここで初めてパイロットは直接着陸地点を見れるようになります。Phase降下地点を見極めて着陸。Phaseを過ぎると"着陸を中止する"という選択肢が無くなります。それはそれ以降致命的な故障が起きると二度と帰ってこれなくなることを意味していました。この中で各プログラムはどのような動きをしているのか。まとめてみた表が以下になります。着陸確認プログラム冒頭のp68のコメントアウト行は着陸動作を全て終了して初めてたどり着くんですね。気になりましたどうやって着陸地点を確認しているんでしょうか。HUDもない時代です。これは着陸船の窓の図です。何か目盛りがあるのが見えると思います。プログラムに与えられた数値をみて照準を合わせると月の一点に定まるんだとか。Designator)と書いてますがほぼ完全に目視なんですね。p65のプロセスの任意のタイミングで飛行士が自由に使用できるようになっています。このような形で人に任せたのは当時の技術だと月の表面をみてから動的に着陸を判断することができなかったからなんですね。着陸地点の選定も周回軌道から撮影した写真が根拠でしかないので着陸時に初めて障害物を見つけるということも想定されていました。アポロの着陸脚は重量制限のため非常に脆弱で、少しでもかたむく・乗り上げることは月から脱出できなくなることを意味していました。着陸地点のクレーターをp66を使用して一度上昇回避しています。下の高度記録の102:44あたりのがまさにそうですね。これが1201&1202エラーか。!!(一人大興奮)なにそれ?アポロ11号の着陸中に起きた2つのエラーのことです。アポロ11号の実際の着陸プロセスが以下になります。10秒に1回くらい警報が鳴り続けている中、無視して降下したことがわかると思います。当時の通信(ログ付きなのでこれがわかりやすい気がします。)を聞くとアームストロングが1202について教えてくれって言っていますね。地上からは結局教えてくれないんですが。1202と1201は調べてみるとシステムオーバーフローのエラーなようです。システムオーバーフローするとAGCは再起動をかけるようになっています。1分に1回再起動しながら月に着陸するの、恐ろしすぎますね。実はアラームがなった時点で着陸中止臨界点が3分後に迫ってきていました。着陸中止かどうかを数十秒のうちに決断しなければなりませんでした。NASAのチーフソフトウェアエンジニアはAGCにはタスクを優先順で処理する機能が備わっているため(1960年代にこんなことできている時点で凄いのですが)着陸自体に影響はないと考え、数秒のうちにgoサインを出しました。それで着陸は無事に成功したわけです。どちらも本当に凄いですね(語彙力)ちなみに調べたところ、理由はハードウェア由来だったようです。それによるデータの過剰な入力によるものだったそうです。カ、カルマンフィルターだー!!!KALMAN_FILTER.agcなるファイルを発見。世界最古のカルマンフィルターです。カルマンフィルターを適用し、実装したのはスタンリー・シュミットというNASAの技術者で当時どのように航法システムを開発したのかが回顧録として公開されています。カルマンフィルターの開発経緯もしこれを解決するのに必要な努力量を我々が正確に理解していたら、多分考え直したと思う(笑)とはシュミットの弁です。航法・誘導をするためにもっとも重要な事は何でしょうか。それは「自分の乗っている正確な軌道を観測データから計算する」ことです。地上からアポロ宇宙船を観測して位置を特定するだけでは大気の影響を受け非常に大きな誤差が出てしまいます。軌道変更を正確に行うにはリアルタイムで位置を把握しながら10ミリ秒単位でエンジンの点火と停止を行わなければなりません。以上の理由からどうしても宇宙船自身で位置を読み取り、軌道を計算する必要がありました。Unit)というセンサーがアポロにはついており、ここから加速度やジャイロセンサーの値が入ってきます。IMU自体に蓄積される誤差は定期的に宇宙飛行士が望遠鏡を月と太陽に向けて補正していたようです。ところどころアナログになるのが本当に1960年代という感じがします。それでこの観測データをどう評価するのかということになります。当時のNASAのコンピューターは非常に貧弱で、この値を積分し続けて近似曲線を引くには数時間かかります。数時間かかるどころかパンクの恐れすらあります。当時NASAに軌道計算できるコンピューターはこの1台しかありませんでした!つまりミッション中に万が一こいつがパンクすると。あとはおわかりですね。組み込みで実現できるようなものではありませんでした。(最小二乗法などはことごとく不可能だったわけです。)ここでNASAは統計的にフィルタリングすることによって誤差を取り除こうとします。実際にウィーナーフィルターを使用した研究が走っており、レーザー誘導ミサイルの制御で大きな成果を上げていました。ウィーナーフィルターは定常性を仮定し過去のデータが全て分かっている場合に初めて有効になります。確かにミサイルの軌道は着弾まで変わりませんが、宇宙船は道中で軌道を変更する必要があります。データが途中で脱落する可能性もあります。シュミットはこの手法では開発できないと考えていました。」なる論文を目にするわけです。ウィナーフィルターの制約条件である定常性と無限時間観測の仮定を取り除いたカルマンフィルターをソフトウェアに組み込むために、シュミットはカルマンをJPLに呼びました。1959年の暮れの事です。実はこの時カルマンは自分がなぜJPLに呼ばれたのか全く知らなかったという事です。2回目のミーティングでカルマンは現在の観測点周りで線形化する事により非線形モデルに適用するアイデアを思いつきます。これが現在拡張カルマンフィルターと呼ばれているものです。してこうして精度が向上し無事にアポロ宇宙船に乗ったのでした。詳しく知りたい方は資料にリンク貼ったので見てみてください。Wizard」じゃないかなと思っているのですがどうでしょうか。:これ書いた人は調べてみると当時23歳だったそうです。これ僕と同い年の人がやってたんかと思うと震えますね。チームの中でも若かったですしちょっと意味深なコメントとかも入れてたのでしょうか。ちなみにBURN_BABY_BURNなる単語、調べてみると60年代に流行ったDJの決め台詞なんだとか。PINBALL_GAME_BUTTONS_AND_LIGHTS.agcファイル名が完全にふざけていますね。月に着陸することをピンボールゲームといったとか。プログラム自体はUIルーチンを担当しているようです。シェークスピアの引用箇所を見つけました。おわりに伝えたかったのは以下の3つ。宇宙に興味を持ってくれる人がいたらそれはとっても嬉しいなって。完全にストーリーも何もなくただふらふらと興味の赴くままに書くだけのアレになってしまいました。来年度書く機会があったらちゃんと技術系の話をしよう。参考文献https://github.com/chrislgarry/Apollo-11ソースコードのリンクです。https://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19860003843.pdf拡張カルマンフィルター開発者のシュミットがいかにApolloの制御に苦しんだかのお話です。programsここでは海外大学院受験において僕の得た知見を残していきたい...2017-12-23NASAの公開データに触れて宇宙を描こう。NASAの公開データに触れて宇宙を描こう。programsNASAの公開データに触れて宇宙を描こう。〜SPICEの解説〜apollo11号のソースコードを読みつつ月別アーカイブはてなブログをはじめよう!aerith7さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。