Космічні баги. Сім знаменитих аварій, що сталися через комп’ютерні помилки

Космічний простір висуває найвищі вимоги до надійності будь-якої техніки. Найменша неточність у розрахунках, конструктивний дефект або несправність навіть незначного компонента можуть призвести до катастрофи та багатомільйонних втрат.

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