Информация и иллюстрации - из
официального отчета JAXA.
Disclaimer: я не являюсь экспертом по космическим аппаратам и системам управления ими. Спецы - поправляйте меня, если ошибся где.
"Все, что вы делаете руками - ужасно" - такое высказывание, приписываемое японцам в
анекдоте советских времен - в полной мере применимо и к самим японцам. По крайней мере к тем из них, которые разрабатывали алгоритмы системы ориентации для космического рентгеновского телескопа
"Хитоми". Хотя, пожалуй, скорее, головой. Руками-то они все сделали хорошо и никаких отказов матчасти не было. Но тем не менее..
26 марта 2016 года связь с новейшим японским космическим телескопом, запущенным за полтора месяца до того,
была потеряна навсегда. Произошло это после простого штатного маневра - наведения с Крабовидной туманности на объект Маркарян-205 в центре Галактики.
Наблюдения с земли показали, что космический аппарат развалился на 11 обломков разного размера, самый большой из них быстро вращался.
Высказывались предположения о столкновении с метеоритом или взрыве на борту. Но, к чести японцев, они не списали все на "посторонний объект", а стали разбираться....
Лирическое отступление: как вообще ориентируются нужным образом спутники? Во-первых, на спутнике есть гироскоп, который сообщает о положении спутника относительно своей неподвижной оси и скорости его изменения. Поскольку идеальных датчиков вообще, и гироскопов в частности, не бывает, его показания корректируются по окружающему пространству, которое представляет собой, очевидно, звездное небо, на которое смотрит звездный датчик. Чтобы повернуть спутник без внешней опоры, которую Архимед хотел для поворота Земли, и без затрат топлива - применяются силовые маховики-гиродины (минимум 3 шт, потому что пространство трехмерное. +резерв). Изменение момента вращения маховика поворачивает спутник. Но есть одна проблема: скорость вращения гиродинов имеет вполне определенный предел, при достижении которого их нужно "разгрузить" (сбросить накопленный момент другим способом). На низкой орбите это можно сделать "магнитным приводом" (катушками, магнитное поле которых взаимодействует с магнитным полем Земли), это бесплатно с точки зрения затрат топлива. И на крайний случай, можно включить двигатели ориентации, но вот они-то как раз топливо тратят, а его запасы, мягко говоря, небесконечны. Поскольку все эти системы критически важны для работы спутника, обычно они дублируются, а то и троируются.
Вот как все это выглядит на Хитоми. Star Tracker - звездный датчик (2 шт). Reaction Wheel - гиродин (3 + 1шт). RCS thruster - двигатели ориентации (4 шт * 2). Magnetic torquer - магнитный привод (3 шт *2). И Coarse Sun Aspect Sensor (2 шт *2) - резервные датчики положения Солнца, на случай, если сломается все остальное.
Для телескопа критически важна точность наведения на исследуемый объект, и поддержания этого положения. Датчики не-идеальны, и для точной ориентации используется фильтр Кальмана. Это
такой хитрый алгоритм, который позволяет, используя накопление по времени каких-либо данных, выделить полезную информацию среди зашумленных и неточных измерений. В случае "Хитоми" на выходе получаются текущие угловые координаты спутника, текущие скорости их изменения, и (важно) оценка дрейфа нуля гироскопов. На этот "оцениваемый дрейф" тоже делается поправка, которая включается в окончательные данные о положении и скорости вращения спутника.
Работает это неплохо, но, как обычно, есть нюанс.
Для получения точных значений - фильтру Кальмана нужно накопить историю входных данных. После резкого маневра фильтр "сбрасывается", и, пока вновь не наберется история - его показания неточны. В частности, оценка дрейфа гироскопа очень велика. По мере накопления данных от гироскопа и звездного датчика - данные уточняются, и все становится хорошо. Вот так это выглядит на графике (синяя кривая).
Как мы видим, сразу после маневра данные о скорости вращения неточны (она завышена), но после завершения маневра и коррекции по звездному датчику система стабилизируется. В теории.
На практике со звездным датчиком была одна небольшая проблема. Звездный датчик - это видеокамера, смотрящая на звездное небо, плюс программа-анализатор, которая знает карту звездного неба и пытается сопоставить ее с картинкой с камеры. Чтобы всякие помехи не влияли - на картинке все объекты с яркостью ниже некоего порога отсекаются. Так вот, порог отсечения "по умолчанию" оказался великоват, и ярких звезд на картинке оставалось слишком мало для надежного распознавания. Вследствие чего звездный датчик теряет ориентацию и начинает определять свое положение заново. Таких случаев уже было минимум четыре, за полтора месяца работы аппарата.
Калибровку уставку отсечения запланировали, но только на 28 марта.
Итак, косяк номер раз: калибровку нужно было делать сразу, или хотя бы после первой проблемы с датчиком. А не откладывать в светлое будущее.
При маневре звездный датчик ориентацию - нашел, но очень быстро опять потерял. (на графике Tracking - есть ориентация, Acquisition - нету ее).
Данные на вход фильтра поступать перестали, и фильтр "завис" в состоянии, сообщающем об очень большом дрейфе нуля гироскопа, которого на самом деле не было.
Косяк номер два. При таком поведении фильтра - данные о мнимом "уходе нуля" гироскопов нужно игнорировать, пока через- фильтр не пройдет NN отсчетов.
Звездные датчики продублированы. Однако переключение на второй датчик, который в это время вполне мог поддерживать ориентацию - в алгоритме не предусмотрели. Вместо этого оба датчика отключались, и управление целиком передавалось гироскопу. Считалось, что рано или поздно датчик сообразит, где он, и уберет накопившуюся ошибку.
Косяк номер три...
Через некоторое время звездный датчик "нашелся". Все хорошо? Не угадали.
Гироскоп корректируется по звездному датчику, только если разность показаний их меньше одного градуса. А на деле из-за ошибочно высокой угловой скорости - ошибка за время, пока звездный датчик искал себя - превысила этот градус. Вследствие чего коррекция показаний не прошла, вместо этого наконец-то давший достоверные показания звездный датчик был... помечен как неисправный. Дальше см. выше - оба звездных датчика были отключены, и управление опять передано гироскопу. Фильтр Кальмана по-прежнему не получал отсчеты - и продолжал настаивать на несуществующем вращении (красные линии на графике выше). Вот так выглядит расхождение показаний больше градуса.
Ну вот что мешало сравнить показания двух звездных датчиков и гироскопа? Тогда можно было бы определить, какое показание неверное.
Косяк номер четыре...
Итак, система ориентации сообщает системе управления, что якобы в наличии сильное вращение спутника. Система управления честно делает свою работу и пытается убрать вращение путем раскручивания гиродинов. У нее это получается - и спутник начинает раскручиваться физически. Ошибочно предполагаемое вращение настолько велико, что скоро гиродины выходят на максимально допустимые обороты. Магнитный привод пытается их "разгрузить", но не может. Потому что ему нужна точная информация о положении относительно магнитного поля Земли.... а она совершенно не точная.
А что же резервно-аварийный датчик положения Солнца (CSAS)? Пока не прошел аварийный сигнал - система управления вообще его игнорировала. Ну так вот ее запроектировали. Вот теперь-то наконец он был задействован, но... но поле зрения датчика 20 градусов. А спутник уже успел развернуться на 30 градусов. И датчик солнце - не увидел.
Косяк номер пять: за показаниями аварийного датчика нужно следить всегда. Даже когда кажется, что все хорошо.
Но это еще не конец.
В такой ситуации (гиродины на максимуме, разгрузка не проходит, ориентация потеряна) наконец-то срабатывает аварийная защита. Которая должна перевести аппарат в "Safe mode" - стабильно предсказуемое состояние, обеспечить засветку солнечных батарей = электропитание, связь с центром управления и наплевать на все остальное. Вместо неработающих гиродинов и моментных приводов управление передается реактивным двигателям ориентации.
Система управления решила первым делом погасить мнимое вращение и поискать Солнце. Вполне может быть, что это ей удалось бы, но....
Смотрим на фотку телескопа в начале. Телескоп имеет ферму, раздвигаемую после вывода на орбиту. Такое изменение конфигурации аппарата, очевидно, приводит к изменению центра массы и моментов инерции по осям - параметров, критически важных для расчета правильного включения двигателей ориентации.
Соответсвенно, новый набор параметров должен был быть загружен в систему управления.
Для этого одна компания-подрядчик, используя "программу расчета матрицы параметров системы ориентации" - получила эту самую матрицу. И передала другой компании, которая на основании ее в "программе расчета таблицы параметров двигателей ориентации" - сделала набор параметров для системы управления.
И все было бы хорошо, но первая программа давала в матрице числа со знаком. Вторая - требовала ввода абсолютных значений (проще говоря "минус" у отрицательных чисел нужно убрать). Вот эта матрица.
Это как бы все знали, но никто не задокументировал. И никто не сказал тому, кто, собственно, путем Ctrl+C - Ctrl+V скопировал циферки.
Косяк номер шесть: такие фокусы с минусами нужно избегать, а уж если невозможно - документировать и инструктировать всех.
Ни в одной, ни в другой компании это не сделали. Данные со знаком "минус" умудрились дважды пройти проверку (как???) и попасть на борт космического аппарата.
Косяк номер семь: проверки данных как бы должны выявлять ошибки в данных, а не для галочки существовать.
Двигатели ориентации сработали. Как им и сказали: Со знаком "минус".
Вместо остановки вращения - они ускорили вращение. Центробежные силы теперь оказались такими, что конструкция телескопа не выдержала, и он развалился на части.
Epic Fail & R.I.P.
Все основные и резервные устройства и системы на борту "Хитоми" до момента разрушения работали нормально. Проблемы были исключительно в алгоритмах и параметрах системы управления...
Если бы хотя бы одной из семи ошибок не было - ситуацию можно было бы спасти.
P.S. Стоимость миссии составила примерно $270.000.000.