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 .24.

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

Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.

Оставленные комментарии видны всем.

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