
Министерство образования и науки Российской Федерации
Федеральное агентство по образованию
ФГАОУ ВПО «Уральский Федеральный Университет имени первого Президента России Б.Н. Ельцина»
Институт Образовательных Информационных Технологий
Кафедра «Информационные системы и технологии»
Оценка работы______________
Члены комиссии____________
Программное создание собственного виртуального робота в Visual Studio для пакета MRDS.
Вариант 21.
Курсовая работа по дисциплине «Системы контроля и управления»
Исполнитель: Тельгерекова А. В.,
студентка группы ИТ - 47011
Научный руководитель: Ждахин И. Л.
Екатеринбург
2011
СОДЕРЖАНИЕ
-
Введение ...………………………………………………………………....... 3
-
Программное создание сервиса ………………………………………….... 4
-
Исходные файлы службы ……………………………………………..... 4
-
Редактирование шаблона ……………………………………………….. 8
-
Определение собственного объекта – робота .................…………....…14
-
Заключение ………………………………………………………….….…... 24
-
Список литературы ……………………………………………………….... 25
Введение
Visual Simulation Environment -это ключевая часть Microsoft Robotics Developer Studio, которая использует 3D графику, чтобы сформировать изображение виртуального мира и физический движок (механизм) для
аппроксимации взаимодействия между объектами внутри физического мира. На первый взгляд, это выглядит примерно как игровой движок. Однако, после недолгого использования очень быстро становится очевидным, что они сильно различаются; не смотря на то, что многие действия и события записаны в игровой среде и то, что происходит в среде моделирования полностью зависит от взаимодействия и движения объектов в среде.
Модель содержит один или несколько объектов (сущностей), отображаемых внутри кадра. Каждый кадр модели формируется динамически, и не всегда известно заранее, какие силы будут действовать на объект внутри каждого кадра. Благодаря этому, можно работать не по плану и наблюдать, как робот будет взаимодействовать с окружающим миром.
MRDS предлагает несколько способов создания моделей и работы с ними. Возможно использование редактора VSE , а также можно добавлять объекты в модель программным способом: путем создания проекта службы DSS. MRDS предоставляет шаблон Visual Studio, который можно использовать для создания новой службы DSS.
Программное создание сервиса.
Все компоненты в Robotics Studio представляют собой независимо исполняемые сервисы и выступают как основополагающий элемент MRDS. Создадим собственный сервис. Рассмотрим, как добавить к среде симуляции небо, землю и несколько других объектов симуляции.
При создании проекта в Visual Studio, после установки Microsoft Robotics Developer Studio 2008, появился новый раздел Microsoft Robotics, в котором есть шаблон "DSS Service", предназначенный для создания сервисов.
рис.1. Использование шаблона для создания сервиса в Visual Studio
Этот шаблон содержит следующие файлы:
AssemblyInfo.cs: Этот файл определяет сборку как DSS – службу, содержит описание собираемой dll
Corobot.cs: Основной исходный файл сервиса, содержит его реализацию (исполнение).
Corobot.manifest.xml: Это манифест, который будет использоваться для запуска сервиса Corobot. Visual Studio запустит этот манифест при отладке сервиса (клавиша F5). Это установлено в файле Corobot.csproj.user
CorobotTypes.sc: Этот файл содержит классы (или типы) используемые для взаимодействия со службой.
Исходные файлы службы
В этом разделе подробнее рассмотрим два файла исходного кода, которые генерируются при создании проекта: Corobot.cs, CorobotTypes.cs. Ниже будет описан файл-манифест.
Файл Типов
Начинаться файл будет так:
Пространство имен основано на имени службы. Класс Contract является неотъемлемой частью контракта, и он должен содержать строковую переменную Identifier. Структура DSS не позволяет использовать обычное наследование, наследование может осуществляться через контракты. Контракт (Contract identifier) — уникальный идентификатор, позволяющий однозначно отличать один сервис от другого. Он определяет, каким должно быть состояние сервиса и какие операции можно с ним произвести. Контракт чем-то похож на интерфейсы (interface) из объектно-ориентированного программирования.
Концепция контракта проста: определяется состояние сервиса, набор типов сообщений и операционный порт. Контракты могут использоваться для различных моделей роботов, так как имеют общий интерфейс. Это позволяет различным приложениям работать с большим набором роботов. Приложению даже не известно, какому роботу передается сообщение, все они выглядят одинаково с точки зрения API.
Далее идет состояние службы с атрибутом [DataContract()]. Он необходим для того, чтобы класс был скопирован в Proxy DLL при компиляции.
Следующий фрагмент кода описывает основной порт операций (PortSet) с обязательным атрибутом [ServicePort].
Оканчивается файл определением типов запросов операций.
Стоит обратить внимание, что Get использует два обобщенных типа: GetrequestType для типов запросов и PortSet<ServiceExState, Fault> для ответов.
Основной файл реализации службы
Взглянем на основной файл реализации службы (Corobot.cs). Он содержит инициализацию и операции службы (или поведения).
Назначение всех трех атрибутов понятно из названия: отображаемое имя (DisplayName), описание (Description), контракт (Contract).
Каждая служба должна обладать экземпляром своего состояния (даже если оно пустое) и основным портом операций.
Рекомендуется использовать общепринятые имена для этих переменных: _state, _mainPort.
Затем идут конструктор класса и метод Start, который инициализирует службу при его запуске.
Следом идет обработчик, который должен быть помечен атрибутом [ServiceHandler()].