Робот-гуманоид REY 2021 на Arduino Pro mini — управление
После того как был получен набор различных анимаций игрушки и собран комплект вариаций рабочих скетчей, возник вопрос об их объединении в функционально законченную систему управления исполнительными механизмами робота. Автор, как вариант, выделил три уровня движений игрушки — принятие характерных статических положений (поз); простые движения, позволяющие в различных комбинациях "оживлять" робота и ситуативные действия, имитирующие поведение человека На каждом уровне выбраны по шесть видов движений. Фактически это реализовано в приложении для смартфона и кнопочном пульте ДУ с OLED-экраном. Оба варианта работают с общим скетчем для платы робота.
Визуально приложение (рис. 1) реализовано на четырёх страницах экрана, переключаемых кнопкой "ПУСК". Продолжительное нажатие открывает страницу "простые движения", кнопка меняет положение, и на ней появляется надпись "2". Появляются шесть картинок-кнопок, обозначающих движения: шаг вперед правой ногой; вращение головой; шаг левой; подъем вверх пра вой руки; шевеление кистями рук; подъём вверх левой руки. Кратковременное нажатие приводит к однократному движению, удержание — к циклическому повторению движений. Дальнейшие короткие нажатия на кнопку "ПУСК" переключают по кругу уровни управления 1—3, открывая на каждой странице новые изображения кнопок видов движения.
Приложение реализовано в среде визуальной разработки MIT Арр Inventor. За основу взят проект из моей статьи [1]. В него добавлены и изменены блоки (рис. 2 и рис. 3) кнопок "ПУСК" (режим) и кнопок-картинок (для примера кнопка "А"). Так, при смене значений (см. рис. 2) глобальной переменной regim от 1 до 3 (по щелчку кнопки) происходит смена изображений управляющих кнопок А—Е и соответственно передаваемых для робота команд (рис. 3). Например, при значении 2 кнопка "А” отправит игрушке команду "4", а при значении 3 — команду "444".
Аналогичным образом реализовано и меню аппаратного пульта управления (рис. 4). Экран отображает четыре страницы — заглавную и три страницы уровней движений. Схема устройства показана на рис. 5. Каждой кнопке SB1—SB6 соответствует определённый вид движения, а с помощью кнопки SB7 листают страницы. Их названия выделены белым фоном. Каждое нажатие на кнопку сопровождается фоновой подсветкой надписи выбранного вида движения.
Пульт состоит из четырёх модулей, связанных гибкими проводами. А1 — модуль для связи пульта и робота, А2 — плата Arduino Pro mini, A3 — экран для визуализации меню, A4 — повышающий преобразователь напряжения питания пульта. Автору достался блютуз-модуль с пороговым напряжением включения 4,5 В, против 3,6 В, заявленных производителем. Именно для повышения напряжения до необходимого для имеющегося модуля и предназначен модуль A4. Резисторы R1, R2 служат для согласования уровней сигнала на выводе R, модуля А1 и входа 1 модуля А2. Внешний вид комплектующих представлен на рис. 6. Их удобнее приобретать в зарубежных интернет-магазинах. Все элементы смонтированы в пластмассовом футляре подходящих размеров. Скетч pult.app.ino реализован на основе скетча для пульта гексапода [2] с использованием функций библиотеки iarduino.OLEDtxt. Подробнее о работе всех функций данной библиотеки можно прочитать по ссылке [3].
Модуль А1 предварительно настроен на работу в режиме master с помощью AT-команд. Как это сделать, подробно изложено в [4]. В этом варианте модуля нужно поменять три параметра соответствующими командами:
AT+ROLE=1
AT+CMODE=1 AT+UART=57600,0,0
Скетч для микроконтроллера платы (servo_pult_17.ino) робота также существенно изменён. Основная функция получила четыре аргумента — ispol (a,B,c,T);, где а — число повторов кадров с номера в по номер с. Параметр т задаёт длительность перехода между соседними кадрами в миллисекундах. Добавлена функция задержки времени delay_(n); между сериями кадров. Такое сочетание позволяет строить более сложные сюжеты поведения игрушки.
При отработке различных движений робота он довольно часто терял равновесие и падал, преимущественно на спину. Для снижения акустического эффекта при ударах о твёрдую поверхность можно применить отрезок вспененного листового полиэтилена
(рис. 7). С помощью двухстороннего скотча его приклеивают на внешнюю сторону задней крышки шасси робота. Также было замечено, что при значениях углов поворота качалок сервоприводов. близких к 180 градусам, движения конечностей теряют свою плавность. Исправления были внесены в файл библиотеки Servo. Для этого в файле Servo.срр (папка avr) строку
if( ((unsigned) *TCNTn) + 4 < usToTicks(REFRESHINTERVAL)) U allow a few ticks to ensure the next OCR1A not missed
надо заменить на
if( ((unsigned)’TCNTn) + 4 < usToTicks(REFRESHJNTERVAL) &&SERVOS_PER_TIMER <=12) // allow a few ticks to ensure the next OCR1A not missed.
Ссылка на тему обсуждения на профильном форуме (5).
Файлы проекта и иллюстрирующие их работу ролики прилагаются. В публикуемый вариант управляющего скетча не вошли три варианта ситуативных действий: "ИГРА". "МЕЧ" и ’’ФЛАГ". Для их реализации использован дополнительный реквизит: флажок, меч, модель игрушки на нити. Восприятие анимации, а соответственно и её реализация во многом зависят от имеющихся конкретных элементов Поэтому автор предоставляет возможность читателю дополнить скетч самостоятельно, под имеющийся реквизит. При разработке внешнего вида страниц приложения (см. рис. 1) можно также использовать редактор художественных фото онлайн (6).
Получив характерные снимки при различных движениях робота и обработав их в первом редакторе ресурса, можно получить иконки для кнопок приложения. Автор, правда, ограничился только фоновым изображением страницы-заставки.
При успешной реализации проекта можно задуматься о добавлении в конструкцию, кроме исполнительных механизмов. ещё и сенсоров, или об изменении шасси на шасси робота-кентавра. Для этого потребуется дополнительный микроконтроллер, который можно связать с первым в общую сеть через один Bluetooth-модуль.
Комментарии (0)
Написать
Похожие темы: