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

Молодой учёный

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

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


В данной статье описывается разработка программного обеспечения для отображения телеметрических данных стратосферных спутников. Приложение реализовано на языке 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.

Можно быстро и просто опубликовать свою научную статью в журнале «Молодой Ученый». Сразу предоставляем препринт и справку о публикации.
Опубликовать статью
Ключевые слова
стратосферный спутник
телеметрия
Python
PyQt
VTK
SQLite
многопоточность

Молодой учёный