FPV-перегони: таймінг, камери, розпізнавання
Таймер рахує кола, камери самі знаходять, кого знімати, а суддя бачить доказ замість суперечки
Виклик
Перегони FPV у форматі MultiGP — це вісім пілотів у повітрі одночасно, коло за кілька секунд і оператор, який не встигає ні за одним дроном. Таймер фіксує прольоти, але не пояснює, чому коло вийшло неможливо швидким: відбитий сигнал чи зріз траси. Суперечки з пілотами вирішуються на слово, зйомка виходить випадковою, а в соцмережі після заходу не лишається нічого, що варто показати.
Дмитро організовував ці змагання сам: ставив камери, знімав, розбирав відео. Тому система росла з майданчика, а не з технічного завдання — кожна функція відповідає на питання, яке вже виникало на заїзді.
Що збудовано: три модулі
- ✓ Таймінг і суддівство — облік кіл із таймера ImmersionRC LapRF 8-Way, черга підстав для перегляду, голосові оголошення українською з відмінюванням позивних, табло для команди й пілотів
- ✓ Камери й автозйомка — PTZ-камери, детекція людей і дронів, режисер, який сам обирає план в ефірі, запис і монтаж вертикальних роликів для соцмереж
- ✓ Аналіз польоту — розбір відео з камери дрона: події, схема маршруту з еталона, порівняння ліній пілотів; окрема збірка для партнерів із привʼязкою до машини
- ✓ Міст virtual-laprf — система говорить назовні протоколом LapRF, тому LiveTime і FPVTrackside приймають її як звичайний пристрій
Як розмовляє залізо
Таймер LapRF підключений по Ethernet; протокол розібрано до рівня кодека й контрольних сум, годинник пристрою синхронізується з сервером, а підрахунок кіл переживає перепідключення й перезапуск таймера. Для розробки без заліза є симулятор, який поводиться як справжній пристрій.
Камери живуть на одному кабелі Cat6: PoE+ несе живлення, RTSP — відео, VISCA over IP — керування моторами. PTZ наводиться регулятором, який читає позицію з камери, а не вгадує її по картинці. Усі пристрої описані в одному файлі конфігурації; додати камеру — кілька рядків.
Що робить розпізнавання
Схема «розвідник і снайпер»: широкі статичні камери шукають ціль на загальному плані, PTZ доводить її крупно. Одна модель детекції обробляє кадри з усіх камер одним проходом на Apple Silicon. Кожна камера відповідає за свою зону: одна людина — крупний план, кілька — камера відходить ширше, а якщо не вміщає, просить сусідню підстрахувати.
Дрони ведуться як рух проти нерухомого фону з фільтром Калмана, що передбачає наступне положення. Обличчя команди впізнаються, щоб закріпити людину за камерою; емоції глядачів — щоб режисер знав, де зараз цікаво. Режисер тримає план щонайменше кілька секунд, щоб ефір не смикався від кожного спрацювання детекції.
Як виглядає день перегонів
- Мережа піднімається з PoE-комутатора; камери знаходяться за MAC-адресою, бо їхні IP після перезавантаження інші. Сторінка «Здоровʼя» за секунду каже, що саме не піднялось.
- Сервер сам знаходить таймер у мережі, розводить пілотів по частотах Raceband із максимальним рознесенням і калібрує чутливість по шумовій підлозі.
- Під час заїзду кола рахуються й оголошуються голосом, табло відкрите з телефонів команди, режисер перемикає камери, запис іде безперервно — матеріал важливіший за аналітику, бо його не перезнімеш.
- Суддя бачить не «порушення», а підстави для перегляду з доказом: надто швидке коло, відкинутий проліт, розрив звʼязку, розбіжність таймера з відео. Кожне його рішення лягає в журнал.
- Після заходу відео з камер дронів кладуть у теку — аналізатор підхоплює нові файли сам, будує схему маршруту й порівнює лінії пілотів. З записів монтуються вертикальні ролики для соцмереж.
Результат
- ✓ Протокол LapRF перевірено на живому пристрої без жодного нерозібраного запису; журнали переживають аварійне завершення без пошкоджень
- ✓ Суперечки з пілотами замінені доказом: суддя відкриває фрагмент, а не слухає версії
- ✓ Зйомка йде без оператора біля кожної камери, а після заходу є матеріал для соцмереж
- ✓ Команда лишається в LiveTime чи FPVTrackside — нові сенсори не ламають звичний процес
Стек
Python · протокол ImmersionRC LapRF · VISCA over IP · RTSP · PoE+ · YOLO11 · OpenCV · PyAV · фільтр Калмана · Apple Silicon (Metal) · Ed25519 · Nuitka · LiveTime / FPVTrackside
Рідкісна частина
Та сама людина організовує змагання, ставить камери, розбирає протокол таймера і пише детекцію. Тому в системі немає функцій «про всяк випадок» — лише те, що знадобилося на трасі.
Часті питання
Чи замінює система LiveTime або FPVTrackside?
Ні, і не намагається. Сітки, брекети й результати вони роблять добре. Наша система назовні говорить протоколом LapRF, тому LiveTime і FPVTrackside приймають її як звичайний таймер, а команда працює у звичному процесі.
Чи автомат сам знімає пілота за порушення?
Ні. Система нікого не карає — вона показує судді підставу для перегляду й доказ: надто швидке коло, відкинутий проліт, розрив звʼязку з таймером, суперечність між таймером і відео. Рішення завжди за людиною, і кожен вердикт лягає в журнал.
Чи можна віддати аналіз відео партнерському клубу?
Так, є окрема збірка: один модуль аналізу без камер і режисера. Вона привʼязана до конкретної машини, має термін дії ліцензії й власний номер збірки, тому тихо розійтись копіями не може.
