ИгрыХабрахабр

[Из песочницы] Как мы запускали роботов в маленький Чернобыль

Рождение концепции 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, но в итоге отказались от этой идеи. Мы даже полностью собрали первых пять роботов и запустили открытое тестирование для всех желающих, но...

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

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

image

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

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

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

image

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

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

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

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

image

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

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

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

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

image

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

image

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

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

image

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

image

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

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

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

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

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

image

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

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

image

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть