Разработка программных средств отображения телеметрии стратосферных спутников | Статья в сборнике международной научной конференции

Отправьте статью сегодня! Журнал выйдет 12 апреля, печатный экземпляр отправим 16 апреля.

Опубликовать статью в журнале

Авторы: ,

Научный руководитель:

Рубрика: 7. Технические науки

Опубликовано в

C международная научная конференция «Исследования молодых ученых» (Казань, апрель 2025)

Дата публикации: 25.03.2025

Статья просмотрена: 2 раза

Библиографическое описание:

Медведев, С. И. Разработка программных средств отображения телеметрии стратосферных спутников / С. И. Медведев, Л. А. Белокопытова. — Текст : непосредственный // Исследования молодых ученых : материалы C Междунар. науч. конф. (г. Казань, апрель 2025 г.). — Казань : Молодой ученый, 2025. — URL: https://moluch.ru/conf/stud/archive/534/18897/ (дата обращения: 03.04.2025).

Препринт статьи



В данной статье описывается разработка программного обеспечения для отображения телеметрических данных стратосферных спутников. Приложение реализовано на языке Python с использованием библиотеки PySide6 для создания графического интерфейса, а для дизайна окон применён PyQTDesigner. Программа обеспечивает прием и обработку данных в формате JSON, поступающих с бортовых приборов, таких как дозиметр, барометр, компас, гироскоп, акселерометр, GPS и датчик температуры и влажности. Для визуализации данных используются карты (библиотека folium), 3D-визуализация наклонов, компаса и акселерометра (с применением VTK и matplotlib), а данные сохраняются в базу данных SQLite. Результаты экспериментов показали, что разработанное ПО позволяет в реальном времени отслеживать параметры полёта, проводить анализ и отображение телеметрии.

Ключевые слова : стратосферный спутник, телеметрия, Python, PyQt, VTK, SQLite, многопоточность.

Введение

Стратосферные спутники — это аппараты, работающие в ближнем космосе (высота 20–50 км), что требует точного мониторинга их состояния. Телеметрические данные включают параметры ориентации, показания датчиков, координаты и энергопотребление. Для их обработки и визуализации необходимо программное обеспечение, способное работать в реальном времени и предоставлять интуитивно понятный интерфейс. В данной статье представлено решение, разработанное на Python с использованием библиотек.

Методология

Выбор инструментов:

— Python выбран благодаря богатой экосистеме библиотек;

— PySide6 (Qt) обеспечивает создание графического интерфейса;

— VTK используется для 3D-визуализации ориентации аппарата;

— Folium отображает траекторию движения на карте;

— SQLite сохраняет историю телеметрии;

— Matplotlib интегрирован для построения графиков ускорений.

Архитектура приложения

Приложение состоит из следующих модулей:

— Чтение данных: поддержка COM-порта и файлов JSON;

— Обработка данных: парсинг JSON, валидация, преобразование и отображение.

Визуализация:

— 3D-виджеты (наклон спутника, компас, акселерометр);

— Карта с маршрутом;

— Текстовые показания датчиков.

Сохранение данных: запись в SQLite с разделением на таблицы по времени сеанса.

Для избежания блокировки интерфейса при обработке данных используется многопоточность на основе QThread.

Приложение разделено на несколько модулей:

— TelemetryViewer: Главное окно приложения, в котором объединяются все виджеты и компоненты;

— MapWidget: Виджет для отображения карты с маршрутом, реализованный с использованием библиотеки folium и элемента QWebEngineView;

— TiltWidget: 3D-визуализация наклонов спутника с использованием VTK;

— CompassWidget: 3D-визуализация компаса, также основанная на VTK.

— AccelWidget: Отображение данных акселерометра с помощью matplotlib;

— SerialReader и DataReaderThread: Потоки для чтения телеметрических данных из последовательного порта и файлов;

— DatabaseManager: Модуль для работы с базой данных SQLite, в которой хранятся полученные данные.

Реализация

Главное окно

Интерфейс пользователя был разработан с использованием PyQTDesigner, что позволило создать современное и интуитивно понятное окно приложения. При запуске пользователь видит окно с различными панелями:

Текстовые данные (температура, высота, скорость, заряд батареи и т. д.),

Карта с маршрутом полёта,

3D-визуализации:

— Виджет наклона (TiltWidget),

— Виджет компаса (CompassWidget),

— Виджет акселерометра (AccelWidget).

Макет приложения имеет вид рис. 1.

Макет приложения

Рис. 1. Макет приложения

Описание протокола телеметрии

Со спутника поступают сообщения в формате JSON, пример которого:

{«dr»:0.05»,ad»:0.24»,td»:23»,bat»:100»,mps»:0»,deg»:0»,chyx»:89.59»,chzx»:353.14»,tx»:0.16»,ty»:2.36»,tz»:-3.13»,tb»:29.1»,alt»:0.082966»,salt»:-17.80188»,cx»:925»,cy»:4002»,cz»:-327»,gx»:0»,gy»:0»,gz»:0»,ax»:0»,ay»:0»,az»:0»,gs»:true»,sc»:0»,d»:29»,mh»:1»,y»:2025»,hr»:15»,m»:14»,s»:5»,u»:4.56»,i»:3276.7»,p»:14942.5»,c»:26} {«pc»:19»,pres»:101544»,t»:24.2»,h»:24.6»,lat»:0»,lng»:0»,galt»:0}

Краткое описание ключевых параметров:

Дозиметр: ad — накопленная доза, dr — доза в час, td — температура дозиметра, bat — заряд батареи.

Барометр: tb — температура, pres — давление, alt — высота относительно начальной, salt — абсолютная высота над уровнем моря.

Датчик тока и напряжения: u — напряжение, i — ток, p — мощность.

Компас: cx, cy, cz — компоненты, chyx, chzx — направления.

Гироскоп и акселерометр: gx, gy, gz — угловые скорости, ax, ay, az — ускорения, tx, ty, tz — углы наклона.

GPS: gs — статус, lat — широта, lng — долгота, mps — скорость, deg — курс, galt — высота GPS.

Датчик температуры и влажности: t — температура, h — влажность.

Прочее: c — счётчик сообщений.

Чтение данных

SerialReader: поток для асинхронного чтения данных с COM-порта.

DataReaderThread: альтернативный поток для чтения из файла.

Данные передаются через сигналы data_received и data_ready.

Обработка телеметрии

Класс DataEntry хранит параметры, такие как температура (t), влажность (h), координаты (lat, lng), углы наклона (tx, ty, tz). Пример парсинга JSON:

telemetry_dict = json.loads(data)

telemetry = DataEntry(**telemetry_dict)

TiltWidget: отображает 3D-модель спутника с использованием VTK. Наклон обновляется через update_orientation().

transform.RotateX(ty)

transform.RotateY(tx)

CompassWidget: визуализирует направление с помощью 3D-стрелки.

AccelWidget: использует Matplotlib для отрисовки векторов ускорений.

На рис. 2 показана 3D-визуализация телеметрии.

3D-визуализация

Рис. 2. 3D-визуализация

Карта

Виджет MapWidget на основе Folium обновляет маршрут через JavaScript:

self.page().runJavaScript(f«updateMap({lat}, {lon});")

База данных

Класс DatabaseManager создает таблицы в SQLite, структура которых зависит от времени запуска. Данные сохраняются методом save_to_database().

Результаты

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

Карта с маршрутом полёта обновляется с использованием JavaScript внутри HTML-страницы, отображаемой в QWebEngineView.

3D-визуализации реализованы с помощью VTK и matplotlib, что позволяет наблюдать динамику наклона спутника, работу компаса и данные акселерометра.

Обработка данных включает проверку наличия всех необходимых параметров и расчет дополнительных величин (например, расчет высоты по барометрическим данным).

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

Приложение имеет вид показанный на рис.3.

Интерфейс приложения: панель параметров (слева), карта (центр), 3D-виджеты (над картой)

Рис. 3. Интерфейс приложения: панель параметров (слева), карта (центр), 3D-виджеты (над картой)

Заключение

Разработанное программное средство для отображения телеметрии стратосферных спутников демонстрирует высокую эффективность в сборе, обработке и визуализации данных в реальном времени. Применение Python и современных библиотек для построения графического интерфейса и 3D-визуализации позволило создать удобное и информативное приложение. В будущем возможно расширение функциональности за счет интеграции дополнительных модулей анализа, оптимизации алгоритмов обработки данных и поддержки новых протоколов связи. Дальнейшее развитие может включать:

— Добавление аналитических графиков.

— Реализацию алгоритмов прогнозирования.

— Поддержку сетевого взаимодействия.

Код проекта доступен в репозитории: https://github.com/MercuryKira/ArctickZond_telem_viewer.