ВВЕДЕНИЕ
Опыты научных исследований последнего десятилетия доказывает: информационные технологии совершили большой скачок в развитии. В процессе совершенствования создаются всё новые и новые системы автоматизации производства, одной из таких систем автоматизации является робототехника. Робототехника позволила облегчить, обезопасить и упростить человеческий труд в любой сфере промышленности, где необходима тонкая, монотонная или вредная работа.
Каждый робот приспособлен под определённую сферу деятельности, при программировании алгоритма его работы не редко случаются не предвиденные проблемы,которые могу привести к неожиданным проблемам, а именно к поломке дорогостоящего робота или не правильному алгоритму работы.
Скачок в информационной индустрии поспособствовал создаю и развитию программ. Чтобы избежать проблем на практике, необходимо теоритически и наглядно проверить все возможные ситуации, в таких случаях используются специально разработанные программы для моделирования сцены, робота, а главное его работы с этими конфигурациями на данной сцене.
2 ОБЗОР ПРЕДМЕТНОЙ ОБЛАСТИ
2.1 Виртуальная реальность. Модели сцен
В процессе моделирования создаются объекты-модели, цель которых заместить объект-оригинал при изучении. При этом модель должна содержать значимые для данного опыта свойства оригинала. В настоящее время широко применяется компьютерное моделирование, когда описание объекта или явления сохраняется в памяти компьютера, при этом используются специальные программы. Как и любое другое моделирование, компьютерное моделирование может быть различным. Математическое моделирование[1], когда какое-либо явление или процесс описывается с помощью математических формул, а вести вычисления по ним без компьютера весьма сложно. Графическое моделирование[1], когда решается задача визуализации явления или процесса. Такое моделирование бывает необходимо, когда существует потребность в наглядном представлении явления из-за его сложности. Моделирование в реальном времени[1] моделируемая система реагирует на воздействие с объектами реального мира. Область применения моделирования в реальном времени намного шире и имеет важное практическое значение (телевидение, ядерная физика и др.).
2.2 Программы для моделирования сцен
Blender (Рис.2.1)— свободный пакет[2] для создания трёхмерной компьютерной графики, включающий в себя средства моделирования, анимации, рендеринга, постобработки видео, а также создания интерактивных игр.
Рис. 2.1 – Логотип программы
Функции пакета:
• Поддержка разнообразных геометрических примитивов, включая полигональные модели, систему быстрого моделирования в режиме subdivision surface (SubSurf), кривые Безье, поверхности NURBS,metaballs (метасферы), скульптурное моделирование и векторные шрифты.
• Универсальные встроенные механизмы рендеринга и интеграция с внешним рендерером YafRay,LuxRender и многими другими.
• Инструменты анимации, среди которых инверсная кинематика, скелетная анимация и сеточная деформация, анимация по ключевым кадрам, нелинейная анимация, редактирование весовых коэффициентов вершин, ограничители, динамика мягких тел (включая определение коллизий объектов при взаимодействии), динамика твёрдых тел на основе физического движка Bullet, система волос на основе частиц и система частиц на основе волос.
• Python используется как средство создания инструментов и прототипов, системы логики в играх, как средство импорта/экспорта файлов (например COLLADA), автоматизации задач.
• Базовые функции нелинейного редактирования и комбинирования видео.
Существует большое количество программного обеспечения для создания моделей сцен, но позволяющих ориентированно создавать модель сцены в виде конфигурации и позволяющих эмулировать работоспособность модели робота крайне мало. Наиболее популярной является программа Webots (Рис. 2.2).
Главной особенностью программы Webots[3]является создание трехмерной модели робота, ее программирования и симулирования запрограммированного алгоритма, схема взаимодействия компонентов (Рис. 2.3) демонстрирует эту особенность .
Рис. 2.2 – Логотип программы
Рис. 2.3 – Схема взаимодействия компонентов
3 ПРОГРАММА ПОСТРОЕНИЯ МОДЕЛИ СЦЕНЫ
3.1Модель решаемой задачи
В процессе рабы с программой можно сохранить результат работы в виде файла с конфигурациями и изображения (Рис. 3.1).
Рис. 3.1 – Принцип работы программы
3.2 Описание архитектуры программы
3.2.1 Общая структура программы
Основные классы и функции программы (Рис.А1):
• Программа содержит 7 функций обработки сообщений.
• Программа содержит 8 классов из которых 2 являются абстрактными.
Программа содержит следующие файлы:
• Классы по работе с примитивами содержаться в файле CPrimitives (Рис.А2)
• Классы по работе с объектами содержаться в файле CObject
(Рис.А3)
• Класс по работе с файлами содержаться в файле CFile
3.2.2 Структура классаCLASSPRIMITIVES
Таблица 3.1 Стандартные методы класса CLASSPRIMITIVES.
Название метода Описание
Rectangle [4] Рисует прямоугольник закрашенный текущей кистью и контуробведён текущим карандашом
Ellipse[4] Рисует эллипс закрашенный текущей кистью и контур
обведён текущим карандашом
MoveToEx[4] Задаёт текущую точку
LineTo[4] Рисует линию от текущей точки к заданным координатам закрашенную текущей кистью и контур обведён текущим карандашом
vector<EPOINT>::size Возвращает размер вектора
vector< EPOINT >::clear Отчищает вектор
vector< EPOINT >::erase Удаляет элемент по заданному итератору
Таблица 3.2 Пользовательские методы класса CLASSPRIMITIVES.
Название метода Параметры Тип доступа Описание
voidAdd() UINTType - тип материала.
intx1 - левая верхняя координа по оси x.
inty1 - левая верхняя координа по оси y.
intx2 – правая нижняя координата по оси x.
inty2 - правая нижняя координата по оси y. public Функция добавляет новый примитив в вектор
voidClear() - public Функция отчищает вектор примитивов
UINT getType() intpos – позиция. public Возвращает тип материала примитива по номеру
Int getCount() - public Возвращает количество примитивов
voidDelLast() - public Удаляет последний примитив
ResolutionPrim GetPropertiesPrim () intpos – позиция. public Позволяет получить характеристики примитива по номеру
void DeletePos() intpos – позиция. public Удаляет примитивпо номеру
virtual BOOL getPrimitive() HDC – контекст устройства.
intpos – позиция.
public Рисует примитив по номеру на заданный контекст
Таблица 3.3 Пользовательские методы класса CLASSPRIMITIVES.
Имяполя Типдоступа Описание
EPOINT point protected Переменнаяхранящаятекущиекоординаты
vector< EPOINT> course protected Вектор хранящий координаты примитивов
Класс ResolutionPrim служит для получения и хранения характеристик примитива.
Класс EPOINT служит для хранения координат примитива и типа материала.
КлассыCELLIPSE, CRECTANGLE, CLINEявляютсянаследникамиCLASSPRIMITIVES.
3.2.3 Структура классаCLASSOBJECT
Таблица 3.4 Стандартные методы класса CLASSOBJECT.
Название метода Описание
Rectangle[4] Рисует прямоугольник закрашенный текущей кистью и контур обведён текущим карандашом
vector<>::size Возвращает размер вектора
vector<>::clear Отчищает вектор
vector<>::erase Удаляет элемент по заданному итератору
Таблица 3.5 Пользовательские методы класса CLASSOBJECT.
Название метода Параметры Тип доступа Описание
voidAdd() intx1 - левая верхняя координа по оси x.
inty1 - левая верхняя координа по оси y.
intx2 – правая нижняя координата по оси x.
inty2 - правая нижняя координата по оси y.
bool active – активность объекта. public Функция добавляет новый объект в вектор
void Clear() - public Функция отчищает вектор объектов
bool getActive() intpos – позиция. public Возвращает активность объекта по номеру
getCount() - public Возвращает количество объектов
void DelLast() - public Удаляет последний объект
ResolutionObj GetPropertiesObj intpos – позиция. public Позволяет получить характеристики примитива по номеру
void DeletePos() intpos – позиция. public Удаляет примитивпо номеру
BOOL getObject() HDC – контекст устройства.
intpos – позиция.
public Рисует объект по номеру на заданный контекст
Класс ResolutionObj служит для получения и хранения характеристик объекта.
Класс EOBJECT служит для хранения координат объекта и егоактивность.
Классы CDOOR, CMINEявляются наследниками CLASSOBJECT.
Таблица 3.6 Пользовательские методы класса CLASSOBJECT.
Имя поля Тип доступа Описание
EOBJECT point protected Переменнаяхранящаятекущиекоординаты
vector<EOBJECT> obj protected Вектор хранящий координаты объектов
3.2.4 Структура классаCLASSFILE
Таблица 3.7 Стандартные методы класса CLASSFILE.
Название метода Описание
CreateFile [4] Создаёт файл
Таблица 3.5 Пользовательские методы класса CLASSOBJECT.
Название метода Параметры Тип доступа Описание
SIZE_T GetOpenDialog() HINSTANCEhInstance - дескрипотор.
HWNDhWnd – дескриптор экземпляра окна.
LPCTSTRlpTitle – заголовок.
LPTSTRlpFileName – фильтер имени.
SIZE_TszFNSize – длинна имени.
LPCTSTRlpFilter – фильтр.
DWORDdwFilterIndex – фильтр индекса.
BOOLbMultiSelect – возможность сохранения в мульти формате. public Открытие диалога
void SavePicture() HDChDCCanvas – сохраняемый контекст дисплея.
LPCTSTRlpFileName – имя сохраняемого файла.
intw – ширина изображения.inth – высота изображения. private Сохранение иозображения
void ObjectFile() vector<string> - сохраняемое значение private Сохранение файла конфигураций
3.3 Описание данных
Программа использует следующие глобальные объекты и переменные:
• CELLIPSECE – объект класса эллипс;
• CRECTANGLECR - объект класса прямоугольник;
• CLINECL - объект класса линия;
• CDOORdoor - объект класса дверь;
• CMINEmine объект класса мина;
• ResolutionPrimRP - объект класса характеристики примитива;
• ResolutionObj RO - объект класса характеристики объекта;
• UINT UsesNow – идентификатор, объекта используемого сейчас;
• BOOL Edit - идентификатор, редактирования;
• char height[MAX] – строка для хранения высоты;
• char wedth[MAX] – строка для хранения ширины;
• BOOLIsOpen – открыт или нет модальный диалог;
• BOOL DrawObj - идентификатор, рисования объекта;
• BOOL DrawPrim - идентификатор, рисования примитива;
• UINT Type - идентификатор, типа материала;
• UINTElement - идентификатор, используемого примитива;
• UINTObj - идентификатор, используемого объекта;
• BOOL ActivateObj – идентификатор, активности объекта;
• HWND hPaintDialog – идентификатор, диалога для рисования;
• BOOLNEW - идентификатор, создания диалога для рисования;
• HWNDhStatusWindow - идентификатор, статусной строки;
• HWNDhMain - идентификатор, главного диалогового окна;
• HWNDhModelessDlg - идентификатор, модальных окон;
3.4 Реализация графического интерфейса приложения
Приложение имеет интуитивно понятный интерфейс пользователя, который позволяет создавать модель сцены с использованием всевозможных объектов и сохранение сцены в виде файла с конфигурациями.
3.4.1 Описание экранных форм
Главное окно программы (Рис.Б1) содержит необходимые элементы управления для быстрого добавления и редактирования объектов. В левой верхней части программы расположено меню со следующими пунктами:
File - основные команды по работе с конфигурационным файлом и программой (создать новый файл, открыть, сохранить и выход из программы).
Edit - настройки редактирования
Help - содержит пункты просмотра справки и окно информации о программе.
About – о программе.
Окно “Size” служит задания размеров карты (Рис. Б2) содержит текстовые поля и кнопку подтверждения и отмены.
Окно “About” (Рис. Б3) содержит информацию о программе.
Окна “Primitives”, “Objects” и“Editobjects” (Рис Ю4) содержат инструменты, которые служат для создания и редактирования модели сцены.
3.4.2 Программная реализация
Главное окно программы является диалоговымне модальным окном, которое содержит основные элементы управления, а также два дочерних окна - окно отрисовки и окно свойств выбранного объекта робота. Исходный код ресурса главного окна приведен в приложении В1.
Основные элементы управления:
• Меню - тип MENU;
Диалоговое окно задания размеров является не модальным диалоговым окном.Исходный код ресурса окна размеров приведен в приложении В2.
Основные элементы управления:
• Поля ввода - Editcontrol;
• Кнопки подтверждения - Buttoncontrol.
Окна примитивов, объектов и редактирования являются модальными диалоговыми окнами. Исходный код ресурса объектов приведен в приложении В3.
Основные элементы управления:
• Элемент списка объектов - ListBoxcontrol;
• Группирующие рамки - Group-Boxcontrol;
• Кнопки подтверждения - Buttoncontrol.
3.5 Обзор средств реализации
Visual Studio [5] — это полный набор инструментов и служб для создания различных приложений как для платформы Microsoft, так и для других платформ. Visual Studio также позволяет связать все проекты и группы. Кроме того, среда Visual Studio оптимизирована для совместного проектирования, разработки и развертывания корпоративных решений.
Для реализация курсовой работы я использовал редактор исходного кода, редактор ресурсов и компилятор среды MicrosoftVisualStudio 2013.
Для разработки приложения использовался язык С++. Си++ (англ. C++) — компилируемый строго типизированный язык программирования общего назначения. Поддерживает разные парадигмы программирования: процедурную, обобщённую, функциональную; наибольшее внимание уделено поддержке объектно-ориентированного программирования. C++ широко используется для разработки программного обеспечения, являясь одним из самых популярных языков программирования.
WinAPI- это общее название для всех функций[6] операционной системы, которые могут включать в свои программы сторонние разработчики. Полный обзор всех функций данного интерфейса взаимодействия с ОС можно найти на официальном сайте msdn.com.
Win32 API — это набор функций для создания программ, работающих под управлением MicrosoftWindows. Все функции этого набора являются 32-битными, что отражено в названии интерфейса.
Графический интерфейс устройства [7] (graphicsdeviceinterface (GDI)) — это составная часть Win32 API, обеспечивающая графический вывод на устройства отображения информации, такие как дисплей.Для отображенияGDI транслирует обращения к программным драйверам физических устройств, обеспечивая аппаратную независимость приложений. Код библиотеки GDI находится в файле gdi32.dll, то есть библиотека является динамически загружаемой. Драйверы стандартных устройств поставляются как часть Windows, а драйверы специализированных устройств создаются производителями оборудования.
При написании прикладных программ для Windows программистам приходится пользоваться огромным объемом документации, который изложен в справочной системе MSDN [8].
3.6 Особенности реализации
К особенностям реализации относится вызов справки – chm-файл. Для создания файла-помощи использовалась программа HelpNDoc, которая предоставляет богатый инструментарий по работе с файлом. Файл помощи содержит информацию о разработчике, а так же как пользоваться данным прикладным ПО.
3.7 Необходимые аппаратные и программные средства для создания программы
Для создания данной программы необходима среда разработки MicrosoftVisualStudio 2013. Требования к аппаратной части совпадают с требованиями к среде разработки:
Поддерживаемаяоперационнаясистема
Windows 7 Service Pack 1; Windows 8; Windows 8.1; Windows Server 2008 R2 SP1; Windows Server 2012; Windows Server 2012 R2
Требования к оборудованию:
• Процессор с тактовой частотой 1,6 ГГц или большей
• ОЗУ объемом 1 ГБ (1,5 ГБ для работы на виртуальной машине)
• 5 ГБ доступного пространства на жестком диске
• Жесткий диск с частотой вращения 5400 об/мин
• Видеокарта с поддержкой DirectX 9 и разрешения экрана не менее 1024 x 768
Дополнительные требования
• В Windows 8.1 и Windows Server 2012 R2 требуется KB2883200 (доступно в Центре обновления Windows)
• Для некоторых компонентов требуется доступ к Интернету
Данная версия Visual Studio лучше всего работает с Internet Explorer 10 или выше. Если приложение Internet Explorer 10 не установлено на данном компьютере, некоторые функции могут не работать надлежащим образом.
4 КОМПЬЮТЕРНЫЙ ЭКСПЕРИМЕНТ
4.1 Необходимые аппаратные и программные средства для эксплуатации программы
• ОС: WindowsXP, Windows 7
• Процессор с частотой 1 ГГц или выше
• ОЗУ 512Mb
• ПЗУ 3Mb
• Клавиатураимышь
4.2 Инструкции пользователю
Для создания модели робота необходимо запустить файл RoboMapCreator.exe.
• Для создания новой сцены необходимо перейти File->New->Заполнить поля ширины и высоты в дилоговом окне.
• Для выбора примитива необходимо перейти Edit->Primitives установить Примитив (Primitivis)и Тип материала (Type)->Нажать кнопку "ОК".
• Для выбора объекта необходимо перейти Edit-> Objects установить Объект (Object) и Активность объекта (Activate) -> Нажать кнопку "ОК".
• Для редактирования объектов необходимо перейти Edit ->Edit Objects -> Выбрать объект -> Показать все объекты данного типа (View) -> Выбрать номер объекта -> Редактировать (Edit) -> Нажать кнопку "ОК".
4.3. Контрольный пример работы программы
Результат программы это файл, содержащий конфигурации сцены в виде кода(Рис. 4.1).
Рис. 4.1 – Файл конфигураций
ВЫВОД
В данной курсовой работе мне необходимо было реализовать программу, которая на основе графического представления модели сцены создаёт файл с конфигурациями для программы-эмулятора робота.
Рассмотрев поставленную задачу я остановился на использовании старого, но проверенного GDIи двойную буферизацию для устранения мерцания в процессе рисования. В качестве языка программирования был использован язык С++ и функции WinAPI.
Для простой и удобной работы программа реализована с интуитивно понятным интерфейсом, но для надёжности содержит файл помощи, в случае затруднений в процессе работы.
Рассматриваемая мною проблема актуальна в текущее время. Во всех сферах использования роботов, есть необходимость виртуально проверить работу алгоритма, иначе в случае ошибок, на практике это может привести к непредвиденным последствиям, которые могут создать реализационные или финансовые трудности.
Программ, которые могу смоделировать модель сцены и являются ориентированными для робототехники очень мало, либо они имеют коммерческую основу, поэтому данная программа является актуальной в наше время.
СПИСОК ССЫЛОК
1. younglinux.info [Электрон. ресурс]. - Режим доступа: http://younglinux.info/book/export/html/72
2. blender.org[Электрон. ресурс]. - Режим доступа: http://www.blender.org/about/
3. cyberbotics.com[Электрон. ресурс]. - Режим доступа: http://www.cyberbotics.com/overview
4. w32api.narod.ru [Электрон. ресурс]. - Режим доступа:
http://w32api.narod.ru/functions03.html
5. MicrosoftDeveloperNetwork [Электрон. ресурс]. - Режим доступа:
http://msdn.microsoft.com/ru-ru/library/dd831853.aspx
6. ЛитвиненкоН. А.Технология программирования на С++. Win32 API-приложения[Текст]— БХВ-Петербург, 2010. — 281 с: ил.
7. ЩупакЮ. А. Win32 API. Эффективная разработка приложений. — СПб.: Питер, 2007. — 572 с: ил.
8. MicrosoftDeveloperNetwork [Электрон. ресурс]. - Режим доступа:
http://msdn.microsoft.com/en-US/windows/desktop/
Приложение А
Рис.А1 – Карта проекта
Рис.А2 – Схема CPrimitives
Рис.А3 - Схема CObjects
Приложение Б
Рис.Б1 – Основное окно программы
Рис.Б2 – Окно задания размеров карты
Рис.Б3 – Окно о программы
Рис. Б4 – Окна выбора инструментов для использования
Приложение В
Рис.В1 – Код ресурса диалога Main
Рис.В2 – Код ресурса диалога Rect
Рис.В3 – КодресурсадиалоговPrimitives, Edit object, Object
Виртуальная реальность. Модели сцен. Робототехника
Курсовая работа по предмету «Робототехника»