Спутник как IT-проект. Что нужно разработчику для создания и запуска своего кубсата

Привет, Хабр! Меня зовут Людмила, я SDET-специалист в компании SimbirSoft. Свои школьные и студенческие годы я провела в студенческом аэрокосмическом конструкторском бюро, занимаясь проектированием малых космических аппаратов и разработкой софта и алгоритмов для них. 

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

Что вы получите после прочтения:

  • понимание, какие процессы и инструменты связывают эти две сферы;

  • необходимые вещи для создания и запуска своего наноспутника;

  • знание того, чем обычный разработчик может перекочевать в разрабы бортовых систем и обратно.

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

Что такое наноспутники, и с чем их едят

Наноспутники — класс космических аппаратов весом до 10 кг, как правило составленных из блоков 10×10х10 см, называемых юнитами. Стандарт для наноспутников унифицирован спецификацией CubeSat, потому спутник можно собрать как конструктор лего (правда, самый незамысловатый готовый конструктор обойдется вам не менее чем в 1 млн руб). 

Наноспутник SamSat-ION

Наноспутник SamSat-ION

Наноспутник SamSat-ION разработан сотрудниками и аспирантами межвузовской кафедры космических исследований в Самарском Университете. Научная миссия спутника — исследование параметров ионосферы Земли. На борту размещены магнитометр, навигационный приемник научного назначения и датчик параметров плазмы, разработанный совместно с институтом прикладной физики РАН.

SamSat-ION был выведен на орбиту 27 июня 2023 г с космодрома «Восточный» в рамках программы «УниверСат» — кластер МКА «УниверСат-2023».

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

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

Можно собрать и спутник поменьше — PocketCube. Спутники этого формата появились в космической отрасли не так давно, но несколько покеткубов уже запущены на орбиту, и даже есть open-source проект Qubik для всех желающих создать свой спутник.

P.S. Для наноспутников тоже есть open-source проект UpSat все у той же LibreSpace.

Умеете программировать? Полдела уже сделано

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

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

Но давайте абстрагируемся от больших коммерческих и университетских проектов. Собрать работающий наноспутник по силам даже группе студентов профильных направлений — при должной организации и финансировании. И более половины всей работы как раз и составит программирование.

Бортовой компьютер наноспутника SamSat-ION

Бортовой компьютер наноспутника SamSat-ION

Программировать здесь придется в основном микроконтроллеры и/или ПЛИС (программируемая логическая интегральная схема). Для многих студенческих и open-source проектов обычно используются микроконтроллеры STM, но можно сделать спутник и на Arduino (такие эксперименты уже были — и даже удачные). Для STM необходимо знать язык C и понимать принципы программирования «под железо», такие как работа с портами I/O, работа с памятью и регистрами, прерываниями, таймерами и так далее. Также придется освоить навыки работы с шинами передачи данных I2C, SPI и, возможно, CAN. Зная хотя бы примерно принципы работы TCP/UDP и других протоколов передачи информации, провести аналогию здесь не составит труда.

Если вас сильно напугало программирование железа, то берите Arduino — работает медленно, зато за вас уже написали все библиотеки, остается только их подключить и написать основной код.

Чек-лист бортовых систем спутника

Ниже приведен список бортовых систем, необходимых для минимальной реализации наноспутника:

  1. бортовая цифровая вычислительная машина (БЦВМ);

  2. система энергопитания (CЭП);

  3. система связи;

  4. навигационный приемник;

  5. измерительные датчики (магнитометры, датчики угловых скоростей и т.п.);

  6. полезная нагрузка.

Компоновка бортовых систем наноспутника SamSat-ION

Компоновка бортовых систем наноспутника SamSat-ION

Рассмотрим чуть подробнее список систем, приведенный выше.

  1. БЦВМ — не что иное, как основная плата спутника с микроконтроллером, которую также именуют бортовым компьютером. Основная задача БЦВМ — координировать действия остальных систем, отдавать команды, собирать и обрабатывать данные.

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

  1. Система связи как правило состоит из антенны и приемопередатчика (transceiver). Скорее всего, ваш спутник будет вещать на радиолюбительской частоте в UHF или VHF-диапазоне, а принять данные можно будет с одной из радиолюбительских станций по всему миру, например, SatNOGS или GridGS. Разработка хорошей системы связи и даже то, как принять эти данные с учетом всех шумов, ионосферных задержек и так далее — это большая отдельная наука.

  1. Навигационный приемник — это отличный способ узнать, над какой точкой планеты находится ваш спутник, рассчитать, куда он полетит дальше и радостно ждать следующего сеанса связи, направив антенну в нужную точку неба. Для спутника понадобится именно космический навигационный приемник, а не любой купленный в местном радиолюбительском магазине. У приемников из масс-маркета почти всегда встроено ограничение по рабочей высоте: после 18–30 км навигационный приемник либо откажется работать, либо будет выдавать неправильные значения. Почему так? В целях военной безопасности — этим все сказано.

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

  1. И вишенка на торте — полезная нагрузка. Ибо нет никакого смысла запускать в космос спутник, если у него нет какой-то цели или миссии. Например, можно измерять параметры ионосферы и предсказывать по ним землетрясения, следить за состоянием атмосферы, солнечным ветром. Можно даже отправиться к Марсу, как кубсаты MarCO, и ретранслировать сигналы других спутников.

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

После того как мы узнали, что необходимо разработать для своего спутника, можно поговорить о том, КАК это можно сделать, и почему процессы IT и космической отрасли достаточно часто пересекаются.

Основные процессы и этапы разработки наноспутников

У спутникостроения и разработки есть одна общая и до боли знакомая всем проблема — организация работы команд и вечно горящие сроки.

Дата запуска обычно заранее известна (за год или два), и для создания спутника целесообразнее использовать именно Канбан, а не иные методологии — ввиду того, что процесс представляет собой не что иное как производство, и нужно изготовить наноспутник и провести все необходимые испытания точно в срок. На моей практике встречалось использование таких инструментов, как Miro, Trello. Но здесь, как и в разработке, организация процессов сильно зависит от команды.

Обычно весь коллектив инженеров делится на группы по разработке отдельных бортовых систем: внутри каждой группы ведется разработка и тестирование в соответствии с ранее утвержденным ТЗ (это может быть спецификация CubeSat и/или любая техническая документация, например, полученная от компании, осуществляющей вывод спутника на целевую орбиту).

Сам же процесс разработки наноспутника легко ложится на SDLC (Software Development Life Cycle, жизненный цикл программного обеспечения):

  • Анализ: необходимые ресурсы для создания наноспутника.

  • Планирование: сроки и ход работ.

  • Проектирование и дизайн: создание структурных схем, 3D-моделей, математические расчеты и прочее.

  • Разработка: создание плат бортовых систем и фрезеровка корпуса, программирование и так далее.

  • Тестирование: проверка работы спутника на вибростенде, в вакуумной камере или имитаторе космической среды.

  • Развертывание: «деплой» космического аппарата с помощью ракеты-носителя на околоземную орбиту для дальнейшего функционирования.

  • Поддержка: мониторинг показателей и данных, приходящих со спутника; исправление возникающих в ходе эксплуатации проблем.

  • Закрытие: потерявысоты и сгорание в верхних слоях атмосферы.

Крупным планом: испытания

Для меня как для SDET-специалиста одной из самых интересных тем являются испытания (то есть тесты). Поэтому можно попытаться рассмотреть испытания наноспутника через призму пирамиды тестирования:   модульное, интеграционное, системное и приемочное.

Пирамида тестирования

Пирамида тестирования

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

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

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

Испытания SamSat-ION на вибродинамическом стенде

Испытания SamSat-ION на вибродинамическом стенде

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

Инструменты из IT, перекочевавшие в космическую отрасль

Вернемся к рассмотрению инструментов, которые являются общими для разработчиков ПО и разработчиков спутников. Спутниковые инженеры используют не только язык С. Им часто приходится писать свой софт на тех же C++, Java. Многим лабораториям, не говоря об open-source проектах, нравится использовать git, а именно GitHub или GitLab.

Те лаборатории, у которых есть свой центр управления полетом (ЦУП), а значит и антенны для приема спутниковых данных, вынуждены разрабатывать свое ПО для хранения и обработки этих данных. Один из интересных вариантов, который мне встречался — создание дашбордов в Grafana с помощью данных, хранимых в influxDB, куда их подгружает непосредственно система местного ЦУПа.

SamSat-ION

SamSat-ION

Еще будучи студентами, мы с ребятами из конструкторского бюро разрабатывали несколько программ (сервисов), каждый из которых отвечал за отдельную задачу: прием телеметрии, парсинг и визуализация данных с возможностью хранения данных в PostgreSQL, а сами сервисы обменивались данными через MQTT-брокер.

Также используется куча инженерного софта: AltiumDesigner, SolidWorks, Компас3D, Matlab, WolframMathematica и так далее.

Отдельно стоит поговорить о космических данных. Здесь как раз и работают IT-специалисты: ML-инженеры и аналитики. По спутниковым снимкам создаются не только карты, их также используют для мониторинга состояния лесов, мониторинга атмосферы, контроля ледового покрова, даже для степени загруженности парковок автомобилями. Здесь используются C++/Matlab/ Python и такие инструменты, как нейронные сети, numpy, Sklearn, pandas, scipy, matplotlib, seaborn, pytorch, pycuda, numba и многие другие.

Мониторинг пожаров по спутниковым данным. Источник

Мониторинг пожаров по спутниковым данным. Источник

Заключение

Разработку наноспутников и разработку программ связывают схожие процессы. 

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

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

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

За фотографии отдельное спасибо межвузовской кафедре космических исследований Самарского Университета.

Если разработка увлекает вас не меньше, чем космос, приглашаем в наши соцсети — ВКонтакте и Telegram.

© Habrahabr.ru