Моделирование и управление роботом в среде Robotics Developer Studio с использованием программы Microsoft Visual Programming Language




Методические указания по выполнению лабораторной работы № 1

по дисциплине

«Проектирование мехатронных систем »

для студентов направления 05.03.06 «Мехатроника и робототехника»

 

 

 

Ижевск 2017

УДК 621.865.8(07)

Н-62

 

 

Рассмотрено и одобрено на заседании кафедры «Мехатронные системы» (протокол № 5 от 7 декабря 2016 г.)

 

 

Рецензент: канд. техн. наук, заведующий кафедрой «Мехатронные системы» А. И. Абрамов

 

 

Ю. Р. Никитин

Моделирование и управление роботом в среде Robotics Developer Studio с использованием программы Microsoft Visual Programming Language: Методические указания по выполнению лабораторной работы № 1 по дисциплине «Проектирование мехатронных систем» для студентов направления 05.03.06 «Мехатроника и робототехника». – Ижевск: ИжГТУ имени М.Т.Калашникова, 2017. –10 с.

 

 

Данные методические указания по выполнению лабораторной работы по дисциплине «Проектирование мехатронных систем» предназначены для студентов направления 05.03.06 «Мехатроника и робототехника». В методических указаниях рассматривается моделирование и управление роботом в среде Robotics Developer Studio с использованием программы Microsoft Visual Programming Language.

 

 

ã Ю. Р. Никитин, 2017

 


 

Цель – приобретение навыков моделирования и управления роботом в среде Microsoft Robotics Developer Studio (MRDS) с использованием программы Microsoft Visual Programming Language (VPL). Требуется написать программу на VPL, которая будет управлять роботом с помощью джойстика.

 

Введение

 

MRDS – Windows-ориентированная среда для разработки программного обеспечения для роботов, управление роботами и симуляции их поведения. MRDS включает в себя:

- CCR (Concurrency and Coordination Runtime, библиотека параллельных вычислений и координации) – основанной на.NET библиотеке для параллельных вычислений, управляющей асинхронными, параллельными задачами;

- DSS (Decentralized Software Services, децентрализованные программные сервисы) – сервисы позволяющие выполнять несколько задач для выполнения сложных действий;

- VPL – среду визуального программирования для создания и отладки приложений;

- VSE (Visual Simulation Environment) – среду 3D моделирования (с поддержкой аппаратного ускорения), простой доступ к сенсорам и манипуляторам робота и поддержку нескольких языком программирования, в т.ч. C#, Visual Basic.NET, Jscript и IronPython.

В MRDS включена поддержка добавления других сервисов. Сейчас включена поддержка симулятора робофутбола и соревнований по сумо от Microsoft и разработанный сообществом симулятор лабиринта. Скачать MRDS можно по ссылке [1]. Затем установить саму среду MRDS. Описание лабораторных работ на английском языке можно посмотреть по ссылке [2].

 

Порядок выполнения работы

 

Для того, чтобы начать работу запустите приложение VPL в среде MRDS. VPL основан на программной модели потоков данных, которая хорошо подходит для программирования роботов и широко использует распределенные и параллельные вычисления. Программа VPL состоит из блоков, которые обычно называют Activities (Активность). Потоки данных состоят из последовательно соединенных Activities. Блоки Activities могут обозначать различные вещи, например, содержать элементы контроля потоков данных, функции, созданный пользователем код и т.д. Написание программы в VPL заключается в соединении Activities. В VPL данные проходят через соединения Activities.

Activities соединяются через кружки и квадраты. Они называются соединительными разъемами (connection pins). Разъемы слева – входные, справа – выходные. Когда вы подключаете входной разъем, вам необходимо выбрать действие/оператор к которому вы обращаетесь. Когда Activities получает входное сообщение, оно активируется, обрабатывает входные данные и запускает код.

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

 

Шаг 1. Добавление сервиса экранного джойстика.

Из панели инструментов Services (Службы или Сервисы) на левой стороне окна VPL, перетащите сервис Desktop Joystick (показан на рисунке 1) на ваше рабочее пространство. Этот сервис отображает окно с основными возможностями джойстика, которым можно управлять с мышки или клавиатуры.

 

 

Рисунок 1 – Desktop Joystick Activity

 

Запустите приложение: в меню выберите Run -> Start или нажмите F5. Во время первого запуска вам будет предложено сохранить вашу программу, затем VPL запустит DSS и выполнит программу. Когда программа запустится, вы увидите окно джойстика (показано на рисунке 2). Потратьте немного времени, наблюдая как джойстик реагирует на команды клавиатуры и мышки.

 

 

Рисунок 2 – Окно Джойстика

 

Замечание: Для управления джойстиком нажмите левой клавишей мыши на шар и перетащите курсор или используйте клавиши W, A, S и D.

 

Шаг 2. Добавление базового устройства.

Так же как на первом шаге был добавлен сервис Desktop Joystick, теперь необходимо добавить сервис Generic Differential Drive, этот сервис поддерживает основные операции для большинства устройств, но не связан по умолчанию не с одним из них. Главное преимущество Robotics Studio в том, что она позволяет писать программы для различных роботов. Для того чтобы связать базовое устройство с конкретной системой управления роботом, сначала кликните на бокс GenericDifferentialDrive, затем справа, на панели инструментов Properties, под Configuration, выберите Use a Manifest. Затем нажмите кнопку Import. Выберите IRobot.Create.Simulation.Manifest.xml. Панель инструментов Properties теперь выглядит как на рисунке 3:

 

 

Рисунок 3 – Связь GenericDifferentialDrive с роботом

 

Теперь базовое устройство GenericDifferentialDrive связано с сервисом управления роботом, в нашем случае эмитируется iRobot Create (показан на рисунке 4).

 

Рисунок 4 – Программируемый робот iRobot Create

 

Соедините порт сообщений (маленький красный круг справа) на DesktopJoystick с входным портом (маленький красный квадрат слева) на GenericDifferentialDrive как показано на рисунке 5.

 

 

Рисунок 5 – Соединение DesktopJoystick с GenericDifferentialDrive

 

Microsoft Robotics Studio позволяет подписать сервис на получение сообщений от другого сервиса. В нашем случае, когда позиция джойстика изменяется, сервис Desktop Joystick отправляет соответствующее сообщение. Более подробно эта тема будет раскрыта в следующей работе.

После того, как вы соедините два бокса всплывет окно Connections (показано на рисунке 6). Слева оно показывает сообщения, которые поддерживает DesktopJostick, а справа GenericDifferentialDrive. Настроим управление роботом с помощью джойстика, для этого выберем UpdateAxes в левой колонке и SetDrivePower в правой, нажмите OK.

 

 

Рисунок 6 – Окно Connections

 

Доступные порты для соединения DesktopJoystick и GenericDifferentialDrive. Теперь откроется окно Data Connections (показано на рисунке 7). Оно позволяет определить, как сообщения от DesktopJoystick влияют на сервис GenericDifferentialDrive.

 

 

Рисунок 7 – Окно Data Connections

 

Настройка Data Connections

Сервис DesktopJoystick отправляет сообщения, когда ось джойстика отклоняется, в нашем случае меняются значения X и Y в диапазоне от -1000 до 1000.

 

Сервис GenericDifferentialDrive меняет значения LeftWheelPower и RightWheelPower между -1 и 1, эти значения указывают электрическое напряжение, подаваемое на левый или правый двигатель. Если обе переменные положительные робот двигается вперед, отрицательные – назад, если правое и левое значения отличается, то робот поворачивается в сторону, где значение ниже.

Вам необходимо преобразовать значение X и Y от DesktopJoystick в LeftWheelPower и RightWheelPower. Поставьте галочку Edit values directly в окне DataConnections. Затем введите следующие выражения в соответствующие поля напротив LeftWheelPower и RightWheelPower.

(-Y + X) / 1000.0

(-Y - X) / 1000.0

Окно DataConnections теперь должно выглядеть как на рисунке 8. Внимание, вы должны четко понимать, как эти выражения преобразуют значения X и Y от джойстика в управляющие импульсы двигателя.

 

 

Рисунок 8 – Настройка портов входа

 

Шаг 4. Запустите приложение

Запуск моделирования: выберите в меню Run -> Start или нажмите F5. Потренируйтесь в управлении роботом в реалистичной среде моделирования, использующей физический движок. Для управления камерой в среде моделирования используйте клавиши w, a, s, d, q, и r.

 

Рисунок 9 – Результаты моделирования

 

Модель iRobot Create в среде моделирования

Подобным образом Microsoft Robotics Studio позволяет программировать реальных роботов. Для этого их подключают через COM порт.

 

Индивидуальные задания студентам приведены в приложении А.

Контрольные вопросы

  1. Microsoft Robotics Developer Studio (MRDS)
  2. Microsoft Visual Programming Language (VPL)
  3. Concurrency and Coordination Runtime (CCR)
  4. Decentralized Software Services (DSS)
  5. Visual Simulation Environment (VSE)
  6. Activities (Активности)
  7. Services (Службы или Сервисы)

 

Список литературы

 

  1. Сайт MICROSOFT [электронный ресурс]: Режим доступа URL:https://www.microsoft.com/en-us/download/details.aspx?id=29081 (дата обращения 05.01.2017)
  2. Сайт MICROSOFT: VPL Hands On Labs [электронный ресурс]: Режим доступа URL:https://msdn.microsoft.com/en-us/library/dd772008.aspx (дата обращения 05.01.2017)
  3. Сайт SLIDEBOOM: Презентация Microsoft Robotics Studio [электронный ресурс]: Режим доступа URL:https://www.slideboom.com/presentations/35149/Microsoft-Robotics-Studio (дата обращения 05.01.2017)
  4. Сайт LEGO MINDSTORMS NXT [электронный ресурс]: Режим доступа URL:https://msdn.microsoft.com/en-us/library/bb905443.aspx (дата обращения 05.01.2017)
  5. Гай В.Е. Microsoft Robotics Developer Studio. Программирование алгоритмов управления роботами.‒ М.: ЭКОМ Паблишерз, 2012. ‒ 184 с.
  6. Сайт Студопедия: В контексте робототехники приложение — это композиция слабосвязанных параллельно выполняющихся компонентов [электронный ресурс]: Режим доступа URL:https://studopedia.org/10-61887.html (дата обращения 05.01.2017)

 


Приложение А

Варианты индивидуальных заданий

1. MobileRobots

2. LEGO NXT

3. Pioneer 3DX

iRobot Create Приложение А

Варианты индивидуальных заданий

Microsoft Robotics Developer Studio (MRDS). Программное обеспечение, предназначенное для разработки приложений в области робототехники, симуляции и управления роботами. MRDS ориентирована на программистов различных уровней и включает в себя поддержку огромного количества аппаратного обеспечения [2]. Пакет совместим со следующими робототехническими платформами: Aldebaran Robotics, iRobot Create, Mindstorms NXT, CoroWare CoroBot, KUKA Robotics, Boe-Bot, Parallax и другими. Имеет встроенную среду визуализации (Visual Simulation Environment), которая имитирует поведение роботов в трехмерном виртуальном мире, позволяет экспериментировать с разными моделями, тестировать и отлаживать алгоритмы в том случае, если нет возможности использовать настоящего робота. Для создания реалистичности применяется технология NVIDIA PhysX.

Для управления поведением роботов в среде MRDS используется язык программирования Visual Programming Language (VPL) и C#. VPL предлагается в качестве средства описания алгоритмов поведения роботов для начинающих программистов (в том числе данный язык программирования может изучаться учащимся), язык C# – для профессиональных.

Написание программы на VPL заключается в выборе подходящих компонентов для решения поставленной задачи и установления связи между ними. Для более легкого восприятия действий базовых компонентов, их особенностей учащимися можно установить соответствие между компонентами блок-схем и базовыми компонентами языка Visual Programming Language (табл. 1). Параллельное изучение языка VPL будет способствовать пониманию учащимися практической значимости использования блок-схем и познакомит их с актуальной и динамично развивающейся в настоящее время технологией визуального программирования.

VPL описывает в основном некоторые модули робота, и их связи друг с другом. Модулями робота могут быть разнообразные датчики (расстояния, касания, света и т.д.), веб-камера, устройство GPS-навигации (кстати говоря, производимое компанией Microsoft, что еще раз говорит о серьезности намерений мирового софтверного гиганта в отношении робототехники), моторы и сервоприводы, динамики, светодиоды, различные индикаторы, дисплеи и тому подобные устройства. Кроме того, модулями в Robotic Studio могут выступать специальные диалоговые окошки, например, для ручного дистанционного управления роботом.

Связи между модулями являются некоторыми алгоритмическими конструкциями, иногда со сложной структурой. Они могут включать разнообразные ветвления, условия, даже циклы, а также работу с данными, работу с переменными и т.д. Наиболее часто основанием для создания связи служит «нотификация» (оповещение о событии) в каком-либо из модулей датчиков. Обработка связей результируется в подаче напряжения на тот или иной двигатель, проигрывании звукового сообщения, световой сигнализации - в общем, все довольно стандартно и соответствует логике работы любого робота.

Здесь, кстати, возникает естественный вопрос: «Если связей и модулей много, то как же все это поместится на диаграмме?» Microsoft с легкостью решила этот вопрос, введя понятия Activity, так сказать составного действия, а проще - блока. Activity - это отдельная диаграмма, которая имеет «входы» и «выходы», и отображается на родительской диаграмме единственным элементом, с соответствующим количеством входных и выходных точек, к которым можно присоединять линии связей. Идея простая и логичная.

Применительно к VPL также обязательно необходимо сказать о манифестах. Манифесты - это своеобразные драйверы низкого уровня, или, с другой стороны - конфигурации той или иной программы VPL. Идея состоит в том, что одна и та же программа, в принципе, может выполняться на различных роботах, несмотря на то, что на низком уровне управление реализуется неодинаково. Благодаря манифестам, чтобы перенести программу VPL с одного железа робота на другое - нужно всего-то выбрать манифесты соответствующего робота для основных модулей диаграммы. Тем же самым образом - с помощью специальных «Simulation»-манифестов - реализуется перенос программы в среду симуляции. Несколько манифестов - для наиболее популярных существующих конструкторов роботов - присутствует в базовой поставке Robotic Studio. Также есть все возможности для создания собственных манифестов.

Перейдем, наконец, к примерам. В качестве задачи я выбрал создание простейшего робота, способного объезжать препятствия. У этого робота - два датчика касания, и два мотора: мотор поворота и мотор движения. Этого же самого робота я описывал в своей статье о RoboML.

Давайте попробуем запрограммировать такого робота с помощью Microsoft Robotics Studio, и запустить его симуляцию в какой-нибудь подходящей симуляционной среде.

Открываем среду VPL, видим слева список модулей робота. Добавляем на диаграмму два модуля GenericMotor, один модуль GenericContactSensors и один модуль Timer - он потребуется для реализации отъезда назад на небольшое расстояние при объезде препятствий.

Теперь нам нужно определиться, что будет происходить при смене показаний датчиков. Для этого добавляем модуль условия (if-then-else) на диаграмму, и создаем нотификацию на Replace от датчиков касания. Нотификация (оповещение о событии) создается очень просто. На любом модуле в диаграмме есть квадратики слева, и кружочек с квадратиком - справа. Это своеобразные входы и выходы данного модуля (выход для события обозначается кружочком). Если перетащить выход одного модуля ко входу другого, между ними образуется связь.

Уточню еще один неочевидный момент - содержимое блока if-then-else. Здесь Вам очень помогут раскрывающиеся списки с подсказками, которые появляются при попытке набрать что-либо в поле условия. У меня условий было два, и записывались они так: Sensors[0].Pressed и Sensors[1].Pressed. Иными словами, сработал ли первый датчик (левый), или второй (правый). Количество датчиков и соответствие номеров датчиков их положению - определяется в зависимости от выбранного манифеста, для робота, которого мы будем использовать.

В остальном, сложного ничего нет. Те, кто знаком хоть немного с алгоритмизацией, очень быстро смогут реализовать логику нашего простого робота, который просто объезжает препятствия.

Итоговый вид диаграммы:


4.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-03-17 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: