Варианты индивидуальных заданий к работе № 3
МИНОБРНАУКИ РОССИИ
Федеральное государственное бюджетное образовательное
учреждение высшего образования
«Ижевский государственный технический университет имени М.Т.Калашникова»
(ФГБОУ ВО «ИжГТУ имени М.Т.Калашникова»)
Кафедра «Мехатронные системы»
Ю. Р. Никитин
Моделирование движения робота на заданное расстояние и
Поворот на заданный угол
Методические указания по выполнению лабораторной работы № 3
по дисциплине
«Проектирование мехатронных систем»
для студентов направления 05.03.06 «Мехатроника и робототехника»
Ижевск 2017
УДК 621.865.8(07)
Н-62
Рассмотрено и одобрено на заседании кафедры «Мехатронные системы» (протокол № 5 от 07 декабря 2016 г.)
Рецензент: канд. техн. наук, заведующий кафедрой «Мехатронные системы» А. И. Абрамов
Ю. Р. Никитин
Моделирование движения робота на заданное расстояние и поворот на заданный угол: Методические указания по выполнению лабораторной работы № 3 по дисциплине «Проектирование мехатронных систем» для студентов направления 05.03.06 «Мехатроника и робототехника». – Ижевск: ИжГТУ имени М.Т.Калашникова, 2017. – 9 с.
Данные методические указания по выполнению лабораторной работы по дисциплине «Проектирование мехатронных систем» предназначены для студентов направления 05.03.06 «Мехатроника и робототехника». В методических указаниях рассматривается моделирование движения робота на заданное расстояние и поворот на заданный угол в среде Microsoft Robotics Developer Studio с помощью джойстика с использованием программы Microsoft Visual Programming Language.
ã Ю. Р. Никитин, 2017
Цель – приобретение навыков моделирования и управления движением робота для перемещения на заданное расстояние и поворот на заданный угол в среде Microsoft Robotics Developer Studio (MRDS) с использованием программы Microsoft Visual Programming Language (VPL). Требуется выполнить движение робота по заданной траектории в соответствии с индивидуальным заданием в приложении А.
Порядок выполнения работы
Шаг 1. Чтение команд из DirectionDialog.
Откройте VPL, чтобы создать новую диаграмму. Начните путем перетаскивания DirectionDialog на диаграмму. Эта услуга отображает форму окна с помощью кнопок на нем, так что вы можете управлять роботом в разных направлениях. Обратите внимание, что DirectionDialog сам по себе ничего не говорит о роботах или как управлять ими, это всего лишь набор кнопок.
Добавить деятельность If в диаграмму, а затем добавить все выражения, показанные на рисунке 1, например, value.Direction=ButtonDirection.Forwards. Обратите внимание, что эти выражения используют перечисляемый тип данных, который определен в DirectionDialog для различных кнопок.

Рисунок 1 - Кнопки DirectionDialog
Шаг 2. Требования к приводу.
Найдите GenericDifferentialDrive в панели Услуги и перетащите его на диаграмму. В панели Properties в разделе Конфигурация, выберите "Использовать Манифест" в выпадающем списке. Вы должны выбрать соответствующий манифест для вашего робота. Например, настроить на использование манифеста IRobot.Create.Simulation.Manifest.xml.
Теперь подключите первый из выходных контактов If (соответствующий движению вперед) к GenericDifferentialDrive. Вы должны выбрать запрос DriveDistance. Когда появится диалоговое окно Data Connections поставьте флажок "Edit values directly" и заполните его, как показано на рисунке 2 (0.5 для расстояния и мощности и DriveStage.InitialRequest для DriveDistanceStage).

Рисунок 2 - Параметры DriveDistance
Расстояния в MRDS измеряется в метрах, поэтому установка Distance (расстояние) на 0,5 означает, что робот будет двигаться 0,5 метра. Установка Power (мощность) на 0,5 равна половине мощности, потому что параметры мощности в MRDS заданы в диапазоне от -1,0 до 1,0, с отрицательными значениями робота двигается назад.
Значение DriveDistanceStage требует небольшого пояснения. Когда вы делаете запрос, это значение должно быть установлено в DriveStage.InitialRequest. Для удобства, вы можете оставить его пустым, т.е. нуль, и это будет иметь тот же эффект. Когда привод выполняет запрос, он посылает сообщение уведомления и это поле заполняется значением, которое указывает, прогресс движения. Это рассмотрено ниже.
Операции DriveDistance и RotateDegrees не реализован в некоторых сервисах приводов. Если ваш робот не работает, то причина в этом. Кроме того, некоторые сервисы осуществляют эти операции с помощью таймеров, потому что робот не имеет датчиков для измерения пройденного расстояния. В этом случае движение может быть не точным.
Скопируйте активность GenericDifferentialDrive и вставьте в диаграмму. Кроме того, вы можете перетащить новую активность GenericDifferentialDrive на диаграмму и выберите опцию, чтобы использовать существующую активность, когда появится диалоговое окно. Следует отметить, что обе эти активности представляют один и тот же двигатель. Они отображаются в виде отдельных блоков в VPL, чтобы проще писать программу. Если вы создаете другой двигатель, к его имени будет добавлен нуль (GenericDifferentialDrive0), потому что имена должны быть уникальными.
Подключите второй выход IF (для левого двигателя) к новому GenericDifferentialDrive, но на этот раз выберите RotateDegrees (угол поворота), как тип запроса. Когда появится диалоговое окно Data Connections, заполните его, как показано на рисунке 3. Значение угол поворота 90 градусов — это поворот на четверть оборота влево. Углы в MRDS измеряются против часовой стрелки от центра робота, если смотреть на него сверху. Отрицательные углы по часовой стрелке, или вправо.

Рисунок 3 - параметры RotateDegrees
Продолжите создание новых блоков GenericDifferentialDrive и присоедините их к выходам If. Параметры приведены в следующей таблице. Помните, что вы должны использовать DriveStage.InitialRequest во всех случаях.
Таблица 1 - Параметры
| Direction (направление) | Request (требования) | Distance (расстояние) | Degrees (угол поворота) | Power (скорость) |
| Forwards | DriveDistance | 0.5 | 0.5 | |
| Left | RotateDegrees | 90 | 0.5 | |
| Right | RotateDegrees | -90 | 0.5 | |
| Backwards | DriveDistance | -0.5 | 0.5 |
Последний выход If используется для остановки. Он должен быть подключен к GenericDifferentialDrive с помощью запроса SetDrivePower. Установите для левого и правого колеса Мощность, равную нулю. Это позволяет остановить робота, пока один из других движений в процессе.
Перетащите Merge деятельность на схеме и подключить все выходы GenericDifferentialDrive к нему, выбрав Fault в качестве типа сообщения. Это позволит вам увидеть, возникают ли какие-то ошибки.
Добавьте SimpleDialog схеме и подключить вывод Merge к нему.

Рисунок 4 – Полная схема
Шаг 3. Показать уведомления.
Этот шаг не является необходимым для работы программы, но вы найдете его очень полезным в понимании того, как работает GenericDifferentialDrive. Создайте еще одну активность GenericDifferentialDrive. На этот раз он не будет иметь каких-либо входов. Создайте еще два блока SimpleDialog рядом с ним, чтобы отображать уведомления, как показано на рисунке 5.
Добавьте соединение, перетаскивая соединение от круглого вывода (вывод уведомлений) GenericDifferentialDrive к первому SimpleDialog. Выберите тип theDriveDistance сообщение и отправьте его в Alert Dialog. В Data Connections, выберите value.DriveDistanceStage.
Добавьте еще одно соединение путем перетаскивания от круглого вывода GenericDifferentialDrive снова, но на этот раз на второй SimpleDialog. Выберите тип RotateDegrees сообщение и отправить его в диалог Alert. В Data Connections, выберите value.RotateDegreesStage.

Рисунок 5 - Отображение уведомления
В результате должна получиться схема как на рисунке 6.

Рисунок 6 – Готовая схема
Шаг 4. Запустите программу.
Сохраните схему, а затем запустите программу. Попробуйте нажать на кнопки на DirectoryDialog и посмотреть, что происходит. Если вы настроили уведомления, вы должны увидеть "Started" уведомления отображается сообщение (в окне оповещения), когда вы нажимаете на кнопку, а затем "Завершено" сообщение, когда заканчивается движение. Обратите внимание, что "Завершено" сообщение уведомления не отправляются, пока робот не перестал двигаться.
Попробуйте нажать на кнопку несколько раз, не дожидаясь движения, чтобы закончить. Это приведет к сообщению "аннулирован", и сразу же с помощью другого сообщения "начала".
Это важный момент, потому что он показал, что только одна операция может выполняться одновременно, и запросы не выстраивались в очередь. Если вы держите нажатой кнопку Forwards, например, робот будет продолжать идти вперед, но только потому, что вы отменили текущую операцию до ее завершения, и начали новую.
Вы также можете нажать кнопку Стоп, чтобы отменить любые операции, которые в настоящее время работают.
Аппаратные возможности различных роботов изменяются. В результате, некоторые роботы могут выполнять движение на заданное расстояние и поворот на заданный угол, но другие не могут. (Если робот не может выполнить эти функции он должен вернуть Fault, когда вы делаете запрос). Точность этих операций будет также изменяться от одного робота к другому. И, наконец, некоторые роботы не могут быть прерваны, как только они начинают операцию, поэтому кнопка Стоп не может работать или в роботе может стоять в очереди несколько запросов.
Поэкспериментируйте с этой программой, пока вы не поймете, как она работает. Вы должны знать, что ответное сообщение от деятельности блока GenericDifferentialDrive (на треугольной выход) отправляется сразу, поэтому вы не можете ждать ответа. Тем не менее, уведомления не отправляются, пока движения выполняются (или отменяются). На следующей лабораторной работе будет показано, как использовать эти уведомления для выполнения последовательности движений.
Контрольные вопросы
- Движение вперед на 1 м со скоростью 80% от максимального значения.
- Поворот вправо на 45º со скоростью 40% от максимального значения.
- Движение назад на 2 м со скоростью 70% от максимального значения.
- Поворот влево на 75º со скоростью 20% от максимального значения.
- Движение вперед на 3 м со скоростью 90% от максимального значения.
- Поворот на 65º со скоростью 60% от максимального значения.
Список литературы
- Сайт MICROSOFT [электронный ресурс]: Режим доступа URL:http://www.microsoft.com/en-us/download/details.aspx?id=29081 (дата обращения 05.01.2017)
- Сайт MICROSOFT: VPL Hands On Labs [электронный ресурс]: Режим доступа URL:https://msdn.microsoft.com/en-us/library/dd772008.aspx (дата обращения 05.01.2017)
- Сайт SLIDEBOOM: Презентация Microsoft Robotics Studio [электронный ресурс]: Режим доступа URL:http://www.slideboom.com/presentations/35149/Microsoft-Robotics-Studio (дата обращения 05.01.2017)
- Сайт LEGO MINDSTORMS NXT [электронный ресурс]: Режим доступа URL:https://msdn.microsoft.com/en-us/library/bb905443.aspx (дата обращения 05.01.2017)
- Гай В.Е. Microsoft Robotics Developer Studio. Программирование алгоритмов управления роботами.‒ М.: ЭКОМ Паблишерз, 2012. ‒ 184 с.
- Сайт Студопедия: В контексте робототехники приложение — это композиция слабосвязанных параллельно выполняющихся компонентов [электронный ресурс]: Режим доступа URL:http://studopedia.org/10-61887.html (дата обращения 05.01.2017)
Приложение А
(обязательное)
Варианты индивидуальных заданий к работе № 3
| X\Y | Y1 | Y2 | Y3 | Y4 | Y5 |
| X1 |
|
|
|
|
|
| X2 |
|
|
|
|
|
| X3 |
|
|
|
|
|
| X4 |
|
|
|
|
|
| X5 |
|
|
|
|
|
Дата добавления: 2019-02-22; просмотров: 192; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!
