# 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 ГГц. Для наземного робота такие диапазоны имеют ряд ограничений: - высокие потери при работе у поверхности земли; - затенение рельефом, зданиями и растительностью; - быстрое ухудшение изображения при слабом сигнале; - высокая загруженность распространённых диапазонов; - зависимость от постоянного широкополосного видеопотока. В этом проекте вместо непрерывного видео предполагается передавать отдельные сжатые изображения. Пример: ```text Камера ↓ 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. Структура репозитория ```text 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. Принципы разработки В проекте применяются следующие правила: 1. Каждый новый термин сначала объясняется, затем используется. 2. Каждый этап должен завершаться работающим результатом. 3. Радиоканал и пакетный протокол разрабатываются отдельно. 4. Код проверяется автоматическими тестами. 5. Все существенные решения фиксируются в документации. 6. Сложность увеличивается постепенно. 7. Испытания по эфиру начинаются только после проверки через виртуальный канал. 8. Передатчик сначала проверяется через аттенюатор или эквивалент нагрузки. --- ## 9. Текущий статус Выполнено: - установлен Python; - установлена Anaconda; - выбран Spyder; - установлен Git; - создан локальный Git-репозиторий; - создана базовая структура каталогов. Следующая задача: > Создать первый Python-модуль пакетного протокола и передать сообщение через виртуальный канал без SDR-оборудования. --- ## 10. Ближайший контрольный результат Первая рабочая версия должна выполнять следующий цикл: ```text Текстовое сообщение ↓ Преобразование в байты ↓ Формирование пакета ↓ Добавление CRC ↓ Имитация радиоканала ↓ Проверка CRC ↓ Восстановление сообщения ``` Первое тестовое сообщение: ```text HELLO SDR ``` --- ## 11. Автор Антон НИЯУ МИФИ 2026