- •2 Разработка модуля инерционного сенсора 8
- •7 Производственная и экологическая безопасность 93
- •8 Заключение 108
- •9 Список литературы 109 Введение и постановка задачи
- •1.1Введение
- •1.2Техническое задание на дипломный проект
- •2Разработка модуля инерционного сенсора
- •2.1Предложение и обоснование подхода к созданию сенсора
- •2.2Разработка структурной схемы модуля инерционного сенсора
- •2.3Обоснование выбора элементной базы
- •2.3.1Акселерометр
- •2.3.2Магниторезистивный сенсор
- •2.3.5Температурный датчик
- •2.3.6Операционный усилитель
- •2.3.7Мультиплексор
- •2.3.8Схема сброса
- •2.3.9Плис
- •2.3.10Микроконтроллер
- •2.4Принцип работы модуля инерционного сенсора
- •2.5Расчет потребляемой мощности
- •3Разработка технологического процесса начальной калибровки модуля инерционного сенсора
- •3.1Обоснование необходимости начальной калибровки модуля инерционного сенсора
- •3.2Разработка алгоритма технологического процесса начальной калибровки инерционного сенсора
- •3.3Результаты испытания разработанного технологического процесса начальной калибровки инерционного сенсора
- •4Разработка алгоритмов управления инерциальными приложениями
- •4.1Разработка алгоритма опроса модуля инерционного сенсора и фильтрации полученных показаний
- •4.2Разработка алгоритма распознавания базовых движений Flip
- •4.3Разработка алгоритма выделения базовых движений Push
- •5Разработка методики написания инерциальных приложений
- •5.1Специфика разработки приложений для операционной системы Palm os 4.0
- •5.2Разработка разделяемого ресурса базы данных инерционного сенсора
- •5.3Разработка демонстрационного инерциального приложения
- •6Планирование и оценка затрат создания программного продукта
- •6.1Смоляная яма программирования
- •6.2Сетевое планирование
- •6.3Создание структурной таблицы работ
- •6.4Расчет затрат на создание программного продукта
- •6.4.1Расчет затрат на непосредственную разработку программного комплекса
- •6.4.2Расчет затрат на изготовление опытного образца программного продукта
- •6.4.3Расчет затрат на технологию
- •6.4.4Затраты на эвм
- •6.4.5Общие затраты на создание программного продукта
- •7Производственная и экологическая безопасность
- •7.1Введение в производственную и экологическую безопасность
- •7.2Обеспечение производственной безопасности при разработке, производстве и эксплуатации микропроцессорных устройств
- •7.2.1Микроклимат лаборатории
- •7.2.2Требования к уровням шума и вибрации
- •7.2.3Электробезопасность
- •7.2.4Требование к защите от статического электричества и излучений при работе за компьютером.
- •7.2.5Требования к освещению на рабочем месте
- •7.2.6Воздействие вредных веществ при пайке
- •7.2.7Психофизические факторы
- •7.2.8Эргономика рабочего места
- •7.3Расчет искусственного освещения на рабочем месте
- •7.4Охрана окружающей среды
- •8Заключение
- •9Список литературы
5.2Разработка разделяемого ресурса базы данных инерционного сенсора
Так как функции опроса, фильтрации значений и выделения базовых движений на основе показаний модуля инерционного сенсора должны присутствовать в каждом инерциальном приложении, то очень удобно было бы создать шаблон инерциального приложения, где эти функции уже содержатся. Но учитывая специфику операционной системы Palm OS есть более изящное решение хранения функций используемых в инерциальных приложениях – это создание разделяемого ресурса. Специфика операционной системы такова, что любая информация, хранящаяся в памяти, КПК представлена в виде базы данных. Конкретно бинарные коды программ тоже хранятся в базе данных в отдельных записях. Сегмент кода в одной записи, сегмент данных в другой и т.д., и все эти записи принадлежат одной базе данных – приложению под Palm OS. Разделяемые ресурсы тоже представляют собой базы данных. Любое приложение для Palm OS может подключиться к разделяемому ресурсу, и если этот ресурс – библиотека с функциями, то приложение может свободно пользоваться этими функциями.
Схема взаимодействия инерционного сенсора с инерциальным приложением сделанная посредством разделяемого ресурса базы данных инерционного сенсора представлена на Рис. 5 .29
Стандартные органы
ввода информации
Пользователь
Инерционный сенсор
Palm OS
Разделяемый ресурс
базы данных модуля ИС
Инерциальное
приложение
Рис. 5.29 Схема взаимодействия модуля ИС с инерциальным приложением посредством разделяемого ресурса базы данных модуля ИС
В базу данных инерционного сенсора следует перенести следующие функции:
InitInertialParameters – функция обеспечивающая инициализацию переменных необходимых для снятия и фильтрации показаний модуля инерционного сенсора.
DispInertialParameters – функция удаляющая из памяти переменные созданные функцией InitInertialParameters.
PoolInertialSensor – функция опроса и фильтрации показаний модуля инерционного сенсора.
CheckFlips – функция выделяющая базовые движения типа Flip.
CheckPushes – функция выделяющая базовые движения типа Push.
SetOffset – функция по которой опрашивается сенсор и его текущие показания считаются начальными
EvtGetEvent – перегруженная функция опроса органов управления КПК Palm.
SetTrashhold – функция задающая точность сверки базовых движений с эталонными.
5.3Разработка демонстрационного инерциального приложения
Для апробации предлагаемого подхода управления приложениями КПК Palm с помощью пространственных жестов руки необходимо разработать инерционное приложение, которое наиболее полно сможет показать преимущества предлагаемого подхода. Можно сформулировать несколько критериев подобного инерциального приложения:
Большой набор функций вызываемых органами управления.
Непрерывный и динамичный ввод информации.
Красочный интерфейс.
На данный момент всем этим критериям удовлетворяют компьютерные игры жанра Action с примесью жанра Adventure, так как для того чтобы игра была привлекательной её делают красочной, что также приводит большим затратам машинных ресурсов КПК. Жанр Action диктует то, что пользователь должен быстро и правильно реагировать на различные ситуации в игре, а это удовлетворяет критерию непрерывного и динамического ввода информации. Жанр Adventure диктует то, что пользователь будет оперировать большим набором команд, а это удовлетворяет критерию большого набора функций вызываемых органами управления.
В результате проведённого исследования различных компьютерных игр возник проект игры Cosmicon. В ней вы управляете действиями героя игры по имени Jacob. Jacob перемещается по плоскому миру и выполняет различные задания, предусмотренные сценарием игры, и отбивается от большого количества врагов. Для проектирования этой игры было принято решение использовать универсальный язык модулирования UML для создания объектной модели, которую следовало перенести на язык C++.
Проведя анализ составленной задачи строим диаграмму вариантов использования.
Рис. 5.30 Диаграмма вариантов использования
По результатам изучения диаграммы использования была создана диаграмма классов. При реализации классов на языке C++ программа была разбита на несколько модулей:
Map Engine – модуль отвечающий за вывод карты на экран.
User Event - модуль отвечающий за распознавание действий пользователя.
Hero - модуль, отвечающего за вывод на экран и анимацию движений главного героя игры.
Shoot - модуль, отвечающий за анимацию полёта пуль и гранат.
Explode – модуль, отвечающий за анимацию взрывов.
Items – модуль, отвечающий за предметы находящиеся на карте
Inventory модуль, отвечающий за оперирование предметами, находящимися в экипировке главного героя.
Static Enemy - модуль, отвечающий за статически расположенных героев игры.
Dynamic Enemy - модуль отвечающий за динамически передвигающихся по карте героев игры.
Quest - модуль, отвечающий за контроль прохождения игры.
Info – модуль, отвечающий за вывод подсказок и общей информации на экран, а также визуализацию показателей главного героя (таких как здоровье, выбранный предмет из инвентаря и количество патронов).
Управление игрой производится в соответствии с Таблица 5 .20
Таблица 5.20
Управление игрой Cosmicon
Действие |
Значение |
Наклоны в разные стороны |
Передвижение главного героя по карте |
Push Forward |
Прыжок вперёд |
Push Backward |
Прыжок назад |
Push Left |
Прыжок влево |
Push Right |
Прыжок вправо |
Push Down |
Подкат |
Push Up |
Бросок гранаты |
Flip Left |
Предыдущий предмет из инвентаря |
Flip Right |
Следующий предмет из инвентаря |
Flip Forward |
Осмотреться |
Flip Backward |
Использовать предмет |
Flip Clockwise |
Следующее оружие |
Flip Anticlockwise |
Предыдущее оружие |
Hard Key 1 |
Выстрел |
Hard Key 2 |
Toggle Control |
Hard Key 3 |
Пауза |
На основе данного проектирования было написано инерциальное приложение Cosmicon для Palm OS 4.0. Объём исходного кода на языке C++ составил 64кБайт, объём бинарного prc-файла составил 192кБайт. Несколько скриншотов игры представлены на Рис. 5 .31.
Рис. 5.31 Скриншоты игры Cosmicon
Результаты проведенного тестирования инерциального приложения Cosmicon показали, что предложенный подход управления приложениями КПК с помощью пространственных жестов руки оказался интуитивно понятным, простым и удобным. Управлять игрой достаточно легко и научиться использовать базовые движения совсем не сложно.
