Files
SDR-Rover/README.md

12 KiB
Raw Blame History

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. Принципы разработки

В проекте применяются следующие правила:

  1. Каждый новый термин сначала объясняется, затем используется.
  2. Каждый этап должен завершаться работающим результатом.
  3. Радиоканал и пакетный протокол разрабатываются отдельно.
  4. Код проверяется автоматическими тестами.
  5. Все существенные решения фиксируются в документации.
  6. Сложность увеличивается постепенно.
  7. Испытания по эфиру начинаются только после проверки через виртуальный канал.
  8. Передатчик сначала проверяется через аттенюатор или эквивалент нагрузки.

9. Текущий статус

Выполнено:

  • установлен Python;
  • установлена Anaconda;
  • выбран Spyder;
  • установлен Git;
  • создан локальный Git-репозиторий;
  • создана базовая структура каталогов.

Следующая задача:

Создать первый Python-модуль пакетного протокола и передать сообщение через виртуальный канал без SDR-оборудования.


10. Ближайший контрольный результат

Первая рабочая версия должна выполнять следующий цикл:

Текстовое сообщение
        ↓
Преобразование в байты
        ↓
Формирование пакета
        ↓
Добавление CRC
        ↓
Имитация радиоканала
        ↓
Проверка CRC
        ↓
Восстановление сообщения

Первое тестовое сообщение:

HELLO SDR

11. Автор

Антон

НИЯУ МИФИ

2026