Мультимедийная система обучения правилам пожарной безопасности

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 06.07.2012
Размер файла 3,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

На рисунке 3.10 изображена схема базы данных.

Рисунок 3.10 - Схема базы данных

Опишем таблицы базы данных.

Таблица TheoryItems - дидактические единицы:

- Name (строка) - отображаемое имя;

- ContentPath (строка) - путь к содержанию единицы;

- ParentID (целое число) - идентификатор родительской единицы;

Таблица TestItems - элементы проверки знаний:

- Name (строка) - отображаемое имя;

- Description (строка) - путь к файлу с описанием;

- TypeID (целое число) - идентификатор типа элемента (0 - обучающий сценарий, остальные значения зарезервированы для других типов).

- ObjectID (целое число) - идентификатор элемента проверки знаний (Scenarios.ID для сценариев);

- TheoryItemID (целое число) - идентификатор дидактической единицы.

Таблица Scenarios - сценарии:

- SceneName (строка) - имя сцены (Unity3d).

- TimeLimit (вещественное число фиксированной точности) - ограничение по времени, сек.

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

Таблица Tasks - задачи (состояния сцены):

- Text (строка) - текст задачи;

- ProgID (строка) - название задачи (используется только редактором сценариев);

- ScenarioID (целое число) - идентификатор сценария;

- Kind (целое число) - тип задачи (0 - обычная задача, 1 - успешная задача, 2 - провальная задача);

- EnterAction (строка) - скрипт входного действия;

- ExitAction (строка) - скрипт выходного действия.

Таблица TaskJumps - переходы между задачами (состояниями):

- FromTaskID (целое число) - идентификатор задачи, из которой совершается переход;

- ToTaskID (целое число) - идентификатор задачи, в которую совершается переход;

- Condition (строка) - скрипт условия перехода.

Таблица TestResults - результаты обучения:

- BeginTestDate (дата) - дата начала прохождения элемента проверки знаний;

- Mode (целое) - режим прохождения (0 - обучение, 1 - проверка знаний);

- TestItemID (целое число) - идентификатор элемента проверки знаний;

- UserID (целое число) - идентификатор пользователя.

Таблица ScenarioTestResults - результаты обучения по сценариям (спецификация TestResults):

- TestResultID (целое число) - идентификатор результата обучения;

- IsUserDead (булево) - персонаж обучаемого погиб;

- IsTimeout (булево) - время истекло.

Таблица TaskCompletings - информация о выполнении задач сценария:

- Order (целое число) - порядковый номер задачи;

- CompleteTime (вещественное число фиксированной точности) - время выполнения задачи, сек;

- ScenarioTestResultID (целое число) - идентификатор результата обучения с помощью сценариев;

- TaskID (целое число) - идентификатор задачи.

Учитывая, что одно и то же задание обучаемый может выполнять несколько раз, все попытки выполнения задания будут записаны в эту таблицу. Так как порядок выполнения строго не определен, используется поле Order.

Таблица Users - пользователи обучающей системы (к ним относятся как обучаемые, так и обучающие):

- Login (строка) - логин.

- Password (строка) - пароль.

Логин и пароль используются для аутентификации пользователя в системе.

Компонент Sike. FireSafety. Scenario.dll

Реализует объектную модель схемы сценария, то есть предоставляет методы для доступа к структуре схемы сценария и её изменения.

Состоит из классов: Scenario, Task, TaskCollection, TaskJump, TaskJumpCollection.

Класс Scenario реализует основные функции компонента:

- загрузка и сохранение схемы сценария;

- проверка ограничений, накладываемых на структуру схемы сценария, во время загрузки и перед сохранением;

- чтение и запись свойств схемы сценария;

- доступ к коллекции задач схемы сценария - экземпляру класса TaskCollection;

- проверка изменения схемы сценария со времени её последнего сохранения;

- проверка, задействована ли схема сценария в обучении (в этом случае состав задач и переходов не может редактироваться, можно лишь изменять свойства схемы сценария, задач и переходов);

- нахождение начальной задачи;

- удаление схемы сценария по её уникальному идентификатору в базе данных.

Класс Task представляет задачу сценария и выполняет следующие функции:

- чтение и запись свойств задачи;

- доступ к коллекции переходов из данной задачи - экземпляру класса TaskJumpCollection.

Класс TaskJump представляет переход между задачами и выполняет следующие функции:

- чтение и запись свойств перехода между задачами;

- доступ к задаче, в которую осуществляется данный переход.

Классы TaskCollection и TaskJumpCollection представляют коллекции задач и переходов между задачами соответственно, выполняют следующие функции:

- добавление элемента;

- удаление элемента;

- доступ к элементу по индексу или уникальному идентификатору в базе данных.

Компонент Sike. Scripting.dll

Данный компонент реализует интерпретатор скриптов. Следует отметить, что данный интерпретатор является интерпретатором компилирующего типа.

Основой функционирования интерпретатора скриптов являются следующие четыре этапа:

- лексический анализ текста скрипта и его преобразование в список лексем;

- синтаксический анализ списка лексем и его преобразование в древовидное представление;

- семантический анализ полученного дерева и последующее построение на его основе исполняемого делегата;

- исполнение построенного ранее делегата по запросу пользователя.

Общая схема функционирования интерпретатора скриптов представлена на рисунке 3.11.

На каждом из этапов работы интерпретатора скриптов используются следующие структуры данных.

Исходными данными для этапа лексического анализа является строка символов, содержащая исходный текст скрипта, а также описание лексем в формате XML. Результатом выполнения данного этапа является список объектов класса Token.

Класс Token содержит следующие свойства:

- делегат, осуществляющий поиск лексемы в указанной строке, начиная с указанной позиции (используется на этапе лексического анализа);

- позиция лексемы в тексте скрипта;

- длина лексемы;

- текст лексемы.

Рисунок 3.11 - Общая схема работы интерпретатора скриптов

Исходными данными для этапа синтаксического анализа является список объектов класса Token, полученный на этапе лексического анализа, а также описание грамматики в формате XML. Результатом выполнения данного этапа является дерево на основе класса SyntaxTreeNode. Объекты данного класса могут содержать в себе либо объекты класса Token, либо другие объекты класса SyntaxTreeNode.

Исходными данными для этапа семантического анализа и последующего построения исполняемого делегата является дерево, полученное на этапе синтаксического анализа, а также список объектов, которыми может манипулировать скрипт и типов, объекты которых он может создавать. Результатом выполнения данного этапа является делегат, не принимающий никаких параметров, и возвращающий значение типа void.

Описываемый компонент состоит из следующих классов:

- LexAnalyzer - осуществляет процедуру лексического анализа;

- SyntaxAnalyzer - осуществляет процедуру синтаксического анализа;

- Script - основной класс, выполняет функции компиляции и исполнения скрипта. Агрегирует классы LexAnalyzer и SyntaxAnalyzer для выполнения лексического и синтаксического анализа. Выполняет семантический анализ и построение исполняемого делегата.

Опишем последовательность работы с классом Script:

- с помощью статичных свойств GlobalObjects и GlobalTypes задать объекты и типы, доступные всем скриптам;

- создать экземпляр класса Script для построения очередного скрипта;

- с помощью свойств экземпляра Objects и Types задать объекты и типы, доступные только данному скрипту;

- задать значение свойства Text - текст скрипта;

- вызвать метода Parse для компиляции скрипта, перехватить исключения, связанные с ошибками компиляции скрипта (ошибка может быть лексической, синтаксической или семантической);

- вызвать метод Run для выполнения скрипта, метод возвращает результат работы скрипта, если в его тексте встречается оператор return, иначе null.

Опишем интеграцию интерпретатора скриптов с остальными компонентами системы.

Компонент Sike. FireSafety.exe использует компонент Sike. FireSafety. Scenario.dll для загрузки схемы сценария. Далее он строит граф состояний с помощью компонента Sike. FireSafety. StateMachine.dll. Делегаты действий входы и выхода, а также делегаты условий перехода класса State как раз и строятся с помощью интерпретатора скриптов. Предварительно компонент Sike. FireSafety.exe находит на сцене объекты, которыми должны манипулировать скрипты, и передает их классу Script.

Компонент Sike. FireSafety.exe

Является главным компонентом системы. Компонент может быть разбит на следующие подкомпоненты:

- главное меню - предназначено для навигации между функциональными блоками системы;

- плеер сценария - контролирует прохождение сценария, реализует пользовательский интерфейс режима прохождения сценария, осуществляет сохранение результатов прохождения;

- загрузчик сценария - осуществляет загрузку и подготовку сценария к прохождению.

- редактор сценариев - реализует пользовательский интерфейс для редактирования сценария с помощью компонента Sike. FireSafety. Scenario.dll.

Приведем описание только одного подкомпонента - плеера сценария, а именно его главного класса ScenarioManager - менеджера сценария.

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

Перед просчетом каждого кадра «движок» Unity3d вызывает метод Update менеджера сценария. В данном методе выполняются следующие проверки: проверка на истечение времени на выполнение задач сценария, проверка на «гибель» персонажа обучаемого и проверка выполнения текущей задачи (через обращение к текущему состоянию - экземпляру класса State). Если оказывается, что время истекло или персонаж обучаемого погиб, и активен режим проверки знаний, прохождение сценария завершается. Если оказывается, что текущая задача выполнена, запоминается время выполнения задачи. Если новая текущая задача оказывается успешной или провальной прохождение сценария завершается. При завершении сценария менеджер производит сохранение накопленной статистики выполнения задач в базу данных и вызывает метод StopScenario, осуществляющий возврат в главное меню.

Компонент Sike. FireSafety. TestResultsViewer.exe

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

Рисунок 3.12 - Диаграмма компонентов каркаса МИОС и редактора сценариев

3.4 Разработка прототипа мультимедийной интерактивной обучающей системы для обучения правилам пожарной безопасности и действиям при обнаружении пожара

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

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

Пожар в обоих сценариях начинается из-за возгорания персонального компьютера. Первый сценарий называется «Пожар в офисе. Тушение возможно», он демонстрирует ситуацию, когда пожар не очень силен и может быть потушен обучаемым с помощью огнетушителя. В случае если обучаемому не удалось это сделать, он должен позвонить в пожарную часть и эвакуироваться из здания, предварительно включив систему пожарной сигнализации. Второй сценарий называется «Пожар в офисе. Эвакуация». Данный сценарий является вариацией первого и использует ту же сцену. Согласно сценарию, пожар слишком силен, чтобы его можно было потушить огнетушителем, поэтому обучаемый должен сразу позвонить пожарным и далее эвакуироваться из здания. При попытке тушения пожара сценарий будет провален.

Процесс разработки сценария велся в соответствии с порядком, приведенным в пункте 3.3.8. Опишем только функцию А2-1. Подробное описание сценариев и их схемы приведены в приложении А.

Выделены следующие неинтерактивные объекты:

- стены, пол, потолок коридоров, кабинета в котором начался пожар, лестничных спусков;

- лампы для освещения коридоров и кабинета;

- неинтерактивные двери в кабинеты, в которые не может попасть персонаж обучаемого;

- лестницы: основная и запасная;

- эвакуационные знаки, знак пожарной кнопки, огнетушителя;

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

Модели как интерактивных, так и неинтерактивных объектов могут разрабатываться 3D-моделлером независимо от программиста.

Выделены следующие интерактивные объекты (с ними будут связаны задачи сценария):

- двери из кабинета и на лестницу. Сами по себе не интерактивны, но содержат интерактивный объект - ручку, при использовании которой дверь открывается или закрывается;

- окно в кабинете - поведение полностью аналогично двери;

- электрощит - является композицией объектов дверка (поведение аналогично двери за исключением отсутствия ручки - дверка используется непосредственно), двухпозиционного переключатель и других частей, не являющихся интерактивными. При использовании переключателя включается или выключается электричество в кабинете. Флаг включенности электричества хранится непосредственно в объекте электрощит;

- огнетушитель. При использовании огнетушителя он берется персонажем обучаемого. При нажатии клавиши «G» он выбрасывается. При нажатии клавиши «R» огнетушитель переходит в режим подготовки. В этом режиме передвижение и возможность осматриваться персонажа обучаемого блокируются. Использование объектов теперь происходит с помощью курсора мыши. Активируются подобъекты пломба и кольцо. При использовании пломбы она срывается, при использовании кольца оно выдергивается. После использования этих объектов огнетушитель переходит в нормальный режим и считается подготовленным. Передвижение и возможность осматриваться персонажа обучаемого разблокируются. Когда огнетушитель подготовлен и запас огнетушащего вещества не нулевой, при нажатии и удержании левой кнопки мыши огнетушитель распыляет огнетушащее вещество, расходуя его запас;

- огнетушащее вещество, распыляется огнетушителем. При попадании частиц этого вещества на огонь происходит тушение последнего;

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

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

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

- лифт и кнопка вызова лифта. При использовании кнопки вызова, двери лифта открываются. При использовании кнопки спуска на первый этаж на панели управления лифтом двери лифта закрываются, и он считается использованным. Это проверяется в схеме сценария;

- триггеры - регистрируют факт выхода из кабинета, отдаления от кабинета, прохождение лестничного пролета, попадания в точку эвакуации (зона перед выходом из здания).

- оболочка персонажа обучаемого. Осуществляет перемещение персонажа по сцене, обзор сцены с видом от первого лица. Содержит методы для подбора и использования объектов, блокировки перемещения и обзора, определения текущего уровня здоровья, определения какой предмет держит персонаж в данный момент.

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

Заключение

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

Для достижения поставленной цели были решены следующие задачи:

- изучены аналогичные программные продукты, выявлены недостатки и достоинства данных продуктов, определены перспективные направления разработки;

- разработан каркас МИОС, базирующийся на обучающих сценариях, предполагающих нелинейное прохождение, использование скриптовой системы;

- разработан редактор сценариев, позволяющий специалисту в предметной области в удобной форме создавать обучающие сценарии;

- описана организация процесса разработки обучающих сценариев при участии программиста, 3D-моделлера и специалиста по разработке ИТ-проектов;

- с использованием вышеуказанного инструментария разработан прототип МИОС, предназначенной для обучения правилам пожарной безопасности и действиям при обнаружении пожара;

- выполнена оценка эффективности разработанного инструментария и организации процесса разработки обучающих сценариев.

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

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

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

- расширение возможностей взаимодействия с объектами сцены, повышение реалистичности объектов;

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

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

Список источников

1. Голубятников И.В. Основные принципы проектирования и применения мультимедийных обучающих систем. - М: Машиностроение, 1999.

2. Годов А.А. Моделирование электронного обучающего средства. / Сб. трудов Международ, науч. конф. «Математические методы в технике и технологиях» (ММТТ-2000). - СПб., 2000. - 166 с.

3. СНиП 21-01-97. Пожарная безопасность зданий и сооружений / Госстрой России. - М.: ГУП ЦПП, 1997.

4. СНиП 2.04.09-84. Пожарная автоматика зданий и сооружений. / Госстрой СССР. - М.: Государственный комитет по делам строительства, 1995 г.

5. ППБ 01-03. Правила пожарной безопасности в РФ. - М., 1980.

6. Will Goldstone. Unity Game Development Essentials. - Packt Publishing, 2009.

7. Unity3d Documentation. - http://unity3d.com/support/documentation.

8. CSharp Language Specification Version 3.0. - Microsoft Corporation 1999-2007.

9. А.М. Бершадский. Формальные языки, грамматики и основы построения трансляторов: Учебное пособие. - Пенза: Изд-во Пенз. гос. ун-та, 2002.

10. Александр Легалов. Варианты взаимодействия блоков транслятора. - http://www.softcraft.ru/.

11. М. Черкашин. Журнал «Монитор» (Компилятор пишется так…). - http://www.codenet.ru/

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.