EZ-WifiBroadcast DIY HD видео своими руками

kuspower

Привет, Лелик,

Прошли месяцы, когда я надеялся, что кому-то удастся заставить эти карты работать, здесь во Франции 2.4g полностью непригодна для использования, а старые карты RT3572 не продаются уже более года!

Я проверил последнее изображение, которое вы сделали 20181007 с pi3 и 8812au.

Видео отличное, с другой стороны, я не могу управлять двунаправленной телеметрией mavlink.

Разве вы не говорите мне, как вы устанавливаете параметры так, чтобы они работали, и на каких контактах raspi вы подключили pixhawk?

Извините за ошибки, я французский, и я использовал перевод Google.

lelik
РД00:

Т.е. картинка идет по RTP через Ethernet или WiFi, без WBC ?

Точно так. Целью было сравнение задержек камер, транспорт и рендер не менялся.

kuspower:

я не могу управлять двунаправленной телеметрией mavlink.

Я не правил двунаправленный передатчик по аналогии с однонаправленным и, скорее всего, там используется неверный тип пакета. Постараюсь проверить это в ближайшее время.

schs
svpcom:

Но, например, камеры для видеонаблюдения имеют latency около секунды…

Не все. Чаще буферизирует софт который отображает картинку. На gstreamer задержка с некоторыми, которые пробовал, приемлимая. Точно её не замерял, но по движению руки отставание чуть более WBC.
Если ЛА на высоте - задержка, в разумных пределах, не важна, а вот качества картинки хочется, Фантик развращает 😃.

svpcom

А какая камера и какая цепочка gstreamer’а для записи и воспроизведения?
Как-то многовато получилось latency для RPI camera. Я пробовал HIkvision DS-2CD2042WD-I - там все плохо.
Если используете VLC для воспроизведения - то там тоже все плохо с latency.

lelik:

На одной зерохе из трех - проблема. Фикс выложу чуть позже.

RaspiCam v1

USB-камера видеонаблюдения

Параметры потока: H.264, 1080p30, bitstream -> rtp/udp

lelik
svpcom:

А какая камера и какая цепочка 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 раза, а не абсолютные цифры

svpcom:

Я пробовал HIkvision DS-2CD2042WD-I - там все плохо.

Вы б еще “Красногорск” 8мм попробовали бы, там все еще хуже с latency. Это же IP-камера с RTSP, у нее обязана быть задержка на старте.

РД00
lelik:

Вы б еще “Красногорск” 8мм попробовали бы

Во, а у меня есть Mobius 2013-го, я обязательно попробую его.

lelik
user1321:

Всё ли работает у Вас?

На некоторых Pi Zero наблюдался ресет USB до определения карт. Багфикс-версия в обычном месте

svpcom

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

lelik:

В обоих случаях рендер был один и тот же, интересует же разница в 2.5 раза, а не абсолютные цифры

Ну RTSP камера не обязано быть тормозной - видеопоток там всеравно идет по RTP.

lelik
svpcom:

Ну RTSP камера не обязано быть тормозной - видеопоток там всеравно идет по RTP.

RTP там начинается только после хендшейка. А это - задержка, которую уже не убрать.

svpcom:

PI Camera сейчас под рукой нет, но например Kurokesu C1 у меня дает 61ms

У Вас 60 мс на локалхосте, у меня 100 мс между двумя хостами, все похоже.

Можно попросить содержимое /sys/bus/usb/devices/…/manufacturer для курокесы ?

svpcom

Передача wifi пакета это 1-2ms. 40ms больше похоже на забитый внутреннюю очередь карты. Попробуйте уменьшить bitrate видео и увеличить размер RTP пакетов до максимального, чтобы карта успевала их передавать.

lelik:

У Вас 60 мс на локалхосте, у меня 100 мс между двумя хостами, все похоже.

khomyakk

Раз уже подтянулись, давайте спасать летающих собратьев.
При подсоединении в полёте второго монитора или сброса приёмной части происходит сброс точки ДОМ, со всеми вытекающими неприятностями.

svpcom

----

$ 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

----

lelik:

Можно попросить содержимое /sys/bus/usb/devices/…/manufacturer для курокесы ?

svpcom

Сборка (бинарники) моей версии WFB для Raspberry PI:
github.com/svpcom/…/wifibroadcast_rpi.tar.gz

P.S. Это не полный образ для SD-карты, а только бинарники и скрипты для запуска. Образ подходит любой с пропатченым ядром для обычного WFB

lelik
khomyakk:

При подсоединении в полёте второго монитора или сброса приёмной части происходит сброс точки ДОМ

Ага… Этот умелец при переконфигурации (сеть подключили, монитор аль еще чего) рестартует osd. А оно при запуске координаты из первый пакета
GLOBAL_POSITION_INT считает за home. Боюсь, что терапия здесь не поможет, сильно глубоко лезть надо.

P.S. Стрелка на дом тоже должна слетать
P.P.S. Надо osd перелопачивать для работы с LOCAL_POSITION_NED.

svpcom

Сборка (бинарники) моей версии WFB OSD для Raspberry PI
github.com/svpcom/…/wifibroadcast_osd.tar.gz

В отличии от оригинала не тормозит на Pi Zero.
В составе OSD и video player.

Для работы подходит любой (можно стандартный) образ для raspberry pi. Совместимо с Pi Zero и выше.

khomyakk
lelik:

А оно при запуске координаты из первый пакета

Я ему предлагал обновлять точку дома по армингу, вроде писал, что исправил. Естественно и стрелка домой уплывает. А в пакетах Мавлинка точка дома не присутствует?

svpcom:

P.S. Это не полный образ для SD-карты, а только бинарники и скрипты для запуска. Образ подходит любой с пропатченым ядром для обычного WFB

Василий, было бы здорово, если будет инструкция, как всё это сделать. Для меня это тёмный лес.

QuadroSky
svpcom:

Для работы подходит любой (можно стандартный) образ для raspberry pi. Совместимо с Pi Zero и выше.

Подскажите пожалуйста, как эту сборку внедрить в образ wfb?

svpcom

В мавлинке оно только по запросу отдается.

khomyakk:

Я ему предлагал обновлять точку дома по армингу, вроде писал, что исправил. Естественно и стрелка домой уплывает. А в пакетах Мавлинка точка дома не присутствует?

khomyakk

Как временной мерой можно предложить вбивать значение Дома в конфиг и считывать оттуда. Это ведь должно проще реализовываться?
Василий, а в твоей версии такого “бага” нет?
Может ещё использовать исходящую телеметрию и формировать запрос? Правда тогда нужно одинаковой мощности и чувствительности стики на наземной и воздушной части.

svpcom

Я не помню, как все запускается в стандартном 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

QuadroSky:

Подскажите пожалуйста, как эту сборку внедрить в образ wfb?

Есть. Там принципиальная проблема в том, что home position не рассылается broadcast’ом. Его можно получить только по запросу и только после взлета.
Соответственно на одностороннем канале связи (как WFB ) это не получится. Как вариант его можно сохранять в файл и читать оттуда при старте OSD.

khomyakk:

Как временной мерой можно предложить вбивать значение Дома в конфиг и считывать оттуда. Это ведь должно проще реализовываться?
Василий, а в твоей версии такого “бага” нет?
Может ещё использовать исходящую телеметрию и формировать запрос? Правда тогда нужно одинаковой мощности и чувствительности стики на наземной и воздушной части.

khomyakk

Может доведёшь свой проект до образа ?
Стрёмно летать с домом всё время сзади.
Сейчас уже многие используют двунаправленную телеметрию, похерив управление с аппы через канал связи, вроде всё работает. Я правда ещё не пробовал.

svpcom

Если их не разносить по частотам или не делать подобие TDMA, то не получится - они будут коллизии производить. Ведь вся суть WFB как раз в выключении механизмов борьбы с коллизиями.

khomyakk:

Может ещё использовать исходящую телеметрию и формировать запрос? Правда тогда нужно одинаковой мощности и чувствительности стики на наземной и воздушной части.

Это не так просто. Поясню: у меня, например, на борту как минимум 2 компьютера - NEO2 и Pi Zero для камеры.
На земле и того больше - 2 NEO2 (3 wifi (6 антенн) + SiK-radio (телеметрия 433MHz) + ADS-B приемник) + Pi Zero в FPV-шлеме (все это соединено Ethernet’ом).
Плюс я использую PX4 в качестве автопилота. Маловероятно, что кто-то захочет собрать такой-же setup как я. Соответвенно делать готовый образ для каждой из систем (их 5) смысла не имеет, так как все изменения относительно стандартного образа это и есть их интерграция между собой. Проще написать HOWTO как это все между собой связывать, чем делать образа, которые всеравно придется править после установки.

khomyakk:

Может доведёшь свой проект до образа ?
Стрёмно летать с домом всё время сзади.
Сейчас уже многие используют двунаправленную телеметрию, похерив управление с аппы через канал связи, вроде всё работает. Я правда ещё не пробовал.

lelik
khomyakk:

Я ему предлагал обновлять точку дома по армингу, вроде писал, что исправил. Естественно и стрелка домой уплывает. А в пакетах Мавлинка точка дома не присутствует?

Есть в мавлинке сообщение LOCAL_POSITION_NED, в котором передаются прямоугольные координаты ЛА относительно дома в North-East-Down. При наших (да и твоих 😃) расстояниях геодезией можно пренебречь и работать в них. Киньте мне кто-нибудь сырые мавлинковские логи, я покопаюсь, у меня свои будут нескоро.

khomyakk

Скажи откуда их вытащить и я запишу в следующем полёте.
Логи от Ez-Wifibroadcast подойдут?

lelik
khomyakk:

Скажи откуда их вытащить и я запишу в следующем полёте.

С нижней малины /wbc_tmp/telemetrydowntmp.raw. Только учти, файл перезаписывается при каждом включении низа. Слетал, выключил, переписал.