EZ-WifiBroadcast DIY HD видео своими руками
Привет, Лелик,
Прошли месяцы, когда я надеялся, что кому-то удастся заставить эти карты работать, здесь во Франции 2.4g полностью непригодна для использования, а старые карты RT3572 не продаются уже более года!
Я проверил последнее изображение, которое вы сделали 20181007 с pi3 и 8812au.
Видео отличное, с другой стороны, я не могу управлять двунаправленной телеметрией mavlink.
Разве вы не говорите мне, как вы устанавливаете параметры так, чтобы они работали, и на каких контактах raspi вы подключили pixhawk?
Извините за ошибки, я французский, и я использовал перевод Google.
Т.е. картинка идет по RTP через Ethernet или WiFi, без WBC ?
Точно так. Целью было сравнение задержек камер, транспорт и рендер не менялся.
я не могу управлять двунаправленной телеметрией mavlink.
Я не правил двунаправленный передатчик по аналогии с однонаправленным и, скорее всего, там используется неверный тип пакета. Постараюсь проверить это в ближайшее время.
Но, например, камеры для видеонаблюдения имеют latency около секунды…
Не все. Чаще буферизирует софт который отображает картинку. На gstreamer задержка с некоторыми, которые пробовал, приемлимая. Точно её не замерял, но по движению руки отставание чуть более WBC.
Если ЛА на высоте - задержка, в разумных пределах, не важна, а вот качества картинки хочется, Фантик развращает 😃.
А какая камера и какая цепочка gstreamer’а для записи и воспроизведения?
Как-то многовато получилось latency для RPI camera. Я пробовал HIkvision DS-2CD2042WD-I - там все плохо.
Если используете VLC для воспроизведения - то там тоже все плохо с latency.
А какая камера и какая цепочка gstreamer’а для записи и воспроизведения?
Камерка эта
raspivid \
-n \
-t 0 \
-ih \
-pf high \
-fl \
-if both \
-w 1920 \
-h 1080 \
-fps 30 \
-b 7000000 \
-awb shade \
-mm matrix \
-vs \
-ex sports \
-o - \
| gst-launch-1.0 \
fdsrc \
! video/x-h264,width=1920,height=1080,framerate=30/1 \
! h264parse \
! rtph264pay pt=96 config-interval=5 \
! udpsink port=5600 host=...
gst-launch-1.0 \
v4l2src device=/dev/video1 \
! video/x-h264,width=1920,height=1080,framerate=30/1 \
! h264parse \
! rtph264pay pt=96 config-interval=5 \
! udpsink port=5600 host=...
gst-launch-1.0 udpsrc \
port=5600 caps='application/x-rtp' \
! rtph264depay \
! avdec_h264 \
! fpsdisplaysink name=fpssink text-overlay=true \
video-sink="vaapisink fullscreen=true" signal-fps-measurements=true
Если используете VLC для воспроизведения - то там тоже все плохо с latency.
В обоих случаях рендер был один и тот же, интересует же разница в 2.5 раза, а не абсолютные цифры
Я пробовал HIkvision DS-2CD2042WD-I - там все плохо.
Вы б еще “Красногорск” 8мм попробовали бы, там все еще хуже с latency. Это же IP-камера с RTSP, у нее обязана быть задержка на старте.
Вы б еще “Красногорск” 8мм попробовали бы
Во, а у меня есть Mobius 2013-го, я обязательно попробую его.
Всё ли работает у Вас?
На некоторых Pi Zero наблюдался ресет USB до определения карт. Багфикс-версия в обычном месте
PI Camera сейчас под рукой нет, но например Kurokesu C1 у меня дает 61ms
—
gst-launch-1.0 v4l2src device=$device ! ‘video/x-h264,width=1920,height=1080,framerate=30/1,stream-format=byte-stream’ ! rtph264pay ! udpsink host=127.0.0.1 port=5600
gst-launch-1.0 udpsrc port=5600 caps=‘application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264’ ! rtph264depay ! avdec_h264 ! xvimagesink
—
В обоих случаях рендер был один и тот же, интересует же разница в 2.5 раза, а не абсолютные цифры
Ну RTSP камера не обязано быть тормозной - видеопоток там всеравно идет по RTP.
Ну RTSP камера не обязано быть тормозной - видеопоток там всеравно идет по RTP.
RTP там начинается только после хендшейка. А это - задержка, которую уже не убрать.
PI Camera сейчас под рукой нет, но например Kurokesu C1 у меня дает 61ms
У Вас 60 мс на локалхосте, у меня 100 мс между двумя хостами, все похоже.
Можно попросить содержимое /sys/bus/usb/devices/…/manufacturer для курокесы ?
Передача wifi пакета это 1-2ms. 40ms больше похоже на забитый внутреннюю очередь карты. Попробуйте уменьшить bitrate видео и увеличить размер RTP пакетов до максимального, чтобы карта успевала их передавать.
У Вас 60 мс на локалхосте, у меня 100 мс между двумя хостами, все похоже.
Раз уже подтянулись, давайте спасать летающих собратьев.
При подсоединении в полёте второго монитора или сброса приёмной части происходит сброс точки ДОМ, со всеми вытекающими неприятностями.
----
$ cat /sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/manufacturer
Kurokesu
$ lsusb -d 0c45:6366
Bus 003 Device 018: ID 0c45:6366 Microdia
----
Можно попросить содержимое /sys/bus/usb/devices/…/manufacturer для курокесы ?
Сборка (бинарники) моей версии WFB для Raspberry PI:
github.com/svpcom/…/wifibroadcast_rpi.tar.gz
P.S. Это не полный образ для SD-карты, а только бинарники и скрипты для запуска. Образ подходит любой с пропатченым ядром для обычного WFB
При подсоединении в полёте второго монитора или сброса приёмной части происходит сброс точки ДОМ
Ага… Этот умелец при переконфигурации (сеть подключили, монитор аль еще чего) рестартует osd. А оно при запуске координаты из первый пакета
GLOBAL_POSITION_INT считает за home. Боюсь, что терапия здесь не поможет, сильно глубоко лезть надо.
P.S. Стрелка на дом тоже должна слетать
P.P.S. Надо osd перелопачивать для работы с LOCAL_POSITION_NED.
Сборка (бинарники) моей версии WFB OSD для Raspberry PI
github.com/svpcom/…/wifibroadcast_osd.tar.gz
В отличии от оригинала не тормозит на Pi Zero.
В составе OSD и video player.
Для работы подходит любой (можно стандартный) образ для raspberry pi. Совместимо с Pi Zero и выше.
А оно при запуске координаты из первый пакета
Я ему предлагал обновлять точку дома по армингу, вроде писал, что исправил. Естественно и стрелка домой уплывает. А в пакетах Мавлинка точка дома не присутствует?
P.S. Это не полный образ для SD-карты, а только бинарники и скрипты для запуска. Образ подходит любой с пропатченым ядром для обычного WFB
Василий, было бы здорово, если будет инструкция, как всё это сделать. Для меня это тёмный лес.
Для работы подходит любой (можно стандартный) образ для raspberry pi. Совместимо с Pi Zero и выше.
Подскажите пожалуйста, как эту сборку внедрить в образ wfb?
В мавлинке оно только по запросу отдается.
Я ему предлагал обновлять точку дома по армингу, вроде писал, что исправил. Естественно и стрелка домой уплывает. А в пакетах Мавлинка точка дома не присутствует?
Как временной мерой можно предложить вбивать значение Дома в конфиг и считывать оттуда. Это ведь должно проще реализовываться?
Василий, а в твоей версии такого “бага” нет?
Может ещё использовать исходящую телеметрию и формировать запрос? Правда тогда нужно одинаковой мощности и чувствительности стики на наземной и воздушной части.
Я не помню, как все запускается в стандартном WFB образе, но я обычно все сервисы запускаю через systemd.
/lib/systemd/system/osd.service :
-------
[Unit]
Description=FPV OSD
After=network-online.target
[Service]
ExecStart=/usr/bin/osd
Type=simple
Restart=always
RestartSec=1s
TimeoutStopSec=10s
KillMode=control-group
[Install]
WantedBy=multi-user.target
-----
/lib/systemd/system/fpv.service :
-----
[Unit]
Description=FPV video
After=network-online.target
[Service]
ExecStart=/usr/bin/fpv_video.sh
Type=simple
Restart=always
RestartSec=1s
TimeoutStopSec=10s
KillMode=control-group
[Install]
WantedBy=multi-user.target
-----
systemctl daemon-reload
systemctl enable osd
systemctl enable fpv
systemctl start fpv
systemctl start osd
В настройках по умолчанию видео ожидается на порту UDP 5600, mavlink (для osd) на порту: udp 14550
Подскажите пожалуйста, как эту сборку внедрить в образ wfb?
Есть. Там принципиальная проблема в том, что home position не рассылается broadcast’ом. Его можно получить только по запросу и только после взлета.
Соответственно на одностороннем канале связи (как WFB ) это не получится. Как вариант его можно сохранять в файл и читать оттуда при старте OSD.
Как временной мерой можно предложить вбивать значение Дома в конфиг и считывать оттуда. Это ведь должно проще реализовываться?
Василий, а в твоей версии такого “бага” нет?
Может ещё использовать исходящую телеметрию и формировать запрос? Правда тогда нужно одинаковой мощности и чувствительности стики на наземной и воздушной части.
Может доведёшь свой проект до образа ?
Стрёмно летать с домом всё время сзади.
Сейчас уже многие используют двунаправленную телеметрию, похерив управление с аппы через канал связи, вроде всё работает. Я правда ещё не пробовал.
Если их не разносить по частотам или не делать подобие TDMA, то не получится - они будут коллизии производить. Ведь вся суть WFB как раз в выключении механизмов борьбы с коллизиями.
Может ещё использовать исходящую телеметрию и формировать запрос? Правда тогда нужно одинаковой мощности и чувствительности стики на наземной и воздушной части.
Это не так просто. Поясню: у меня, например, на борту как минимум 2 компьютера - NEO2 и Pi Zero для камеры.
На земле и того больше - 2 NEO2 (3 wifi (6 антенн) + SiK-radio (телеметрия 433MHz) + ADS-B приемник) + Pi Zero в FPV-шлеме (все это соединено Ethernet’ом).
Плюс я использую PX4 в качестве автопилота. Маловероятно, что кто-то захочет собрать такой-же setup как я. Соответвенно делать готовый образ для каждой из систем (их 5) смысла не имеет, так как все изменения относительно стандартного образа это и есть их интерграция между собой. Проще написать HOWTO как это все между собой связывать, чем делать образа, которые всеравно придется править после установки.
Может доведёшь свой проект до образа ?
Стрёмно летать с домом всё время сзади.
Сейчас уже многие используют двунаправленную телеметрию, похерив управление с аппы через канал связи, вроде всё работает. Я правда ещё не пробовал.
Я ему предлагал обновлять точку дома по армингу, вроде писал, что исправил. Естественно и стрелка домой уплывает. А в пакетах Мавлинка точка дома не присутствует?
Есть в мавлинке сообщение LOCAL_POSITION_NED, в котором передаются прямоугольные координаты ЛА относительно дома в North-East-Down. При наших (да и твоих 😃) расстояниях геодезией можно пренебречь и работать в них. Киньте мне кто-нибудь сырые мавлинковские логи, я покопаюсь, у меня свои будут нескоро.
Скажи откуда их вытащить и я запишу в следующем полёте.
Логи от Ez-Wifibroadcast подойдут?
Скажи откуда их вытащить и я запишу в следующем полёте.
С нижней малины /wbc_tmp/telemetrydowntmp.raw. Только учти, файл перезаписывается при каждом включении низа. Слетал, выключил, переписал.