Slide 1

Slide 1 text

Как работает спутниковая связь и при чём тут Python?

Slide 2

Slide 2 text

Геташвили Артем Питоню Веду паблик Впервые выступаю

Slide 3

Slide 3 text

01 05 04 02 03 Космические новости Передача сигнала Примеры Python Спутниковая связь Спутниковая система

Slide 4

Slide 4 text

Что там в космосе сейчас? 01

Slide 5

Slide 5 text

Мы живем в удивительное время На Землю летит астероид Японцы запускают деревяный спутник Наши космонавты летают с американцами

Slide 6

Slide 6 text

Спутниковая связь 02

Slide 7

Slide 7 text

Как работает спутниковая связь? Земная станция отправителя передает сигнал на спутник, который его усиливает и переизлучает к земной станции получателя

Slide 8

Slide 8 text

Путь, который проходит сигнал 72 000 км 0,5 сек Время для прохождения пути

Slide 9

Slide 9 text

Почему вообще пользуются спутниками? Высокая дальность действия Надежность Работает в зонах с ограниченным покрытием традиционных сетей связи

Slide 10

Slide 10 text

Спутниковая система 03

Slide 11

Slide 11 text

Из чего состоит система? Космос Спутники Земля Наземные станции Пользователь 1 2 3 Спутники постоянно передают навигационные сигналы с точным временем Приёмники принимают сигналы и могут запрашивать дополнительные корректировки через наземный сегмент Станции управления отправляют корректирующие данные на спутники для поддержания точности

Slide 12

Slide 12 text

Какие бывают типы орбит в зависимости от высоты над поверхностью Земли Геостационарная орбита (GEO) Средневысотная орбита (MEO) Низковысотная орбита (LEO) - Высота: 36000 км над уровнем моря - Движется синхронно с вращением Земли - Спутник может охватывать до трети Земли Телекоммуникация - Высота: 2000-35000 км GPS - Высота: 160-2000 км - Минимальная задержка сигнала Снимки с Земли

Slide 13

Slide 13 text

Передача сигнала 04

Slide 14

Slide 14 text

Какие бывают частоты L C S Навигационные системы (GPS, ГЛОНАСС) Метеорологические спутники Метеорологические исследования Научные спутники Телекоммуникационные системы Военные системы связи X Радиолокационные системы Специальные системы наблюдения

Slide 15

Slide 15 text

Какие бывают частоты Ku Ka K Спутниковое телевидение Широкополосный интернет Высокоскоростной интернет Сети 5G Передовые телекоммуникационные системы

Slide 16

Slide 16 text

Этапы обработки сигнала - Преобразование исходного сигнала - Наложение информации на несущую частоту - Защита от помех - Передача модулированного сигнала на спутник - Усиление сигнала на спутнике - Перенаправление к получателю - Извлечение исходного сигнала - Обработка и восстановление информации - Восстановление оригинального сигнала Модуляция Передача и усиление Демодуляция

Slide 17

Slide 17 text

Python примеры 05

Slide 18

Slide 18 text

Где применяют Python? Python Анализ данных Обработка изображений Моделирование и симуляция Автоматизация Научные вычисления Разработка GUI Машинное обучение

Slide 19

Slide 19 text

Анализ данных и обработка изображений Обработка изображений со спутников земной поверхности NASA's Landsat Анализ данных с марсоходов (Curiosity, Perseverance) Анализ данных от телескопа Hubble и других космических обсерваторий

Slide 20

Slide 20 text

Библиотека Rasterio ● Документация ● Landsat изображение

Slide 21

Slide 21 text

import rasterio import numpy as np import matplotlib.pyplot as plt with rasterio.open('1979_St_Helens.tif') as dataset: red = dataset.read(1) nir = dataset.read(3) def calculate_ndvi(nir, red): ndvi =(nir.astype(float) - red.astype(float)) / (nir + red) return ndvi ndvi = calculate_ndvi(nir, red)

Slide 22

Slide 22 text

plt.figure(figsize=(10,10)) plt.title("NDVI") plt.imshow(ndvi, cmap='RdYlGn') plt.colorbar() plt.show() with rasterio.open( 'ndvi.tif', 'w', driver='GTiff', height=ndvi.shape[0], width=ndvi.shape[1], count=1, dtype=ndvi.dtype, crs=dataset.crs, transform=dataset.transform, ) as dst: dst.write(ndvi, 1)

Slide 23

Slide 23 text

NDVI

Slide 24

Slide 24 text

NDVI

Slide 25

Slide 25 text

Научные вычисления и моделирование ● Траекторные расчеты для миссий (SpiceyPy - Python версия SPICE библиотеки) Симуляция условий на других планетах и Луне (Хабр) Моделирование работы космических аппаратов в программе OpenMDAO

Slide 26

Slide 26 text

Расстояние от кометы C/2013 A1 до Марса ● Документация spicepy ● Данные

Slide 27

Slide 27 text

"""Расчет расстояния между объектами в космосе.""" import spiceypy as spice import datetime def get_spice_date(date): return spice.utc2et(date.strftime('%Y-%m-%dT%H:%M:%S')) # Инициализация SPICE def load_spice_kernels(): spice.furnsh('siding_spring_s46.bsp’) # Траектория кометы spice.furnsh('naif0012.tls’) # Високосные секунды

Slide 28

Slide 28 text

def calculate_distance_between_comet_and_mars(date): et = get_spice_date(date) comet_state, _ = spice.spkgeo( targ=399, et=et, ref='ECLIPJ2000’, obs=10, ) mars_state, _ = spice.spkgeo( targ=499, et=et, ref='ECLIPJ2000’, obs=10, ) vector = [mars_state[i] - comet_state[i] for i in range(3)] distance_km = spice.vnorm(vector) return distance_km

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

Разработка прототипов ● Быстрое создание ПО наземных станций для связи со спутниками (cFS-EDS-GroundStation) Разработка экспериментальных программ для МКС (pISSStream) Прототипирование систем управления малыми спутниками CubeSat (PyCubed)

Slide 31

Slide 31 text

Автоматизация процессов ● Автоматизация анализа телеметрических данных с космических аппаратов ● Автоматизация тестирования космического оборудования

Slide 32

Slide 32 text

"""Визуализация телеметрических данных с помощью spacepy.""" from spacepy import pycdf def analyze_themis_data(file_path): with pycdf.CDF(file_path) as cdf: print("Available variables:", list(cdf.keys())) if 'thb_fbk_time' in cdf: time_data = cdf['thb_fbk_time'][...] if 'thb_fbh' in cdf: fbh_data = cdf['thb_fbh'][...] plt.figure(figsize=(10, 6)) plt.plot(time_data, fbh_data) plt.title('THEMIS FBK Data (THB_FBH)’) plt.xlabel('Time’) plt.ylabel('FBH Value’) plt.grid(True) plt.show() else: print("FBH data not found in the file.")

Slide 33

Slide 33 text

● Spacepy ● Данные

Slide 34

Slide 34 text

"""Анализ и визуализация телеметрических данных.""" import pandas as pd import matplotlib.pyplot as plt NORMAL_TEMPERATURE_RANGE = (-30, 50) NORMAL_BATTERY_VOLTAGE_RANGE = (3.5, 5.0) def load_telemetry_data(file_path): data = pd.read_csv(file_path, sep=',', encoding='utf-8’) print("Данные успешно загружены.") return data def find_outliers(data, column, normal_range, column_name): outliers = data[~data[column].between(*normal_range)] if not outliers.empty: print(f"Обнаружены аномалии{column_name}:{len(outliers)} записей") return outliers

Slide 35

Slide 35 text

def analyze_telemetry(data): temp_outliers = find_outliers( data, 'Temperature’, NORMAL_TEMPERATURE_RANGE, 'температуры’, ) voltage_outliers = find_outliers( data, 'BatteryVoltage’, NORMAL_BATTERY_VOLTAGE_RANGE, 'напряжения батареи’, ) return { 'temperature_outliers': temp_outliers, 'battery_voltage_outliers': voltage_outliers, } def plot_telemetry(data): plt.figure(figsize=(12, 6))

Slide 36

Slide 36 text

def create_subplot(ax_num, data_col, title, ylabel, normal_range, color): plt.subplot(2, 1, ax_num) plt.plot(data_col, label=title, color=color) plt.axhline( normal_range[0], color='red’, linestyle='--’, label='Нижний предел’, ) plt.axhline( normal_range[1], color='green’, linestyle='--’, label='Верхний предел’, ) plt.title(title) plt.xlabel('Время') plt.ylabel(ylabel) plt.legend()

Slide 37

Slide 37 text

create_subplot( 1, data['Temperature’], 'Изменение температуры’, 'Температура, °C’, NORMAL_TEMPERATURE_RANGE, 'blue’, ) create_subplot( 2, data['BatteryVoltage’], 'Изменение напряжения батареи’, 'Напряжение, В’, NORMAL_BATTERY_VOLTAGE_RANGE, 'orange’, ) plt.tight_layout() plt.show()

Slide 38

Slide 38 text

Поиск аномальных изменений температуры и напряжения батареи

Slide 39

Slide 39 text

Образование и обучение ● Проект Astro Pi, где используются Raspberry Pi и Python для научных экспериментов на МКС ● Образовательные программы по управлению спутниками (например, European Space Agency's ESERO) ● Конкурсы по разработке программного обеспечения для космических миссий (Hackathons NASA)

Slide 40

Slide 40 text

"""Расчет баллистической траектории.""” def ballistic_trajectory(v0, angle, cd=0.5, rho=1.225, A=0.01, m=1.0, g=9.81, dt=0.01): angle_rad = np.radians(angle) vx = v0 * np.cos(angle_rad) vy = v0 * np.sin(angle_rad) x = 0 y = 0 trajectory_x = [x] trajectory_y = [y] while y >= 0: v = np.sqrt(vx**2 + vy**2) Fd = 0.5 * cd * rho * A * v**2 ax = -Fd * vx / (m * v) ay = -g - Fd * vy / (m * v) vx += ax * dt vy += ay * dt x += vx * dt y += vy * dt trajectory_x.append(x) trajectory_y.append(y) return trajectory_x, trajectory_y

Slide 41

Slide 41 text

initial_velocity = 30 # м/с launch_angle = 45 # градусы mass = 0.1 # кг cross_section_area = 0.005 # м^2 x, y = ballistic_trajectory( initial_velocity, launch_angle, m=mass, A=cross_section_area, ) plt.figure(figsize=(8, 6)) plt.plot(x, y) plt.xlabel("Дальность (м)") plt.ylabel("Высота (м)") plt.title("Баллистическая траектория с сопротивлением воздуха") plt.grid(True) plt.show()

Slide 42

Slide 42 text

No content

Slide 43

Slide 43 text

А где еще используется Python? ● NASA использует Python для анализа данных от Mars Rover (Хабр) ● ESA применяет Python в проектах с малыми спутниками ● Python используется в проекте Open Source Rover NASA

Slide 44

Slide 44 text

No content

Slide 45

Slide 45 text

Спасибо за внимание Мой паблик Моя личка

Slide 46

Slide 46 text

Используемая литература 1. http://www.satcomdv.ru/telefony/stati/statya_likbez/ 2. https://studfile.net/preview/7242538/page:16/ 3. https://www.nkj.ru/archive/articles/16271/ 4. https://thecode.media/viasat/ 5. http://www.sat.belastro.net/glava2/glava2.php 6. https://www.sciencedirect.com/topics/computer-science/artificial-system 7. https://studfile.net/preview/4633603/ 8. https://education.yandex.ru/journal/sputnikovyj-internet-eto-nashe-budushee 9. https://poisknews.ru/kosmos/zachem-v-kosmos-zapuskayut-sputniki/ 10. https://glonass-iac.ru/guide/glonass.php 11. https://spacepy.github.io/ 12. https://spiceypy.readthedocs.io/en/stable/index.html 13. https://rasterio.readthedocs.io/en/stable/ 14. https://themis.ssl.berkeley.edu/data/ 15. https://naif.jpl.nasa.gov/pub/naif/generic_kernels/ 16. https://landsat.visibleearth.nasa.gov/ 17. https://iz.ru/1837851/2025-02-12/nasa-anonsirovalo-polet-crew-dragon-s-rossiiskim-kosmonavtom-k-mks-na-12-marta 18. https://www.rbc.ru/life/news/6729f7959a794758b3eef673 19. https://rg.ru/2025/02/19/nasa-veroiatnost-stolknoveniia-90-metrovogo-asteroida-s-zemlej-vozrosla-do-31.html 20. https://habr.com/ru/articles/331834/