Управляем чем угодно откуда угодно

OSD на базе virt2real или linux одноплаточнике

Обсуждение линуксовой части и софта на борту виртурилки

OSD на базе virt2real или linux одноплаточнике

Сообщение xmailer » 23 ноя 2015, 23:20

Здравствуйте.
Нужен совет по выбору направления, в котором двигаться к своей OSD на virt2real или любом linux одноплаточнике.
Выбор следующий:
1. пытаться построить на плагинах типа TextOverlay и с помощью gstd организовывать обновление данных (http://wiki.virt2real.ru/wiki/Gstreamer_OSD)
2. берем gst-template c freedesktop пытаемся создать свой специализированный плагин, заточенный под свои нужды. Собрать базовый плагин удалось только на ubuntu, но до полного понимания архитектуры разработки плагина конечно еще далеко.

Задавал вопрос на форуме rcdesign (http://forum.rcdesign.ru/f90/thread432578.html), но ничего по существу.
Буду признателен за любую информацию по теме.
Спасибо.
xmailer
 
Сообщения: 3
Зарегистрирован: 23 ноя 2015, 22:52

Re: OSD на базе virt2real или linux одноплаточнике

Сообщение realizator » 24 ноя 2015, 14:29

xmailer писал(а):Здравствуйте.
Нужен совет по выбору направления, в котором двигаться к своей OSD на virt2real или любом linux одноплаточнике.
Выбор следующий:
1. пытаться построить на плагинах типа TextOverlay и с помощью gstd организовывать обновление данных (http://wiki.virt2real.ru/wiki/Gstreamer_OSD)
2. берем gst-template c freedesktop пытаемся создать свой специализированный плагин, заточенный под свои нужды. Собрать базовый плагин удалось только на ubuntu, но до полного понимания архитектуры разработки плагина конечно еще далеко.

Задавал вопрос на форуме rcdesign (http://forum.rcdesign.ru/f90/thread432578.html), но ничего по существу.
Буду признателен за любую информацию по теме.
Спасибо.

По нашему опыту родное OSD очень тормозит работу виртурилки. Поэтому мы транслируем телеметрию отдельным потоком и накладываем ее уже на клиентском устройстве. С этим отлично справляется и комп, и телефон (Андроид).
Аватара пользователя
realizator
virt2real team
 
Сообщения: 641
Зарегистрирован: 17 фев 2012, 23:18

Re: OSD на базе virt2real или linux одноплаточнике

Сообщение xmailer » 25 ноя 2015, 15:51

realizator писал(а):По нашему опыту родное OSD очень тормозит работу виртурилки. Поэтому мы транслируем телеметрию отдельным потоком и накладываем ее уже на клиентском устройстве. С этим отлично справляется и комп, и телефон (Андроид).

Спасибо за ответ.
Если не сложно пару уточнений, если конечно это не секрет:
1. т.е. GStreamer для OSD не годится, пробовали Вы для этих целей ffmpeg, который также поддерживает систему плагинов и очень похож по функциона на gstreamer?

2. правильно ли я понял Ваш алгоритм работы:
на стороне устройства:
-gstreamer организация трансляции "чистого" (без данных телеметрии) видео, цепочка ниже взята с wiki.virt2real.ru Трансляция в HD. Вопрос - почему в udpsink, а не tcpsink? Понятно что udp быстрее в разы, но как часто у Ваc рушится (появляются артефакты) видео?
Код: Выделить всё
HOST_ADDR=127.0.0.1
PORT=3000
gst-launch -e v4l2src always-copy=FALSE input-src=composite chain-ipipe=true ! video/x-raw-yuv,format=\(fourcc\)NV12, width=1280, height=720, framerate=\(fraction\)23/1 ! queue ! dmaiaccel ! dmaienc_h264 encodingpreset=2 ratecontrol=2 intraframeinterval=23 idrinterval=46 targetbitrate=3000000 ! rtph264pay ! udpsink port=$PORT host=$HOST_ADDR sync=false enable-last-buffer=false &

-организация сокета данных телеметрии, например netcat-ом, т.е. например tx телеметрии автопилота к rx gpio одноплаточника. затем делаем linux сервис
Код: Выделить всё
netcat 127.0.0.1 3001< /dev/ttyX
. Каким пакетом пользуетесь для организации сокета телеметрии?

на стороне клиента (компа или телефон)
- коннектимся к видео и телеметрии сокетам одноплаточника делаем средствами скажем opencv (благо есть порты под разные оси) законченное клиентское OSD. Какими средствами забираете видео и миксите с текстом и графикой телеметрии?
xmailer
 
Сообщения: 3
Зарегистрирован: 23 ноя 2015, 22:52

Re: OSD на базе virt2real или linux одноплаточнике

Сообщение realizator » 26 ноя 2015, 00:03

xmailer писал(а):
realizator писал(а):По нашему опыту родное OSD очень тормозит работу виртурилки. Поэтому мы транслируем телеметрию отдельным потоком и накладываем ее уже на клиентском устройстве. С этим отлично справляется и комп, и телефон (Андроид).

Спасибо за ответ.
Если не сложно пару уточнений, если конечно это не секрет:
1. т.е. GStreamer для OSD не годится, пробовали Вы для этих целей ffmpeg, который также поддерживает систему плагинов и очень похож по функциона на gstreamer?
~~~> под гстример у нас есть бинарники от производителя процессора, которые используют DSP для очень быстрого сжатия видео, поэтому gstreamer


2. правильно ли я понял Ваш алгоритм работы:
на стороне устройства:
-gstreamer организация трансляции "чистого" (без данных телеметрии) видео, цепочка ниже взята с wiki.virt2real.ru Трансляция в HD. Вопрос - почему в udpsink, а не tcpsink? Понятно что udp быстрее в разы, но как часто у Ваc рушится (появляются артефакты) видео?
~~~> TCP это не риалтайм, совсем даже не рядом. Если забыть о видео, то еще бывают сюрпризы когда есть лаг по связи, а потом на борт сразу прилетает пачка всех команд за время лага - и ему сносит башню. Так что только UDP
Рассыпания картинки конечно бывают, но у нас оптимизацию по разбиению пакетов идет и селективный отбор на приемной стороне - если пакет битый, мы не даем портиться картинке, а оставляем последний стабильный вариант. Там очень много "под капотом" сделано для стабильности картинки.


Код: Выделить всё
HOST_ADDR=127.0.0.1
PORT=3000
gst-launch -e v4l2src always-copy=FALSE input-src=composite chain-ipipe=true ! video/x-raw-yuv,format=\(fourcc\)NV12, width=1280, height=720, framerate=\(fraction\)23/1 ! queue ! dmaiaccel ! dmaienc_h264 encodingpreset=2 ratecontrol=2 intraframeinterval=23 idrinterval=46 targetbitrate=3000000 ! rtph264pay ! udpsink port=$PORT host=$HOST_ADDR sync=false enable-last-buffer=false &

-организация сокета данных телеметрии, например netcat-ом, т.е. например tx телеметрии автопилота к rx gpio одноплаточника. затем делаем linux сервис
Код: Выделить всё
netcat 127.0.0.1 3001< /dev/ttyX
. Каким пакетом пользуетесь для организации сокета телеметрии?

~~~> У нас свой софт забирает на борту и свой софт на земле принимает и видео и телеметрию. Телеметрию разбираем сами для ОСД, плюс транслируем в приложения, которые умеют телеметрию по UDP принимать. Эмуляцией ком-портов не занимаемся.


на стороне клиента (компа или телефон)
- коннектимся к видео и телеметрии сокетам одноплаточника делаем средствами скажем opencv (благо есть порты под разные оси) законченное клиентское OSD. Какими средствами забираете видео и миксите с текстом и графикой телеметрии?


~~~> Мы не миксим. Мы показываем видео, а сверху отдельным слоем рисуем ОСД. Соответственно видео пишем двумя способами (можем одновременно) - это запись "чистого" видео, плюс запись с экрана видео + наложенная телеметрия.
upd> сложное форматирование вышло - в общем я свои ответы значком ~~~> отметил, ищите в теле сообщения :-)
Аватара пользователя
realizator
virt2real team
 
Сообщения: 641
Зарегистрирован: 17 фев 2012, 23:18

Re: OSD на базе virt2real или linux одноплаточнике

Сообщение xmailer » 26 ноя 2015, 01:25

realizator, спасибо за разъяснения, информации более чем. Вы продаете свои исходники (бортовые, клиентские)?
xmailer
 
Сообщения: 3
Зарегистрирован: 23 ноя 2015, 22:52

Re: OSD на базе virt2real или linux одноплаточнике

Сообщение realizator » 27 ноя 2015, 13:50

xmailer писал(а):realizator, спасибо за разъяснения, информации более чем. Вы продаете свои исходники (бортовые, клиентские)?

Пишите на почту info@virt2real.ru, обсудим
Аватара пользователя
realizator
virt2real team
 
Сообщения: 641
Зарегистрирован: 17 фев 2012, 23:18


Вернуться в Софт на виртурилке - SDK, Linux, Github, программирование (C/C++ и др.)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron