Устройство Motor Controller 29 представляет собой силовую схему для управления приводами на базе двигателей постоянного тока. С помощью Motor Controller 29 можно подключать к программируемому контроллеру привода с максимальным рабочим током, не превышающим 3 А. При подключении стандартного привода к программируемому контроллеру становится возможным регулировать скорость его вращения с помощью программируемого значения выходного ШИМ сигнала контроллера.
Для подключения между собой устройства 2-Wire Motor 269 и Motor Controller 29 необходимо соединить с помощью двухпроводного разъема (рисунок 3.1).
При соединении устройств между собой следует обращать внимание на полярность каждого из них. В случае если устройства были соединены с нарушением взаимной полярности, вращение привода будет происходить в противоположном от заданного программой направления. Для исправления данной ошибки достаточно осуществить подключение устройств заново или изменить направление вращения привода в программе.
Рисунок 3.1 Соединение с помощью двухпроводного разъема
Подключение устройства Motor Controller 29 к программируемому контроллеру VEX осуществляется с помощью специально отведенных портов контроллера для работы с приводами.
Управление приводом осуществляется за счет изменения мощности на выходном
канале ШИМ программируемого контроллера. Изменение сигнала ШИМ осуществляется
программным образом, для этого выбирается порт, к которому подключен привод и
ему присваивается значение в диапазоне от -127 до 127, что соответствует
максимальным оборотам привода в прямом и обратном направлении. [6]
Роботу необходимо выполнять несколько функций на поле: постройка собственной стойки из секций «скайрайз»; установка кубов на самостоятельно построенную и стандартные стойки; транспортирование кубов своего цвета на базу «скайрайз» своего альянса.
Постройка собственной стойки из секций «скайрайз». Чтобы робот мог построить стойку из секций «скайрайз» необходимо устройство захвата. В комплектации поставки роботов VEX присутствует устройство захвата. Рассмотрев роботов-участников соревнований прошлых лет было выявлено, что не все участники используют данное устройство захвата, однако нами было принято решение использовать стандартное устройство захвата, поскольку оно компактное по сравнению с конструированием собственного устройства захвата, а также не требует дополнительных приводов для реализации возможности захвата. Стандартное устройство захвата может работать с одним приводом, что позволит использовать меньшее количество проводов в непосредственной близости с подвижными частями манипулятора.
Установка кубов на самостоятельно построенную и стандартные стойки. Для установки кубов на стойки необходимо поднять его выше стойки и опустить одной из его плоскостей на стойку, таким образом куб будет нанизан на стойку. Использование стандартного устройства захвата было возможным если бы не тот факт, что необходимо ловить устройством захвата грань куба, что в свою очередь приводит к потере времени. Решением данной проблемы было создать алгоритм управления таким образом, чтобы во время движения робот двигался с большей скоростью нежели, когда происходить захват куба для дальнейшей транспортировки. Для того, чтобы максимально уменьшить время фиксации куба захватным механизмом было принято решение установить на устройство захвата дополнительные элементы, которые позволили бы зацепить куб за ближнюю к роботу верхнюю гранью куба и упереть боковые грани в фиксаторы. Таким образом мы получили дополнительную возможность использования устройства захвата для перемещения кубов.
Роботу предстояло поднимать куб с гранью 20 сантиметров и диаметром грани 4 сантиметра, вес которого составляет 0,5 кг., данный вес является довольно большим для робота размером 45,7 x 45,7 x 45,7 см.
Во избежание опрокидывания робота, было принято решение опустить центр тяжести, чтобы это осуществить была использована цепная передача, благодаря которой привод можно разместить в основании, а передавать вращательное движение в любом направлении. Таким образом цепной передачей было реализовано движение робота по поверхности и движение манипулятора из крайнего нижнего в крайнее верхнее положение.
Транспортирование кубов своего цвета на базу «скайрайз» своего альянса. Для транспортировки максимально большего количества кубов как для установки на стойки, так и на базу «скайрайз» своего альянса, была применена идея перемещения нескольких кубов одновременно. Таким образом было принято решение сконструировать базу робота таким образом, чтобы куб помещался в основании робота, между колес, что позволит перемещать одновременно куб в хвате и базой робота.
Схема подключения двигателей, расположение и назначение портов Vex Cortex представлены в Приложении Г.
Программная среда ROBOTC является одной из наиболее популярных сред разработки программного обеспечения для роботов. ROBOTC применяется для различных роботов, начиная от образовательных конструкторов, соревновательных робототехнических комплектов, а также для роботов, используемых в профессиональных и исследовательских целях. Отличительной особенностью ROBOTC является то, что программирование осуществляется с помощью языка, основанного на языке программирования С. Благодаря этому использование ROBOTC и робототехнических наборов, совместимых с ним, наиболее перспективно в образовательном процессе, поскольку применение стандартных языков программирования позволяет совершенствовать навыки разработки программного обеспечения в рамках междисциплинарного процесса разработки сложных технических систем.
Для удобства применения робототехнический модуль «Экспертный уровень» ROBOTC предназначен для программирования контроллеров VEX Cortex. Для того чтобы запрограммировать контроллер для управления каким-либо устройством робота или для сбора показаний датчиков, необходимо осуществить предварительную настройку, а именно: задать, к какому из портов контроллера подключено устройство.
Подключаемые устройства классифицируются ROBOTC как цифровые и аналоговые датчики, а также как привода. Каждому из вышеперечисленных типов устройств соответствует отдельный порт для подключения к программируемому контроллеру. Для того чтобы в дальнейшем управлять данным устройством необходимо присвоить ему уникальное имя и задать его тип. После подобной настройки в разрабатываемой с помощью ROBOTC программе становится возможным обращаться к датчику или подключаемому устройству как к переменной, с использование различных функций - задание значения и обработка показаний. Аналогичным образом осуществляется управление приводами и сервомоторами. В зависимости от типа мотора задается его скорость или направление вращения, также задается время разгона или останова, подсчитывается положение вала привода в данный момент времени.
Загрузка программы в память контроллера может осуществляться различными способами, например, с помощью USB-кабеля для программирования или с помощью беспроводного канала между программируемым контроллером и джойстиком.
Для того чтобы робот реагировал на нажатие кнопок джойстика в его
контроллер должна быть загружена управляющая программа, задающая определенный
закон управления в зависимости от нажатой на джойстике кнопки. Реакция робота
на нажатие кнопок джойстика программируется аналогичным образом, как и в случае
разработки любой другой программы, т.е. с помощью программной среды ROBOTC. [6]
Ручное управление подразумевает наличие VEXnet джойстика, соединенного с Vex Cortexпри помощи интерфейса Wi-Fi. Джойстик VEXnet имеет визуальные сходства с современными игровыми геймпадами, что существенно упрощает выбор тех или иных элементов джойстика для управления механизмами робота. Правая часть джойстика отвечает за движения в горизонтальной плоскости всего робота, а также за изменение угла захватного механизма. Левая же часть отвечает за уровень подъема и за сжатие/разжатие захватного механизма.
Все элементы джойстика разделены по группам:
· Две группы по четыре элемента;
· Две группы по два элемента;
· Два стика, имеющих координатное расположение.
Элементы 8U, 8R, 8Dи 8L управляют движением робота в горизонтальной плоскости, вперед, вправо, назад и влево соответственно.
Элементы 7Uи 7Dуправляют уровнем подъёма захватного
механизма, вверх и вниз соответственно. Элементы 6Uи 6D
изменяют угол захватного механизма, против и по направлению часовой стрелки
соответственно. Элементы 5Uи 5D управляют захватным механизмом,
сжатие и разжатие соответственно. Код программы в программной среде ROBOTC представлен в Приложении Д. Блок схемы
элементов управления представлены в Приложении Е.
В автономном режиме робот находится первые пятнадцать секунд. Активация автономного режима происходит судейской системой VEXnet, позволяющей устранить человеческий фактор во время соревнований в фиксации времени поединка и возможностью управлять роботом по окончанию поединка, во избежание получения дополнительных баллов за пределами выделенного временного промежутка. Система VEXnetуправляет работой контроллером Vex Cortexпри помощи интерфейса Wi-Fi через джойстик VEXnet, который в свою очередь подключен к системе VEXnet посредством Ethernet.
Наличие подключение робота к системе VEXnetдает возможность судье соревнований полностью контролировать поединок, в случае необходимости остановить всех роботов на поле одновременно, дать возможность любой из команд устранить нарушение контакта роботов, препятствующих дальнейшей работе обеих роботов, что в свою очередь не даст преимуществ другим командам.
Для использования автоматического режима работы необходимо использовать программную конструкцию Competition Template. Особенность её использования заключается в том, что программа будет ждать выполнения кода до получения сигнала от системы VEXnet.
Однако использование самой системы VEXnet не является обязательной частью автоматического режима, поскольку сама система предназначена для контроля в период соревнований. В свободном использовании робота также есть возможность автономной работы, активация которой может происходит по управляющему событию либо сразу же после старта контроллера Vex Cortex и(или) аутентификации его с джойстиком VEXnet, поскольку наличие джойстика не обязательно.
Код программы автономной работы в системе VEXnet представлен в Приложении . Код программы автоматической
работы в свободном режиме представлен в Приложении З.
Тестирование работоспособности кода проводилось методом «черного» ящика. В настоящее время известны два вида «чёрных» ящиков. К первому виду относят любой «чёрный» ящик, который может рассматриваться как автомат, называемый конечным или бесконечным. Поведение таких «чёрных» ящиков известно. Ко второму виду относятся такие «чёрные» ящики, поведение которых может быть наблюдаемо только в эксперименте.[7]
Первичный код управления приводом представляет опрос нажатия кнопки VEXnet джойстика (рисунок 4.1). В процессе тестирования было выявлено, что поскольку джойстик дистанционного управления работает при помощи интерфейса Wi-Fi, происходит опрос джойстика для получения состояний всех кнопок джойстика. Из-за этого, при нажатии на кнопку джойстика привод совершает вращательные движения не плавно с нарастанием и в дальнейшем с установившейся скоростью, а прерывисто. Для решения данной проблемы было решено использовать программный триггер. Триггер - электронное устройство, обладающее способностью длительно находиться в одном из двух устойчивых состояний и чередовать их под воздействием внешних сигналов. Программный триггер - часть кода программы имеющая свойства триггера. Данный метод был использован поскольку после нажатия кнопки джойстика, вращательное движение привода становится плавный и в дальнейшем с установившейся скоростью.
Принцип действия программного триггера. При нажатии кнопки джойстика
происходит установка значения скорости вращательного движения привода, до тех
пор, пока не будет получен сигнал о том, что кнопка отпущена (рисунок 4.2).
Рисунок 4.1 - Код управления двигателем
Рисунок 4.2 - Использование программного триггера
Собранная и запрограммированная модель робота VEXможет двигаться в горизонтальной плоскости по твердой поверхности, перемещать объекты, помещенные в захват манипулятора, массой до полутора килограмм.
Благодаря его возможностью динамично манипулировать объектами, при помощи
дистанционного джойстикаVEXnetданный
робот стал победителем соревнований VEX Robotics
Competition.
В результате реализации выпускной квалификационной работы был
сконструирован и запрограммирован робот, соответствующий требованиям VEX Skyrise, имеющий возможность работы как в
автономном режиме, так и в ручном. Дальнейшее развитие проекта подразумевает
применение более сложных методов программирования, на основе проектирования
системы взаимодействия реального времени.
. Методические
рекомендации для преподавателя / К.В. Ермишин, С.В. Палицы, М.А. Кольин, С.А.
Баранчук; Экзамен-Технолаб; - М.: Экзамен, 2014. - 162 с.
Рисунок А.1 - Изображение поля с комментариями
Рисунок А.2. - Поле с комментариями
Рисунок Б.1 - Микроконтроллер VEX Cortex
Рисунок Б.2 - VEXnet джойстик
Рисунок Б.3 - VEXnet модуль беспроводной связи
Рисунок Б 4. -VEX Dual Control Starter Kit
Рисунок В 1. - Схема подключения двигателей
Рисунок В.2 - Расположение и назначение портов Vex Cortex
Код программы
#pragma config(Motor, port2, motor2, tmotorServoContinuousRotation, openLoop)
#pragma config(Motor, port3, motor3, tmotorServoContinuousRotation, openLoop)
#pragma config(Motor, port4, motor4, tmotorServoContinuousRotation, openLoop)
#pragma config (Motor, port5, motor5, tmotorServoContinuousRotation, openLoop)
#pragma config(Motor, port6, motor6, tmotorServoContinuousRotation, openLoop)
fl = 0;fl1 = 0;fl2 = 0;fl3 = 0;fl4 = 0;fl5 = 0;fl6 = 0;fl7 = 0;fl8 = 0;fl9 = 0;
main()
{(true) {(fl2 == 0){(vexRT[Btn8R]==1) {[port3]=127;[port4]=127;= 1;}}{(vexRT[Btn8R]==0){[port3]=0;[port4]=0;=0;} }(fl3 == 0){(vexRT[Btn8L]==1) {[port3]=-127;[port4]=-127;= 1;}}{(vexRT[Btn8L]==0){[port3]=0;[port4]=0;=0;}}(fl4 == 0){(vexRT[Btn8U]==1) {[port3]=127;[port4]=-127;= 1;}}{(vexRT[Btn8U]==0){[port3]=0;[port4]=0;=0;}}(fl5 == 0){(vexRT[Btn8D]==1) {[port3]=-127;[port4]=127;= 1;}}{(vexRT[Btn8D]==0){[port3]=0;[port4]=0;=0;}}(fl == 0){(vexRT[Btn7U]==1) {[port2]=60;= 1;}}{(vexRT[Btn7U]==0){[port2]=11;=0;}}(fl1 == 0){(vexRT[Btn7D]==1) {[port2]=-20;= 1;}}{(vexRT[Btn7D]==0){[port2]=11;=0;}}(fl6 == 0){(vexRT[Btn5U]==1) {[port5]=127;= 1;}}{(vexRT[Btn5U]==0){[port5]=10;=0;}}(fl7 == 0){(vexRT[Btn5D]==1) {[port5]=-127;= 1;}}{(vexRT[Btn5D]==0){[port5]=10;=0;}}(fl8 == 0){(vexRT[Btn6U]==1) {[port6]=127;= 1;}}{(vexRT[Btn6U]==0){[port6]=10;=0;}}(fl9 == 0){(vexRT[Btn6D]==1) {[port6]=-127;= 1;}}{(vexRT[Btn6D]==0){[port6]=10;
fl9
=0;}}}}
Рисунок Д.1. - Блок-схема управления движением, элемент джойстика 8R.
Рисунок Д.2. - Блок-схема управления движением, элемент джойстика 8L
Рисунок Д.3. - Блок-схема управления движением, элемент джойстика 8U.