Космические баги. Семь знаменитых аварий, случившихся из-за компьютерных ошибок

Космическое пространство выдвигает наивысшие требования к надежности всевозможной техники. Малейшая неточность в расчетах, конструктивный дефект или неисправность даже незначительного компонента могут привести к катастрофе и многомиллионным потерям.

Mars Climate Orbiter. Источник: NASA

Но космические аварии происходят не только из-за проблем с «железом». Еще одной довольно распространенной причиной неудач являются ошибки в программном обеспечении. Для разработчиков такие инциденты гораздо досаднее технических дефектов. Ведь если конструктивные недостатки уже нельзя исправить после запуска, то в случае с софтом это не так, и аварии, связанные с ним, объясняются банальной невнимательностью и стремлением сэкономить время на дополнительные проверки.

В этой статье расскажем о семи самых известных космических авариях, причиной которых стали компьютерные баги. Они включают как случаи, произошедшие на заре космической эры, так и недавние инциденты.

Пропущенная черточка Mariner 1

В июле 1962 года США все еще существенно отставали от СССР в космической гонке и всячески пытались исправить ситуацию. Особенно большие надежды возлагались на Mariner 1. Он должен был стать первым в истории аппаратом, совершившим пролет Венеры. Однако ему даже не удалось выйти за пределы земной атмосферы. Вначале из-за сбоя в работе радиомаяка антенна ракеты Atlas потеряла связь с наземной системой наведения. В результате управление взял на себя бортовой компьютер. Двигатели носителя получили серию ошибочных команд, после чего он начал отклоняться от курса, и в конце концов из соображений безопасности его пришлось подорвать.

Запуск зонда Mariner 1. Источник: NASA

В ходе анализа инцидента выяснилось, что все произошло из-за одного пропущенного знака в программе управления. Пресса назвала его «самым дорогим дефисом в истории» (стоимость потерянного аппарата составляла 18,5 млн долларов, что с учетом инфляции сейчас эквивалентно примерно 160 млн долларов). Правда, если быть совсем точным, речь шла не о дефисе, а о пропущенной черточке над символом.

В любом случае потеря Mariner 1 наглядно продемонстрировала, как многое в космосе зависит от корректной работы программного обеспечения. Следует отметить, что следующий аппарат Mariner 2 сумел успешно добраться до Венеры и передать долгожданные научные данные.

«Фобос-1» и буква «В»

Советскому Союзу всегда не везло с Марсом: ни одна из организованных им миссий к Красной планете в 1960-1970 годах не смогла выполнить все поставленные задачи. В конце 1980-х СССР осуществил новую и, как стало понятно позже, последнюю в своей истории попытку добиться успеха, сделав ставку на пару зондов «Фобос», имевших идентичную конструкцию и являвшихся крупнейшими в то время аппаратами, отправленными в межпланетное пространство. Они должны были реализовать достаточно амбициозную программу по изучению Марса и его крупнейшего спутника.

«Фобос-1». Источник: АТ «НПО им. Лавочкина»

Однако менее чем через два месяца после запуска Центр управления полетами (ЦУП) потерял контакт с аппаратом «Фобос-1». Попытки восстановить связь были тщетны. В ходе расследования удалось установить, что, как и в случае с Mariner 1, все произошло из-за пропущенного символа — на этот раз буквы «В».

Дело в том, что система команд для наземных терминалов, управлявших «Фобосами», основывалась на восьмеричной системе, в то время как при составлении программ для бортовых компьютеров космических аппаратов отдельные параметры нужно было записывать в обычном для нас десятичном виде. Чтобы избежать путаницы, программисты ЦУП использовали букву «В» для обозначения восьмеричных чисел. 28 августа 1988 года один из инженеров отправил зонду команду на включение гамма-спектрометра. Однако из-за пропущенной в ней буквы «В» бортовой компьютер воспринял ее как команду на отключение системы ориентации. В результате автоматический разведчик отвернул свои солнечные батареи от Солнца, и его аккумуляторы быстро разрядились. Дальнейшие попытки спасти ситуацию не увенчались успехом.

Что касается «Фобоса-2», то ему все же удалось достичь Красной планеты и даже выполнить первый этап научной программы. Но из-за серии отказов и неисправностей различных компонентов ЦУП потерял связь и с ним.

Самый дорогой баг в истории

1996 год был весьма важным для ESA. Агентство готовилось представить миру новую тяжелую ракету Ariane 5, которая должна была вывести Европу на ведущие позиции на рынке пусковых услуг. 4 июня носитель оторвался от стартовой площадки и двинулся в небо. Первые 36 секунд полет проходил в штатном режиме. Затем ракета резко отклонилась от заданной траектории и через несколько секунд взорвалась на глазах ошеломленных контролеров

Взрыв Ariane 5. Источник: ESA

Гибель носителя нанесла большой удар по репутации ESA. Для расследования причин крушения была создана независимая комиссия. Довольно быстро она пришла к выводу, что все произошло из-за ошибок в софте. Дело в том, что на новой ракете использовалось программное обеспечение ее предшественницы, в которое не были внесены изменения, в то время как их профили полета сильно отличались.

Расследование установило, что вскоре после запуска программный модуль попытался рассчитать определенный параметр, исходя из горизонтальной скорости ракеты. Он оказался значительно больше штатного значения, установленного для Ariane 4. Поэтому при конвертации 64-битного действительного числа, описывающего горизонтальную скорость, в 16-битное итоговый показатель превысил максимально возможную величину, вызвав так называемое арифметическое переполнение. Поэтому бортовой компьютер выдал ошибочную команду двигателям ракеты, она пошла на нерасчетную траекторию и погибла

Потеря Ariane 5 до сих пор считается одной из самых дорогих компьютерных ошибок всех времен и народов. Суммарная стоимость ущерба составила около 500 млн. долларов. После публикации итогов расследования ESA отказалось от практики повторного использования программного обеспечения и внесло множество изменений в процедуры его диагностики. Следующий запуск носителя был произведен осенью 1997-го и также сопровождался проблемами, на этот раз связанными с двигателями. Первая успешная миссия новой ракеты состоялась только в 1998 году.

Жертва британской системы мер

1999 год должен был пройти для NASA под знаком Марса. В сентябре планировался выход на ареоцентрическую орбиту аппарата Mars Climate Orbiter (MCO). Его задачами являлись климатические исследования и ретрансляция сигналов зонда Mars Polar Lander, посадка которого должна была состояться в декабре того же года.

Mars Climate Orbiter. Источник: NASA

23 сентября MCO начал маневр, который должен был вывести его на промежуточную ареоцентрическую орбиту. Но вскоре стало ясно: что-то пошло не так. Связь с аппаратом прервалась раньше, чем планировалось, и восстановить ее больше не удалось.

Дальнейший анализ данных показал, что траектория полета зонда не соответствовала запланированной: он прошел на расстоянии всего 57 км от поверхности планеты и, по-видимому, сгорел в ее атмосфере. Но что же привело к столь грубой ошибке? Ответ ошеломил как специалистов миссии, так и широкую публику. Оказалось, что причина была в несоответствии двух систем измерения. В программном обеспечении наземных компьютеров использовалась британская единица (фунт-сила), а в бортовом компьютере MCO — ньютоны. Из-за этого противоречия аппарат и отклонился от заданного курса.

Похожая неудача постигла и Mars Polar Lander. Войдя в марсианскую атмосферу, он навеки умолк. По мнению специалистов, причиной этого тоже могла быть ошибка в программном обеспечении. Согласно одной из версий, когда аппарат выпустил посадочные опоры, в его корпусе возникли вибрации, воспринятые бортовым компьютером как касание поверхности. В результате зонд преждевременно выключил двигатель и разбился. Интересно, что программисты были проинформированы о такой возможности, но так и не внесли в софт никаких изменений, которые могли бы предотвратить возникновение подобной ситуации.

Гибель телескопа «Хитоми»

17 февраля 2016 года казалось днем триумфа для Японского агентства космических исследований (JAXA). Организация успешно вывела на околоземную орбиту телескоп «Хитоми» — крупнейший и сложнейший научный прибор в истории Японии. Он должен был дать старт эре рентгеновской астрономии страны. Но этого не произошло. Спустя 37 дней после запуска аппарат разрушился.

Телескоп «Хитоми». Источник: JAXA

Первоначально специалисты предположили, что телескоп столкнулся с микрометеоритом или фрагментом космического мусора, но впоследствии удалось установить, что все было гораздо сложнее. Проблемы начались с загрузки обновления программного обеспечения, содержащего неправильные данные о конфигурации оборудования. После того, как «Хитоми» выполнил плановый маневр, система стабилизации некорректно посчитала, будто бы он начал вращаться вокруг своей оси, и решила «исправить» ситуацию. Попытка прекратить вращение, которого не было на самом деле, привела к тому, что аппарат закрутило, он потерял ориентацию и вошел в безопасный режим.

Далее «Хитоми» попытался исправить свое положение, переориентировавшись в сторону Солнца с помощью главных двигателей. Это решение стало роковым. Из-за некорректной работы ПО телескоп начал вращаться еще быстрее. В результате центробежная сила просто оторвала все непрочно закрепленные и выступающие элементы, в том числе солнечные панели. После этого новый аппарат стоимостью 285 млн долларов уже было невозможно спасти.

Неудачная демонстрация Schiaparelli

Из числа марсианских разведчиков не только «Фобос-1», Mars Climate Orbiter и Mars Polar Lander погибли из-за ошибок в софте. В октябре 2016-го к ним присоединился демонстрационный модуль Schiaparelli.

Место падения Schiaparelli. Источник: NASA/JPL-Caltech/Univ. of Arizona

Этот аппарат входил в состав миссии Trace Gas Orbiter (TGO). Главным его заданием была отработка технологий входа в атмосферу и демонстрация возможности мягкой посадки на поверхность Марса. Если с первой частью программы модуль вполне успешно справился, то со второй возникли проблемы. За 50 секунд до ожидаемой посадки наземный ЦУП потерял сигнал, а несколько дней спустя американский аппарат MRO сфотографировал кратер, оставшийся на месте падения Schiaparelli.

Расследование установило, что после выпуска тормозного парашюта посадочный модуль начал вращаться с большой скоростью. Это привело к тому, что его инерционный измерительный блок (IMU) оказался перенасыщенным, то есть достиг предела измерительных возможностей и не мог показывать реальную скорость. Из-за некорректного поступления данных бортовой компьютер решил, что Schiaparelli уже опустился ниже уровня марсианской поверхности. В результате он преждевременно раскрыл парашют и ненадолго включил, а затем выключил посадочные двигатели. В тот момент аппарат находился на высоте 3,7 км, откуда он упал на поверхность со скоростью около 540 м/c.

Всех описанных выше событий можно было избежать, если бы в программное обеспечение модуля заложили процедуру проверки на столь очевидные ошибки. Кроме того, ситуация с перенасыщением IMU достаточно легко выявилась бы при дополнительных тестах. Однако по неизвестным причинам программисты миссии так и не удосужились их провести, что и привело к потере Schiaparelli.

«Цепная реакция» израильского лунного аппарата

В 2019 году зонд «Берешит» вошел в историю космонавтики как первый построенный на частные инвестиции космический аппарат, прибывший к Луне. Следует заметить, что он блестяще справился с большинством поставленных задач — успешно стартовал, а затем провел ряд маневров и вышел на селеноцентрическую орбиту. Но, к сожалению, аппарат не сумел покорить последнюю вершину: из-за программного сбоя он так и не осуществил мягкую посадку на лунную поверхность.

Место падения зонда «Берешит». Источник: NASA/GSFC/Arizona State University

В первые минуты снижения ничто не предвещало беды. Но на высоте 14 км от поверхности Луны произошел сбой в работе блока IMU. Сама по себе ситуация не была критической, поскольку аппарат обладал резервными измерительными системами. Один из операторов отправил зонду команду, которая должна была бы исправить ситуацию.

Однако на практике все пошло не так, как ожидалось. Из-за ошибки в софте команда запустила настоящую цепную реакцию сбоев, которые в итоге привели к выключению посадочного двигателя. В этой ситуации не оставалось ничего другого, кроме как выполнить перезагрузку бортового компьютера.

Это действительно помогло, и специалистам удалось снова активировать двигатель. Но, к сожалению, было уже слишком поздно. В момент повторной активации «Берешит» находился на высоте всего 149 м от поверхности, снижаясь со скоростью около 135 м/c. У него просто не осталось времени, чтобы затормозить. В результате он разбился о лунную поверхность, пополнив перечень космических аппаратов, погибших из-за ошибок программистов.

Только самые интересные новости и факты в нашем Telegram-канале!

Присоединяйтесь: https://t.me/ustmagazine