Рождение концепции Remote Reality


История нашего «безумного» проекта началась три года назад, когда размышляя о будущих перспективах развития игровой индустрии, мой друг Леша сказал: «Представь себе будущее, в котором люди в виде развлечения, из любой части мира управляют на игровом полигоне настоящими роботами, как «аватарами»».


image

Идея изначально показалась нам достаточно интересной и не сложной в реализации. Мы тут же «засели» за поиски похожих проектов и с удивлением обнаружили, что никто, ничего подобного не делал. Это казалось странным, ведь идея лежала буквально «на поверхности». Мы нашли множество следов любительских проектов создания прототипов в виде шасси с камерой на основе Arduino, но никто так и не довел ни один проект до логического завершения. Позднее, преодолевая казалось бесконечные трудности и проблемы, мы поняли причину отсутствия аналогов, но изначально идея нам казалось крайне простой и быстро реализуемой.


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


Мы сразу решили, что эти мысли укладываются больше в концепцию развлекательного аттракциона, а не компьютерной игры. Люди любят развлечения и хотят чего-то нового, и мы знали, что им предложить. Как и в любом бизнесе, сразу всплыл вопрос окупаемости, ведь на первый взгляд кажется, что наша физическая модель ограничена количеством роботов. Но умножив роботов на 24 часа и на цену часа в 5-10 долларов, сомнения отпали. Финансовая модель не являлось «Клондайком», но вполне окупалась даже при 10% загрузке.


Очень быстро у нас в голове появилось название новой концепции: Remote Reality, по аналогии с Virtual Reality и Augmented Reality.


image

Как и остальные «экспериментаторы», первым делом, мы взяли машинку на радиоуправлении, поставили на нее китайскую Wi-Fi камеру, установили плату Arduino и наш робот «поехал». Мы попросили нашего знакомого из США подключиться к машинке через Интернет. Он смог ездить по нашему офису и мы были в восторге. Задержки управления и видеопотока в несколько секунд нам не казались проблемой.


С этой минуты мы распределили нашу работу на два направления:


  • моделирование и строительство игрового полигона
  • разработка и создание роботов и системы управления

Гулливеры в городе Припять


Начну свой рассказ с полигона. Мы понимали, что люди должны были где-то играть. Место должно быть известное во всем мире, «загадочное» и несложное в технической реализации. Перебирая множество вариантов, нам внезапно пришла в голову мысль о Чернобыле. Чернобыльская зона соответствовала всем нашим требованиями, а главное все возможные будущие поломки и повреждения игрового полигона, можно было списать на пост апокалипсис.


Найдя помещение площадью 200 квадратных метров, мы принялись за работу, которая в итоге длилась два года. Мы рисовали улицы и текстуры домов, создавали трехмерные модели зданий, включая внутренние этажи. Потом вырезали все из ДСП плит и фанеры, собирали здания из сотен разнообразных частей.


image

Мы пытались воссоздать, как можно точнее все текстуры Припяти, «подсматривая» в Google карты. Разумеется, размеры помещения не позволяли нам создать все в точности, а упускать детали не хотелось, поэтому, например, нам пришлось ЧАЭС переместить поближе к Припяти.


Сложно подсчитать сколько сотен досок, десятков листов фанеры, ДВП и прочих «расходников» мы потратили. Последние три месяца мы буквально ползали на четвереньках c кисточками и красками, оформляя дома и этажи. Нам хотелось, чтобы детализация была максимальной. Масштаб города получился 1:16 и дома высотой в 9 этажей были примерно на уровне груди взрослого человека. Находясь в этом городе мы ощущали себя настоящими великанами.


image

Немножко о нас


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


image

Хорошим примером командной работы послужила история с 3D печатью. Мы собрали свой принтер и печатали первое время детали самостоятельно, пока не пришли к выводу, что нельзя быть специалистом во всем. Печать занимала у нас много времени, части деталей были большого размера и неожиданный брак в конце печати детали портил нам все планы. В итоге, мы нашли «узкого» специалиста по 3D печати, который стал впоследствии частью нашей команды. Разде��ив наши мечты, он помогал нам изготавливать корпуса роботов просто по себестоимости пластика.


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


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


image

image

image

Чтобы максимально сэкономить на строительстве игровой арены, нам практически все приходилось делать самим. Но кроме большого полигона была еще и техническая часть…


Победа над задержкой видео сигнала


Наверняка вопросы инженерной реализации проекта Вам будут более интересны, чем описание нашего “градостроительства”.


Вернемся к моменту, когда, как Вы помните, мы поставили камеру на “тележку” и смогли ей управлять. Вслед за этим пришла пора выбрать железо и технологии для создания наших роботов. Тут нас ждал первый сюрприз: перебрав десяток камер, мы так и не смогли добиться задержки сигнала при котором управление роботом через интернет было бы комфортным. Все осложнялось временем, которое требовалось, чтобы заказать образцы камер в Китае и их протестировать.


image

Мы хотели сделать систему управления роботами полностью в браузере без всяких «скачайте наш замечательный клиент» и устаревших Flash плееров. Это значительно сузило список технологий и камер, которые их поддерживают. Мы долго экспериментировали с передачей видеопотока в формате MJPEG, но в итоге отказались от этой идеи. Эти эксперименты стоили нам потери полугода времени. Мы даже полностью собрали первых пять роботов и запустили открытое тестирование для всех желающих, но...


Живые тесты показали неспособность роутера обработать огромный видеопоток по радиоканалу от нескольких роботов в формате MJPEG, как только мы ни пытались оптимизировать разрешение картинки. Видео поток с одного робота не получалось сделать менее 20-30 МБит, что делало невозможным стабильную одновременную работу планируемых нами 20 роботов. Также мы не смогли найти готового решения передачи звука без задержки. Это привело к тому, что нам пришлось искать заново подходящую для наших задач технологию.


В итоге наш выбор остановился на WebRTC. Это обеспечило нам передачу видео изображения и звука с задержкой всего 0.2 секунды.


image

Дальше пришло время моделировать и собирать роботов. Чтобы меньше зависеть от внешних поставщиков, все детали наших ботов мы печатали на 3D принтере. Это позволило создать нам максимально компактную модель робота, и оптимально поместить внутрь всю электронику и мощные аккумуляторы.


Система электропитания


Следующий вопрос был связан с электропитанием, ведь нам очень хотелось менять аккумуляторы, как можно реже. Перебрав много готовых вариантов, мы остановились на собственном аккумуляторе, собранном из элементов Panasonic 18650B. Батарея напряжением 17 вольт и емкостью 6800 мАч дала возможность нашим роботам ездить фактически по 10-12 часов на одном заряде.


image

В процессе экспериментов мы успешно «угробили» сотню элементов, потому, что нам хотелось использовать емкость элементов максимально, а напряжение в конце разряда падало очень быстро и наш простой индикатор напряжения, собранный на делителе, не всегда давал точные показания. Но в итоге мы подняли порог минимально допустимого напряжения с 2.5 вольт до 3.2, плюс поставили микросхему для точного контроля напряжения и случаи «смерти» Панасоников прекратились.


В качестве зарядных устройств мы выбрали популярные среди моделистов устройства iMax B6 с опцией заряда в режиме балансировки элементов. Часть аккумуляторов мы “угробили” по причине неправильной калибровки китайских копий iMax B6. Мы соединили пять банок и заряжали их в режиме балансировки. В конце заряда проверялось общее напряжение батареи без разбивки на элементы, а фактически одна банка не была заряжена до конца и «умирала» первой.


Двигатели для роботов


Наверняка многие из вас задали себе вопрос: а почему 17 вольт? Ответ скрывается в моторах. Моторы — это вторая часть наших «китайских мук» после выбора камер. Мы перебрали много разных моторов. К нашему ужасу, почти все они имели маленький ресурс и быстро выходили из строя. Через 3-4 месяца, в ходе экспериментов, нам удалось найти производителя “нормальных” моторов в плане надежности, но финального решения все еще не было.


image

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


Ох, я сказал, это слово — «танчики».


Почему «танчики»?


Почему именно «танчики»? Ответ прост. Если к задержке камеры добавить неизвестную нам задержку Интернет канала, то какой нибудь житель Австралии сможет комфортно управлять только чем-то относительно медленным. Это был первый аргумент в пользу выбора танков, а второй аргумент, который нас убедил окончательно, заключался в комфортном управлении роботом. Человек привык, нажимая на “стрелочку” вправо, ожидать поворота робота вправо, а без гусениц это было невозможно сделать, ведь только танки поворачивают «на месте». Также мы радовались, ожидаемой «супер проходимости». Заказав в Китае ящик резиновых гусениц, мы принялись печатать «колеса-катки» под гусеницы.


image

Первые же тесты разбили наши мечты в «пух и прах», гусеницы частенько слетали с танка при наезде на низкие препятствия. Изучив основы танковой механики и испробовав разные натяжители и вспомогательные колеса, мы все равно не решили эту проблему. С гусеницами пришлось расстаться. Так, как роботы уже были напечатаны и собраны, нам пришлось искать какое-то быстрое и несложное решение, а оно было одно — хорошие колеса с резиновым протектором. И как же поворот на месте спросите Вы? Мы «выкрутились», связав две оси между собой тонким ремешком от 3D принтера. В общем получился колесный робот с полным приводом и поворотом на месте.


image

Сердце робота


Мы рассказали уже о большинстве элементов нашего робота и ничего не сказали о самой важной составляющей.


image

В основу нашего бота «лег» мини компьютер Raspberry Pi на ОС Linux и специально разработанное ПО, которое позволяет общаться роботу с сервером. Raspberry Pi работает совместно с разработанной нами платой контроля и управления. Плата включает в себя микроконтроллер, драйвер моторов, микросхемы обработки сигналов с различных датчиков, модуль точного контроля напряжения АКБ. Для удобства сборки, мы реализовали абсолютно все подключения периферии на отдельных разъемах.


image

Как я уже упоминал ранее, нам часто приходилось менять комплектующие, когда мы сталкивались с непредвиденными проблемами. Так получилось и в это раз. Изначально мы собрали первых роботов на Orange Pi, для экономии. В дальнейшим нам пришлось их заменить на Raspberry Pi 2 B. Но и это был не конец. Нам вскоре опять пришлось заменить этот мини компьютер на версию Raspberry Pi 3 B+ которая имела на борту WiFi модуль 5 Ггц. Но об этом далее.


Настройка Wi-Fi


Следующая проблема, которая нас поджидала, заключалась в Wi-Fi радио канале. О ней мы узнали только, начав тесты сразу 10 роботов в движении. Наш полигон располагался в закрытом подвале и «переотраженка» от железобетонных стен была просто ужасной. Команды управления проходили нормально, а вот видеопоток дико «тормозил», стоило одному из роботов уехать в дальний угол помещения.


Справиться с загрузкой канала нам помог переход с 2.4 ГГц на 5 ГГц. Но сложности на этом не закончились. Если робот заезжал за угол, сигнал падал ниже -80 dBm и начинались «тормоза». Окончательно мы решили проблему, установив секторную антенну с разнесенным приемом и подняв мощность передатчика до полу ватта. Разумеется, роутер пришлось «подобрать» из сегмента бизнес решений с мощным процессором.


Стоит упомянуть, что мы долго пытались вместо увеличения мощности, настроить режим “бесшовного” роуминга на основе решения Ubiquity, но увы, нужный нам модуль Wi-Fi “отказывался “его поддерживать, а вот iPhone работал великолепно, перемещаясь между несколькими точками доступа.


image

image

Собрав «десяток» роботов и запустив сервер контроля и управления мы в ноябре 2018 года вышли на Кикстартер с проектом Isotopium Chernobyl. Мы даже не догадывались, что нашу игру вскоре попробуют десятки тысяч человек.


О том, что нас ждало дальше и почему мы почти закрыли проект, читайте в нашей следующей статье: Онлайн игра с RC моделями, управляемыми через интернет


image