Рцборда, або Як Зробити Керовану через Інтернет Машинку

За останні кілька років мені довелося зробити чимало дистанційно керованих пристроїв. Деякі управлялися локально, з звичайного ПК або смартфона. Деякі — через Інтернет. Всі пристрої об'єднує загальний принцип — керує ними людина, орієнтуючись по картинці з відеокамери на борту пристрою. А саме управління, в підсумку, зводиться до видачі керуючих сигналів на сервомотори або регулятори (драйвери) моторів.

Так що, набравшись досвіду в цій справі, вирішив спробувати більш-менш систематизувати різні типи управління пристроями, щоб при створенні нового девайса не доводилося купу всього переписувати, а достатньо було лише змінити деякі параметри конфігурації. У результаті народився програмний комплекс RCboard, або РЦборда. Т. до. все керовані штуки я роблю з контролером Virt2real (Виртурилка в якості головного бортового мозку, то і рцборда спочатку писалася саме під неї. Так що всю зв'язку можна пафосно називати «Програмно-апаратний комплекс РЦборда».

Загалом, у продовженні топіка спробую написати рецепт про те як за допомогою Виртурилки і РЦборды із звичайної радіокерованої машинки зробити машинку, керовану через Інтернет (ну і локально вона теж буде управлятися). Каналом зв'язку буде звичайний Wi-Fi (вихід в інет через домашній роутер) або 4G зв'язок через свисток Yota.

Краулер BSD Racing 4WD RTR 2.4 Ghz 1:10


Відразу уточню — під терміном «радіокерована машинка» я маю на увазі не дешеві китайські машинки, в яких вся електроніка реалізована на одній платі, а більш-менш пристойні машинки, побудовані за модульною схемою — які мають регулятор оборотів двигуна (колекторного, бесколлекторного — неважливо) і сервомашинку для управління поворотом передніх коліс.

Таку машинку я наведу в якості піддослідного кролика лише в цьому рецепті, так як найпростіше для повторення. З невеликими змінами в налаштуваннях рцборды і додаванням хустки-регулятора обертів движка все те ж саме можна зробити і з будь машинкою, головне щоб у машинки колеса були (та хоч гусениці) і був моторчик.

Що знадобиться для складання
  • Машинка c регулятором двигуна, двигуном і сервой
  • Акумулятор (будь з підходящим для регулятора напругою)
  • Контролер Virt2real (Виртурилка) з камерою, перехідник USB OTG, флешка micro-SD
  • Свисток Wi-Fi або Yota (можна і будь-який інший 4G модем)
  • Руки помірної лінійності




Але спочатку, щоб продемонструвати деякі варіанти використання

Де це вже було використано

Як я вже писав, рцборду ми вже багато де використовували, але з задокументованих випадків знайшов тільки ось ці:

Випробування рцборды на баггі в Шеньчжені, управління з Москви



Випробування рцборды на краулере в Пітері, управління з Москви

habrahabr.ru/company/virt2real/blog/223145/

Випробування рцборды на літаку над Пітером, управління з Москви

habrahabr.ru/company/virt2real/blog/223183/

Кльовий снігоприбирач під управлінням рцборды

До речі, сам снігоприбирач — розробка пермських хлопців http://omiplow.uk

найважчий девайс під управлінням рцборды

Спільний проект з ТОВ «Сніг»


Отже, піддослідний кролик
Краулер для дистанційного керування хороший тим, що він володіє дуже високою прохідністю.

До речі, він навіть вміє робити ось так

У краулера повний привід, постійна блокування диференціалів (всі колеса крутяться одночасно) і постійна «знижена передача». Тобто він їздить порівняно повільно, але потужно і проходимо.

Налаштування Виртурилки

Перед тим як збирати машинку, треба налаштувати Виртурилку. Спочатку розглянемо варіант з підключенням по Wi-Fi.

Отже, за пунктами:
  • Завантажуємо свіжу прошивку, спеціально для рцборды files.virt2real.ua/firmware/virt2real-board/1.1/rcboard-0.01.002.zip
  • Підключаємо micro-USB — USB-кабель до Виртурилке, другий кінець встромляємо в комп. На компі з'явиться новий мережевий інтерфейс, підмережа 192.168.3.0/24. Для Windows, можливо, буде потрібно встановити драйвер
  • Відкриваємо базову адмінку (вебпанель управління Виртурилкой) за адресою http://192.168.3.1/admin
  • Йдемо в розділ «Налаштування» -> «Мережа» і задаємо ip для інтерфейсу wlan0 (або вказуємо dhcp, якщо не потрібен статичний ip)
  • Йдемо в розділ «Налаштування» -> «Wi-Fi» -> «Настройка Wi-Fi» і задаємо параметри бездротової мережі (міняємо поля ssid і psk) для першої мережі
  • Йдемо в розділ «Налаштування» -> «Автозапуск» — переміщуємо скрипт S80dhcp-server неактивні (якщо початкова настройка по USB більше не знадобиться)
  • Йдемо в розділ «Адміністрування» -> «Перезавантаження» і ребутим Виртурилку
  • Відключаємо USB кабель від Виртурилки, підключаємо до micro-USB вайфай свисток. З перевірених рекомендую ASUS N10, N13, TP-link TL-WM722N але найкраще пятигигагерцовые, наприклад ASUS N53 або Dlink DWA-160 rev.B2


Перевірка підключення Виртурилки до мережі

  • В процесі завантаження Виртурилки на ній будуть загорятися світлодіоди. При включенні живлення, якщо завантажувальна флешка успішно прочиталась, загориться зелений світлодіод. Потім, в процесі завантаження ядра загориться синій світлодіод. Після повного завантаження якщо підключення до Wi-Fi мережі пройшло вдало — загориться червоний світлодіод. А коли запуститься рцборда (вона прописана в автозапуску) всі світлодіоди згаснуть червоний світлодіод почне блимати).
  • Встановлюємо додаток для управління. Воно називається Virt2real Player для Windows (дистрибутив або zip-архів, для Android, для IOS. Додаток для IOS в аппсторе ще старої версії, нова проходить аппрув, так що поки ставити його марне — управління працювати буде кострубато.
  • Відкриваємо Провідник (якщо на компі вінда), якщо Виртурилка успішно підключилася до локальної мережі по вайфаю — у розділі «Мережа» має з'явитися пристрій «RCboard (Virt2real)». В адмінку можна потрапити, натиснувши правою кнопкою миші на ньому і вибравши пункт меню «Перегляд веб-сторінки пристрої»
    Виглядає приблизно так
  • Запускаємо Virt2real Player для Windows або для Android, повинен виявитися сервер RCboard. Виявлення сервера в додатку під IOS поки не реалізовано.

    Скріншот Virt2real Player для Windows

    Скріншот Virt2real Player для Android



Загальний принцип підключення моторів машинки

Зазвичай у RC машинки два мотори. Один звичайний, колекторний — крутить колеса. Другий — сервомотор, повертає передні колеса в потрібну сторону. Тобто виходить що потрібно всього два канали управління — газ і кермо. Спочатку (якщо машинка куплена в зібраному вигляді) всі канали підключені до штатного радіоприймача трехпиновыми роз'ємами типу JR (стандартний серворазъем). Чорний або коричневий) провід — земля, червоний — харчування (5-6В), жовтий (або білий, або помаранчевий) — сигнальний провід.

Саме за сигнального проводу ми і будемо керувати моторами, але спочатку треба подати живлення на серву, яка рулить колесами. Тут загальний принцип такий — з бортового акумулятора силове живлення з напругою, рівним напрузі акумулятора, йде з товстим проводах на потужний регулятор колекторного (або бесколлекторного) мотора. Всередині цього регулятора є так званий BEC — перетворювач напруги, робить з різного акумуляторного напруги стабільні 5 Вольт (іноді 6В, можна вибирати перемичкою на регуляторі), необхідні для живлення бортових сервомашинок, приймача і різної іншої електроніки. Це стабілізовану харчування зазвичай розраховане на навантаження не більше ніж 2-3А, хоча це теж залежить від моделі регулятора.

Вихідна напруга BEC по чорному і червоному проводах тонкого трижильного шлейфу від регулятора подається на приймач. Тут таїться головний нюанс, який не все відразу осмислюють. Повторюся — від регулятора йде кабель з трьома жилами. З них дві жили це харчування, яке видається з регулятора, тобто це вихід. А третій дріт (білий, жовтий або оранжевий) — це провід управління, тобто вхід. Начебто дрібниця, а чомусь багато плутаються.

В приймачі є кілька груп трехпиновых контактів. Їх кількість залежить від кількості каналів, на яке приймач розрахований. У машинок зазвичай 2 або 3 канали, так що груп, відповідно, 3 або 4 (одна група для встановлення перемички Pair (сигнал на спаровування приймача і передавача). У цих груп контактів всі піни харчування замкнуті між собою, тобто земля і харчування приходять з регулятора і подається відразу на всі групи контактів. А ось сигнальні піни всі незалежні, на них видається сигнал, прийнятий приймачем з радіоапаратури керування.

Звичайна схема підключення з колекторним двигуном

Звичайна схема підключення з безколекторним двигуном

Так як ми будемо управляти з допомогою незалежного контролера, рідний приймач машинки нам не потрібен, прибираємо його взагалі. А трьохжильні шлейфи від регулятора і від сервомашинки нам необхідно з'єднати хитрим чином — чорний дріт з'єднати з чорним, червоний — з червоним. А ті, що залишилися білі (жовті або жовтогарячі) два проводка треба підключити до Виртурилке, а саме до пинам CON44 і CON43, див. схему . Який саме провід до якого піну особливо значення не має, так як канали можна налаштувати потім в конфіги рцборды.

Повинно вийти приблизно таке підключення
Схема підключення Виртурилки до кишочкам машинки

Якщо під рукою є сервоудлинители — зручно зробити підключення за їх допомогою. У мене з ними вічний напряг, так що я просто обрізаю проводки і кручиваю-споюю.

І так, найголовніше — харчування на Виртурилку подаємо прямо з контактів акумулятора. Їй нестрашно напругу аж до 20В, так що чим вище напруга, тим краще, менший струм буде споживати. ККД перетворювача живлення (SEPIC, встановлений на самій Виртурилке) падає тільки після 15В, так що ідеальне харчування — від 12 до 15 В, при цьому в повному навантаженні (з вифи) Виртурилка буде споживати близько 150-300 мА. Хоча це теж залежить від свистка (свисток Yota дуже ненажерливий, з ним буде більше).

Збірка машинки

Я спробував зняти відео процесу складання мого краулера. Не знаю, наскільки там все зрозуміло, але зайвим, думаю, не буде. Ось відеоролик про збірку:



Налаштування сервера рцборды

Всі налаштування рцборды можна редагувати в спеціальній панелі управління рцбордой (не плутати з адмінкою Виртурилки). Ось так зараз виглядає панель управління рцборды (перша версія)



У вкладці «Загальні налаштування» можна задати ім'я пристрою (відображається при виявленні девайса в додатках), вказати треба запускати сервер рцборды автоматично при завантаженні Виртурилки, задати тип конфігурації.

Конфігурація може бути локальна (тобто файл конфігурації постійно знаходиться в каталозі рцборды і доступний для редагування в панелі управління), а може бути віддалена, коли файл конфігурації завантажується при кожному запуску рцборды з веб-сервера.

Сервер віддалених конфіги, по дефолту, http://rc.virt2real.ua/getconfig, створювати і редагувати конфігурації там дозволено тільки зареєстрованим користувачам форуму forum.virt2real.uk

В топіку я розповім лише про локальну конфігурацію, віддалену самі можете спробувати, якщо кому цікаво. До речі, коли я катався на машинці по Шеньчженю (відео наприкінці топіка), то як раз віддалений конфіг використовував, щоб можна було змінювати налаштування. Зміна налаштувань програми є поки що у вигляді начерків, толком ще не працює, але навіть коли і дороблю — віддалений конфіг все одно стане в нагоді.

Отже, найбільше нас зараз цікавить вкладка «Локальна конфігурація». Взагалі, дефолтний конфіг вже налаштовує рцборду в режим сервера, можна підключати машинку і управляти локально (в локальній мережі, з віндового програми, з андроидного або з айфонно-айпадного). Хіба що може знадобитися канали поміняти місцями. А ось для режиму P2P (peer-to-peer), для керування через Інтернет, налаштування доведеться міняти.

За замовчуванням за все управління відповідає бібліотека універсальний.so, параметри якої знаходяться в кінці конфига, в розділі "[універсальний]".

Відповідність каналів управління і каналів PWM/PPM задається параметром axis.

axis=0,1,2,3


По дефолту налаштоване 4 каналу PPM, які знаходяться на пинах CON43, CON44, CON19, CON42. За це відповідають ось ці рядки конфига

ch0=43,ppm,500,1500,2500,127,0
ch1=44,ppm,500,1500,2500,127,0
ch2=19,ppm,500,1500,2500,127,1
ch3=42,ppm,500,1500,2500,127,1


Формат налаштування каналу такий:
chX=CON,TYPE,MIN,CENTER,MAX,NEUTRAL,NOAUTOCENTER

Де
X — номер каналу PWM/PPM, від 0 до 3
CON — номер піна (не GPIO, а саме піна, див. схему
TYPE — тип сигналу, ppm або pwm. Для машинки потрібно ppm, для типу pwm інший формат рядка конфига.
MIN — мінімальне положення PPM сигналу, в мілісекундах.
MAX — максимальне положення PPM сигналу, в мілісекундах.
CENTER — центральне положення PPM сигналу, в мілісекундах.
NEUTRAL — відносне значення нейтралі, тобто нейтральне значення команд управління. Зазвичай = 127
NOAUTOCENTER — якщо = 0 — автоматично повертати сигнал в центральне положення, = 1 — не повертати. Для каналів газу і керма машинки потрібно вказати 0, для каналів сервоприводів, які використовуються для обертання камери огляду — потрібно вказати 1 (якщо такі є, звичайно)

Якщо на машинці стоять фари, можна зробити їх включення-виключення, потрібно зібрати найпростіший транзисторний підсилювач (один польовий транзистор, по суті). Для отримання керуючого сигналу використовується параметр «pins». Він задає піни, які будуть встановлюватися в 0 або 1 при натисканні кнопки в Virt2real Player (на екранних кнопках, клавіатурі, мишкою або на геймпаді).

pins=1,30,0,0|2,31,0,1
Формат такий:
pins=CHANNEL,CON,DEFVALUE,SAVESTATE|...
де
CHANNEL — канал кнопки (від 1 до 32)
CON — номер піна, який потрібно встановити в 0 або 1 по приходу команди управління з кнопок
DEFVALUE — значення, яке даний пін буде встановлено при запуску рцборды
SAVESTATE — якщо = 0 — при натисканні кнопки пін встановити в 1, при відпусканні — встановити в 0. Якщо = 1 — при натисканні кнопки пін встановити в 1, при відпусканні кнопки нічого не робити. При наступному натисканні кнопки пін встановити в 0, при відпусканні — знову нічого не робити. І так в циклі.

Канали кнопок можна вказувати поспіль, через роздільник "|".

Короткий висновок з цієї невиразною інформації — якщо у вас переплутані канали газу і керма — можна їх поміняти місцями, змінивши параметр на axis axis=1,0,2,3 :-)

Якщо потрібно обмежити крайнє положення серви керма — міняємо значення MIN і MAX для потрібного каналу. Якщо машинка при нейтральному положенні їде вперед або назад — змінити значення CENTER для потрібного каналу.

Додаткові модулі

У вкладці «Додаткові модулі» знаходиться список активних і неактивних модулів рцборды.



Модуль — це окремий додаток (виконуваний бінарники), яке зазвичай виступає в якості джерела телеметрії. Активні модулі — це ті, які автоматично запускаються при старті рцборды і завершуються за завершення її роботи. В панелі керування можна переміщати модулі з одного стовпця до іншого, натисканням на помаранчеву стрілочку. При переміщенні в колонку активних — модуль відразу запускається, неважливо, запущена рцборда чи ні. При переміщенні в неактивні — модуль автоматично припиняє роботу.

Модулі працюють просто — читають необхідні параметри і UDP відправляють на локальний порт (ext_telemetry), зазначений в конфіги. А там вже рцборда бере інфу і передає по каналу телеметрії в додаток Virt2real Player. Одночасно з цим та ж інформація передається у власну бібліотеку девайсу (в нашому випадку це універсальний.so), щоб програма могла аналізувати інформацію і використовувати за своїм призначенням. Наприклад, у мене була бібліотека девайсу під назвою autobot.so — керована візок, яка крім управління користувачем могла ще й автономно їздити, орієнтуючись по сигналу з ультразвукового далекоміра.

З основних модулів — statuswifi поставляє в рцборду інформацію про статус вайфай лінка. Airosstatus.php (так, модуль можна і на похапе писати) — читає статус лінка з обладнання Ubiquity, gps — читає GPS приймач. Модуль imu обробляє інфу з інерційних датчиків (кути Ейлера формує, азимут і компас), правда він поки працює тільки з одним типом датчиків, так що для універсального використання ще не годиться. Nfc — читає NFC мітки, але теж працює тільки з одним типом рідерів. rc.in — читає PPM сигнали з RC приймача, тобто машинкою можна ще і з звичайною аппы управляти, у неї пріоритет перед командами управління через вайфай. rfid — читає мітки RFID. statusyota — читає статус лінка 4G модем Yota. usrange — читає показання ультразвукових далекомірів. voltage — визначає напруга живлення борта, потрібно простенький дільник напруги (2 резистора) підключити до ADC0. Загалом, цікавих модулів купа, по кожному належить докладний опис робити, так що поки вважаємо що я згадав їх для затравки :-)

Для нашого рецепта керованої машинки актуальне модуль statuswifi — якщо налаштовуємо підключення через Wi-Fi або statusyota — якщо підключаємо Виртурилку через свисток Yota.

Настройка додатків

У Андроїдному і айпадно-айфонном додатках налаштування нескладні, полягають лише у виборі каналів управління. У Андроїдному є ще вибір каналу кнопок (за замовчуванням канал не задано, не відображаються кнопки). А ось в виндовом додатку я стільки фіч накрутив, що сам приходжу в стан легкої паніки при усвідомленні того, що все це треба задокументувати. Поки можу тільки дати ссилочку на опис минулій версії програми
http://wiki.virt2real.ua/wiki/Как_сделать_управляемую_тележку_2
http://wiki.virt2real.ua/wiki/RCboard

Протокол управління з тих пір помітно видозмінився, але ось налаштування віндового додатки змінилася не сильно, так що може допомогти при колупання. А докладний опис поточної версії постараюся написати в наступному році :-)

До речі, в самій ранньої версії для передачі телеметрії я використовував протокол MAVLINK, але по мірі обростання фічами його стало не вистачати, тому що перейшов на свій протокол. А MAVLINK подумую додати в якості паралельного каналу телеметрії, але це вже в наступній версії програми.

Скажу лише одне — найкраще управляти машинкою з USB керма і педалей, підключених до компу. Ну або хоча б з RC аппы, підключеної тренерським роз'ємом до компу. А пальцями по екрану смартфона може бути і круто, але ніфіга не зручно без тактильних відчуттів.

А тепер найголовніше — управління через Інтернет

Вступна інформація про P2P режим

Так як для каналу керування і для каналу відео використовується UDP — так і хотілося зробити повноцінний P2P (Peer-to-peer) лінк, щоб не ганяти відео від борту до сервера і назад до клієнта. Ну, раз хотілося — взяв і зробив :-) Фактично, вийшов простий і легкий аналог адобовского RTMFP (не плутати з RTMP). Тільки от передачу звуку додати ніяк руки не дійдуть, так що рцборда поки німа і глуха.

З UDP яка основна проблема — подолання NAT. Так як на одному з кінців лінка (на передавальній стороні або на приймальні) обов'язково є NAT — просто вказати адресу і порт сервера (або клієнта) не вийде — NAT завадить. У виндовом Virt2real Player є можливість з допомогою UPnP зробити кидок порту, але це не зовсім те чого я хотів. А те що хотів — вийшло тільки після вдумливого куріння технології UDP Hole Punching. В результаті все вийшло як треба — неважливо, який роутер, неважливо де клієнт або сервер. Головне щоб був вихід в Інтернет. Хоча брешу, є один єдиний тип NAT, який пробити поки не вдалося. Весь час забуваю як він правильно називається, начебто симетричний NAT.

І так, звичайні TURN і STUN сервери в рцборде не використовуються, тільки своя реалізація. Як я зазвичай кажу: хочеш вивчити технологію — зроби по-своєму, а потім порівняй з загальноприйнятими рішеннями. Любителі велосипедів мене зрозуміють. Однак часто виявляється, що велосипед не такий уже й поганий і свої завдання виконує краще ніж загальноприйняті рішення.

Це так, легкий оффтоп був. Продовжуємо про NAT. Підтримка P2P є поки тільки в виндовом додатку Virt2real Player, андроідний і айфонно-айпадное ще не додавав. Перевіряв роботу з коннектом через свисток Yota, через свисток Beeline 4G, через точку доступу на смартфоні, який в інет виходив теж через Beeline 4G. У всіх цих випадках все працює, але помітив що ідеально тільки через Yota. Через білайн (в будь-якому з випробуваних видах) теж працює, але коннект довше часу займає. Чому так відбувається — поки не розбирався. З сумного — поки не вдалося змусити працювати лінк (і команд, і відео) коли і клієнт і сервер підключені через 4G свистки. Можливо, тут як раз симетричний NAT і підкрався.

Налаштування P2P режиму, на борту варто Wi-Fi
До Виртурилке на борту машинки підключений свисток Wi-Fi (тобто як робили до сих пір по інструкції з цього топіка). Тільки спочатку ми управляли машинкою локально, а тепер зможемо дати кому-небудь поїхати з Інету.

Для включення p2p режиму йдемо веб-панель управління рцборды, розділ «Локальні налаштування». Там встановлюємо параметр
role=p2p


Тепер необхідно задати параметри p2p_uid і p2p_hash. Це такий собі аналог логіну-пароля, але повноцінної авторизації поки немає (але буде обов'язково), так що використовуємо саме таку зв'язку. p2p_uid краще брати зі своєї учеткі на rc.virt2real.ua/remoteconfig/ там він називається «ID користувача», тоді буде механізм інвайтів працювати (про це трохи нижче). А p2p_hash треба придумати самостійно. Будь-який набір символів, максимальна довжина 40 символів.

Все, на цьому налаштування p2p режиму рцборды закінчена. Необхідно переконатися що Виртурилка має вихід в інет і можна запускати Virt2real Player віндовий. Якщо його запустити в локальній мережі, там же де і рцборда — плеєр виявить локальну рцборду (неважливо що вона в p2p режимі) і можна буде підключитися безпосередньо. А ось якщо плеєр запускається в іншій мережі, потрібно налаштувати його на p2p режим.

Клацаємо правою кнопкою миші по вікну плеєра, йдемо в меню «Мережа»- > «Настройка мережі». У вкладці «Роль» вибираємо «P2P», у вкладці «P2P» вказуємо UID і DevID. UID це той же p2p_uid, який у налаштуваннях рцборды вводили, а DevID — це той p2p_hash. Зберігаємо, знову клацаємо правою кнопкою миші по вікну відео, «Мережа» -> «Підключити». У нижньому лівому кутку плеєра повинні з'явитися повідомлення «Запит бенкету відео» і «Запит бенкету команд». Все, процес виявлення бенкету і спаровування пішов.

Іноді буває що повідомлення не з'являються, тоді краще просто перезапустити плеєр (мій косяк, не упіймав його ще), при запуску він сам відразу почнемо коннектіться з тими параметрами, які ми йому поставили, тобто в режимі P2P.

З помічених нюансів — якщо плеєр запускаємо на компі, який виходить в інет через Yota — коннект швидко встановлюється. Само собою, якщо у Йоти сигнал нормальний. А от якщо через роутер Yota або 4G свисток від Білайну — перше підключення може тривати до хвилини. Але зате всі наступні майже миттєво будуть. Я приблизно знаю, де я накосячілі, але виправити поки руки не дійшли.

Налаштування P2P режиму, на борту варто Yota
До micro-USB порту Виртурилки на борту машинки підключаємо свисток Yota (через перехідник USB OTG, само собою). Ті свистки, які зараз у продажу у Yota

Все інше аналогічно попередньому пункту. Хіба що у налаштуваннях рцборды в розділі «Додаткові модулі» добре б прибрати з активних скриптів модуль statuswifi і навпаки, помістити в активні скрипти модуль statusyota, для того щоб в плеєрі бачити параметри сигналу Yota.

Ілюстрації різних типів конекту
На жаль, вдома у мене Yota ледве-ледве фуричить, так що повноцінно не покатаєшся. А ось Билайновский 4G відмінно працює, потік 3 мегабіта (і вхідний, та вихідний) пролазить без проблем.

У всіх наведених нижче експериментах всі налаштування однакові, змінюється лише вид зв'язку.

Краулер зі свистком Wi-Fi, підключення Інтернету через Yota

Краулер зі свистком Yota, підключення домашньої локальної мережі. Сигнал Yota дуже поганий :-(

Краулер зі свистком Wi-Fi, з ноутбука, який має вихід в інет через смартфон (Білайн 4G)

Інвайт
Щоб було простіше передати комусь параметри для підключення до нашої машинці в режимі P2P, були створені намітки механізму інвайтів. Що таке інвайти — знають всі. Зручна штука. Так що зараз спробую розповісти як цим користуватися. У плеєрі це поки що в тестовому, сирому вигляді, але ніби як працює.

Отже, відкриваємо віндовий Virt2real Player, клацаємо правою кнопкою миші по вікну, вибираємо «Інвайт» -> «Створити інвайт». Важливий нюанс — плеєр повинен бути налаштований на P2P режим, тобто в налаштуваннях мережі вказані всі вищеописані параметри для підключення до машинці. Інакше інвайт створиться, але підключатися не буде до чого. До речі, треба б додати показ попередження, якщо параметри не заповнені.

У полі «Ваш ID користувача» вводимо все той же наш p2p_uid.
У полі «Ваш user-magic» вводимо вміст поля «Ваш user-magic» зі все тієї ж сторінки rc.virt2real.ua/remoteconfig/
В полі «Назва інвайту» вводимо назву, під яким цей інвайт буде на сторінці rc.virt2real.ua/remoteconfig/ відображатися.

Тепер тиснемо кнопку «Створити інвайт». Повинна покрутитися двоечка-логотип, після чого в нижньому полі «Рядок-інвайт» з'явиться довга рядок, що починається з символів INV.



Тепер, якщо відкрити сторінку віддаленої конфігурації rc.virt2real.ua/remoteconfig/ побачимо що там з'явився інвайт, який ми тільки що створили



Ну а далі досить скинути цю сходинку того, кому хочемо дати покататися. А він, у свою чергу, повинен в плеєрі зайти в меню «Інвайт» -> «У мене є інвайт!» і ввести цю сходинку. Після чого всі потрібні параметри заповняться самі собою, нічого для підключення налаштовувати не доведеться, можна відразу кататися.

Як я вже говорив, система сирувата, але працює. У планах — зробити нормальну авторизацію по логіну-пароля, щоб не доводилося возитися з юзермеджиками та іншими айдишниками.

Трохи про затримку

Головна вимога до дистанційного управління одне — як можна менша затримка від натискання кнопки або переміщення джойстика до відповідної зміни відображуваної з борту пристрою картинки у відеопотоці. Коли публікуєш що-небудь на тему віддаленого управління зазвичай перше питання — «яка затримка?».

Після численних випробувань виявилося, що затримки — штука суб'єктивна і на комфортність управління впливає по різному. Само собою, все залежить від максимальної швидкості ездящего девайса. Для літаючих девайсів (літаки/коптеры) мінімальність затримки дуже важлива, а от при управлінні ездящими пристроями — не завжди. Коли я на черговій виставці Хобі-експо розсікав по залу на переробленої радіокерованої баггі, через десять хвилин руління зловив себе на думці що затримка (яка б вона не була) перестає відчуватися, починаєш управляти «на випередження». На майже половині швидкості (а баггі моя до 80 км/год може розганятися) спокійно ганяв по залу, лавіруючи між павільйонами, стільцями, людьми. Так що тут, скоріше, важлива стабільність затримки, а не її абсолютна значення в мілісекундах. Мінімальна досягнута затримка при конекті до звичайного роутера через звичайний Wi-Fi свисток була десь в районі 200 мс, а при конекті через загальновизнаний еталон — потужні роутери фірми Ubiquity мінімальна затримка при впевненому конекті — близько 100 мс. Ще на затримку впливає потужність пристрою відтворення відеопотоку (ПК, смартфон), якщо воно не встигає декодувати сирої відео кодек H264) приємного плавного відео не буде.

Коли я керував досить швидкісний баггі в Шеньчжені, сидячи вдома в Москві, досить комфортно було керувати, хоча тільки мережний пінг від мене до сервера китайського 4G оператора був близько 300 мс. Плюс ще 100 мс наші — разом під півсекунди набігає. Однак відмінно покатався :-)

Деякі нюанси при зв'язку по 4G
Після диких дропов при польоті на літаку розібралися в чому проблема. Якщо коннект через 4G — треба параметр mtu встановлювати рівним 1322 або менше. Менше не треба, ставимо mtu=1322 і не паримося. В локальній мережі я зазвичай взагалі 16000 ставлю (максимальний розмір Jumbo Frames), в локалці це нормально працює, а ось через Інтернет вже проблеми з проходженням пакетів.

Посилання
Так як тексту вийшло овер-дофіга, основні посилання повторю.

Прошивка rcboard-0.01.002.zip для Виртурилки

Дистрибутив Virt2real Player для Windows.
Те ж саме, але не установник а просто архів
Під Win8 некоректно перевіряє наявність DirectX, так що можна просто розпакувати архів. Вимагається .Net 4.5 і DirectX.

Опис минулій версії РЦборды і Virt2real Player
опис рцборды, старий протокол

Приложение для Android. Тільки локальне управління.
Додаток для IOS, тільки локальне управління, ні виявлення девайсів. Зараз там стара версія, нова проходить аппрув.

P. S. Ехх, шкода Тачка Бонда не дожила до появи рцборды :-(
Якщо хто не в курсіhabrahabr.ru/company/virt2real/blog/172167/

Останні випробування, коли з телеканалу Discovery приїжджали знімати ролик




Сейча вона ось так виглядає

Задня передача здохла, дно проржавіла і вивалився. Загалом, кирдик пупсу :-(



Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.