...

пятница, 12 февраля 2016 г.

Медведь, расчлененка и 14 февраля

Мишка, плюшевый мишка — вот кто повышает частоту пульса у девушек и детонирует в чертогах памяти мужчин. Помните, еще не так давно под одеяло тащили не смартфон, а потрепанного, безухого и одноглазого, но все еще любимого мишуню? Тэддибиры во многих странах стали универсальным символом любви, заботы и теплых подростковых чувств. Поэтому когда возник вопрос, как поздравить коллег с праздником влюбленных, ответ пришел незамедлительно — медведем! Большим медведем-роботом — ведь придумали его программисты.

К 14 февраля мы решили собрать роботизированного мишутку, который не просто смог бы общаться и дарить людям радостные объятия, но и анализировал бы действия человека. Ведь объятия, как вялые, так и интенсивные, способны выдать истинные чувства и выявить скрытые эмоции. Вдруг в компании есть два человека, которые обнимаются совершенно одинаково? Что, если PHP-программисты предпочитают продолжительные прикосновения, а перловики ограничиваются сухим лапопожатием? С помощью робомедведя нам удалось собрать самые необычные данные из жизни айтишников.


Обхватить другого человека руками и некоторое время соприкасаться с ним — одна из самых распространенных форм проявления любви и внимания. Объятиями люди утешают, радуют, коммуницируют. Free hugs нужны детям, взрослым, и даже некоторым животным. Наш мишка с помощью объятий помогает сотрудникам выражать чувства в честь Дня святого Валентина.

Прикоснуться к медведю — значит передать ему частичку своей любви и некоторую информацию, которую мы используем для анализа различных параметров обнимания. Процесс позитивного сжатия тела имеет несколько основных характеристик: давление (сила), плавность, энергичность и продолжительность. Сравнив эти характеристики, мы сможем классифицировать любое объятие. Можно будет увидеть, кто обнимает медведя сильнее, или кто у тебя «друг по обнимашкам» — с точно такими же характеристиками объятий.

Для воплощения этой идеи мы использовали нечто, названное Общей теорией обнимашек — несколько формул, которые объясняют компьютеру, как классифицировать обнимания. Компьютер воспринимает каждое объятие сильным или слабым, резким или плавным, коротким или продолжительным.

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

Показатели всех датчиков обрабатываются на Raspberry Pi программой, написанной на питоне. Raspberry Pi также находится внутри мишки.

Запросы, которые отсылает мишка в наш интранет, выглядят так:

POST /somewhere/hug/plot/
{
    "id": 12345678,
    "pres": 12345.0,
    "acc": 10.4,
    "gyr": 2.4,
}

POST /somewhere/hug/event/
{
    "id": 12345678,
    "text": "olololo"
}

POST /somewhere/hug/start/
{
    "id": 12345678
}

POST /somewhere/end/
{
    "id": 23456789,
    "params": {
        "force": 3,
        "tenderness": 10,
        "dance": 5,
        "time": 10,
        # поля внутри еще могут поменяться
    }
}


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

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

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

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


Наш медведь получился автономным: помимо Raspberry Pi мы добавили wi-fi-модуль и запитали все от небольшого внешнего аккумулятора. Мишка знает, с кем именно он обнимается, так как в него встроен NFC-ридер. Подойдя к медведю, сотрудник прикладывает свой пропуск и обнимается, а вся информация об объятии поступает в базу данных, на основе которой выстраивается обнимательный топ сотрудников.


На экране рядом с медведем мы выводим результаты массовых обниманий.

Мишка умеет общаться с теми, кто его обнимает — при помощи встроенного синтезатора голоса с заранее записанными семплами. Кроме этого, из нашей базы данных сотрудников мы выгрузили все имена и озвучили их. Таким образом, когда кто-то из сотрудников хочет обнять мишку, он прикладывает свой пропуск, а полученная с него информация отправляется через сокеты на web-страницу, которая озвучивает семплы, «склеивая» их через Web Audio API.

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

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

С Днем всех влюбленных, Хабр! Всем сильных, энергичных и продолжительных объятий!

This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.

Комментариев нет:

Отправить комментарий