Всем привет. Сегодня речь пойдет о голове промо-робота Oscar. Зачастую людям интересно общаться c роботом как с себе подобным: смотреть в лицо и искать эмоциональный отклик в ходе диалога. Поэтому голова нашего промо-робота должна стать одним из основных элементов, привлекающих внимание человека.
Чтобы голова действительно “ожила”, мы обозначили следующие требования:
- Голова должна иметь две степени свободы: наклон и поворот
- Должен присутствовать трекинг собеседника головой
- Глаза робота должны реагировать на собеседника
Конструктивно голову разбили на две части:
- Шея
- Глаза
Дизайн головы
Первым делом мы начали с дизайна головы, дабы понимать каков будет форм фактор и как разместить все желаемое в голове. Вообще данный процесс итеративный и порой очень не легкий, особенно для инженеров, которые до этого проектировали только шестерни.
После пары итераций получили набросок, которой приблизительно учитывал расположение серв и механику глаз.
Шея
Голова робота снабжена двумя степенями свободы: наклон и поворот головы. Основу конструкции шеи составляют профили и ребра, которые мы уже применяли в манипуляторе.
Для управления степенями свободы используется наша кастомная серва. Вращать головой будем через скорость, т.е. скорость вращения головы будет зависит от положения в кадре отслеживаемого лица, благо серва умеет контролировать скорость. Чем дальше лицо от центра, тем быстрее будет поворот головы. По мере приближения к центру скорость будет уменьшаться до нуля. Таким образом, получится достаточно плавное вращение головой.
Глаза
Тут тоже не хотелось тратить много времени, поэтому мы решили поискать уже существующие проекты аниматронных глаз, хорошо что таких проектов вагон и маленькая тележка. Из найденных нами, особенно хочется отметить один проект.
Его мы и взяли за основу. И все было хорошо, пока мы не начали пытаться совместить механику глаз, имеющийся дизайн головы и механику шеи. В конце концов пришлось разработать собственный «велосипед». Получилась такая конструкция глаз:
Глаза работают на базе arduino_nano. Для управления серв взяли стандартную библиотеку. Запитываются сервы от отдельного источника питания, arduino не способна выдавать достаточный ток. Сперва были незначительные проблемы с “дребезгом”, который портил всю эстетику. Потом нашли причину — некачественный стабилизатор питания, заменив на другой аналогичный — проблема ушла. И вот еще что, хобби сервы не любят длинных проводов, поэтому мы убрали лишнюю длину между сервомашинками и контроллером. Движение глазами реализовано путем задания угла поворота сервы.
В качестве теста будем использовать второе лицо нашего государства — Дмитрия Анатольевича Медведева. Вдруг за усердный труд на голову “свалится” грант на развитие проекта.
Как это работает?
Работает все это достаточно просто, т.к. голова и глаза должны реагировать на человека, то и источник информации у них будет идентичный – видео камера расположенная в голове робота. Используется камера от Raspberry. Кстати, тут мы допустили небольшой недочет — взяли камеру с небольшим углом обзора. В ходе тестирований стало понятно, что надо ставить широкоугольную камер — тогда мимику глаз можно сделать более живой, т.к. можно будет отводить глаза на больший угол.
В качестве обработчика изображения используется Raspberry Pi 3. Хочется сказать, что “малинка” справляется с этой задачей уверенно, но правда на небольшом разрешении, при этом давая ощутимую нагрузку на все 4 ядра.
Детектирование лиц осуществляется классическим инструментом — каскадом Хаара. При этом частота детектирования лица составляет 9 — 12 FPS.
По аналогии с человеком, робот сперва переводит взгляд на собеседника, а потом поворачивает голову к нему. Не смотря на доступную относительно большую скорость вращения головы, мы замедлили ее. Приведя скорость поворота головы в соответствие со скоростью детектирования лиц, мы получили плавные и грациозные движения.
Собраной головой мы остались довольны. А как считаете вы? Что еще можно добавить или сделать?
Что дальше?
Сейчас мы завершаем сборку второго манипулятора, после чего переключимся на изготовление платформы с туловищем. И все это надо будет обличить в достойный корпус. Будем надеяться, что в следующей статье мы представим наше детище в полной красе.
Вы держитесь здесь, вам всего доброго, хорошего настроения и здоровья!