Specification for the first transmission through real hardware. The project has no TX call anywhere across Lab001-Lab041, so the whole chain exists but has never been connected to a transmitter. Scope is deliberately minimal: get a JPEG through a cable loopback on a single PlutoSDR and see the picture. Single device means TX and RX share a reference clock, which removes the carrier offset and clock drift that the receiver chain handles weakest. - reuse Lab018 signal parameters unchanged, so hardware is the only new variable - reuse image_fragments, packet, build_radio_frame, find_radio_frame - list the first-time traps: cyclic TX buffer, sample scaling, RX started after TX, undersized RX buffer, automatic gain, receiver saturation - define acceptance criteria and required measurements - state explicitly what is out of scope: retransmission, erasure coding, higher rate, two devices, over-the-air Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
SDR Rover Link
1. Назначение проекта
SDR Rover Link — учебно-исследовательский проект по разработке цифрового радиоканала для наземного робототехнического комплекса с использованием программно-определяемого радио — SDR, Software Defined Radio.
Проект должен пройти полный путь от передачи простого текстового пакета до передачи телеметрии и отдельных JPEG-изображений через реальный радиоканал.
Основная задача проекта — не только получить работающую систему, но и последовательно изучить все этапы цифровой радиосвязи:
- формирование данных;
- разбиение данных на пакеты;
- контроль целостности;
- исправление ошибок;
- цифровую модуляцию;
- формирование IQ-сигнала;
- передачу через SDR;
- приём и демодуляцию;
- восстановление исходных данных.
2. Целевой сценарий
Разрабатываемая система предназначена для исследовательского наземного ровера.
Целевые требования:
| Параметр | Требование |
|---|---|
| Дальность связи | до 10 км |
| Скорость ровера | до 25 км/ч |
| Прямая радиовидимость | может отсутствовать |
| Рабочие частоты | ниже 350 МГц |
| Основной тип данных | телеметрия и отдельные изображения |
| Формат изображения | JPEG |
| Частота передачи изображений | отдельные кадры, не видеопоток |
| Действие при потере связи | безопасная остановка ровера |
Дальность 10 км без прямой видимости является целевым исследовательским требованием, а не гарантированной характеристикой первой версии системы.
3. Почему не используется обычное FPV-видео
Типовые FPV-системы работают преимущественно в диапазонах 2,4 и 5,8 ГГц.
Для наземного робота такие диапазоны имеют ряд ограничений:
- высокие потери при работе у поверхности земли;
- затенение рельефом, зданиями и растительностью;
- быстрое ухудшение изображения при слабом сигнале;
- высокая загруженность распространённых диапазонов;
- зависимость от постоянного широкополосного видеопотока.
В этом проекте вместо непрерывного видео предполагается передавать отдельные сжатые изображения.
Пример:
Камера
↓
JPEG-изображение
↓
Разбиение на пакеты
↓
Передача через SDR
↓
Сборка изображения на наземной станции
Такой подход позволяет существенно снизить требуемую скорость радиоканала.
4. Текущее оборудование
SDR-оборудование
- RTL-SDR — приёмник;
- ADALM-PlutoSDR — приёмопередатчик, ожидается поступление;
- HackRF One — может временно использоваться при необходимости.
Вычислительное оборудование
- компьютер под управлением Windows;
- Raspberry Pi — планируется для установки на ровер;
- бортовой вычислитель ровера — будет выбран позднее.
Программное обеспечение
- Python 3.12;
- Anaconda;
- Spyder;
- Git;
- GNU Radio — будет установлен на следующем этапе;
- libiio и драйверы PlutoSDR — будут установлены после получения устройства.
5. Предварительно рассматриваемые диапазоны
В рамках проекта рассматриваются:
- 27 МГц;
- 50 МГц;
- 144 МГц;
- другие разрешённые для лабораторных испытаний частоты ниже 350 МГц.
Конкретный диапазон будет выбран после анализа:
- доступной полосы;
- требований законодательства;
- размеров антенны;
- потерь распространения;
- уровня внешних помех;
- возможностей выходного радиочастотного тракта;
- допустимой мощности передачи.
Передача по эфиру должна выполняться только на разрешённых частотах и с соблюдением допустимой мощности. Первые опыты следует проводить через аттенюатор, эквивалент нагрузки или в экранированной лабораторной конфигурации.
6. Основные этапы проекта
Этап 0. Подготовка среды
- создание репозитория;
- настройка Git;
- настройка Python и Spyder;
- подготовка структуры каталогов;
- ведение документации.
Этап 1. Пакетный протокол
- структура пакета;
- типы сообщений;
- порядковый номер пакета;
- длина данных;
- CRC;
- кодирование и декодирование.
Этап 2. Виртуальный канал
- передача пакетов между Python-программами;
- имитация потерь;
- имитация повреждения битов;
- измерение числа ошибочных пакетов.
Этап 3. Передача файлов
- разбиение файла на фрагменты;
- нумерация фрагментов;
- подтверждение приёма;
- повторная передача;
- сборка исходного файла.
Этап 4. Передача изображений
- загрузка JPEG;
- разбиение JPEG на пакеты;
- передача через виртуальный канал;
- восстановление изображения;
- обработка потерянных фрагментов.
Этап 5. Физический уровень
- BPSK;
- QPSK;
- формирование символов;
- IQ-сэмплы;
- синхронизация;
- фильтрация;
- оценка BER и PER.
Этап 6. PlutoSDR
- подключение устройства;
- передача несущей;
- передача тестовой последовательности;
- передача цифрового пакета;
- приём сигнала RTL-SDR или вторым SDR.
Этап 7. Радиоканал передачи изображений
- передача JPEG через SDR;
- измерение времени доставки;
- испытания при различных уровнях сигнала;
- испытания при наличии помех;
- подбор скорости и модуляции.
Этап 8. Полевые испытания
- испытания на малой мощности;
- испытания на малой дистанции;
- постепенное увеличение расстояния;
- испытания с ретранслятором;
- испытания на наземном ровере.
7. Структура репозитория
SDR_Rover
│
├── README.md
├── docs
├── protocol
├── rover
├── ground_station
├── gnuradio
├── tests
└── tools
docs
Документация, лабораторные работы, схемы и отчёты.
protocol
Реализация пакетного протокола:
- структура пакета;
- CRC;
- кодирование;
- декодирование;
- типы сообщений.
rover
Программы, которые будут работать на борту ровера:
- получение изображения;
- сжатие JPEG;
- передача телеметрии;
- формирование радиопакетов.
ground_station
Программы наземной станции:
- приём пакетов;
- сборка изображений;
- отображение телеметрии;
- управление передачей.
gnuradio
Схемы GNU Radio Companion:
- передатчик;
- приёмник;
- BPSK-модем;
- QPSK-модем;
- тестовые генераторы.
tests
Автоматические и лабораторные тесты.
tools
Вспомогательные программы:
- анализ пакетов;
- генераторы тестовых данных;
- построение графиков;
- анализ журналов.
8. Принципы разработки
В проекте применяются следующие правила:
- Каждый новый термин сначала объясняется, затем используется.
- Каждый этап должен завершаться работающим результатом.
- Радиоканал и пакетный протокол разрабатываются отдельно.
- Код проверяется автоматическими тестами.
- Все существенные решения фиксируются в документации.
- Сложность увеличивается постепенно.
- Испытания по эфиру начинаются только после проверки через виртуальный канал.
- Передатчик сначала проверяется через аттенюатор или эквивалент нагрузки.
9. Текущий статус
Выполнено:
- установлен Python;
- установлена Anaconda;
- выбран Spyder;
- установлен Git;
- создан локальный Git-репозиторий;
- создана базовая структура каталогов.
Следующая задача:
Создать первый Python-модуль пакетного протокола и передать сообщение через виртуальный канал без SDR-оборудования.
10. Ближайший контрольный результат
Первая рабочая версия должна выполнять следующий цикл:
Текстовое сообщение
↓
Преобразование в байты
↓
Формирование пакета
↓
Добавление CRC
↓
Имитация радиоканала
↓
Проверка CRC
↓
Восстановление сообщения
Первое тестовое сообщение:
HELLO SDR
11. Автор
Антон
НИЯУ МИФИ
2026