diff --git a/ru/fpv.md b/ru/fpv.md index 4d77b10..d06ca97 100644 --- a/ru/fpv.md +++ b/ru/fpv.md @@ -8,17 +8,33 @@ Logo

+Создание доступного радио-линка для передачи видео между радиоуправляемой моделью и оператором всегда занимало умы изобретателей. В 2015 году немецкий энтузиаст Befi [выдвинул идею OpenSource дрона](https://befinitiv.wordpress.com/wifibroadcast-analog-like-transmission-of-live-video-data/), где предложил использовать обычные WiFi адаптеры, число которых во всем мире уже достигло несколько миллиардов штук, а цена снизилась насколько, что они стали самыми доступными видами цифровых приемо-передатчиков. + +Ключевой идей были не сами WiFi адаптеры, а нетрадиционный метод их использования: отказ от установки сетевого соединения и перевод в широковещательный режим, когда один адаптер выполняет функцию передатчика цифрового сигнала, в второй - является приемником. + +Было предложено взять бюджетный SBC Raspberry Pi, подключить к нему камеру по MIPI интерфейсу и USB WiFi донгл с числа рекомендуемых, а с другой стороны на приемнике - аналогичный WiFi модуль с HDMI монитором. При этом вместо традиционного для передачи видео с низкой задержкой протокола UDP был использован протокол более низкого уровня для гибкого управления данными: управлением шириной полосы, мощностью передатчика и возможностью восстановления данных, если пакет при отправке был [частично поврежден](https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D1%8F%D0%BC%D0%B0%D1%8F_%D0%BA%D0%BE%D1%80%D1%80%D0%B5%D0%BA%D1%86%D0%B8%D1%8F_%D0%BE%D1%88%D0%B8%D0%B1%D0%BE%D0%BA). Одной из технических проблем являтся то, что не каждый WiFi адаптер способен работать в таком низкоуровневом режиме, более того: практически всегда приходится устанавливать специальные драйверы, которые существуют только под Linux. + +Приемник в этом режиме работает в так называемом `monitor mode`, когда он принимает и передает операционной системе каждый пакет заданного WiFi канала, где затем решается что с ним делать дальше: декодировать или отбросить. WiFi адаптер передатчика должен работать в `injection mode`, когда ядро операционной системы фактически не участвует в формировании сетевых пакетов, предписанной сетевой моделью ISO. Часть адаптеров поддерживает оба режима, некоторые из них - только какой-то один, поэтому могут стоять только на стороне передатчика или приемника. + +

+ Первый в истории дрон под управлением Wifibroadcast +

+ +Проект был назван [Wifibroadcast](https://github.com/befinitiv/wifibroadcast), его идеи получили дальнейшее развитие в проекте [EZ-WifiBroadcast](https://github.com/rodizio1/EZ-WifiBroadcast), после чего новая команда разработчиков переписала исходный код с нуля в самом популярном на сегодняшний день проекте [OpenHD](https://github.com/OpenHD/OpenHD). Кроме того в процессе эволюции появились независимые проекты [WFB-ng](https://github.com/svpcom/wfb-ng) и [Ruby](https://rubyfpv.com/) (последний с закрытым исходным кодом). + +## Революция от OpenIPC + Классический сетап в проекте [OpenHD](https://openhdfpv.org/) (и других похожих проектов) состоит из MIPI- или USB- камеры, подключенной к Raspberry Pi и Jetson Nano, которые выступают видеоэнкодером и роутером воздушной системы и в свою очередь соединены с WiFi адаптером по USB и с полетным контроллером по UART. Наземная станция обычно состоит из такого же WiFi адаптера, роутера и высококонтрастного монитора или очков. Иногда MIPI- или USB- камера меняется на IP-камеру, которая и мощнее (имеет свой собственный аппаратный энкодер) и стоит дешевле при аналогичных характеристиках. Большинство современных видеокамер являются типовыми embedded устройствами с Linux на борту (но значительно скромнее в размерах RAM и флеш памяти по сравнению с Raspberry и Jetson), что позволяет перекомпилировать и запускать на них практически любое переносимое ПО. -В процессе работы с данной технологией возникла идея об упрощении полетной системы и переноса всего необходимого ПО непосредственно на IP-камеру. Технически FPV прошивка проекта OpenIPC представляет собой специальную сборку с двумя типами драйверов популярных WiFi адаптеров, стримера Majestic (который выполняет роль GStreamer в классической схеме на системе-передатчике) и [WFB-ng](https://github.com/svpcom/wifibroadcast). К сожалению, из-за значительного размера бинарного кода WiFi драйверов и зависимости в виде libstd++ (часть WFB-ng написана на C++), минимальные требования к системе на ряде плат увеличились до 16 мегабайт флеш памяти. +В процессе работы с данной технологией возникла идея об упрощении полетной системы и переноса всего необходимого ПО непосредственно на IP-камеру. Технически FPV прошивка проекта OpenIPC представляет собой специальную сборку с двумя типами драйверов популярных WiFi адаптеров, стримера Majestic (который выполняет роль GStreamer в классической схеме на системе-передатчике) и [WFB-ng](https://github.com/svpcom/wifibroadcast). ### Преимущества * Снижается стоимость системы (IP камера с поддержкой H.265 против аналога на Jetson Nano с MIPI камерой) * Снижается общее потребление и увеличивается надежность системы за счет упрощения схемы -* Снижается задержка передачи видео: на наших Glass-to-Glass тестах мы получали для 1080p@60 задержку около 80ms (на среднебюджетных камерах), и для 720p@30 около 130 ms и 1080p@30 около 150 ms (для самых бюджетных камер) +* Снижается задержка передачи видео: на наших Glass-to-Glass тестах мы получали для 1080p@60 задержку около 80ms (на среднебюджетных камерах), и для 720p@60 около 60 ms и 1080p@30 около 100 ms (для самых бюджетных камер) * Появляется возможность тюнинга аппаратного энкодера, например более частого формирования I кадра (специфика сильно зависит от вендора IP камеры) * Сообществом накоплен огромный опыт [ремонта IP камер](https://t.me/ExIPCam), что позволяет еще более удешевить стоимость эксплуатации системы