Vbar Touch. Первое впечатление

L2-Max

Ну а я 18 лет в низкоуровневой разработке и что?, а на данный момент уже лет 6 как разрабатываю сетевые симуляторы для тестирования роутеров в сетях 4 и 5 поколений, и с сетевыми адаптерами приходится работать через регистры. А подобные заявления в мой адрес, что я мол чего то напридумывал, ну это как то опрометчиво, мягко говоря. Вы хотя бы спросили, что именно я имел ввиду.

Вот вам спецификация контроллера от интел. intel.com/…/extensible-host-controler-interface-us…

С 57 страницы начинается описание архитектуры, вы можете для себя изучить и понять как, где и чего происходит буферизация. Пакет/транзакция ни из какого USB устройства мгновенно в ядре операционной системы не появляется, а максимальная задержка, определяется длинной кольцевого буфера и частотой пакетов/транзакций, а так же как именно устройством настроена толерантность задержки.

Solo

Вау ! Да тут собрались СПЕЦИАЛИСТЫ !😃
То есть шанс разобраться в происходящем значительно возрастает!

Но давайте так сказать вернемся “к истокам” …
В системе: пилот - аппа - приемник - исполнительный механизм(серво) - реакция модели.
Работают следующие “задержки”:
Пилот - собственно реакция пилота
Аппа - время от воздействия на стик до момента формирования управляющего сигнала. Включая время отработки АЦП, опрос всех каналов, формирование пакета в данном протоколе и его отправка по ВЧ.
Приемник - время на распаковку (проверки пропущенных пакетов и все такое), формирование канального PWM или Sbas сигнала.
Серво - собственно быстродействие самого сервопривода
Реакция модели - зависит от конструктивных особенностей (площади поверхностей, углы отклонения, центровка и балансировка) и люфтов в шарнирных соединениях.
А еще кроме скорости, огромное значение имеет точность! То есть разрешающая способность, начиная от датчиков стиков и дальше по списку…
В случае с вертолетами, добавляется “черный ящик” ФБЛ которая вносит свои задержки как по железу, так и по ПО … 😵
Подключив (желательно по ЮСБи без промежуточных устройств) аппу к симулятору, ситуация несколько упрощается 😒
Теперь важно оценить это самое “быстродействие/ точность” в поведении симуляторной модели, отбросив субъективность ощущений конкретного пилота …😛
Опять все не просто ! 😉

L2-Max

Измерить задержку между включением переключателя и изменением значения канала (с точностью до 1мс) в пакете S.Bus можно с помощью той же ардуины как для VBCt так и для FrSky. Уже делал для FrSky PWM выходов. На PC не знаю, не занимался этим. Проще всего взять камеру с 1000fps и поснимать одновременно движение стика и ответное движение визуализации канала на мониторе. Потом на раскадровке измерить время отклика.

Все равно те измерения (только передатчик приемник) ничего не решат. Эти же данные написаны у производителя в спецификации к продукту. Я ими и занимался только потому, что тут же на форуме был “спор”, что у frsky задержка аж 60мс.

Если в симе летать комфортно, то что те измерения дадут? Что и в какую сторону настраивать без детального анализа они всеравно не покажут.

mil-lion
L2-Max:

+4 ms на межфреймовый интервал S.Bus надо добавить (VBC это касается тоже).

У VBC нет SBUS. Как раз фича в том что приемник встроен в ФБЛ и нет промежуточных протоколов типа SBUS. Поэтому скорость передачи у ВБЦ быстрее других, включая Футаба. Хотя протокол передачи именно Футабий используется FHSS

L2-Max

Об этом я почему то не задумывался. Тогда это минус еще ~4-6 ms

mil-lion

Я писал - то что я почувствовал: летал в симуляторе по воздуху (приемник+ардуино) тут же включил шнурок и полетел гораздо лучше.
Летал на FrSky Taranis+Mikrobeast поменял на VBC+Neo - и полетел гораздо лучше и точнее. Филиппы и ролы стали не размашистые а ближе к одной точке.
А что поменялось? Задержки остались, как вы говорите ну почти такие которые на полет не влияют - а я увидел другую картину. Вертолет тот же самый, сервомашинки и лопасти и аккумуляторы остались те же. Просто замена Аппаратура+Приемний+ФБЛ на другую Аппаратура+ФБЛ.

И топ пилоты квадратов наверное не просто так перешли на Crossfire, им эти миллисекунды ничего не дают.

Просто убирая задержки в одном месте - повышается качество управления ЛА. Да не в разы, но точность возрастает. Попробуйте сами и тогда говорите - что разницы нет.

L2-Max

Та надо бы попробовать. Я своим скептицизмом и прагматизмом отдаляю от себя это событие.

Есть у нас в клубе один начинающий вертолетчик с старым Гоблином и VBC (не touch). Возможно он и поделится, но его еще поймать надо. Достаточно редко его вижу

Jocker_cms
mil-lion:

У VBC нет SBUS. Как раз фича в том что приемник встроен в ФБЛ и нет промежуточных протоколов типа SBUS. Поэтому скорость передачи у ВБЦ быстрее других, включая Футаба. Хотя протокол передачи именно Футабий используется FHSS

FHSS это контейнер / метод передачи. Что там внутри, какой компрессор (алгоритм сжатия) можно же передавать 10кб, а можно и 3 кб но нужен будет распаковка, какой декодер, который может быть soft, но будет создавать задержку, а может и чип паяный - это всё проеприетарщина каждого производителя в которой они сейчас и соревнуются. Замерить можно при желании.

L2-Max:

Ну а я 18 лет в низкоуровневой разработке и что?

То что вы не шарите если по простому - тестер или QA судя по компетенциям, может быть PM. Но точно не дев который код копал 18 лет.

L2-Max

😃 Очень опрометчивое заявление. В чем именно я не шарю?

Jocker_cms
L2-Max:

Очень опрометчивое заявление. В чем именно я не шарю?

Пусть будет опрометчивое.

Solo:

Вау ! Да тут собрались СПЕЦИАЛИСТЫ !😃

Опять все не просто ! 😉

Всё достаточно просто - чем больше данных передаём, тем дольше будет их обработка-распаковка. Теоретически даже может быть prediction (предсказание). Даже в случае с USB, больше кидаем - дольше задержка, меньше кидаем объем payload - меньше латентность (размер буффера разный для 64 байт и для 2 килобайт). Чтобы прокинуть 4 канала ненужно много информации и это там на уровне 0,2ms для одного пакета данных. Никаких там 16-20 ms нет. Поэтому и ощущается разница по шнуру и воздуху. А дальше решает либо депакер (драйвер) софт или хард или какие-то свои методы упаковки / оптимизации. Если всё хранится в Neo, часть данных можно кидать контрольными битами в одном int, а не упакованные integer / float. Грубо говоря в В бар мне нужено перекинуть 1 byte оффсет по кривой с разрешением 0…255, а сама кривая сидит в Neo в виде float значений. То. мне не нужно кидать по радио каналу 4 байта float. Или же паковать его, потом там распаковывать. За счёт этого и достигается скорость.
Давно уже платится за софт.

L2-Max

Какая блин распаковка? По проводу/воздуху данные всегда передаются с избыточным кодированием. О 10/12 слышали? 10 бит кодируются 12тими

Jocker_cms
L2-Max:

Какая блин распаковка? По проводу/воздуху данные всегда передаются с избыточным кодированием. О 10/12 слышали? 10 бит кодируются 12тими

Мы про сим или уже перехали на воздух? Про латентность в USB сначала почитайте или у программеров спросите.

Ещё раз тезисы (для вас Максим персонально):
Важно в случае с симуялтором:

  • FPS. Как часто тикает физика. Как часто рисуется картинка. Очень важно!
  • Как быстро передаются данные от пульта. Да, представьте себе, задержка зависит от объема данных которые кидаются. 1 байт или 1кб это существенно. Можете почитать спецификацию USB если не верите на слово.
  • Движок симулятора тоже может обрабатывать параметры инпута по своему - строить историю ввода и т.д.
  • По воздуху, я не сильно компетентен, но полагаю, что работает похожая формула - меньше передаём, меньше задержка. Меньше это значит насколько эффективно пакуем или используем данные. Тоже самое и про избыточное кодирование - либо кодируем больше избыточно, т.к. протокол требует больше данных либо меньше.
  • Трипле буффер не ускоряет в случае с симулятором - response time. В лучшем случае у вас будет плавная картинка и инпут лаг в пару кадров. Если дёрнуть шаг в минус и плюс резко, вы получите анимацию с некоторой задержкой.

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

L2-Max

Какая разница? Что по USB шнуру, что по воздуху электомагнитная волна распространяется с той же скоростью и подчиняемая тем же законам физики.

Я не понимаю. Вы мне вот ту тавтологию как тестеру написали? Или как PMу?

Jocker_cms
L2-Max:

Какая разница? Что по USB шнуру, что по воздуху электомагнитная волна распространяется с той же скоростью и подчиняемая тем же законам физики.

Разница в количестве передаваемых данных. Меньше передаём - быстрее отклик. Если В бар кидает только оффсеты, а не честные значения, то он будет работать быстрее, но это моё предположение, не утверждаю что так и есть. Но я бы так и сделал, имея все данные на борту внутри Neo, нет никакого смысла кидать честные значения кривых газа или шага и т.д. У нас же по сути по X шкала (это разрешение стика) не имеет большого значения. 5 точек. Значения имеют по Y. Вот они и хранятся на самом вертолёте. Тоже самое и циклик - не обязательно кидать полное значение, достаточно перекидывать дельту (разницу).

L2-Max

Это заблуждение. Частота пакетов и битрейт не пропорционально связаны. Можно передавать большими пакетами 10Гбит без сколь либо больших затрат вычислительных мощностей, а если надо заполнить линк малыми пакетами то, например на архитектуре x86 возникает проблема попадания в кэш. 10Gb линк, например, может дать 14.8Mpps если посылать один и тот же пакет (64b), но если пакет всегда меняется, то скорость падает уже до 10.8Mpps (это на Haswell)

Если у вас это лишь предположение, то это предположение. Чтобы точно знать нужно это проверить.

Jocker_cms
L2-Max:

Это заблуждение. Частота пакетов и битрейт не пропорционально связаны. Можно передавать большими пакетами 10Гбит без сколь либо больших затрат вычислительных мощностей, а если надо заполнить линк малыми пакетами то, например на архитектуре x86 возникает проблема попадания в кэш. 10Gb линк, например, может дать 14.8Mpps если посылать один и тот же пакет (64b), но если пакет всегда меняется, то скорость падает уже до 10.8Mpps (это на Haswell)

Если у вас это лишь предположение, то это предположение. Чтобы точно знать нужно это проверить.

Если у вас есть соответствующее оборудование и компетенции и вы готовы пойти дальше чем текст - было бы замечательно узнать результаты вашего реверс инжиниринга Mikado V Bar Touch. На этом я спать, а вы пишите … пишите.

А так вообще, вы уже меня извините Максим - недорого аутсорсе, а я думаю что точно на 100% в точку попал - ну нее, неее )))

L2-Max
Jocker_cms:

недорого аутсорсе

Это что значит?

UPD. Ага, понял. Обидеть меня хотели. Ну вы бы хотя бы на linkedin мой профиль поискали, что бы вот так просто дырки в небе пальцем не делать.

Jocker_cms
L2-Max:

Это что значит?

Да это я так - троллю. Сорри.

Инфа по теме на vstabi:
i couldn’t find this info anywhere. what is the v-control latency and resolution, please?

We dont advertise this very much because i think its not the important information. Its much more important, that the direct connection between Radio and Control loop gives a better respons than any external radio.
VControl transmits with 10ms updatrate and the resolution of the control channels is 12bit = 4096 steps. Its not possible to measure the radio latency only, since you have no access to the input signal at VBar.

Вольный перевод:
Не могу найти информацию. Какая задержка и разрешение на канал у v-control?

Мы не сильно это рекламируем, потому что это не очень важная информация. Намного важнее это прямое соединение между Радио и управляющим контуром, которое даёт лучший (вероятно быстрее имеется ввиду) чем любое внешнее радио (подключение).
Vcontrol передаёт с частотой обновления 10ms и разрешением на канал 12 bit = 4096 (значение). Невозможно замерить задержку между радио и приёмником, т.к. у вас нет доступа к входному сигналу на Vbar.

Надеюсь теперь понятно почему я не стал “лепить” приёмник.

Solo
Jocker_cms:

Разница в количестве передаваемых данных. Меньше передаём - быстрее отклик. Если В бар кидает только оффсеты, а не честные значения, то он будет работать быстрее, но это моё предположение, не утверждаю что так и есть. Но я бы так и сделал, имея все данные на борту внутри Neo, нет никакого смысла кидать честные значения кривых газа или шага и т.д. У нас же по сути по X шкала (это разрешение стика) не имеет большого значения. 5 точек. Значения имеют по Y. Вот они и хранятся на самом вертолёте. Тоже самое и циклик - не обязательно кидать полное значение, достаточно перекидывать дельту (разницу).

Имею абсолютно аналогичные мысли…😒
И фраза “Намного важнее это прямое соединение между Радио и управляющим контуром” от разработчиков … подтверждает это …
Как по мне, напрасно они не расписывают хотя бы в виде алгоритмов, логику работы системы …
Так гораздо проще было бы вникнуть и разобраться в тонких настройках и микадовской “идеологии” в принципе…

L2-Max:

Проще всего взять камеру с 1000fps и поснимать одновременно движение стика и ответное движение визуализации канала на мониторе. Потом на раскадровке измерить время отклика.

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

L2-Max:

Все равно те измерения (только передатчик приемник) ничего не решат. Эти же данные написаны у производителя в спецификации к продукту. Я ими и занимался только потому, что тут же на форуме был “спор”, что у frsky задержка аж 60мс.

Проблема в том что многие производители не пишут документацию 😁, а те что пишут … лучше бы не писали …
Также следует понимать что измерения проводятся на одном канале в простом “линейном” тесте … Как поведет себя система при сложных перекладках в фигуре с использованием всяких микшеров и кривых !?
Я иногда проверяю настройки небольших коптеров (для сельхоз работ) в тамбуре своей лаборатории(относительно небольшое пространство), так вот задержки Тараниса иногда просто выносят мозг … на открытом пространстве это вообще не ощущается …

L2-Max:

Если в симе летать комфортно, то что те измерения дадут? Что и в какую сторону настраивать без детального анализа они всеравно не покажут.

В итоге самым “объективным” тестом, является полет в симе …😌

ПС Я тренирую реакцию на “шариках” в Фениксе … важный фактор в том, что за определенный промежуток времени подсчитывается количество набранных очков… Занимаюсь этим уже много лет в качестве разминки перед тренировкой фигур.
И по этому абсолютно субъективному “параметру” Вбар контрол превосходит самую быструю Футабу процентов на 20 …

L2-Max:

Это что значит?

Ага, понял. Обидеть меня хотели.

Макс, да не кто никого не пытается обидеть или унизить! Не ищи везде подвох и не загоняйся …
Нас (моделистов в принципе и вертолетчиков в частности) так мало!!! Давайте жить дружно! (с)

ППС Если кого случайно обидел или задел … прошу прощения…

С уважением, Соло.

Jocker_cms
L2-Max:

UPD. Ага, понял. Обидеть меня хотели.

Максим да не хотел я вас обидеть, ну может немного потролил ) Не воспринимайте всё так близко, предлагаю мир жвачка и дальше заниматься интересным хобби!

Slaiter

Ребята, хватит меряться у кого дл… опыта больше. Лучше ответьте на вопрос « Может кто знает как временно назначить параметр на крутилки?»