Учебно-методический комплекс в среде MRDS

  Министерство образования Московской области


Государственное бюджетное образовательное учреждение

среднего профессионального образования

Московской области

«Жуковский авиационный техникум имени В.А. Казакова»

 

 

Цикловая комиссия специальности Компьютерные системы и комплексы

 

 

 

 

КУРСОВОЙ  ПРОЕКТ

 

               Тема: Учебно-методический комплекс в среде MRDS

 

 

 

 

 

 

 

 

 

 

Выполнил студент _________________ 

                                                           подпись

Специальность: 09.02.01 - Компьютерные системы и комплексы

 

Руководитель проекта_______________ 

                                                                     подпись

 

 

 

 

 

 

 

 

 

 

 

 

 

 

г. Жуковский,    2015

 

 

Содержание

Техническое задание

3

Глава 1 Описание учебно-методического комплекса

4

1.1 Задачи учебно-методического комплекса

4

1.2 Характеристика контроллера NXT

5

1.3 Интерфейс и возможности среды Microsoft Robotics Developer Studio

7

Глава 2 Разработка и отладка программ

10

2.1 Движение робота по прямой линии

10

2.2 Движение робота по восьмерке

15

Глава 3 Результаты работы программы

21

ЗАКЛЮЧЕНИЕ

22


 

Техническое задание

Разработать учебно-методический комплекс  в среде Microsoft Robotics Developer Studio на языке Visual  Programming Language (комплексная тема).

В работе создать программу для симуляции движения робота по прямой линии и движения робота по «восьмерке» в среде симулятора Microsoft Robotics Developer Studio.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1.   Описание учебно-методического комплекса.

    1. Задачи учебно-методического комплекса.

В последнее время в учебных заведениях появилась и начала развитие робототехника. Учеников обучают программированию роботов и сборке собственных моделей роботов. Наиболее подходящим для этих целей роботом является Lego Mindstorms NXT. На занятиях с образовательными конструкторами LEGO дети строят действующие модели реальных механизмов, живых организмов и машин, проводят естественнонаучные эксперименты, осваивают основы информатики, алгоритмики и робототехники, попутно укрепляя свои знания по математике и физике и приобретая навыки работы в творческом коллективе.

Однако в России не все учебные заведения способны купить необходимое оборудование в достаточном объеме, поэтому нужны альтернативные варианты. Одной из таких альтернатив является программа Microsoft Robotics Developer Studio (MRDS) — новая среда программирования роботов, позволяющая создавать программы для различных моделей роботов, и что особенно важно, тестировать эти программы в виртуальной среде на манифестах.

Существуют проблемы, связанные с внедрением MRDS в учебные заведения.

Во-первых, в России MRDS малоизвестен и многие педагоги не знают об этой программе и её возможностях. Во-вторых, нет необходимой методической литературы, которая могла бы помочь самостоятельно изучить все возможности и функции программы.

Целью данной работы является разработка программно-методических материалов по основам использования виртуальной среды MRDS в учебном процессе образовательного учреждения.

Объект исследования: MRDS — средство разработки программ для роботов и тестирование этих программ на виртуальных роботах.

Предмет исследования: методика использования виртуальной среды MRDS в учебном процессе и внеурочной деятельности школьников.

Задачи исследования:

1. Провести сравнительный анализ  сред программирования робота  Lego Mindstorms NXT;

2. Провести анализ научно-методической  литературы по программированию  роботов в MS Robotics Developer Studio;

3. Изучить интерфейс и возможности MRDS;

4. Разработать методические рекомендации  по основам использования виртуальной  среды MRDS в учебном процессе и  внеурочной деятельности школьников.

    1. Характеристика контроллера NXT

 Главное отличие наборов MINDSTORMS от всех остальных серий LEGO заключается в наличии уникальных электронных компонентов, составляющих “ядро” всей системы. Первым, и самым главным устройством является программируемый контроллер, или, как его называет компания “LEGO” – интеллектуальный блок. Если быть точным, то слово блок не совсем подходит, так как в оригинале он называется “intelligent brick”, а применительно к конструкторам LEGO словом brick обозначают прямоугольные строительные “кирпичики”. По этой причине очень часто в среде русскоязычного сообщества MINDSTORMS контроллер NXT называют “кирпич”.

 

Основные характеристики программируемого блока NXT.

 

Внешний вид

Процессор

Основной процессор: Atmel ARM7 AT91SAM7S256, частота 48 МГц, 32-битный. 
Сопроцессор: Atmel AVR ATmega48, частота 8 МГц, 8-битный.

Память

256 Кб FLASH, 64 Кб ОЗУ основного процессора, и 4Кб FLASH, 8 Кб ОЗУ сопроцессора.

Входов

4 входа, 6 контактов на вход.

Выходы

3 выхода, 6 контактов на выход.

Дисплей

Графический LCD, 100 x 64 точек, черно-белый. При выводе текста используются символы 8 точек высотой, 8 строк.

 

Кнопки

4 кнопки (без подписей): треугольная  серая –  влево, квадратная оранжевая – ввод (пуск), треугольная серая – вправо, прямоугольная тёмно-серая – стоп (отмена, выключить).

Связь

Bluetooth BlueCoreTM 4 v2.0 с поддержкой эмуляции последовательного порта (SPP), скорость (внутренняя) 460.8 Кбит/с. 
USB 2.0, скорость до 12 Мбит/с.

Питание

От 7 до 9 вольт, 6 элементов АА, Литиевая батарея 7.2 В (опционально).

Размеры

14М х 9М х 5М

Звук

Встроенный динамик,

воспроизведение записанных звуков с

разрешением 8-бит, частотный диапазон 2-16 КГц.


 

 

Основная плата NXT, вид сверху и снизу.

 

 

 

 

 

Блочная схема NXT.

 

В NXT используются 6-контактные разъёмы, причем датчики NXT используют 5 линий (два провода из шести замкнуты между собой), а сервомоторы – все 6 линий.

 

1.3 Интерфейс и возможности среды Microsoft Robotics Developer Studio

Microsoft Robotics Developer Studio состоит из четырех компонентов:

1. Concurrent and Coordination Runtime (CCR) — среда организации параллельной обработки данных.

2. Decentralized Soft ware Services (DSS) — среда, которая позволяет запускать алгоритмы обработки данных на разных ЭВМ, организовывать асинхронное взаимодействие процессов управления различными подсистемами робота.

3. Visual Simulation Environment (VSE) — среда визуализации, которая позволяет экспериментировать с моделями роботов, тестировать алгоритмы управления.

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

Программа на языке VPL называется диаграммой. Диаграмма состоит из блоков. Блоки могут быть двух типов: «Basic Activities» — базовые активности и «Services» — сервисы. В отличие от сервисов у базовых блоков нет уникального

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

В главном окне программирования роботов (Рис.  1. Главное окно MRDS) слева находятся базовые активности и сервисы, справа - структура проекта и «Properties» — свойства, а в центре — рабочая область для построения диаграммы. В состав базовых активностей входят основные блоки для управления и организации потоков данных на диаграмме. Например, «Data» — блок данных, отправляет данные разных типов на другие блоки. В списке сервисов находятся блоки, входящие в MRDS (см. каталог MRDS \ bin). Данная панель инструментов позволяет выполнять поиск сервиса по имени. Project — отображает диаграммы проекта и файлы конфигурации проекта. Properties — отображает свойства выбранного элемента диаграммы (сервиса, встроенного блока или связи между блоками).  

Visual Simulation Environment включает в себя две программы: графическая, основной задачей которой является визуализация (рендеринг) двухмерной или трехмерной компьютерной графики (работает в режиме реального времени) и физическая программа, производящая симуляцию физических законов реального мира в виртуальном мире с той или иной степенью точности. Физическая программа позволяет создавать виртуальное пространство, в которое можно добавить виртуальные статические и динамические объекты. Расчет взаимодействия тел выполняется самой программой. Рассчитывая взаимодействие тел между собой и средой, она приближает физическую модель получаемой системы к реальной, передавая уточненные геометрические данные графической программе.

Объекты в симуляторе могут создавать иерархию, реализуя отношение предок/потомок. Например, манипулятор и сенсор являются дочерними объектами робота.

Для тестирования разработанных в VPL программ был разработан симулятор Visual Simulation Environment. Это значит, что необязательно иметь реальную модель робота, чтобы

протестировать созданное приложение. Достаточно воспользоваться названной программой. Программа симулятор — это некая имитационная визуальная 3D среда высокого разрешения с интегрированным физическим движком PhysX (ускорителя расчетов физики в играх) от компании Ageia Technologies. Ускоритель позволяет имитировать реалистичное физическое поведение моделей. Благодаря виртуальному миру можно:

 

• устраивать различные ситуации;

• добавлять предметы, препятствия;

• просматривать результат в разных перспективах;

• запускать несколько моделей роботов одновременно, причем модели могут быть различны;

• сохранять и запускать повторно «сцены мира»;

• управлять визуализацией мира.

Сценический подход позволяет моделировать окружающий мир, создавая предметы и расставляя их в нужных местах. При этом трехмерная графика точно моделирует окружение, симуляция физики поддерживается в полном объеме. Однако, есть некоторые ограничения и даже недостатки у этого симулятора. Мир симулятора идеализирован, т. е. отсутствуют искажения, имеющие место в реальном мире. Попытка же создать более точную модель требует больших усилий и затрат времени.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.Разработка  и откладка программ.

 

2.1 Движение робота по прямой линии.

 

 

Для начала надо перетащить из списка сервисов в рабочую область элемент Simple Dialog, а из базовых активностей — Data (блок данных),с которого будут отправляться данные на следующий блок. Simple Dialog будет выводить на экран сообщение с кнопкой «OK», по нажатию которой начнет выполняться программа. В выпадающем списке блока Data необходимо изменить значение int на string и в текстовом поле написать «старт».

 

Далее необходимо соединить выход блока Data — Outgoing Response и вход Incoming Request блока Simple Dialog. В появившемся окне Connections слева выбрать событие, которое будет обрабатываться, — Data Value, а справа следствие — Alert Dialog. В следующем окне Data Connections значение Alert Text установить, как Value.

Затем добавить на диаграмму еще два блока данных: один блок будет отвечать за мощность, а другой за расстояние, которое нужно проехать. Настроить блок мощности - тип данных Double, значение 0.7 и блок расстояния — тип данных int, значение 1. После этого соединить Simple Dialog с блоками так, чтобы они выполнялись параллельно. В появившемся окне Connections выбрать Alert Dialog Success - Create.

На диаграмму необходимо перетащить блоки join и Generic Differential Drive. В полях join вписать значения — Drive Power и Drive Distance. Соединить выходы блоков данных с соответствующими полями. Далее соединить блоки join и Generic Differential Drive. В окне Connection выбрать Drive Distans, а в следующем окне соответственно устанавить: Distanse — Drive Distans, Power — Drive Power, Drive Distans Stage — null.

 

 

Далее необходимо выбрать манифест для элемента Generic Differential Drive.

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

В контекстном меню Generic Differential Drive выбрать Set Configuration. После этого, выбрать в разделе Set Configuration — Use a manifest.

 

 

 

В результате в нижней части появится выпадающий список «Use existing or create a new manifest» и кнопка «Import manifest»

 

С помощью кнопки импортировать манифест «LEGO. NXT. Tribot. Simulation. Manifest. xml» и выбрать его.

 

 

 

 

 

 

 

 

В результате, должна получиться такая диаграмма

 

 

Чтобы запустить программу на выполнение ,необходимо нажать F5 или в меню «Run» — пункт «Start». В результате появится окно Run, в котором отображаются сообщения о состоянии выполнения 

 

 

 

 

 

 

 

 

 

После загрузки манифеста и запуска всех необходимых сервисов появится окно, в котором видно виртуальную среду и робота и окно Alert Dialog с кнопкой. Необходимо активировать кнопку, и робот начнет движение. По окончании выполнения программы закрыть окна симуляции и запуска.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.2 Движение робота по «восьмерке».

 

Движение робота по восьмерке состоит из движений по окружности.

Для того, чтобы робот поехал по окружности, необходимо на правое и левое колеса подать разное количество энергии он будет двигаться по дуге, которая по истечении определенного промежутка времени замкнется в круг.

Разработайте блок, который будет определять количество энергии, подаваемое на левое и правое колеса. Добавьте на диаграмму блок Activity и на панели свойств установите для него имя TurningRadiusToWheelPowers

Двойным кликом по блоку, создайте вкладку TurningRadiusToWheelPowers

 

 

 

Щелкните по иконке рядом с Action, появится окно настроек . Для того что бы вписать нужные параметры необходимо нажать на кнопку Add, а для того что бы удалить — Delete

Впишите действие CalculateWheelPowers. Укажите для действия два входных параметра TurningRadius (тип double) и TurnRight (тип bool) и два выходных параметра Left и Right (тип double) (Рис. 25). Параметр TurnRight определяет направление поворота (направо или налево), TurningRadius — радиус поворота.

 

 

 

 

 

 

 

 

 

На диаграмму TurningRadiusToWheelPowers добавьте два блока Calculate и блок Data. Первый блок Calculate извлекает значение TurnRight из входящего сообщения. Блок Data устанавливает количество энергии, подаваемой на левое колесо. Второй блок Calculate вычисляет величину энергии, которая будет подана на правое колесо. Значения, поступающие с блоков Data и Calculate, объединяются с помощью Join .

Блок If, соединенный с блоком Join, используется для проверки значения величины TurnRight

Добавьте необходимые блоки и постройте диаграмму. Если TurnRight = True, то значения, хранящиеся в Left и Right, отправляются на левое и правое колеса, в результате робот поворачивает направо. Если TurnRight = False, тогда значение, хранящееся в Left, отправляется на правое колесо, а значение, хранящееся в Right, — на левое, в результате робот поворачивает налево.

 

Добавьте на основную диаграмму сервис GenericDifferentialDrive и соедините выход блока TurningRadiusToWheelPowers и вход блока GenericDiffrentialDrive (Left с LeftWheelPower и Right с RightWheelPower). Разместите на диаграмме два блока Data, установите значение первого блока в true (тип bool), а второго — в 1 (тип double). Значения, хранящиеся в блоках, отправляются на вход TurningRadiusToWheelPowers .

После того как робот завершит движение по одной окружности, он должен поменять направление движения и начать движение по окружности снова.

Пусть переменная TurnRight (тип bool) определяет направление движения робота

 

Установите время ожидания сервиса Timer в 5000 миллисекунд (предполагается, что этого времени будет достаточно, чтобы робот проехал круг радиуса 1 метр). Добавьте на диаграмму блок Calculate и соедините его с блоком Timer. В поле блока Calculate введите значение! state. TurnRight. В результате будет получена диаграмма

Процесс выполнения диаграммы.

После запуска диаграммы на экране появляется диалоговое окно с текстом «Ok». После нажатия на кнопку OK будет установлено значение переменной TurnRight, а также поля блока Join (TurnRight и TurningRadius).

Сервис Timer, соединенный с блоками Calculate и Data, после запуска диаграммы запущен не будет, так как у него не установлено время ожидания до очередного срабатывания.

Сообщение с блока Join поступает на вход блока TurningRadiusTo-WheelPowers, после чего запускается блок GenericDifferentialDrive.

Устанавливается значение времени ожидания сервиса Timer.

После ожидания 5000 миллисекунд сервис Timer, соединенный с блоками Calculate и Data, сгенерирует сообщение. С помощью блока Variable в переменную TurnRight записывается ее инвертированное значение. Восклицательный знак в текстовом поле блока Calculate обозначает операцию инвертирования: если в переменной TurnRight хранится значение false, оно будет инвертировано в true и наоборот. Заполняются значения полей блока Join.

Выполняются сервисы TurningRadiusToWheelPowers и GenericDif eren-tialDrive, устанавливается значение времени ожидания сервиса Timer.

 

3. Результаты работы программы

 

Движение робота по прямой

 

 

 

 

 

 

Заключение.

Были разработаны программы для симуляции движения робота по прямой и по «восьмерке» в среде Microsoft Robotics Developer Studio.