Эксперимент «Лабораторная работа», или Как мы создали робота, пользующегося смартфоном

cf5762be253d4c59ea86d0e5ccb1a47d.jpgРимейк всем известной мудрости гласит, что лучше один раз увидеть, чем сто раз прочитать. Мы много рассказываем о новых возможностях и преимуществах, которые даёт второй экран YotaPhone. Но самые доходчивые описания не сравнятся с возможностью посмотреть, каково это — работать со вторым экраном смартфона.

И мы решили создать робота, который помог бы продемонстрировать идею. И не просто робота, а специально обученного управлять YotaPhone. Мы создали его вместе с замечательными ребятами из Look At Media.

«Лабораторная работа«Этот проект мы назвали «Лабораторная работа». Суть его заключается в том, чтобы дать возможность всем желающим удалённо протестировать некоторые функции YotaPhone с помощью специально созданного для этого робота. Самого настоящего, из плоти и крови пластика и сервомоторов. А благодаря двум камерам можно наблюдать за происходящим на обоих экранах YotaPhone.

Вкратце процесс управления роботом заключался в следующем: через вебсайт можно было отправить текст СМС и номер, а потом наблюдать, как робот набирает его и отправляет вместо вас. Если в тексте встречались определённые слова-маркеры, то на втором экране появлялась картинка, созданная для этого слова.

За время работы робота в качестве отправителя СМС, наши пользователи отправили с его помощью 4 775 сообщений, из которых 218 были признаниями в любви. Кстати, было также 65 попыток взлома.

842741f2aeb7c17c49ae258c965033e2.jpg

c9cc7a811ab62e73a4d0e07953af17b5.jpg

Затем был проведён второй этап испытаний: мы дали возможность удалённо загружать обои на второй экран принадлежащего роботу YotaPhone, а также выбирать различные виджеты. Робот «собирал» на главном экране набор из обоев и виджетов, а потом фирменным жестом put2back эффектно отправлял его на второй экран. На протяжении этого этапа пользователи сгенерировали 886 картинок и загрузили 88 фотографий.

0483df556d52a62241f7057702c98bb4.jpg

582d7e95ab774f835e8f6989eea09216.jpg

Недавно завершился третий этап удалённого тестирования YotaPhone всеми желающими с помощью робота. На этот раз мы провели стресс-тест: сколько времени проработает YotaPhone от одного заряда аккумулятора в режиме чтения книги на втором экране. В роли литературного источника выступила «Война и мир», а скорость «чтения» составила примерно 3 страницы в минуту. Специально для третьего этапа мы соорудили вокруг YotaPhone обруч, на котором размещена подсветка для второго экрана. Она подключена к дополнительному Arduino. Любой желающий мог не только круглосуточно наблюдать за процессом чтения «Войны и мира», но и менять интенсивность освещения, моделируя ситуации для разного времени суток.

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

5a197a8e017740a1e693d268ebec3ecb.jpg

49b749eb681e777f3080710715b1d8a9.jpg

d11b269dbfc0cba836f5f61ecdadb4ea.jpg

История создания 88ae4ace77d6bd3c18025c03d8297f08.jpg

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

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

61eb44e4c2a00f4626499f54208a46a1.jpg

1a232ac64ebbfe26b64f8502757272de.jpg

a184a7eb95fcd89c3628ae9cf0d90fb3.jpg

Для управления всеми сервомоторами решили применить Arduino UNO. После испытаний первой версии прототипа пришли к следующим выводам: • Для повышения точности позиционирования нужно убрать сервоприводы с фаланг пальцев• Каждый палец должен управляться только одним сервоприводом• Для свайп-жеста нужно обеспечить перемещение всей руки вверх/вниз

455ce1e6d987150e79952a0f2758c24c.gif

Рабочие образцыВ CAD-пакете SolidWorks мы создали 3D-модели 15 деталей, из которых состоит рука. После печати на 3D-принтере и сборки провели тестирование на взаимодействие с сенсорным экраном.

38d58aaa361738617f155e02cc5786a8.jpg

0c1879343c77cef555fcd73af493e191.jpg

fc700441ec3aa485ab854e132f246e88.jpg

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

78a2db2d208236acf1b7e4a50738e0cc.jpg

Установили на руку поворотный двигатель и сервоприводы, управляющие пальцами. Их точности оказалось недостаточно для уверенного позиционирования, пальцы не попадали по виртуальным кнопкам на экране смартфона. В результате пришлось применить дорогие сервоприводы, выпускающиеся для авиамоделистов: FUTABA S1353 для пальцев и BLS-352 для поворота руки. Помимо точности позиционирования мы решили и проблему надёжности, потому что рука должна была работать непрерывно в течение трёх недель.

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

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

Для улучшения внешнего вида робота напечатали второй рабочий образец из более светлого пластика. Перед сборкой дополнительно покрасили детали в белый цвет, чтобы придать изделию ещё более нарядный вид.

9834c8066cba1324be7dc82e9cc50408.jpg

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

b6ad3376a82840d7d2417c50aabf549f.jpg

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

bdc596c47a5b86e1327365021745dd3b.gif

Программная частьПосле устранения всех электронно-механических препятствий, мы перешли к отладке программной части проекта. В качестве клиентской части мы написали небольшое веб-приложение на JavaScript. Информация от клиента попадает на наш сервер, на котором установлена Ruby 2.0.0 Rails 4 MySQL. Сервер собирает пользовательские запросы и формирует очередь задач для робота. Эту информацию сервер отправляет в локальное управляющее приложение, написанное нами на NodeJS. Все данные передаются в формате JSON. Далее задачи преобразуются в конкретные команды для Arduino, к которому непосредственно подключён робот. Взаимодействие с Arduino осуществляется посредством библиотеки voodootikigod/node-serialport.

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

Третьей функцией, возложенной на управляющее приложение, является запись видеофрагментов, на которых запечатлено выполнение каждой задачи. Для видеозаписи используются камеры Logitech C920, закреплённые на гибких держателях. Во время прохождения первого этапа проекта, управляющее приложение получало от клиентского модуля на смартфоне информацию об отправке СМС. Видеоряд с камер записывался с помощью программы WireCast, далее из него вырезался соответствующий видеофрагмент и ссылка на него отправлялась пользователю.

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

Всего мы изготовили двух роботов, которые непосредственно участвовали в публичном тестировании YotaPhone. Последний образец был немного модернизирован: пришлось изменить место крепления поворотного двигателя к руке, чтобы робот мог делать жест пролистывания экрана (свайп).

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

Мы хотели бы дать возможность всем желающим лично попробовать, что это такое — смартфон с двумя экранами. Почувствовать телефон в руке, оценить отклик экрана на электронных чернилах. К сожалению, это невозможно. Но мы уверены, что, пусть и удалённое, но самостоятельное взаимодействие со смартфоном позволяет лучше понять преимущества второго экрана. Мы считаем, что возможность подобного интерактивного тестирования YotaPhone гораздо честнее по сравнению с вылизанными рекламными роликами. А как вы считаете? Нам очень интересно узнать ваше мнение об этом проекте.

© Habrahabr.ru