Обзор¶
Что это¶
Флоуграф (flowgraph) — граф обработки сигнала в GNU Radio: цепочка блоков,
через которые проходят отсчёты от приёмника до декодированного кадра телеметрии.
В этом репозитории каждый флоуграф описан файлом .grc (YAML, формат GNU Radio
Companion), а при сборке grcc превращает его в исполняемый Python-скрипт
satnogs_<имя>.py.
soniks-flowgraphs содержит два слоя:
Флоуграфы —
.grcв каталогахgeneric/(режимы общего назначения: FM, FSK, BPSK, CW, APT, SSTV) иsatellites/(декодеры под конкретные спутники и протоколы, включая Geoscan и USP).Запускатор —
flowgraph_dispatcher/: Python-скрипт, который выбирает нужный флоуграф по названию режима, поднимает его и три процесса-подписчика, пишущих результаты на диск.
Место в инфраструктуре Соникс¶
┌──────────────────┐
│ soniks-network │ планирует наблюдение: спутник, время, частота, режим
└────────┬─────────┘
│ задание наблюдения
▼
┌──────────────────┐ ┌──────────┐
│ soniks-client-new│───────▶│ rotctld │ наведение антенны
└────────┬─────────┘ └──────────┘
│
│ flowgraph_dispatcher --mode <MODE> --rx-freq=… --soapy-rx-device=…
▼
┌─────────────────────────────────────────────────────────┐
│ flowgraph_dispatcher (этот репозиторий) │
│ │
│ ├── satnogs_<mode>.py ── GNU Radio ──┐ │
│ │ ▲ │ ZMQ │
│ │ │ доплер ▼ │
│ │ ┌────┴────┐ ┌──────────────────────┐ │
│ │ │ rigctld │ │ zmq_frame_decoder_sub│ │
│ │ └─────────┘ │ zmq_iq_sub │ │
│ │ │ zmq_audio_sub │ │
│ └── SoapySDR ◀── антенна └──────────┬───────────┘ │
└──────────────────────────────────────────┼──────────────┘
▼
кадры (JSON) · аудио (OGG) · IQ (raw) · водопад
│
▼
soniks-client-new → soniks-network
Клиент станции не знает про отдельные флоуграфы — он вызывает один бинарник
flowgraph_dispatcher и передаёт ему режим модуляции строкой --mode.
Соответствие «режим → флоуграф» описано в Справочник режимов.
Что происходит во время наблюдения¶
Клиент запускает
flowgraph_dispatcherс параметрами приёмника, частотой и путями к выходным файлам.Диспетчер по
--modeвыбирает скрипт флоуграфа, переписывает часть аргументов (подробности — flowgraph_dispatcher) и сначала поднимает процессы-подписчики, чтобы не потерять первые сообщения.Флоуграф открывает SDR через SoapySDR, компенсирует доплеровский сдвиг по данным от
rigctld, демодулирует сигнал и публикует результаты в три ZMQ-сокета на localhost.Подписчики пишут кадры, аудио и IQ в файлы; водопад флоуграф пишет сам. Форматы — Выходные данные.
По
SIGINTдиспетчер гасит флоуграф и подписчиков и завершается.
Отношение к апстриму SatNOGS¶
Проект — форк
satnogs-flowgraphs
Libre Space Foundation. Вся апстримовая функциональность сохранена; последнее
слияние с апстримом — коммит 9079469.
Изменения форка относительно апстрима:
Изменение |
Где |
|---|---|
Декодер Geoscan (GFSK) |
|
Декодер USP / Спутникс |
|
Режим |
|
Добавлен отдельный режим |
|
Кадр записывается даже при пустых метаданных |
|
Нижняя граница децимации |
флоуграфы Geoscan и USP |
Подробный разбор двух новых декодеров — Декодер Geoscan и Декодер USP (Спутникс).
Примечание
«Спутникс» встречается только в сообщениях коммитов. В коде, в названиях файлов и в строке режима используется «USP» — по названию протокола Unified SPUTNIX Protocol.
Что дальше¶
Установить и собрать: Установка и сборка
Запустить вручную, без клиента: Быстрый старт
Понять внутреннее устройство: Архитектура