Что пошло не так с нашим космическим запуском: сама авария на орбите [это не про лунную миссию]

в 15:16, , рубрики: ruvds, ruvds_статьи, авария, запуск, кубсат, орбита, спутник
Итак, есть космический корабль с разгонным блоком «Фрегат», из него пружиной выбрасывается материнская маааленькая такая «орбитальная станция», т.е. по сути — разгонный блок для пико-спутников. Из неё пружинами (точнее, распрямляя нитиноловые антенны) выходит рой пико-спутников. В прошлом посте я подробно описал что такое кубсат, пико-спутник и как под это всё разрабатывается железо и софт и какими компаниями. Напоминаю, у нас, похоже, так и не стартовал борткомпьютер из полезной нагрузки нашего пико-спутника.

image

Вот рой вышел с орбитальной базы, снято камерой материнской станции

Проблема была в том, что наш запуск изначально был запланирован на осень (после ряда переносов и развала «Орбитального экспресса»), а потом, когда некоторые западные партнёры почему-то решили отменить свои миссии, нам сообщили, что «парни, вы летите через полтора месяца».

За месяц до запуска нужно отдать полностью снаряжённый, заряженный и протестированный спутник с роем пико-спутников внутри.

Разработка в таких условиях шла, скажем так, несколько напряжённо и далеко не по TDD. Из самого важного — у нас были огромные планы на контрольный контур, на возможность удалённой перезаливки прошивки и много чего ещё. Всё это отправилось в бэклог второго запуска. Мы успели только сделать так, что пакеты из блока связи записываются на диск. С ними уже можно что-то делать дальше в режиме админа.

Но зато мы поставили рекорд по срокам подготовки спутника. 8 месяцев с момента начала подготовки до запуска миссии — это рекорд российской космонавтики. Но какой ценой!

Вот видео отделения:

Вот ещё раз трёхюнитовый кубсат, верхний юнит — ангар для роя пико-спутников:

image

Он выходит на орбиту и делает вот так:

image

image

Точнее, по факту вот так:

image

Здесь может показаться, что два спутника спутались антеннами, но через несколько дней стало понятно, что это не так

▍ Теперь давайте вернёмся в начало миссии

Итак, в конце весны мы узнали, что летим через полтора месяца, а не через 4, как было задумано изначально. Логика в том, что на запуски есть очереди и мы в эту очередь встали.

Условия контракта такие, что когда очередь подходит, надо сдать спутник. Если его нет — ну упс, денег вы заплатили, на его месте полетела заглушка, чтобы не нарушать балансировку корабля. Никто особо не думал, что некоторые могут самостоятельно освободить эту очередь.

В июне 2023 спутник прошёл все испытания и ушёл на космодром «Восточный».

27 июня в 14:34 запустили «Союз-2.1б». В нём была орбитальная база «СтратоСат-ТК-1», внутри которого наш «СтратоСат-ТК-1-Д».

Корабль штатно выпустил кубсат на расчётную орбиту. На выходе из люка сработали концевые переключатели, и кубсат подключился к собственному заряженному аккумуляторному блоку (потерявшему около 20 дней в саморазряде, но это некритично). Через полчаса он начал оживать.

«Геоскан» увидел его на первом витке. С Земли удалось с ним связаться и прогнать диагностику. В итоге стало понятно, что с ним всё в порядке. Нам надо было убедиться, что аппарат записывает видео, принимает команды. Дальше он начал коррекцию магнитными катушками (уменьшил вращение) и начал выполнять программу полёта.

Пусковой контейнер роя пико-спутников можно было открыть с Земли командой, а можно было просто подождать. Бортовой компьютер имел таймер на неделю, если бы команда не поступила, то он бы раскрыл его автоматически.

Камера подключилась штатно, вращение остановили (точнее уменьшили до незначительного, дальше кубсат, как и все спутники, немного осциллирует, поскольку идеально точно остановить вращение в космосе практически нереально).

11 июля в 9:40 рой пико-спутников вышел из пускового контейнера.

image

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

Кроме нашего аппарата Д, основного с космическим веб-сервером.

Гипотезы были разные. Это космос, такое случается. Никто не услышит и не узнает точно. Но на следующий день радиолюбителям всё же удалось поймать телеметрию. Похоже, что пико-спутник загрузился и начал передавать стандартную отбивку. Эта часть управления — на микроконтроллере, это не бортовой компьютер.

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

Итак, у нас есть рой на орбите, но один из спутников работает неверно.

▍ Орбитальная группировка

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

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

Сейчас наши коллеги дорабатывают станцию связи, чтобы работать с аппаратами самостоятельно.

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

Считать можно самостоятельно (на самом деле нет, уже после первого витка расчётные данные начнут расходиться с фактическими) либо пользоваться данными российских военных или американского ПВО NORAD. И в России, и в NORAD можно регистрировать спутники.

Оперативный штаб управления Роскосмоса должен знать про спутник после первого витка. NORAD — необязательно, но зато они могут дать данные в реальном времени, а не через неделю, как Минобороны. Они публикуют данные по объектам в формате TLE. По данным TLE можно более точно навести антенну и для радиолюбителей, и для операторов спутника.

С точки зрения законодательства наш рой — это отвалившиеся части материнского кубсата. То есть они являются как бы одним спутником, просто немного распределённым. 1 аппарат и 6 отвалившихся частей.

Итак, пока мы пытались связаться, радиолюбители из разных мест нашей страны уже передали нам телеметрию Д. Аппарат, судя по всему, был в порядке.

Попутно мы задействовали станцию в Дудинке в порту (это Крайний Север), там нам тоже помогли. Но там не получается выстроить диалог из запросов и ответов, то есть это не консольное управление, а одно сообщение за один раз.

image

▍ Что могло случиться

Прогнав все возможные сценарии, мы с админами решили, что дело может быть в карте SD-памяти производственного класса. Проблема с ней могла генерировать два типа ошибок:

  1. Попытка прочитать первый файл на карте закончилась неудачей, и поэтому он некоторое время «висел», пока не переключился в режим обычного маяка-ретранслятора.
  2. Более интересная гипотеза: чтение шло, но карта не отвечала, поэтому он отправлял радиосигнал. Но null. То есть как бы отправлял, только нет. Тут есть надежда, что удалось дойти до конца адресации, вычитать всю пустоту и переключиться в базовый режим.

В общем, мы подозреваем, что это повреждение памяти. Может, отсоединилась от платы, может замёрзла или перегрелась.

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

image

▍ Наша программа исследований

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

Эта задача под вопросом в полной мере, потому что борткомпьютер основного пико-спутника вот в таком состоянии. Но, во-первых, есть второй спутник, во-вторых, есть ещё сам контроллер!

В результате сейчас мы делаем то, что должны были делать сразу — проводим первый космический CTF, например. CTF у нас на спутнике стал первым космическим CTF: ранее что-то подобное планировали осуществить коллеги из США, но не смогли довести проект до конца.

Мы же не просто добились цели, но и сделали это в максимально сжатые сроки.

Как сделали — через ретрансляцию. Контроллер в базовом режиме может ретранслировать сообщения. Это режим ретрансляции, заложенный в изначальном функционале спутника. Если создать сайт на 200 байт (а примерно столько остаётся от пакета), то можно сделать всё тот же CTF и другие игры. Ну мы и ужали. Посимвольной оптимизацией.

image

Вот первый в мире интернет-сайт, размещённый на искусственном спутнике Земли.

Дальше мы попробуем пробудить компьютер и всё же дать вам доступ к орбитальному ЦОДу.

В целом вся миссия делалась в той же философии многократного дублирования, как и то, что мы делаем на Земле в ЦОДах. И, похоже, несмотря на все проблемы, что-то у нас получилось. Как минимум три важных ачивки с первым сайтом на спутнике, первым CTF и самым быстрым запуском (по срокам подготовки) такой платформы мы взяли.

Дальше Луна. Сначала у нас был воздушный шар, потом мы запускали на стратостате. Космос. Дальше Луна. Будем продолжать попытки. Уже была миссия, когда НАСА на лунную орбиту подсадило несколько кубсатов. Мы чаем надежду что на какой-то из следующих Лун такая программа будет. В 23-м не запустим, в 24-м не запустим, в 25-м обсуждаем. Потом, наверное, Марс.

Ссылки:

Собственно, вот сейчас вы представляете общую картину миссии.

Telegram-канал с розыгрышами призов, новостями IT и постами о ретроиграх 🕹️

Автор: Никита Цаплин

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js