Соревновательный робот
Подключаемые устройства классифицируются ROBOTC как цифровые и аналоговые датчики, а также как привода. Каждому из вышеперечисленных типов устройств соответствует отдельный порт для подключения к программируемому контроллеру. Для того чтобы в дальнейшем управлять данным устройством необходимо присвоить ему уникальное имя и задать его тип. После подобной настройки в разрабатываемой с помощью… Читать ещё >
Соревновательный робот (реферат, курсовая, диплом, контрольная)
Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
«Югорский государственный университет»
Институт систем управления и информационных технологий Кафедра автоматизированных систем обработки информации и управления Выпускная квалификационная работа на тему «Соревновательный робот»
Студент-дипломник группы 1111Б Лупу Александр Юрьевич Руководитель от ЮГУ к.т.н., Тей Д.О.
Нормоконтролер к.т.н., Годовников Е. А Рецензент:
к.ф.-м.н., Бурлуцкий В. В Ханты-Мансийск 2015
Аннотация Тема выпускной квалификационной работы: «Соревновательный робот».
Цель: конструирование робота, соответствующего требованиям соревнований VEX Skyrise.
Пояснительная записка к выпускной квалификационной работе состоит из 5-и глав и 10-и подглав.
В первой главе «Введение» рассматривается актуальность дипломного проекта.
Во второй главе «Постановка задачи» приведено описание предметной области, а также формулирование задачи дипломного проекта.
Во третьей главе «Метод решения задачи» описаны пути решения задач.
В четвертой главе «Описание реализации» приведено описание конструкторской и программной части проекта.
В пятой главе «Апробация» приведены результаты тестирования и опытной эксплуатации.
Пояснительная записка изложена на 44 страницах, включает 20 рисунков и 7 приложений. Список литературных источников содержит 7 наименований.
Список используемых сокращений
VRC-VexRoboticsCompetition.
PIC — Peripheral Interface Controller.
ARM — Advanced RISC Machine
ШИМ — Широтно-импульсная модуляция
Сегодня мир нуждается в студентах, которые в будущем станут учеными, проектировщиками и специалисты по решению различных задач. Следующие одно за другим открытия в области химии, медицины, различных материалов, физики ставят новые задачи и открывают новые обширные возможности реализации различных задач с применением технологий. Эти задачи носят практических характер, их решение может помочь спасти мир, и специалисты, применяющие технологии в решении поставленных задач, станут теми людьми, которые сделают эту возможность реальностью.
Здесь раскрывается другая крупная проблема, с которой мы сталкиваемся сегодня: процент выпускников средних школ, выбирающих при поступлении в высшие учебные заведения технические дисциплины в качестве специализации, катастрофически мал. Что отражается не столько в недостатке притока студентов в технические профильные учебные заведения и университеты, сколько в недостатке заинтересованных и подготовленных абитуриентов. Иными словами, мы рискуем столкнуться с проблемой нехватки молодых людей следующего поколения, способных решать задачи будущего, если не уделим надлежащего внимания проблеме сегодня. Кто будет заниматься устранением последствий следующего мирового кризиса?
В процессе работы над этой проблемой, организации создают программы, призванные заинтересовать молодых людей и вовлечь их в изучение науки и технологии. Робототехника при этом была признана весьма мощной платформой для привлечения и удержания внимания сегодняшней многозадачной и окруженной техникой молодежи. Робототехника является сильным доводом в общении с интенсивно развивающимся современным поколением, и представляет собой идеальное сочетание практической физики, математики, компьютерного программирования, технологии цифровых прототипов, интегрированных процессов решения задач, командной работы и интеллектуального лидерства.
Количество заинтересованных студентов, ранее не раскрывавших способностей к изучению курса STEM (Наука, технология, проектирование и математика), постоянно растет, благодаря стараниям школ, международных добровольческих и правительственных организаций.
Робототехнические соревнования VEX Robotics Competition, которые проводятся фондом по образованию и соревновательной робототехнике Robotics, представляют собой программу, вдохновляющую тысячи студентов по всему миру к получению образования по смежным со STEM дисциплинам и дальнейшему профильному карьерному развитию. Наряду с многочисленными квалификационными робототехническими соревнованиями по всему миру, пользовательское сообщество VEX Robotics потонуло в заявках на создание новых состязаний, более простых и экономичных во внедрении и проведении.
Система проектирования VEX Robotics Design System помогает реализовать идейный заряд, полученный в ходе соревнований, в новом ключе. Система проектирования используется как платформа в классной робототехнике и предназначена для способствования динамичному креативному развитию в области робототехники и дисциплин STEM. VEX предлагает преподавателям и студентам доступную, продуманную и современную робототехническую систему, пригодную для использования в классной комнате и на игровом поле. Инновационная концепция VEX, предусматривающая применение стандартных заготовок для сборки конструкций, которые могут быть обрезаны и перегруппированы по желанию дизайнера, механических частей наряду с внушительным набором программируемых пользовательских процессоров для осуществления управления, раскрывает бесконечные возможности для проектирования.
Принимая участие в сезонных игровых мероприятиях по соревновательной робототехнике VRC «Скайрайз», решая поставленные задачи и преодолевая возникающие на их пути препятствия, команды приобретают множество новых навыков. Решение некоторых задач требует индивидуального подхода, тогда как другие задачи могут быть решены только путем тесного взаимодействия студентов-членов команд и их руководителей. Команды будут работать сообща для создания робота VEX, который примет участие в одном из множества турниров, где они отпразднуют свои награды с членами других команд, друзьями и членами семей. На момент окончания игрового сезона студенты не только завоюют награды за создание собственных соревновательных роботов, но и приобретут представление о науке и технологии, а также пути их применения в реальном мире. В дополнение, они разовьют в себе жизненно важные навыки, такие как планирование, умение решать задачи сообща, работать в команде и управлять самой работой команды, а также проведения разработок и технические навыки. 1]
1. Постановка задачи
1.1 Описание предметной области
1.1.1 Соревнования VEX Skyrise
Ежегодно VEX Robotics World Championship the REC Foundation объявляет правила на следующий год для VRC и VEX IQ игр. Изменение правил ежегодно представляет студентам новый вызов на основе той же технологии.
Игры VEX «Скайрайз» проводятся на мягком поле 12 футов х 12 футов, окруженном металлическими листами и периметром из поликарбоната (лексана), схема поля представлена в Приложении Б. На поле находится сорок четыре куба и четырнадцать секций «скайрайз», которыми команды могут манипулировать, размещая их различными способами с целью набора баллов.
Всего в матче VEX «Скайрайз» участвует: сорок четыре куба (двадцать два красных и двадцать два синих) и четырнадцать секций «скайрайз». В ходе матча каждый робот должен иметь один куб в качестве первоначальной нагрузки и семь секций «скайрайз», помещенных в автопогрузчике своего альянса. Сорок кубов размещаются на заданных позициях на игровом поле. На поле располагается десять стоек различной высоты, каждый альянс также имеет одну собственную базу «скайрайз».
Матчи проводятся на поле, устроенном специальным образом, подробное представление о котором дано на рисунках ниже. Два альянса — «красный» альянс и «синий» альянс — состоят каждый из двух команд, соревнующихся в каждом матче. Задача — превзойти конкурирующий альянс по количеству набранных баллов, забрасывая кубы своего цвета в напольные ворота, на стойки или на собственный «скайрайз», а также удерживая стойки и конструируя собственные секции «скайрайз». Бонусные баллы начисляются по окончанию периода автономного управлению тому альянсу, который имеет наибольшую общую сумму баллов. 2−4]
1.1.2 Требования к роботам
Каждая команда может выставить для участия в соревнованиях VEX Robotics Competition только одного робота. Хотя внесение изменений в робота в ходе соревнований допускается, возможности команды ограничены только одним роботом. Система проектирования VEX Robotics Design System является мобильной платформой для проектирования роботов. В связи с этим, робот VEX, созданный для участия в VRC, оснащен следующими подсистемами:
Подсистема 1: Мобильная база робота, включающая в себя колеса, гусеницы, ходули или любые другие механизмы, обеспечивающие перемещение робота по большинству плоских игровых поверхностей поля.
Подсистема 2: Система питания и управления, включающая батарею VEX, систему управления VEX, а также необходимые моторы для мобильной базы робота.
Подсистема 3: Дополнительные механизмы (и необходимые моторы), позволяющие манипулировать игровыми объектами и преодолевать препятствия на поле.[2]
1.1.3 Металлический конструктор VEX
VEX Dual Control Starter Kit — набор, содержащий все необходимые элементы для постройки телеуправляемого робота. Помимо сервомодулей и механической части, набор содержит джойстик для модуль беспроводной вязи для дистанционного управления.
Наборы VEX состоят из перфорированных металлических деталей — профиля и пластин, пластиковых элементов передач — зубчатые колеса, шкивы и колеса и т. п. Отдельно стоит отметить, что среди комплектующих VEX есть элементы пневматики и линейные передачи, различные колеса и гусеничные траки. Все эти комплектующие можно приобрести в отдельности и использовать при разработке собственной модели. Фото элементов комплектации представлены в Приложении В. [5]
Программное обеспечение VEX представлено тремя пакетами: MPLAB, easyC, ROBOTC. Программное обеспечение MPLAB применимо для младшей модели управляющего контроллера на базе PIC. Программные пакеты easyC и ROBOTC применимы как для PIC, так и для Cortex контроллера.
1.2 Формулирование задачи
1.2.1 Цель проекта
Целью дипломного проекта является конструирование и программирование соревновательного робота, соответствующего требованиям соревнований VEX Skyrise.
1.2.2 Задачи проекта
· Ознакомится с регламентом соревнований VEX Skyrise.
· Ознакомится с проектами участников предыдущих соревнований VEX Skyrise.
· На примере участников прошлых лет определить необходимую функциональность робота.
· Используя программное обеспечение ROBOTC for VEX Robotics 4. X запрограммировать работу робота с использованием устройства дистанционного контроля VEXnet джойстик.
· Реализовать автоматический режим работы робота.
программный триггер робот автономный
2. Метод решения задачи
2.1 Формализация задачи
Участнику соревнований необходимо за две минуты набрать наибольшее количество баллов, пятнадцать секунд из которых робот действует автономно, получая очки за конструирование собственной секции «скайрайз», четыре очка за каждую секцию, за перенос кубов на базу альянса, один балл за каждый куб, находящийся полностью на базе альянса, за нанизывание кубов на стойки различной высоты, два балла за каждый нанизанный куб, и базу «скайрайз», четыре балла за каждый нанизанный куб.
Изучив соревнования, была определена стратегия набора наибольшего количества баллов заключающаяся в следующем: постановка секций «скайрайз» и установка куба на стойку «скайрайз». Установка секции «скайрайз» дает постепенный рост стойки «скайрайз», что позволяет заработать большое количество баллов за меньший промежуток времени, нежели установка кубов на боковые стойки, поскольку времени на подъем куба на изначально высокую стойку необходимо больше.
2.2 Пути решения задачи
Изучив все необходимые маневры соревновательного робота, сконструировать собственную модель, опытным путем прийти к усовершенствованию механизмов управления манипулятором и увеличению маневренности робота, как самого, так и с дополнительной нагрузкой.
Разобрав возможные варианты программирования управлением механизмами робота, выбрать наиболее эффективный метод программирования.
3. Описание реализации
3.1 Комплект для управления и программирования робота
Комплект состоит из программируемого контроллера Vex Cortex, джойстика VEXnet, адаптера VEXnet USB, а также интерфейсного кабеля, используемого для программирования, и аккумуляторного отсека для подачи питания Vex Cortex.
Адаптер VEXnet USB предназначен для беспроводной связи джойстика и программируемого контроллера. Также данный адаптер может использоваться для беспроводного программирования контроллера Vex Cortex, в случае если он недоступном месте на роботе.
Программируемый контроллер Vex Cortex является основным блоком управления роботом, с помощью которого осуществляется обработка показаний датчиков и выдача сигналов на исполнительные механизмы робота. Основой Vex Cortex является микроконтроллер STMicroelectronics ARM Cortex-M3 с производительностью до 90 миллионов операций в секунду. Помимо этого, Vex Cortex обладает 64КВ RAMи 384КВ FLASHпамяти для хранения программных данных.
Для подключения внешних устройств программируемый контроллер Vex Cortex обладает: портами для подключения двигателей и сервоприводов в количестве 8 шт., портами с выходом ШИМ (PWM) в количестве 2 шт., цифровыми портами в количестве 12 шт. и аналоговыми портами с разрешающей способностью 12 бит в количестве 8 шт.
В настоящее время различные цифровые интерфейсы связи являются неотъемлемой частью устройств управления. Программируемый контроллер Vex Cortex содержит последовательный интерфейс UART (в количестве 2 шт.) для обмена данными с различными устройствами, в частности с помощью данного интерфейса осуществляется взаимосвязь с навигационным контроллером, входящим в образовательный робототехнический модуль. Для подключения внешних устройств применяется интерфейс I2C, а также беспроводной радиоканал.
Беспроводной джойстик VEXnet предназначен для дистанционного управления роботами. Джойстик содержит 8 кнопок на лицевой панели, 4 кнопки на боковой панели и 2 двунаправленных аналоговых джойстика. Помимо вышеперечисленных устройств управления в джойстик встроен двухосевой акселерометр, с помощью которого можно определять ориентацию устройства в пространстве и таким образом управлять движением робота.
Беспроводной джойстик VEXnet представляет собой готовое к эксплуатации устройство. Для того чтобы робот реагировал на нажатие кнопок джойстика в его контроллер должна быть загружена управляющая программа, задающая определенный закон управления в зависимости от нажатой на джойстике кнопки. Реакция робота на нажатие кнопок джойстика программируется аналогичным образом, как и в случае разработки любой другой программы, т. е. с помощью программных сред ROBOTC или easyC. 6]
3.2 Комплект на базе привода и системы управления
Привод 2-Wire Motor 269 wявляется двигателем коллекторным постоянного тока с редуктором, состоящим из металлических зубчатых передач. В комплект к двигателю входит набор винтов для его крепления и вал для передачи вращения от двигателя к исполнительному механизму.
Данный привод является наиболее распространенным в роботах на базе наборов из комплектующих VEX, поскольку Motor 269 обладает наиболее оптимальным соотношением технических характеристик и габаритов, а также может быть оснащен внешним инкрементным энкодером. При стандартном для комплектующих VEX питании в 7,2 В данный привод развивает момент 0,97 нм при скорости до 100 об/мин. Поскольку в процессе работы привод потребляет ток величиной до 2,6 А для подключения его к программируемому контроллеру необходимо применять силовую схему (драйвер двигателя).
Устройство 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]
3.3 Конструирование робота
Роботу необходимо выполнять несколько функций на поле: постройка собственной стойки из секций «скайрайз»; установка кубов на самостоятельно построенную и стандартные стойки; транспортирование кубов своего цвета на базу «скайрайз» своего альянса.
Постройка собственной стойки из секций «скайрайз». Чтобы робот мог построить стойку из секций «скайрайз» необходимо устройство захвата. В комплектации поставки роботов VEX присутствует устройство захвата. Рассмотрев роботов-участников соревнований прошлых лет было выявлено, что не все участники используют данное устройство захвата, однако нами было принято решение использовать стандартное устройство захвата, поскольку оно компактное по сравнению с конструированием собственного устройства захвата, а также не требует дополнительных приводов для реализации возможности захвата. Стандартное устройство захвата может работать с одним приводом, что позволит использовать меньшее количество проводов в непосредственной близости с подвижными частями манипулятора.
Установка кубов на самостоятельно построенную и стандартные стойки. Для установки кубов на стойки необходимо поднять его выше стойки и опустить одной из его плоскостей на стойку, таким образом куб будет нанизан на стойку. Использование стандартного устройства захвата было возможным если бы не тот факт, что необходимо ловить устройством захвата грань куба, что в свою очередь приводит к потере времени. Решением данной проблемы было создать алгоритм управления таким образом, чтобы во время движения робот двигался с большей скоростью нежели, когда происходить захват куба для дальнейшей транспортировки. Для того, чтобы максимально уменьшить время фиксации куба захватным механизмом было принято решение установить на устройство захвата дополнительные элементы, которые позволили бы зацепить куб за ближнюю к роботу верхнюю гранью куба и упереть боковые грани в фиксаторы. Таким образом мы получили дополнительную возможность использования устройства захвата для перемещения кубов.
Роботу предстояло поднимать куб с гранью 20 сантиметров и диаметром грани 4 сантиметра, вес которого составляет 0,5 кг., данный вес является довольно большим для робота размером 45,7×45,7×45,7 см.
Во избежание опрокидывания робота, было принято решение опустить центр тяжести, чтобы это осуществить была использована цепная передача, благодаря которой привод можно разместить в основании, а передавать вращательное движение в любом направлении. Таким образом цепной передачей было реализовано движение робота по поверхности и движение манипулятора из крайнего нижнего в крайнее верхнее положение.
Транспортирование кубов своего цвета на базу «скайрайз» своего альянса. Для транспортировки максимально большего количества кубов как для установки на стойки, так и на базу «скайрайз» своего альянса, была применена идея перемещения нескольких кубов одновременно. Таким образом было принято решение сконструировать базу робота таким образом, чтобы куб помещался в основании робота, между колес, что позволит перемещать одновременно куб в хвате и базой робота.
Схема подключения двигателей, расположение и назначение портов Vex Cortex представлены в Приложении Г.
3.4 Программирование робота
3.4.1 Описание программной среды
Программная среда ROBOTC является одной из наиболее популярных сред разработки программного обеспечения для роботов. ROBOTC применяется для различных роботов, начиная от образовательных конструкторов, соревновательных робототехнических комплектов, а также для роботов, используемых в профессиональных и исследовательских целях. Отличительной особенностью ROBOTC является то, что программирование осуществляется с помощью языка, основанного на языке программирования С. Благодаря этому использование ROBOTC и робототехнических наборов, совместимых с ним, наиболее перспективно в образовательном процессе, поскольку применение стандартных языков программирования позволяет совершенствовать навыки разработки программного обеспечения в рамках междисциплинарного процесса разработки сложных технических систем.
Для удобства применения робототехнический модуль «Экспертный уровень» ROBOTC предназначен для программирования контроллеров VEX Cortex. Для того чтобы запрограммировать контроллер для управления каким-либо устройством робота или для сбора показаний датчиков, необходимо осуществить предварительную настройку, а именно: задать, к какому из портов контроллера подключено устройство.
Подключаемые устройства классифицируются ROBOTC как цифровые и аналоговые датчики, а также как привода. Каждому из вышеперечисленных типов устройств соответствует отдельный порт для подключения к программируемому контроллеру. Для того чтобы в дальнейшем управлять данным устройством необходимо присвоить ему уникальное имя и задать его тип. После подобной настройки в разрабатываемой с помощью ROBOTC программе становится возможным обращаться к датчику или подключаемому устройству как к переменной, с использование различных функций — задание значения и обработка показаний. Аналогичным образом осуществляется управление приводами и сервомоторами. В зависимости от типа мотора задается его скорость или направление вращения, также задается время разгона или останова, подсчитывается положение вала привода в данный момент времени.
Загрузка программы в память контроллера может осуществляться различными способами, например, с помощью USB-кабеля для программирования или с помощью беспроводного канала между программируемым контроллером и джойстиком.
Для того чтобы робот реагировал на нажатие кнопок джойстика в его контроллер должна быть загружена управляющая программа, задающая определенный закон управления в зависимости от нажатой на джойстике кнопки. Реакция робота на нажатие кнопок джойстика программируется аналогичным образом, как и в случае разработки любой другой программы, т. е. с помощью программной среды ROBOTC. [6]
3.4.2 Режим ручного управления
Ручное управление подразумевает наличие VEXnet джойстика, соединенного с Vex Cortexпри помощи интерфейса Wi-Fi. Джойстик VEXnet имеет визуальные сходства с современными игровыми геймпадами, что существенно упрощает выбор тех или иных элементов джойстика для управления механизмами робота. Правая часть джойстика отвечает за движения в горизонтальной плоскости всего робота, а также за изменение угла захватного механизма. Левая же часть отвечает за уровень подъема и за сжатие/разжатие захватного механизма.
Все элементы джойстика разделены по группам:
· Две группы по четыре элемента;
· Две группы по два элемента;
· Два стика, имеющих координатное расположение.
Элементы 8U, 8R, 8Dи 8L управляют движением робота в горизонтальной плоскости, вперед, вправо, назад и влево соответственно.
Элементы 7Uи 7Dуправляют уровнем подъёма захватного механизма, вверх и вниз соответственно. Элементы 6Uи 6D изменяют угол захватного механизма, против и по направлению часовой стрелки соответственно. Элементы 5Uи 5D управляют захватным механизмом, сжатие и разжатие соответственно. Код программы в программной среде ROBOTC представлен в Приложении Д. Блок схемы элементов управления представлены в Приложении Е.
3.4.3 Автономный режим работы робота
В автономном режиме робот находится первые пятнадцать секунд. Активация автономного режима происходит судейской системой VEXnet, позволяющей устранить человеческий фактор во время соревнований в фиксации времени поединка и возможностью управлять роботом по окончанию поединка, во избежание получения дополнительных баллов за пределами выделенного временного промежутка. Система VEXnetуправляет работой контроллером Vex Cortexпри помощи интерфейса Wi-Fi через джойстик VEXnet, который в свою очередь подключен к системе VEXnet посредством Ethernet.
Наличие подключение робота к системе VEXnetдает возможность судье соревнований полностью контролировать поединок, в случае необходимости остановить всех роботов на поле одновременно, дать возможность любой из команд устранить нарушение контакта роботов, препятствующих дальнейшей работе обеих роботов, что в свою очередь не даст преимуществ другим командам.
Для использования автоматического режима работы необходимо использовать программную конструкцию Competition Template. Особенность её использования заключается в том, что программа будет ждать выполнения кода до получения сигнала от системы VEXnet.
Однако использование самой системы VEXnet не является обязательной частью автоматического режима, поскольку сама система предназначена для контроля в период соревнований. В свободном использовании робота также есть возможность автономной работы, активация которой может происходит по управляющему событию либо сразу же после старта контроллера Vex Cortex и (или) аутентификации его с джойстиком VEXnet, поскольку наличие джойстика не обязательно.
Код программы автономной работы в системе VEXnet представлен в Приложении. Код программы автоматической работы в свободном режиме представлен в Приложении З.
4. Апробация
4.1 Тестирование
Тестирование работоспособности кода проводилось методом «черного» ящика. В настоящее время известны два вида «чёрных» ящиков. К первому виду относят любой «чёрный» ящик, который может рассматриваться как автомат, называемый конечным или бесконечным. Поведение таких «чёрных» ящиков известно. Ко второму виду относятся такие «чёрные» ящики, поведение которых может быть наблюдаемо только в эксперименте. 7]
Первичный код управления приводом представляет опрос нажатия кнопки VEXnet джойстика (рисунок 4.1). В процессе тестирования было выявлено, что поскольку джойстик дистанционного управления работает при помощи интерфейса Wi-Fi, происходит опрос джойстика для получения состояний всех кнопок джойстика. Из-за этого, при нажатии на кнопку джойстика привод совершает вращательные движения не плавно с нарастанием и в дальнейшем с установившейся скоростью, а прерывисто. Для решения данной проблемы было решено использовать программный триггер. Триггер — электронное устройство, обладающее способностью длительно находиться в одном из двух устойчивых состояний и чередовать их под воздействием внешних сигналов. Программный триггер — часть кода программы имеющая свойства триггера. Данный метод был использован поскольку после нажатия кнопки джойстика, вращательное движение привода становится плавный и в дальнейшем с установившейся скоростью.
Принцип действия программного триггера. При нажатии кнопки джойстика происходит установка значения скорости вращательного движения привода, до тех пор, пока не будет получен сигнал о том, что кнопка отпущена (рисунок 4.2).
Рисунок 4.1 — Код управления двигателем Рисунок 4.2 — Использование программного триггера
4.2 Описание результатов опытной эксплуатации.
Собранная и запрограммированная модель робота VEXможет двигаться в горизонтальной плоскости по твердой поверхности, перемещать объекты, помещенные в захват манипулятора, массой до полутора килограмм.
Благодаря его возможностью динамично манипулировать объектами, при помощи дистанционного джойстикаVEXnetданный робот стал победителем соревнований VEX Robotics Competition.
Заключение
В результате реализации выпускной квалификационной работы был сконструирован и запрограммирован робот, соответствующий требованиям VEX Skyrise, имеющий возможность работы как в автономном режиме, так и в ручном. Дальнейшее развитие проекта подразумевает применение более сложных методов программирования, на основе проектирования системы взаимодействия реального времени.
Список использованных источников
1. Методические рекомендации для преподавателя / К. В. Ермишин, С. В. Палицы, М. А. Кольин, С. А. Баранчук; Экзамен-Технолаб; - М.: Экзамен, 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)
int fl = 0;
int fl1 = 0;
int fl2 = 0;
int fl3 = 0;
int fl4 = 0;
int fl5 = 0;
int fl6 = 0;
int fl7 = 0;
int fl8 = 0;
int fl9 = 0;
task main ()
{
while (true) {
if (fl2 == 0){
if (vexRT[Btn8R]==1) {
motor[port3]=127;
motor[port4]=127;
fl2 = 1;}}
else {
if (vexRT[Btn8R]==0){
motor[port3]=0;
motor[port4]=0;
fl2 =0;} }
if (fl3 == 0){
if (vexRT[Btn8L]==1) {
motor[port3]=-127;
motor[port4]=-127;
fl3 = 1;}}
else {
if (vexRT[Btn8L]==0){
motor[port3]=0;
motor[port4]=0;
fl3 =0;}}
if (fl4 == 0){
if (vexRT[Btn8U]==1) {
motor[port3]=127;
motor[port4]=-127;
fl4 = 1;}}
else {
if (vexRT[Btn8U]==0){
motor[port3]=0;
motor[port4]=0;
fl4 =0;}}
if (fl5 == 0){
if (vexRT[Btn8D]==1) {
motor[port3]=-127;
motor[port4]=127;
fl5 = 1;}}
else {
if (vexRT[Btn8D]==0){
motor[port3]=0;
motor[port4]=0;
fl5 =0;}}
if (fl == 0){
if (vexRT[Btn7U]==1) {
motor[port2]=60;
fl = 1;}}
else {
if (vexRT[Btn7U]==0){
motor[port2]=11;
fl =0;}}
if (fl1 == 0){
if (vexRT[Btn7D]==1) {
motor[port2]=-20;
fl1 = 1;}}
else {
if (vexRT[Btn7D]==0){
motor[port2]=11;
fl1 =0;}}
if (fl6 == 0){
if (vexRT[Btn5U]==1) {
motor[port5]=127;
fl6 = 1;}}
else {
if (vexRT[Btn5U]==0){
motor[port5]=10;
fl6 =0;}}
if (fl7 == 0){
if (vexRT[Btn5D]==1) {
motor[port5]=-127;
fl7 = 1;}}
else {
if (vexRT[Btn5D]==0){
motor[port5]=10;
fl7 =0;}}
if (fl8 == 0){
if (vexRT[Btn6U]==1) {
motor[port6]=127;
fl8 = 1;}}
else {
if (vexRT[Btn6U]==0){
motor[port6]=10;
fl8 =0;}}
if (fl9 == 0){
if (vexRT[Btn6D]==1) {
motor[port6]=-127;
fl9 = 1;}}
else {
if (vexRT[Btn6D]==0){
motor[port6]=10;
fl9 =0;}}}}
Приложение Д
Рисунок Д. 1. — Блок-схема управления движением, элемент джойстика 8R.
Рисунок Д. 2. — Блок-схема управления движением, элемент джойстика 8L
Рисунок Д. 3. — Блок-схема управления движением, элемент джойстика 8U.
Рисунок Д.4 — Блок-схема управления движением, элемент джойстика 8D.
Рисунок Д. 5. — Блок-схема управления движением, элемент джойстика 7U.
Рисунок Д 6. — Блок-схема управления движением, элемент джойстика 7D.
Рисунок Д. 7. — Блок-схема управления движением, элемент джойстика 5U.
Рисунок Д 8. — Блок-схема управления движением, элемент джойстика 5D.
Рисунок Д. 9. — Блок-схема управления движением, элемент джойстика 6U.
Рисунок Д 10. — Блок-схема управления движением, элемент джойстика 6D.
Приложение Е
Автономный режим работы с системой VEXnet
#pragma platform (VEX)
#pragma competitionControl (Competition)
#pragma autonomousDuration (20)
#pragma userControlDuration (100)
#include «Vex_Competition_Includes.c»
void pre_auton ()
{
bStopTasksBetweenModes = true;
}
task autonomous ()
{
setServo (port6, -127);
wait (3);
setServo (port6, 0);
wait (1);
setServo (port6, 127);
wait (3);
}
task usercontrol ()
{
while (true)
{
if (fl9 == 0){
if (vexRT[Btn6D]==1) {
motor[port6]=-127;
fl9 = 1;
}
}
else {
if (vexRT[Btn6D]==0){
motor[port6]=10;
fl9 =0;
}
}
}
}
Приложение Ж
Автономный режим работы
#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)
task main ()
{
setServo (port6, -127);
wait (1);
setServo (port6, -70);
wait (1);
setServo (port6, -30);
wait (1);
setServo (port6, 0);
wait (1);
setServo (port6, 30);
wait (1);
setServo (port6, 70);
wait (1);
setServo (port6, 127);
wait (1);
}
.ur