Машинка в Питере — оператор в Москве

в 21:24, , рубрики: Без рубрики

Длинное вступление

Машинка в Питере — оператор в Москве

В прошлом топике мы тестировали HD FPV с нашей любимой Виртурилкой в качестве источника видео. Тогда испытания показали что всё отлично, вид от первого лица при управлении моделями вполне реальное дело. Главное — был бы нормальный канал связи. Пока HDMI вход для Виртурилки в процессе производства (кстати, уже есть первый тестовый образец, но драйвер ещё не готов), решили поискать ещё варианты организации канала связи. В комментах много юмора было на тему 4G, вот мы и подумали — а почему бы и нет?

В общем, Виртурилка была установлена на машинку (тихоходный, зато всепролазный китайский краулер), подключена вместо штатного RC-приёмника. В Виртурилку воткнут модем от неназванной компании (но всем понятно что это Yota Машинка в Питере — оператор в Москве ). На борту Виртурилки есть штатные четыре канала PWM, так что она сразу «из коробки» может функционировать как бортовой RC-приёмник на четыре канала. Для управления машинкой обычно нужно всего два канала, так что даже перебор получается. На Виртурилке запущен коммандный сервер с гордым именем rcboard, который я делал прошлые несколько дней. Софтинка получилась довольно клёвая, но публиковать не буду пока не вычищу некоторые косяки (как же без них).

На управляющей стороне — приложение, которое берёт сигнал с любого виндового джойстика. Так как большинство RC апп (аппаратура управления, пульт, короче говоря) имеет тренерский разъём, то можно эту самую аппу подключить к компу с помощью USB-переходника. В итоге аппа видится операционной системой как обычный джойстик. Кстати, под линуксом всё намного проще в плане программирования, а вот под винду пришлось изучать неведомый C#. Короче, на управляющей стороне запускается приложение .Net, которое обрабатывает указанный джойстик и шлёт пакеты на Виртурилку.

Так как в нашем случае Виртурилка выходит в инет через Йоту — встал вопрос как на неё слать команды. Команды идут по UDP (всем советую — только UDP, никаких тормозных TCP), а у Йоты не белый ip. Белый ip можно подключить для юрлица (400 руб в месяц). Мы-то можем подключить, так как юрлицо имеется, но это совсем некошерно. Так что был реализован способ слать команды на борт и без белого айпишника. Способ, известный как UDP Hole Punching. Точнее, упрощённый вариант этого метода. Так как в данном топике я хочу только показать результаты испытаний, так сказать, для затравки, давайте подробности реализации чуть-чуть отложим, ибо я хочу добавить полноценный юдп хоул панчинг для вообще любого способа управления, а то сейчас требуется белый ip на управляющей стороне.

Ещё хотел бы высказаться насчёт типа управления. Тот же Parrot ArDrone управляется с планшета/смартфона. Наши девайсы (которые на базе Виртурилки) многие управляются с планшета/смартфона. Но это не значит что такой вид управления хорош. Честно говоря, это самый паршивый вид управления. При управлении чем либо надо чувствовать элементы управления, чтобы смотреть только на картинку с камеры и не думать «а попал ли я пальцем на виртуальный джойстик». Так что лучше обычных рцшных апп ещё ничего не придумано. Разве что USB руль/педали, они моей софтинкой тоже поддерживаются (само собой, это ж просто обычный джойстик). Для машинки именно руль и педали — самый ништяг.

Как это сделано

А теперь по делу. Вчера утром дописал я этот самый сервер команд (который на Виртурилке запускается), опробовал, удивился что работает. Сообщил коллегам и собрался уже идти спать. Однако один коллега оказался на связи и вызвался выступить первым тестером. Так что уйти спать не удалось, пришлось одеться и двинуть с машинкой на улицу. Я следил за машинкой а коллега управлял ею из Питера. Сигнал Йоты у меня тут не очень, так что коллега сообщал (на мобиле по скайпу) что видео идёт, но часто рассыпается. Телеметрия с борта (по каналу телеметрии рулящему отдаются вольтаж аккумулятора и параметры сигнала Йоты) показала что сигнал реально паршивый. Но машинка ехала, видео худо-бедно шло.

Кстати, про видео. После испытаний HD видео в разрешении 1280х720 уже никакого желания нет возвращаться к обычным 640x480, так что все тестирования проводим именно в HD. Для Йоты битрейт понизили до одного мегабита, но даже с одним мегабитом 720p лучше смотрится чем 640x480.

Воодушевившись результатом, коллега побежал в ближайший хоббийный магазинчик и приобрёл там точно такой же краулер. Подключить к нему Виртурилку с тестовой прошивкой — дело пяти минут. Так что спустя пол-часа уже realizator пошёл на улицу, а я подключил аппу к компу и попробовал порулить.

Оказалось что в Питере, во всяком случае, в одном спальном районе (это в видеоролик не вошло) и в центре Йота намного лучше работает чем у меня около дома в Москве. Так что я без проблем погонял на машинке, сидя в кресле в шестистах километрах от неё :-) Задержка вообще не ощущается, видео не рассыпается, просто всё идеально.

Так что Реализатор поехал с краулером на дворцовую площадь. Уж если проводить испытания — так в интересном месте :-) Увеличить битрейт видео как-то не подумали, хотя там явно запас немалый. Так что все покатушки прошли именно с потоком 1 mb/s. Поначалу я опасался быстро ехать, но вскоре освоился и стало очень нехватать скорости краулера. Реально, при таком отличном видео можно и намного быстрее гонять. Но других машинок под рукой пока нету, так что пусть хоть что-то.

В общем, вот что получилось в результате. Испытания оказались случайные, так что снимали чем придётся. Даже запись потока, которая под линухом нормально работает, под виндой, как оказалось, не пашет, надо по другому делать. Так что с экрана пришлось записывать обычной вебкой, плюс вид со стороны у меня гопроха записывала.

Ну и само видео

Как я уже писал выше, сервер команд и виндовое приложение-рулилку опубликую на днях, когда пофиксю мелкие глюки. Заходите к нам на форум, всё там будет. А вот описание сервера команд, возможно, и на отдельный топик на Хабре потянет.

P.S. Если честно, я не ожидал что так классно всё получится. Йота оказалась лучше чем я о ней думал, во всяком случае, в Питере :-) Уж на что я привычный к рулению разными штуками, но покататься по Дворцовой площади и по Невскому, сидя дома в Москве — очень здорово было. А главное — всё на базе нашего детища — Виртурилки :-)

Автор: Gol

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js