Министерство образования и науки РФ
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
Кафедра комплексной информационной безопасности
электронно-вычислительных систем (КИБЭВС)
Ю.О.Лобода, Г.С.Маликова
Гибкие автоматизированные системы и робототехника
Методическое пособие по выполнению лабораторных работ
Томск, 2014
Лабораторная работа №1. Ознакомление со средами программирования манипуляторов на базе Lego Mindstorms NXT 2.0, EV3 и Arduino
1 Цель работы
Сборка манипуляторов, ознакомление с их техническими характеристиками и средами программирования.
2 Лабораторное задание
1. Собрать манипуляторы на базе Lego Mindstorms NXT 2.0 и EV3.
2. Ознакомиться со средой программирования Lego Mindstorms NXT 2.0, EV3 и Arduino.
3. Продемонстрировать движение каждого сервомотора по отдельности.
3 Предмет и содержание работы
Объектом исследования являются модели роботов манипуляторов на базе Lego Mindstorms NXT2.0, EV3 и Arduino. Работа заключается в том, чтобы ознакомиться со средой программирования манипуляторов и их конструктивными особенностями.
4 Описание оборудования, технических средств и инструментов
Манипулятор Robotic Arm 6 dof оборудован шестью сервомоторами. Роботизированная рука представляет собой автоматизированное механическое устройство. Качественная конструкция обеспечивает точное и повторяемое позиционирование манипулятора. Управление манипулятором обеспечивает микроконтроллер atmega328.
Внешний вид руки – манипулятора представлен на рисунке 4.1:
Рисунок 4.1 – Рука-манипулятор
Рассмотрим сервомоторы манипулятора Robotic Arm 6 dof.
Манипулятор имеет шесть сервомоторов типа RB – 796MG, RB – 421MG.
Сервомотор RB – 796MG (рисунок 4.2) оснащен металлическими зубчиками, предоставляет надежное и стабильное функционирование. Имеет низкие электромагнитные помехи, малый объем, высокую точность позиционирования [1].
Технические характеристики:
вес 58 гр;
размеры 40.2*20.2*43.2 мм;
крутящий момент: 9.0 кг·см при 4.8 В; 10 кг·см при 6 В; 12.0 кг·см при 7.2 В ;
скорость поворота вала на 60 градусов: 0.17 с при 4.8 В;
0.25 с при 6 В;
напряжение питания: 4.8 В или 7.2 В.
Рисунок 4.2 - Сервомотор RB – 796MG
В состав руки манипулятора Robotic Arm 6 dof также входит сервомотор RB – 421MG. Внешний вид представлен на рисунке 4.3.
Технические характеристики:
вес 42 гр;
размеры 40.2*20.2*43.2 мм;
крутящий момент: 2.9 кг·см при 4.8 В; 4.6 кг·см при 6 В;
скорость поворота вала на 60 градусов: 0.17 с при 4.8 В;
0.4 с при 6В;
напряжение питания: 4.8 В или 6 В.
Рисунок 4.3 - Сервомотор RB – 421MG
В робототехнический набор NXT 2.0 входят:
модуль NXT;
датчик нажатия (позволяет роботу чувствовать и реагировать на внешние раздражители);
датчик аудио (позволяет роботу слышать и реагировать на звук);
датчик света (позволяет роботу обнаруживать свет и цвет);
три интерактивных сервомотора (гарантирует точность движений робота);
ультразвуковой датчик (позволяет роботу видеть, измерять расстояние до объекта и реагировать на движение).
Три сервомотора дают роботу возможность двигаться. В каждый мотор NXT 2.0 (рисунок 4.4) встроен датчик вращения. Он позволяет точнее вести управление движениями робота. Датчик вращения измеряет вращение мотора в градусах или поворотах. Одно вращение состоит из 360 градусов, поэтому, если установить мотор на вращение 180 градусов, в результате ось сделает пол оборота. На рисунке 4.5 представлена модель робота манипулятора на базе NXT.
Рисунок 4.4 – Сервомотор NXT 2.0
Рисунок 4.5 - Робот манипулятор на базе NXT 2.0
Следующим объектом исследования является Lego Mindstorms EV3, который содержит все элементы необходимые для создания и управления тысячами роботов Lego. В робототехнический набор входят:
В набор могут входить и другие датчики для реализации специальных заданий.
Большой мотор (рисунок 4.6) содержит встроенный датчик вращения с разрешением 1 градус для точного контроля. Большой мотор оптимизирован для выполнения роли приводной платформы в роботах. Максимальные обороты составляют до 160 – 170 оборотов/мин.
Рисунок 4.6 – Большой мотор
Средний мотор (рисунок 4.7) также имеет встроенный датчик вращения (с разрешением 1 градус), но он меньше и легче, чем большой мотор. Это означает, что он способен реагировать быстрее, чем большой мотор. Максимальные обороты составляют до 240 – 250 оборотов/мин. Средний серво мотор для роботов LEGO Mindstorms EV3 лучше всего подходит для выполнения задач, при которых размер робота, быстрота отклика и его скорость важнее грузоподъемности. На рисунке 4.8 представлена модель робота манипулятора на базе EV3.
Рисунок 4.7 – Средний мотор
Рисунок 4.8 - Робот манипулятор на базе EV3
При выполнении лабораторной работы используется программное обеспечение Lego Mindstorms NXT 2.0. На рисунке 4.9 представлен интерфейс пользователя программы.
Рисунок 4.9 – Интерфейс пользователя
1. Окно «Робо-центр» содержит инструкции по сборке и программированию четырех моделей роботов.
2. Мой портал. С этой вкладки можно перейти на страницу www. MINDSTORMS.com, чтобы познакомиться с новыми моделями, аудиоэффектами, изображениями и подсказками.
3. Панель инструментов.
4. Рабочая область – это часть экрана, используемая для программирования. В рабочей области можно располагать иконки-блоки с палитры и размещать блоки вдоль оси последовательности действий.
5. Малое окно справки. Используется для вызова подсказок и справочной информации о функции в процессе сеанса работы.
6. Схема рабочей области. Используется для получения сведений о программе.
7. Палитра программирования содержит все иконки-блоки, которые необходимы для создания программ.
8. Панель настроек позволяет настроить блок для требуемого действия.
9. Контроллер осуществляет управление NXT. Он позволяет передавать программы и файлы, запускать и останавливать программы.
10. Окно NXT отображает информацию о памяти NXT и параметрах связи.
Палитра программирования содержит все блоки для программирования, которые понадобятся для создания программ. Каждый блок задает возможные действия или реакцию робота. Завершив создание программы, загрузите ее в NXT и запустите. Перед загрузкой программы не забудьте включить NXT и подключиться к нему.
Для выполнения лабораторной работы достаточно использовать три блока из основной палитры программирования: блок движения, блок зацикливания, блок паузы. Блок движения управляет моторами робота и синхронизирует его движения. Блок паузы позволяет роботу оценить окружающую обстановку на наличие определенного условия до продолжения выполнения программы. Блок зацикливания используется, чтобы робот повторял какое-либо действие.
Каждый программный блок оснащен панелью настроек, позволяющей регулировать параметры блока для выполнения действий по вашему желанию. При активации блока в рабочей области, панель настроек для него появляется в нижней части экрана. Путем изменения параметров на каждой из панелей настроек можно изменять поведение каждого блока. Например, для того, чтобы робот двигался быстрее необходимо изменить параметр «Мощность» на панели настроек блока «Движение».
Пять кнопок контроллера служат для взаимодействия компьютера и NXT. Верхняя левая кнопка контроллера дает доступ к информации о ресурсе памяти NXT и параметрах связи. Нижняя левая кнопка «Загрузить» позволяет загрузить программу в NXT. Центральная кнопка «Загрузить и выполнить» загружает программу в NXT и запускает программу на выполнение. Правая верхняя кнопка «Загрузить и выполнить выбранное» загружает и запускает на выполнение только часть кода программы (например, отдельный блок или несколько блоков). Правая нижняя кнопка Стоп прекращает выполнение программы.
Более подробная информация указана в работе [2].
На рисунке 4.10 представлен интерфейс пользователя программного обеспечения Lego Mindstorms EV3.
Рисунок 4.10 - Интерфейс пользователя
1. Область программирования.
2. Палитра программирования содержит конструктивные блоки для программы.
3. Страница аппаратных средств.
4. Редактор контента – электронная тетрадь, встроенная в программное обеспечение.
5. Панель инструментов программирования содержит основные элементы для работы с программой.
Все программные блоки, которые используются для управления роботом, находятся на палитрах программирования в нижней части программного интерфейса под областью программирования. Программные блоки подразделяются на категории в зависимости от типа и характера, что облегчает поиск нужного блока. Для выполнения лабораторной работы достаточно использовать блоки действия «Средний мотор», «Большой мотор» и блоки-операторы «Начало», «Ожидание» и «Цикл».
Страница аппаратных средств предоставляет разнообразную информацию о модуле EV3. Вкладка «Информация о модуле», представленная на рисунке 4.11, отображает информацию о модуле, который подключен в данный момент, такую как название модуля EV3, уровень зарядки батареи, версию встроенного ПО, тип подключения и панель памяти.
Рисунок 4.11 – Вкладка «Информация о модуле»
Вкладка «Представление порта», представленная на рисунке 4.12, отображает информацию о датчиках и моторах, подключенных к модулю EV3. При подключении модуля к компьютеру эта информация автоматически идентифицируется, и можно видеть текущие значения. Если же модуль не подключен, можно настроить вкладку вручную, выбрав порт, а затем соответствующий датчик или мотор.
Рисунок 4.12 – Вкладка «Представление порта»
Вкладка «Доступные модули», представленная на рисунке 4.13, показывает модули EV3, которые в данный момент доступны для подключения. Вкладка предоставляет возможность отключение существующего подключения модуля EV3, подключения необходимого устройства и выбора типа связи.
Рисунок 4.13 – Вкладка «Доступные модули»
Кнопки контроллера страницы аппаратных средств, представленные на рисунке 4.14, выполняют функции:
1. Загрузить – загружает программу в модуль EV3.
2. Загрузить и запустить – загружает программу в модуль EV3 и запускает ее.
3. Загрузить и запустить выбранное – загружает выделенные блоки в модуль и запускает их.
Рисунок 4.14 - Контроллер страницы аппаратных средств
Более подробная информация указана в работе [3].
На рисунке 4.15 представлен интерфейс пользователя программного обеспечения Arduino.
Рисунок 4.15 – Интерфейс пользователя Arduino
1. Текстовый редактор программного кода.
2. Область сообщений.
3. Окно вывода текста (консоли).
4. Кнопки панели инструментов (слева направо):
4.1 проверка программного кода на ошибки, компиляция;
4.2 загрузка скетча в Arduino;
4.3 создание нового скетча;
4.4 открытие меню доступа ко всем скетчам в блокноте;
4.5 сохранение скетча;
4.6 открытие мониторинга последовательной шины.
5. Панель инструментов.
Для загрузки программ среда разработки подключается к аппаратной части Arduino. Программа, написанная в среде Arduino, называется скетч. Скетч пишется в текстовом редакторе, имеющем инструменты вырезки/вставки, поиска/замены текста. Во время сохранения и экспорта проекта в области сообщений появляются пояснения, также могут отображаться возникшие ошибки. Окно вывода текста (консоль) показывает сообщения Arduino, включающие полные отчеты об ошибках и другую информацию.
Средой Arduino используется принцип блокнота: стандартное место для хранения программ (скетчей). Скетчи из блокнота открываются через меню Файл > Папка со скетчами или кнопкой Открыть на панели инструментов.
Среда разработки позволяет работать с несколькими файлами скетчей (каждый открывается в отдельной закладке). Файлы кода могут быть стандартными Arduino (без расширения), файлами С (расширение *.с), файлами С++ (*.срр) или заголовочными файлами (.h).
Перед загрузкой скетча требуется задать необходимые параметры в меню Сервис > Плата и Сервис > Последовательный порт. В ОС Windows порты могут обозначаться как COM1 или COM2 (для платы последовательной шины) или COM3, COM5, COM7 и выше (для платы USB). Определение порта USB производится в поле Последовательной шины USB Диспетчера устройств Windows. В ОС Linux порты могут обозначаться как /dev/ttyUSB0, /dev/ttyUSB1. После выбора порта и платформы необходимо нажать кнопку загрузки на панели инструментов или выбрать пункт меню Скетч>Проверить/Компилировать. Современные платформы Arduino перезагружаются автоматически перед загрузкой. На старых платформах необходимо нажать кнопку перезагрузки. На большинстве плат во время процесса будут мигать светодиоды RX и TX.
Среда разработки Arduino выведет сообщение об окончании загрузки или об ошибках. При загрузке скетча используется Загрузчик Arduino, небольшая программа, загружаемая в микроконтроллер на плате. Она позволяет загружать программный код без использования дополнительных аппаратных средств. Загрузчик активен в течении нескольких секунд при перезагрузке платформы и при загрузке любого из скетчей в микроконтроллер. Работа Загрузчика распознается по миганию светодиода (13 пин).
Библиотеки добавляют дополнительную функциональность скетчам, например, при работе с аппаратной частью или при обработке данных. Для использования библиотеки необходимо выбрать меню Скетч>Импортировать библиотеку. Одна или несколько директив #include будут размещены в начале кода скетча с последующей компиляцией библиотек и вместе со скетчем. Загрузка библиотек требует дополнительного места в памяти Arduino. Неиспользуемые библиотеки можно удалить из скетча убрав директиву #include. На Arduino.cc имеется список библиотек. Некоторые библиотеки включены в среду разработки Arduino. Другие могут быть загружены с различных ресурсов. Для выполнения лабораторных работ достаточно использовать библиотеку Servo, предоставляющую набор функций для управления сервоприводами.
Формат команды библиотеки Servo:
servo. функция (значение управляемого параметра). Управление осуществляется следующими функциями:
attach() - присоединяет переменную к определенному пину. Синтаксис: servo.attach(pin), pin – номер вывода, к которому присоединяется сервопривод. Пример:
#include
Servo myservo;
void setup()
{
myservo.attach(9);
}
void loop() {}
write() - передает команду сервоприводу принять некоторое значение параметра. Для стандартного сервопривода это угол поворота. Синтаксис: servo.write(angle), angle – угол поворота сервопривода. Пример:
#include
Servo myservo;
void setup()
{
myservo.attach(9);
myservo.write(90); // устанавливает сервопривод в среднее положение;
}
void loop() {}
writeMicroseconds - передает значение для управления сервоприводом в микросекундах, устанавливая угол поворота на это значение. Синтаксис: servo.writeMicroseconds(uS), uS – значение в микросекундах. Пример:
#include
Servo myservo;
void setup()
{
myservo.attach(9);
myservo.writeMicroseconds(1500); // устанавливает привод в среднее положение;
}
void loop() {}
read() – считывает текущее значение угла сервопривода. Синтаксис: servo.read().
attached() – проверка подключения переменной к выводу. Синтаксис: servo.attached(). Возвращаемое значение: true – если подключена, false – в обратном случае.
detach() – отсоединяет переменную от пина, к которому она была присоединена. Синтаксис: servo.detach(pin).
Пример использования библиотеки Servo.
#include
Servo myservo;
void setup()
{
myservo.attach(9);
}
void loop()
{
myservo.write(90); // устанавливаем сервопривод в серединное положение;
delay(500);
myservo.write(0); // устанавливаем сервопривод в крайнее левое положение;
delay(500);
myservo.write(180); // устанавливаем сервопривод в крайнее правое положение;
delay(500);
}
Подключение сервопривода к плате осуществляется с помощью шлейфа из трех проводов: питание, земля и сигнальный. Красный провод - питание подключается к выводу +5V на плате Arduino. Коричневый или черный провод - земля подключается к GND выводу Arduino. Желтый или белый провод подключается к цифровому выводу котроллера Arduino. При подключении нескольких сервоприводов к плате необходимо воспользоваться платой-расширителем портов и подключить дополнительный источник питания. Убедитесь, что привод и контроллер подключены к общей земле. Более подробную информация указана в работе [4].
|