Сегодня все работает на программном обеспечении. Как убедиться, что он работает в космическом вакууме?

30 мая в Космическом центре Кеннеди была сделана история. SpaceX успешно запустила в космос астронавтов НАСА Боба Бенкена и Дуга Херли. Впервые за десятилетие США запустили на орбиту космонавтов. SpaceX тоже вошла в учебники истории как первая компания, отправившая людей в космос на личном автомобиле.

Добраться сюда было нелегко. Ракетостроение по своей природе сложное. Это путешествие, наполненное взрывными пробами и ошибками. Но с этим историческим запуском SpaceX Илона Маска сделала шаг ближе к своему великому видению. Кроме того, уже ведутся работы по его следующей пилотируемой миссии.

В честь празднования команда разработчиков программного обеспечения SpaceX недавно провела Reddit AMA. Их ответы дают захватывающее представление о том, как разрабатывается программное обеспечение, позволяющее людям отправиться в космос.

Создание нового интерфейса для космоса

Одна из самых ярких особенностей SpaceX Crew Dragon - это элементы управления. Нет обширных панелей кнопок. Некоторые остаются по соображениям безопасности. Но по большей части астронавты Боб и Дуг использовали пару сенсорных экранов для управления космическим кораблем. Это был радикальный отход от существующих норм.

При создании этого интерфейса SpaceX следовала процессу проектирования, ориентированному на человека, и его руководящие принципы заключались в том, чтобы сделать Dragon полностью автономным космическим кораблем.

Старший инженер-программист SpaceX Софиан Хнайд подробно остановился на этих принципах, сказав: «Одним из примеров является определение минимального взаимодействия экипажа в качестве критерия успеха (то есть парадигма« не нажимай кнопку »). Мы считаем, что правильное представление информации означает минимизацию необходимого взаимодействия, необходимого для наблюдения за автомобилем и управления им ».

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

Чтобы протестировать средства управления пилотированием, SpaceX организовала хакатон с экипажами своей миссии Demo-2 (Бенкен и Херли), а также с экипажами предстоящей миссии Crew-1 (Майк Хопкинс и Виктор Гловер). В течение дня астронавты тестировали элементы управления и давали свои отзывы команде разработчиков программного обеспечения. Ночью переделали бы интерфейсы. На следующее утро новая сборка была готова к тестированию.

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

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

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

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

Веб-технологии в космосе

Возможно, одним из самых захватывающих аспектов интерфейса Crew Dragon являются технологии, на которых он основан. Под капотом вы обнаружите, что он работает на Chromium с HTML, JavaScript и CSS. Это все технологии, которые вы используете прямо сейчас, чтобы прочитать эту статью!

Для тех из вас, кто может заблудиться, Chromium - это программное обеспечение с открытым исходным кодом, которое служит основой для Google Chrome и некоторых других браузеров. В то время как HTML, JavaScript и CSS - это технологии, используемые для создания многих веб-сайтов, которые мы используем сегодня.

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

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

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

Углубляясь в Кодекс Дракона

Помимо интерфейса, все остальное программное обеспечение внутри космического корабля Crew Dragon написано на C ++. Большинство компьютеров внутри работают под управлением операционной системы Linux с открытым исходным кодом. Инженер по полетному программному обеспечению SpaceX Джон Дитрик добавил: Мы не используем какие-либо готовые дистрибутивы (Linux). У нас есть свои собственные . Другие - это просто микроконтроллеры, работающие на голом железе . Каждый из этих компьютеров имеет определенное назначение и контролируется бортовым компьютером.

Неудивительно, что космический корабль Crew Dragon использует Linux. Практически весь мир работает на нем. Для SpaceX был выбран Linux, поскольку он предлагал лучшую производительность в реальном времени. За прошедшие годы операционная система оставалась практически неизменной. Единственным исключением является создание пользовательских драйверов (позволяющих программному обеспечению работать с оборудованием), поскольку SpaceX использует множество аппаратных архитектур.

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

Когда его спросили об использовании библиотек при разработке приложений, главный инженер-программист SpaceX Джош Салкин сказал: «Мы действительно используем библиотеки с открытым исходным кодом, в первую очередь стандартную библиотеку C ++, а также некоторые другие. Однако мы ограничиваем использование библиотек с открытым исходным кодом только исключительно высококачественными и часто предпочитаем разрабатывать собственные библиотеки, когда это возможно, чтобы мы могли сами контролировать качество кода ».

Следует отметить, что Linux используется только для запуска приложений и выступает в качестве интерфейса с оборудованием. Сулкин объяснил, что устранение неисправностей и резервирование компьютеров выполняются совершенно отдельным программным обеспечением. Точно так же синхронизация времени достигается за счет комбинации аппаратного и программного обеспечения, «некоторые из которых являются отраслевыми стандартами, а некоторые - собственными силами».

Тестирование программного обеспечения с одним шансом исправить это

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

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

Имея только один шанс все исправить, как SpaceX тестирует свое программное обеспечение?

Дитрик ответил на животрепещущий вопрос: «Все, что мы можем придумать! Модульные тесты, контейнерные интегрированные тесты и полнофункциональные тесты HITL (hardware-in-the-loop) на реальном летном оборудовании ».

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

Разрабатывая эти тесты, менеджер SpaceX по программному обеспечению космических аппаратов Венди Шимата сказала: «Каждый раз, когда мы вносим изменения в программное обеспечение (что часто случается с машиной для разработки), мы проводим как модульные тесты кода, так и функциональные тесты, чтобы убедиться, что программное обеспечение работает. как и предполагалось, и тестирование на уровне системы для этапов миссии как для номинальных, так и для нестандартных случаев ».

«В SpaceX мы любим говорить, что« выживают только параноики ». Мы постоянно думаем о том, что может пойти не так, и стараемся учитывать любой вероятный сценарий отказа. «- Джош Салкин

Наряду с этими тестами SpaceX также проводит серию тестов с симулятором. Это также используется для тщательного тестирования любого кода перед установкой на любой автомобиль. Описывая его, Дитрик сказал: «Тестирование полетного программного обеспечения с помощью симулятора - это самый мощный инструмент, который у нас есть, особенно когда он работает на реальном оборудовании. Мы можем смоделировать всю миссию и даже множество подробных сценариев неисправностей, когда оборудование автомобиля просто лежит на столе в лаборатории ».

Борьба с радиацией и опасностями космоса

Несмотря на строгий набор тестов, которые проводит SpaceX, компьютеры все равно могут давать сбои. Для нас с вами это было бы неприятно. Но для космонавтов в космосе этот сценарий может стать фатальным. Учитывая, насколько сильно космический корабль Crew Dragon зависит от программного обеспечения, неудивительно, что астронавты Бенкен и Херли проявили большой интерес к его функциям в чрезвычайных ситуациях.

Поэтому у SpaceX есть несколько мер на случай непредвиденных обстоятельств, если что-то пойдет не так. Рассказывая о них больше, Дитрик сказал: «Мы трижды дублируем почти все, чтобы выдержать потерю любого бортового компьютера, датчика, исполнительного механизма и т. Д. На Falcon и Dragon. На системном уровне Falcon и Dragon спроектированы таким образом, чтобы можно было допустить потерю таких вещей, как двигатели или подруливающие устройства, и наши алгоритмы компенсируют это ».

Но космос - опасное место, и есть невидимая угроза, от которой нужно защищать как людей, так и компьютеры. Это называется космическим излучением. Астронавты защищены от этого скафандрами. Точно так же вы обнаружите, что в космических кораблях используются специальные радиационно-стойкие компьютеры.

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

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

Что дальше в космической гонке?

За последнее десятилетие началась новая космическая гонка, которую возглавляют частные компании. Все началось в 2006 году, когда НАСА начало программу коммерческих орбитальных транспортных услуг (COTS). Его цель состоит в том, чтобы частные предприятия предлагали услуги по запуску, что, в свою очередь, позволило НАСА сэкономить деньги и сосредоточиться на более крупных проектах.

Поскольку программа прошла несколько этапов, гонка свелась к двум компаниям: Boeing и SpaceX. Когда контракты были присуждены, Boeing получил 4,2 миллиарда долларов, тогда как SpaceX получил только 2,6 миллиарда долларов. Это отражение того, как в то время грандиозные амбиции Илона Маска казались рискованными. С другой стороны, компания Boeing, будучи ветераном отрасли, была беспроигрышной ставкой.

Сегодня, с успехом миссии Dragon Crew, все кардинально изменилось. SpaceX теперь доказала, что может успешно отправлять людей в космос. Тем самым он получил признание за грандиозное видение космического туризма. Кроме того, этот подвиг также подтверждает, что решение НАСА довериться частному сектору было мудрым решением.

В будущем дела у SpaceX выглядят позитивно. Ожидается, что его конкурент Boeing не начнет пилотируемый космический полет до 2021 года. Это означает, что до следующего года SpaceX будет единственной частной компанией, перевозящей астронавтов между МКС и Землей.

Вы можете ознакомиться с полной версией AMA на Reddit от команды SpaceX здесь.

* Приведенные здесь цитаты были отредактированы для ясности.