Причины аварии посадочного демонстратора Schiaparelli
May 31, 2017 · CommentsКосмосТехника
ESA опубликовало отчет о расследовании аварии посадочного демонстратора Schiaparelli, запущенного к Марсу в составе экспедиции ExoMars 2016. Посадочный модуль вошел в атмосферу Марса 19 октября 2016 года. Контакт с модулем был потерян за 43 секунды до ожидаемого момента посадки. На следующий день место посадки было сфотографировано камерами Mars Reconnaissance Orbiter. На снимках было найдено свежее большое темное пятно в ожидаемом районе посадки, а в километре от него - новое светлое пятно (парашют).
Очень занимательный отчет. Интересное начинается прямо в списке оборудования. Посадочный модуль был оборудован одним радаром и одним прибором инерционной навигации (IMU). Выход из строя любого из них означал неизбежную аварию при посадке. Я раньше думал, что на всем, что улетает дальше земной орбиты, все сенсоры резервируются в обязательном порядке.
Для симуляции и Монте-Карло моделирования посадки использовался внушительный список моделей, включая модель атмосферы, многотельное моделирование парашюта, модель теплового щита и т.д. Такой подход считается индустриальным стандартом и используется, в том числе, в NASA. Каждая из моделей, однако, требует тщательной проверки, так как одна единственная ошибка может фатально исказить результаты.
Используемые модели имели ограничения:
- Ограниченный вычислительный бюджет (обычная история для системы реального времени) требовал использования упрощенных моделей (аэродинамика, парашют, двигатели ориентации).
- Модель парашюта не включала раскачку в момент раскрытия.
- Параметры моделей недостаточно контролировались на соответствие настоящему посадочному модулю.
- Инженерная модель IMU использовалась только для проверки электрического интерфейса и полярности. Совместное тестирование с GNC кодом (управление, навигация и контроль) не проводилось.
В результате произошло следующее:
- Спускаемый аппарат нормально отделился от орбитальной ступени и вошел в атмосферу в 14:42:22.
- Через три минуты (в 14:45:23) вышел парашют. В момент выхода парашюта угол атаки аппарата был около 6.5 градусов. Скорость вращения вокруг продольной оси - меньше 3 градусов в секунду.
- Наполнение купола парашюта воздухом вызвало колебания аппарата с частотой около 2.5 герц. Через 0.2 секунды с момента максимальной нагрузки, IMU зарегистрировал вращение вокруг поперечной оси с угловой скоростью, превышающей максимальную величину измеряемую IMU. В ответ IMU выставил флаг насыщения.
- В то время, пока аппарат продолжало болтать, GNC код интерпретировал флаг насыщения как вращение аппарата с максимальной скоростью, которую может выдавать IMU. К моменту, когда флаг был сброшен, GNC код насчитал поворот на 165 градусов. Фактически, система управления думала, что аппарат перевернулся.
- Аппарат продолжил нормальное снижение. Колебания аппарата утихли. Тепловой щит был отстрелен вовремя. Радар начал давать нормальные измерения.
- Вместе с включением радара, заработал кусок кода, ответственный за сводку данных радара и IMU. Дистанция до земли, выданная радаром, была спроецирована на вертикальную ось аппарата повернутую на 165 градусов относительно реальности. Вычисленная высота над уровнем поверхности получилась отрицательной (косинус углов больше 90 градусов принимает отрицательные значения).
- Из-за того, что посадка без радара считалась невозможной, аппарат принял полученное значение за чистую монету и посчитал что находится ниже высоты на которой отстреливается задний тепловой щит вместе с парашютом.
- Финальная посадка должна была производится на двигателях ориентации. Однако двигатель проработал только три секунды. Критерием выключения двигателя была оценка энергии спускаемого аппарата. Так как оценка высоты была значительно меньше ноля, отрицательная оценка потенциальной энергии полностью перевесила оценку кинетической энергии аппарата. Двигатель проработал минимальное возможное время и аппарат упал с высоты 3.7 километра.
Далее идет разбор как же так получилось. Перечисляется много всего, что можно было сделать, чтобы предотвратить аварию: более тщательный анализ “невозможных” ситуаций, более тщательное интеграционное тестирование, улучшение моделей, более отказоустойчивая логика в GNC коде и взаимные проверки данных.
Самая вопиющая оплошность заключалась в том, что период сброса флага насыщения в IMU не был проконтролирован должным образом. Считалось, что IMU сбрасывает флаг через 15 мс и эта величина использовалась при тестировании. Реальное значение оказалось другим, но так как реальный IMU не использовался в интеграционном тестировании это осталось незамеченным. Приемное тестирование также не зафиксировало тот параметр. Утверждается, что если бы этот параметр действительно был выставлен 15 мс, то аппарат бы успешно приземлился и все остальные недостатки, выявленные в процессе разбора аварии, так и не были бы обнаружены.