Repair project layout and fix Lab024B spectrum detection
This commit is contained in:
340
README.md
Normal file
340
README.md
Normal file
@@ -0,0 +1,340 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user