Passive radar implementation using KrakenSDR.
Система пассивного радиолокационного наблюдения на основе KrakenSDR, Raspberry Pi 5 и центрального сервера
docker build -t passive-radar .
docker run --rm passive-radarили через docker-compose:
docker-compose up --buildРазработать пассивный радар для обнаружения воздушных целей (БПЛА, ракеты) с использованием сигналов DVB-T2 и приёмников KrakenSDR.
Система должна:
- Отфильтровывать статические отражения
- Детектировать и сопровождать движущиеся цели
- Передавать данные в реальном времени для отображения на карте
- Как отделить статические отражения от динамических целей
- SDR & IQ sample
- ОС: Linux (Ubuntu 20.04+), Windows 10/11
- Python: 3.9+
- Зависимости: см.
requirements.txt - Оборудование: KrakenSDR (5-канальный SDR), GPS/PPS для синхронизации
git clone https://github.com/Stanislav-sipiko/passive-sdr-radar.git
cd passive-sdr-radar
pip install -r requirements.txt
python main.pypassive_radar/
├─ capture/ # чтение и калибровка IQ данных
├─ caf/ # вычисление CAF
├─ preprocess/ # фильтры MTI, high-pass
├─ detect/ # CFAR детекция
├─ postprocess/ # морфология, кластеризация
├─ track/ # трекер (Kalman + Hungarian)
├─ output/ # сохранение результатов
├─ realtime/ # websocket сервер для карты
└─ tools/ # утилиты ┌───────────────┐
│ IQ Capture │ (KrakenSDR: reference + surveillance)
└──────┬────────┘
│
▼
┌───────────────┐
│ CAF │ (Delay × Doppler)
└──────┬────────┘
│
▼
┌───────────────┐
│ MTI / CFAR │ (фильтрация + детектор)
└──────┬────────┘
│
▼
┌───────────────┐
│ Clustering │ (DBSCAN/HDBSCAN)
└──────┬────────┘
│
▼
┌───────────────┐
│ Tracking │ (Kalman + ID assignment)
└──────┬────────┘
│
▼
┌───────────────┐
│ Output JSON │ → WebSocket → Browser Map (Leaflet)
└───────────────┘- capture/kraken_reader.py → читает и калибрует IQ.
- preprocess/filters.py → нормализует, фильтрует, убирает помехи.
- caf/caf.py → считает CAF.
- detect/cfar.py → находит пики.
- postprocess/morphology.py + clustering.py → чистка + объединение целей.
- track/tracker.py → сопровождение.
- output/saver.py → сохраняет результаты.
- realtime/ws_server.py → стрим в реальном времени.
Входные данные: IQ-файлы (reference + surveillance канал) Выходные данные: карта детекций + треки целей (JSON, WebSocket)
{
"id": 12,
"range": 15.2,
"doppler": -45.3,
"velocity": 140,
"timestamp": "2025-10-02T18:24:12Z"
}- CAF карта (Delay × Doppler)
- Детекции после CFAR
- Треки целей на карте (Leaflet + WebSocket)
- Подключение реальных данных с KrakenSDR
- Улучшение CFAR и фильтрации
- Трекинг с идентификацией целей
GPL-3.0