Как всем в нашей маленькой секте известно, одним из факторов, которые позволяют компании SpaceX достигать своих целей малыми усилиями, стало широкое использование наработок из смежных дисциплин.
Например, компания использует распространённые и дешевые микроэлектронные компоненты промышленного класса надёжности вместо дорогих компонентов аэрокосмического класса, а проблемы со стабильностью работы решает резервированием. Иногда вместо стойких к радиации компонентов, используются более дешевые rad-tolerant решения, рассчитанные на корректную работу при возникновении ошибок.
Или другой пример: компьютеры космического корабля и ракеты-носителя работают не на каком-нибудь специализированном проприетарном дорогом решении, а используют кастомизированную версию Linux, а код пишется на обычном СC++ с использованием стандартных библиотек (STL) и инструментов (gcc, clang, gdb, valgrind). Системы обслуживания, управления стартом, диагностики и т.п. вообще пишутся на Go, Python и C#. Такой подход позволяет быстрее обучать разработчиков ПО, экономить на тестировании и использовать зарекомендовавшие себя технологии, радикально снижая затраты и повышая эффективность.
Ну и на этот раз компания решила обратиться к опыту разработчиков игр.
На проходящей в данный момент Game Developers Conference 2016 компания SpaceX показала видео с фрагментом действующего интерфейса космического корабля Звёздный батут Dragon 2, создаваемого по контракту с NASA.
На видео показана симуляция работы интерфейса ручной стыковки КК с МКС в случае когда корабль смотрит в неправильную сторону, оси стыковочных узлов не согласованы, а сам корабль слегка вращается.
Видео было представлено в рамках доклада «Building Crew Interfaces for a 21st Century Spacecraft». В докладе Мэттью Монсон, глава подразделения ПО Dragon, рассказал о создании пользовательского интерфейса нового космического корабля.
Одной из особенностей Dragon 2 стала панель управления: Вместо набора индикаторов, дисплеев и кнопок, SpaceX решили использовать экраны большого размера с тач-скрином, а количество физических кнопок снизить до минимального.
Кадр из презентации Dragon 2. Судя по всему, итоговый вариант будет выглядеть примерно так.
Так как корабль создаётся с расчётом на полную автоматизацию полёта на всех этапах, большую часть времени экипаж выполняет роль простых наблюдателей, и в управление кораблём вмешивается только в случае возникновения нештатных ситуаций. Более того, на некоторых режимах полёта, например при выводе КК на орбиту, какое-то сложное управление и вовсе невозможно из за воздействия перегрузок на членов экипажа. Исходя из этих соображений, разработчики решили вместо использования традиционных кнопочных интерфейсов, использующихся в авиации и космонавтике, сделать интерфейс управления более похожим на картинку из компьютерной игры. Новый интерфейс создавался как более простая и визуально чистая альтернатива классическим решениям.
Классический интерфейс управления конкурента дракона — космического корабля Boeing Starliner
Стоит отметить, что использование экранов с тачскрином даёт множество вкуснейших плюшек:
Во-первых серьёзно упрощается обучение новых членов экипажа и снижается порог вхождения.
Во-вторых, значительно упрощается схемотехника пульта управления, уменьшается его масса и габариты.
В-третьих фактически бесплатно повышается надёжность за счёт резервирования элементов управления из-за использования нескольких идентичных экранов.
В-четвёртых, как ни странно, сами дисплеи с тачкринами, значительно дешевле россыпи индикаторов и кнопок.
Наконец, в-пятых, отсутствие необходимости в специализированном железе, значительно упрощает разработку и тестирование(полётное ПО можно запустить на обычном компьютере), а отвязка от железных кнопок и индикаторов позволяет быстро развивать и изменять функционал (как, например, это делается для автомобилей Tesla).
В автомобилях Tesla используется аналогичный подход — большинство элементов индикации и управления вынесены не два дисплея в салоне, один из которых снабжен тачскрином
Сам интерфейс экрана работает на базе chromium (да-да, в этом месте у меня и самого челюсть упала до пола) и использует стандартные веб-технологии. В качестве железа, по слухам, используется аналог панели от Tesla, на SoC-решении от Nvidia. Кроме стыковки, интерфейс позволяет планировать траекторию корабля, осуществлять ориентацию через распознавание паттернов звёзд, выполнять диагностику, управлять связью. Также Мэтт Монсон отметил, что для экстренных ситуаций в корабле будут присутствовать некоторые физические органы управления.
На вопрос об удобстве работы с интерфейсов в перчатках скафандра, Мэтт ответил что они активно следят за этим вопросом и тестировщики не испытывают проблем при работе в перчатках.
Физические кнопки под основными дисплеями
Кроме того докладчик объяснил, почему он выступает с этим докладом именно на конференции разработчиков игр: Сейчас в SpaceX работает большое количество разработчиков из игровой (и просто софтверной индустрии), это позволяет эффективно обмениваться идеями и эффективнее перенимать опыт. У игровых разработчиков есть специфические навыки (например привычка экономить память или оптимизировать алгоритмы) полезные для работы в аэрокосмической отрасли. Например при 60 кадрах в секунду у разработчика остаётся только 16мс для работы алгоритмов и это очень напоминает ограничения операционных систем реального времени, использующихся в космических аппаратах. Плюс у разработчиков игр как правило есть опыт эффективной работы в больших командах с большими проектами и жёсткими дедлайнами.
Общий вид панели управления. На дисплеях показан ещё один режим работы интерфейса (похоже на режим сближения со станцией).
Некоторые слайды из доклада доступны в галерее на imgur.
Пересказ доклада
Видеопрезентация интерьера корабля