340 lines
12 KiB
Markdown
340 lines
12 KiB
Markdown
# 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 |