Код доступу до зірок: як програми допомогли нам підкорити космос

Космічні місії були б неможливими без комп’ютерних технологій. Починаючи з бортового комп’ютера наведення, який першим досяг орбіти 1965 року в межах американської космічної програми Gemini (предтечі Apollo), цифрові технології стали невід’ємною частиною процесу підкорення космосу. У пілотованих польотах вони відповідають за контроль систем життєзабезпечення екіпажу, навігацію, стикування, зліт та посадку. Роботизовані марсоходи і космічні зонди, які вже встигли покинути нашу Сонячну систему — нічого цього не було б без участі нулів та одиниць.

Джерело: IBM

У цій статті ми розповімо, як цифровий комп’ютер втілив у реальність те, про що люди навіть і не мріяли, коли наприкінці 1950-х відправляли у космос свої перші аналогові радіопередавачі.

Перший комп’ютер, що досяг орбіти: історія Gemini Guidance Computer

Коли 5 травня 1961 року космічний корабель Mercury Freedom 7 вперше доставив американського астронавта за межі атмосфери, у NASA всерйоз перейнялися необхідністю створення бортового комп’ютера для автоматизованого контролю й управління майбутніми польотами. Контроль над місією Mercury здійснювався за допомогою наземних комп’ютерів, встановлених у центрі управління польотами NASA. Другий американський проєкт із запуску людини в космос, який отримав назву Gemini, гостро потребував принципово нового ступеня автоматизації.

Джерело: IBM

Бортовий комп’ютер дозволив би заощадити час астронавтів, перебравши на себе більшість функцій із навігації, коригування курсу, пілотування та контролю аварійних систем. Але оскільки на початку 1960-х комп’ютери займали площу спортзалу — Hello, UNIVAC! — інженерне завдання відразу ж перейшло у розряд непростих. Необхідно було якимось чином зменшити розмір комп’ютера, водночас не втративши його продуктивність.

Рішень було декілька. Перше полягало у розподілі обчислювальних потужностей між двома комп’ютерами — бортовим і наземним. Останній, створений на базі IBM 7090s (і пізніше IBM 7094s), мав розташовуватись у Центрі управління польотами NASA і відправляти на легкий бортовий комп’ютер дані про рух космічного корабля, отримані з наземних радарних станцій спостереження, та допомагати астронавтам з проведенням орбітальних маневрів.

У NASA розуміли: щоб зробити комп’ютер досить компактним для космічних подорожей, доведеться повністю відмовитися від аналогових технологій обчислення на користь цифровізації. Результатом цього став перший цифровий послідовний комп’ютер — Gemini Guidance Computer (GGC).

Вигляд значно гірший за ваш старий системник. Утім, унікальне інженерне рішення GGC дозволяло суттєво заощадити місце на борту космічного корабля — маса пристрою становила лише 26,75 кг. Джерело: ids.si.edu

Бортовий цифровий комп’ютер створили з урахуванням бітової послідовної архітектури. Gemini обладнали унікальним для свого часу типом пам’яті з феритовим осердям. Ця технологія дозволяла йому зберігати невеликі обсяги даних, які пізніше використовувалися для обчислень. У комп’ютері також був реалізований зворотний зв’язок із оператором: астронавти могли втручатися в роботу GGC, перемикаючи командні режими за допомогою джойстика-маніпулятора.

Бортовий комп’ютер Gemini відповідав за виконання одного з чотирьох основних режимів роботи:

  • Підйом (Ascent) — режим резервної системи наведення космічного корабля, активація здійснювалася членами екіпажу.
  • Орбітальний політ (Orbital flight) — режим дозволяв у найкоротші терміни розрахувати аварійне місце посадки капсули та здійснити повторне запалювання двигунів для виконання орбітального маневру.
  • Рандеву (Rendezvous) — основний режим орієнтації космічного корабля, що надавав астронавтам дані щодо його орбітальних координат, керуючись інформацією, отриманою з наземних станцій стеження та власних навігаційних датчиків.
  • Повторний вхід (Reentry) — режим допомагав виконувати вхід в атмосферу Землі в режимі автопілота і надавав астронавтам актуальну інформацію для здійснення пілотованої посадки.

Одним із вагомих недоліків першого комп’ютера Gemini була відсутність безвідмовності та системи резервування, які з’являться вже у наступних поколіннях бортових комп’ютерів. Системи резервного копіювання даних були необхідні у разі відмови основної системи, що могла вийти з ладу через екстремальні перевантаження під час запуску ракети чи внаслідок тривалого впливу космічної радіації. У космічних місіях двох зондів Voyager, запущених й 1970-х роках, інженери NASA досягли того, що всі комп’ютерні системи кожного з них мали подвійне резервування й містили свою повну апаратну та програмну копію.

Космос для кожного

Магазин від Universe Space Tech

Комплект журналів Сонце та Місяць

До товару
Комп’ютерна система Actor-Judge, встановлена на ракеті Falcon 9 і кораблях Dragon компанії SpaceX, має потрійне резервування. Іноді NASA використовує навіть чотири резервні системи
На фото: астронавти Даглас Гарлі та Роберт Бенкен знайомляться з сенсорним інтерфейсом комп’ютерів космічного корабля Crew Dragon. Джерело: SpaceX/NASA

Бортовий комп’ютер Gemini став нехай не ідеальним, але першим у своєму роді цифровим комп’ютером, що досяг орбіти. Вже у наступних місіях NASA Apollo його досвід використали для створення більш потужних і досконалих комп’ютерних систем навігації й орієнтування у просторі.

Як доставити людей на Місяць, якщо ти калькулятор?

Наступником Gemini Guidance Computer став Apollo Guidance Computer (AGC) — перший цифровий комп’ютер, повністю створений на основі інтегральних кремнієвих схем. Легкі транзистори, припаяні до кремнієвої плати, допомогли суттєво зменшити масу обчислювальної машини та відкрили дорогу для повноцінного переходу від аналогових до цифрових комп’ютерів.

Система зворотного зв’язку з оператором отримала назву DSKY, а її фізичний модуль був більше схожий на калькулятор, ніж на комп’ютер, здатний доставити людей за майже 400 тис. км від Землі. Джерело: NASA/Dennis Taylor

AGC був першовідкривачем у багатьох підходах. Він мав перший у світі графічний інтерфейс користувача (GUI) та був обладнаний дисплеєм і клавіатурою, за допомогою яких оператор-астронавт міг взаємодіяти з обчислювальною машиною. На базі цього згодом побудовано цілу програмну методику Human-in-the-loop (HITL), що дозволила оператору-людині безпосередньо втручатись у програмні цикли комп’ютера.

Спілкування астронавтів із комп’ютером було організовано за принципом введення двозначних числових команд, де перша цифра називалася «дієслово» (verb) і вказувала на команду-дію, яку мала виконати електронно-обчислювальна машина, а друга — «іменник» (noun), що давав їй зрозуміти, до якого масиву даних має бути застосована ця дія. Кожна команда, яку міг виконувати AGС, маркувалася супутнім числовим кодом.

Набір команд, які вмів виконувати AGС (вгорі «дієслова», внизу — «іменники»). Джерело: wikipedia

Окрім успішної реалізації першого у світі графічного інтерфейсу користувача, AGС був справжнім дивом автоматизованої навігації — пам’ятаємо, що він проєктувався для того, щоб доставляти людей на Місяць і безпечно повертати їх на Землю.

Для реалізації цього завдання творець AGC Чарльз Старк Дрейпер вдався до свого колишнього досвіду розробки ранніх ракетних систем протиповітряної оборони, які працювали у зв’язці з наземними радарами виявлення цілі. Ці технології, розроблені ще у 1950-х роках, впевнено виконували дві речі: виявляли ворожі літаки та наводили на них зенітні ракети. Дрейпер запропонував використати ці підходи для організації першого пілотованого польоту на Місяць, після чого у стінах Instrumentation Laboratory Массачусетського технологічного інституту (MIT) розпочалася робота зі створення першого робочого прототипу, яка завершилася вже до 1966 року.

Авіоніка AGC була здатна розраховувати курс космічного апарата, постійно отримуючи оновлені дані про його інерційну швидкість, положення у просторі, курсову траєкторію, швидкість руху Місяця та інших об’єктів, що виступали орієнтирами. Важливо розуміти, що ці об’єкти перебували у постійному русі відносно Apollo. Цих змінних було так багато, що астронавт просто не міг пілотувати корабель, керуючись лише візуальними спостереженнями. Кожна помилка могла призвести до відхилення від курсу та коштувати життя всім членам екіпажу.

Мабуть, єдина річ, яку не міг виконати AGC, була посадка місячного модуля (LM) на поверхню нашого природного супутника — цим завданням астронавти Apollo займалися в ручному режимі.

Комп’ютер AGC був не єдиним цифровим пристроєм, що брав участь у місіях Apollo. Він доповнювався двома допоміжними комп’ютерами:

  • LVDC (Launch Vehicle Digital Computer) — навігаційний комп’ютер, яким було обладнано Saturn V, ракету-носій космічного корабля Apollo. Він відповідав за стабілізацію ракети під час старту, а також контроль її курсової траєкторії до моменту виходу на задану орбіту.
  • AGS (Abort Guidance System) — резервний комп’ютер, який передбачалося використати в разі відмови основної системи наведення, навігації та контролю. Ця система могла навіть здійснювати автоматизований зліт місячного посадкового модуля (LM) та провести його стикування з командним модулем (CM) космічного корабля, який перебував на навколомісячній орбіті.

Комп’ютерна система наведення та навігації Apollo могла паралельно виконувати кілька вихідних процесів. Маючи пам’ять з довжиною слова всього 16 біт (15 біт даних і 1 біт парності, що захищав кожне слово пам’яті), сьогодні AGC навряд чи зміг би хоча б набрати пост у вашому твіттері. Втім, грамотний розподіл ресурсів цифрової машини та унікальна програмна логіка (про яку йтиметься нижче) зробили його невід’ємною частиною більшості місій Apollo, абсолютним тріумфом серед яких стала доставка людей на Місяць у межах місії Apollo 11. Її успіх назавжди зруйнував усі песимістичні застереження цифрових скептиків, серед яких, зокрема, було чимало астронавтів NASA — вони банально побоювалися довіряти своє життя кремнієвій платі з транзисторами, що розуміла лише двійковий код.

Комп’ютер наведення Apollo також був присутній у двох ідентичних копіях: одна встановлювалася в LM, інша — в CM. Джерело: NASA

З цього моменту майбутнє космонавтики було просто неможливо уявити без впровадження у процес дослідження космосу цифрових обчислювальних технологій. AGC виготовили у 42 примірниках, вартість кожного з яких становила 200 тис. долларів.

Програмний код AGC: зрозуміти і пробачити

Слід згадати ще одну унікальну особливість, характерну для бортових комп’ютерів, що використовувалися в місіях Gemini та Apollo — мову програмування та операційну систему (ОС). Перелік вузькопрофільних завдань, які мала виконувати AGC, підштовхнув інженерів NASA до ідеї створення оригінальної ОС, написаної з нуля. Вибір був за малим — обрати мову програмування, якою вона буде написана.

На початку 1960-х років на FORTRAN програмувалися комп’ютери IBM, зокрема й розташовані в Центрі управління польотами NASA. Джерело: NASA

Мова FORTRAN (перші програми якою писалися ще на перфокартах у 1950-х), здавалося, була ідеальним претендентом на те, щоб використати її для космічних місій. Проте для місячної місії її розцінили надто молодою, а отже — ненадійною. Зараз у це важко повірити, але на початку 1960-х безліч тямущих програмістів у NASA не побачили (або не захотіли побачити), що саме FORTRAN і похідні від неї мови (BASIC, ALGOL) домінуватимуть у програмуванні наступні десятиліття. Однак коли це все ж сталося, NASA охоче застосувала її у своїх майбутніх місіях. Саме на FORTRAN 5 написано багато скриптів для Voyager 1 і Voyager 2.

Реалізувати завдання зі створення ОС для AGC взялася команда інженерів програмного забезпечення під керівництвом Альберта Гопкінса та Гела Леннінга. Останній використовував низькорівневу мову асемблера для написання програм під цю операційну систему. Відмова від високорівневих мов програмування була свідомою — програмісти боялися перевантажити машини надто важким кодом.

Джерело: IBM

Операційна система реального часу (RTOS) AGC використовувала унікальні для свого часу принципи пріоритетного планування та кооперативної багатозадачності. Кожен набір коротких команд міг перериватись і відправлятись у «список очікування», там же вони могли бути заплановані для виконання нового циклу команд або створення цілого ланцюжка програмних дій, заданих оператором.

Сподобався контент? Підписуйся на нашу спільноту і отримуй більше про космос Друковані журнали, події та спілкування у колі космічних ентузіастів Підписатися на спільноту

Леннінг і його команда, по суті, з нуля винайшли більшість підходів, які є у програмуванні сьогодні. Методи, вперше застосовані у RTOS AGC, надалі призведуть до створення більш стабільних багатозадачних операційних систем із пріоритетним плануванням і методами асинхронного програмування.

1965 року до програми Apollo приєдналася молода, але дуже талановита програмістка — Маргарет Гемілтон. Саме під її керівництвом написані програмні пакети COLOSSUS для командного модуля космічного корабля Apollo (створений Фредеріком Мартіном) і LUMINARY для місячного посадкового модуля (створений Джорджем Черрі).

Маргарет Гемілтон і дюжина томів програмного коду, який її команда написала для місій Apollo. Джерело: wikipedia

Операційна система AGC уперше була протестована 1966 року, а вже за два роки, під час грудневої місії Apollo 8, NASA повністю передала контроль над управлінням космічним польотом цифровому комп’ютеру на базі RTOS.

У своїх подальших космічних дослідженнях NASA ще неодноразово робитиме ставку на впровадження операційних систем із дедалі більшим нахилом у бік багатозадачності. Такий підхід, зокрема, використовуватиметься в місіях марсіанських роверів.

Автор: Олексій Жиров, журналіст

Ця стаття була опублікована у №1 (189) 2023 року журналу Universe Space Tech. Придбати цей номер в електронній версії можна у нашому магазині.

Новини інших медіа
Сяючі кулі та свідчення очевидців: Пентагон розкрив нові таємниці НЛО
Рідкісний метеорит містить докази катастрофи на Місяці
Тиск на працівників вартував NASA збитків на 4,6 млн доларів
SpaceX поглинає стартап Cursor за рекордну суму
Темні галактики можуть існувати в околицях Чумацького Шляху
Чорні діри породжують радіоспалахи після розривання зір на частини
До Землі наближається потенційно небезпечний астероїд вперше за 400 років
Чи ховаються іншопланетні зонди у нас під боком? Нове дослідження свідчить, що ми майже не шукали їх
На океанському дні знайшли сліди плутонієвого дощу від стародавньої кілонової
Як Жуль Верн передбачив місію Artemis II за 160 років до її старту