понедельник, 7 мая 2012 г.

Ученик барабанщика - участник Робофест 2012

Если кто-то еще не в курсе, то знайте, что описания и видео почти всех проектов, участвовавших в Всероссийском этапе международной робототехнической олимпиады (WRO) можно найти на сайте wroboto.ru.
Сейчас же, пойдет речь о проекте ребят из Нижегородского Института Информационных Технологий, который также участвовал в конкурсе.
Начать, наверное, стоит с того, что нужно напомнить, что сквозной идеей WRO этого года была разработка таких проектов, которые бы изучали, как роботы входят в повседневную жизнь. Именно это во многом определило внешний вид и функциональность представленных роботов.



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

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

В итоге, родился проект Ученик Барабанщика. Данный робот способен слушать учителя, запоминая набиваемый им ритм. Затем, ему надо повторить "пройденный урок". Как результат, робот ожидает поощрения в виде аплодисментов, которые влияют на эмоции, выражаемые в итоге на лице робота.


История создания
Изначально (на региональном этапе), робот состоял из двух независимых частей – головы, выражающей эмоции в зависимости от оценок, и робота-барабанщика, умевшего воспроизводить как заранее заложенные ритмы, так и работоть в режиме обучение-воспроизведение.
Стоит отметить, что в этой версии "голова" могла выражать 6 различных эмоций. Но на Всероссийском этапе их количество было уменьшено до трех - для большей выразительности.

Затем, поскольку оба проекта оказались достойными для дальнейшего развития, для Всероссийского этапа было решено, объединить их, что позволяло заметно увеличить его конкурентное преимущество.
Кстати, модель первого робота-барабанщика в формате Lego Digitial Designer доступна для загрузки здесь. Также для этой модели доступны программы на языке NXC: ритм первый, ритм второй, режим обучение-воспроизведение. Все программы требуют установки последней версии open source firmware, идущей вместе с BricxCC.

Принцип действия финальной версии робота, поехавшей на Робофест
Алгритм работы робота можно разделить на следующие основные шаги:

Фаза обучения и воспроизведения:
  1. Ожидать появления звуковых всплесков и запоминать интервалы между ними. Всего может быть запомнено до 100 элементов ритма
  2. Как только, обнаружился конец в изучаемом ритме, воспроизвести его, выделяя отдельные части ритма для каждой руки робота
  3. Ожидать появления аплодисментов
  4. Если аплодисментов не последовало, послать негативный сигнал через Bluetooth на "голову"
  5. Если звучат аплодисменты, послать положительный сигнал через Bluetooth на "голову"
  6. Дождаться окончания аплодисментов и перейти к обучению следующего ритма
Асинхронная фаза выражения эмоций:
  1. Принять сигнал через Bluetooth от "рук"
  2. Используя конечный автомат, определить какую из трех эмоций необходимо отобразить по принятому сигналу. Возможные эмоции: грусть, нейтральная эмоция, радость
  3. Отобразить эмоцию, если состояние конечного автомата изменилось
  4. Ожидать прихода нового сигнала


Технические характеристики
Конструктивно, робот состоит из рук и головы. За каждый элемент отвечает отдельный NXT блок. Между блоками установленно Bluetooth соединение.

Руки выполнены из трех сервомоторов и одного датчика звука. Каждый сервомотор отвечает за соответствующую руку. Сервомоторы закреплены на подвижных платформах для того, чтоб обеспечить возможность игры на любых барабанах. Программное обеспечение для этой части конструкции написано на языке Not Exactly C - загрузить здесь (требуется установка последней версии open source firmware, идущей вместе с BricxCC).

Голова выполнена из двух моторов, один из которых отвечает за движение губ, другой – за движение бровей. Программное обеспечение головы выполнено в среде NXT-G - загрузить здесь (требуется Motor PID блок от HiTechnic).

Решенные проблемы
  1. В первой версии алгоритма обнаружения аплодисментов, из-за его неправильной работы, слишком долгие апплодисменты расценивались роботом, как следующий урок, как ритм, который должен быть запомнен. В последней версии алгоритма, робот не переходит в режим обучения, до тех пор, пока аплодисменты не закончатся.
  2. В последние дни подготовки команда решила разработать удобный режим добавления демо-ритмов. На демо-ритмы делалась большая ставка, поскольку они оказались идеальными для привлечения зрителей к роботу. В результате, был написан макрос на Excel, исходными данными для которого были ритмы опробованные на реальной драм-машине, а выходными данными была программа на языке NXC: ритм первый, ритм второй
  3. Еще одно проблема требовала решения уже прямо на Робофесте. Поскольку параллельно с выставкой проектов, на сцене все время выступал ведущий или просто играла громкая музыка, робот воспринимал этот шум как данные для сенсора звука, т.е. либо слушал урок, либо считал, что аплодисменты еще не закончились. Калибровка сенсора ни к чему не приводила, даже без особого успеха пытались использовать сырые (RAW) значения с сенсора. В итоге, было принято решение считывать хотя бы ритм с датчика касания - для этого уже на самой выставке вносились изменения в конструкцию и программу. К сожалению, после обхода жюри.
Возможные улучшения
Естественно, творческая мысль на достигнутом результате не остановилась, ребята продумали следующий список улучшений, которые могли бы быть реализованы при дальнейшей работе над проектом:
  1. Конструкция робота и алогритм могут быть доработаны для того, чтобы запоминать урок для каждой из рук по отдельности. Это приведет к тому, что робота можно будет обучать игре довольно сложным музыкальным партиям
  2. Алогритм работы может быть усовершенствован, чтобы попытаться сделать выводы почему игра робота получили отрицательную оценку. Данный вывыод будет направлен на изменение внутренних переменных алгоритма обучения: чувствительность датчика звука, изменение в скорости работы моторов и т.п.
  3. Режим обучения может быть доработан таким образом, что робот будет запоминать все партии, получившие хорошую оценку, а затем прибавлять одну или несколько случайных партий во время озвучивания очередного урока. Таким образом, будет возможность эмулировать способность робота импровизировать.

1 комментарий:

Related Posts Plugin for WordPress, Blogger...