- •2 Разработка модуля инерционного сенсора 8
- •3 Разработка технологического процесса начальной калибровки модуля инерционного сенсора 38
- •8 Заключение 104
- •9 Список литературы 105 Введение и постановка задачи
- •Введение
- •Техническое задание на дипломный проект
- •Разработка модуля инерционного сенсора
- •Предложение и обоснование подхода к созданию сенсора
- •Разработка структурной схемы модуля инерционного сенсора
- •Обоснование выбора элементной базы
- •Акселерометр
- •Магниторезистивный сенсор
- •Температурный датчик
- •Операционный усилитель
- •Мультиплексор
- •Микроконтроллер
- •Принцип работы модуля инерционного сенсора
- •Расчет потребляемой мощности
- •Разработка технологического процесса начальной калибровки модуля инерционного сенсора
- •Обоснование необходимости начальной калибровки модуля инерционного сенсора
- •Разработка алгоритма технологического процесса начальной калибровки инерционного сенсора
- •Результаты испытания разработанного технологического процесса начальной калибровки инерционного сенсора
- •Разработка алгоритмов управления инерциальными приложениями
- •Разработка алгоритма опроса модуля инерционного сенсора и фильтрации полученных показаний
- •Разработка алгоритма распознавания базовых движенийFlip
- •Разработка алгоритма выделения базовых движенийPush
- •Разработка методики написания инерциальных приложений
- •Специфика разработки приложений для операционной системыPalmOs4.0
- •Разработка разделяемого ресурса базы данных инерционного сенсора
- •Разработка демонстрационного инерциального приложения
- •Планирование и оценка затрат создания программного продукта
- •Смоляная яма программирования
- •Сетевое планирование
- •Создание структурной таблицы работ
- •Расчет затрат на создание программного продукта
- •Расчет затрат на непосредственную разработку программного комплекса
- •Расчет затрат на изготовление опытного образца программного продукта
- •Расчет затрат на технологию
- •Затраты на эвм
- •Общие затраты на создание программного продукта
- •Производственная и экологическая безопасность
- •Введение в производственную и экологическую безопасность
- •Обеспечение производственной безопасности при разработке, производстве и эксплуатации микропроцессорных устройств
- •Микроклимат лаборатории
- •Требования к уровням шума и вибрации
- •Электробезопасность
- •Требование к защите от статического электричества и излучений при работе за компьютером.
- •Требования к освещению на рабочем месте
- •Воздействие вредных веществ при пайке
- •Психофизические факторы
- •Эргономика рабочего места
- •Расчет искусственного освещения на рабочем месте
- •Охрана окружающей среды
- •Заключение
- •Список литературы
Разработка разделяемого ресурса базы данных инерционного сенсора
Так как функции опроса, фильтрации значений и выделения базовых движений на основе показаний модуля инерционного сенсора должны присутствовать в каждом инерциальном приложении, то очень удобно было бы создать шаблон инерциального приложения, где эти функции уже содержатся. Но учитывая специфику операционной системы Palm OS есть более изящное решение хранения функций используемых в инерциальных приложениях – это создание разделяемого ресурса. Специфика операционной системы такова, что любая информация, хранящаяся в памяти, КПК представлена в виде базы данных. Конкретно бинарные коды программ тоже хранятся в базе данных в отдельных записях. Сегмент кода в одной записи, сегмент данных в другой и т.д., и все эти записи принадлежат одной базе данных – приложению под Palm OS. Разделяемые ресурсы тоже представляют собой базы данных. Любое приложение для Palm OS может подключиться к разделяемому ресурсу, и если этот ресурс – библиотека с функциями, то приложение может свободно пользоваться этими функциями.
Схема взаимодействия инерционного сенсора с инерциальным приложением сделанная посредством разделяемого ресурса базы данных инерционного сенсора представлена на Рис. 5 .29
Стандартные органы
ввода информации
Пользователь
Инерционный сенсор
Palm
OS
Разделяемый ресурс
базы данных модуля ИС
Инерциальное
приложение
Рис. 5.29 Схема взаимодействия модуля ИС с инерциальным приложением посредством разделяемого ресурса базы данных модуля ИС
В базу данных инерционного сенсора следует перенести следующие функции:
InitInertialParameters – функция обеспечивающая инициализацию переменных необходимых для снятия и фильтрации показаний модуля инерционного сенсора.
DispInertialParameters – функция удаляющая из памяти переменные созданные функцией InitInertialParameters.
PoolInertialSensor – функция опроса и фильтрации показаний модуля инерционного сенсора.
CheckFlips – функция выделяющая базовые движения типа Flip.
CheckPushes – функция выделяющая базовые движения типа Push.
SetOffset – функция по которой опрашивается сенсор и его текущие показания считаются начальными
EvtGetEvent – перегруженная функция опроса органов управления КПК Palm.
SetTrashhold – функция задающая точность сверки базовых движений с эталонными.
Разработка демонстрационного инерциального приложения
Для апробации предлагаемого подхода управления приложениями КПК Palm с помощью пространственных жестов руки необходимо разработать инерционное приложение, которое наиболее полно сможет показать преимущества предлагаемого подхода. Можно сформулировать несколько критериев подобного инерциального приложения:
Большой набор функций вызываемых органами управления.
Непрерывный и динамичный ввод информации.
Красочный интерфейс.
На данный момент всем этим критериям удовлетворяют компьютерные игры жанра Action с примесью жанра Adventure, так как для того чтобы игра была привлекательной её делают красочной, что также приводит большим затратам машинных ресурсов КПК. Жанр Action диктует то, что пользователь должен быстро и правильно реагировать на различные ситуации в игре, а это удовлетворяет критерию непрерывного и динамического ввода информации. Жанр Adventure диктует то, что пользователь будет оперировать большим набором команд, а это удовлетворяет критерию большого набора функций вызываемых органами управления.
В результате проведённого исследования различных компьютерных игр возник проект игры Cosmicon. В ней вы управляете действиями героя игры по имени Jacob. Jacob перемещается по плоскому миру и выполняет различные задания, предусмотренные сценарием игры, и отбивается от большого количества врагов. Для проектирования этой игры было принято решение использовать универсальный язык модулирования UML для создания объектной модели, которую следовало перенести на язык C++.
Проведя анализ составленной задачи строим диаграмму вариантов использования.
Рис. 5.30 Диаграмма вариантов использования
По результатам изучения диаграммы использования была создана диаграмма классов. При реализации классов на языке C++ программа была разбита на несколько модулей:
MapEngine– модуль отвечающий за вывод карты на экран.
UserEvent- модуль отвечающий за распознавание действий пользователя.
Hero- модуль, отвечающего за вывод на экран и анимацию движений главного героя игры.
Shoot- модуль, отвечающий за анимацию полёта пуль и гранат.
Explode– модуль, отвечающий за анимацию взрывов.
Items– модуль, отвечающий за предметы находящиеся на карте
Inventoryмодуль, отвечающий за оперирование предметами, находящимися в экипировке главного героя.
StaticEnemy- модуль, отвечающий за статически расположенных героев игры.
DynamicEnemy- модуль отвечающий за динамически передвигающихся по карте героев игры.
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дляPalmOS4.0. Объём исходного кода на языкеC++ составил 64кБайт, объём бинарногоprc-файла составил 192кБайт. Несколько скриншотов игры представлены на Рис. 5 .31.
Рис. 5.31 Скриншоты игры Cosmicon
Результаты проведенного тестирования инерциального приложения Cosmicon показали, что предложенный подход управления приложениями КПК с помощью пространственных жестов руки оказался интуитивно понятным, простым и удобным. Управлять игрой достаточно легко и научиться использовать базовые движения совсем не сложно.