[Из песочницы] Intel IoT Roadshow или виртуальная реальность в реальном мире
С 27 по 28 июня 2015 года прошел хакатон, организованный компанией Intel, где проект SenseDrive занял второе место. Во время презентации наша команда немного заглянула в будущее и продемонстрировала, как можно расширить человеческие возможности, погрузившись в виртуальное пространство, подключенное к интернету вещей.
Немного предыстории
Все началось с конференции DevCon 2015, где я впервые познакомился с возможностями технологии RealSense, а на ночном хакатоне мне посчастливилось оценить возможности камеры и RealSense SDK. Первым моим желанием было подключить камеру к очками виртуальной реальности, чтобы видеть свои «виртуальные» руки. Однако найти свободных Unity программистов и 3D дизайнеров мне на том хакатоне не удалось. По этому, объединившись с парнем из Вьетнама, мы успели достаточно хорошо изучить SDK и особенности работы с камерой, чтобы продемонстрировать простенькую программку, помогающую программистам делать зарядку для глаз и следящую за тем, чтобы программист при этом не «схалтурил». Там же я узнал, что через неделю в Питере будет еще один хакатон по этой технологии.
Итак, теперь у меня уже была неделя на подготовку. Я заинтересовал своей идеей коллегу Дмитрия Постильгу, который набросал в Unity интерфейс с трехмерными руками для Windows Phone. А я в это время разрабатывал возможность передачи данных о положении рук в смартфон.
Задача эта была не тривиальная, так как RealSense требует для подключения весьма мощный процессор и USB 3.0, которые по понятным причинам в нашем смартфоне отсутствовали. Пришлось написать плагин для Unity, который разворачивает сервер на телефоне и клиентское приложение для PC, передающее обработанные пакеты данных на телефон, что дало нам возможность «подключить» сразу несколько камер к будущим виртуальным очкам для более точного определения положения рук.
В результате получилось достаточно гибкая архитектура, в которой для Unity не было заметно разницы: идут ли данные с камеры на прямую (для случая когда приложение развернуто на PC) или по WiFi (для случая когда приложение развернуто на смартфоне). Забегая вперед, именно такая архитектура нас спасла во время презентации на последнем хакатоне.
Неделя оказалась очень маленьким сроком, чтобы успеть создать прототип виртуальных рук, так как мы занимались проектом в свободное от основной работ время. Писали проект даже ночью, пока ехали в поезде из Минска в Питер. В итоге мы заняли первое место.
Так же на втором хакатоне я узнал о грядущем через месяц Intel IoT Roadshow и познакомился с Максимом Массальским из «Кухни Роботов» — минской лаборатории по робототехнике. С ним мы и решили окончательно объединить виртуальный и реальный мир.
Для демонстрации этих возможностей, Максимом был собран робот с подвижной камерой, который на хакотоне мы подключили к плате Intel Edison. Максим запустил WiFi и трансляцию видео потока с камеры робота в сеть. Мы разработали систему команд управления и получился робот, в которого можно «вселиться» из виртуальной реальности.
Робот транслирует то, что видит через видеокамеру: поток с камеры запущенный на Intel Edison, прямо в виртуальные очки, а виртуальная реальность передает положение головы и команды с виртуальных «рычагов» управления в робота. У нас получилось создать у пользователя очков «эффект присутствия» в кабине управления робота-аватара. При этом пользователь не только мог руками (без мышки, клавиатуры и вообще каких-либо проводов) указывать куда роботу ехать, но и повернуть головой в стороны, при этом робот послушно выполнял то же самое поворачивая свою камеру.
Робот-аватар — это, конечно, здорово, но не совсем понятно, какая от него польза. Поэтому одного робота нам оказалось не достаточно. Еще до хакатона мы провели небольшой мозговой штурм с целью придумать, как лучше и понятнее донести полезность технологии до членов жюри. За примерами долго ходить было не нужно, их оказалось очень много (часть из них вы можете найти в описании проекта), однако за 24 часа не так много можно успеть, поэтому было решено выбрать два вида:
- Выключение какого-нибудь электроприбора (ведь никто не хочет чтобы его дом сгорел от того, что в спешке был остановлен включенным утюг или плита);
- Кормление оставленного дома домашнего питомца. Ведь много у кого дома есть котик, собачка, черепашка, крокодильчик:) И порой приходится поехать на работу, в отпуск, в гости… Домашнего любимца взять с собой возможности нет, а кормить его как-то надо.
Запасливый Максим прихватил с собой несколько сервоприводов и реле, остальное было решено искать на месте.
В качестве электоприбора, способного сжечь квартиру, мы использовали электрочайник. С этим нам помог Евгений Ткачевский, парень из Video Wings, которому оказался интересен наш проект и он принес чайник из дома на утро второго дня.
Кормушку для котика спроектировали на бумаге в поезде по дороге в Питер, нарисовали компьютерную модель и распечатали на 3D-принтере сразу как приехали. А вот с поисками кота все было сложнее. В окрестностях места проведения мероприятия котов не оказалось, поэтому мы одолжили игрушечного медвежонка у одного из экспертов Intel.
Надо сказать, что проект вызвал живой интерес еще на этапе тестирования. Еще бы, не каждый день увидишь программиста с закрытыми белой коробкой глазами, машущего руками перед ноутбуком и рядом стоящего на подставке робота, крутящего колесами взад вперед и машущего своей головой… Некоторым зрителям даже посчастливилось испытать себя в роли водителя робота.
Презентация
К сожалению, на момент презентации интернет лег окончательно, говорить о какой-либо передаче данных про положение рук, а уж тем более о трансляции потокового видео с камеры робота было уже нельзя. В последние секунды перед выходом было решено максимально разгрузить поток данных, оставив лишь команды управления роботом и полностью отвязаться от виртуальных очков. Нам пришлось демонстрировать PC версию проекта, в которой нельзя было повернуть голову и видеть глазами робота. Мы могли лишь управлять роботом, чайником и кормушкой с помощью виртуальных рук, наблюдая через плечо движения робота, выключение чайника и высыпание корма. Ну и напоследок желающим мы предложили померить очки и ощутить хоть на мгновение себя в виртуальном мире.
Почему именно виртуальная реальность?
К сожалению, из-за технических трудностей мы так и не смогли донести основную идею проекта — чем же управление из виртуального мира отличается от простого кликания мышкой по кнопочкам на экране. А все на самом деле просто, кому-то удобнее кликать мышкой, кому-то тыкать пальцем в экран, кому-то писать в консоли, виртуальная же реальность дает возможность взаимодействия с реальным миром с помощью привычных человеческому телу действий и жестов, что позволяет выполнять сразу несколько действий привычным для человека образом.
К примеру, в текущей реализации можно одной рукой заставить робота поехать прямо, второй слегка повернуть его вправо, при этом повернуть голову и посмотреть, что происходит слева. Наверняка, многим автомобилистам доводилось одной рукой держать руль, второй разговаривать по телефону и при этом периодически поглядывать в сторону, не идет ли на повороте какой-нибудь зазевавшийся пешеход. Тут то же самое. Ну и в качестве бонуса в виртуальном мире человек может иметь «сверх способности» подобно супер героям. К примеру, чтобы переключиться из робота в чайник или кормушку, я производил пасы руками, что приводило к перемещению трехмерных объектов в этом мире, подобно джедаям… Была идея выпустить фаербол из руки и тем самым выключить робота, но решили что это уже перебор.
Это ли не есть свобода? Свобода перемещения, свобода мыслей, свобода действий, свобода фантазии…
Но и это еще не все. Не всегда человеку удобно управлять каким-то сложным объектом в одиночку. Текущая реализация проекта позволяет нескольким людям управлять одновременно несколькими частями одного устройства. За примерами далеко ходить не надо. Двум пользователям можно подключиться к роботу-танку, один будет управлять перемещениями танка по поверхности, а второй в это время будет поворачивать башню танка и иметь доступ к управлению дулом. Только представьте, как будет выглядеть игра танковый бой при такой ее реализации?!
С точки зрения производства теперь не надо тратить большие деньги на изготовление подходящих клавиатур, мышек, джойстиков или любых других манипуляторов. Достаточно просто нарисовать панель управления и загрузить ее в виртуальный мир. А как она будет выглядеть, зависит лишь от фантазии и конкретных нужд.
Что дальше?
На хакатоне нашей целью было продемонстрировать возможности открываемые симбиозом интернета вещей, роботов и виртуальной реальности. Сейчас мы на этапе ориентирования проекта и пока вырисовываются следующие направления:
- Разработка робота, управляемого одновременно несколькими людьми, прототип робота танка;
- Добавление поддержки платформ Android и IOS в текущий проект;
- Разработка полноценного робота-аватара, способного брать предметы и транслировать стерео картинку с двух глаз;
- Разработка полноценного протокола и SDK для подключения к Интернету вещей и виртуальной реальности. Это позволит любому желающему без особых усилий подключить свои электронные штучки к виртуальной реальности и как следствие расширит спектр применения очков;
- Разработка собственных виртуальных очков;
- Добавление нейроинтерфейса, что даст возможность людям не только управлять вещами с помощью телодвижений, но и силой мысли. На последнем хакатоне было несколько проектов использующих подобный интерфейс и возможно мы сможем объединить наши усилия на благо человечества.