Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Диплом.doc
Скачиваний:
71
Добавлен:
13.04.2015
Размер:
4.58 Mб
Скачать

3 Моделирование рабочего пространства средствами mrds

    1. Создание рабочей сцены средствами MRDS

Для создания сцены MRDS необходимо запустить Visual Simulation Enviroment (VSE) и перейти в режим Edit, т. е. в режим редактора симулятора. Редактор симулятора открывается при выборе пункта Mode → Edit главно­го меню окна. После запуска редактора окно будет содержать отображение сцены, список объектов сцены и свойства выделенного объекта (рис. 3.1).

Рисунок 3.1 – Пустое окно Microsoft Visual Simulation Enviroment

Далее необходимо создать основные объекты сцены, такие как небо (sky) и землю (ground). Элемент MainCamera тоже является основным объектом, который является активным по умолчанию.

Для создания объекта sky необходимо выбрать пункт меню Entity → New. В появившемся окне, в списке Entity Type выберите элемент SkyEntity и нажать ok (рис. 3.2).

Рисунок 3.2 – Вставка элемента Sky в сцену

В появившемся окне все настройки оставляем без изменений и нажимаем ok (рис 3.3).

Рисунок 3.3 – Параметры элемента

Затем необходимо повторить процедуру для создания объекта ground. в списке Entity Type выберите элемент HightFialdEntity и нажать ok (рис. 3.4).

Рисунок 3.4 – Вставка элемента Ground в сцену

В появившемся окне также не изменяем настройки и нажимаем ок. Затем необходимо выделить появившийся объект HightFieldEntity и нажать кнопку Edit Entity для изменения свойств этого объекта (рис. 3.5).

Рисунок 3.5 – Панель свойств объекта симулятора в режиме Edit

В появившемся окне (рис. 3.6) в свойстве Flags устанавлиеваем флаг Grround, затем в свойстве EntityState нажимаем на клавишу «…».

Рисунок 3.6 – Параметры элемнта Ground

В появившемся окне (рис. 3.7) в свойстве Default Texture нажимаем на клавишу (…) и выбираем файл с необходимой нам структурой. Файл должен иметь разрешение .jpg или .dds. После этого в свойстве Name пишем имя объекта: Ground и нажимаем кнопку ок.

Рисунок 3.7 – Свойства объекта Ground

В результате проделанных действий появится готовая сцена с начальными объектами (рис. 3.8).

Рисунок 3.8 – Рабочая сцена

По завершению необходимо сохранить созданную сцену. Сцена, находящаяся в симуляторе, может быть сохранена в XML-файл и затем загружена. При загрузке сцены все объекты получают то же местоположение и скорость, которые они имели при сохранении сцены. Для сохранения сцены используется пункт меню File → Save Scene, для загрузки – File → Load Scene.

3.2 Создание объекта пространства

Создание объектов в среде Microsoft Robotic Studio не представляется возможным, поэтому объекты необходимо разрабатывать в другой среде. Для этого будет использована программная среда Autodesk 3ds Max (рис. 3.9).

В качестве контрольного примера будет создан стол. Для этого необходимо создать стандартный объект Box и задать его размеры в поле Parameters (рис. 3.10). Этот объект будет служить поверхностью стола.

Рисунок 3.9 – Программная среда Autodesk 3ds Max

Рисунок 3.10 – Создание объекта Box c заданием его параметров

Для создания ножек стола необходимо преобразовать объект Box. Для этого в поле Modifier List необходимо выбрать пункт Edit Poly и подпункт Polygon (рис. 3.11).

Рисунок 3.11 – Поле Modifier List

Затем на объекте необходимо выбрать полигоны которые будут служить ножками стола (рис. 3.12).

Рисунок 3.12 – Выбор полигонов

Далее для преобразования полигонов необходимо в свойстве Extude задать длину, а затем в поле Beve – коэффициент сужения ножек. Так как стол создавался перевернутым нужно задать его правильное положение. Для этого необходимо на панели инструментов нажать правой клавишей мыши на инструмент Select and Rotate и в поле Y задать значение 180о (рис. 3.13).

Рисунок 3.13 – Создание ножек стола

Для использования этого объекта в программной среде Microsoft Robotic Studio необходимо экспортировать его в формате .obj.

3.3 Размещение элементов (объектов) в рабочем пространстве робота

Для размещения объектов в рабочем пространстве запускаем созданную рабочую сцену (рис. 3.8). После чего для добавления элемента необходимо выбрать пункт меню Entity → New. В появившемся окне, в списке Entity Type выберите элемент SimplyTriangleMeshEnvironmentEntity и нажать ok (рис. 3.14). В появившемся окне задаем начальные координаты объекта и нажимаем ок (рис. 3.15).

.

Рисунок 3.14 – Выбор элемента SimplyTriangleMeshEnvironmentEntity

Рисунок 3.15 – Параметры объекта SimplyTriangleMeshEnvironmentEntity

Далее выбираем объект SimplyTriangleMeshEnvironmentEntity и нажимаем кнопку Edit Entity для изменения свойств этого объекта. В появившемся окне в поле EntityState нажимаем кнопку (…) . В следующем окне (рис. 3.16) в поле Name задаем имя объекта: Table. Затем в поле Mesh нажимаем кнопку (…) и выбираем необходимый нам объект рабочей среды робота в месте его размещения. В данном случае это будет 3D модель стола, созданного в программной среде Autodesk 3ds Max с названием Table.obj. Объект должен иметь разрешение .obj, .bos или .x. По завершению этих действий нажимаем кнопку ок. В результате получаем объект Konveer в рабочей сцене (рис. 3.17). После чего задаются необходимые координаты объекта.

Рисунок 3.16 – Параметры объекта Table

Рисунок 3.17 – Объект Konveer в рабочей сцене

Все последующие объекты загружаются в рабочую среду подобным образом. Робот является стандартным элементом среды разработки MRDS.

3.4 Описание программного обеспечения

3.3.1 Описание программы управления робота джойстиком

Для создания программы в Microsoft Robotic Developer необходимо запустить пустой проект в программе Visual Programming Language (рис. 3.18).

Рисунок 3.18 – Пустой проект Visual Programming Language

Для создания программы управления роботом с помощью джойстика в диаграмму добавляется сервис DesktopJoystick (рис. 3.19).

Рисунок 3.19 - Сервис DesktopJoystick

Далее к нему необходимо подключить сервис GenericDifferen­tialDrive. После создания связи появится диалоговое окно Connections. В нем перечислены уведомления, которые генерирует DesktopJoystick, и дей­ствия GenericDifferentialDrive, на вход которых можно отправить эти уве­домления. Необходимо выбрать UpdateAxes в левой колонке и SetDrivePower в правой. Параметры связи данных сервисов показаны на рисунке 3.20 и в таблице 3.1.

Рисунок 3.20 - Связь между DesktopJoystick и GenericDifferentialDrive

Таблица 3.1 - Связь между UpdateAxes и SetDrivePower

Connections:

From:

To:

UpdateAxes

SetDrivePower

Data Connections:

Value

Target

(-Y + X) / 1000.0

LeftWheelPower

(-Y - X) / 1000.0

RightWheelPower

Для ввода указанных значений в диалоговом окне Data Connections отметьте пункт Edit values directly.

Затем в свойствах сервиса GenericDifferentialDrive (рис. 3.21) в списке поля Set Configuration выбираем пункт Use a manifest, далее нажимаем кнопку Import Manifest и выбираем созданную рабочую сцену.

Рисунок 3.21 – Свойства сервиса GenericDifferentialDrive

После запуска диаграммы откроется окно симулятора (рис. 3.22). Установив фокус ввода на окне Desktop Joystick, с помощью клавиш W, A (вперед - назад), S, D (влево - вправо) можно управлять перемещением робота.

Рисунок 3.22 – Окно симулятора с джойстиком

3.3.2 Описание программы движения робота по кругу

Программа движения робота по кругу предполагает создание блока, который будет определять количество мощности, подаваемое на левое и правое колесо. Для этого необходимо добавить на диаграмму блок Activity, установить имя TurningRadiusToWheelPowers. В состав блока TurningRadiusToWheelPowers включить действие CalculateWheelPowers. Затем указать для действия два входных параметра TurningRadius (тип double) и TurnRight (тип bool) и два выходных параметра Left и Right (тип double) (рис. 3.23). Параметр TurnRight определяет направление поворота (вправо или влево), TurningRadius – радиус поворота.

Рисунок 3.23Редактирование параметров блока

Рисунок 3.24Вычисление энергии, подаваемой на колеса

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

  • если TurnRight = True, то значения, хранящиеся в Left и Right, отправляются на левое и правое колеса, в результате робот поворачивает вправо;

  • если TurnRight = False, тогда значение, хранящееся в Left, отправляется на правое колесо, а значение, хранящееся в Right, – на левое, в результате робот поворачивает влево.

Рисунок 3.25 – Вычисление энергии, подаваемой на колеса

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

Рисунок 3.26 – Диаграмма организации движения робота по кругу

Для запуска робота по команде пользователя, необходимо разместить на диаграмме блоки Data и SimpleDialog и соединить их (рис. 3.27). Блок Data содержит текст «Press OK when the robot is ready». После запуска диаграммы появится диалоговое окно с сообщением «Press OK when the robot is ready», и выполнение диаграммы приостановится до нажатия кнопки OK.

Рисунок 3.27 ­– Задержка запуска диаграммы

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]