Аполлон 11 на Луне
Через пять месяцев Аполло 12 выжил после удара молнии при разгоне и сел на Луну. Благодаря новому «существительному 69», которое мы добавили в программу для того, чтобы позволить команде изменять положение, основываясь на данных наземного слежения, астронавты Пит Конрад (Pete Conrad) и Алан Бин (Alan Bean) смогли посадить лунный модуль в шаговой доступности от беспилотного корабля Surveyor, который сел на Луну в апреле 1967. Точная посадка Аполлона 12 проложила дорогу для посадок на более сложный рельеф местности.
Только после Аполлона 12 мы начали понимать другие серьёзные проблемы.
Я начал, когда Клинт Тилман (Clint Tillman) из Grumman Aerospace (компания, построившая лунный модуль), заметил колебания дроссельной заслонки при симуляции финальной стадии посадки, когда тяга двигателя была около 5%. Это побудило Тилмана изучить данные телеметрии Аполлонов 11 и 12, где он заметил колебания на финальной стадии посадки, имеющие амплитуду 25% от пика по пика (см. рис. 12). Это был период, когда командир корабля мог одновременно использовать переключатель ROD для управления скоростью снижения и джойстик для маневрирования кораблём. Поскольку графики этих данных напоминали крепостные стены и башни замка (или замковую гайку), эту проблему стали называть «дроссельной крепостью».
Рис. 11: Первый доклад о «дроссельной крепости»
Кламп в Кембридже описал источник возбуждения колебаний к неизвестному феномену, названному им «IMU bob»[18]. IMU был расположен над, и в четырёх футах спереди центра масс корабля. Маленькие, но быстрые манёвры, такие, как при финальной посадке, бросали корабль так, что акселерометры интерпретировали это как изменения вертикальной скорости корабля. Это, в свою очередь, влияло на вычисления вертикальной скорости, и на оценку необходимой силы тяги.
Но эта теория только частично объясняет поведение дроссельной заслонки, наблюдаемой в полётных данных.
Ракетные двигатели с дросселированием были и остаются редкостью, но дросселируемый двигатель был необходим.для мягкой посадки на Луну. Двигатель с фиксированной силой тяги и очень простые уравнения движения могут посадить корабль мимо нужной точки на лунной поверхности. Но чтобы сесть не вверх ногами, двигаясь плавно, держа место посадки в зоне видимости, и с возможностью зависнуть над местом посадки, понадобился двигатель, который мог бы уравновесить лунную гравитацию, изменяя тягу по мере уменьшения массы машины, и при изменении вектора тяги при манёврах, и когда астронавты хотели изменить скорость спуска.
Уравнения движения определяют, какое ускорение требуется придать аппарату, с какой величиной, и в каком направлении. Автопилот производит манёвры, чтобы сила тяги соответствовала заданному направлению. Задача программы управления дросселированием состоит в управлении силой тяги. Управление дросселированием начинается с вычисления массы лунного модуля. Зная массу, мы определяем величину коррекции дроссельной заслонки, требуемую для изменения ускорения корабля по отношению к измеренному акселерометрами до значения, которое необходимо для соответствия уравнениям движения, и конвертируем полученное значение в единицы, используемые дроссельной сборкой (около 2,8 фунтов на импульс), и посылаем их в аппаратный интерфейс.
Акселерометры в IMU на самом деле не измеряют ускорение, они измеряют приращение скорости относительно последнего считывания. Так как изменения дросселирования, при предыдущей итерации происходят в некоторый момент между считываниями акселерометров, измеренное delta-V не показывает полный эффект самого последнего изменения.
Рис. 12: Изменения дросселирования в течение фазы P66 полёта Apollo 12 [19]
Управление дросселированием должно было скомпенсировать этот эффект. Ряд компенсаций зависел от того, когда в течение периода была послана команда на дросселирование, и также зависел от скорости, с которой двигатель выполняет команды на дросселирование. Экспериментальные исследования установили, что дросселирование имеет задержку 0,3 с.
Это позволило автору запрограммировать и протестировать программу управления дроссельной заслонкой. На графиках симуляции точной модели DPS, использующей задержку 0,3 с, я наблюдал осцилляции реальной силы тяги, которые происходили после большого изменения положения дроссельной заслонки, без компенсации задержки дросселирования. Когда я включил компенсацию на 0,1 с, я увидел, как колебания уменьшились. Когда я установил компенсацию на 0,2 с, колебания практически исчезли. На этом всё кончилось. Кламп вспомнил, как я сказал: «это как лекарство, не нужно давать больше компенсации, чем это необходимо».
Кламп знал, что это не было «как лекарство», но он никогда не настаивал, чтобы я запрограммировал правильное значение. Объясняя свою мотивацию через 15 лет, Кламп пишет:
«Я думал, что важно воспитывать уверенность в себе, позволять коллегам принимать решения по мелким вопросам, даже если они не являются оптимальными. Поэтому я утаил свои мысли и оставил решение Дона в силе, по крайней мере, до тех пор, пока он не пересмотрит его самостоятельно»[20].
Объясняя собственные мотивы, я считаю, что я испытывал раздражение из-за компенсации в и так уже перегруженной программе дросселирования, и это, возможно, вылилось в желание сделать компенсацию как можно меньше. Как бы то ни было, и Аполлон 11, и Аполлон 12 пролетели с компенсацией 0,2 с при задержке дросселирования 0,3 с.
Но теперь и анализ Клампа[21], и независимый отчет, подготовленный Дж. А. Соренсеном (J. A. Sorensen) в Bellcomm[22], пришли к выводу, что «колебательный характер команды дросселирования P66, очевидно, был обусловлен тем, что фактическое значение постоянной времени двигателя посадки меньше, чем предполагалось» (Sorensen). Кламп перепроверил данные. Параметры двигателя посадки были улучшены, но соответствующие изменения не были внесены в документацию. Фактическая задержка для двигателя посадки составляла около 0,075 с. Оказалось, что мы даже перекомпенсировали её. В результате дроссельная заслонка была на грани стабильности.
Анализ Кламппа дал еще более поразительный результат. Он показал, что если бы программное обеспечение на Аполлоне 11 компенсировало 0,3 с, дроссельная заслонка была бы нестабильной. Колебания дроссельной заслонки, вместо того, чтобы успокоиться, стали бы больше. После дросселирования в P63 или, возможно, в P66 при возбуждении IMU, двигатель DPS быстро колебался бы между минимальной и максимальной тягой. Несомненно, что управление полетами вполне логично связывало бы поведение дроссельной заслонки с аварийными сигналами 1202, которые имели совершенно независимые причины.
Авария была бы неизбежна. По моему скромному мнению, если бы автор закодировал бы «правильное» значение в программе управления дроссельной заслонкой, Аполлон 11 никогда бы не сел. Я приглашаю кого-нибудь, кто не имеет личной заинтересованности и хорошо разбирается в математике, перепроверить эту теорию.
Ручное управление посадкой на Луну
* * *
Мы скорректировали задержку дроссельной заслонки, и симуляция показала, что неустойчивость положения дроссельной заслонки исчезла. Изменения были внесены в ПО миссии Аполлон 13, но эта миссия не совершала посадку на Луну.
Любопытно, что изменение в ПО Аполлона 13 было сделано до того, как о проблеме с дроссельной заслонкой стало известно, могло бы дать запасной вариант, если бы автоматика управления дроссельной заслонкой не сработала бы. Было определено новое «существительное 92», которое экипаж мог выбрать, чтобы увидеть уровень дросселирования, который выдаёт система управления. Логика, которая прекратила бы автоматическое управление, если бы дроссельная заслонка была переключена в режим MANUAL, была удалена. Эти изменения [23] позволяют астронавту управлять дросселем во время фаз P63 и P64, в то время как система управления продолжает управлять движением корабля. Я не знаю, использовались ли когда-либо эти сложные процедуры.
Проблема с алармами перегрузки Executive рассматривалась несколько раз.
Переключатель работы радара сближения был в положении LGC при взлёте. В последующих миссиях, чеклист был изменён. Мы добавили в LUMINARY логику для проверки режима работы радара сближения, и, если это не был LGC, счётчики радара сближения обнулялись.
Алан Кламп изучил проблему Executive с другой точки зрения. Он обнаружил, что когда TLOSS компьютера возникает периодически, или уровень активности компьютера изменяется в присутствии TLOSS, и задача SERVICER не завершена, и она была прервана в момент выполнения команд вычисления положения для отправки их автопилоту, т она не была очищена программным рестартом для того, чтобы быть восстановленной позже — при этих условиях имелась вероятность неверного вычисления положения для автопилота. К полёту Апполона 13 Кламп разработал решение, при котором вся работа SERVICER сбрасывалась, чтобы наверстать упущенное время, если это необходимо.
Фазы посадки на Луну
Но в будущем ни одно из этих изменений не освободило нас от ограничений фиксированного двухсекундного периода работы системы ориентации. Для выполнения посадки на сложной местности в программу работы с радаром необходимо было добавить модель рельефа местности. Модификации системы ориентации были оставлены на потом. У нас не было времени на всё.
Мы разрабатывали концепт, который мы называли «переменный SERVICER», в котором период программы ориентации мог увеличиваться при необходимости. Опасения, что двухсекундный интервал встроен в ПО намертво, оказались необоснованными. Необходимо было только измерять период работы системы ориентации, и использовать это значение вместо двухсекундного значения, которое используется всего в нескольких формулах. Мы реализовали рабочую версию SERVICER в оффлайновой версии LUMINARY, и продемонстрировали её очень высокую устойчивость к TLOSS [25].
Свобода от двухсекундного ограничения позволила рассмотреть и другие идеи. Астронавт Джон Янг (John Young) предложил улучшение, которое мы назвали P66 LPD. Но к этому времени P66 представляла собой гораздо более гибкую программу, чем в полёте Армстронга на Аполлоне 11. Одна из новых функций заключалась в том, что если команда переключала режим работы с ATT HOLD в AUTO, система ориентации приводила к нулю горизонтальную скорость. Идея Янга состояла в том, чтобы LGC отображал угол LPD (как в видимой фазе), который бы показывал командиру точку, над которой летит лунный модуль, если в этот момент автопилот переключен на AUTO[26].
Для обеспечения точности при выполнении этой функции ПО должно было реагировать мгновенно, когда астронавт переключился на AUTO, быстрее, чем за две секунды, и даже быстрее, чем это позволял секундный период, с которым работали некоторые части P66. Мы разработали версию, в которой задача запускалась каждые четверть секунды, проверяла изменение режима автопилота, посылала команды ориентации и дросселирования, и отвечал как можно быстрее и точнее на ввод от переключателя ROD. В пилотируемой симуляции, работающей на симуляторе лунного модуля (LM Mission Simulator, LMS) на мысе Канаверал, с его сказочными моделями рельефа, видимыми в окнах, мы показали, что эта система облегчает очень точную посадку.
Ни «переменный SERVICER», ни P66 LPD никогда не латали. NASA приняло решение, что Аполлон 17 будет последним. При таком небольшом количестве оставшихся миссий управляющий совет принял консервативное решение — никаких существенных изменений в посадочном программном обеспечении не должно быть. Синхронизировав данные, полученные от радара посадки, со считыванием показаний акселерометров, Роберт Ковелли (Robert Covelli) освободил достаточно времени, чтобы втиснуть туда модель рельефа местности для Аполлонов 15, 16 и 17.
Инерциальный модуль (IMU) в лаборатории MIT
Аполлон 14 принёс автору кратковременную славу. Переключатель прерывания на инструментальной панели посылал периодический сигнал, который мешал Алану Шепарду (Alan Shepard) и Эду Митчеллу (Ed Mitchell) сесть. Я написал код, который мониторит эти случаи. Этот «костыль» просто изменял несколько регистров, первый, чтобы обмануть монитор прерывания миссии, чтобы он думал, что прерывание уже произошло, а затем удалять себя, чтобы посадка могла продолжаться без последствий. Патч был передан по радио и введён в действие астронавтами безупречно, эта процедура включала в себя 61 нажатие клавиш на DSKY. Пожалуй, самой интересной частью инцидента с «Аполлоном 14» было количество различных версий этой истории. Но «Аполлон 14» — это уже другая история.
В декабре 1972 года я отправился на мыс Канаверал на запуск корабля «Аполлон-17». Этот космический полет был классным. Писатель Том Вулф (Tom Wolfe) вместе с фотографом Энни Лейбовиц (Annie Leibovitz) написал рассказ из четырех частей для журнала Rolling Stone, который был предшественником «Парни что надо» («The Right Stuff») [27]. Это был единственный ночной запуск «Аполлона». Туманное небо Флориды горит оранжевым цветом от горизонта к горизонту, когда огромный Сатурн V взлетел вверх на четвертьмильном столбе пламени, которое колебалось в конце, как пламя паяльной лампы.
Я провёл несколько дней, тестируя некоторые функции LMS, которые мы называли «программирование стираемой памяти». Это были патчи, которые должны были использовать неиспользуемые VAC и патчить некоторые ошибки, наследие инцидента с Аполлоном 14. Затем я полетел в Кембридж, наблюдать посадку.
После этого я с удовольствием послушал, как Джин Сернан (Gene Cernan) и Джек Шмитт (Jack Schmitt), геолог по образованию, исследовали Луну в лунном ровере, пройдя более 3 миль вне поля зрения космического корабля. И это был последний раз, когда кто-то ходил по Луне.
Рис. 13: Некоторые из участников.
Большое фото, передний ряд: Vince Megna, «Doc» Charles Stark Draper, автор, Dave Moore, Tony Cook; задний ряд: Phil Felleman, Larry Berman, Allan Klumpp, Bob Werner, Robert Lones, Sam Drake. Маленькое фото, передний ряд: Larry Berman, Peter Volante, the author; задний ряд: Sam Drake, Bruce McCoy. Также участниками событий были отсутствующие на фото Steve Copps, Romilly Gilbert, Ken Goodwin и Russ Larson.
Ссылки
[1] Klumpp, A. R.; «Apollo Lunar Descent Guidance»; MIT Charles Stark Draper Laboratory, R-695; June, 1971.
[2] Cherry, G. W.; «E-Guidance — A General Explicit, Optimizing Guidance Law for Rocket-Propelled Spacecraft»; MIT Instrumentation Laboratory, R-456; August, 1964.
[3] Brooks, Courtney G., et al; «Chariots for Apollo, A History of Manned Lunar Spacecraft»; NASA; 1979.
[4] Silver, George; private communication; 2004.
[5] Hall, Eldon C.; «Journey to the Moon: The History of the Apollo Guidance Computer»; AIAA, 1996.
[6] Blair-Smith, Hugh; «Block II Instructions»; MIT Instrumentation Laboratory, AGC4 Memo 9; July 1, 1966.
[7] Muntz, Charles A.; «User's Guide to the Block II AGC/LGC Interpreter»; MIT Instrumentation Laboratory, R-489; April 1965.
[8] Apollo 11 Downlink Data.
[9] «Apollo 11 Technical Crew Debriefing»; NASA, July 31, 1969 [Debriefing].
[10] «Apollo 11 Technical Air-to-Ground Voice Transcription»; NASA, July 1969 [Voice].
[11] Voice.
[12] Debriefing.
[13] «Apollo 11 Mission Report»; NASA, SP-238.
[14] Debriefing.
[15] Debriefing.
[16] Voice.
[17] Klumpp, A.; untitled memo regarding real-time plot for monitoring computer activity; MIT Charles Stark Draper Laboratory, April 9, 1970.
[18] Klumpp, A. and Kalan, G.; «Elimination of Noise and Enhancement of Stability and Dynamic Response of the Apollo LM Rate-of-Descent Program»; MIT Charles Stark Draper Laboratory, E-2543, October 1970 [Noise].
[19] Noise.
[20] Klumpp, Allan; private communication; 1985.
[21] Noise.
[22] Sorensen, J. A.; «Linear Stability Analysis of LM Rate-of-Descent Guidance Equations»; Bellcomm Inc., B70 06074, June 25, 1970.
[23] Tindall, H.W. and Garman, Jack; «Remove check of Auto Throttle Discrete»; LUMINARY 1C Program Change Request (PCR) 285, September 30, 1969.
[24] Eyles, D.; «Prevent RR ECDUs from Stealing LGC Memory Cycles»; LUMINARY 1B PCR 848, July 23, 1969.
[25] Eyles, Don; «Description of Variable Servicer»; MIT Charles Stark Draper Laboratory, Luminary Memo 139, March 3, 1970.
[26] Eyles, Don; «Apollo LM Guidance and Pilot-Assistance During the Final Stage of Lunar Descent»; MIT Charles Stark Draper Laboratory, E-2581; May 1971.
[27] Wolfe, Tom; «Post-Orbital Remorse»; Rolling Stone; January 4, 1973.
[2] Cherry, G. W.; «E-Guidance — A General Explicit, Optimizing Guidance Law for Rocket-Propelled Spacecraft»; MIT Instrumentation Laboratory, R-456; August, 1964.
[3] Brooks, Courtney G., et al; «Chariots for Apollo, A History of Manned Lunar Spacecraft»; NASA; 1979.
[4] Silver, George; private communication; 2004.
[5] Hall, Eldon C.; «Journey to the Moon: The History of the Apollo Guidance Computer»; AIAA, 1996.
[6] Blair-Smith, Hugh; «Block II Instructions»; MIT Instrumentation Laboratory, AGC4 Memo 9; July 1, 1966.
[7] Muntz, Charles A.; «User's Guide to the Block II AGC/LGC Interpreter»; MIT Instrumentation Laboratory, R-489; April 1965.
[8] Apollo 11 Downlink Data.
[9] «Apollo 11 Technical Crew Debriefing»; NASA, July 31, 1969 [Debriefing].
[10] «Apollo 11 Technical Air-to-Ground Voice Transcription»; NASA, July 1969 [Voice].
[11] Voice.
[12] Debriefing.
[13] «Apollo 11 Mission Report»; NASA, SP-238.
[14] Debriefing.
[15] Debriefing.
[16] Voice.
[17] Klumpp, A.; untitled memo regarding real-time plot for monitoring computer activity; MIT Charles Stark Draper Laboratory, April 9, 1970.
[18] Klumpp, A. and Kalan, G.; «Elimination of Noise and Enhancement of Stability and Dynamic Response of the Apollo LM Rate-of-Descent Program»; MIT Charles Stark Draper Laboratory, E-2543, October 1970 [Noise].
[19] Noise.
[20] Klumpp, Allan; private communication; 1985.
[21] Noise.
[22] Sorensen, J. A.; «Linear Stability Analysis of LM Rate-of-Descent Guidance Equations»; Bellcomm Inc., B70 06074, June 25, 1970.
[23] Tindall, H.W. and Garman, Jack; «Remove check of Auto Throttle Discrete»; LUMINARY 1C Program Change Request (PCR) 285, September 30, 1969.
[24] Eyles, D.; «Prevent RR ECDUs from Stealing LGC Memory Cycles»; LUMINARY 1B PCR 848, July 23, 1969.
[25] Eyles, Don; «Description of Variable Servicer»; MIT Charles Stark Draper Laboratory, Luminary Memo 139, March 3, 1970.
[26] Eyles, Don; «Apollo LM Guidance and Pilot-Assistance During the Final Stage of Lunar Descent»; MIT Charles Stark Draper Laboratory, E-2581; May 1971.
[27] Wolfe, Tom; «Post-Orbital Remorse»; Rolling Stone; January 4, 1973.
dom1n1k
Зачем было статью вполне разумного размера разбивать аж на три части, идущие подряд?
32bit_me Автор
Я считаю разумным размером 20-25 К знаков, вся статья содержит >60K. Разумеется, я могу ошибаться.