Files
SDR-Rover/Projects/SDR_Rover/README.md
LittleSam129 acf7a76546 initial commit
2026-07-20 13:58:58 +03:00

340 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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