Altinkaya: турецкие корпуса для РЭА

Плата расширения Arduino для создания роботов. Часть 2 - конструкции роботов, алгоритмы работы и настройки

Часть 1 - Общие элементы аппаратной части.

Робот Filippo

Робот Filippo – это двуногий робот, приводимый в движение лишь двумя сервоприводами, но с этим роботом вы можете экспериментировать в области робототехники без крупных финансовых затрат. Робот может ходить и поворачиваться на месте, пользователь может направить его в любую сторону. Для тех, кто начинает знакомиться с сервоприводами, этот робот – оптимальный вариант для понимания алгоритмов работы с ними и взаимодействия их с механическими частями. Его сборка достаточно проста, так как все механические части располагаются друг возле друга, и достаточно паяльника, чтобы их зафиксировать, в качестве альтернативы можно использовать эпоксидный клей.

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Внешний вид робота Filippo на платформе Arduino

Рисунок 1. Внешний вид робота Filippo. Плата Arduino с подключенной платой расширения располагается вверху так, чтобы ультразвуковой датчик препятствий был направлен вперед по ходу движения робота.

После сборки механической конструкции необходимо укрепить плату Arduino с платой расширения вверху так, чтобы датчик препятствий SRF05 смотрел вперед по ходу движения робота (Рисунок 1). Подключение сервоприводов к плате Arduino осуществляется согласно Tаблице 1.

Таблица 1. Подключение сервоприводов робота Filippo к плате Arduino

Сервопривод
Вывод
платы Arduino
Коннектор
платы расширения
Назначение
Сервопривод 0 (Servo 0)
2
S1
Наклон (фронтальный сервопривод)
Сервопривод 1 (Servo 1)
3
S2
Шаг (нижний сервопривод)

Для питания робота используются 6 или 8 NiCd или NiMh аккумуляторов типоразмера АА, которые располагаются в двух отдельных держателях и соединены последовательно (Рисунок 2). Держатели батарей располагаются справа и слева от двух сервоприводов (Рисунок 3).

Схема подключения нескольких аккумуляторов для питания робота Filippo.

Рисунок 2. Схема подключения нескольких аккумуляторов для питания робота Filippo.

Расположение сервоприводов, держателей батарей и процессорной платы управления робота Filippo.

Рисунок 3. Расположение сервоприводов, держателей батарей и процессорной платы управления робота Filippo.

Исходный код программы микроконтроллера для управления роботом Filippo доступен для скачивания в разделе загрузок. Рекомендуется программировать Arduino до подключения сервоприводов во избежание выполнения какого-либо сохраненного ранее в микроконтроллере кода, т.к. это может привести к непредсказуемым действиям со стороны сервоприводов.

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

Команда «obs», отправленная по последовательному интерфейсу, предназначена для чтения данных от датчика препятствий, команда «lev» – для проверки уровня напряжения питания (батареи). При настройке необходимо убедиться, что считанные данные о напряжении совпадают с реальным значением напряжения, измеренного с помощью мультиметра. Далее необходимо установить нейтральное положение сервоприводов, это очень важно для нормального функционирования робота. Для центровки сервопривода, отвечающего за наклон робота, необходимо отправить команду вида «axx», где xx – значение в пределах 80 – 100 с центральной точкой в значении 90. Если программно не удается настроить сервопривод значениями из этого диапазона, то необходимо физически переместить сервопривод. Вы можете изменить эти значения, если обнаружено отклонение от прямой линии при ходьбе робота. Настройка шага робота осуществляется с помощью команды «bxx» для нижнего сервопривода, где xx – значение положения в пределах 80 – 100. После настройки можно приступать к тестированию робота, используя пульт ДУ (в нашем случае от телевизора фирмы Philips) или кнопку на плате расширения, предназначенную для старта робота.

Все функции робота имеют скорость исполнения, которая может быть изменена с помощью команды с пульта ДУ (кнопки Prog+ и Prog-), также и множество других параметров могут быть изменены для адаптации программы к различным требованиям.

Исходный код программы микроконтроллера начинается с команд компилятора на включение дополнительных библиотек функций: Servo.h, IRremote.h, EEPROM.h. Библиотеки функций управления сервоприводами (Servo.h) и функций работы с EEPROM (EEPROM.h) реализованы в среде разработки Arduino. Память EEPROM используется для хранения параметров настройки сервоприводов, поэтому не требуется каждый раз выполнять процедуру их настройки.

Библиотека IRremote.h предназначена для управления роботом с помощью ИК пульта ДУ и доступна для скачивания в разделе загрузок. Для работы с ней необходимо указать, к какому выводу платы Arduino подключен фотодатчик (в нашем случае к выводу D10). Чтобы выяснить, пришла ли команда от ИК фотодатчика, необходимо проверить переменную irrecv.decode (& results), но сам код команды содержится в переменной results.value.

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

Листинг 1. Назначенные коды команд пульта ДУ Philips для управления роботом Filippo.

#define STNB_CODE1 0x81D    // Stop Philips TV remote (STOP)  
#define STNB_CODE2 0x1D     // alternative code 
#define WALK_CODE1 0x81C    // Play Philips TV remote (WALK)  
#define WALK_CODE2 0x1C     // alternative code  
#define SPEEDUP_CODE1 0x820 // Prg+ Philips TV remote (+SPEED)  
#define SPEEDUP_CODE2 0x20  // alternative code  
#define SPEEDDW_CODE1 0x821 // Prg- Philips TV remote (-SPEED)  
#define SPEEDDW_CODE2 0x21  // alternative code  
#define LEFT_CODE1    0x2C  // Left Philips remote (SX wheel)  
#define LEFT_CODE2    0x82C // alternative code  
#define RIGHT_CODE1   0x2B  // Right Philips remote (DX wheel)  
#define RIGHT_CODE2   0x82B // alternative code

Расположение кнопок на пульте ДУ для управления роботом изображено на Рисунке 4.

Пульт ДУ для управления роботами на платформе Arduino

Рисунок 4. Внешний вид пульта ДУ от телевизора Philips и используемые кнопки для управления роботами на платформе Arduino (Filippo, BIPE, SPIDER).

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

  • TimeOneStep – начальное значение (2000) времени, затрачиваемого на выполнение шага, может быть изменено с пульта ДУ в переделах от 1 секунды до 4 секунд.
  • AmpPasso – значение максимальной амплитуды поднятия ног робота при ходьбе (в градусах), значение может быть в диапазоне 5 - 40.
  • IncPasso – максимальный наклон робота при ходьбе, значение в диапазоне 5 - 20 гарантирует, что робот будет балансировать на одной ноге во время выполнения шага.
  • AmpRuota – максимальная амплитуда поднятия ног робота при выполнении поворота (в градусах), значение в диапазоне 5 - 40.
  • IncRuota – максимальный наклон робота при выполнении поворота, значение в диапазоне 5 - 40.

Робот BIPE

Рассмотрим конструкцию второго робота на платформе Arduino.

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

Внешний вид робота BIPE на платформе Arduino

Рисунок 5. Внешний вид робота BIPE на платформе Arduino.

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

Расположение платы управления и сервоприводов робота BIPE.

Рисунок 6. Расположение платы управления и сервоприводов робота BIPE.

Подключение сервоприводов к плате управления осуществляется в соответствии с Таблицей 2.

Таблица 2. Подключение сервоприводов робота BIPE к плате управления

Сервопривод
Вывод
платы Arduino
Коннектор
платы расширения
Назначение
Сервопривод 0 (Servo 0)
2
S1
Левое бедро
Сервопривод 1 (Servo 1)
3
S2
Левое колено
Сервопривод 2 (Servo 2)
4
S3
Левая нога
Сервопривод 3 (Servo 3)
5
S4
Правое бедро
Сервопривод 4 (Servo 4)
6
S5
Правое колено
Сервопривод 5 (Servo 5)
7
S6
Правая нога

Процедура настройки сервоприводов идентична настройке робота Filippo, исходный код программы микроконтроллера имеет идентичную структуру с кодом для робота Filippo с требуемыми модификациями и дополнениями. Исходный код доступен для скачивания в разделе загрузок.

Для робота BIPE очень важна процедура настройки сервоприводов. Команды передаваемые по последовательному интерфейсу для настройки имеют вид: «axx» - сервопривод 0, «bxx» - сервопривод 1, … «fxx» - сервопривод 5. Если команда принята правильно, то по последовательному интерфейсу поступит ответ, например «set servo: a to 90» (установлен сервопривод 0 в значение 90).

Робот BIPE может выполнять функции, которые не были реализованы в роботе Filippo, это поклон и футбол (удар ногой). Выполнение их начинается по команде с пульта ДУ, используются кнопки выбора программы «1» и «2» пульта.

Настройка параметров движения робота (TimeOneStep, AmpPasso, IncPasso, AmpRuota) производится также, как и для робота Filippo.

Робот SPIDER

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

Внешний вид робота SPIDER

Рисунок 7. Внешний вид робота SPIDER.

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

Механические части выполнены из текстолита, покрашенного в черный цвет,  они не требуют пайки или фиксации. Фиксация элементов осуществляется за счет крепления их к сервоприводам (Рисунок 8).

Внешний вид робота SPIDER

Рисунок 8. Расположение серводвигателей робота SPIDER.

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

Расположение ног робота SPIDER и их сервоприводов относительно друг друга

Рисунок 9. Расположение ног робота SPIDER и их сервоприводов относительно друг друга.

Таблица 3. Подключение сервоприводов робота SPIDER к плате Arduino.

Сервопривод
Вывод
платы Arduino
Коннектор
платы расширения
Назначение
Сервопривод 0 (Servo 0)
2
S1
Угол правой передней ноги
Сервопривод 1 (Servo 1)
3
S2
Подъем правой передней ноги
Сервопривод 2 (Servo 2)
4
S3
Угол правой задней ноги
Сервопривод 3 (Servo 3)
5
S4
Подъем правой задней ноги
Сервопривод 4 (Servo 4)
6
S5
Угол левой задней ноги
Сервопривод 5 (Servo 5)
7
S6
Подъем левой задней ноги
Сервопривод 6 (Servo 6)
8
S7
Угол левой передней ноги
Сервопривод 7 (Servo 7)
9
S8
Подъем левой передней ноги

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

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

Часть 3 - Описание общих для трех роботов функций в программе микроконтроллера

Загрузки

Gerber-файлы для трех конструкций роботов - скачать

open-electronics.org

Перевод: Vadim по заказу РадиоЛоцман

На английском языке: Robot shield for Arduino. Part 2 - Robots Filippo, Bipe and Spider

Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя
Фрагменты обсуждения:Полный вариант обсуждения »
  • видео бы еще...
  • Будет продолжение статьи, скорее всего там и будет видео...