Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
41
Добавлен:
16.04.2013
Размер:
2.47 Mб
Скачать
    1. Разработка алгоритма выделения базовых движенийPush

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

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

В результате проведения исследований базовых движений Push было выяснено, что при совершении базового движения по одной из осей акселерометров идёт сигнал аналогичный сигналу на Рис. 4 .25, а на остальных двух осях сигнал не выходит за пределы так называемой «мёртвой зоны», изображенной на Рис. 4 .25 заштрихованной полосой. Следует также отметить наличие трёх перегибов осциллограммы, в зонах 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.26 Схема алгоритма выделения базовых движений Push

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

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

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

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

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

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

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

Соседние файлы в папке Skyn (дата сдачи 19.06.02, оценка отлично)