Open Source проект по мониторингу воздушного пространства на SDR
Зачем вообще делать радар из телевизора?
Традиционные радиолокационные системы (РЛС) — это огромные антенны, киловатты мощнос��и, разрешения на частоты и бюджеты уровня «военного отдела». Нам же хотелось видеть небо, не нарушая ни законов физики, ни законодательства.
Так родилась идея собрать пассивную когерентную локацию (PCL) — систему, которая ничего не излучает, а просто слушает уже существующие сигналы в эфире.
FM-радио, LTE, цифровое ТВ — всё это мощные «осветители», которые и так покрывают территорию. Почему бы не использовать их?
Мы выбрали сигнал DVB-T2 (546 МГц) — стабильный, мощный, и что особенно приятно — с известной структурой (OFDM).
Результат? Получился радар без передатчика, который можно запустить хоть на балконе. И да, всё это — на полностью open source стеке.
Архитектура: что мы собрали
Чтобы превратить ТВ-сигнал в радар, нам понадобилось не так уж много железа, но с хитростью.
Capture Unit (RPi 5 + KrakenSDR)
Снимает IQ-потоки с 5 приёмных каналов, синхронизированных по PPS и GPSDO.Processing Server
Получает UDP-потоки, вычисляет CAF (Cross-Ambiguity Function) и CFAR-детекции, объединяет треки с помощью Kalman Filter и Hungarian algorithmWebSocket API
Рассылает JSON-треки в реальном времени клиентам — веб-панелям, картам и системам визуализации.
Компонент |
Назначение |
Примечание |
|---|---|---|
KrakenSDR (5 каналов) |
Приём сигналов с антенн |
Многоканальность нужна для фазовых измерений и пеленгации |
Антенный массив (5× Yagi-Uda) |
1 референсная антенна + 4 следящие |
Референсная ловит прямой сигнал DVB-T2, остальные — отражения |
Raspberry Pi 5 |
Вычислительный блок |
Обрабатывает IQ-потоки в реальном (или почти реальном) времени |
Осветитель (Illuminator) |
Сеть DVB-T2 |
Некооперативный, но стабильный источник сигнала |
На практике это выглядит довольно забавно: несколько антенн на крыше, Pi5 с Kraken’ом на столе, и ноутбук с Python’ом, который «слушает телевизор» и находит дроны самолетного типа.
Пайплайн DSP: как из шума извлечь движение
Главная задача — отделить динамические отражённые сигналы от всего остального: земли, домов и гор.
Сырые IQ-потоки проходят через несколько ключевых этапов цифровой обработки.
1. CAF: превращаем эфир в «кадр радара»
Мы вычисляем Cross Ambiguity Function (CAF) — по сути, это двумерная карта, где:
ось задержки (delay) показывает расстояние,
ось Доплера — скорость объекта.
Результат похож на тепловую карту, где почти весь центр — это «статический столб» (clutter).
2. MTI: избавляемся от статики
Чтобы выделить движущиеся объекты, мы применяем MTI-фильтр (Moving Target Indication).
Принцип простой: вычитаем предыдущий кадр из текущего.
# MTI: удаляем статику, оставляем движение
filtered_caf = caf_frame_t - caf_frame_t_minus_1
Если сигнал не изменился — исчезает.
Если что-то движется — появляется всплеск.
После этого “тишина эфира” превращается в живую картину с подвижными точками.
3️3. CFAR + Kalman Filter — из вспышек в устойчивые треки
CFAR (Constant False Alarm Rate) — адаптивный детектор, который ищет цели, не увеличивая ложные срабатывания.
А Kalman Filter помогает связать отдельные кадры в треки и предсказать движение объектов.
Чтобы не путать цели, используем Hungarian algorithm для сопоставления детекций между кадрами.
? Результат: каждая цель получает свой ID и непрерывно отслеживается, даже если сигнал временно пропадает.
Технические вызовы
Сейчас проект активно развивается, и вот с чем мы боремся:
? Фазовая когерентность KrakenSDR.
Как синхронизировать четыре приёмных канала, если источник (DVB-T2) никак с нами не связан? Пока пробуем софтверную компенсацию.
? Оптимизация DSP на Raspberry Pi 5.
Расчёт CAF прожорлив: NumPy и SciPy не всегда успевают.
Пробуем переносить части расчётов на GPU через OpenCL или CUDA.
? Особенности OFDM.
Хотим минимизировать боковые лепестки и артефакты при обработке DVB-T2 — поле для экспериментов и дискуссий.
Open Source и масштабирование
Весь проект — open source.
KrakenSDR и Raspberry Pi 5 стоят не дороже роутера, поэтому можно собирать целые сети пассивных приёмников.
Они могут совместно покрывать территории на сотни километров, естественно там где присутствует FM, LTE,
? Репозиторий:
? github.com/Stanislav-sipiko/passive-sdr-radar
? Присоединяйтесь
Если вы разбираетесь в SDR, цифровой обработке, оптимизации Python или просто хотите помочь улучшить алгоритмы — будем рады вашей помощи.
Комментарии (7)

VO_Obsidian
13.11.2025 10:37Задумка на 5, реализация на непонятно сколько, описание на двоечку. Что от статьи что от репозитория и документов в нем настолько пахнет чатгпт, плюс никаких результатов не опубликовано, что я даже затрудняюсь оценить техническую сторону проекта. Поэтому пожалуй прокомментирую по статье:
Теория. Если всё же почитать статью не по диагонали, то оказывается там не описано как работает радар, соответственно непонятно что вы делаете. Идет описание архитектуры, а потом сразу пайплайн. Что вся это штука делает в общем - непонятно.
Наглядные материалы. Вам сложно было стырить пару схематических картинок по запросу passive coherent location radar? Если у вас в репозитории есть че-то сказано про визуализацию, то что, сложно было показать пример этой вашей "тепловой карты"?
Терминология. Как говорили великие: "Ты - чудовище" и "это полный пи****". Статья вызовет кринж не то что у студента радиоэлектроники, а у любого кто читал хоть какие-то материалы по радио на русском языке. Какой, к чёрту, антенный массив? CFAR, CAF, MTI имеют устоявшиеся переводы. Оставлять почему-то фильтр Калмана без перевода, где он как раз дословный, ну это просто пушка.
Пока я всё это проверял, потому что не особо верил своим глазам, заметил ещё одну большую проблему. У вас в статье нигде не сказано, каким же образом вы используете кракена. Вы сделали антенную решётку на 5 элементов или всё же, как нормальные люди, на 4, а пятый канал принимает чистный сигнал от передатчика DVB-T2/LTE, вместо отраженных?
Про проблему синхронизации тоже не понял. Источник фактически точечный, что вы там хотите синхронизировать то?
MAXH0
Интересно. Если действительно утыкать все многоэтажки такими пассивными антеннами то можно дроны пеленговать?..