Проектирование цифровых систем передачи

Автор работы: Пользователь скрыл имя, 07 Декабря 2014 в 12:36, дипломная работа

Описание работы

Одним из перспективных направлений развития органов управления и ввода информации является ввод информации с помощью пространственных жестов руки, удерживающей КПК. Однако данный метод ввода информации ещё не реализован, нет информации как по сенсорам, с помощью которых можно реагировать на изменение угловой ориентации КПК, так и по организации взаимодействия этих сенсоров с программным обеспечением КПК. В рамках данного дипломного проекта реализована идея управления программным обеспечением КПК фирмы Palm Inc. с помощью инерционных сенсоров и специального программного обеспечения, позволяющего по показаниям этих сенсоров судить о выполнении определённых жестов.

Содержание работы

ВВЕДЕНИЕ И ПОСТАНОВКА ЗАДАЧИ 3
1.1 ВВЕДЕНИЕ 3
1.2 ТЕХНИЧЕСКОЕ ЗАДАНИЕ НА ДИПЛОМНЫЙ ПРОЕКТ 4
2 РАЗРАБОТКА МОДУЛЯ ИНЕРЦИОННОГО СЕНСОРА 8
2.1 ПРЕДЛОЖЕНИЕ И ОБОСНОВАНИЕ ПОДХОДА К СОЗДАНИЮ СЕНСОРА 8
2.2 РАЗРАБОТКА СТРУКТУРНОЙ СХЕМЫ МОДУЛЯ ИНЕРЦИОННОГО СЕНСОРА 9
2.3 ОБОСНОВАНИЕ ВЫБОРА ЭЛЕМЕНТНОЙ БАЗЫ 12
2.3.1 Акселерометр 12
2.3.2 Магниторезистивный сенсор 14
2.3.3 АЦП 17
2.3.4 ЦАП 21
2.3.5 Температурный датчик 23
2.3.6 Операционный усилитель 25
2.3.7 Мультиплексор 29
2.3.8 Схема сброса 31
2.3.9 ПЛИС 32
2.3.10 Микроконтроллер 34
2.4 ПРИНЦИП РАБОТЫ МОДУЛЯ ИНЕРЦИОННОГО СЕНСОРА 37
2.5 РАСЧЕТ ПОТРЕБЛЯЕМОЙ МОЩНОСТИ 39
3 РАЗРАБОТКА ТЕХНОЛОГИЧЕСКОГО ПРОЦЕССА НАЧАЛЬНОЙ КАЛИБРОВКИ МОДУЛЯ ИНЕРЦИОННОГО СЕНСОРА 41
3.1 ОБОСНОВАНИЕ НЕОБХОДИМОСТИ НАЧАЛЬНОЙ КАЛИБРОВКИ МОДУЛЯ ИНЕРЦИОННОГО СЕНСОРА 41
3.2 РАЗРАБОТКА АЛГОРИТМА ТЕХНОЛОГИЧЕСКОГО ПРОЦЕССА НАЧАЛЬНОЙ КАЛИБРОВКИ ИНЕРЦИОННОГО СЕНСОРА 41
3.3 РЕЗУЛЬТАТЫ ИСПЫТАНИЯ РАЗРАБОТАННОГО ТЕХНОЛОГИЧЕСКОГО ПРОЦЕССА НАЧАЛЬНОЙ КАЛИБРОВКИ ИНЕРЦИОННОГО СЕНСОРА 55
4 РАЗРАБОТКА АЛГОРИТМОВ УПРАВЛЕНИЯ ИНЕРЦИАЛЬНЫМИ ПРИЛОЖЕНИЯМИ 58
4.1 РАЗРАБОТКА АЛГОРИТМА ОПРОСА МОДУЛЯ ИНЕРЦИОННОГО СЕНСОРА И ФИЛЬТРАЦИИ ПОЛУЧЕННЫХ ПОКАЗАНИЙ 58
4.2 РАЗРАБОТКА АЛГОРИТМА РАСПОЗНАВАНИЯ БАЗОВЫХ ДВИЖЕНИЙ FLIP 61
4.3 РАЗРАБОТКА АЛГОРИТМА ВЫДЕЛЕНИЯ БАЗОВЫХ ДВИЖЕНИЙ PUSH 65
5 РАЗРАБОТКА МЕТОДИКИ НАПИСАНИЯ ИНЕРЦИАЛЬНЫХ ПРИЛОЖЕНИЙ 68
5.1 СПЕЦИФИКА РАЗРАБОТКИ ПРИЛОЖЕНИЙ ДЛЯ ОПЕРАЦИОННОЙ СИСТЕМЫ PALM OS 4.0 68
5.2 РАЗРАБОТКА РАЗДЕЛЯЕМОГО РЕСУРСА БАЗЫ ДАННЫХ ИНЕРЦИОННОГО СЕНСОРА 72
5.3 РАЗРАБОТКА ДЕМОНСТРАЦИОННОГО ИНЕРЦИАЛЬНОГО ПРИЛОЖЕНИЯ 74
6 ПЛАНИРОВАНИЕ И ОЦЕНКА ЗАТРАТ СОЗДАНИЯ ПРОГРАММНОГО ПРОДУКТА 81
6.1 СМОЛЯНАЯ ЯМА ПРОГРАММИРОВАНИЯ 81
6.2 СЕТЕВОЕ ПЛАНИРОВАНИЕ 82
6.3 СОЗДАНИЕ СТРУКТУРНОЙ ТАБЛИЦЫ РАБОТ 83
6.4 РАСЧЕТ ЗАТРАТ НА СОЗДАНИЕ ПРОГРАММНОГО ПРОДУКТА 87
6.4.1 Расчет затрат на непосредственную разработку программного комплекса 87
6.4.2 Расчет затрат на изготовление опытного образца программного продукта 89
6.4.3 Расчет затрат на технологию 90
6.4.4 Затраты на ЭВМ 90
6.4.5 Общие затраты на создание программного продукта 91
7 ПРОИЗВОДСТВЕННАЯ И ЭКОЛОГИЧЕСКАЯ БЕЗОПАСНОСТЬ 93
7.1 ВВЕДЕНИЕ В ПРОИЗВОДСТВЕННУЮ И ЭКОЛОГИЧЕСКУЮ БЕЗОПАСНОСТЬ 93
7.2 ОБЕСПЕЧЕНИЕ ПРОИЗВОДСТВЕННОЙ БЕЗОПАСНОСТИ ПРИ РАЗРАБОТКЕ, ПРОИЗВОДСТВЕ И ЭКСПЛУАТАЦИИ МИКРОПРОЦЕССОРНЫХ УСТРОЙСТВ 94
7.2.1 Микроклимат лаборатории 94
7.2.2 Требования к уровням шума и вибрации 96
7.2.3 Электробезопасность 97
7.2.4 Требование к защите от статического электричества и излучений при работе за компьютером. 98
7.2.5 Требования к освещению на рабочем месте 100
7.2.6 Воздействие вредных веществ при пайке 102
7.2.7 Психофизические факторы 103
7.2.8 Эргономика рабочего места 103
7.3 РАСЧЕТ ИСКУССТВЕННОГО ОСВЕЩЕНИЯ НА РАБОЧЕМ МЕСТЕ 104
7.4 ОХРАНА ОКРУЖАЮЩЕЙ СРЕДЫ 106
8 ЗАКЛЮЧЕНИЕ 108
9 СПИСОК ЛИТЕРАТУРЫ 109

Файлы: 1 файл

Диплом.doc

— 2.35 Мб (Скачать файл)

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

По результатам проведённого анализ проблемы опроса модуля инерционного сенсора и фильтрации его показаний был разработан алгоритм опроса модуля инерционного сенсора и фильтрации полученных показаний. Схема этого алгоритма изображена на рис. 4.1.

Рис. 4.1 Схема алгоритма опроса модуля инерционного сенсора и фильтрации полученных показаний

 

    1. Разработка алгоритма распознавания  базовых движений Flip

При разработке алгоритма распознавания базовых движений типа Flip следует привязываться к неким величинам, которые независимы от модуля суперпозиции вектора гравитации и линейного ускорения, и модуля магнитного поля, так как эти величины изменяемы во времени из-за наличия линейных ускорений и перемещения тел с большой собственной магнитной массой. Такими величинами будут являться углы поворота проекций модуля вектора гравитации и линейного ускорения, и модуля магнитного поля на плоскости XY, XZ и YZ относительно осей Y,X и Z соответственно.

Введём несколько обозначений:

|A| - модуль суперпозиции вектора гравитации и линейного ускорения

|M| - модуль вектора магнитного поля

|Ax| - проекция суперпозиции вектора гравитации и линейного ускорения на ось XZ

|Ay| - проекция суперпозиции вектора гравитации и линейного ускорения на ось XY

|Az| - проекция вектора магнитного поля на ось XZ

|Mx| - проекция вектора магнитного поля на ось XZ

|My| - проекция вектора магнитного поля на ось XY

|Mz| - проекция вектора магнитного поля на ось XZ

 Пусть  ax, ay, и az – углы отклонения проекций вектора A и mx, my, и mz – углы отклонения проекций вектора М.

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

  1. Снимаются показания с модуля.
  2. Если timeout не равен нулю, то уменьшаем его на единицу и переходим к пункту 9. Иначе переходим к пункту 3
  3. Вычисляются углы отклонения ax, ay, az , mx, my, и mz
  4. Прибавляются значения углов к площадям Sax, Say, Saz, Smx, Smy и Smz соответственно.
  5. Проверяется наличие пересечений по каждому из углов, и если пересечения есть, переходим к пункту 6 иначе к пункту 9.
  6. Проверяем текущие показания площадей и времени их замера с эталонными, отдельно для акселерометров и отдельно для магнитных сенсоров и если есть совпадения переходим к пункту 7, иначе к пункту 9.
  7. Генерируем событие совершения базового движения.
  8. Обнуляем площадь и время всех показателей и переходим к пункту 10.
  9. Обнуляем площадь и время показателя, который перешел через ноль. И выставляем timeout выделения базовых движений.
  10. Передаём управление вызвавшей алгоритм программе.

Данный алгоритм выполняется циклически при опросе инерционным приложением модуля ИС. Схема алгоритма выделения базовых движений приведена на рис. 4.2.

Рис. 4.2 Схема алгоритма выделения базовых движений Flip

 

    1. Разработка алгоритма выделения базовых движений Push

Для выделения базовых движений Push нам будут необходимы показания только акселерометров. Рассмотрим осциллограмму фильтрованного Push движения вдоль одной из осей (для примера берём ось x), приведённую на рис. 1.1.

Рис. 4.3 Осциллограмма фильтрованного базового движения Push

В результате проведения исследований базовых движений Push было выяснено, что при совершении базового движения по одной из осей акселерометров идёт сигнал аналогичный сигналу на рис. 4.3, а на остальных двух осях сигнал не выходит за пределы так называемой «мёртвой зоны», изображенной на рис. 4.3 заштрихованной полосой. Следует также отметить наличие трёх перегибов осциллограммы, в зонах A, B и C. Следовательно отслеживая наличие перегибов осциллограмм мы сможем выделить совершение базового движения Push. Алгоритм выделения Push движений будет выглядеть следующим образом:

  1. Опрос модуля ИС и фильтрация показаний.
  2. Если timeout=0, то переходим к пункту 3, иначе уменьшаем timeout и переходим к пункту 9.
  3. Если есть перегиб осциллограммы, то переходим к пункту 5 иначе к пункту 9.
  4. Добавляем перегиб в стек перегибов.
  5. Если стек перегибов заполнен, то проверяем его показания на предмет совершения базового движения Push. Если движение совершено, то переходим к пункту 6, иначе к пункту 9.
  6. Формируем событие совершения Push.
  7. Устанавливаем timeout
  8. Очищаем стек перегибов.
  9. Передаём управление вызвавшей алгоритм программе.

Данный алгоритм выполняется циклически при опросе инерционным приложением модуля ИС. Схема алгоритма выделения базовых движений приведена на рис. 4.4.

Рис. 4.4 Схема алгоритма выделения базовых движений Push

  1. Разработка методики написания инерциальных приложений

    1. Специфика разработки приложений для операционной системы Palm OS 4.0

Специфика операционной системы Palm OS 4.0 такова, что в любой программе должен находиться главный цикл, занимающийся опросом органов управления и обработкой событий от органов управления и операционной системы. В шаблонах приложений для среды разработки Metrowerks Codewarrior данный цикл оформлен в виде функции AppEventLoop().  После запуска приложения и выполнения некоторых подготовительных операций, таких как считывание настроек, изменение палитры, смена видеорежима, программа должна вызвать функцию AppEventLoop(), выход из которой осуществляется после получения сообщения о переключении в другое приложение. Типичный цикл обработки сообщений в приложениях Palm OS приведен на рис. 5.1.

Рис. 5.1 Схема цикла обработки сообщений в приложениях Palm OS

Придерживаясь подобной методики работы с событиями, следует перегрузить функцию EvtGetEvent таким образом, чтобы она проводила опрос модуля инерционного сенсора по алгоритмам, описанным в предыдущей главе. Входные параметры перегруженной функции будут отличаться от исходной наличием одной переменной булевого типа. Если значение переменной равно false, то опрос сенсора не производится, если true, то производится опрос сенсора и выделение базовых движений. Схема работы этой функции изображена на рис. 5.2.

Рис. 5.2 Схема работы перегруженной функции EvtGetEvent

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

    1. Разработка разделяемого ресурса базы данных инерционного сенсора

Так как функции опроса, фильтрации значений и выделения базовых движений на основе показаний модуля инерционного сенсора должны присутствовать в каждом инерциальном приложении, то очень удобно было бы создать шаблон инерциального приложения, где эти функции уже содержатся. Но учитывая специфику операционной системы Palm OS есть более изящное решение хранения функций используемых в инерциальных приложениях – это создание разделяемого ресурса. Специфика операционной системы такова, что любая информация, хранящаяся в памяти, КПК представлена в виде базы данных. Конкретно бинарные коды программ тоже хранятся в базе данных в отдельных записях. Сегмент кода в одной записи, сегмент данных в другой и т.д., и все эти записи принадлежат одной базе данных – приложению под Palm OS. Разделяемые ресурсы тоже представляют собой базы данных. Любое приложение для Palm OS может подключиться к разделяемому ресурсу, и если этот ресурс – библиотека с функциями, то приложение может свободно пользоваться этими функциями.

Схема взаимодействия инерционного сенсора с инерциальным приложением сделанная посредством разделяемого ресурса базы данных инерционного сенсора представлена на рис. 5.3

 

 

 

 

 

 

 

 

 

 

 


 







 


 


 


 

 

Рис. 5.3 Схема взаимодействия модуля ИС с инерциальным приложением посредством разделяемого ресурса базы данных модуля ИС

В базу данных инерционного сенсора следует перенести следующие функции:

    • InitInertialParameters – функция обеспечивающая инициализацию переменных необходимых для снятия и фильтрации показаний модуля инерционного сенсора.
    • DispInertialParameters – функция удаляющая из памяти переменные созданные функцией InitInertialParameters.
    • PoolInertialSensor – функция опроса и фильтрации показаний модуля инерционного сенсора.
    • CheckFlips – функция выделяющая базовые движения типа Flip.
    • CheckPushes – функция выделяющая базовые движения типа Push.
    • SetOffset – функция по которой опрашивается сенсор и его текущие показания считаются начальными
    • EvtGetEvent – перегруженная функция опроса органов управления КПК Palm.
    • SetTrashhold – функция задающая точность сверки базовых движений с эталонными.

 

    1. Разработка демонстрационного инерциального приложения

Для апробации предлагаемого подхода управления приложениями КПК Palm с помощью пространственных жестов руки необходимо разработать инерционное приложение, которое наиболее полно сможет показать преимущества предлагаемого подхода. Можно сформулировать несколько критериев подобного инерциального приложения:

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

На данный момент всем этим критериям удовлетворяют компьютерные игры жанра Action с примесью жанра Adventure, так как для того чтобы игра была привлекательной её делают красочной, что также приводит большим затратам машинных ресурсов КПК. Жанр Action диктует то, что пользователь должен быстро и правильно реагировать на различные ситуации в игре, а это удовлетворяет критерию непрерывного и динамического ввода информации. Жанр Adventure диктует то, что пользователь будет оперировать большим набором команд, а это удовлетворяет критерию большого набора функций вызываемых органами управления.

В результате проведённого исследования различных компьютерных игр возник проект игры Cosmicon. В ней вы управляете действиями героя игры по имени Jacob. Jacob перемещается по плоскому миру и выполняет различные задания, предусмотренные сценарием игры, и отбивается от большого количества врагов. Для проектирования этой игры было принято решение использовать универсальный язык модулирования UML для создания объектной модели, которую следовало перенести на язык C++.

Проведя анализ составленной задачи строим диаграмму вариантов использования.

Рис. 5.4 Диаграмма вариантов использования

По результатам изучения диаграммы использования была создана диаграмма классов. При реализации классов на языке C++ программа была разбита на несколько модулей:

    • Map Engine – модуль отвечающий за вывод карты на экран.
    • User Event - модуль отвечающий за распознавание действий пользователя.
    • Hero - модуль, отвечающего за вывод на экран и анимацию движений главного героя игры.
    • Shoot - модуль, отвечающий за анимацию полёта пуль и гранат.
    • Explode – модуль, отвечающий за анимацию взрывов.
    • Items – модуль, отвечающий за предметы находящиеся на карте
    • Inventory модуль, отвечающий за оперирование предметами, находящимися в экипировке главного героя.
    • Static Enemy - модуль, отвечающий за статически расположенных героев игры.
    • Dynamic Enemy - модуль отвечающий за динамически передвигающихся по карте героев игры.
    • Quest - модуль, отвечающий за контроль прохождения игры.
    • Info – модуль, отвечающий за вывод подсказок и общей информации на экран, а также визуализацию показателей главного героя (таких как здоровье, выбранный предмет из инвентаря и количество патронов).

Управление игрой производится в соответствии с табл. 5.1

Таблица 5.1

Информация о работе Проектирование цифровых систем передачи