В невесомости не проводят код-ревью — однако любой баг может оказаться фатальным. Рассказываем о нелегкой профессии «космического программиста»
Прошло время, когда спутники просто красиво летали и делали «пип-пип-пип». Сегодня спутник — это настоящий сервер в космосе, а само безвоздушное околоземное пространство пронизано высокоскоростными каналами связи (даже на МКС есть полноценный вай-фай).
Управлять спутниками — сложно, здесь требуется труд сотен программистов. Только для удержания спутника на заданной орбите требуется обработать массу информации с различных датчиков — ориентации, скорости, магнитного поля. Кроме того, спутники не просто летают, они выполняют полезную работу. Например, служат ретрансляторами в системах связи, фотографируют Землю, ведут радиоразведку.
Вот для чего ещё нужны программы:
Для управления полётом ракеты и вывода спутника на орбиту. Небольшой баг в расчётах может привести к аварии и выходу оборудования из строя.
Для использования в ЦУПе, Центре управления полётами. Здесь моделируют ситуации и ищут пути их решения. Например, тестируют разворот спутника в космосе.
Для обработки данных, полученных от спутника. Например, почти в каждом смартфоне есть программы навигации, умеющие обрабатывать сигнал от спутников. Если спутник ведёт фотосъёмку, то нужны программы для обработки спутниковых изображений.
Радиоактивное излучение в космосе легко может вывести из строя оборудование на основе массовых электронных плат. Поэтому в спутниках используют специальные защищённые микросхемы. Соответственно, программирование усложняется.
На каких языках пишут программы в Роскосмосе, NASA и SpaceX
Старейшие организации, работающие в космосе, весьма консервативны. За последними выпусками современных языков здесь никто не гонится. В космической отрасли чаще используют простые и низкоуровневые языки. На спутниках ограничена мощность процессоров, а в микросхемах небольшая оперативная память — и ПО должно быть как можно более энергоэффективным.
Основной язык разработки в Роскосмосе — ДРАКОН, «Дружелюбный русский алгоритмический язык, который обеспечивает наглядность». Его создали ещё в Советском Союзе. В его основе лежит язык ПРОЛ2, который используют для разработки бортовых программ, а также ДИПОЛЬ для наземных испытаний и ЛАКС для моделирования. По сути, ДРАКОН — это не полноценный язык для программирования, а система для создания блок-схем. Вы можете сами попробовать составить на нём какую-либо схему. ДРАКОН поддерживает JavaScript, Python или C++, вместе с которыми образует гибридные языки, например ДРАКОН-Python. В NASA ещё в 2000-х годах писали код в основном на Assembler. Это низкоуровневый язык программирования, представляющий собой машинный код. Для работы спутников использовались микросхемы 70-х годов, которые программировали как раз на ассемблере.
Был также специальный язык программирования для космоса — ADA. Это один из старейших языков высокого уровня, предназначенный для автоматизации управления процессами, например, в бортовых компьютерах. Сейчас он устарел и используется редко.
Большинство программ NASA пишется на C. В том числе, известный марсоход Curiosity программируется на «Си», даже без «плюсов». Но также иногда используются C++ (для визуальной навигации) и Fortran (для управления оборудованием на Земле). NASA пыталось уйти от такого «зоопарка» языков программирования, но из-за разного оборудования достичь этого пока не удалось.
Космические компьютерные технологии — иллюстрация басни про лебедя, рака и щуку. С одной стороны, спутникам и межпланетным аппаратам нужны новейшие приборы и камеры. А с другой стороны всё это работает на старой-доброй аппаратной и кодовой системе 20-летней давности (ведь это оборудование проверено многократно).
У SpaceX, в отличие от старых космических гигантов, более современный подход к программированию. Здесь в основном используют C++: его называют универсальным и применяют для разработки роботов, систем дистанционного управления и космических ракет. C++ потребляет больше ресурсов, чем тот же C, но компания активно внедряет массовые процессоры и серверы, которые мощнее специальных космических. Для повышения надёжности вместо одного сервера управления используется три, каждый из которых может работать самостоятельно. Также в SpaceX пишут на JavaScript — например, интерфейс на мониторах в Crew Dragon, — а для тестирования используют Python.
Какие казусы бывают из-за багов
4 июня 1996 года ракета-носитель Ariane 5 взорвалась в космосе. Были уничтожены четыре спутника научной программы Cluster, предназначенных для изучения взаимодействия солнечного излучения с магнитным полем Земли. Причина — ошибка преобразования переменной: программа была рассчитана на старый тип ракет, а в алгоритме запуска использовали новый.
20 декабря 2019 года нештатно закончился полёт американского космического корабля CST-100 Starliner. Причиной стала ошибка в софте: бортовое время, которое отсчитывал таймер корабля, отличалось от фактического.
23 сентября 1999 года космический аппарат Mars Climate Orbiter развалился в марсианской атмосфере, поскольку в программном компоненте давалось значение импульса, измеренное в фунт-сила-секундах, а другой компонент принимал его в ньютон-секундах.
Космос не прощает ошибок в программировании, поэтому главное требование к космическому ПО — многократное и тщательное тестирование. Если вы хотите писать код вообще без единой ошибки, то вас ждут в ЦУПе!
Предыдущие новости
Китайские спутники Tiandu проводят эксперименты по передаче данных с Земли на Луну, и прокладке маршрутов
Китайские испытательные спутники связи и навигации Tiandu-1 и Tiandu-2 успешно провели эксперименты по новым технологиям, таким как высоконадежная передача данных с Земли на Луну и маршрутизация, сообщает Science and Technology Daily в понедельник.
ПодробнееГенерал США подтверждает, что Китай обратился к обсуждению космической безопасности, поскольку военные связи демонстрируют признаки оттаивания
Военный сайт Breaking Defence цитирует Стивена Уайтинга из Космического командования США, который сказал, что Китай за последние шесть месяцев обратился к США “по двум вопросам, о которых они хотели поговорить с нами , связанных с космической безопасностью”.
ПодробнееИндия готова с 2030 года отказаться от загрязняющих орбиту космических миссий
Индийская организация космических исследований (ISRO) планирует, что к 2030 году все миссии, запускаемые в стране, не будут оставлять за собой космического мусора, и агитирует другие страны работать в данном направлении.
ПодробнееГигантский астероид 2013 NK4 максимально сблизился с Землей
Астрономы зафиксировали максимальное сближение огромного астероида 2013 NK4 с Землей за все время с момента обнаружения объекта в 2013 году. Космическая скала шириной около 600 метров прошла в 3,2 млн километров от нашей планеты на скорости около 59 тыс. километров в час.
ПодробнееNASA приветствует Швейцарию как нового подписанта «Соглашений Артемиды»
В понедельник, 15 апреля, Швейцария стала 37-й страной, подписавшей "Соглашения Артемиды" в штаб-квартире NASA в Вашингтоне, подтвердив тем самым свою приверженность устойчивому и полезному использованию космоса для всего человечества. "Сегодня мы отметили гигантский скачок вперед в партнерстве между Соединенными Штатами и Швейцарией, — сказал администратор NASA Билл Нельсон. "Приветствуя вас в семье Соглашений Артемиды, мы расширяем наши обязательства исследовать неизвестное открыто и мирно. Открытия укрепляют добрую волю на Земле, и мы рады распространить общие ценности и принципы наших стран на космос".
ПодробнееПервый запущенный с Восточного спутник завершил работу на орбите
Космический аппарат дистанционного зондирования Земли "Аист-2Д", запущенный в ходе первого в истории старта с космодрома Восточный в 2016 году, завершил работу на орбите, сообщили в предприятии-разработчике спутника - Ракетно-космическом центре (РКЦ) "Прогресс" во вторник.
ПодробнееВ Индии разработали сопло для ракет из углеродного композита для большей грузоподъемности
Индийская организация космических исследований (ISRO) разработала и успешно испытала ракетное сопло из углерод-углеродного композиционного материала (УУКМ), которое поможет увеличить грузоподъемность ракет.
ПодробнееВ РФ возобновили работу над проектом сверхтяжелой ракеты для полетов к Луне и Марсу. Конструкторы придумали несколько ее вариаций, сообщил гендиректор РКЦ «Прогресс» Дмитрий Баранов.
Первый вариант — создать такую ракету на базе первой ступени еще разрабатываемой ракеты среднего класса «Союз-5» с двигателями РД-101. Второй — сделать новый сверхтяж с многоразовыми ступенями, а в качестве топлива использовать метан.
ПодробнееМусор с МКС упал на Землю и пробил крышу дома во Флориде
Мусор с МКС после трех лет пребывания в космосе упал на Землю и пробил крышу дома во Флориде, сообщили НАСА и издание Space News.
ПодробнееНациональная орбитальная космическая станция (РОСС) — планируемая российская орбитальная станция, которая должна прийти на смену постоянному участию РФ в Международной космической станции (МКС).
Проект разрабатывается специалистами РКК «Энергия».
Подробнее